diff --git a/doc/html/Manual.html b/doc/html/Manual.html index ad381570b..27c74a86d 100644 --- a/doc/html/Manual.html +++ b/doc/html/Manual.html @@ -1,440 +1,440 @@ <!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-ICMS Documentation — LAMMPS documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS documentation" href="index.html"/> <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-ICMS 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-icms-documentation"> <h1>LAMMPS-ICMS Documentation</h1> -<div class="section" id="jul-2016-version"> -<h2>30 Jul 2016 version</h2> +<div class="section" id="aug-2016-version"> +<h2>1 Aug 2016 version</h2> </div> <div class="section" id="version-info"> <h2>Version info:</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 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 class="simple"> <li>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.</li> <li>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.</li> <li>The <a class="reference external" 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> <li>There is also a <a class="reference external" href="Developer.pdf">Developer.pdf</a> file in the doc directory, which describes the internal structure and algorithms of 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 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 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 class="reference internal" href="Section_commands.html#comm"><span class="std std-ref">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#user-packages">4.2. User packages</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><ul> <li class="toctree-l2"><a class="reference internal" href="Section_example.html#lowercase-directories">7.1. Lowercase directories</a></li> <li class="toctree-l2"><a class="reference internal" href="Section_example.html#uppercase-directories">7.2. Uppercase directories</a></li> </ul> </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</h1> <ul class="simple"> <li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li> <li><a class="reference internal" href="search.html"><span class="std std-ref">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 2013 Sandia Corporation. </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/html/_sources/Manual.txt b/doc/html/_sources/Manual.txt index 84beb3023..68dd9e99f 100644 --- a/doc/html/_sources/Manual.txt +++ b/doc/html/_sources/Manual.txt @@ -1,105 +1,105 @@ .. raw:: html <H1></H1> LAMMPS Documentation ==================== -30 Jul 2016 version -------------------- +1 Aug 2016 version +------------------ Version info: ------------- 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). * If you browse the HTML doc pages on the LAMMPS WWW site, they always describe the most current version of LAMMPS. * If you browse the HTML doc pages included in your tarball, they describe the version you have. * 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. * There is also a `Developer.pdf <Developer.pdf>`_ file in the doc directory, which describes the internal structure and algorithms of LAMMPS. 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. .. _bug: http://lammps.sandia.gov/bug.html .. _sjp: http://www.sandia.gov/~sjplimp ---------- 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 :ref:`this page <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>`_ .. toctree:: :maxdepth: 2 :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` * :ref:`search` .. raw:: html </BODY> .. _lws: http://lammps.sandia.gov .. _ld: Manual.html .. _lc: Section_commands.html#comm diff --git a/doc/html/_sources/compute_reduce.txt b/doc/html/_sources/compute_reduce.txt index 7dd93b366..2acdee0c7 100644 --- a/doc/html/_sources/compute_reduce.txt +++ b/doc/html/_sources/compute_reduce.txt @@ -1,206 +1,237 @@ .. index:: compute reduce compute reduce command ====================== compute reduce/region command ============================= Syntax """""" .. parsed-literal:: compute ID group-ID style arg mode input1 input2 ... keyword args ... * ID, group-ID are documented in :doc:`compute <compute>` command * style = *reduce* or *reduce/region* .. parsed-literal:: *reduce* arg = none *reduce/region* arg = region-ID region-ID = ID of region to use for choosing atoms * mode = *sum* or *min* or *max* or *ave* or *sumsq* or *avesq* * one or more inputs can be listed * input = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[N], f_ID, f_ID[N], v_name .. parsed-literal:: x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component) c_ID = per-atom or local vector calculated by a compute with ID - c_ID[I] = Ith column of per-atom or local array calculated by a compute with ID + c_ID[I] = Ith column of per-atom or local array calculated by a compute with ID, I can include wildcard (see below) f_ID = per-atom or local vector calculated by a fix with ID - f_ID[I] = Ith column of per-atom or local array calculated by a fix with ID + f_ID[I] = Ith column of per-atom or local array calculated by a fix with ID, I can include wildcard (see below) v_name = per-atom vector calculated by an atom-style variable with name * zero or more keyword/args pairs may be appended * keyword = *replace* .. parsed-literal:: *replace* args = vec1 vec2 vec1 = reduced value from this input vector will be replaced vec2 = replace it with vec1[N] where N is index of max/min value from vec2 Examples """""""" .. parsed-literal:: compute 1 all reduce sum c_force compute 1 all reduce/region subbox sum c_force compute 2 all reduce min c_press[2] f_ave v_myKE + compute 2 all reduce min c_press[*] f_ave v_myKE compute 3 fluid reduce max c_index[1] c_index[2] c_dist replace 1 3 replace 2 3 Description """"""""""" Define a calculation that "reduces" one or more vector inputs into scalar values, one per listed input. The inputs can be per-atom or local quantities; they cannot be global quantities. Atom attributes are per-atom quantities, :doc:`computes <compute>` and :doc:`fixes <fix>` may generate any of the three kinds of quantities, and :doc:`atom-style variables <variable>` generate per-atom quantities. See the :doc:`variable <variable>` command and its special functions which can perform the same operations as the compute reduce command on global vectors. The reduction operation is specified by the *mode* setting. The *sum* option adds the values in the vector into a global total. The *min* or *max* options find the minimum or maximum value across all vector values. The *ave* setting adds the vector values into a global total, then divides by the number of values in the vector. The *sumsq* option sums the square of the values in the vector into a global total. The *avesq* setting does the same as *sumsq*\ , then divdes the sum of squares by the number of values. The last two options can be useful for calculating the variance of some quantity, e.g. variance = sumsq - ave^2. Each listed input is operated on independently. For per-atom inputs, the group specified with this command means only atoms within the group contribute to the result. For per-atom inputs, if the compute reduce/region command is used, the atoms must also currently be within the region. Note that an input that produces per-atom quantities may define its own group which affects the quantities it returns. For example, if a compute is used as an input which generates a per-atom vector, it will generate values of 0.0 for atoms that are not in the group specified for that compute. Each listed input can be an atom attribute (position, velocity, force component) or can be the result of a :doc:`compute <compute>` or :doc:`fix <fix>` or the evaluation of an atom-style :doc:`variable <variable>`. +Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form "*" or "*n" or "n*" or +"m*n". If N = the size of the vector (for *mode* = scalar) or the +number of columns in the array (for *mode* = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive). + +Using a wildcard is the same as if the individual columns of the array +had been listed one by one. E.g. these 2 compute reduce commands are +equivalent, since the :doc:`compute stress/atom <compute_stress/atom>` +command creates a per-atom array with 6 columns: + +.. parsed-literal:: + + compute myPress all stress/atom NULL + compute 2 all reduce min myPress[*] + compute 2 all reduce min myPress[1] myPress[2] myPress[3] & + myPress[4] myPress[5] myPress[6] + + +---------- + + The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are self-explanatory. Note that other atom attributes can be used as inputs to this fix by using the :doc:`compute property/atom <compute_property_atom>` command and then specifying an input value from that compute. If a value begins with "c_", a compute ID must follow which has been previously defined in the input script. Computes can generate per-atom or local quantities. See the individual :doc:`compute <compute>` doc page for details. If no bracketed integer is appended, the vector calculated by the compute is used. If a bracketed integer is appended, the Ith column of the array calculated by the compute is used. Users can also write code for their own -compute styles and :doc:`add them to LAMMPS <Section_modify>`. +compute styles and :doc:`add them to LAMMPS <Section_modify>`. See the +discussion above for how I can be specified with a wildcard asterisk +to effectively specify multiple values. If a value begins with "f_", a fix ID must follow which has been previously defined in the input script. Fixes can generate per-atom or local quantities. See the individual :doc:`fix <fix>` doc page for details. Note that some fixes only produce their values on certain timesteps, which must be compatible with when compute reduce references the values, else an error results. If no bracketed integer is appended, the vector calculated by the fix is used. If a bracketed integer is appended, the Ith column of the array calculated by the fix -is used. Users can also write code for their own fix style and :doc:`add them to LAMMPS <Section_modify>`. +is used. Users can also write code for their own fix style and :doc:`add them to LAMMPS <Section_modify>`. See the discussion above for how +I can be specified with a wildcard asterisk to effectively specify +multiple values. If a value begins with "v_", a variable name must follow which has been previously defined in the input script. It must be an :doc:`atom-style variable <variable>`. Atom-style variables can reference thermodynamic keywords and various per-atom attributes, or invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of generating per-atom quantities to reduce. ---------- If the *replace* keyword is used, two indices *vec1* and *vec2* are specified, where each index ranges from 1 to the # of input values. The replace keyword can only be used if the *mode* is *min* or *max*\ . It works as follows. A min/max is computed as usual on the *vec2* input vector. The index N of that value within *vec2* is also stored. Then, instead of performing a min/max on the *vec1* input vector, the stored index is used to select the Nth element of the *vec1* vector. Thus, for example, if you wish to use this compute to find the bond with maximum stretch, you can do it as follows: .. parsed-literal:: compute 1 all property/local batom1 batom2 compute 2 all bond/local dist compute 3 all reduce max c_1[1] c_1[2] c_2 replace 1 3 replace 2 3 thermo_style custom step temp c_3[1] c_3[2] c_3[3] The first two input values in the compute reduce command are vectors with the IDs of the 2 atoms in each bond, using the :doc:`compute property/local <compute_property_local>` command. The last input value is bond distance, using the :doc:`compute bond/local <compute_bond_local>` command. Instead of taking the max of the two atom ID vectors, which does not yield useful information in this context, the *replace* keywords will extract the atom IDs for the two atoms in the bond of maximum stretch. These atom IDs and the bond stretch will be printed with thermodynamic output. ---------- If a single input is specified this compute produces a global scalar value. If multiple inputs are specified, this compute produces a global vector of values, the length of which is equal to the number of inputs specified. As discussed below, for the *sum* and *sumsq* modes, the value(s) produced by this compute are all "extensive", meaning their value scales linearly with the number of atoms involved. If normalized values are desired, this compute can be accessed by the :doc:`thermo_style custom <thermo_style>` command with :doc:`thermo_modify norm yes <thermo_modify>` set as an option. Or it can be accessed by a :doc:`variable <variable>` that divides by the appropriate atom count. ---------- **Output info:** This compute calculates a global scalar if a single input value is specified or a global vector of length N where N is the number of inputs, and which can be accessed by indices 1 to N. These values can be used by any command that uses global scalar or vector values from a compute as input. See :ref:`Section_howto 15 <howto_15>` for an overview of LAMMPS output options. All the scalar or vector values calculated by this compute are "intensive", except when the *sum* or *sumsq* modes are used on per-atom or local vectors, in which case the calculated values are "extensive". The scalar or vector values will be in whatever :doc:`units <units>` the quantities being reduced are in. Restrictions """""""""""" none Related commands """""""""""""""" :doc:`compute <compute>`, :doc:`fix <fix>`, :doc:`variable <variable>` **Default:** none .. _lws: http://lammps.sandia.gov .. _ld: Manual.html .. _lc: Section_commands.html#comm diff --git a/doc/html/_sources/dump.txt b/doc/html/_sources/dump.txt index 23ef7b0a6..cdbc64418 100644 --- a/doc/html/_sources/dump.txt +++ b/doc/html/_sources/dump.txt @@ -1,695 +1,732 @@ .. index:: dump dump command ============ :doc:`dump custom/vtk <dump_custom_vtk>` command ================================================ :doc:`dump h5md <dump_h5md>` command ==================================== :doc:`dump image <dump_image>` command ====================================== :doc:`dump movie <dump_image>` command ====================================== :doc:`dump molfile <dump_molfile>` command ========================================== Syntax """""" .. parsed-literal:: dump ID group-ID style N file args * ID = user-assigned name for the dump * group-ID = ID of the group of atoms to be dumped * style = *atom* or *atom/gz* or *atom/mpiio* or *cfg* or *cfg/gz* or *cfg/mpiio* or *dcd* or *xtc* or *xyz* or *xyz/gz* or *xyz/mpiio* or *h5md* or *image* or *movie* or *molfile* or *local* or *custom* or *custom/gz* or *custom/mpiio* * N = dump every this many timesteps * file = name of file to write dump info to * args = list of arguments for a particular style .. parsed-literal:: *atom* args = none *atom/gz* args = none *atom/mpiio* args = none *cfg* args = same as *custom* args, see below *cfg/gz* args = same as *custom* args, see below *cfg/mpiio* args = same as *custom* args, see below *dcd* args = none *xtc* args = none *xyz* args = none .. parsed-literal:: *xyz/gz* args = none .. parsed-literal:: *xyz/mpiio* args = none .. parsed-literal:: *custom/vtk* args = similar to custom args below, discussed on :doc:`dump custom/vtk <dump_custom_vtk>` doc page .. parsed-literal:: *h5md* args = discussed on :doc:`dump h5md <dump_h5md>` doc page .. parsed-literal:: *image* args = discussed on :doc:`dump image <dump_image>` doc page .. parsed-literal:: *movie* args = discussed on :doc:`dump image <dump_image>` doc page .. parsed-literal:: *molfile* args = discussed on :doc:`dump molfile <dump_molfile>` doc page .. parsed-literal:: *local* args = list of local attributes - possible attributes = index, c_ID, c_ID[N], f_ID, f_ID[N] + possible attributes = index, c_ID, c_ID[I], f_ID, f_ID[I] index = enumeration of local values c_ID = local vector calculated by a compute with ID - c_ID[N] = Nth column of local array calculated by a compute with ID + c_ID[I] = Ith column of local array calculated by a compute with ID, I can include wildcard (see below) f_ID = local vector calculated by a fix with ID - f_ID[N] = Nth column of local array calculated by a fix with ID + f_ID[I] = Ith column of local array calculated by a fix with ID, I can include wildcard (see below) .. parsed-literal:: *custom* or *custom/gz* or *custom/mpiio* args = list of atom attributes possible attributes = id, mol, proc, procp1, type, element, mass, x, y, z, xs, ys, zs, xu, yu, zu, xsu, ysu, zsu, ix, iy, iz, vx, vy, vz, fx, fy, fz, q, mux, muy, muz, mu, radius, diameter, omegax, omegay, omegaz, angmomx, angmomy, angmomz, tqx, tqy, tqz, c_ID, c_ID[N], f_ID, f_ID[N], v_name .. parsed-literal:: id = atom ID mol = molecule ID proc = ID of processor that owns atom procp1 = ID+1 of processor that owns atom type = atom type element = name of atom element, as defined by :doc:`dump_modify <dump_modify>` command mass = atom mass x,y,z = unscaled atom coordinates xs,ys,zs = scaled atom coordinates xu,yu,zu = unwrapped atom coordinates xsu,ysu,zsu = scaled unwrapped atom coordinates ix,iy,iz = box image that the atom is in vx,vy,vz = atom velocities fx,fy,fz = forces on atoms q = atom charge mux,muy,muz = orientation of dipole moment of atom mu = magnitude of dipole moment of atom radius,diameter = radius,diameter of spherical particle omegax,omegay,omegaz = angular velocity of spherical particle angmomx,angmomy,angmomz = angular momentum of aspherical particle tqx,tqy,tqz = torque on finite-size particles c_ID = per-atom vector calculated by a compute with ID - c_ID[N] = Nth column of per-atom array calculated by a compute with ID + c_ID[I] = Ith column of per-atom array calculated by a compute with ID, I can include wildcard (see below) f_ID = per-atom vector calculated by a fix with ID - f_ID[N] = Nth column of per-atom array calculated by a fix with ID + f_ID[I] = Ith column of per-atom array calculated by a fix with ID, I can include wildcard (see below) v_name = per-atom vector calculated by an atom-style variable with name d_name = per-atom floating point vector with name, managed by fix property/atom i_name = per-atom integer vector with name, managed by fix property/atom Examples """""""" .. parsed-literal:: dump myDump all atom 100 dump.atom dump myDump all atom/mpiio 100 dump.atom.mpiio dump myDump all atom/gz 100 dump.atom.gz dump 2 subgroup atom 50 dump.run.bin dump 2 subgroup atom 50 dump.run.mpiio.bin dump 4a all custom 100 dump.myforce.* id type x y vx fx dump 4b flow custom 100 dump.%.myforce id type c_myF[3] v_ke + dump 4b flow custom 100 dump.%.myforce id type c_myF[*] v_ke dump 2 inner cfg 10 dump.snap.*.cfg mass type xs ys zs vx vy vz dump snap all cfg 100 dump.config.*.cfg mass type xs ys zs id type c_Stress[2] dump 1 all xtc 1000 file.xtc Description """"""""""" Dump a snapshot of atom quantities to one or more files every N timesteps in one of several styles. The *image* and *movie* styles are the exception: the *image* style renders a JPG, PNG, or PPM image file of the atom configuration every N timesteps while the *movie* style combines and compresses them into a movie file; both are discussed in detail on the :doc:`dump image <dump_image>` doc page. The timesteps on which dump output is written can also be controlled by a variable. See the :doc:`dump_modify every <dump_modify>` command. Only information for atoms in the specified group is dumped. The :doc:`dump_modify thresh and region <dump_modify>` commands can also alter what atoms are included. Not all styles support all these options; see details below. As described below, the filename determines the kind of output (text or binary or gzipped, one big file or one per timestep, one big file or multiple smaller files). .. note:: Because periodic boundary conditions are enforced only on timesteps when neighbor lists are rebuilt, the coordinates of an atom written to a dump file may be slightly outside the simulation box. .. note:: Unless the :doc:`dump_modify sort <dump_modify>` option is invoked, the lines of atom information written to dump files (typically one line per atom) will be in an indeterminate order for each snapshot. This is even true when running on a single processor, if the :doc:`atom_modify sort <atom_modify>` option is on, which it is by default. In this case atoms are re-ordered periodically during a simulation, due to spatial sorting. It is also true when running in parallel, because data for a single snapshot is collected from multiple processors, each of which owns a subset of the atoms. For the *atom*\ , *custom*\ , *cfg*\ , and *local* styles, sorting is off by default. For the *dcd*\ , *xtc*\ , *xyz*\ , and *molfile* styles, sorting by atom ID is on by default. See the :doc:`dump_modify <dump_modify>` doc page for details. The *atom/gz*\ , *cfg/gz*\ , *custom/gz*\ , and *xyz/gz* styles are identical in command syntax to the corresponding styles without "gz", however, they generate compressed files using the zlib library. Thus the filename suffix ".gz" is mandatory. This is an alternative approach to writing compressed files via a pipe, as done by the regular dump styles, which may be required on clusters where the interface to the high-speed network disallows using the fork() library call (which is needed for a pipe). For the remainder of this doc page, you should thus consider the *atom* and *atom/gz* styles (etc) to be inter-changeable, with the exception of the required filename suffix. As explained below, the *atom/mpiio*\ , *cfg/mpiio*\ , *custom/mpiio*\ , and *xyz/mpiio* styles are identical in command syntax and in the format of the dump files they create, to the corresponding styles without "mpiio", except the single dump file they produce is written in parallel via the MPI-IO library. For the remainder of this doc page, you should thus consider the *atom* and *atom/mpiio* styles (etc) to be inter-changeable. The one exception is how the filename is specified for the MPI-IO styles, as explained below. ---------- The *style* keyword determines what atom quantities are written to the file and in what format. Settings made via the :doc:`dump_modify <dump_modify>` command can also alter the format of individual values and the file itself. The *atom*\ , *local*\ , and *custom* styles create files in a simple text format that is self-explanatory when viewing a dump file. Many of the LAMMPS :doc:`post-processing tools <Section_tools>`, including `Pizza.py <http://www.sandia.gov/~sjplimp/pizza.html>`_, work with this format, as does the :doc:`rerun <rerun>` command. For post-processing purposes the *atom*\ , *local*\ , and *custom* text files are self-describing in the following sense. The dimensions of the simulation box are included in each snapshot. For an orthogonal simulation box this information is is formatted as: .. parsed-literal:: ITEM: BOX BOUNDS xx yy zz xlo xhi ylo yhi zlo zhi where xlo,xhi are the maximum extents of the simulation box in the x-dimension, and similarly for y and z. The "xx yy zz" represent 6 characters that encode the style of boundary for each of the 6 simulation box boundaries (xlo,xhi and ylo,yhi and zlo,zhi). Each of the 6 characters is either p = periodic, f = fixed, s = shrink wrap, or m = shrink wrapped with a minimum value. See the :doc:`boundary <boundary>` command for details. For triclinic simulation boxes (non-orthogonal), an orthogonal bounding box which encloses the triclinic simulation box is output, along with the 3 tilt factors (xy, xz, yz) of the triclinic box, formatted as follows: .. parsed-literal:: ITEM: BOX BOUNDS xy xz yz xx yy zz xlo_bound xhi_bound xy ylo_bound yhi_bound xz zlo_bound zhi_bound yz The presence of the text "xy xz yz" in the ITEM line indicates that the 3 tilt factors will be included on each of the 3 following lines. This bounding box is convenient for many visualization programs. The meaning of the 6 character flags for "xx yy zz" is the same as above. Note that the first two numbers on each line are now xlo_bound instead of xlo, etc, since they repesent a bounding box. See :ref:`this section <howto_12>` of the doc pages for a geometric description of triclinic boxes, as defined by LAMMPS, simple formulas for how the 6 bounding box extents (xlo_bound,xhi_bound,etc) are calculated from the triclinic parameters, and how to transform those parameters to and from other commonly used triclinic representations. The "ITEM: ATOMS" line in each snapshot lists column descriptors for the per-atom lines that follow. For example, the descriptors would be "id type xs ys zs" for the default *atom* style, and would be the atom attributes you specify in the dump command for the *custom* style. For style *atom*\ , atom coordinates are written to the file, along with the atom ID and atom type. By default, atom coords are written in a scaled format (from 0 to 1). I.e. an x value of 0.25 means the atom is at a location 1/4 of the distance from xlo to xhi of the box boundaries. The format can be changed to unscaled coords via the :doc:`dump_modify <dump_modify>` settings. Image flags can also be added for each atom via dump_modify. Style *custom* allows you to specify a list of atom attributes to be written to the dump file for each atom. Possible attributes are listed above and will appear in the order specified. You cannot specify a quantity that is not defined for a particular simulation - such as *q* for atom style *bond*\ , since that atom style doesn't assign charges. Dumps occur at the very end of a timestep, so atom attributes will include effects due to fixes that are applied during the timestep. An explanation of the possible dump custom attributes is given below. For style *local*\ , local output generated by :doc:`computes <compute>` and :doc:`fixes <fix>` is used to generate lines of output that is written to the dump file. This local data is typically calculated by each processor based on the atoms it owns, but there may be zero or more entities per atom, e.g. a list of bond distances. An explanation of the possible dump local attributes is given below. Note that by using input from the :doc:`compute property/local <compute_property_local>` command with dump local, it is possible to generate information on bonds, angles, etc that can be cut and pasted directly into a data file read by the :doc:`read_data <read_data>` command. Style *cfg* has the same command syntax as style *custom* and writes extended CFG format files, as used by the `AtomEye <http://mt.seas.upenn.edu/Archive/Graphics/A>`_ visualization package. Since the extended CFG format uses a single snapshot of the system per file, a wildcard "*" must be included in the filename, as discussed below. The list of atom attributes for style *cfg* must begin with either "mass type xs ys zs" or "mass type xsu ysu zsu" since these quantities are needed to write the CFG files in the appropriate format (though the "mass" and "type" fields do not appear explicitly in the file). Any remaining attributes will be stored as "auxiliary properties" in the CFG files. Note that you will typically want to use the :doc:`dump_modify element <dump_modify>` command with CFG-formatted files, to associate element names with atom types, so that AtomEye can render atoms appropriately. When unwrapped coordinates *xsu*\ , *ysu*\ , and *zsu* are requested, the nominal AtomEye periodic cell dimensions are expanded by a large factor UNWRAPEXPAND = 10.0, which ensures atoms that are displayed correctly for up to UNWRAPEXPAND/2 periodic boundary crossings in any direction. Beyond this, AtomEye will rewrap the unwrapped coordinates. The expansion causes the atoms to be drawn farther away from the viewer, but it is easy to zoom the atoms closer, and the interatomic distances are unaffected. The *dcd* style writes DCD files, a standard atomic trajectory format used by the CHARMM, NAMD, and XPlor molecular dynamics packages. DCD files are binary and thus may not be portable to different machines. The number of atoms per snapshot cannot change with the *dcd* style. The *unwrap* option of the :doc:`dump_modify <dump_modify>` command allows DCD coordinates to be written "unwrapped" by the image flags for each atom. Unwrapped means that if the atom has passed through a periodic boundary one or more times, the value is printed for what the coordinate would be if it had not been wrapped back into the periodic box. Note that these coordinates may thus be far outside the box size stored with the snapshot. The *xtc* style writes XTC files, a compressed trajectory format used by the GROMACS molecular dynamics package, and described `here <http://manual.gromacs.org/current/online/xtc.html>`_. The precision used in XTC files can be adjusted via the :doc:`dump_modify <dump_modify>` command. The default value of 1000 means that coordinates are stored to 1/1000 nanometer accuracy. XTC files are portable binary files written in the NFS XDR data format, so that any machine which supports XDR should be able to read them. The number of atoms per snapshot cannot change with the *xtc* style. The *unwrap* option of the :doc:`dump_modify <dump_modify>` command allows XTC coordinates to be written "unwrapped" by the image flags for each atom. Unwrapped means that if the atom has passed thru a periodic boundary one or more times, the value is printed for what the coordinate would be if it had not been wrapped back into the periodic box. Note that these coordinates may thus be far outside the box size stored with the snapshot. The *xyz* style writes XYZ files, which is a simple text-based coordinate format that many codes can read. Specifically it has a line with the number of atoms, then a comment line that is usually ignored followed by one line per atom with the atom type and the x-, y-, and z-coordinate of that atom. You can use the :doc:`dump_modify element <dump_modify>` option to change the output from using the (numerical) atom type to an element name (or some other label). This will help many visualization programs to guess bonds and colors. Note that *atom*\ , *custom*\ , *dcd*\ , *xtc*\ , and *xyz* style dump files can be read directly by `VMD <http://www.ks.uiuc.edu/Research/vmd>`_, a popular molecular viewing program. See :ref:`Section tools <vmd>` of the manual and the tools/lmp2vmd/README.txt file for more information about support in VMD for reading and visualizing LAMMPS dump files. ---------- Dumps are performed on timesteps that are a multiple of N (including timestep 0) and on the last timestep of a minimization if the minimization converges. Note that this means a dump will not be performed on the initial timestep after the dump command is invoked, if the current timestep is not a multiple of N. This behavior can be changed via the :doc:`dump_modify first <dump_modify>` command, which can also be useful if the dump command is invoked after a minimization ended on an arbitrary timestep. N can be changed between runs by using the :doc:`dump_modify every <dump_modify>` command (not allowed for *dcd* style). The :doc:`dump_modify every <dump_modify>` command also allows a variable to be used to determine the sequence of timesteps on which dump files are written. In this mode a dump on the first timestep of a run will also not be written unless the :doc:`dump_modify first <dump_modify>` command is used. The specified filename determines how the dump file(s) is written. The default is to write one large text file, which is opened when the dump command is invoked and closed when an :doc:`undump <undump>` command is used or when LAMMPS exits. For the *dcd* and *xtc* styles, this is a single large binary file. Dump filenames can contain two wildcard characters. If a "*" character appears in the filename, then one file per snapshot is written and the "*" character is replaced with the timestep value. For example, tmp.dump.* becomes tmp.dump.0, tmp.dump.10000, tmp.dump.20000, etc. This option is not available for the *dcd* and *xtc* styles. Note that the :doc:`dump_modify pad <dump_modify>` command can be used to insure all timestep numbers are the same length (e.g. 00010), which can make it easier to read a series of dump files in order with some post-processing tools. If a "%" character appears in the filename, then each of P processors writes a portion of the dump file, and the "%" character is replaced with the processor ID from 0 to P-1. For example, tmp.dump.% becomes tmp.dump.0, tmp.dump.1, ... tmp.dump.P-1, etc. This creates smaller files and can be a fast mode of output on parallel machines that support parallel I/O for output. This option is not available for the *dcd*\ , *xtc*\ , and *xyz* styles. By default, P = the number of processors meaning one file per processor, but P can be set to a smaller value via the *nfile* or *fileper* keywords of the :doc:`dump_modify <dump_modify>` command. These options can be the most efficient way of writing out dump files when running on large numbers of processors. Note that using the "*" and "%" characters together can produce a large number of small dump files! For the *atom/mpiio*\ , *cfg/mpiio*\ , *custom/mpiio*\ , and *xyz/mpiio* styles, a single dump file is written in parallel via the MPI-IO library, which is part of the MPI standard for versions 2.0 and above. Using MPI-IO requires two steps. First, build LAMMPS with its MPIIO package installed, e.g. .. parsed-literal:: make yes-mpiio # installs the MPIIO package make g++ # build LAMMPS for your platform Second, use a dump filename which contains ".mpiio". Note that it does not have to end in ".mpiio", just contain those characters. Unlike MPI-IO restart files, which must be both written and read using MPI-IO, the dump files produced by these MPI-IO styles are identical in format to the files produced by their non-MPI-IO style counterparts. This means you can write a dump file using MPI-IO and use the :doc:`read_dump <read_dump>` command or perform other post-processing, just as if the dump file was not written using MPI-IO. Note that MPI-IO dump files are one large file which all processors write to. You thus cannot use the "%" wildcard character described above in the filename since that specifies generation of multiple files. You can use the ".bin" suffix described below in an MPI-IO dump file; again this file will be written in parallel and have the same binary format as if it were written without MPI-IO. If the filename ends with ".bin", the dump file (or files, if "*" or "%" is also used) is written in binary format. A binary dump file will be about the same size as a text version, but will typically write out much faster. Of course, when post-processing, you will need to convert it back to text format (see the :ref:`binary2txt tool <binary>`) or write your own code to read the binary file. The format of the binary file can be understood by looking at the tools/binary2txt.cpp file. This option is only available for the *atom* and *custom* styles. If the filename ends with ".gz", the dump file (or files, if "*" or "%" is also used) is written in gzipped format. A gzipped dump file will be about 3x smaller than the text version, but will also take longer to write. This option is not available for the *dcd* and *xtc* styles. ---------- +Note that in the discussion which follows, for styles which can +reference values from a compute or fix, like the *custom*\ , *cfg*\ , or +*local* styles, the bracketed index I can be specified using a +wildcard asterisk with the index to effectively specify multiple +values. This takes the form "*" or "*n" or "n*" or "m*n". If N = the +size of the vector (for *mode* = scalar) or the number of columns in +the array (for *mode* = vector), then an asterisk with no numeric +values means all indices from 1 to N. A leading asterisk means all +indices from 1 to n (inclusive). A trailing asterisk means all +indices from n to N (inclusive). A middle asterisk means all indices +from m to n (inclusive). + +Using a wildcard is the same as if the individual columns of the array +had been listed one by one. E.g. these 2 dump commands are +equivalent, since the :doc:`compute stress/atom <compute_stress/atom>` +command creates a per-atom array with 6 columns: + +.. parsed-literal:: + + compute myPress all stress/atom NULL + dump 2 all custom 100 tmp.dump id myPress[*] + dump 2 all custom 100 tmp.dump id myPress[1] myPress[2] myPress[3] & + myPress[4] myPress[5] myPress[6] + + +---------- + + This section explains the local attributes that can be specified as part of the *local* style. The *index* attribute can be used to generate an index number from 1 to N for each line written into the dump file, where N is the total number of local datums from all processors, or lines of output that will appear in the snapshot. Note that because data from different processors depend on what atoms they currently own, and atoms migrate between processor, there is no guarantee that the same index will be used for the same info (e.g. a particular bond) in successive snapshots. -The *c_ID* and *c_ID[N]* attributes allow local vectors or arrays +The *c_ID* and *c_ID[I]* attributes allow local vectors or arrays calculated by a :doc:`compute <compute>` to be output. The ID in the attribute should be replaced by the actual ID of the compute that has been defined previously in the input script. See the :doc:`compute <compute>` command for details. There are computes for calculating local information such as indices, types, and energies for bonds and angles. Note that computes which calculate global or per-atom quantities, as opposed to local quantities, cannot be output in a dump local command. Instead, global quantities can be output by the :doc:`thermo_style custom <thermo_style>` command, and per-atom quantities can be output by the dump custom command. If *c_ID* is used as a attribute, then the local vector calculated by -the compute is printed. If *c_ID[N]* is used, then N must be in the -range from 1-M, which will print the Nth column of the M-length local -array calculated by the compute. +the compute is printed. If *c_ID[I]* is used, then I must be in the +range from 1-M, which will print the Ith column of the local array +with M columns calculated by the compute. See the discussion above +for how I can be specified with a wildcard asterisk to effectively +specify multiple values. -The *f_ID* and *f_ID[N]* attributes allow local vectors or arrays +The *f_ID* and *f_ID[I]* attributes allow local vectors or arrays calculated by a :doc:`fix <fix>` to be output. The ID in the attribute should be replaced by the actual ID of the fix that has been defined previously in the input script. If *f_ID* is used as a attribute, then the local vector calculated by -the fix is printed. If *f_ID[N]* is used, then N must be in the -range from 1-M, which will print the Nth column of the M-length local -array calculated by the fix. +the fix is printed. If *f_ID[I]* is used, then I must be in the +range from 1-M, which will print the Ith column of the local with M +columns calculated by the fix. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values. -Here is an example of how to dump bond info for a system, -including the distance and energy of each bond: +Here is an example of how to dump bond info for a system, including +the distance and energy of each bond: .. parsed-literal:: compute 1 all property/local batom1 batom2 btype compute 2 all bond/local dist eng dump 1 all local 1000 tmp.dump index c_1[1] c_1[2] c_1[3] c_2[1] c_2[2] ---------- This section explains the atom attributes that can be specified as part of the *custom* and *cfg* styles. The *id*\ , *mol*\ , *proc*\ , *procp1*\ , *type*\ , *element*\ , *mass*\ , *vx*\ , *vy*\ , *vz*\ , *fx*\ , *fy*\ , *fz*\ , *q* attributes are self-explanatory. *Id* is the atom ID. *Mol* is the molecule ID, included in the data file for molecular systems. *Proc* is the ID of the processor (0 to Nprocs-1) that currently owns the atom. *Procp1* is the proc ID+1, which can be convenient in place of a *type* attribute (1 to Ntypes) for coloring atoms in a visualization program. *Type* is the atom type (1 to Ntypes). *Element* is typically the chemical name of an element, which you must assign to each type via the :doc:`dump_modify element <dump_modify>` command. More generally, it can be any string you wish to associated with an atom type. *Mass* is the atom mass. *Vx*\ , *vy*\ , *vz*\ , *fx*\ , *fy*\ , *fz*\ , and *q* are components of atom velocity and force and atomic charge. There are several options for outputting atom coordinates. The *x*\ , *y*\ , *z* attributes write atom coordinates "unscaled", in the appropriate distance :doc:`units <units>` (Angstroms, sigma, etc). Use *xs*\ , *ys*\ , *zs* if you want the coordinates "scaled" to the box size, so that each value is 0.0 to 1.0. If the simulation box is triclinic (tilted), then all atom coords will still be between 0.0 and 1.0. I.e. actual unscaled (x,y,z) = xs*A + ys*B + zs*C, where (A,B,C) are the non-orthogonal vectors of the simulation box edges, as discussed in :ref:`Section howto 6.12 <howto_12>`. Use *xu*\ , *yu*\ , *zu* if you want the coordinates "unwrapped" by the image flags for each atom. Unwrapped means that if the atom has passed thru a periodic boundary one or more times, the value is printed for what the coordinate would be if it had not been wrapped back into the periodic box. Note that using *xu*\ , *yu*\ , *zu* means that the coordinate values may be far outside the box bounds printed with the snapshot. Using *xsu*\ , *ysu*\ , *zsu* is similar to using *xu*\ , *yu*\ , *zu*\ , except that the unwrapped coordinates are scaled by the box size. Atoms that have passed through a periodic boundary will have the corresponding cooordinate increased or decreased by 1.0. The image flags can be printed directly using the *ix*\ , *iy*\ , *iz* attributes. For periodic dimensions, they specify which image of the simulation box the atom is considered to be in. An image of 0 means it is inside the box as defined. A value of 2 means add 2 box lengths to get the true value. A value of -1 means subtract 1 box length to get the true value. LAMMPS updates these flags as atoms cross periodic boundaries during the simulation. The *mux*\ , *muy*\ , *muz* attributes are specific to dipolar systems defined with an atom style of *dipole*\ . They give the orientation of the atom's point dipole moment. The *mu* attribute gives the magnitude of the atom's dipole moment. The *radius* and *diameter* attributes are specific to spherical particles that have a finite size, such as those defined with an atom style of *sphere*\ . The *omegax*\ , *omegay*\ , and *omegaz* attributes are specific to finite-size spherical particles that have an angular velocity. Only certain atom styles, such as *sphere* define this quantity. The *angmomx*\ , *angmomy*\ , and *angmomz* attributes are specific to finite-size aspherical particles that have an angular momentum. Only the *ellipsoid* atom style defines this quantity. The *tqx*\ , *tqy*\ , *tqz* attributes are for finite-size particles that can sustain a rotational torque due to interactions with other particles. -The *c_ID* and *c_ID[N]* attributes allow per-atom vectors or arrays +The *c_ID* and *c_ID[I]* attributes allow per-atom vectors or arrays calculated by a :doc:`compute <compute>` to be output. The ID in the attribute should be replaced by the actual ID of the compute that has been defined previously in the input script. See the :doc:`compute <compute>` command for details. There are computes for calculating the per-atom energy, stress, centro-symmetry parameter, and coordination number of individual atoms. Note that computes which calculate global or local quantities, as opposed to per-atom quantities, cannot be output in a dump custom command. Instead, global quantities can be output by the :doc:`thermo_style custom <thermo_style>` command, and local quantities can be output by the dump local command. If *c_ID* is used as a attribute, then the per-atom vector calculated -by the compute is printed. If *c_ID[N]* is used, then N must be in -the range from 1-M, which will print the Nth column of the M-length -per-atom array calculated by the compute. +by the compute is printed. If *c_ID[I]* is used, then I must be in +the range from 1-M, which will print the Ith column of the per-atom +array with M columns calculated by the compute. See the discussion +above for how I can be specified with a wildcard asterisk to +effectively specify multiple values. -The *f_ID* and *f_ID[N]* attributes allow vector or array per-atom +The *f_ID* and *f_ID[I]* attributes allow vector or array per-atom quantities calculated by a :doc:`fix <fix>` to be output. The ID in the attribute should be replaced by the actual ID of the fix that has been defined previously in the input script. The :doc:`fix ave/atom <fix_ave_atom>` command is one that calculates per-atom quantities. Since it can time-average per-atom quantities produced by any :doc:`compute <compute>`, :doc:`fix <fix>`, or atom-style :doc:`variable <variable>`, this allows those time-averaged results to be written to a dump file. If *f_ID* is used as a attribute, then the per-atom vector calculated -by the fix is printed. If *f_ID[N]* is used, then N must be in the -range from 1-M, which will print the Nth column of the M-length -per-atom array calculated by the fix. +by the fix is printed. If *f_ID[I]* is used, then I must be in the +range from 1-M, which will print the Ith column of the per-atom array +with M columns calculated by the fix. See the discussion above for +how I can be specified with a wildcard asterisk to effectively specify +multiple values. The *v_name* attribute allows per-atom vectors calculated by a :doc:`variable <variable>` to be output. The name in the attribute should be replaced by the actual name of the variable that has been defined previously in the input script. Only an atom-style variable can be referenced, since it is the only style that generates per-atom values. Variables of style *atom* can reference individual atom attributes, per-atom atom attributes, thermodynamic keywords, or invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of creating quantities to output to a dump file. The *d_name* and *i_name* attributes allow to output custom per atom floating point or integer properties that are managed by :doc:`fix property/atom <fix_property_atom>`. See :doc:`Section_modify <Section_modify>` of the manual for information on how to add new compute and fix styles to LAMMPS to calculate per-atom quantities which could then be output into dump files. ---------- Restrictions """""""""""" To write gzipped dump files, you must either compile LAMMPS with the -DLAMMPS_GZIP option or use the styles from the COMPRESS package - see the :ref:`Making LAMMPS <start_2>` section of the documentation. The *atom/gz*\ , *cfg/gz*\ , *custom/gz*\ , and *xyz/gz* styles are part of the COMPRESS package. They are only enabled if LAMMPS was built with that package. See the :ref:`Making LAMMPS <start_3>` section for more info. The *atom/mpiio*\ , *cfg/mpiio*\ , *custom/mpiio*\ , and *xyz/mpiio* styles are part of the MPIIO package. They are only enabled if LAMMPS was built with that package. See the :ref:`Making LAMMPS <start_3>` section for more info. The *xtc* style is part of the MISC package. It is only enabled if LAMMPS was built with that package. See the :ref:`Making LAMMPS <start_3>` section for more info. This is because some machines may not support the low-level XDR data format that XTC files are written with, which will result in a compile-time error when a low-level include file is not found. Putting this style in a package makes it easy to exclude from a LAMMPS build for those machines. However, the MISC package also includes two compatibility header files and associated functions, which should be a suitable substitute on machines that do not have the appropriate native header files. This option can be invoked at build time by adding -DLAMMPS_XDR to the CCFLAGS variable in the appropriate low-level Makefile, e.g. src/MAKE/Makefile.foo. This compatibility mode has been tested successfully on Cray XT3/XT4/XT5 and IBM BlueGene/L machines and should also work on IBM BG/P, and Windows XP/Vista/7 machines. Related commands """""""""""""""" :doc:`dump h5md <dump_h5md>`, :doc:`dump image <dump_image>`, :doc:`dump molfile <dump_molfile>`, :doc:`dump_modify <dump_modify>`, :doc:`undump <undump>` Default """"""" The defaults for the *image* and *movie* styles are listed on the :doc:`dump image <dump_image>` doc page. .. _lws: http://lammps.sandia.gov .. _ld: Manual.html .. _lc: Section_commands.html#comm diff --git a/doc/html/_sources/fix_ave_atom.txt b/doc/html/_sources/fix_ave_atom.txt index 1f6fc6e1c..a4a994c21 100644 --- a/doc/html/_sources/fix_ave_atom.txt +++ b/doc/html/_sources/fix_ave_atom.txt @@ -1,163 +1,191 @@ .. index:: fix ave/atom fix ave/atom command ==================== Syntax """""" .. parsed-literal:: fix ID group-ID ave/atom Nevery Nrepeat Nfreq value1 value2 ... * ID, group-ID are documented in :doc:`fix <fix>` command * ave/atom = style name of this fix command * Nevery = use input values every this many timesteps * Nrepeat = # of times to use input values for calculating averages * Nfreq = calculate averages every this many timesteps one or more input values can be listed * value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[i], f_ID, f_ID[i], v_name .. parsed-literal:: x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component) c_ID = per-atom vector calculated by a compute with ID - c_ID[I] = Ith column of per-atom array calculated by a compute with ID + c_ID[I] = Ith column of per-atom array calculated by a compute with ID, I can include wildcard (see below) f_ID = per-atom vector calculated by a fix with ID - f_ID[I] = Ith column of per-atom array calculated by a fix with ID + f_ID[I] = Ith column of per-atom array calculated by a fix with ID, I can include wildcard (see below) v_name = per-atom vector calculated by an atom-style variable with name Examples """""""" .. parsed-literal:: fix 1 all ave/atom 1 100 100 vx vy vz fix 1 all ave/atom 10 20 1000 c_my_stress[1] + fix 1 all ave/atom 10 20 1000 c_my_stress[*] Description """"""""""" Use one or more per-atom vectors as inputs every few timesteps, and average them atom by atom over longer timescales. The resulting per-atom averages can be used by other :ref:`output commands <howto_15>` such as the :doc:`fix ave/chunk <fix_ave_chunk>` or :doc:`dump custom <dump>` commands. The group specified with the command means only atoms within the group have their averages computed. Results are set to 0.0 for atoms not in the group. Each input value can be an atom attribute (position, velocity, force component) or can be the result of a :doc:`compute <compute>` or :doc:`fix <fix>` or the evaluation of an atom-style :doc:`variable <variable>`. In the latter cases, the compute, fix, or variable must produce a per-atom vector, not a global quantity or local quantity. If you wish to time-average global quantities from a compute, fix, or variable, then see the :doc:`fix ave/time <fix_ave_time>` command. +Each per-atom value of each input vector is averaged independently. + :doc:`Computes <compute>` that produce per-atom vectors or arrays are those which have the word *atom* in their style name. See the doc pages for individual :doc:`fixes <fix>` to determine which ones produce per-atom vectors or arrays. :doc:`Variables <variable>` of style *atom* are the only ones that can be used with this fix since they produce per-atom vectors. -Each per-atom value of each input vector is averaged independently. +Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form "*" or "*n" or "n*" or +"m*n". If N = the size of the vector (for *mode* = scalar) or the +number of columns in the array (for *mode* = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive). + +Using a wildcard is the same as if the individual columns of the array +had been listed one by one. E.g. these 2 fix ave/atom commands are +equivalent, since the :doc:`compute stress/atom <compute_stress/atom>` +command creates a per-atom array with 6 columns: + +.. parsed-literal:: + + compute my_stress all stress/atom NULL + fix 1 all ave/atom 10 20 1000 c_my_stress[*] + fix 1 all ave/atom 10 20 1000 c_my_stress[1] c_my_stress[1] & + c_my_stress[3] c_my_stress[4] & + c_my_stress[5] c_my_stress[6] ---------- The *Nevery*\ , *Nrepeat*\ , and *Nfreq* arguments specify on what timesteps the input values will be used in order to contribute to the average. The final averaged quantities are generated on timesteps that are a multiple of *Nfreq*\ . The average is over *Nrepeat* quantities, computed in the preceding portion of the simulation every *Nevery* timesteps. *Nfreq* must be a multiple of *Nevery* and *Nevery* must be non-zero even if *Nrepeat* is 1. Also, the timesteps contributing to the average value cannot overlap, i.e. Nrepeat*Nevery can not exceed Nfreq. For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on timesteps 90,92,94,96,98,100 will be used to compute the final average on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on timestep 200, etc. ---------- The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are self-explanatory. Note that other atom attributes can be used as inputs to this fix by using the :doc:`compute property/atom <compute_property_atom>` command and then specifying an input value from that compute. .. note:: The x,y,z attributes are values that are re-wrapped inside the periodic box whenever an atom crosses a periodic boundary. Thus if you time average an atom that spends half its time on either side of the periodic box, you will get a value in the middle of the box. If this is not what you want, consider averaging unwrapped coordinates, which can be provided by the :doc:`compute property/atom <compute_property_atom>` command via its xu,yu,zu attributes. If a value begins with "c_", a compute ID must follow which has been previously defined in the input script. If no bracketed term is appended, the per-atom vector calculated by the compute is used. If a bracketed term containing an index I is appended, the Ith column of the per-atom array calculated by the compute is used. Users can also -write code for their own compute styles and :doc:`add them to LAMMPS <Section_modify>`. +write code for their own compute styles and :doc:`add them to LAMMPS <Section_modify>`. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values. If a value begins with "f_", a fix ID must follow which has been previously defined in the input script. If no bracketed term is appended, the per-atom vector calculated by the fix is used. If a bracketed term containing an index I is appended, the Ith column of the per-atom array calculated by the fix is used. Note that some fixes only produce their values on certain timesteps, which must be compatible with *Nevery*\ , else an error will result. Users can also -write code for their own fix styles and :doc:`add them to LAMMPS <Section_modify>`. +write code for their own fix styles and :doc:`add them to LAMMPS <Section_modify>`. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values. If a value begins with "v_", a variable name must follow which has been previously defined in the input script as an :doc:`atom-style variable <variable>` Variables of style *atom* can reference thermodynamic keywords, or invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of generating per-atom quantities to time average. ---------- Restart, fix_modify, output, run start/stop, minimize info """""""""""""""""""""""""""""""""""""""""""""""""""""""""" No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options are relevant to this fix. No global scalar or vector quantities are stored by this fix for access by various :ref:`output commands <howto_15>`. This fix produces a per-atom vector or array which can be accessed by various :ref:`output commands <howto_15>`. A vector is produced if only a single quantity is averaged by this fix. If two or more quantities are averaged, then an array of values is produced. The per-atom values can only be accessed on timesteps that are multiples of *Nfreq* since that is when averaging is performed. No parameter of this fix can be used with the *start/stop* keywords of the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. Restrictions """""""""""" none Related commands """""""""""""""" :doc:`compute <compute>`, :doc:`fix ave/histo <fix_ave_histo>`, :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/time <fix_ave_time>`, :doc:`variable <variable>`, **Default:** none .. _lws: http://lammps.sandia.gov .. _ld: Manual.html .. _lc: Section_commands.html#comm diff --git a/doc/html/_sources/fix_ave_chunk.txt b/doc/html/_sources/fix_ave_chunk.txt index 2d3c28c25..12b1dcca1 100644 --- a/doc/html/_sources/fix_ave_chunk.txt +++ b/doc/html/_sources/fix_ave_chunk.txt @@ -1,471 +1,496 @@ .. index:: fix ave/chunk fix ave/chunk command ===================== Syntax """""" .. parsed-literal:: fix ID group-ID ave/chunk Nevery Nrepeat Nfreq chunkID value1 value2 ... keyword args ... * ID, group-ID are documented in :doc:`fix <fix>` command * ave/chunk = style name of this fix command * Nevery = use input values every this many timesteps * Nrepeat = # of times to use input values for calculating averages * Nfreq = calculate averages every this many timesteps * chunkID = ID of :doc:`compute chunk/atom <compute_chunk_atom>` command * one or more input values can be listed * value = vx, vy, vz, fx, fy, fz, density/mass, density/number, temp, c_ID, c_ID[I], f_ID, f_ID[I], v_name .. parsed-literal:: vx,vy,vz,fx,fy,fz = atom attribute (velocity, force component) density/number, density/mass = number or mass density temp = temperature c_ID = per-atom vector calculated by a compute with ID - c_ID[I] = Ith column of per-atom array calculated by a compute with ID + c_ID[I] = Ith column of per-atom array calculated by a compute with ID, I can include wildcard (see below) f_ID = per-atom vector calculated by a fix with ID - f_ID[I] = Ith column of per-atom array calculated by a fix with ID + f_ID[I] = Ith column of per-atom array calculated by a fix with ID, I can include wildcard (see below) v_name = per-atom vector calculated by an atom-style variable with name * zero or more keyword/arg pairs may be appended * keyword = *norm* or *ave* or *bias* or *adof* or *cdof* or *file* or *overwrite* or *title1* or *title2* or *title3* .. parsed-literal:: *norm* arg = *all* or *sample* or *none* = how output on *Nfreq* steps is normalized all = output is sum of atoms across all *Nrepeat* samples, divided by atom count sample = output is sum of *Nrepeat* sample averages, divided by *Nrepeat* none = output is sum of *Nrepeat* sample sums, divided by *Nrepeat* *ave* args = *one* or *running* or *window M* one = output new average value every Nfreq steps running = output cumulative average of all previous Nfreq steps window M = output average of M most recent Nfreq steps *bias* arg = bias-ID bias-ID = ID of a temperature compute that removes a velocity bias for temperature calculation *adof* value = dof_per_atom dof_per_atom = define this many degrees-of-freedom per atom for temperature calculation *cdof* value = dof_per_chunk dof_per_chunk = define this many degrees-of-freedom per chunk for temperature calculation *file* arg = filename filename = file to write results to *overwrite* arg = none = overwrite output file with only latest output *format* arg = string string = C-style format string *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 Examples """""""" .. parsed-literal:: fix 1 all ave/chunk 10000 1 10000 binchunk c_myCentro title1 "My output values" fix 1 flow ave/chunk 100 10 1000 molchunk vx vz norm sample file vel.profile fix 1 flow ave/chunk 100 5 1000 binchunk density/mass ave running fix 1 flow ave/chunk 100 5 1000 binchunk density/mass ave running **NOTE:** If you are trying to replace a deprectated fix ave/spatial command with the newer, more flexible fix ave/chunk and :doc:`compute chunk/atom <compute_chunk_atom>` commands, you simply need to split the fix ave/spatial arguments across the two new commands. For example, this command: .. parsed-literal:: fix 1 flow ave/spatial 100 10 1000 y 0.0 1.0 vx vz norm sample file vel.profile could be replaced by: .. parsed-literal:: compute cc1 flow chunk/atom bin/1d y 0.0 1.0 fix 1 flow ave/chunk 100 10 1000 cc1 vx vz norm sample file vel.profile Description """"""""""" Use one or more per-atom vectors as inputs every few timesteps, sum the values over the atoms in each chunk at each timestep, then average the per-chunk values over longer timescales. The resulting chunk averages can be used by other :ref:`output commands <howto_15>` such as :doc:`thermo_style custom <thermo_style>`, and can also be written to a file. In LAMMPS, chunks are collections of atoms defined by a :doc:`compute chunk/atom <compute_chunk_atom>` command, which assigns each atom to a single chunk (or no chunk). The ID for this command is specified as chunkID. For example, a single chunk could be the atoms in a molecule or atoms in a spatial bin. See the :doc:`compute chunk/atom <compute_chunk_atom>` doc page and ":ref:`Section_howto 23 <howto_23>` for details of how chunks can be defined and examples of how they can be used to measure properties of a system. Note that only atoms in the specified group contribute to the summing and averaging calculations. The :doc:`compute chunk/atom <compute_chunk_atom>` command defines its own group as well as an optional region. Atoms will have a chunk ID = 0, meaning they belong to no chunk, if they are not in that group or region. Thus you can specify the "all" group for this command if you simply want to use the chunk definitions provided by chunkID. Each specified per-atom value can be an atom attribute (position, velocity, force component), a mass or number density, or the result of a :doc:`compute <compute>` or :doc:`fix <fix>` or the evaluation of an atom-style :doc:`variable <variable>`. In the latter cases, the compute, fix, or variable must produce a per-atom quantity, not a global quantity. Note that the :doc:`compute property/atom <compute_property_atom>` command provides access to any attribute defined and stored by atoms. If you wish to time-average global quantities from a compute, fix, or variable, then see the :doc:`fix ave/time <fix_ave_time>` command. +The per-atom values of each input vector are summed and averaged +independently of the per-atom values in other input vectors. + :doc:`Computes <compute>` that produce per-atom quantities are those which have the word *atom* in their style name. See the doc pages for individual :doc:`fixes <fix>` to determine which ones produce per-atom quantities. :doc:`Variables <variable>` of style *atom* are the only ones that can be used with this fix since all other styles of variable produce global quantities. -The per-atom values of each input vector are summed and averaged -independently of the per-atom values in other input vectors. +Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form "*" or "*n" or "n*" or +"m*n". If N = the size of the vector (for *mode* = scalar) or the +number of columns in the array (for *mode* = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive). + +Using a wildcard is the same as if the individual columns of the array +had been listed one by one. E.g. these 2 fix ave/chunk commands are +equivalent, since the :doc:`compute property/atom <compute_property/atom>` command creates, in this +case, a per-atom array with 3 columns: + +.. parsed-literal:: + + compute myAng all property/atom angmomx angmomy angmomz + fix 1 all ave/chunk 100 1 100 cc1 c_myAng[*] file tmp.angmom + fix 2 all ave/chunk 100 1 100 cc1 c_myAng[1] c_myAng[2] c_myAng[3] file tmp.angmom .. note:: This fix works by creating an array of size *Nchunk* by Nvalues on each processor. *Nchunk* is the number of chunks which is defined by the :doc:`compute chunk/atom <doc/compute_chunk_atom>` command. Nvalues is the number of input values specified. Each processor loops over its atoms, tallying its values to the appropriate chunk. Then the entire array is summed across all processors. This means that using a large number of chunks will incur an overhead in memory and computational cost (summing across processors), so be careful to define a reasonable number of chunks. ---------- The *Nevery*\ , *Nrepeat*\ , and *Nfreq* arguments specify on what timesteps the input values will be accessed and contribute to the average. The final averaged quantities are generated on timesteps that are a multiples of *Nfreq*\ . The average is over *Nrepeat* quantities, computed in the preceding portion of the simulation every *Nevery* timesteps. *Nfreq* must be a multiple of *Nevery* and *Nevery* must be non-zero even if *Nrepeat* is 1. Also, the timesteps contributing to the average value cannot overlap, i.e. Nrepeat*Nevery can not exceed Nfreq. For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on timesteps 90,92,94,96,98,100 will be used to compute the final average on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time averaging is done; values are simply generated on timesteps 100,200,etc. Each input value can also be averaged over the atoms in each chunk. The way the averaging is done across the *Nrepeat* timesteps to produce output on the *Nfreq* timesteps, and across multiple *Nfreq* outputs, is determined by the *norm* and *ave* keyword settings, as discussed below. .. note:: To perform per-chunk averaging within a *Nfreq* time window, the number of chunks *Nchunk* defined by the :doc:`compute chunk/atom <compute_chunk_atom>` command must remain constant. If the *ave* keyword is set to *running* or *window* then *Nchunk* must remain constant for the duration of the simulation. This fix forces the chunk/atom compute specified by chunkID to hold *Nchunk* constant for the appropriate time windows, by not allowing it to re-calcualte *Nchunk*\ , which can also affect how it assigns chunk IDs to atoms. More details are given on the :doc:`compute chunk/atom <compute_chunk_atom>` doc page. ---------- The atom attribute values (vx,vy,vz,fx,fy,fz) are self-explanatory. As noted above, any other atom attributes can be used as input values to this fix by using the :doc:`compute property/atom <compute_property_atom>` command and then specifying an input value from that compute. The *density/number* value means the number density is computed for each chunk, i.e. number/volume. The *density/mass* value means the mass density is computed for each chunk, i.e. total-mass/volume. The output values are in units of 1/volume or density (mass/volume). See the :doc:`units <units>` command doc page for the definition of density for each choice of units, e.g. gram/cm^3. If the chunks defined by the :doc:`compute chunk/atom <compute_chunk_atom>` command are spatial bins, the volume is the bin volume. Otherwise it is the volume of the entire simulation box. The *temp* value means the temperature is computed for each chunk, by the formula KE = DOF/2 k T, where KE = total kinetic energy of the chunk of atoms (sum of 1/2 m v^2), DOF = the total number of degrees of freedom for all atoms in the chunk, k = Boltzmann constant, and T = temperature. The DOF is calculated as N*adof + cdof, where N = number of atoms in the chunk, adof = degrees of freedom per atom, and cdof = degrees of freedom per chunk. By default adof = 2 or 3 = dimensionality of system, as set via the :doc:`dimension <dimension>` command, and cdof = 0.0. This gives the usual formula for temperature. Note that currently this temperature only includes translational degrees of freedom for each atom. No rotational degrees of freedom are included for finite-size particles. Also no degrees of freedom are subtracted for any velocity bias or constraints that are applied, such as :doc:`compute temp/partial <compute_temp_partial>`, or :doc:`fix shake <fix_shake>` or :doc:`fix rigid <fix_rigid>`. This is because those degrees of freedom (e.g. a constrained bond) could apply to sets of atoms that are both included and excluded from a specific chunk, and hence the concept is somewhat ill-defined. In some cases, you can use the *adof* and *cdof* keywords to adjust the calculated degress of freedom appropriately, as explained below. Also note that a bias can be subtracted from atom velocities before they are used in the above formula for KE, by using the *bias* keyword. This allows, for example, a thermal temperature to be computed after removal of a flow velocity profile. Note that the per-chunk temperature calculated by this fix and the :doc:`compute temp/chunk <compute_temp_chunk>` command can be different. The compute calculates the temperature for each chunk for a single snapshot. This fix can do that but can also time average those values over many snapshots, or it can compute a temperature as if the atoms in the chunk on different timesteps were collected together as one set of atoms to calculate their temperature. The compute allows the center-of-mass velocity of each chunk to be subtracted before calculating the temperature; this fix does not. If a value begins with "c_", a compute ID must follow which has been previously defined in the input script. If no bracketed integer is appended, the per-atom vector calculated by the compute is used. If a bracketed integer is appended, the Ith column of the per-atom array calculated by the compute is used. Users can also write code for their own compute styles and :doc:`add them to LAMMPS <Section_modify>`. +See the discussion above for how I can be specified with a wildcard +asterisk to effectively specify multiple values. If a value begins with "f_", a fix ID must follow which has been previously defined in the input script. If no bracketed integer is appended, the per-atom vector calculated by the fix is used. If a bracketed integer is appended, the Ith column of the per-atom array calculated by the fix is used. Note that some fixes only produce their values on certain timesteps, which must be compatible with *Nevery*\ , else an error results. Users can also write code for their -own fix styles and :doc:`add them to LAMMPS <Section_modify>`. +own fix styles and :doc:`add them to LAMMPS <Section_modify>`. See the +discussion above for how I can be specified with a wildcard asterisk +to effectively specify multiple values. If a value begins with "v_", a variable name must follow which has been previously defined in the input script. Variables of style *atom* can reference thermodynamic keywords and various per-atom attributes, or invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of generating per-atom quantities to average within chunks. ---------- Additional optional keywords also affect the operation of this fix and its outputs. The *norm* keyword affects how averaging is done for the per-chunk values that are output every *Nfreq* timesteps. It the *norm* setting is *all*\ , which is the default, a chunk value is summed over all atoms in all *Nrepeat* samples, as is the count of atoms in the chunk. The averaged output value for the chunk on the *Nfreq* timesteps is Total-sum / Total-count. In other words it is an average over atoms across the entire *Nfreq* timescale. If the *norm* setting is *sample*\ , the chunk value is summed over atoms for each sample, as is the count, and an "average sample value" is computed for each sample, i.e. Sample-sum / Sample-count. The output value for the chunk on the *Nfreq* timesteps is the average of the *Nrepeat* "average sample values", i.e. the sum of *Nrepeat* "average sample values" divided by *Nrepeat*\ . In other words it is an average of an average. If the *norm* setting is *none*\ , a similar computation as for the *sample* seting is done, except the individual "average sample values" are "summed sample values". A summed sample value is simply the chunk value summed over atoms in the sample, without dividing by the number of atoms in the sample. The output value for the chunk on the *Nfreq* timesteps is the average of the *Nrepeat* "summed sample values", i.e. the sum of *Nrepeat* "summed sample values" divided by *Nrepeat*\ . The *ave* keyword determines how the per-chunk values produced every *Nfreq* steps are averaged with values produced on previous steps that were multiples of *Nfreq*\ , before they are accessed by another output command or written to a file. If the *ave* setting is *one*\ , which is the default, then the chunk values produced on timesteps that are multiples of *Nfreq* are independent of each other; they are output as-is without further averaging. If the *ave* setting is *running*\ , then the chunk values produced on timesteps that are multiples of *Nfreq* are summed and averaged in a cumulative sense before being output. Each output chunk value is thus the average of the chunk value produced on that timestep with all preceding values for the same chunk. This running average begins when the fix is defined; it can only be restarted by deleting the fix via the :doc:`unfix <unfix>` command, or re-defining the fix by re-specifying it. If the *ave* setting is *window*\ , then the chunk values produced on timesteps that are multiples of *Nfreq* are summed and averaged within a moving "window" of time, so that the last M values for the same chunk are used to produce the output. E.g. if M = 3 and Nfreq = 1000, then the output on step 10000 will be the average of the individual chunk values on steps 8000,9000,10000. Outputs on early steps will average over less than M values if they are not available. The *bias* keyword specifies the ID of a temperature compute that removes a "bias" velocity from each atom, specified as *bias-ID*\ . It is only used when the *temp* value is calculated, to compute the thermal temperature of each chunk after the translational kinetic energy components have been altered in a prescribed way, e.g. to remove a flow velocity profile. See the doc pages for individual computes that calculate a temperature to see which ones implement a bias. The *adof* and *cdof* keywords define the values used in the degree of freedom (DOF) formula described above for for temperature calculation for each chunk. They are only used when the *temp* value is calculated. They can be used to calculate a more appropriate temperature for some kinds of chunks. Here are 3 examples: If spatially binned chunks contain some number of water molecules and :doc:`fix shake <fix_shake>` is used to make each molecule rigid, then you could calculate a temperature with 6 degrees of freedom (DOF) (3 translational, 3 rotational) per molecule by setting *adof* to 2.0. If :doc:`compute temp/partial <compute_temp_partial>` is used with the *bias* keyword to only allow the x component of velocity to contribute to the temperature, then *adof* = 1.0 would be appropriate. If each chunk consists of a large molecule, with some number of its bonds constrained by :doc:`fix shake <fix_shake>` or the entire molecule by :doc:`fix rigid/small <fix_rigid>`, *adof* = 0.0 and *cdof* could be set to the remaining degrees of freedom for the entire molecule (entire chunk in this case), e.g. 6 for 3d, or 3 for 2d, for a rigid molecule. The *file* keyword allows a filename to be specified. Every *Nfreq* timesteps, a section of chunk info will be written to a text file in the following format. A line with the timestep and number of chunks is written. Then one line per chunk is written, containing the chunk ID (1-Nchunk), an optional original ID value, optional coordinate values for chunks that represent spatial bins, the number of atoms in the chunk, and one or more calculated values. More explanation of the optional values is given below. The number of values in each line corresponds to the number of values specified in the fix ave/chunk command. The number of atoms and the value(s) are summed or average quantities, as explained above. 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 *format* keyword sets the numeric format of each value when it is printed to a file via the *file* keyword. Note that all values are floating point quantities. The default format is %g. You can specify a higher precision if desired, e.g. %20.16g. 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: .. parsed-literal:: # Chunk-averaged data for fix ID and group name # Timestep Number-of-chunks # Chunk (OrigID) (Coord1) (Coord2) (Coord3) Ncount value1 value2 ... In the first line, ID and name are replaced with the fix-ID and group name. The second line describes the two values that are printed at the first of each section of output. In the third line the values are replaced with the appropriate value names, e.g. fx or c_myCompute\ **2**\ . The words in parenthesis only appear with corresponding columns if the chunk style specified for the :doc:`compute chunk/atom <compute_chunk_atom>` command supports them. The OrigID column is only used if the *compress* keyword was set to *yes* for the :doc:`compute chunk/atom <compute_chunk_atom>` command. This means that the original chunk IDs (e.g. molecule IDs) will have been compressed to remove chunk IDs with no atoms assigned to them. Thus a compresed chunk ID of 3 may correspond to an original chunk ID or molecule ID of 415. The OrigID column will list 415 for the 3rd chunk. The CoordN columns only appear if a *binning* style was used in the :doc:`compute chunk/atom <compute_chunk_atom>` command. For *bin/1d*\ , *bin/2d*\ , and *bin/3d* styles the column values are the center point of the bin in the corresponding dimension. Just Coord1 is used for *bin/1d*\ , Coord2 is added for *bin/2d*\ , Coord3 is added for *bin/3d*\ . For *bin/sphere*\ , just Coord1 is used, and it is the radial coordinate. For *bin/cylinder*\ , Coord1 and Coord2 are used. Coord1 is the radial coordinate (away from the cylinder axis), and coord2 is the coordinate along the cylinder axis. Note that if the value of the *units* keyword used in the :doc:`compute chunk/atom command <compute_chunk_atom>` is *box* or *lattice*\ , the coordinate values will be in distance :doc:`units <units>`. If the value of the *units* keyword is *reduced*\ , the coordinate values will be in unitless reduced units (0-1). This is not true for the Coord1 value of style *bin/sphere* or *bin/cylinder* which both represent radial dimensions. Those values are always in distance :doc:`units <units>`. ---------- Restart, fix_modify, output, run start/stop, minimize info """""""""""""""""""""""""""""""""""""""""""""""""""""""""" No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options are relevant to this fix. This fix computes a global array of values which can be accessed by various :ref:`output commands <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 = the number of chunks *Nchunk* as calculated by the specified :doc:`compute chunk/atom <compute_chunk_atom>` command. The # of columns = M+1+Nvalues, where M = 1 to 4, depending on whether the optional columns for OrigID and CoordN are used, as explained above. Following the optional columns, the next column contains the count of atoms in the chunk, and the remaining columns are the Nvalue quantities. When the array is accessed with a row I that exceeds the current number of chunks, than a 0.0 is returned by the fix instead of an error, since the number of chunks can vary as a simulation runs depending on how that value is computed by the compute chunk/atom command. The array values calculated by this fix are treated as "intensive", since they are typically already normalized by the count of atoms in each chunk. No parameter of this fix can be used with the *start/stop* keywords of the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. Restrictions """""""""""" none Related commands """""""""""""""" :doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/histo <fix_ave_histo>`, :doc:`fix ave/time <fix_ave_time>`, :doc:`variable <variable>`, :doc:`fix ave/correlate <fix_ave_correlate>` Default """"""" The option defaults are norm = all, ave = one, bias = none, no file output, and title 1,2,3 = strings as described above. .. _lws: http://lammps.sandia.gov .. _ld: Manual.html .. _lc: Section_commands.html#comm diff --git a/doc/html/_sources/fix_ave_correlate.txt b/doc/html/_sources/fix_ave_correlate.txt index d2cd327d3..a9dfffa37 100644 --- a/doc/html/_sources/fix_ave_correlate.txt +++ b/doc/html/_sources/fix_ave_correlate.txt @@ -1,353 +1,382 @@ .. index:: fix ave/correlate fix ave/correlate command ========================= Syntax """""" .. parsed-literal:: fix ID group-ID ave/correlate Nevery Nrepeat Nfreq value1 value2 ... keyword args ... * ID, group-ID are documented in :doc:`fix <fix>` command * ave/correlate = style name of this fix command * Nevery = use input values every this many timesteps * Nrepeat = # of correlation time windows to accumulate * Nfreq = calculate time window averages every this many timesteps * one or more input values can be listed * value = c_ID, c_ID[N], f_ID, f_ID[N], v_name .. parsed-literal:: c_ID = global scalar calculated by a compute with ID - c_ID[I] = Ith component of global vector calculated by a compute with ID + c_ID[I] = Ith component of global vector calculated by a compute with ID, I can include wildcard (see below) f_ID = global scalar calculated by a fix with ID - f_ID[I] = Ith component of global vector calculated by a fix with ID + f_ID[I] = Ith component of global vector calculated by a fix with ID, I can include wildcard (see below) v_name = global value calculated by an equal-style variable with name v_name[I] = Ith component of a vector-style variable with name * zero or more keyword/arg pairs may be appended * keyword = *type* or *ave* or *start* or *prefactor* or *file* or *overwrite* or *title1* or *title2* or *title3* .. parsed-literal:: *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 Examples """""""" .. parsed-literal:: 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" +fix 1 all ave/correlate 1 50 10000 c_thermo_press[*] + 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 :doc:`variables <variable>` or used by other :ref:`output commands <howto_15>` such as :doc:`thermo_style custom <thermo_style>`, and can also be written to a file. See the :doc:`fix ave/correlate/long <fix_ave_correlate_long>` 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 :doc:`compute <compute>` or :doc:`fix <fix>` or the evaluation of an equal-style or vector-style :doc:`variable <variable>`. 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 :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/atom <fix_ave_atom>`, or :doc:`fix ave/histo <fix_ave_histo>` commands. If you wish to convert a per-atom quantity into a single global value, see the :doc:`compute reduce <compute_reduce>` command. +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. + :doc:`Computes <compute>` that produce global quantities are those which do not have the word *atom* in their style name. Only a few :doc:`fixes <fix>` produce global quantities. See the doc pages for individual fixes for info on which ones produce such values. :doc:`Variables <variable>` of style *equal* and *vector* 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. +Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form "*" or "*n" or "n*" or +"m*n". If N = the size of the vector (for *mode* = scalar) or the +number of columns in the array (for *mode* = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive). + +Using a wildcard is the same as if the individual elements of the +vector had been listed one by one. E.g. these 2 fix ave/correlate +commands are equivalent, since the :doc:`compute pressure <compute_pressure>` command creates a global vector with 6 +values. + +.. parsed-literal:: + + compute myPress all pressure NULL + fix 1 all ave/correlate 1 50 10000 c_myPress[*] + fix 1 all ave/correlate 1 50 10000 & + c_myPress[1] c_myPress[2] c_myPress[3] & + c_myPress[4] c_myPress[5] c_myPress[6] ---------- 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: .. parsed-literal:: Cij(delta) = ave(Vi(t)*Vj(t+delta)) 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: .. parsed-literal:: Cij(0), Cij(Nevery), Cij(2*Nevery), ..., Cij((Nrepeat-1)*Nevery) 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. ---------- 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. +calculated by the compute is used. See the discussion above for how I +can be specified with a wildcard asterisk to effectively specify +multiple values. Note that there is a :doc:`compute reduce <compute_reduce>` 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 :doc:`thermodynamic output <thermo_style>` or other fixes such as :doc:`fix nvt <fix_nh>` or :doc:`fix temp/rescale <fix_temp_rescale>`. 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 :doc:`add them to LAMMPS <Section_modify>`. 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. +calculated by the fix is used. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values. 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 :doc:`add them to LAMMPS <Section_modify>`. If a value begins with "v_", a variable name must follow which has been previously defined in the input script. Only equal-style or vector-style variables can be referenced; the latter requires a bracketed term to specify the Ith element of the vector calculated by the variable. See the :doc:`variable <variable>` command for details. Note that variables of style *equal* or *vector* 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. ---------- 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. * 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. * 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. * 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. * 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. * 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. 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 :doc:`unfix <unfix>` 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: .. parsed-literal:: # Time-correlated data for fix ID # TimeStep Number-of-time-windows # Index TimeDelta Ncount valueI*valueJ valueI*valueJ ... 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. ---------- Let Sij = a set of time correlation data for input values I and J, namely the *Nrepeat* values: .. parsed-literal:: Sij = Cij(0), Cij(Nevery), Cij(2*Nevery), ..., Cij(*Nrepeat-1)*Nevery) 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 :doc:`equal-style variables <variable>` 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. ---------- Restart, fix_modify, output, run start/stop, minimize info """""""""""""""""""""""""""""""""""""""""""""""""""""""""" No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options are relevant to this fix. This fix computes a global array of values which can be accessed by various :ref:`output commands <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. * For *type* = *upper*\ , the Npair = N*(N-1)/2 columns are ordered: C12, C13, ..., C1N, C23, ..., C2N, C34, ..., CN-1N. * For *type* = *lower*\ , the Npair = N*(N-1)/2 columns are ordered: C21, C31, C32, C41, C42, C43, ..., CN1, CN2, ..., CNN-1. * 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. * 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. * For *type* = *full*\ , the Npair = N^2 columns are ordered: C11, C12, ..., C1N, C21, C22, ..., C2N, C31, ..., C3N, ..., CN1, ..., CNN-1, CNN. 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 :doc:`variable <variable>`. No parameter of this fix can be used with the *start/stop* keywords of the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. Restrictions """""""""""" none Related commands """""""""""""""" :doc:`fix ave/correlate/long <fix_ave_correlate_long>`, :doc:`compute <compute>`, :doc:`fix ave/time <fix_ave_time>`, :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/histo <fix_ave_histo>`, :doc:`variable <variable>` **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. .. _lws: http://lammps.sandia.gov .. _ld: Manual.html .. _lc: Section_commands.html#comm diff --git a/doc/html/_sources/fix_ave_histo.txt b/doc/html/_sources/fix_ave_histo.txt index afe976863..8e56ec77c 100644 --- a/doc/html/_sources/fix_ave_histo.txt +++ b/doc/html/_sources/fix_ave_histo.txt @@ -1,360 +1,379 @@ .. index:: fix ave/histo fix ave/histo command ===================== fix ave/histo/weight command ============================ Syntax """""" .. parsed-literal:: fix ID group-ID style Nevery Nrepeat Nfreq lo hi Nbin value1 value2 ... keyword args ... * ID, group-ID are documented in :doc:`fix <fix>` command * style = *ave/histo* or *ave/histo/weight* = style name of this fix command * Nevery = use input values every this many timesteps * Nrepeat = # of times to use input values for calculating histogram * Nfreq = calculate histogram every this many timesteps * lo,hi = lo/hi bounds within which to histogram * Nbin = # of histogram bins * one or more input values can be listed * value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[N], f_ID, f_ID[N], v_name .. parsed-literal:: x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component) c_ID = scalar or vector calculated by a compute with ID - c_ID[I] = Ith component of vector or Ith column of array calculated by a compute with ID + c_ID[I] = Ith component of vector or Ith column of array calculated by a compute with ID, I can include wildcard (see below) f_ID = scalar or vector calculated by a fix with ID - f_ID[I] = Ith component of vector or Ith column of array calculated by a fix with ID + f_ID[I] = Ith component of vector or Ith column of array calculated by a fix with ID, I can include wildcard (see below) v_name = value(s) calculated by an equal-style or vector-style or atom-style variable with name v_name[I] = value calculated by a vector-style variable with name * zero or more keyword/arg pairs may be appended * keyword = *mode* or *file* or *ave* or *start* or *beyond* or *overwrite* or *title1* or *title2* or *title3* .. parsed-literal:: *mode* arg = *scalar* or *vector* scalar = all input values are scalars vector = all input values are vectors *file* arg = filename filename = name of file to output histogram(s) to *ave* args = *one* or *running* or *window* one = output a new average value every Nfreq steps running = output cumulative average of all previous Nfreq steps window M = output average of M most recent Nfreq steps *start* args = Nstart Nstart = start averaging on this timestep *beyond* arg = *ignore* or *end* or *extra* ignore = ignore values outside histogram lo/hi bounds end = count values outside histogram lo/hi bounds in end bins extra = create 2 extra bins for value outside histogram lo/hi bounds *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, only for vector mode Examples """""""" .. parsed-literal:: fix 1 all ave/histo 100 5 1000 0.5 1.5 50 c_myTemp file temp.histo ave running fix 1 all ave/histo 100 5 1000 -5 5 100 c_thermo_press[2] c_thermo_press[3] title1 "My output values" + fix 1 all ave/histo 100 5 1000 -5 5 100 c_thermo_press[*] fix 1 all ave/histo 1 100 1000 -2.0 2.0 18 vx vy vz mode vector ave running beyond extra fix 1 all ave/histo/weight 1 1 1 10 100 2000 c_XRD[1] c_XRD[2] Description """"""""""" -Use one or more values as inputs every few timesteps, histogram them, -and average the histogram over longer timescales. The resulting -histogram can be used by other :ref:`output commands <howto_15>`, and can also be written to a +Use one or more values as inputs every few timesteps to create a +single histogram. The histogram can then be averaged over longer +timescales. The resulting histogram can be used by other :ref:`output commands <howto_15>`, and can also be written to a file. The fix ave/histo/weight command has identical syntax to fix ave/histo, except that exactly two values must be specified. See details below. The group specified with this command is ignored for global and local input values. For per-atom input values, only atoms in the group contribute to the histogram. Note that regardless of the specified group, specified values may represent calculations performed by computes and fixes which store their own "group" definition. A histogram is simply a count of the number of values that fall within a histogram bin. *Nbins* are defined, with even spacing between *lo* and *hi*\ . Values that fall outside the lo/hi bounds can be treated in different ways; see the discussion of the *beyond* keyword below. Each input value can be an atom attribute (position, velocity, force component) or can be the result of a :doc:`compute <compute>` or :doc:`fix <fix>` or the evaluation of an equal-style or vector-style or atom-style :doc:`variable <variable>`. The set of input values can be either all global, all per-atom, or all local quantities. Inputs of different kinds (e.g. global and per-atom) cannot be mixed. Atom attributes are per-atom vector values. See the doc page for individual "compute" and "fix" commands to see what kinds of quantities they generate. -The input values must either be all scalars or all vectors (or -arrays), depending on the setting of the *mode* keyword. - Note that the output of this command is a single histogram for all input values combined together, not one histogram per input value. See below for details on the format of the output of this fix. -If *mode* = vector, then the input values may either be vectors or -arrays. If a global array is listed, then it is the same as if the -individual columns of the array had been listed one by one. -E.g. these 2 fix ave/histo commands are equivalent, since the :doc:`compute com/chunk <compute_com_chunk>` command creates a global array -with 3 columns: +The input values must either be all scalars or all vectors (or +arrays), depending on the setting of the *mode* keyword. + +If *mode* = scalar, then the input values must be scalars, or vectors +with a bracketed term appended, indicating the Ith value of the vector +is used. + +If *mode* = vector, then the input values must be vectors, or arrays +with a bracketed term appended, indicating the Ith column of the array +is used. All vectors must be the same length, which is the length of +the vector or number of rows in the array. + +Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form "*" or "*n" or "n*" or +"m*n". If N = the size of the vector (for *mode* = scalar) or the +number of columns in the array (for *mode* = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive). + +Using a wildcard is the same as if the individual elements of the +vector or columns of the array had been listed one by one. E.g. these +2 fix ave/histo commands are equivalent, since the :doc:`compute com/chunk <compute_com_chunk>` command creates a global array with +3 columns: .. parsed-literal:: compute myCOM all com/chunk - fix 1 all ave/histo 100 1 100 c_myCOM file tmp1.com mode vector + fix 1 all ave/histo 100 1 100 c_myCOM[*] file tmp1.com mode vector fix 2 all ave/histo 100 1 100 c_myCOM[1] c_myCOM[2] c_myCOM[3] file tmp2.com mode vector If the fix ave/histo/weight command is used, exactly two values must be specified. If the values are vectors, they must be the same length. The first value (a scalar or vector) is what is histogrammed into bins, in the same manner the fix ave/histo command operates. The second value (a scalar or vector) is used as a "weight". This means that instead of each value tallying a "1" to its bin, the corresponding weight is tallied. E.g. the Nth entry in the first vector tallies the Nth entry (weight) in the second vector. ---------- The *Nevery*\ , *Nrepeat*\ , and *Nfreq* arguments specify on what timesteps the input values will be used in order to contribute to the histogram. The final histogram is generated on timesteps that are multiple of *Nfreq*\ . It is averaged over *Nrepeat* histograms, computed in the preceding portion of the simulation every *Nevery* timesteps. *Nfreq* must be a multiple of *Nevery* and *Nevery* must be non-zero even if *Nrepeat* is 1. Also, the timesteps contributing to the histogram value cannot overlap, i.e. Nrepeat*Nevery can not exceed Nfreq. For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then input values on timesteps 90,92,94,96,98,100 will be used to compute the final histogram on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time averaging of the histogram is done; a histogram is simply generated on timesteps 100,200,etc. ---------- The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are self-explanatory. Note that other atom attributes can be used as inputs to this fix by using the :doc:`compute property/atom <compute_property_atom>` command and then specifying an input value from that compute. If a value begins with "c_", a compute ID must follow which has been previously defined in the input script. If *mode* = scalar, then if no bracketed term is appended, the global scalar calculated by the compute is used. If a bracketed term is appended, the Ith element of the global vector calculated by the compute is used. If *mode* = vector, then if no bracketed term is appended, the global or per-atom -or local vector calculated by the compute is used. Or if the compute -calculates an array, all of the columns of the array are used as if -they had been specified as individual vectors (see description above). -If a bracketed term is appended, the Ith column of the global or -per-atom or local array calculated by the compute is used. +or local vector calculated by the compute is used. If a bracketed +term is appended, the Ith column of the global or per-atom or local +array calculated by the compute is used. See the discussion above for +how I can be specified with a wildcard asterisk to effectively specify +multiple values. Note that there is a :doc:`compute reduce <compute_reduce>` command which can sum per-atom quantities into a global scalar or vector which can thus be accessed by fix ave/histo. Or it can be a compute defined not in your input script, but by :doc:`thermodynamic output <thermo_style>` or other fixes such as :doc:`fix nvt <fix_nh>` or :doc:`fix temp/rescale <fix_temp_rescale>`. 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 :doc:`add them to LAMMPS <Section_modify>`. If a value begins with "f_", a fix ID must follow which has been previously defined in the input script. If *mode* = scalar, then if no bracketed term is appended, the global scalar calculated by the fix is used. If a bracketed term is appended, the Ith element of the global vector calculated by the fix is used. If *mode* = vector, then if no bracketed term is appended, the global or per-atom or local -vector calculated by the fix is used. Or if the fix calculates an -array, all of the columns of the array are used as if they had been -specified as individual vectors (see description above). If a -bracketed term is appended, the Ith column of the global or per-atom -or local array calculated by the fix is used. +vector calculated by the fix is used. If a bracketed term is +appended, the Ith column of the global or per-atom or local array +calculated by the fix is used. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values. 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 :doc:`add them to LAMMPS <Section_modify>`. If a value begins with "v_", a variable name must follow which has been previously defined in the input script. If *mode* = scalar, then only equal-style or vector-style variables can be used, which both produce global values. In this mode, a vector-style variable requires a bracketed term to specify the Ith element of the vector calculated by the variable. If *mode* = vector, then only vector-style or atom-style variables can be used, which produce a global or per-atom vector respectively. The vector-style variable must be used without a bracketed term. See the :doc:`variable <variable>` command for details. Note that variables of style *equal*\ , *vector*\ , and *atom* define a formula which can reference individual atom properties or thermodynamic keywords, or they can invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of specifying quantities to histogram. ---------- Additional optional keywords also affect the operation of this fix. If the *mode* keyword is set to *scalar*\ , then all input values must be global scalars, or elements of global vectors. If the *mode* keyword is set to *vector*\ , then all input values must be global or per-atom or local vectors, or columns of global or per-atom or local arrays. The *beyond* keyword determines how input values that fall outside the *lo* to *hi* bounds are treated. Values such that *lo* <= value <= *hi* are assigned to one bin. Values on a bin boundary are assigned to the lower of the 2 bins. If *beyond* is set to *ignore* then values < *lo* and values > *hi* are ignored, i.e. they are not binned. If *beyond* is set to *end* then values < *lo* are counted in the first bin and values > *hi* are counted in the last bin. If *beyond* is set to *extend* then two extra bins are created, so that there are Nbins+2 total bins. Values < *lo* are counted in the first bin and values > *hi* are counted in the last bin (Nbins+1). Values between *lo* and *hi* (inclusive) are counted in bins 2 thru Nbins+1. The "coordinate" stored and printed for these two extra bins is *lo* and *hi*\ . The *ave* keyword determines how the histogram produced every *Nfreq* steps are averaged with histograms produced on previous steps that were multiples of *Nfreq*\ , before they are accessed by another output command or written to a file. If the *ave* setting is *one*\ , then the histograms produced on timesteps that are multiples of *Nfreq* are independent of each other; they are output as-is without further averaging. If the *ave* setting is *running*\ , then the histograms produced on timesteps that are multiples of *Nfreq* are summed and averaged in a cumulative sense before being output. Each bin value in the histogram is thus the average of the bin value produced on that timestep with all preceding values for the same bin. This running average begins when the fix is defined; it can only be restarted by deleting the fix via the :doc:`unfix <unfix>` command, or by re-defining the fix by re-specifying it. If the *ave* setting is *window*\ , then the histograms produced on timesteps that are multiples of *Nfreq* are summed within a moving "window" of time, so that the last M histograms are used to produce the output. E.g. if M = 3 and Nfreq = 1000, then the output on step 10000 will be the combined histogram of the individual histograms on steps 8000,9000,10000. Outputs on early steps will be sums over less than M histograms if they are not available. The *start* keyword specifies what timestep histogramming will begin on. The default is step 0. Often input values can be 0.0 at time 0, so setting *start* to a larger value can avoid including a 0.0 in a running or windowed histogram. The *file* keyword allows a filename to be specified. Every *Nfreq* steps, one histogram is written to the file. This includes a leading line that contains the timestep, number of bins, the total count of values contributing to the histogram, the count of values that were not histogrammed (see the *beyond* keyword), the minimum value encountered, and the maximum value encountered. The min/max values include values that were not histogrammed. Following the leading line, one line per bin is written into the file. Each line contains the bin #, the coordinate for the center of the bin (between *lo* and *hi*\ ), the count of values in the bin, and the normalized count. The normalized count is the bin count divided by the total count (not including values not histogrammed), so that the normalized values sum to 1.0 across all bins. The *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: .. parsed-literal:: # Histogram for fix ID # TimeStep Number-of-bins Total-counts Missing-counts Min-value Max-value # Bin Coord Count Count/Total In the first line, ID is replaced with the fix-ID. The second line describes the six values that are printed at the first of each section of output. The third describes the 4 values printed for each bin in the histogram. ---------- Restart, fix_modify, output, run start/stop, minimize info """""""""""""""""""""""""""""""""""""""""""""""""""""""""" No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options are relevant to this fix. This fix produces a global vector and global array which can be accessed by various :ref:`output commands <howto_15>`. The values can only be accessed on timesteps that are multiples of *Nfreq* since that is when a histogram is generated. The global vector has 4 values: * 1 = total counts in the histogram * 2 = values that were not histogrammed (see *beyond* keyword) * 3 = min value of all input values, including ones not histogrammed * 4 = max value of all input values, including ones not histogrammed The global array has # of rows = Nbins and # of columns = 3. The first column has the bin coordinate, the 2nd column has the count of values in that histogram bin, and the 3rd column has the bin count divided by the total count (not including missing counts), so that the values in the 3rd column sum to 1.0. The vector and array values calculated by this fix are all treated as intensive. If this is not the case, e.g. due to histogramming per-atom input values, then you will need to account for that when interpreting the values produced by this fix. No parameter of this fix can be used with the *start/stop* keywords of the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. Restrictions """""""""""" none Related commands """""""""""""""" :doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/time <fix_ave_time>`, :doc:`variable <variable>`, :doc:`fix ave/correlate <fix_ave_correlate>`, **Default:** none The option defaults are mode = scalar, ave = one, start = 0, no file output, beyond = ignore, and title 1,2,3 = strings as described above. .. _lws: http://lammps.sandia.gov .. _ld: Manual.html .. _lc: Section_commands.html#comm diff --git a/doc/html/_sources/fix_ave_time.txt b/doc/html/_sources/fix_ave_time.txt index eb86e81cf..a52578bde 100644 --- a/doc/html/_sources/fix_ave_time.txt +++ b/doc/html/_sources/fix_ave_time.txt @@ -1,353 +1,369 @@ .. index:: fix ave/time fix ave/time command ==================== Syntax """""" .. parsed-literal:: fix ID group-ID ave/time Nevery Nrepeat Nfreq value1 value2 ... keyword args ... * ID, group-ID are documented in :doc:`fix <fix>` command * ave/time = style name of this fix command * Nevery = use input values every this many timesteps * Nrepeat = # of times to use input values for calculating averages * Nfreq = calculate averages every this many timesteps * one or more input values can be listed * value = c_ID, c_ID[N], f_ID, f_ID[N], v_name .. parsed-literal:: - c_ID = global scalar, vector, or array calculated by a compute with ID - c_ID[I] = Ith component of global vector or Ith column of global array calculated by a compute with ID - f_ID = global scalar, vector, or array calculated by a fix with ID - f_ID[I] = Ith component of global vector or Ith column of global array calculated by a fix with ID + c_ID = global scalar or vector calculated by a compute with ID + c_ID[I] = Ith component of global vector or Ith column of global array calculated by a compute with ID, I can include wildcard (see below) + f_ID = global scalar or vector calculated by a fix with ID + f_ID[I] = Ith component of global vector or Ith column of global array calculated by a fix with ID, I can include wildcard (see below) v_name = value(s) calculated by an equal-style or vector-style variable with name v_name[I] = value calculated by a vector-style variable with name * zero or more keyword/arg pairs may be appended * keyword = *mode* or *file* or *ave* or *start* or *off* or *overwrite* or *title1* or *title2* or *title3* .. parsed-literal:: *mode* arg = *scalar* or *vector* scalar = all input values are global scalars vector = all input values are global vectors or global arrays *ave* args = *one* or *running* or *window M* one = output a new average value every Nfreq steps running = output cummulative average of all previous Nfreq steps window M = output average of M most recent Nfreq steps *start* args = Nstart Nstart = start averaging on this timestep *off* arg = M = do not average this value M = value # from 1 to Nvalues *file* arg = filename filename = name of file to output time averages to *overwrite* arg = none = overwrite output file with only latest output *format* arg = string string = C-style format string *title1* arg = string string = text to print as 1st line of output file *title2* arg = string string = text to print as 2nd line of output file *title3* arg = string string = text to print as 3rd line of output file, only for vector mode Examples """""""" .. parsed-literal:: fix 1 all ave/time 100 5 1000 c_myTemp c_thermo_temp file temp.profile fix 1 all ave/time 100 5 1000 c_thermo_press[2] ave window 20 & title1 "My output values" + fix 1 all ave/time 100 5 1000 c_thermo_press[*] fix 1 all ave/time 1 100 1000 f_indent f_indent[1] file temp.indent off 1 Description """"""""""" Use one or more global values as inputs every few timesteps, and average them over longer timescales. The resulting averages can be used by other :ref:`output commands <howto_15>` such as :doc:`thermo_style custom <thermo_style>`, and can also be written to a file. Note that if no time averaging is done, this command can be used as a convenient way to simply output one or more global values to a file. The group specified with this command is ignored. However, note that specified values may represent calculations performed by computes and fixes which store their own "group" definitions. Each listed value can be the result of a :doc:`compute <compute>` or :doc:`fix <fix>` or the evaluation of an equal-style or vector-style :doc:`variable <variable>`. 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 :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/atom <fix_ave_atom>`, or :doc:`fix ave/histo <fix_ave_histo>` commands. If you wish to sum a per-atom quantity into a single global quantity, see the :doc:`compute reduce <compute_reduce>` command. :doc:`Computes <compute>` that produce global quantities are those which do not have the word *atom* in their style name. Only a few :doc:`fixes <fix>` produce global quantities. See the doc pages for individual fixes for info on which ones produce such values. :doc:`Variables <variable>` of style *equal* and *vector* are the only ones that can be used with this fix. Variables of style *atom* cannot be used, since they produce per-atom values. -The input values must either be all scalars or all vectors (or -arrays), depending on the setting of the *mode* keyword. In both -cases, the averaging is performed independently on each input value. -I.e. each input scalar is averaged independently and each element of -each input vector (or array) is averaged independently. - -If *mode* = vector, then the input values may either be vectors or -arrays and all must be the same "length", which is the length of the -vector or number of rows in the array. If a global array is listed, -then it is the same as if the individual columns of the array had been -listed one by one. E.g. these 2 fix ave/time commands are equivalent, -since the :doc:`compute rdf <compute_rdf>` command creates, in this -case, a global array with 3 columns, each of length 50: +The input values must either be all scalars or all vectors depending +on the setting of the *mode* keyword. In both cases, the averaging is +performed independently on each input value. I.e. each input scalar +is averaged independently or each element of each input vector is +averaged independently. + +If *mode* = scalar, then the input values must be scalars, or vectors +with a bracketed term appended, indicating the Ith value of the vector +is used. + +If *mode* = vector, then the input values must be vectors, or arrays +with a bracketed term appended, indicating the Ith column of the array +is used. All vectors must be the same length, which is the length of +the vector or number of rows in the array. + +Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form "*" or "*n" or "n*" or +"m*n". If N = the size of the vector (for *mode* = scalar) or the +number of columns in the array (for *mode* = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive). + +Using a wildcard is the same as if the individual elements of the +vector or columns of the array had been listed one by one. E.g. these +2 fix ave/time commands are equivalent, since the :doc:`compute rdf <compute_rdf>` command creates, in this case, a global array +with 3 columns, each of length 50: .. parsed-literal:: compute myRDF all rdf 50 1 2 - fix 1 all ave/time 100 1 100 c_myRDF file tmp1.rdf mode vector + fix 1 all ave/time 100 1 100 c_myRDF[*] file tmp1.rdf mode vector fix 2 all ave/time 100 1 100 c_myRDF[1] c_myRDF[2] c_myRDF[3] file tmp2.rdf mode vector ---------- The *Nevery*\ , *Nrepeat*\ , and *Nfreq* arguments specify on what timesteps the input values will be used in order to contribute to the average. The final averaged quantities are generated on timesteps that are a mlutiple of *Nfreq*\ . The average is over *Nrepeat* quantities, computed in the preceding portion of the simulation every *Nevery* timesteps. *Nfreq* must be a multiple of *Nevery* and *Nevery* must be non-zero even if *Nrepeat* is 1. Also, the timesteps contributing to the average value cannot overlap, i.e. Nrepeat*Nevery can not exceed Nfreq. For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on timesteps 90,92,94,96,98,100 will be used to compute the final average on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time averaging is done; values are simply generated on timesteps 100,200,etc. ---------- If a value begins with "c_", a compute ID must follow which has been previously defined in the input script. If *mode* = scalar, then if no bracketed term is appended, the global scalar calculated by the compute is used. If a bracketed term is appended, the Ith element of the global vector calculated by the compute is used. If *mode* = vector, then if no bracketed term is appended, the global vector -calculated by the compute is used. Or if the compute calculates an -array, all of the columns of the global array are used as if they had -been specified as individual vectors (see description above). If a -bracketed term is appended, the Ith column of the global array -calculated by the compute is used. +calculated by the compute is used. If a bracketed term is appended, +the Ith column of the global array calculated by the compute is used. +See the discussion above for how I can be specified with a wildcard +asterisk to effectively specify multiple values. Note that there is a :doc:`compute reduce <compute_reduce>` command which can sum per-atom quantities into a global scalar or vector which can thus be accessed by fix ave/time. Or it can be a compute defined not in your input script, but by :doc:`thermodynamic output <thermo_style>` or other fixes such as :doc:`fix nvt <fix_nh>` or :doc:`fix temp/rescale <fix_temp_rescale>`. 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 :doc:`add them to LAMMPS <Section_modify>`. If a value begins with "f_", a fix ID must follow which has been previously defined in the input script. If *mode* = scalar, then if no bracketed term is appended, the global scalar calculated by the fix is used. If a bracketed term is appended, the Ith element of the global vector calculated by the fix is used. If *mode* = vector, then if no bracketed term is appended, the global vector calculated by the -fix is used. Or if the fix calculates an array, all of the columns of -the global array are used as if they had been specified as individual -vectors (see description above). If a bracketed term is appended, the -Ith column of the global array calculated by the fix is used. +fix is used. If a bracketed term is appended, the Ith column of the +global array calculated by the fix is used. See the discussion above +for how I can be specified with a wildcard asterisk to effectively +specify multiple values. 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 :doc:`add them to LAMMPS <Section_modify>`. If a value begins with "v_", a variable name must follow which has been previously defined in the input script. If *mode* = scalar, then only equal-style or vector-style variables can be used, which both produce global values. In this mode, a vector-style variable requires a bracketed term to specify the Ith element of the vector calculated by the variable. If *mode* = vector, then only a vector-style variable can be used, without a bracketed term. See the :doc:`variable <variable>` command for details. Note that variables of style *equal* and *vector* define a formula which can reference individual atom properties or thermodynamic keywords, or they can invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of specifying quantities to time average. ---------- Additional optional keywords also affect the operation of this fix. If the *mode* keyword is set to *scalar*\ , then all input values must be global scalars, or elements of global vectors. If the *mode* keyword is set to *vector*\ , then all input values must be global vectors, or columns of global arrays. They can also be global arrays, which are converted into a series of global vectors (one per column), as explained above. The *ave* keyword determines how the values produced every *Nfreq* steps are averaged with values produced on previous steps that were multiples of *Nfreq*\ , before they are accessed by another output command or written to a file. If the *ave* setting is *one*\ , then the values produced on timesteps that are multiples of *Nfreq* are independent of each other; they are output as-is without further averaging. If the *ave* setting is *running*\ , then the values produced on timesteps that are multiples of *Nfreq* are summed and averaged in a cummulative sense before being output. Each output value is thus the average of the value produced on that timestep with all preceding values. This running average begins when the fix is defined; it can only be restarted by deleting the fix via the :doc:`unfix <unfix>` command, or by re-defining the fix by re-specifying it. If the *ave* setting is *window*\ , then the values produced on timesteps that are multiples of *Nfreq* are summed and averaged within a moving "window" of time, so that the last M values are used to produce the output. E.g. if M = 3 and Nfreq = 1000, then the output on step 10000 will be the average of the individual values on steps 8000,9000,10000. Outputs on early steps will average over less than M values if they are not available. The *start* keyword specifies what timestep averaging will begin on. The default is step 0. Often input values can be 0.0 at time 0, so setting *start* to a larger value can avoid including a 0.0 in a running or windowed average. The *off* keyword can be used to flag any of the input values. If a value is flagged, it will not be time averaged. Instead the most recent input value will always be stored and output. This is useful if one of more of the inputs produced by a compute or fix or variable are effectively constant or are simply current values. E.g. they are being written to a file with other time-averaged values for purposes of creating well-formatted output. The *file* keyword allows a filename to be specified. Every *Nfreq* steps, one quantity or vector of quantities is written to the file for each input value specified in the fix ave/time command. For *mode* = scalar, this means a single line is written each time output is performed. Thus the file ends up to be a series of lines, i.e. one column of numbers for each input value. For *mode* = vector, an array of numbers is written each time output is performed. The number of rows is the length of the input vectors, and the number of columns is the number of values. Thus the file ends up to be a series of these array sections. The *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 *format* keyword sets the numeric format of each value when it is printed to a file via the *file* keyword. Note that all values are floating point quantities. The default format is %g. You can specify a higher precision if desired, e.g. %20.16g. The *title1* and *title2* and *title3* keywords allow specification of the strings that will be printed as the first 2 or 3 lines of the output file, assuming the *file* keyword was used. LAMMPS uses default values for each of these, so they do not need to be specified. By default, these header lines are as follows for *mode* = scalar: .. parsed-literal:: # Time-averaged data for fix ID # TimeStep value1 value2 ... In the first line, ID is replaced with the fix-ID. In the second line the values are replaced with the appropriate fields from the fix ave/time command. There is no third line in the header of the file, so the *title3* setting is ignored when *mode* = scalar. By default, these header lines are as follows for *mode* = vector: .. parsed-literal:: # Time-averaged data for fix ID # TimeStep Number-of-rows # Row value1 value2 ... In the first line, ID is replaced with the fix-ID. The second line describes the two values that are printed at the first of each section of output. In the third line the values are replaced with the appropriate fields from the fix ave/time command. ---------- Restart, fix_modify, output, run start/stop, minimize info """""""""""""""""""""""""""""""""""""""""""""""""""""""""" No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options are relevant to this fix. This fix produces a global scalar or global vector or global array which can be accessed by various :ref:`output commands <howto_15>`. The values can only be accessed on timesteps that are multiples of *Nfreq* since that is when averaging is performed. A scalar is produced if only a single input value is averaged and *mode* = scalar. A vector is produced if multiple input values are averaged for *mode* = scalar, or a single input value for *mode* = vector. In the first case, the length of the vector is the number of inputs. In the second case, the length of the vector is the same as the length of the input vector. An array is produced if multiple input values are averaged and *mode* = vector. The global array has # of rows = length of the input vectors and # of columns = number of inputs. If the fix prouduces a scalar or vector, then the scalar and each element of the vector can be either "intensive" or "extensive", depending on whether the values contributing to the scalar or vector element are "intensive" or "extensive". If the fix produces an array, then all elements in the array must be the same, either "intensive" or "extensive". If a compute or fix provides the value being time averaged, then the compute or fix determines whether the value is intensive or extensive; see the doc page for that compute or fix for further info. Values produced by a variable are treated as intensive. No parameter of this fix can be used with the *start/stop* keywords of the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`. Restrictions """""""""""" none Related commands """""""""""""""" :doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/histo <fix_ave_histo>`, :doc:`variable <variable>`, :doc:`fix ave/correlate <fix_ave_correlate>`, Default """"""" The option defaults are mode = scalar, ave = one, start = 0, no file output, format = %g, title 1,2,3 = strings as described above, and no off settings for any input values. .. _lws: http://lammps.sandia.gov .. _ld: Manual.html .. _lc: Section_commands.html#comm diff --git a/doc/html/_sources/thermo_style.txt b/doc/html/_sources/thermo_style.txt index f13302811..53e9a727d 100644 --- a/doc/html/_sources/thermo_style.txt +++ b/doc/html/_sources/thermo_style.txt @@ -1,405 +1,442 @@ .. index:: thermo_style thermo_style command ==================== Syntax """""" .. parsed-literal:: thermo_style style args * style = *one* or *multi* or *custom* * args = list of arguments for a particular style .. parsed-literal:: *one* args = none *multi* args = none *custom* args = list of keywords possible keywords = step, elapsed, elaplong, dt, time, cpu, tpcpu, spcpu, cpuremain, part, timeremain, atoms, temp, press, pe, ke, etotal, enthalpy, evdwl, ecoul, epair, ebond, eangle, edihed, eimp, emol, elong, etail, vol, density, lx, ly, lz, xlo, xhi, ylo, yhi, zlo, zhi, xy, xz, yz, xlat, ylat, zlat, bonds, angles, dihedrals, impropers, pxx, pyy, pzz, pxy, pxz, pyz, fmax, fnorm, nbuild, ndanger, cella, cellb, cellc, cellalpha, cellbeta, cellgamma, c_ID, c_ID[I], c_ID[I][J], f_ID, f_ID[I], f_ID[I][J], v_name, v_name[I] step = timestep elapsed = timesteps since start of this run elaplong = timesteps since start of initial run in a series of runs dt = timestep size time = simulation time cpu = elapsed CPU time in seconds tpcpu = time per CPU second spcpu = timesteps per CPU second cpuremain = estimated CPU time remaining in run part = which partition (0 to Npartition-1) this is timeremain = remaining time in seconds on timer timeout. atoms = # of atoms temp = temperature press = pressure pe = total potential energy ke = kinetic energy etotal = total energy (pe + ke) enthalpy = enthalpy (etotal + press*vol) evdwl = VanderWaal pairwise energy (includes etail) ecoul = Coulombic pairwise energy epair = pairwise energy (evdwl + ecoul + elong) ebond = bond energy eangle = angle energy edihed = dihedral energy eimp = improper energy emol = molecular energy (ebond + eangle + edihed + eimp) elong = long-range kspace energy etail = VanderWaal energy long-range tail correction vol = volume density = mass density of system lx,ly,lz = box lengths in x,y,z xlo,xhi,ylo,yhi,zlo,zhi = box boundaries xy,xz,yz = box tilt for triclinic (non-orthogonal) simulation boxes xlat,ylat,zlat = lattice spacings as calculated by :doc:`lattice <lattice>` command bonds,angles,dihedrals,impropers = # of these interactions defined pxx,pyy,pzz,pxy,pxz,pyz = 6 components of pressure tensor fmax = max component of force on any atom in any dimension fnorm = length of force vector for all atoms nbuild = # of neighbor list builds ndanger = # of dangerous neighbor list builds cella,cellb,cellc = periodic cell lattice constants a,b,c cellalpha, cellbeta, cellgamma = periodic cell angles alpha,beta,gamma c_ID = global scalar value calculated by a compute with ID - c_ID[I] = Ith component of global vector calculated by a compute with ID + c_ID[I] = Ith component of global vector calculated by a compute with ID, I can include wildcard (see below) c_ID[I][J] = I,J component of global array calculated by a compute with ID f_ID = global scalar value calculated by a fix with ID - f_ID[I] = Ith component of global vector calculated by a fix with ID + f_ID[I] = Ith component of global vector calculated by a fix with ID, I can include wildcard (see below) f_ID[I][J] = I,J component of global array calculated by a fix with ID v_name = value calculated by an equal-style variable with name v_name[I] = value calculated by a vector-style variable with name Examples """""""" .. parsed-literal:: thermo_style multi thermo_style custom step temp pe etotal press vol thermo_style custom step temp etotal c_myTemp v_abc + thermo_style custom step temp etotal c_myTemp[*] v_abc Description """"""""""" Set the style and content for printing thermodynamic data to the screen and log file. Style *one* prints a one-line summary of thermodynamic info that is the equivalent of "thermo_style custom step temp epair emol etotal press". The line contains only numeric values. Style *multi* prints a multiple-line listing of thermodynamic info that is the equivalent of "thermo_style custom etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press". The listing contains numeric values and a string ID for each quantity. Style *custom* is the most general setting and allows you to specify which of the keywords listed above you want printed on each thermodynamic timestep. Note that the keywords c_ID, f_ID, v_name are references to :doc:`computes <compute>`, :doc:`fixes <fix>`, and equal-style `variables <variable.html">`_ that have been defined elsewhere in the input script or can even be new styles which users have added to LAMMPS (see the :doc:`Section_modify <Section_modify>` section of the documentation). Thus the *custom* style provides a flexible means of outputting essentially any desired quantity as a simulation proceeds. All styles except *custom* have *vol* appended to their list of outputs if the simulation box volume changes during the simulation. The values printed by the various keywords are instantaneous values, calculated on the current timestep. Time-averaged quantities, which include values from previous timesteps, can be output by using the f_ID keyword and accessing a fix that does time-averaging such as the :doc:`fix ave/time <fix_ave_time>` command. Options invoked by the :doc:`thermo_modify <thermo_modify>` command can be used to set the one- or multi-line format of the print-out, the normalization of thermodynamic output (total values versus per-atom values for extensive quantities (ones which scale with the number of atoms in the system), and the numeric precision of each printed value. .. note:: When you use a "thermo_style" command, all thermodynamic settings are restored to their default values, including those previously set by a :doc:`thermo_modify <thermo_modify>` command. Thus if your input script specifies a thermo_style command, you should use the thermo_modify command after it. ---------- +Note that for values from a compute or fix, the bracketed index I used +to index a vector, as in *c_ID[I]* or *f_ID[I]*\ , can be specified +using a wildcard asterisk with the index to effectively specify +multiple values. This takes the form "*" or "*n" or "n*" or "m*n". +If N = the size of the vector (for *mode* = scalar) or the number of +columns in the array (for *mode* = vector), then an asterisk with no +numeric values means all indices from 1 to N. A leading asterisk +means all indices from 1 to n (inclusive). A trailing asterisk means +all indices from n to N (inclusive). A middle asterisk means all +indices from m to n (inclusive). + +Using a wildcard is the same as if the individual elements of the +vector had been listed one by one. E.g. these 2 thermo_style commands +are equivalent, since the :doc:`compute temp <compute_temp>` command +creates a global vector with 6 values. + +.. parsed-literal:: + + compute myTemp all temp + thermo_style custom step temp etotal c_myTemp[*] + thermo_style custom step temp etotal & + c_myTemp[1] c_myTemp[2] c_myTemp[3] & + c_myTemp[4] c_myTemp[5] c_myTemp[6] + + +---------- + + Several of the thermodynamic quantities require a temperature to be computed: "temp", "press", "ke", "etotal", "enthalpy", "pxx", etc. By default this is done by using a *temperature* compute which is created when LAMMPS starts up, as if this command had been issued: .. parsed-literal:: compute thermo_temp all temp See the :doc:`compute temp <compute_temp>` command for details. Note that the ID of this compute is *thermo_temp* and the group is *all*\ . You can change the attributes of this temperature (e.g. its degrees-of-freedom) via the :doc:`compute_modify <compute_modify>` command. Alternatively, you can directly assign a new compute (that calculates temperature) which you have defined, to be used for calculating any thermodynamic quantity that requires a temperature. This is done via the :doc:`thermo_modify <thermo_modify>` command. Several of the thermodynamic quantities require a pressure to be computed: "press", "enthalpy", "pxx", etc. By default this is done by using a *pressure* compute which is created when LAMMPS starts up, as if this command had been issued: .. parsed-literal:: compute thermo_press all pressure thermo_temp See the :doc:`compute pressure <compute_pressure>` command for details. Note that the ID of this compute is *thermo_press* and the group is *all*\ . You can change the attributes of this pressure via the :doc:`compute_modify <compute_modify>` command. Alternatively, you can directly assign a new compute (that calculates pressure) which you have defined, to be used for calculating any thermodynamic quantity that requires a pressure. This is done via the :doc:`thermo_modify <thermo_modify>` command. Several of the thermodynamic quantities require a potential energy to be computed: "pe", "etotal", "ebond", etc. This is done by using a *pe* compute which is created when LAMMPS starts up, as if this command had been issued: .. parsed-literal:: compute thermo_pe all pe See the :doc:`compute pe <compute_pe>` command for details. Note that the ID of this compute is *thermo_pe* and the group is *all*\ . You can change the attributes of this potential energy via the :doc:`compute_modify <compute_modify>` command. ---------- The kinetic energy of the system *ke* is inferred from the temperature of the system with 1/2 Kb T of energy for each degree of freedom. Thus, using different :doc:`compute commands <compute>` for calculating temperature, via the :doc:`thermo_modify temp <thermo_modify>` command, may yield different kinetic energies, since different computes that calculate temperature can subtract out different non-thermal components of velocity and/or include different degrees of freedom (translational, rotational, etc). The potential energy of the system *pe* will include contributions from fixes if the :doc:`fix_modify thermo <fix_modify>` option is set for a fix that calculates such a contribution. For example, the :doc:`fix wall/lj93 <fix_wall>` fix calculates the energy of atoms interacting with the wall. See the doc pages for "individual fixes" to see which ones contribute. A long-range tail correction *etail* for the VanderWaal pairwise energy will be non-zero only if the :doc:`pair_modify tail <pair_modify>` option is turned on. The *etail* contribution is included in *evdwl*\ , *epair*\ , *pe*\ , and *etotal*\ , and the corresponding tail correction to the pressure is included in *press* and *pxx*\ , *pyy*\ , etc. ---------- The *step*\ , *elapsed*\ , and *elaplong* keywords refer to timestep count. *Step* is the current timestep, or iteration count when a :doc:`minimization <minimize>` is being performed. *Elapsed* is the number of timesteps elapsed since the beginning of this run. *Elaplong* is the number of timesteps elapsed since the beginning of an initial run in a series of runs. See the *start* and *stop* keywords for the :doc:`run <run>` for info on how to invoke a series of runs that keep track of an initial starting time. If these keywords are not used, then *elapsed* and *elaplong* are the same value. The *dt* keyword is the current timestep size in time :doc:`units <units>`. The *time* keyword is the current elapsed simulation time, also in time :doc:`units <units>`, which is simply (step*dt) if the timestep size has not changed and the timestep has not been reset. If the timestep has changed (e.g. via :doc:`fix dt/reset <fix_dt_reset>`) or the timestep has been reset (e.g. via the "reset_timestep" command), then the simulation time is effectively a cummulative value up to the current point. The *cpu* keyword is elapsed CPU seconds since the beginning of this run. The *tpcpu* and *spcpu* keywords are measures of how fast your simulation is currently running. The *tpcpu* keyword is simulation time per CPU second, where simulation time is in time :doc:`units <units>`. E.g. for metal units, the *tpcpu* value would be picoseconds per CPU second. The *spcpu* keyword is the number of timesteps per CPU second. Both quantities are on-the-fly metrics, measured relative to the last time they were invoked. Thus if you are printing out thermodyamic output every 100 timesteps, the two keywords will continually output the time and timestep rate for the last 100 steps. The *tpcpu* keyword does not attempt to track any changes in timestep size, e.g. due to using the :doc:`fix dt/reset <fix_dt_reset>` command. The *cpuremain* keyword estimates the CPU time remaining in the current run, based on the time elapsed thus far. It will only be a good estimate if the CPU time/timestep for the rest of the run is similar to the preceding timesteps. On the initial timestep the value will be 0.0 since there is no history to estimate from. For a minimization run performed by the "minimize" command, the estimate is based on the *maxiter* parameter, assuming the minimization will proceed for the maximum number of allowed iterations. The *part* keyword is useful for multi-replica or multi-partition simulations to indicate which partition this output and this file corresponds to, or for use in a :doc:`variable <variable>` to append to a filename for output specific to this partition. See :ref:`Section_start 7 <start_7>` of the manual for details on running in multi-partition mode. The *timeremain* keyword returns the remaining seconds when a timeout has been configured via the :doc:`timer timeout <timer>` command. If the timeout timer is inactive, the value of this keyword is 0.0 and if the timer is expired, it is negative. This allows for example to exit loops cleanly, if the timeout is expired with: .. parsed-literal:: if "$(timeremain) < 0.0" then "quit 0" The *fmax* and *fnorm* keywords are useful for monitoring the progress of an :doc:`energy minimization <minimize>`. The *fmax* keyword calculates the maximum force in any dimension on any atom in the system, or the infinity-norm of the force vector for the system. The *fnorm* keyword calculates the 2-norm or length of the force vector. The *nbuild* and *ndanger* keywords are useful for monitoring neighbor list builds during a run. Note that both these values are also printed with the end-of-run statistics. The *nbuild* keyword is the number of re-builds during the current run. The *ndanger* keyword is the number of re-builds that LAMMPS considered potentially "dangerous". If atom movement triggered neighbor list rebuilding (see the :doc:`neigh_modify <neigh_modify>` 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. The keywords *cella*\ , *cellb*\ , *cellc*\ , *cellalpha*\ , *cellbeta*\ , *cellgamma*\ , correspond to the usual crystallographic quantities that define the periodic unit cell of a crystal. See :ref:`this section <howto_12>` of the doc pages for a geometric description of triclinic periodic cells, including a precise defintion of these quantities in terms of the internal LAMMPS cell dimensions *lx*\ , *ly*\ , *lz*\ , *yz*\ , *xz*\ , *xy*\ . ---------- The *c_ID* and *c_ID[I]* and *c_ID[I][J]* keywords allow global values calculated by a compute to be output. As discussed on the :doc:`compute <compute>` doc page, computes can calculate global, per-atom, or local values. Only global values can be referenced by -this command. However, per-atom compute values can be referenced in a -:doc:`variable <variable>` and the variable referenced by thermo_style -custom, as discussed below. +this command. However, per-atom compute values for an individual atom +can be referenced in a :doc:`variable <variable>` and the variable +referenced by thermo_style custom, as discussed below. See the +discussion above for how the I in *c_ID[I]* can be specified with a +wildcard asterisk to effectively specify multiple values from a global +compute vector. The ID in the keyword should be replaced by the actual ID of a compute that has been defined elsewhere in the input script. See the :doc:`compute <compute>` command for details. If the compute calculates a global scalar, vector, or array, then the keyword formats with 0, 1, or 2 brackets will reference a scalar value from the compute. Note that some computes calculate "intensive" global quantities like temperature; others calculate "extensive" global quantities like kinetic energy that are summed over all atoms in the compute group. Intensive quantities are printed directly without normalization by thermo_style custom. Extensive quantities may be normalized by the total number of atoms in the simulation (NOT the number of atoms in the compute group) when output, depending on the :doc:`thermo_modify norm <thermo_modify>` option being used. The *f_ID* and *f_ID[I]* and *f_ID[I][J]* keywords allow global values calculated by a fix to be output. As discussed on the :doc:`fix <fix>` doc page, fixes can calculate global, per-atom, or local values. Only global values can be referenced by this command. -However, per-atom fix values can be referenced in a -:doc:`variable <variable>` and the variable referenced by thermo_style -custom, as discussed below. +However, per-atom fix values can be referenced for an individual atom +in a :doc:`variable <variable>` and the variable referenced by +thermo_style custom, as discussed below. See the discussion above for +how the I in *f_ID[I]* can be specified with a wildcard asterisk to +effectively specify multiple values from a global fix vector. The ID in the keyword should be replaced by the actual ID of a fix that has been defined elsewhere in the input script. See the :doc:`fix <fix>` command for details. If the fix calculates a global scalar, vector, or array, then the keyword formats with 0, 1, or 2 brackets will reference a scalar value from the fix. Note that some fixes calculate "intensive" global quantities like timestep size; others calculate "extensive" global quantities like energy that are summed over all atoms in the fix group. Intensive quantities are printed directly without normalization by thermo_style custom. Extensive quantities may be normalized by the total number of atoms in the simulation (NOT the number of atoms in the fix group) when output, depending on the :doc:`thermo_modify norm <thermo_modify>` option being used. The *v_name* keyword allow the current value of a variable to be output. The name in the keyword should be replaced by the variable name that has been defined elsewhere in the input script. Only equal-style and vector-style variables can be referenced; the latter requires a bracketed term to specify the Ith element of the vector -calculated by the variable. See the :doc:`variable <variable>` command -for details. Variables of style *equal* and *vector* define a formula -which can reference per-atom properties or thermodynamic keywords, or -they can invoke other computes, fixes, or variables when evaluated, so -this is a very general means of creating thermodynamic output. +calculated by the variable. However, an atom-style variable can be +referenced for an individual atom by an equal-style variable and that +variable referenced. See the :doc:`variable <variable>` command for +details. Variables of style *equal* and *vector* and *atom* define a +formula which can reference per-atom properties or thermodynamic +keywords, or they can invoke other computes, fixes, or variables when +evaluated, so this is a very general means of creating thermodynamic +output. Note that equal-style and vector-style variables are assumed to produce "intensive" global quantities, which are thus printed as-is, without normalization by thermo_style custom. You can include a division by "natoms" in the variable formula if this is not the case. ---------- Restrictions """""""""""" This command must come after the simulation box is defined by a :doc:`read_data <read_data>`, :doc:`read_restart <read_restart>`, or :doc:`create_box <create_box>` command. Related commands """""""""""""""" :doc:`thermo <thermo>`, :doc:`thermo_modify <thermo_modify>`, :doc:`fix_modify <fix_modify>`, :doc:`compute temp <compute_temp>`, :doc:`compute pressure <compute_pressure>` Default """"""" .. parsed-literal:: thermo_style one .. _lws: http://lammps.sandia.gov .. _ld: Manual.html .. _lc: Section_commands.html#comm diff --git a/doc/html/compute_reduce.html b/doc/html/compute_reduce.html index dab289b42..292fa820c 100644 --- a/doc/html/compute_reduce.html +++ b/doc/html/compute_reduce.html @@ -1,361 +1,386 @@ <!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 reduce command — LAMMPS documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & 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 reduce 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-reduce-command"> <span id="index-0"></span><h1>compute reduce command</h1> </div> <div class="section" id="compute-reduce-region-command"> <h1>compute reduce/region command</h1> <div class="section" id="syntax"> <h2>Syntax</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">ID</span> <span class="n">group</span><span class="o">-</span><span class="n">ID</span> <span class="n">style</span> <span class="n">arg</span> <span class="n">mode</span> <span class="n">input1</span> <span class="n">input2</span> <span class="o">...</span> <span class="n">keyword</span> <span class="n">args</span> <span class="o">...</span> </pre></div> </div> <ul class="simple"> <li>ID, group-ID are documented in <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> command</li> <li>style = <em>reduce</em> or <em>reduce/region</em></li> </ul> <pre class="literal-block"> <em>reduce</em> arg = none <em>reduce/region</em> arg = region-ID region-ID = ID of region to use for choosing atoms </pre> <ul class="simple"> <li>mode = <em>sum</em> or <em>min</em> or <em>max</em> or <em>ave</em> or <em>sumsq</em> or <em>avesq</em></li> <li>one or more inputs can be listed</li> <li>input = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[N], f_ID, f_ID[N], v_name</li> </ul> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">,</span><span class="n">vx</span><span class="p">,</span><span class="n">vy</span><span class="p">,</span><span class="n">vz</span><span class="p">,</span><span class="n">fx</span><span class="p">,</span><span class="n">fy</span><span class="p">,</span><span class="n">fz</span> <span class="o">=</span> <span class="n">atom</span> <span class="n">attribute</span> <span class="p">(</span><span class="n">position</span><span class="p">,</span> <span class="n">velocity</span><span class="p">,</span> <span class="n">force</span> <span class="n">component</span><span class="p">)</span> <span class="n">c_ID</span> <span class="o">=</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="ow">or</span> <span class="n">local</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span> -<span class="n">c_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="ow">or</span> <span class="n">local</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span> +<span class="n">c_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="ow">or</span> <span class="n">local</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span><span class="p">,</span> <span class="n">I</span> <span class="n">can</span> <span class="n">include</span> <span class="n">wildcard</span> <span class="p">(</span><span class="n">see</span> <span class="n">below</span><span class="p">)</span> <span class="n">f_ID</span> <span class="o">=</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="ow">or</span> <span class="n">local</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span> -<span class="n">f_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="ow">or</span> <span class="n">local</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span> +<span class="n">f_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="ow">or</span> <span class="n">local</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span><span class="p">,</span> <span class="n">I</span> <span class="n">can</span> <span class="n">include</span> <span class="n">wildcard</span> <span class="p">(</span><span class="n">see</span> <span class="n">below</span><span class="p">)</span> <span class="n">v_name</span> <span class="o">=</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">an</span> <span class="n">atom</span><span class="o">-</span><span class="n">style</span> <span class="n">variable</span> <span class="k">with</span> <span class="n">name</span> </pre></div> </div> <ul class="simple"> <li>zero or more keyword/args pairs may be appended</li> <li>keyword = <em>replace</em></li> </ul> <pre class="literal-block"> <em>replace</em> args = vec1 vec2 vec1 = reduced value from this input vector will be replaced vec2 = replace it with vec1[N] where N is index of max/min value from vec2 </pre> </div> <div class="section" id="examples"> <h2>Examples</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">reduce</span> <span class="nb">sum</span> <span class="n">c_force</span> <span class="n">compute</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">reduce</span><span class="o">/</span><span class="n">region</span> <span class="n">subbox</span> <span class="nb">sum</span> <span class="n">c_force</span> <span class="n">compute</span> <span class="mi">2</span> <span class="nb">all</span> <span class="n">reduce</span> <span class="nb">min</span> <span class="n">c_press</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">f_ave</span> <span class="n">v_myKE</span> +<span class="n">compute</span> <span class="mi">2</span> <span class="nb">all</span> <span class="n">reduce</span> <span class="nb">min</span> <span class="n">c_press</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> <span class="n">f_ave</span> <span class="n">v_myKE</span> <span class="n">compute</span> <span class="mi">3</span> <span class="n">fluid</span> <span class="n">reduce</span> <span class="nb">max</span> <span class="n">c_index</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_index</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">c_dist</span> <span class="n">replace</span> <span class="mi">1</span> <span class="mi">3</span> <span class="n">replace</span> <span class="mi">2</span> <span class="mi">3</span> </pre></div> </div> </div> <div class="section" id="description"> <h2>Description</h2> <p>Define a calculation that “reduces” one or more vector inputs into scalar values, one per listed input. The inputs can be per-atom or local quantities; they cannot be global quantities. Atom attributes are per-atom quantities, <a class="reference internal" href="compute.html"><span class="doc">computes</span></a> and <a class="reference internal" href="fix.html"><span class="doc">fixes</span></a> may generate any of the three kinds of quantities, and <a class="reference internal" href="variable.html"><span class="doc">atom-style variables</span></a> generate per-atom quantities. See the <a class="reference internal" href="variable.html"><span class="doc">variable</span></a> command and its special functions which can perform the same operations as the compute reduce command on global vectors.</p> <p>The reduction operation is specified by the <em>mode</em> setting. The <em>sum</em> option adds the values in the vector into a global total. The <em>min</em> or <em>max</em> options find the minimum or maximum value across all vector values. The <em>ave</em> setting adds the vector values into a global total, then divides by the number of values in the vector. The <em>sumsq</em> option sums the square of the values in the vector into a global total. The <em>avesq</em> setting does the same as <em>sumsq</em>, then divdes the sum of squares by the number of values. The last two options can be useful for calculating the variance of some quantity, e.g. variance = sumsq - ave^2.</p> <p>Each listed input is operated on independently. For per-atom inputs, the group specified with this command means only atoms within the group contribute to the result. For per-atom inputs, if the compute reduce/region command is used, the atoms must also currently be within the region. Note that an input that produces per-atom quantities may define its own group which affects the quantities it returns. For example, if a compute is used as an input which generates a per-atom vector, it will generate values of 0.0 for atoms that are not in the group specified for that compute.</p> <p>Each listed input can be an atom attribute (position, velocity, force component) or can be the result of a <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> or <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> or the evaluation of an atom-style <a class="reference internal" href="variable.html"><span class="doc">variable</span></a>.</p> +<p>Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form “*” or “<em>n” or “n</em>” or +“m*n”. If N = the size of the vector (for <em>mode</em> = scalar) or the +number of columns in the array (for <em>mode</em> = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive).</p> +<p>Using a wildcard is the same as if the individual columns of the array +had been listed one by one. E.g. these 2 compute reduce commands are +equivalent, since the <span class="xref doc">compute stress/atom</span> +command creates a per-atom array with 6 columns:</p> +<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">myPress</span> <span class="nb">all</span> <span class="n">stress</span><span class="o">/</span><span class="n">atom</span> <span class="n">NULL</span> +<span class="n">compute</span> <span class="mi">2</span> <span class="nb">all</span> <span class="n">reduce</span> <span class="nb">min</span> <span class="n">myPress</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> +<span class="n">compute</span> <span class="mi">2</span> <span class="nb">all</span> <span class="n">reduce</span> <span class="nb">min</span> <span class="n">myPress</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">myPress</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">myPress</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">&</span> + <span class="n">myPress</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="n">myPress</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="n">myPress</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span> +</pre></div> +</div> +<hr class="docutils" /> <p>The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are self-explanatory. Note that other atom attributes can be used as inputs to this fix by using the <a class="reference internal" href="compute_property_atom.html"><span class="doc">compute property/atom</span></a> command and then specifying an input value from that compute.</p> <p>If a value begins with “<a href="#id1"><span class="problematic" id="id2">c_</span></a>”, a compute ID must follow which has been previously defined in the input script. Computes can generate per-atom or local quantities. See the individual <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> doc page for details. If no bracketed integer is appended, the vector calculated by the compute is used. If a bracketed integer is appended, the Ith column of the array calculated by the compute is used. Users can also write code for their own -compute styles and <a class="reference internal" href="Section_modify.html"><span class="doc">add them to LAMMPS</span></a>.</p> +compute styles and <a class="reference internal" href="Section_modify.html"><span class="doc">add them to LAMMPS</span></a>. See the +discussion above for how I can be specified with a wildcard asterisk +to effectively specify multiple values.</p> <p>If a value begins with “<a href="#id3"><span class="problematic" id="id4">f_</span></a>”, a fix ID must follow which has been previously defined in the input script. Fixes can generate per-atom or local quantities. See the individual <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> doc page for details. Note that some fixes only produce their values on certain timesteps, which must be compatible with when compute reduce references the values, else an error results. If no bracketed integer is appended, the vector calculated by the fix is used. If a bracketed integer is appended, the Ith column of the array calculated by the fix -is used. Users can also write code for their own fix style and <a class="reference internal" href="Section_modify.html"><span class="doc">add them to LAMMPS</span></a>.</p> +is used. Users can also write code for their own fix style and <a class="reference internal" href="Section_modify.html"><span class="doc">add them to LAMMPS</span></a>. See the discussion above for how +I can be specified with a wildcard asterisk to effectively specify +multiple values.</p> <p>If a value begins with “<a href="#id5"><span class="problematic" id="id6">v_</span></a>”, a variable name must follow which has been previously defined in the input script. It must be an <a class="reference internal" href="variable.html"><span class="doc">atom-style variable</span></a>. Atom-style variables can reference thermodynamic keywords and various per-atom attributes, or invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of generating per-atom quantities to reduce.</p> <hr class="docutils" /> <p>If the <em>replace</em> keyword is used, two indices <em>vec1</em> and <em>vec2</em> are specified, where each index ranges from 1 to the # of input values. The replace keyword can only be used if the <em>mode</em> is <em>min</em> or <em>max</em>. It works as follows. A min/max is computed as usual on the <em>vec2</em> input vector. The index N of that value within <em>vec2</em> is also stored. Then, instead of performing a min/max on the <em>vec1</em> input vector, the stored index is used to select the Nth element of the <em>vec1</em> vector.</p> <p>Thus, for example, if you wish to use this compute to find the bond with maximum stretch, you can do it as follows:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="mi">1</span> <span class="nb">all</span> <span class="nb">property</span><span class="o">/</span><span class="n">local</span> <span class="n">batom1</span> <span class="n">batom2</span> <span class="n">compute</span> <span class="mi">2</span> <span class="nb">all</span> <span class="n">bond</span><span class="o">/</span><span class="n">local</span> <span class="n">dist</span> <span class="n">compute</span> <span class="mi">3</span> <span class="nb">all</span> <span class="n">reduce</span> <span class="nb">max</span> <span class="n">c_1</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_1</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">c_2</span> <span class="n">replace</span> <span class="mi">1</span> <span class="mi">3</span> <span class="n">replace</span> <span class="mi">2</span> <span class="mi">3</span> <span class="n">thermo_style</span> <span class="n">custom</span> <span class="n">step</span> <span class="n">temp</span> <span class="n">c_3</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_3</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">c_3</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> </pre></div> </div> <p>The first two input values in the compute reduce command are vectors with the IDs of the 2 atoms in each bond, using the <a class="reference internal" href="compute_property_local.html"><span class="doc">compute property/local</span></a> command. The last input value is bond distance, using the <a class="reference internal" href="compute_bond_local.html"><span class="doc">compute bond/local</span></a> command. Instead of taking the max of the two atom ID vectors, which does not yield useful information in this context, the <em>replace</em> keywords will extract the atom IDs for the two atoms in the bond of maximum stretch. These atom IDs and the bond stretch will be printed with thermodynamic output.</p> <hr class="docutils" /> <p>If a single input is specified this compute produces a global scalar value. If multiple inputs are specified, this compute produces a global vector of values, the length of which is equal to the number of inputs specified.</p> <p>As discussed below, for the <em>sum</em> and <em>sumsq</em> modes, the value(s) produced by this compute are all “extensive”, meaning their value scales linearly with the number of atoms involved. If normalized values are desired, this compute can be accessed by the <a class="reference internal" href="thermo_style.html"><span class="doc">thermo_style custom</span></a> command with <a class="reference internal" href="thermo_modify.html"><span class="doc">thermo_modify norm yes</span></a> set as an option. Or it can be accessed by a <a class="reference internal" href="variable.html"><span class="doc">variable</span></a> that divides by the appropriate atom count.</p> <hr class="docutils" /> <p><strong>Output info:</strong></p> <p>This compute calculates a global scalar if a single input value is specified or a global vector of length N where N is the number of inputs, and which can be accessed by indices 1 to N. These values can be used by any command that uses global scalar or vector values from a compute as input. See <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">Section_howto 15</span></a> for an overview of LAMMPS output options.</p> <p>All the scalar or vector values calculated by this compute are “intensive”, except when the <em>sum</em> or <em>sumsq</em> modes are used on per-atom or local vectors, in which case the calculated values are “extensive”.</p> <p>The scalar or vector values will be in whatever <a class="reference internal" href="units.html"><span class="doc">units</span></a> the quantities being reduced are in.</p> </div> <div class="section" id="restrictions"> <h2>Restrictions</h2> <blockquote> <div>none</div></blockquote> </div> <div class="section" id="related-commands"> <h2>Related commands</h2> <p><a class="reference internal" href="compute.html"><span class="doc">compute</span></a>, <a class="reference internal" href="fix.html"><span class="doc">fix</span></a>, <a class="reference internal" href="variable.html"><span class="doc">variable</span></a></p> <p><strong>Default:</strong> none</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright 2013 Sandia Corporation. </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/html/dump.html b/doc/html/dump.html index 645ae1814..fc5f4c89c 100644 --- a/doc/html/dump.html +++ b/doc/html/dump.html @@ -1,779 +1,810 @@ <!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>dump command — LAMMPS documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & 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>dump 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="dump-command"> <span id="index-0"></span><h1>dump command</h1> </div> <div class="section" id="dump-custom-vtk-command"> <h1><a class="reference internal" href="dump_custom_vtk.html"><span class="doc">dump custom/vtk</span></a> command</h1> </div> <div class="section" id="dump-h5md-command"> <h1><a class="reference internal" href="dump_h5md.html"><span class="doc">dump h5md</span></a> command</h1> </div> <div class="section" id="dump-image-command"> <h1><a class="reference internal" href="dump_image.html"><span class="doc">dump image</span></a> command</h1> </div> <div class="section" id="dump-movie-command"> <h1><a class="reference internal" href="dump_image.html"><span class="doc">dump movie</span></a> command</h1> </div> <div class="section" id="dump-molfile-command"> <h1><a class="reference internal" href="dump_molfile.html"><span class="doc">dump molfile</span></a> command</h1> <div class="section" id="syntax"> <h2>Syntax</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">dump</span> <span class="n">ID</span> <span class="n">group</span><span class="o">-</span><span class="n">ID</span> <span class="n">style</span> <span class="n">N</span> <span class="n">file</span> <span class="n">args</span> </pre></div> </div> <ul class="simple"> <li>ID = user-assigned name for the dump</li> <li>group-ID = ID of the group of atoms to be dumped</li> <li>style = <em>atom</em> or <em>atom/gz</em> or <em>atom/mpiio</em> or <em>cfg</em> or <em>cfg/gz</em> or <em>cfg/mpiio</em> or <em>dcd</em> or <em>xtc</em> or <em>xyz</em> or <em>xyz/gz</em> or <em>xyz/mpiio</em> or <em>h5md</em> or <em>image</em> or <em>movie</em> or <em>molfile</em> or <em>local</em> or <em>custom</em> or <em>custom/gz</em> or <em>custom/mpiio</em></li> <li>N = dump every this many timesteps</li> <li>file = name of file to write dump info to</li> <li>args = list of arguments for a particular style</li> </ul> <pre class="literal-block"> <em>atom</em> args = none <em>atom/gz</em> args = none <em>atom/mpiio</em> args = none <em>cfg</em> args = same as <em>custom</em> args, see below <em>cfg/gz</em> args = same as <em>custom</em> args, see below <em>cfg/mpiio</em> args = same as <em>custom</em> args, see below <em>dcd</em> args = none <em>xtc</em> args = none <em>xyz</em> args = none </pre> <pre class="literal-block"> <em>xyz/gz</em> args = none </pre> <pre class="literal-block"> <em>xyz/mpiio</em> args = none </pre> <pre class="literal-block"> <em>custom/vtk</em> args = similar to custom args below, discussed on <a class="reference internal" href="dump_custom_vtk.html"><span class="doc">dump custom/vtk</span></a> doc page </pre> <pre class="literal-block"> <em>h5md</em> args = discussed on <a class="reference internal" href="dump_h5md.html"><span class="doc">dump h5md</span></a> doc page </pre> <pre class="literal-block"> <em>image</em> args = discussed on <a class="reference internal" href="dump_image.html"><span class="doc">dump image</span></a> doc page </pre> <pre class="literal-block"> <em>movie</em> args = discussed on <a class="reference internal" href="dump_image.html"><span class="doc">dump image</span></a> doc page </pre> <pre class="literal-block"> <em>molfile</em> args = discussed on <a class="reference internal" href="dump_molfile.html"><span class="doc">dump molfile</span></a> doc page </pre> <pre class="literal-block"> <em>local</em> args = list of local attributes - possible attributes = index, c_ID, c_ID[N], f_ID, f_ID[N] + possible attributes = index, c_ID, c_ID[I], f_ID, f_ID[I] index = enumeration of local values c_ID = local vector calculated by a compute with ID - c_ID[N] = Nth column of local array calculated by a compute with ID + c_ID[I] = Ith column of local array calculated by a compute with ID, I can include wildcard (see below) f_ID = local vector calculated by a fix with ID - f_ID[N] = Nth column of local array calculated by a fix with ID + f_ID[I] = Ith column of local array calculated by a fix with ID, I can include wildcard (see below) </pre> <pre class="literal-block"> <em>custom</em> or <em>custom/gz</em> or <em>custom/mpiio</em> args = list of atom attributes possible attributes = id, mol, proc, procp1, type, element, mass, x, y, z, xs, ys, zs, xu, yu, zu, xsu, ysu, zsu, ix, iy, iz, vx, vy, vz, fx, fy, fz, q, mux, muy, muz, mu, radius, diameter, omegax, omegay, omegaz, angmomx, angmomy, angmomz, tqx, tqy, tqz, c_ID, c_ID[N], f_ID, f_ID[N], v_name </pre> <pre class="literal-block"> id = atom ID mol = molecule ID proc = ID of processor that owns atom procp1 = ID+1 of processor that owns atom type = atom type element = name of atom element, as defined by <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify</span></a> command mass = atom mass x,y,z = unscaled atom coordinates xs,ys,zs = scaled atom coordinates xu,yu,zu = unwrapped atom coordinates xsu,ysu,zsu = scaled unwrapped atom coordinates ix,iy,iz = box image that the atom is in vx,vy,vz = atom velocities fx,fy,fz = forces on atoms q = atom charge mux,muy,muz = orientation of dipole moment of atom mu = magnitude of dipole moment of atom radius,diameter = radius,diameter of spherical particle omegax,omegay,omegaz = angular velocity of spherical particle angmomx,angmomy,angmomz = angular momentum of aspherical particle tqx,tqy,tqz = torque on finite-size particles c_ID = per-atom vector calculated by a compute with ID -c_ID[N] = Nth column of per-atom array calculated by a compute with ID +c_ID[I] = Ith column of per-atom array calculated by a compute with ID, I can include wildcard (see below) f_ID = per-atom vector calculated by a fix with ID -f_ID[N] = Nth column of per-atom array calculated by a fix with ID +f_ID[I] = Ith column of per-atom array calculated by a fix with ID, I can include wildcard (see below) v_name = per-atom vector calculated by an atom-style variable with name d_name = per-atom floating point vector with name, managed by fix property/atom i_name = per-atom integer vector with name, managed by fix property/atom </pre> </div> <div class="section" id="examples"> <h2>Examples</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">dump</span> <span class="n">myDump</span> <span class="nb">all</span> <span class="n">atom</span> <span class="mi">100</span> <span class="n">dump</span><span class="o">.</span><span class="n">atom</span> <span class="n">dump</span> <span class="n">myDump</span> <span class="nb">all</span> <span class="n">atom</span><span class="o">/</span><span class="n">mpiio</span> <span class="mi">100</span> <span class="n">dump</span><span class="o">.</span><span class="n">atom</span><span class="o">.</span><span class="n">mpiio</span> <span class="n">dump</span> <span class="n">myDump</span> <span class="nb">all</span> <span class="n">atom</span><span class="o">/</span><span class="n">gz</span> <span class="mi">100</span> <span class="n">dump</span><span class="o">.</span><span class="n">atom</span><span class="o">.</span><span class="n">gz</span> <span class="n">dump</span> <span class="mi">2</span> <span class="n">subgroup</span> <span class="n">atom</span> <span class="mi">50</span> <span class="n">dump</span><span class="o">.</span><span class="n">run</span><span class="o">.</span><span class="n">bin</span> <span class="n">dump</span> <span class="mi">2</span> <span class="n">subgroup</span> <span class="n">atom</span> <span class="mi">50</span> <span class="n">dump</span><span class="o">.</span><span class="n">run</span><span class="o">.</span><span class="n">mpiio</span><span class="o">.</span><span class="n">bin</span> <span class="n">dump</span> <span class="mi">4</span><span class="n">a</span> <span class="nb">all</span> <span class="n">custom</span> <span class="mi">100</span> <span class="n">dump</span><span class="o">.</span><span class="n">myforce</span><span class="o">.*</span> <span class="nb">id</span> <span class="nb">type</span> <span class="n">x</span> <span class="n">y</span> <span class="n">vx</span> <span class="n">fx</span> <span class="n">dump</span> <span class="mi">4</span><span class="n">b</span> <span class="n">flow</span> <span class="n">custom</span> <span class="mi">100</span> <span class="n">dump</span><span class="o">.%.</span><span class="n">myforce</span> <span class="nb">id</span> <span class="nb">type</span> <span class="n">c_myF</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="n">v_ke</span> +<span class="n">dump</span> <span class="mi">4</span><span class="n">b</span> <span class="n">flow</span> <span class="n">custom</span> <span class="mi">100</span> <span class="n">dump</span><span class="o">.%.</span><span class="n">myforce</span> <span class="nb">id</span> <span class="nb">type</span> <span class="n">c_myF</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> <span class="n">v_ke</span> <span class="n">dump</span> <span class="mi">2</span> <span class="n">inner</span> <span class="n">cfg</span> <span class="mi">10</span> <span class="n">dump</span><span class="o">.</span><span class="n">snap</span><span class="o">.*.</span><span class="n">cfg</span> <span class="n">mass</span> <span class="nb">type</span> <span class="n">xs</span> <span class="n">ys</span> <span class="n">zs</span> <span class="n">vx</span> <span class="n">vy</span> <span class="n">vz</span> <span class="n">dump</span> <span class="n">snap</span> <span class="nb">all</span> <span class="n">cfg</span> <span class="mi">100</span> <span class="n">dump</span><span class="o">.</span><span class="n">config</span><span class="o">.*.</span><span class="n">cfg</span> <span class="n">mass</span> <span class="nb">type</span> <span class="n">xs</span> <span class="n">ys</span> <span class="n">zs</span> <span class="nb">id</span> <span class="nb">type</span> <span class="n">c_Stress</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">dump</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">xtc</span> <span class="mi">1000</span> <span class="n">file</span><span class="o">.</span><span class="n">xtc</span> </pre></div> </div> </div> <div class="section" id="description"> <h2>Description</h2> <p>Dump a snapshot of atom quantities to one or more files every N timesteps in one of several styles. The <em>image</em> and <em>movie</em> styles are the exception: the <em>image</em> style renders a JPG, PNG, or PPM image file of the atom configuration every N timesteps while the <em>movie</em> style combines and compresses them into a movie file; both are discussed in detail on the <a class="reference internal" href="dump_image.html"><span class="doc">dump image</span></a> doc page. The timesteps on which dump output is written can also be controlled by a variable. See the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify every</span></a> command.</p> <p>Only information for atoms in the specified group is dumped. The <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify thresh and region</span></a> commands can also alter what atoms are included. Not all styles support all these options; see details below.</p> <p>As described below, the filename determines the kind of output (text or binary or gzipped, one big file or one per timestep, one big file or multiple smaller files).</p> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Because periodic boundary conditions are enforced only on timesteps when neighbor lists are rebuilt, the coordinates of an atom written to a dump file may be slightly outside the simulation box.</p> </div> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Unless the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify sort</span></a> option is invoked, the lines of atom information written to dump files (typically one line per atom) will be in an indeterminate order for each snapshot. This is even true when running on a single processor, if the <a class="reference internal" href="atom_modify.html"><span class="doc">atom_modify sort</span></a> option is on, which it is by default. In this case atoms are re-ordered periodically during a simulation, due to spatial sorting. It is also true when running in parallel, because data for a single snapshot is collected from multiple processors, each of which owns a subset of the atoms.</p> </div> <p>For the <em>atom</em>, <em>custom</em>, <em>cfg</em>, and <em>local</em> styles, sorting is off by default. For the <em>dcd</em>, <em>xtc</em>, <em>xyz</em>, and <em>molfile</em> styles, sorting by atom ID is on by default. See the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify</span></a> doc page for details.</p> <p>The <em>atom/gz</em>, <em>cfg/gz</em>, <em>custom/gz</em>, and <em>xyz/gz</em> styles are identical in command syntax to the corresponding styles without “gz”, however, they generate compressed files using the zlib library. Thus the filename suffix ”.gz” is mandatory. This is an alternative approach to writing compressed files via a pipe, as done by the regular dump styles, which may be required on clusters where the interface to the high-speed network disallows using the fork() library call (which is needed for a pipe). For the remainder of this doc page, you should thus consider the <em>atom</em> and <em>atom/gz</em> styles (etc) to be inter-changeable, with the exception of the required filename suffix.</p> <p>As explained below, the <em>atom/mpiio</em>, <em>cfg/mpiio</em>, <em>custom/mpiio</em>, and <em>xyz/mpiio</em> styles are identical in command syntax and in the format of the dump files they create, to the corresponding styles without “mpiio”, except the single dump file they produce is written in parallel via the MPI-IO library. For the remainder of this doc page, you should thus consider the <em>atom</em> and <em>atom/mpiio</em> styles (etc) to be inter-changeable. The one exception is how the filename is specified for the MPI-IO styles, as explained below.</p> <hr class="docutils" /> <p>The <em>style</em> keyword determines what atom quantities are written to the file and in what format. Settings made via the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify</span></a> command can also alter the format of individual values and the file itself.</p> <p>The <em>atom</em>, <em>local</em>, and <em>custom</em> styles create files in a simple text format that is self-explanatory when viewing a dump file. Many of the LAMMPS <a class="reference internal" href="Section_tools.html"><span class="doc">post-processing tools</span></a>, including <a class="reference external" href="http://www.sandia.gov/~sjplimp/pizza.html">Pizza.py</a>, work with this format, as does the <a class="reference internal" href="rerun.html"><span class="doc">rerun</span></a> command.</p> <p>For post-processing purposes the <em>atom</em>, <em>local</em>, and <em>custom</em> text files are self-describing in the following sense.</p> <p>The dimensions of the simulation box are included in each snapshot. For an orthogonal simulation box this information is is formatted as:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ITEM</span><span class="p">:</span> <span class="n">BOX</span> <span class="n">BOUNDS</span> <span class="n">xx</span> <span class="n">yy</span> <span class="n">zz</span> <span class="n">xlo</span> <span class="n">xhi</span> <span class="n">ylo</span> <span class="n">yhi</span> <span class="n">zlo</span> <span class="n">zhi</span> </pre></div> </div> <p>where xlo,xhi are the maximum extents of the simulation box in the x-dimension, and similarly for y and z. The “xx yy zz” represent 6 characters that encode the style of boundary for each of the 6 simulation box boundaries (xlo,xhi and ylo,yhi and zlo,zhi). Each of the 6 characters is either p = periodic, f = fixed, s = shrink wrap, or m = shrink wrapped with a minimum value. See the <a class="reference internal" href="boundary.html"><span class="doc">boundary</span></a> command for details.</p> <p>For triclinic simulation boxes (non-orthogonal), an orthogonal bounding box which encloses the triclinic simulation box is output, along with the 3 tilt factors (xy, xz, yz) of the triclinic box, formatted as follows:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ITEM</span><span class="p">:</span> <span class="n">BOX</span> <span class="n">BOUNDS</span> <span class="n">xy</span> <span class="n">xz</span> <span class="n">yz</span> <span class="n">xx</span> <span class="n">yy</span> <span class="n">zz</span> <span class="n">xlo_bound</span> <span class="n">xhi_bound</span> <span class="n">xy</span> <span class="n">ylo_bound</span> <span class="n">yhi_bound</span> <span class="n">xz</span> <span class="n">zlo_bound</span> <span class="n">zhi_bound</span> <span class="n">yz</span> </pre></div> </div> <p>The presence of the text “xy xz yz” in the ITEM line indicates that the 3 tilt factors will be included on each of the 3 following lines. This bounding box is convenient for many visualization programs. The meaning of the 6 character flags for “xx yy zz” is the same as above.</p> <p>Note that the first two numbers on each line are now xlo_bound instead of xlo, etc, since they repesent a bounding box. See <a class="reference internal" href="Section_howto.html#howto-12"><span class="std std-ref">this section</span></a> of the doc pages for a geometric description of triclinic boxes, as defined by LAMMPS, simple formulas for how the 6 bounding box extents (xlo_bound,xhi_bound,etc) are calculated from the triclinic parameters, and how to transform those parameters to and from other commonly used triclinic representations.</p> <p>The “ITEM: ATOMS” line in each snapshot lists column descriptors for the per-atom lines that follow. For example, the descriptors would be “id type xs ys zs” for the default <em>atom</em> style, and would be the atom attributes you specify in the dump command for the <em>custom</em> style.</p> <p>For style <em>atom</em>, atom coordinates are written to the file, along with the atom ID and atom type. By default, atom coords are written in a scaled format (from 0 to 1). I.e. an x value of 0.25 means the atom is at a location 1/4 of the distance from xlo to xhi of the box boundaries. The format can be changed to unscaled coords via the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify</span></a> settings. Image flags can also be added for each atom via dump_modify.</p> <p>Style <em>custom</em> allows you to specify a list of atom attributes to be written to the dump file for each atom. Possible attributes are listed above and will appear in the order specified. You cannot specify a quantity that is not defined for a particular simulation - such as <em>q</em> for atom style <em>bond</em>, since that atom style doesn’t assign charges. Dumps occur at the very end of a timestep, so atom attributes will include effects due to fixes that are applied during the timestep. An explanation of the possible dump custom attributes is given below.</p> <p>For style <em>local</em>, local output generated by <a class="reference internal" href="compute.html"><span class="doc">computes</span></a> and <a class="reference internal" href="fix.html"><span class="doc">fixes</span></a> is used to generate lines of output that is written to the dump file. This local data is typically calculated by each processor based on the atoms it owns, but there may be zero or more entities per atom, e.g. a list of bond distances. An explanation of the possible dump local attributes is given below. Note that by using input from the <a class="reference internal" href="compute_property_local.html"><span class="doc">compute property/local</span></a> command with dump local, it is possible to generate information on bonds, angles, etc that can be cut and pasted directly into a data file read by the <a class="reference internal" href="read_data.html"><span class="doc">read_data</span></a> command.</p> <p>Style <em>cfg</em> has the same command syntax as style <em>custom</em> and writes extended CFG format files, as used by the <a class="reference external" href="http://mt.seas.upenn.edu/Archive/Graphics/A">AtomEye</a> visualization package. Since the extended CFG format uses a single snapshot of the system per file, a wildcard “*” must be included in the filename, as discussed below. The list of atom attributes for style <em>cfg</em> must begin with either “mass type xs ys zs” or “mass type xsu ysu zsu” since these quantities are needed to write the CFG files in the appropriate format (though the “mass” and “type” fields do not appear explicitly in the file). Any remaining attributes will be stored as “auxiliary properties” in the CFG files. Note that you will typically want to use the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify element</span></a> command with CFG-formatted files, to associate element names with atom types, so that AtomEye can render atoms appropriately. When unwrapped coordinates <em>xsu</em>, <em>ysu</em>, and <em>zsu</em> are requested, the nominal AtomEye periodic cell dimensions are expanded by a large factor UNWRAPEXPAND = 10.0, which ensures atoms that are displayed correctly for up to UNWRAPEXPAND/2 periodic boundary crossings in any direction. Beyond this, AtomEye will rewrap the unwrapped coordinates. The expansion causes the atoms to be drawn farther away from the viewer, but it is easy to zoom the atoms closer, and the interatomic distances are unaffected.</p> <p>The <em>dcd</em> style writes DCD files, a standard atomic trajectory format used by the CHARMM, NAMD, and XPlor molecular dynamics packages. DCD files are binary and thus may not be portable to different machines. The number of atoms per snapshot cannot change with the <em>dcd</em> style. The <em>unwrap</em> option of the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify</span></a> command allows DCD coordinates to be written “unwrapped” by the image flags for each atom. Unwrapped means that if the atom has passed through a periodic boundary one or more times, the value is printed for what the coordinate would be if it had not been wrapped back into the periodic box. Note that these coordinates may thus be far outside the box size stored with the snapshot.</p> <p>The <em>xtc</em> style writes XTC files, a compressed trajectory format used by the GROMACS molecular dynamics package, and described <a class="reference external" href="http://manual.gromacs.org/current/online/xtc.html">here</a>. The precision used in XTC files can be adjusted via the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify</span></a> command. The default value of 1000 means that coordinates are stored to 1/1000 nanometer accuracy. XTC files are portable binary files written in the NFS XDR data format, so that any machine which supports XDR should be able to read them. The number of atoms per snapshot cannot change with the <em>xtc</em> style. The <em>unwrap</em> option of the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify</span></a> command allows XTC coordinates to be written “unwrapped” by the image flags for each atom. Unwrapped means that if the atom has passed thru a periodic boundary one or more times, the value is printed for what the coordinate would be if it had not been wrapped back into the periodic box. Note that these coordinates may thus be far outside the box size stored with the snapshot.</p> <p>The <em>xyz</em> style writes XYZ files, which is a simple text-based coordinate format that many codes can read. Specifically it has a line with the number of atoms, then a comment line that is usually ignored followed by one line per atom with the atom type and the x-, y-, and z-coordinate of that atom. You can use the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify element</span></a> option to change the output from using the (numerical) atom type to an element name (or some other label). This will help many visualization programs to guess bonds and colors.</p> <p>Note that <em>atom</em>, <em>custom</em>, <em>dcd</em>, <em>xtc</em>, and <em>xyz</em> style dump files can be read directly by <a class="reference external" href="http://www.ks.uiuc.edu/Research/vmd">VMD</a>, a popular molecular viewing program. See <a class="reference internal" href="Section_tools.html#vmd"><span class="std std-ref">Section tools</span></a> of the manual and the tools/lmp2vmd/README.txt file for more information about support in VMD for reading and visualizing LAMMPS dump files.</p> <hr class="docutils" /> <p>Dumps are performed on timesteps that are a multiple of N (including timestep 0) and on the last timestep of a minimization if the minimization converges. Note that this means a dump will not be performed on the initial timestep after the dump command is invoked, if the current timestep is not a multiple of N. This behavior can be changed via the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify first</span></a> command, which can also be useful if the dump command is invoked after a minimization ended on an arbitrary timestep. N can be changed between runs by using the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify every</span></a> command (not allowed for <em>dcd</em> style). The <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify every</span></a> command also allows a variable to be used to determine the sequence of timesteps on which dump files are written. In this mode a dump on the first timestep of a run will also not be written unless the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify first</span></a> command is used.</p> <p>The specified filename determines how the dump file(s) is written. The default is to write one large text file, which is opened when the dump command is invoked and closed when an <a class="reference internal" href="undump.html"><span class="doc">undump</span></a> command is used or when LAMMPS exits. For the <em>dcd</em> and <em>xtc</em> styles, this is a single large binary file.</p> <p>Dump filenames can contain two wildcard characters. If a “*” character appears in the filename, then one file per snapshot is written and the “*” character is replaced with the timestep value. For example, tmp.dump.* becomes tmp.dump.0, tmp.dump.10000, tmp.dump.20000, etc. This option is not available for the <em>dcd</em> and <em>xtc</em> styles. Note that the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify pad</span></a> command can be used to insure all timestep numbers are the same length (e.g. 00010), which can make it easier to read a series of dump files in order with some post-processing tools.</p> <p>If a “%” character appears in the filename, then each of P processors writes a portion of the dump file, and the “%” character is replaced with the processor ID from 0 to P-1. For example, tmp.dump.% becomes tmp.dump.0, tmp.dump.1, ... tmp.dump.P-1, etc. This creates smaller files and can be a fast mode of output on parallel machines that support parallel I/O for output. This option is not available for the <em>dcd</em>, <em>xtc</em>, and <em>xyz</em> styles.</p> <p>By default, P = the number of processors meaning one file per processor, but P can be set to a smaller value via the <em>nfile</em> or <em>fileper</em> keywords of the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify</span></a> command. These options can be the most efficient way of writing out dump files when running on large numbers of processors.</p> <p>Note that using the “*” and “%” characters together can produce a large number of small dump files!</p> <p>For the <em>atom/mpiio</em>, <em>cfg/mpiio</em>, <em>custom/mpiio</em>, and <em>xyz/mpiio</em> styles, a single dump file is written in parallel via the MPI-IO library, which is part of the MPI standard for versions 2.0 and above. Using MPI-IO requires two steps. First, build LAMMPS with its MPIIO package installed, e.g.</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">yes</span><span class="o">-</span><span class="n">mpiio</span> <span class="c1"># installs the MPIIO package</span> <span class="n">make</span> <span class="n">g</span><span class="o">++</span> <span class="c1"># build LAMMPS for your platform</span> </pre></div> </div> <p>Second, use a dump filename which contains ”.mpiio”. Note that it does not have to end in ”.mpiio”, just contain those characters. Unlike MPI-IO restart files, which must be both written and read using MPI-IO, the dump files produced by these MPI-IO styles are identical in format to the files produced by their non-MPI-IO style counterparts. This means you can write a dump file using MPI-IO and use the <a class="reference internal" href="read_dump.html"><span class="doc">read_dump</span></a> command or perform other post-processing, just as if the dump file was not written using MPI-IO.</p> <p>Note that MPI-IO dump files are one large file which all processors write to. You thus cannot use the “%” wildcard character described above in the filename since that specifies generation of multiple files. You can use the ”.bin” suffix described below in an MPI-IO dump file; again this file will be written in parallel and have the same binary format as if it were written without MPI-IO.</p> <p>If the filename ends with ”.bin”, the dump file (or files, if “*” or “%” is also used) is written in binary format. A binary dump file will be about the same size as a text version, but will typically write out much faster. Of course, when post-processing, you will need to convert it back to text format (see the <a class="reference internal" href="Section_tools.html#binary"><span class="std std-ref">binary2txt tool</span></a>) or write your own code to read the binary file. The format of the binary file can be understood by looking at the tools/binary2txt.cpp file. This option is only available for the <em>atom</em> and <em>custom</em> styles.</p> <p>If the filename ends with ”.gz”, the dump file (or files, if “*” or “%” is also used) is written in gzipped format. A gzipped dump file will be about 3x smaller than the text version, but will also take longer to write. This option is not available for the <em>dcd</em> and <em>xtc</em> styles.</p> <hr class="docutils" /> +<p>Note that in the discussion which follows, for styles which can +reference values from a compute or fix, like the <em>custom</em>, <em>cfg</em>, or +<em>local</em> styles, the bracketed index I can be specified using a +wildcard asterisk with the index to effectively specify multiple +values. This takes the form “*” or “<em>n” or “n</em>” or “m*n”. If N = the +size of the vector (for <em>mode</em> = scalar) or the number of columns in +the array (for <em>mode</em> = vector), then an asterisk with no numeric +values means all indices from 1 to N. A leading asterisk means all +indices from 1 to n (inclusive). A trailing asterisk means all +indices from n to N (inclusive). A middle asterisk means all indices +from m to n (inclusive).</p> +<p>Using a wildcard is the same as if the individual columns of the array +had been listed one by one. E.g. these 2 dump commands are +equivalent, since the <span class="xref doc">compute stress/atom</span> +command creates a per-atom array with 6 columns:</p> +<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">myPress</span> <span class="nb">all</span> <span class="n">stress</span><span class="o">/</span><span class="n">atom</span> <span class="n">NULL</span> +<span class="n">dump</span> <span class="mi">2</span> <span class="nb">all</span> <span class="n">custom</span> <span class="mi">100</span> <span class="n">tmp</span><span class="o">.</span><span class="n">dump</span> <span class="nb">id</span> <span class="n">myPress</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> +<span class="n">dump</span> <span class="mi">2</span> <span class="nb">all</span> <span class="n">custom</span> <span class="mi">100</span> <span class="n">tmp</span><span class="o">.</span><span class="n">dump</span> <span class="nb">id</span> <span class="n">myPress</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">myPress</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">myPress</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">&</span> + <span class="n">myPress</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="n">myPress</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="n">myPress</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span> +</pre></div> +</div> +<hr class="docutils" /> <p>This section explains the local attributes that can be specified as part of the <em>local</em> style.</p> <p>The <em>index</em> attribute can be used to generate an index number from 1 to N for each line written into the dump file, where N is the total number of local datums from all processors, or lines of output that will appear in the snapshot. Note that because data from different processors depend on what atoms they currently own, and atoms migrate between processor, there is no guarantee that the same index will be used for the same info (e.g. a particular bond) in successive snapshots.</p> -<p>The <em>c_ID</em> and <em>c_ID[N]</em> attributes allow local vectors or arrays +<p>The <em>c_ID</em> and <em>c_ID[I]</em> attributes allow local vectors or arrays calculated by a <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> to be output. The ID in the attribute should be replaced by the actual ID of the compute that has been defined previously in the input script. See the <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> command for details. There are computes for calculating local information such as indices, types, and energies for bonds and angles.</p> <p>Note that computes which calculate global or per-atom quantities, as opposed to local quantities, cannot be output in a dump local command. Instead, global quantities can be output by the <a class="reference internal" href="thermo_style.html"><span class="doc">thermo_style custom</span></a> command, and per-atom quantities can be output by the dump custom command.</p> <p>If <em>c_ID</em> is used as a attribute, then the local vector calculated by -the compute is printed. If <em>c_ID[N]</em> is used, then N must be in the -range from 1-M, which will print the Nth column of the M-length local -array calculated by the compute.</p> -<p>The <em>f_ID</em> and <em>f_ID[N]</em> attributes allow local vectors or arrays +the compute is printed. If <em>c_ID[I]</em> is used, then I must be in the +range from 1-M, which will print the Ith column of the local array +with M columns calculated by the compute. See the discussion above +for how I can be specified with a wildcard asterisk to effectively +specify multiple values.</p> +<p>The <em>f_ID</em> and <em>f_ID[I]</em> attributes allow local vectors or arrays calculated by a <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> to be output. The ID in the attribute should be replaced by the actual ID of the fix that has been defined previously in the input script.</p> <p>If <em>f_ID</em> is used as a attribute, then the local vector calculated by -the fix is printed. If <em>f_ID[N]</em> is used, then N must be in the -range from 1-M, which will print the Nth column of the M-length local -array calculated by the fix.</p> -<p>Here is an example of how to dump bond info for a system, -including the distance and energy of each bond:</p> +the fix is printed. If <em>f_ID[I]</em> is used, then I must be in the +range from 1-M, which will print the Ith column of the local with M +columns calculated by the fix. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values.</p> +<p>Here is an example of how to dump bond info for a system, including +the distance and energy of each bond:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="mi">1</span> <span class="nb">all</span> <span class="nb">property</span><span class="o">/</span><span class="n">local</span> <span class="n">batom1</span> <span class="n">batom2</span> <span class="n">btype</span> <span class="n">compute</span> <span class="mi">2</span> <span class="nb">all</span> <span class="n">bond</span><span class="o">/</span><span class="n">local</span> <span class="n">dist</span> <span class="n">eng</span> <span class="n">dump</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">local</span> <span class="mi">1000</span> <span class="n">tmp</span><span class="o">.</span><span class="n">dump</span> <span class="n">index</span> <span class="n">c_1</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_1</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">c_1</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="n">c_2</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_2</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> </pre></div> </div> <hr class="docutils" /> <p>This section explains the atom attributes that can be specified as part of the <em>custom</em> and <em>cfg</em> styles.</p> <p>The <em>id</em>, <em>mol</em>, <em>proc</em>, <em>procp1</em>, <em>type</em>, <em>element</em>, <em>mass</em>, <em>vx</em>, <em>vy</em>, <em>vz</em>, <em>fx</em>, <em>fy</em>, <em>fz</em>, <em>q</em> attributes are self-explanatory.</p> <p><em>Id</em> is the atom ID. <em>Mol</em> is the molecule ID, included in the data file for molecular systems. <em>Proc</em> is the ID of the processor (0 to Nprocs-1) that currently owns the atom. <em>Procp1</em> is the proc ID+1, which can be convenient in place of a <em>type</em> attribute (1 to Ntypes) for coloring atoms in a visualization program. <em>Type</em> is the atom type (1 to Ntypes). <em>Element</em> is typically the chemical name of an element, which you must assign to each type via the <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify element</span></a> command. More generally, it can be any string you wish to associated with an atom type. <em>Mass</em> is the atom mass. <em>Vx</em>, <em>vy</em>, <em>vz</em>, <em>fx</em>, <em>fy</em>, <em>fz</em>, and <em>q</em> are components of atom velocity and force and atomic charge.</p> <p>There are several options for outputting atom coordinates. The <em>x</em>, <em>y</em>, <em>z</em> attributes write atom coordinates “unscaled”, in the appropriate distance <a class="reference internal" href="units.html"><span class="doc">units</span></a> (Angstroms, sigma, etc). Use <em>xs</em>, <em>ys</em>, <em>zs</em> if you want the coordinates “scaled” to the box size, so that each value is 0.0 to 1.0. If the simulation box is triclinic (tilted), then all atom coords will still be between 0.0 and 1.0. I.e. actual unscaled (x,y,z) = xs*A + ys*B + zs*C, where (A,B,C) are the non-orthogonal vectors of the simulation box edges, as discussed in <a class="reference internal" href="Section_howto.html#howto-12"><span class="std std-ref">Section howto 6.12</span></a>.</p> <p>Use <em>xu</em>, <em>yu</em>, <em>zu</em> if you want the coordinates “unwrapped” by the image flags for each atom. Unwrapped means that if the atom has passed thru a periodic boundary one or more times, the value is printed for what the coordinate would be if it had not been wrapped back into the periodic box. Note that using <em>xu</em>, <em>yu</em>, <em>zu</em> means that the coordinate values may be far outside the box bounds printed with the snapshot. Using <em>xsu</em>, <em>ysu</em>, <em>zsu</em> is similar to using <em>xu</em>, <em>yu</em>, <em>zu</em>, except that the unwrapped coordinates are scaled by the box size. Atoms that have passed through a periodic boundary will have the corresponding cooordinate increased or decreased by 1.0.</p> <p>The image flags can be printed directly using the <em>ix</em>, <em>iy</em>, <em>iz</em> attributes. For periodic dimensions, they specify which image of the simulation box the atom is considered to be in. An image of 0 means it is inside the box as defined. A value of 2 means add 2 box lengths to get the true value. A value of -1 means subtract 1 box length to get the true value. LAMMPS updates these flags as atoms cross periodic boundaries during the simulation.</p> <p>The <em>mux</em>, <em>muy</em>, <em>muz</em> attributes are specific to dipolar systems defined with an atom style of <em>dipole</em>. They give the orientation of the atom’s point dipole moment. The <em>mu</em> attribute gives the magnitude of the atom’s dipole moment.</p> <p>The <em>radius</em> and <em>diameter</em> attributes are specific to spherical particles that have a finite size, such as those defined with an atom style of <em>sphere</em>.</p> <p>The <em>omegax</em>, <em>omegay</em>, and <em>omegaz</em> attributes are specific to finite-size spherical particles that have an angular velocity. Only certain atom styles, such as <em>sphere</em> define this quantity.</p> <p>The <em>angmomx</em>, <em>angmomy</em>, and <em>angmomz</em> attributes are specific to finite-size aspherical particles that have an angular momentum. Only the <em>ellipsoid</em> atom style defines this quantity.</p> <p>The <em>tqx</em>, <em>tqy</em>, <em>tqz</em> attributes are for finite-size particles that can sustain a rotational torque due to interactions with other particles.</p> -<p>The <em>c_ID</em> and <em>c_ID[N]</em> attributes allow per-atom vectors or arrays +<p>The <em>c_ID</em> and <em>c_ID[I]</em> attributes allow per-atom vectors or arrays calculated by a <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> to be output. The ID in the attribute should be replaced by the actual ID of the compute that has been defined previously in the input script. See the <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> command for details. There are computes for calculating the per-atom energy, stress, centro-symmetry parameter, and coordination number of individual atoms.</p> <p>Note that computes which calculate global or local quantities, as opposed to per-atom quantities, cannot be output in a dump custom command. Instead, global quantities can be output by the <a class="reference internal" href="thermo_style.html"><span class="doc">thermo_style custom</span></a> command, and local quantities can be output by the dump local command.</p> <p>If <em>c_ID</em> is used as a attribute, then the per-atom vector calculated -by the compute is printed. If <em>c_ID[N]</em> is used, then N must be in -the range from 1-M, which will print the Nth column of the M-length -per-atom array calculated by the compute.</p> -<p>The <em>f_ID</em> and <em>f_ID[N]</em> attributes allow vector or array per-atom +by the compute is printed. If <em>c_ID[I]</em> is used, then I must be in +the range from 1-M, which will print the Ith column of the per-atom +array with M columns calculated by the compute. See the discussion +above for how I can be specified with a wildcard asterisk to +effectively specify multiple values.</p> +<p>The <em>f_ID</em> and <em>f_ID[I]</em> attributes allow vector or array per-atom quantities calculated by a <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> to be output. The ID in the attribute should be replaced by the actual ID of the fix that has been defined previously in the input script. The <a class="reference internal" href="fix_ave_atom.html"><span class="doc">fix ave/atom</span></a> command is one that calculates per-atom quantities. Since it can time-average per-atom quantities produced by any <a class="reference internal" href="compute.html"><span class="doc">compute</span></a>, <a class="reference internal" href="fix.html"><span class="doc">fix</span></a>, or atom-style <a class="reference internal" href="variable.html"><span class="doc">variable</span></a>, this allows those time-averaged results to be written to a dump file.</p> <p>If <em>f_ID</em> is used as a attribute, then the per-atom vector calculated -by the fix is printed. If <em>f_ID[N]</em> is used, then N must be in the -range from 1-M, which will print the Nth column of the M-length -per-atom array calculated by the fix.</p> +by the fix is printed. If <em>f_ID[I]</em> is used, then I must be in the +range from 1-M, which will print the Ith column of the per-atom array +with M columns calculated by the fix. See the discussion above for +how I can be specified with a wildcard asterisk to effectively specify +multiple values.</p> <p>The <em>v_name</em> attribute allows per-atom vectors calculated by a <a class="reference internal" href="variable.html"><span class="doc">variable</span></a> to be output. The name in the attribute should be replaced by the actual name of the variable that has been defined previously in the input script. Only an atom-style variable can be referenced, since it is the only style that generates per-atom values. Variables of style <em>atom</em> can reference individual atom attributes, per-atom atom attributes, thermodynamic keywords, or invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of creating quantities to output to a dump file.</p> <p>The <em>d_name</em> and <em>i_name</em> attributes allow to output custom per atom floating point or integer properties that are managed by <a class="reference internal" href="fix_property_atom.html"><span class="doc">fix property/atom</span></a>.</p> <p>See <a class="reference internal" href="Section_modify.html"><span class="doc">Section_modify</span></a> of the manual for information on how to add new compute and fix styles to LAMMPS to calculate per-atom quantities which could then be output into dump files.</p> </div> <hr class="docutils" /> <div class="section" id="restrictions"> <h2>Restrictions</h2> <p>To write gzipped dump files, you must either compile LAMMPS with the -DLAMMPS_GZIP option or use the styles from the COMPRESS package - see the <a class="reference internal" href="Section_start.html#start-2"><span class="std std-ref">Making LAMMPS</span></a> section of the documentation.</p> <p>The <em>atom/gz</em>, <em>cfg/gz</em>, <em>custom/gz</em>, and <em>xyz/gz</em> styles are part of the COMPRESS package. They are only enabled if LAMMPS was built with that package. See the <a class="reference internal" href="Section_start.html#start-3"><span class="std std-ref">Making LAMMPS</span></a> section for more info.</p> <p>The <em>atom/mpiio</em>, <em>cfg/mpiio</em>, <em>custom/mpiio</em>, and <em>xyz/mpiio</em> styles are part of the MPIIO package. They are only enabled if LAMMPS was built with that package. See the <a class="reference internal" href="Section_start.html#start-3"><span class="std std-ref">Making LAMMPS</span></a> section for more info.</p> <p>The <em>xtc</em> style is part of the 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 class="std std-ref">Making LAMMPS</span></a> section for more info. This is because some machines may not support the low-level XDR data format that XTC files are written with, which will result in a compile-time error when a low-level include file is not found. Putting this style in a package makes it easy to exclude from a LAMMPS build for those machines. However, the MISC package also includes two compatibility header files and associated functions, which should be a suitable substitute on machines that do not have the appropriate native header files. This option can be invoked at build time by adding -DLAMMPS_XDR to the CCFLAGS variable in the appropriate low-level Makefile, e.g. src/MAKE/Makefile.foo. This compatibility mode has been tested successfully on Cray XT3/XT4/XT5 and IBM BlueGene/L machines and should also work on IBM BG/P, and Windows XP/Vista/7 machines.</p> </div> <div class="section" id="related-commands"> <h2>Related commands</h2> <p><a class="reference internal" href="dump_h5md.html"><span class="doc">dump h5md</span></a>, <a class="reference internal" href="dump_image.html"><span class="doc">dump image</span></a>, <a class="reference internal" href="dump_molfile.html"><span class="doc">dump molfile</span></a>, <a class="reference internal" href="dump_modify.html"><span class="doc">dump_modify</span></a>, <a class="reference internal" href="undump.html"><span class="doc">undump</span></a></p> </div> <div class="section" id="default"> <h2>Default</h2> <p>The defaults for the <em>image</em> and <em>movie</em> styles are listed on the <a class="reference internal" href="dump_image.html"><span class="doc">dump image</span></a> doc page.</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright 2013 Sandia Corporation. </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/html/fix_ave_atom.html b/doc/html/fix_ave_atom.html index 713d14744..8b348181c 100644 --- a/doc/html/fix_ave_atom.html +++ b/doc/html/fix_ave_atom.html @@ -1,320 +1,345 @@ <!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/atom command — LAMMPS documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & 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/atom 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-atom-command"> <span id="index-0"></span><h1>fix ave/atom command</h1> <div class="section" id="syntax"> <h2>Syntax</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="n">ID</span> <span class="n">group</span><span class="o">-</span><span class="n">ID</span> <span class="n">ave</span><span class="o">/</span><span class="n">atom</span> <span class="n">Nevery</span> <span class="n">Nrepeat</span> <span class="n">Nfreq</span> <span class="n">value1</span> <span class="n">value2</span> <span class="o">...</span> </pre></div> </div> <ul class="simple"> <li>ID, group-ID are documented in <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> command</li> <li>ave/atom = style name of this fix command</li> <li>Nevery = use input values every this many timesteps</li> <li>Nrepeat = # of times to use input values for calculating averages</li> <li>Nfreq = calculate averages every this many timesteps one or more input values can be listed</li> <li>value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[i], f_ID, f_ID[i], v_name</li> </ul> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">,</span><span class="n">vx</span><span class="p">,</span><span class="n">vy</span><span class="p">,</span><span class="n">vz</span><span class="p">,</span><span class="n">fx</span><span class="p">,</span><span class="n">fy</span><span class="p">,</span><span class="n">fz</span> <span class="o">=</span> <span class="n">atom</span> <span class="n">attribute</span> <span class="p">(</span><span class="n">position</span><span class="p">,</span> <span class="n">velocity</span><span class="p">,</span> <span class="n">force</span> <span class="n">component</span><span class="p">)</span> <span class="n">c_ID</span> <span class="o">=</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span> -<span class="n">c_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span> +<span class="n">c_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span><span class="p">,</span> <span class="n">I</span> <span class="n">can</span> <span class="n">include</span> <span class="n">wildcard</span> <span class="p">(</span><span class="n">see</span> <span class="n">below</span><span class="p">)</span> <span class="n">f_ID</span> <span class="o">=</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span> -<span class="n">f_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span> +<span class="n">f_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span><span class="p">,</span> <span class="n">I</span> <span class="n">can</span> <span class="n">include</span> <span class="n">wildcard</span> <span class="p">(</span><span class="n">see</span> <span class="n">below</span><span class="p">)</span> <span class="n">v_name</span> <span class="o">=</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">an</span> <span class="n">atom</span><span class="o">-</span><span class="n">style</span> <span class="n">variable</span> <span class="k">with</span> <span class="n">name</span> </pre></div> </div> </div> <div class="section" id="examples"> <h2>Examples</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">atom</span> <span class="mi">1</span> <span class="mi">100</span> <span class="mi">100</span> <span class="n">vx</span> <span class="n">vy</span> <span class="n">vz</span> <span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">atom</span> <span class="mi">10</span> <span class="mi">20</span> <span class="mi">1000</span> <span class="n">c_my_stress</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> +<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">atom</span> <span class="mi">10</span> <span class="mi">20</span> <span class="mi">1000</span> <span class="n">c_my_stress</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> </pre></div> </div> </div> <div class="section" id="description"> <h2>Description</h2> <p>Use one or more per-atom vectors as inputs every few timesteps, and average them atom by atom over longer timescales. The resulting per-atom averages can be used by other <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a> such as the <a class="reference internal" href="fix_ave_chunk.html"><span class="doc">fix ave/chunk</span></a> or <a class="reference internal" href="dump.html"><span class="doc">dump custom</span></a> commands.</p> <p>The group specified with the command means only atoms within the group have their averages computed. Results are set to 0.0 for atoms not in the group.</p> <p>Each input value can be an atom attribute (position, velocity, force component) or can be the result of a <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> or <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> or the evaluation of an atom-style <a class="reference internal" href="variable.html"><span class="doc">variable</span></a>. In the latter cases, the compute, fix, or variable must produce a per-atom vector, not a global quantity or local quantity. If you wish to time-average global quantities from a compute, fix, or variable, then see the <a class="reference internal" href="fix_ave_time.html"><span class="doc">fix ave/time</span></a> command.</p> +<p>Each per-atom value of each input vector is averaged independently.</p> <p><a class="reference internal" href="compute.html"><span class="doc">Computes</span></a> that produce per-atom vectors or arrays are those which have the word <em>atom</em> in their style name. See the doc pages for individual <a class="reference internal" href="fix.html"><span class="doc">fixes</span></a> to determine which ones produce per-atom vectors or arrays. <a class="reference internal" href="variable.html"><span class="doc">Variables</span></a> of style <em>atom</em> are the only ones that can be used with this fix since they produce per-atom vectors.</p> -<p>Each per-atom value of each input vector is averaged independently.</p> +<p>Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form “*” or “<em>n” or “n</em>” or +“m*n”. If N = the size of the vector (for <em>mode</em> = scalar) or the +number of columns in the array (for <em>mode</em> = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive).</p> +<p>Using a wildcard is the same as if the individual columns of the array +had been listed one by one. E.g. these 2 fix ave/atom commands are +equivalent, since the <span class="xref doc">compute stress/atom</span> +command creates a per-atom array with 6 columns:</p> +<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">my_stress</span> <span class="nb">all</span> <span class="n">stress</span><span class="o">/</span><span class="n">atom</span> <span class="n">NULL</span> +<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">atom</span> <span class="mi">10</span> <span class="mi">20</span> <span class="mi">1000</span> <span class="n">c_my_stress</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> +<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">atom</span> <span class="mi">10</span> <span class="mi">20</span> <span class="mi">1000</span> <span class="n">c_my_stress</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_my_stress</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&</span> + <span class="n">c_my_stress</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="n">c_my_stress</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">&</span> + <span class="n">c_my_stress</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="n">c_my_stress</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span> +</pre></div> +</div> <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 in order to contribute to the average. The final averaged quantities are generated on timesteps that are a multiple of <em>Nfreq</em>. The average is over <em>Nrepeat</em> quantities, computed in the preceding portion of the simulation every <em>Nevery</em> timesteps. <em>Nfreq</em> must be a multiple of <em>Nevery</em> and <em>Nevery</em> must be non-zero even if <em>Nrepeat</em> is 1. Also, the timesteps contributing to the average value cannot overlap, i.e. Nrepeat*Nevery can not exceed Nfreq.</p> <p>For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on timesteps 90,92,94,96,98,100 will be used to compute the final average on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on timestep 200, etc.</p> <hr class="docutils" /> <p>The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are self-explanatory. Note that other atom attributes can be used as inputs to this fix by using the <a class="reference internal" href="compute_property_atom.html"><span class="doc">compute property/atom</span></a> command and then specifying an input value from that compute.</p> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">The x,y,z attributes are values that are re-wrapped inside the periodic box whenever an atom crosses a periodic boundary. Thus if you time average an atom that spends half its time on either side of the periodic box, you will get a value in the middle of the box. If this is not what you want, consider averaging unwrapped coordinates, which can be provided by the <a class="reference internal" href="compute_property_atom.html"><span class="doc">compute property/atom</span></a> command via its xu,yu,zu attributes.</p> </div> <p>If a value begins with “<a href="#id1"><span class="problematic" id="id2">c_</span></a>”, a compute ID must follow which has been previously defined in the input script. If no bracketed term is appended, the per-atom vector calculated by the compute is used. If a bracketed term containing an index I is appended, the Ith column of the per-atom array calculated by the compute is used. Users can also -write code for their own compute styles and <a class="reference internal" href="Section_modify.html"><span class="doc">add them to LAMMPS</span></a>.</p> +write code for their own compute styles and <a class="reference internal" href="Section_modify.html"><span class="doc">add them to LAMMPS</span></a>. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values.</p> <p>If a value begins with “<a href="#id3"><span class="problematic" id="id4">f_</span></a>”, a fix ID must follow which has been previously defined in the input script. If no bracketed term is appended, the per-atom vector calculated by the fix is used. If a bracketed term containing an index I is appended, the Ith column of the per-atom array calculated by the fix is used. Note that some fixes only produce their values on certain timesteps, which must be compatible with <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"><span class="doc">add them to LAMMPS</span></a>.</p> +write code for their own fix styles and <a class="reference internal" href="Section_modify.html"><span class="doc">add them to LAMMPS</span></a>. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values.</p> <p>If a value begins with “<a href="#id5"><span class="problematic" id="id6">v_</span></a>”, a variable name must follow which has been previously defined in the input script as an <a class="reference internal" href="variable.html"><span class="doc">atom-style variable</span></a> Variables of style <em>atom</em> can reference thermodynamic keywords, or invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of generating per-atom quantities to time average.</p> </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</h2> <p>No information about this fix is written to <a class="reference internal" href="restart.html"><span class="doc">binary restart files</span></a>. None of the <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></a> options are relevant to this fix. No global scalar or vector quantities are stored by this fix for access by various <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a>.</p> <p>This fix produces a per-atom vector or array which can be accessed by various <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a>. A vector is produced if only a single quantity is averaged by this fix. If two or more quantities are averaged, then an array of values is produced. The per-atom values can only be accessed on timesteps that are multiples of <em>Nfreq</em> since that is when averaging is performed.</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"><span class="doc">run</span></a> command. This fix is not invoked during <a class="reference internal" href="minimize.html"><span class="doc">energy minimization</span></a>.</p> </div> <div class="section" id="restrictions"> <h2>Restrictions</h2> <blockquote> <div>none</div></blockquote> </div> <div class="section" id="related-commands"> <h2>Related commands</h2> <p><a class="reference internal" href="compute.html"><span class="doc">compute</span></a>, <a class="reference internal" href="fix_ave_histo.html"><span class="doc">fix ave/histo</span></a>, <a class="reference internal" href="fix_ave_chunk.html"><span class="doc">fix ave/chunk</span></a>, <a class="reference internal" href="fix_ave_time.html"><span class="doc">fix ave/time</span></a>, <a class="reference internal" href="variable.html"><span class="doc">variable</span></a>,</p> <p><strong>Default:</strong> none</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright 2013 Sandia Corporation. </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/html/fix_ave_chunk.html b/doc/html/fix_ave_chunk.html index dc2732aaf..e7bfd3183 100644 --- a/doc/html/fix_ave_chunk.html +++ b/doc/html/fix_ave_chunk.html @@ -1,588 +1,610 @@ <!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/chunk command — LAMMPS documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & 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/chunk 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-chunk-command"> <span id="index-0"></span><h1>fix ave/chunk command</h1> <div class="section" id="syntax"> <h2>Syntax</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="n">ID</span> <span class="n">group</span><span class="o">-</span><span class="n">ID</span> <span class="n">ave</span><span class="o">/</span><span class="n">chunk</span> <span class="n">Nevery</span> <span class="n">Nrepeat</span> <span class="n">Nfreq</span> <span class="n">chunkID</span> <span class="n">value1</span> <span class="n">value2</span> <span class="o">...</span> <span class="n">keyword</span> <span class="n">args</span> <span class="o">...</span> </pre></div> </div> <ul class="simple"> <li>ID, group-ID are documented in <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> command</li> <li>ave/chunk = style name of this fix command</li> <li>Nevery = use input values every this many timesteps</li> <li>Nrepeat = # of times to use input values for calculating averages</li> <li>Nfreq = calculate averages every this many timesteps</li> <li>chunkID = ID of <a class="reference internal" href="compute_chunk_atom.html"><span class="doc">compute chunk/atom</span></a> command</li> <li>one or more input values can be listed</li> <li>value = vx, vy, vz, fx, fy, fz, density/mass, density/number, temp, c_ID, c_ID[I], f_ID, f_ID[I], v_name</li> </ul> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">vx</span><span class="p">,</span><span class="n">vy</span><span class="p">,</span><span class="n">vz</span><span class="p">,</span><span class="n">fx</span><span class="p">,</span><span class="n">fy</span><span class="p">,</span><span class="n">fz</span> <span class="o">=</span> <span class="n">atom</span> <span class="n">attribute</span> <span class="p">(</span><span class="n">velocity</span><span class="p">,</span> <span class="n">force</span> <span class="n">component</span><span class="p">)</span> <span class="n">density</span><span class="o">/</span><span class="n">number</span><span class="p">,</span> <span class="n">density</span><span class="o">/</span><span class="n">mass</span> <span class="o">=</span> <span class="n">number</span> <span class="ow">or</span> <span class="n">mass</span> <span class="n">density</span> <span class="n">temp</span> <span class="o">=</span> <span class="n">temperature</span> <span class="n">c_ID</span> <span class="o">=</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span> -<span class="n">c_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span> +<span class="n">c_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span><span class="p">,</span> <span class="n">I</span> <span class="n">can</span> <span class="n">include</span> <span class="n">wildcard</span> <span class="p">(</span><span class="n">see</span> <span class="n">below</span><span class="p">)</span> <span class="n">f_ID</span> <span class="o">=</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span> -<span class="n">f_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span> +<span class="n">f_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span><span class="p">,</span> <span class="n">I</span> <span class="n">can</span> <span class="n">include</span> <span class="n">wildcard</span> <span class="p">(</span><span class="n">see</span> <span class="n">below</span><span class="p">)</span> <span class="n">v_name</span> <span class="o">=</span> <span class="n">per</span><span class="o">-</span><span class="n">atom</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">an</span> <span class="n">atom</span><span class="o">-</span><span class="n">style</span> <span class="n">variable</span> <span class="k">with</span> <span class="n">name</span> </pre></div> </div> <ul class="simple"> <li>zero or more keyword/arg pairs may be appended</li> <li>keyword = <em>norm</em> or <em>ave</em> or <em>bias</em> or <em>adof</em> or <em>cdof</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>norm</em> arg = <em>all</em> or <em>sample</em> or <em>none</em> = how output on <em>Nfreq</em> steps is normalized all = output is sum of atoms across all <em>Nrepeat</em> samples, divided by atom count sample = output is sum of <em>Nrepeat</em> sample averages, divided by <em>Nrepeat</em> none = output is sum of <em>Nrepeat</em> sample sums, divided by <em>Nrepeat</em> <em>ave</em> args = <em>one</em> or <em>running</em> or <em>window M</em> one = output new average value every Nfreq steps running = output cumulative average of all previous Nfreq steps window M = output average of M most recent Nfreq steps <em>bias</em> arg = bias-ID bias-ID = ID of a temperature compute that removes a velocity bias for temperature calculation <em>adof</em> value = dof_per_atom dof_per_atom = define this many degrees-of-freedom per atom for temperature calculation <em>cdof</em> value = dof_per_chunk dof_per_chunk = define this many degrees-of-freedom per chunk for temperature calculation <em>file</em> arg = filename filename = file to write results to <em>overwrite</em> arg = none = overwrite output file with only latest output <em>format</em> arg = string string = C-style format string <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</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">chunk</span> <span class="mi">10000</span> <span class="mi">1</span> <span class="mi">10000</span> <span class="n">binchunk</span> <span class="n">c_myCentro</span> <span class="n">title1</span> <span class="s2">"My output values"</span> <span class="n">fix</span> <span class="mi">1</span> <span class="n">flow</span> <span class="n">ave</span><span class="o">/</span><span class="n">chunk</span> <span class="mi">100</span> <span class="mi">10</span> <span class="mi">1000</span> <span class="n">molchunk</span> <span class="n">vx</span> <span class="n">vz</span> <span class="n">norm</span> <span class="n">sample</span> <span class="n">file</span> <span class="n">vel</span><span class="o">.</span><span class="n">profile</span> <span class="n">fix</span> <span class="mi">1</span> <span class="n">flow</span> <span class="n">ave</span><span class="o">/</span><span class="n">chunk</span> <span class="mi">100</span> <span class="mi">5</span> <span class="mi">1000</span> <span class="n">binchunk</span> <span class="n">density</span><span class="o">/</span><span class="n">mass</span> <span class="n">ave</span> <span class="n">running</span> <span class="n">fix</span> <span class="mi">1</span> <span class="n">flow</span> <span class="n">ave</span><span class="o">/</span><span class="n">chunk</span> <span class="mi">100</span> <span class="mi">5</span> <span class="mi">1000</span> <span class="n">binchunk</span> <span class="n">density</span><span class="o">/</span><span class="n">mass</span> <span class="n">ave</span> <span class="n">running</span> </pre></div> </div> <p><strong>NOTE:</strong></p> <p>If you are trying to replace a deprectated fix ave/spatial command with the newer, more flexible fix ave/chunk and <a class="reference internal" href="compute_chunk_atom.html"><span class="doc">compute chunk/atom</span></a> commands, you simply need to split the fix ave/spatial arguments across the two new commands. For example, this command:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="mi">1</span> <span class="n">flow</span> <span class="n">ave</span><span class="o">/</span><span class="n">spatial</span> <span class="mi">100</span> <span class="mi">10</span> <span class="mi">1000</span> <span class="n">y</span> <span class="mf">0.0</span> <span class="mf">1.0</span> <span class="n">vx</span> <span class="n">vz</span> <span class="n">norm</span> <span class="n">sample</span> <span class="n">file</span> <span class="n">vel</span><span class="o">.</span><span class="n">profile</span> </pre></div> </div> <p>could be replaced by:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">cc1</span> <span class="n">flow</span> <span class="n">chunk</span><span class="o">/</span><span class="n">atom</span> <span class="nb">bin</span><span class="o">/</span><span class="mi">1</span><span class="n">d</span> <span class="n">y</span> <span class="mf">0.0</span> <span class="mf">1.0</span> <span class="n">fix</span> <span class="mi">1</span> <span class="n">flow</span> <span class="n">ave</span><span class="o">/</span><span class="n">chunk</span> <span class="mi">100</span> <span class="mi">10</span> <span class="mi">1000</span> <span class="n">cc1</span> <span class="n">vx</span> <span class="n">vz</span> <span class="n">norm</span> <span class="n">sample</span> <span class="n">file</span> <span class="n">vel</span><span class="o">.</span><span class="n">profile</span> </pre></div> </div> </div> <div class="section" id="description"> <h2>Description</h2> <p>Use one or more per-atom vectors as inputs every few timesteps, sum the values over the atoms in each chunk at each timestep, then average the per-chunk values over longer timescales. The resulting chunk averages can be used by other <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a> such as <a class="reference internal" href="thermo_style.html"><span class="doc">thermo_style custom</span></a>, and can also be written to a file.</p> <p>In LAMMPS, chunks are collections of atoms defined by a <a class="reference internal" href="compute_chunk_atom.html"><span class="doc">compute chunk/atom</span></a> command, which assigns each atom to a single chunk (or no chunk). The ID for this command is specified as chunkID. For example, a single chunk could be the atoms in a molecule or atoms in a spatial bin. See the <a class="reference internal" href="compute_chunk_atom.html"><span class="doc">compute chunk/atom</span></a> doc page and “<a class="reference internal" href="Section_howto.html#howto-23"><span class="std std-ref">Section_howto 23</span></a> for details of how chunks can be defined and examples of how they can be used to measure properties of a system.</p> <p>Note that only atoms in the specified group contribute to the summing and averaging calculations. The <a class="reference internal" href="compute_chunk_atom.html"><span class="doc">compute chunk/atom</span></a> command defines its own group as well as an optional region. Atoms will have a chunk ID = 0, meaning they belong to no chunk, if they are not in that group or region. Thus you can specify the “all” group for this command if you simply want to use the chunk definitions provided by chunkID.</p> <p>Each specified per-atom value can be an atom attribute (position, velocity, force component), a mass or number density, or the result of a <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> or <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> or the evaluation of an atom-style <a class="reference internal" href="variable.html"><span class="doc">variable</span></a>. In the latter cases, the compute, fix, or variable must produce a per-atom quantity, not a global quantity. Note that the <a class="reference internal" href="compute_property_atom.html"><span class="doc">compute property/atom</span></a> command provides access to any attribute defined and stored by atoms. If you wish to time-average global quantities from a compute, fix, or variable, then see the <a class="reference internal" href="fix_ave_time.html"><span class="doc">fix ave/time</span></a> command.</p> +<p>The per-atom values of each input vector are summed and averaged +independently of the per-atom values in other input vectors.</p> <p><a class="reference internal" href="compute.html"><span class="doc">Computes</span></a> that produce per-atom quantities are those which have the word <em>atom</em> in their style name. See the doc pages for individual <a class="reference internal" href="fix.html"><span class="doc">fixes</span></a> to determine which ones produce per-atom quantities. <a class="reference internal" href="variable.html"><span class="doc">Variables</span></a> of style <em>atom</em> are the only ones that can be used with this fix since all other styles of variable produce global quantities.</p> -<p>The per-atom values of each input vector are summed and averaged -independently of the per-atom values in other input vectors.</p> +<p>Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form “*” or “<em>n” or “n</em>” or +“m*n”. If N = the size of the vector (for <em>mode</em> = scalar) or the +number of columns in the array (for <em>mode</em> = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive).</p> +<p>Using a wildcard is the same as if the individual columns of the array +had been listed one by one. E.g. these 2 fix ave/chunk commands are +equivalent, since the <span class="xref doc">compute property/atom</span> command creates, in this +case, a per-atom array with 3 columns:</p> +<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">myAng</span> <span class="nb">all</span> <span class="nb">property</span><span class="o">/</span><span class="n">atom</span> <span class="n">angmomx</span> <span class="n">angmomy</span> <span class="n">angmomz</span> +<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">chunk</span> <span class="mi">100</span> <span class="mi">1</span> <span class="mi">100</span> <span class="n">cc1</span> <span class="n">c_myAng</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> <span class="n">file</span> <span class="n">tmp</span><span class="o">.</span><span class="n">angmom</span> +<span class="n">fix</span> <span class="mi">2</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">chunk</span> <span class="mi">100</span> <span class="mi">1</span> <span class="mi">100</span> <span class="n">cc1</span> <span class="n">c_myAng</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_myAng</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">c_myAng</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="n">file</span> <span class="n">tmp</span><span class="o">.</span><span class="n">angmom</span> +</pre></div> +</div> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">This fix works by creating an array of size <em>Nchunk</em> by Nvalues on each processor. <em>Nchunk</em> is the number of chunks which is defined by the <span class="xref doc">compute chunk/atom</span> command. Nvalues is the number of input values specified. Each processor loops over its atoms, tallying its values to the appropriate chunk. Then the entire array is summed across all processors. This means that using a large number of chunks will incur an overhead in memory and computational cost (summing across processors), so be careful to define a reasonable number of chunks.</p> </div> <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 accessed and contribute to the average. The final averaged quantities are generated on timesteps that are a multiples of <em>Nfreq</em>. The average is over <em>Nrepeat</em> quantities, computed in the preceding portion of the simulation every <em>Nevery</em> timesteps. <em>Nfreq</em> must be a multiple of <em>Nevery</em> and <em>Nevery</em> must be non-zero even if <em>Nrepeat</em> is 1. Also, the timesteps contributing to the average value cannot overlap, i.e. Nrepeat*Nevery can not exceed Nfreq.</p> <p>For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on timesteps 90,92,94,96,98,100 will be used to compute the final average on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time averaging is done; values are simply generated on timesteps 100,200,etc.</p> <p>Each input value can also be averaged over the atoms in each chunk. The way the averaging is done across the <em>Nrepeat</em> timesteps to produce output on the <em>Nfreq</em> timesteps, and across multiple <em>Nfreq</em> outputs, is determined by the <em>norm</em> and <em>ave</em> keyword settings, as discussed below.</p> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">To perform per-chunk averaging within a <em>Nfreq</em> time window, the number of chunks <em>Nchunk</em> defined by the <a class="reference internal" href="compute_chunk_atom.html"><span class="doc">compute chunk/atom</span></a> command must remain constant. If the <em>ave</em> keyword is set to <em>running</em> or <em>window</em> then <em>Nchunk</em> must remain constant for the duration of the simulation. This fix forces the chunk/atom compute specified by chunkID to hold <em>Nchunk</em> constant for the appropriate time windows, by not allowing it to re-calcualte <em>Nchunk</em>, which can also affect how it assigns chunk IDs to atoms. More details are given on the <a class="reference internal" href="compute_chunk_atom.html"><span class="doc">compute chunk/atom</span></a> doc page.</p> </div> <hr class="docutils" /> <p>The atom attribute values (vx,vy,vz,fx,fy,fz) are self-explanatory. As noted above, any other atom attributes can be used as input values to this fix by using the <a class="reference internal" href="compute_property_atom.html"><span class="doc">compute property/atom</span></a> command and then specifying an input value from that compute.</p> <p>The <em>density/number</em> value means the number density is computed for each chunk, i.e. number/volume. The <em>density/mass</em> value means the mass density is computed for each chunk, i.e. total-mass/volume. The output values are in units of 1/volume or density (mass/volume). See the <a class="reference internal" href="units.html"><span class="doc">units</span></a> command doc page for the definition of density for each choice of units, e.g. gram/cm^3. If the chunks defined by the <a class="reference internal" href="compute_chunk_atom.html"><span class="doc">compute chunk/atom</span></a> command are spatial bins, the volume is the bin volume. Otherwise it is the volume of the entire simulation box.</p> <p>The <em>temp</em> value means the temperature is computed for each chunk, by the formula KE = DOF/2 k T, where KE = total kinetic energy of the chunk of atoms (sum of 1/2 m v^2), DOF = the total number of degrees of freedom for all atoms in the chunk, k = Boltzmann constant, and T = temperature.</p> <p>The DOF is calculated as N*adof + cdof, where N = number of atoms in the chunk, adof = degrees of freedom per atom, and cdof = degrees of freedom per chunk. By default adof = 2 or 3 = dimensionality of system, as set via the <a class="reference internal" href="dimension.html"><span class="doc">dimension</span></a> command, and cdof = 0.0. This gives the usual formula for temperature.</p> <p>Note that currently this temperature only includes translational degrees of freedom for each atom. No rotational degrees of freedom are included for finite-size particles. Also no degrees of freedom are subtracted for any velocity bias or constraints that are applied, such as <a class="reference internal" href="compute_temp_partial.html"><span class="doc">compute temp/partial</span></a>, or <a class="reference internal" href="fix_shake.html"><span class="doc">fix shake</span></a> or <a class="reference internal" href="fix_rigid.html"><span class="doc">fix rigid</span></a>. This is because those degrees of freedom (e.g. a constrained bond) could apply to sets of atoms that are both included and excluded from a specific chunk, and hence the concept is somewhat ill-defined. In some cases, you can use the <em>adof</em> and <em>cdof</em> keywords to adjust the calculated degress of freedom appropriately, as explained below.</p> <p>Also note that a bias can be subtracted from atom velocities before they are used in the above formula for KE, by using the <em>bias</em> keyword. This allows, for example, a thermal temperature to be computed after removal of a flow velocity profile.</p> <p>Note that the per-chunk temperature calculated by this fix and the <a class="reference internal" href="compute_temp_chunk.html"><span class="doc">compute temp/chunk</span></a> command can be different. The compute calculates the temperature for each chunk for a single snapshot. This fix can do that but can also time average those values over many snapshots, or it can compute a temperature as if the atoms in the chunk on different timesteps were collected together as one set of atoms to calculate their temperature. The compute allows the center-of-mass velocity of each chunk to be subtracted before calculating the temperature; this fix does not.</p> <p>If a value begins with “<a href="#id1"><span class="problematic" id="id2">c_</span></a>”, a compute ID must follow which has been previously defined in the input script. If no bracketed integer is appended, the per-atom vector calculated by the compute is used. If a bracketed integer is appended, the Ith column of the per-atom array calculated by the compute is used. Users can also write code for -their own compute styles and <a class="reference internal" href="Section_modify.html"><span class="doc">add them to LAMMPS</span></a>.</p> +their own compute styles and <a class="reference internal" href="Section_modify.html"><span class="doc">add them to LAMMPS</span></a>. +See the discussion above for how I can be specified with a wildcard +asterisk to effectively specify multiple values.</p> <p>If a value begins with “<a href="#id3"><span class="problematic" id="id4">f_</span></a>”, a fix ID must follow which has been previously defined in the input script. If no bracketed integer is appended, the per-atom vector calculated by the fix is used. If a bracketed integer is appended, the Ith column of the per-atom array calculated by the fix is used. Note that some fixes only produce their values on certain timesteps, which must be compatible with <em>Nevery</em>, else an error results. Users can also write code for their -own fix styles and <a class="reference internal" href="Section_modify.html"><span class="doc">add them to LAMMPS</span></a>.</p> +own fix styles and <a class="reference internal" href="Section_modify.html"><span class="doc">add them to LAMMPS</span></a>. See the +discussion above for how I can be specified with a wildcard asterisk +to effectively specify multiple values.</p> <p>If a value begins with “<a href="#id5"><span class="problematic" id="id6">v_</span></a>”, a variable name must follow which has been previously defined in the input script. Variables of style <em>atom</em> can reference thermodynamic keywords and various per-atom attributes, or invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of generating per-atom quantities to average within chunks.</p> <hr class="docutils" /> <p>Additional optional keywords also affect the operation of this fix and its outputs.</p> <p>The <em>norm</em> keyword affects how averaging is done for the per-chunk values that are output every <em>Nfreq</em> timesteps.</p> <p>It the <em>norm</em> setting is <em>all</em>, which is the default, a chunk value is summed over all atoms in all <em>Nrepeat</em> samples, as is the count of atoms in the chunk. The averaged output value for the chunk on the <em>Nfreq</em> timesteps is Total-sum / Total-count. In other words it is an average over atoms across the entire <em>Nfreq</em> timescale.</p> <p>If the <em>norm</em> setting is <em>sample</em>, the chunk value is summed over atoms for each sample, as is the count, and an “average sample value” is computed for each sample, i.e. Sample-sum / Sample-count. The output value for the chunk on the <em>Nfreq</em> timesteps is the average of the <em>Nrepeat</em> “average sample values”, i.e. the sum of <em>Nrepeat</em> “average sample values” divided by <em>Nrepeat</em>. In other words it is an average of an average.</p> <p>If the <em>norm</em> setting is <em>none</em>, a similar computation as for the <em>sample</em> seting is done, except the individual “average sample values” are “summed sample values”. A summed sample value is simply the chunk value summed over atoms in the sample, without dividing by the number of atoms in the sample. The output value for the chunk on the <em>Nfreq</em> timesteps is the average of the <em>Nrepeat</em> “summed sample values”, i.e. the sum of <em>Nrepeat</em> “summed sample values” divided by <em>Nrepeat</em>.</p> <p>The <em>ave</em> keyword determines how the per-chunk values produced every <em>Nfreq</em> steps are averaged with values produced on previous steps that were multiples of <em>Nfreq</em>, before they are accessed by another output command or written to a file.</p> <p>If the <em>ave</em> setting is <em>one</em>, which is the default, then the chunk values produced on timesteps that are multiples of <em>Nfreq</em> are independent of each other; they are output as-is without further averaging.</p> <p>If the <em>ave</em> setting is <em>running</em>, then the chunk values produced on timesteps that are multiples of <em>Nfreq</em> are summed and averaged in a cumulative sense before being output. Each output chunk value is thus the average of the chunk value produced on that timestep with all preceding values for the same chunk. This running average begins when the fix is defined; it can only be restarted by deleting the fix via the <a class="reference internal" href="unfix.html"><span class="doc">unfix</span></a> command, or re-defining the fix by re-specifying it.</p> <p>If the <em>ave</em> setting is <em>window</em>, then the chunk values produced on timesteps that are multiples of <em>Nfreq</em> are summed and averaged within a moving “window” of time, so that the last M values for the same chunk are used to produce the output. E.g. if M = 3 and Nfreq = 1000, then the output on step 10000 will be the average of the individual chunk values on steps 8000,9000,10000. Outputs on early steps will average over less than M values if they are not available.</p> <p>The <em>bias</em> keyword specifies the ID of a temperature compute that removes a “bias” velocity from each atom, specified as <em>bias-ID</em>. It is only used when the <em>temp</em> value is calculated, to compute the thermal temperature of each chunk after the translational kinetic energy components have been altered in a prescribed way, e.g. to remove a flow velocity profile. See the doc pages for individual computes that calculate a temperature to see which ones implement a bias.</p> <p>The <em>adof</em> and <em>cdof</em> keywords define the values used in the degree of freedom (DOF) formula described above for for temperature calculation for each chunk. They are only used when the <em>temp</em> value is calculated. They can be used to calculate a more appropriate temperature for some kinds of chunks. Here are 3 examples:</p> <p>If spatially binned chunks contain some number of water molecules and <a class="reference internal" href="fix_shake.html"><span class="doc">fix shake</span></a> is used to make each molecule rigid, then you could calculate a temperature with 6 degrees of freedom (DOF) (3 translational, 3 rotational) per molecule by setting <em>adof</em> to 2.0.</p> <p>If <a class="reference internal" href="compute_temp_partial.html"><span class="doc">compute temp/partial</span></a> is used with the <em>bias</em> keyword to only allow the x component of velocity to contribute to the temperature, then <em>adof</em> = 1.0 would be appropriate.</p> <p>If each chunk consists of a large molecule, with some number of its bonds constrained by <a class="reference internal" href="fix_shake.html"><span class="doc">fix shake</span></a> or the entire molecule by <a class="reference internal" href="fix_rigid.html"><span class="doc">fix rigid/small</span></a>, <em>adof</em> = 0.0 and <em>cdof</em> could be set to the remaining degrees of freedom for the entire molecule (entire chunk in this case), e.g. 6 for 3d, or 3 for 2d, for a rigid molecule.</p> <p>The <em>file</em> keyword allows a filename to be specified. Every <em>Nfreq</em> timesteps, a section of chunk info will be written to a text file in the following format. A line with the timestep and number of chunks is written. Then one line per chunk is written, containing the chunk ID (1-Nchunk), an optional original ID value, optional coordinate values for chunks that represent spatial bins, the number of atoms in the chunk, and one or more calculated values. More explanation of the optional values is given below. The number of values in each line corresponds to the number of values specified in the fix ave/chunk command. The number of atoms and the value(s) are summed or average quantities, as explained above.</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>format</em> keyword sets the numeric format of each value when it is printed to a file via the <em>file</em> keyword. Note that all values are floating point quantities. The default format is %g. You can specify a higher precision if desired, e.g. %20.16g.</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-default"><div class="highlight"><pre><span></span><span class="c1"># Chunk-averaged data for fix ID and group name</span> <span class="c1"># Timestep Number-of-chunks</span> <span class="c1"># Chunk (OrigID) (Coord1) (Coord2) (Coord3) Ncount value1 value2 ...</span> </pre></div> </div> <p>In the first line, ID and name are replaced with the fix-ID and group name. The second line describes the two values that are printed at the first of each section of output. In the third line the values are replaced with the appropriate value names, e.g. fx or c_myCompute<strong>2</strong>.</p> <p>The words in parenthesis only appear with corresponding columns if the chunk style specified for the <a class="reference internal" href="compute_chunk_atom.html"><span class="doc">compute chunk/atom</span></a> command supports them. The OrigID column is only used if the <em>compress</em> keyword was set to <em>yes</em> for the <a class="reference internal" href="compute_chunk_atom.html"><span class="doc">compute chunk/atom</span></a> command. This means that the original chunk IDs (e.g. molecule IDs) will have been compressed to remove chunk IDs with no atoms assigned to them. Thus a compresed chunk ID of 3 may correspond to an original chunk ID or molecule ID of 415. The OrigID column will list 415 for the 3rd chunk.</p> <p>The CoordN columns only appear if a <em>binning</em> style was used in the <a class="reference internal" href="compute_chunk_atom.html"><span class="doc">compute chunk/atom</span></a> command. For <em>bin/1d</em>, <em>bin/2d</em>, and <em>bin/3d</em> styles the column values are the center point of the bin in the corresponding dimension. Just Coord1 is used for <em>bin/1d</em>, Coord2 is added for <em>bin/2d</em>, Coord3 is added for <em>bin/3d</em>. For <em>bin/sphere</em>, just Coord1 is used, and it is the radial coordinate. For <em>bin/cylinder</em>, Coord1 and Coord2 are used. Coord1 is the radial coordinate (away from the cylinder axis), and coord2 is the coordinate along the cylinder axis.</p> <p>Note that if the value of the <em>units</em> keyword used in the <a class="reference internal" href="compute_chunk_atom.html"><span class="doc">compute chunk/atom command</span></a> is <em>box</em> or <em>lattice</em>, the coordinate values will be in distance <a class="reference internal" href="units.html"><span class="doc">units</span></a>. If the value of the <em>units</em> keyword is <em>reduced</em>, the coordinate values will be in unitless reduced units (0-1). This is not true for the Coord1 value of style <em>bin/sphere</em> or <em>bin/cylinder</em> which both represent radial dimensions. Those values are always in distance <a class="reference internal" href="units.html"><span class="doc">units</span></a>.</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</h2> <p>No information about this fix is written to <a class="reference internal" href="restart.html"><span class="doc">binary restart files</span></a>. None of the <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></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 class="std std-ref">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 = the number of chunks <em>Nchunk</em> as calculated by the specified <a class="reference internal" href="compute_chunk_atom.html"><span class="doc">compute chunk/atom</span></a> command. The # of columns = M+1+Nvalues, where M = 1 to 4, depending on whether the optional columns for OrigID and CoordN are used, as explained above. Following the optional columns, the next column contains the count of atoms in the chunk, and the remaining columns are the Nvalue quantities. When the array is accessed with a row I that exceeds the current number of chunks, than a 0.0 is returned by the fix instead of an error, since the number of chunks can vary as a simulation runs depending on how that value is computed by the compute chunk/atom command.</p> <p>The array values calculated by this fix are treated as “intensive”, since they are typically already normalized by the count of atoms in each chunk.</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"><span class="doc">run</span></a> command. This fix is not invoked during <a class="reference internal" href="minimize.html"><span class="doc">energy minimization</span></a>.</p> </div> <div class="section" id="restrictions"> <h2>Restrictions</h2> <blockquote> <div>none</div></blockquote> </div> <div class="section" id="related-commands"> <h2>Related commands</h2> <p><a class="reference internal" href="compute.html"><span class="doc">compute</span></a>, <a class="reference internal" href="fix_ave_atom.html"><span class="doc">fix ave/atom</span></a>, <a class="reference internal" href="fix_ave_histo.html"><span class="doc">fix ave/histo</span></a>, <a class="reference internal" href="fix_ave_time.html"><span class="doc">fix ave/time</span></a>, <a class="reference internal" href="variable.html"><span class="doc">variable</span></a>, <a class="reference internal" href="fix_ave_correlate.html"><span class="doc">fix ave/correlate</span></a></p> </div> <div class="section" id="default"> <h2>Default</h2> <p>The option defaults are norm = all, ave = one, bias = none, no file output, and title 1,2,3 = strings as described above.</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright 2013 Sandia Corporation. </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/html/fix_ave_correlate.html b/doc/html/fix_ave_correlate.html index a949f4570..5386d0dd5 100644 --- a/doc/html/fix_ave_correlate.html +++ b/doc/html/fix_ave_correlate.html @@ -1,486 +1,511 @@ <!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 documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & 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</h1> <div class="section" id="syntax"> <h2>Syntax</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="n">ID</span> <span class="n">group</span><span class="o">-</span><span class="n">ID</span> <span class="n">ave</span><span class="o">/</span><span class="n">correlate</span> <span class="n">Nevery</span> <span class="n">Nrepeat</span> <span class="n">Nfreq</span> <span class="n">value1</span> <span class="n">value2</span> <span class="o">...</span> <span class="n">keyword</span> <span class="n">args</span> <span class="o">...</span> </pre></div> </div> <ul class="simple"> <li>ID, group-ID are documented in <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> command</li> <li>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 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-default"><div class="highlight"><pre><span></span><span class="n">c_ID</span> <span class="o">=</span> <span class="k">global</span> <span class="n">scalar</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span> -<span class="n">c_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">component</span> <span class="n">of</span> <span class="k">global</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span> +<span class="n">c_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">component</span> <span class="n">of</span> <span class="k">global</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span><span class="p">,</span> <span class="n">I</span> <span class="n">can</span> <span class="n">include</span> <span class="n">wildcard</span> <span class="p">(</span><span class="n">see</span> <span class="n">below</span><span class="p">)</span> <span class="n">f_ID</span> <span class="o">=</span> <span class="k">global</span> <span class="n">scalar</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span> -<span class="n">f_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">component</span> <span class="n">of</span> <span class="k">global</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span> +<span class="n">f_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">component</span> <span class="n">of</span> <span class="k">global</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span><span class="p">,</span> <span class="n">I</span> <span class="n">can</span> <span class="n">include</span> <span class="n">wildcard</span> <span class="p">(</span><span class="n">see</span> <span class="n">below</span><span class="p">)</span> <span class="n">v_name</span> <span class="o">=</span> <span class="k">global</span> <span class="n">value</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">an</span> <span class="n">equal</span><span class="o">-</span><span class="n">style</span> <span class="n">variable</span> <span class="k">with</span> <span class="n">name</span> <span class="n">v_name</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">component</span> <span class="n">of</span> <span class="n">a</span> <span class="n">vector</span><span class="o">-</span><span class="n">style</span> <span class="n">variable</span> <span class="k">with</span> <span class="n">name</span> </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</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">correlate</span> <span class="mi">5</span> <span class="mi">100</span> <span class="mi">1000</span> <span class="n">c_myTemp</span> <span class="n">file</span> <span class="n">temp</span><span class="o">.</span><span class="n">correlate</span> <span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">correlate</span> <span class="mi">1</span> <span class="mi">50</span> <span class="mi">10000</span> <span class="o">&</span> <span class="n">c_thermo_press</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_thermo_press</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">c_thermo_press</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">&</span> <span class="nb">type</span> <span class="n">upper</span> <span class="n">ave</span> <span class="n">running</span> <span class="n">title1</span> <span class="s2">"My correlation data"</span> </pre></div> </div> +<p>fix 1 all ave/correlate 1 50 10000 c_thermo_press[*]</p> </div> <div class="section" id="description"> <h2>Description</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"><span class="doc">variables</span></a> or used by other <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a> such as <a class="reference internal" href="thermo_style.html"><span class="doc">thermo_style custom</span></a>, and can also be written to a file. See the <a class="reference internal" href="fix_ave_correlate_long.html"><span class="doc">fix ave/correlate/long</span></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"><span class="doc">compute</span></a> or <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> or the evaluation of an equal-style or vector-style <a class="reference internal" href="variable.html"><span class="doc">variable</span></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_chunk.html"><span class="doc">fix ave/chunk</span></a>, <a class="reference internal" href="fix_ave_atom.html"><span class="doc">fix ave/atom</span></a>, or <a class="reference internal" href="fix_ave_histo.html"><span class="doc">fix ave/histo</span></a> commands. If you wish to convert a per-atom quantity into a single global value, see the <a class="reference internal" href="compute_reduce.html"><span class="doc">compute reduce</span></a> command.</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> <p><a class="reference internal" href="compute.html"><span class="doc">Computes</span></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"><span class="doc">fixes</span></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"><span class="doc">Variables</span></a> of style <em>equal</em> and <em>vector</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> +<p>Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form “*” or “<em>n” or “n</em>” or +“m*n”. If N = the size of the vector (for <em>mode</em> = scalar) or the +number of columns in the array (for <em>mode</em> = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive).</p> +<p>Using a wildcard is the same as if the individual elements of the +vector had been listed one by one. E.g. these 2 fix ave/correlate +commands are equivalent, since the <a class="reference internal" href="compute_pressure.html"><span class="doc">compute pressure</span></a> command creates a global vector with 6 +values.</p> +<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">myPress</span> <span class="nb">all</span> <span class="n">pressure</span> <span class="n">NULL</span> +<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">correlate</span> <span class="mi">1</span> <span class="mi">50</span> <span class="mi">10000</span> <span class="n">c_myPress</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> +<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">correlate</span> <span class="mi">1</span> <span class="mi">50</span> <span class="mi">10000</span> <span class="o">&</span> + <span class="n">c_myPress</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_myPress</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">c_myPress</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">&</span> + <span class="n">c_myPress</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="n">c_myPress</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="n">c_myPress</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span> +</pre></div> +</div> <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-default"><div class="highlight"><pre><span></span><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)*<em>Nevery</em>. Thus the correlation between a pair of input values yields <em>Nrepeat</em> correlation datums:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><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)*<em>Nevery</em> 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> +calculated by the compute is used. See the discussion above for how I +can be specified with a wildcard asterisk to effectively specify +multiple values.</p> <p>Note that there is a <a class="reference internal" href="compute_reduce.html"><span class="doc">compute reduce</span></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"><span class="doc">thermodynamic output</span></a> or other fixes such as <a class="reference internal" href="fix_nh.html"><span class="doc">fix nvt</span></a> or <a class="reference internal" href="fix_temp_rescale.html"><span class="doc">fix temp/rescale</span></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"><span class="doc">add them to LAMMPS</span></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> +calculated by the fix is used. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values.</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"><span class="doc">add them to LAMMPS</span></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 or vector-style variables can be referenced; the latter requires a bracketed term to specify the Ith element of the vector calculated by the variable. See the <a class="reference internal" href="variable.html"><span class="doc">variable</span></a> command for details. Note that variables of style <em>equal</em> or <em>vector</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"><span class="doc">unfix</span></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-default"><div class="highlight"><pre><span></span><span class="c1"># Time-correlated data for fix ID</span> <span class="c1"># TimeStep Number-of-time-windows</span> <span class="c1"># 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-default"><div class="highlight"><pre><span></span><span class="n">Sij</span> <span class="o">=</span> <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="o">*</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>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"><span class="doc">equal-style variables</span></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</h2> <p>No information about this fix is written to <a class="reference internal" href="restart.html"><span class="doc">binary restart files</span></a>. None of the <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></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 class="std std-ref">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"><span class="doc">variable</span></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"><span class="doc">run</span></a> command. This fix is not invoked during <a class="reference internal" href="minimize.html"><span class="doc">energy minimization</span></a>.</p> </div> <div class="section" id="restrictions"> <h2>Restrictions</h2> <blockquote> <div>none</div></blockquote> </div> <div class="section" id="related-commands"> <h2>Related commands</h2> <p><a class="reference internal" href="fix_ave_correlate_long.html"><span class="doc">fix ave/correlate/long</span></a>, <a class="reference internal" href="compute.html"><span class="doc">compute</span></a>, <a class="reference internal" href="fix_ave_time.html"><span class="doc">fix ave/time</span></a>, <a class="reference internal" href="fix_ave_atom.html"><span class="doc">fix ave/atom</span></a>, <a class="reference internal" href="fix_ave_chunk.html"><span class="doc">fix ave/chunk</span></a>, <a class="reference internal" href="fix_ave_histo.html"><span class="doc">fix ave/histo</span></a>, <a class="reference internal" href="variable.html"><span class="doc">variable</span></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 2013 Sandia Corporation. </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/html/fix_ave_histo.html b/doc/html/fix_ave_histo.html index 48a236b5b..4935a91c0 100644 --- a/doc/html/fix_ave_histo.html +++ b/doc/html/fix_ave_histo.html @@ -1,492 +1,508 @@ <!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/histo command — LAMMPS documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & 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/histo 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-histo-command"> <span id="index-0"></span><h1>fix ave/histo command</h1> </div> <div class="section" id="fix-ave-histo-weight-command"> <h1>fix ave/histo/weight command</h1> <div class="section" id="syntax"> <h2>Syntax</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="n">ID</span> <span class="n">group</span><span class="o">-</span><span class="n">ID</span> <span class="n">style</span> <span class="n">Nevery</span> <span class="n">Nrepeat</span> <span class="n">Nfreq</span> <span class="n">lo</span> <span class="n">hi</span> <span class="n">Nbin</span> <span class="n">value1</span> <span class="n">value2</span> <span class="o">...</span> <span class="n">keyword</span> <span class="n">args</span> <span class="o">...</span> </pre></div> </div> <ul class="simple"> <li>ID, group-ID are documented in <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> command</li> <li>style = <em>ave/histo</em> or <em>ave/histo/weight</em> = style name of this fix command</li> <li>Nevery = use input values every this many timesteps</li> <li>Nrepeat = # of times to use input values for calculating histogram</li> <li>Nfreq = calculate histogram every this many timesteps</li> <li>lo,hi = lo/hi bounds within which to histogram</li> <li>Nbin = # of histogram bins</li> <li>one or more input values can be listed</li> <li>value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[N], f_ID, f_ID[N], v_name</li> </ul> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">,</span><span class="n">vx</span><span class="p">,</span><span class="n">vy</span><span class="p">,</span><span class="n">vz</span><span class="p">,</span><span class="n">fx</span><span class="p">,</span><span class="n">fy</span><span class="p">,</span><span class="n">fz</span> <span class="o">=</span> <span class="n">atom</span> <span class="n">attribute</span> <span class="p">(</span><span class="n">position</span><span class="p">,</span> <span class="n">velocity</span><span class="p">,</span> <span class="n">force</span> <span class="n">component</span><span class="p">)</span> <span class="n">c_ID</span> <span class="o">=</span> <span class="n">scalar</span> <span class="ow">or</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span> -<span class="n">c_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">component</span> <span class="n">of</span> <span class="n">vector</span> <span class="ow">or</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span> +<span class="n">c_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">component</span> <span class="n">of</span> <span class="n">vector</span> <span class="ow">or</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span><span class="p">,</span> <span class="n">I</span> <span class="n">can</span> <span class="n">include</span> <span class="n">wildcard</span> <span class="p">(</span><span class="n">see</span> <span class="n">below</span><span class="p">)</span> <span class="n">f_ID</span> <span class="o">=</span> <span class="n">scalar</span> <span class="ow">or</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span> -<span class="n">f_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">component</span> <span class="n">of</span> <span class="n">vector</span> <span class="ow">or</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span> +<span class="n">f_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">component</span> <span class="n">of</span> <span class="n">vector</span> <span class="ow">or</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span><span class="p">,</span> <span class="n">I</span> <span class="n">can</span> <span class="n">include</span> <span class="n">wildcard</span> <span class="p">(</span><span class="n">see</span> <span class="n">below</span><span class="p">)</span> <span class="n">v_name</span> <span class="o">=</span> <span class="n">value</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">an</span> <span class="n">equal</span><span class="o">-</span><span class="n">style</span> <span class="ow">or</span> <span class="n">vector</span><span class="o">-</span><span class="n">style</span> <span class="ow">or</span> <span class="n">atom</span><span class="o">-</span><span class="n">style</span> <span class="n">variable</span> <span class="k">with</span> <span class="n">name</span> <span class="n">v_name</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">vector</span><span class="o">-</span><span class="n">style</span> <span class="n">variable</span> <span class="k">with</span> <span class="n">name</span> </pre></div> </div> <ul class="simple"> <li>zero or more keyword/arg pairs may be appended</li> <li>keyword = <em>mode</em> or <em>file</em> or <em>ave</em> or <em>start</em> or <em>beyond</em> or <em>overwrite</em> or <em>title1</em> or <em>title2</em> or <em>title3</em></li> </ul> <pre class="literal-block"> <em>mode</em> arg = <em>scalar</em> or <em>vector</em> scalar = all input values are scalars vector = all input values are vectors <em>file</em> arg = filename filename = name of file to output histogram(s) to <em>ave</em> args = <em>one</em> or <em>running</em> or <em>window</em> one = output a new average value every Nfreq steps running = output cumulative average of all previous Nfreq steps window M = output average of M most recent Nfreq steps <em>start</em> args = Nstart Nstart = start averaging on this timestep <em>beyond</em> arg = <em>ignore</em> or <em>end</em> or <em>extra</em> ignore = ignore values outside histogram lo/hi bounds end = count values outside histogram lo/hi bounds in end bins extra = create 2 extra bins for value outside histogram lo/hi bounds <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, only for vector mode </pre> </div> <div class="section" id="examples"> <h2>Examples</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">histo</span> <span class="mi">100</span> <span class="mi">5</span> <span class="mi">1000</span> <span class="mf">0.5</span> <span class="mf">1.5</span> <span class="mi">50</span> <span class="n">c_myTemp</span> <span class="n">file</span> <span class="n">temp</span><span class="o">.</span><span class="n">histo</span> <span class="n">ave</span> <span class="n">running</span> <span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">histo</span> <span class="mi">100</span> <span class="mi">5</span> <span class="mi">1000</span> <span class="o">-</span><span class="mi">5</span> <span class="mi">5</span> <span class="mi">100</span> <span class="n">c_thermo_press</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">c_thermo_press</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="n">title1</span> <span class="s2">"My output values"</span> +<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">histo</span> <span class="mi">100</span> <span class="mi">5</span> <span class="mi">1000</span> <span class="o">-</span><span class="mi">5</span> <span class="mi">5</span> <span class="mi">100</span> <span class="n">c_thermo_press</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> <span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">histo</span> <span class="mi">1</span> <span class="mi">100</span> <span class="mi">1000</span> <span class="o">-</span><span class="mf">2.0</span> <span class="mf">2.0</span> <span class="mi">18</span> <span class="n">vx</span> <span class="n">vy</span> <span class="n">vz</span> <span class="n">mode</span> <span class="n">vector</span> <span class="n">ave</span> <span class="n">running</span> <span class="n">beyond</span> <span class="n">extra</span> <span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">histo</span><span class="o">/</span><span class="n">weight</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">10</span> <span class="mi">100</span> <span class="mi">2000</span> <span class="n">c_XRD</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_XRD</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> </pre></div> </div> </div> <div class="section" id="description"> <h2>Description</h2> -<p>Use one or more values as inputs every few timesteps, histogram them, -and average the histogram over longer timescales. The resulting -histogram can be used by other <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a>, and can also be written to a +<p>Use one or more values as inputs every few timesteps to create a +single histogram. The histogram can then be averaged over longer +timescales. The resulting histogram can be used by other <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a>, and can also be written to a file. The fix ave/histo/weight command has identical syntax to fix ave/histo, except that exactly two values must be specified. See details below.</p> <p>The group specified with this command is ignored for global and local input values. For per-atom input values, only atoms in the group contribute to the histogram. Note that regardless of the specified group, specified values may represent calculations performed by computes and fixes which store their own “group” definition.</p> <p>A histogram is simply a count of the number of values that fall within a histogram bin. <em>Nbins</em> are defined, with even spacing between <em>lo</em> and <em>hi</em>. Values that fall outside the lo/hi bounds can be treated in different ways; see the discussion of the <em>beyond</em> keyword below.</p> <p>Each input value can be an atom attribute (position, velocity, force component) or can be the result of a <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> or <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> or the evaluation of an equal-style or vector-style or atom-style <a class="reference internal" href="variable.html"><span class="doc">variable</span></a>. The set of input values can be either all global, all per-atom, or all local quantities. Inputs of different kinds (e.g. global and per-atom) cannot be mixed. Atom attributes are per-atom vector values. See the doc page for individual “compute” and “fix” commands to see what kinds of quantities they generate.</p> -<p>The input values must either be all scalars or all vectors (or -arrays), depending on the setting of the <em>mode</em> keyword.</p> <p>Note that the output of this command is a single histogram for all input values combined together, not one histogram per input value. See below for details on the format of the output of this fix.</p> -<p>If <em>mode</em> = vector, then the input values may either be vectors or -arrays. If a global array is listed, then it is the same as if the -individual columns of the array had been listed one by one. -E.g. these 2 fix ave/histo commands are equivalent, since the <a class="reference internal" href="compute_com_chunk.html"><span class="doc">compute com/chunk</span></a> command creates a global array -with 3 columns:</p> +<p>The input values must either be all scalars or all vectors (or +arrays), depending on the setting of the <em>mode</em> keyword.</p> +<p>If <em>mode</em> = scalar, then the input values must be scalars, or vectors +with a bracketed term appended, indicating the Ith value of the vector +is used.</p> +<p>If <em>mode</em> = vector, then the input values must be vectors, or arrays +with a bracketed term appended, indicating the Ith column of the array +is used. All vectors must be the same length, which is the length of +the vector or number of rows in the array.</p> +<p>Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form “*” or “<em>n” or “n</em>” or +“m*n”. If N = the size of the vector (for <em>mode</em> = scalar) or the +number of columns in the array (for <em>mode</em> = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive).</p> +<p>Using a wildcard is the same as if the individual elements of the +vector or columns of the array had been listed one by one. E.g. these +2 fix ave/histo commands are equivalent, since the <a class="reference internal" href="compute_com_chunk.html"><span class="doc">compute com/chunk</span></a> command creates a global array with +3 columns:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">myCOM</span> <span class="nb">all</span> <span class="n">com</span><span class="o">/</span><span class="n">chunk</span> -<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">histo</span> <span class="mi">100</span> <span class="mi">1</span> <span class="mi">100</span> <span class="n">c_myCOM</span> <span class="n">file</span> <span class="n">tmp1</span><span class="o">.</span><span class="n">com</span> <span class="n">mode</span> <span class="n">vector</span> +<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">histo</span> <span class="mi">100</span> <span class="mi">1</span> <span class="mi">100</span> <span class="n">c_myCOM</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> <span class="n">file</span> <span class="n">tmp1</span><span class="o">.</span><span class="n">com</span> <span class="n">mode</span> <span class="n">vector</span> <span class="n">fix</span> <span class="mi">2</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">histo</span> <span class="mi">100</span> <span class="mi">1</span> <span class="mi">100</span> <span class="n">c_myCOM</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_myCOM</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">c_myCOM</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="n">file</span> <span class="n">tmp2</span><span class="o">.</span><span class="n">com</span> <span class="n">mode</span> <span class="n">vector</span> </pre></div> </div> <p>If the fix ave/histo/weight command is used, exactly two values must be specified. If the values are vectors, they must be the same length. The first value (a scalar or vector) is what is histogrammed into bins, in the same manner the fix ave/histo command operates. The second value (a scalar or vector) is used as a “weight”. This means that instead of each value tallying a “1” to its bin, the corresponding weight is tallied. E.g. the Nth entry in the first vector tallies the Nth entry (weight) in the second vector.</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 in order to contribute to the histogram. The final histogram is generated on timesteps that are multiple of <em>Nfreq</em>. It is averaged over <em>Nrepeat</em> histograms, computed in the preceding portion of the simulation every <em>Nevery</em> timesteps. <em>Nfreq</em> must be a multiple of <em>Nevery</em> and <em>Nevery</em> must be non-zero even if <em>Nrepeat</em> is 1. Also, the timesteps contributing to the histogram value cannot overlap, i.e. Nrepeat*Nevery can not exceed Nfreq.</p> <p>For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then input values on timesteps 90,92,94,96,98,100 will be used to compute the final histogram on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time averaging of the histogram is done; a histogram is simply generated on timesteps 100,200,etc.</p> <hr class="docutils" /> <p>The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are self-explanatory. Note that other atom attributes can be used as inputs to this fix by using the <a class="reference internal" href="compute_property_atom.html"><span class="doc">compute property/atom</span></a> command and then specifying an input value from that compute.</p> <p>If a value begins with “<a href="#id1"><span class="problematic" id="id2">c_</span></a>”, a compute ID must follow which has been previously defined in the input script. If <em>mode</em> = scalar, then if no bracketed term is appended, the global scalar calculated by the compute is used. If a bracketed term is appended, the Ith element of the global vector calculated by the compute is used. If <em>mode</em> = vector, then if no bracketed term is appended, the global or per-atom -or local vector calculated by the compute is used. Or if the compute -calculates an array, all of the columns of the array are used as if -they had been specified as individual vectors (see description above). -If a bracketed term is appended, the Ith column of the global or -per-atom or local array calculated by the compute is used.</p> +or local vector calculated by the compute is used. If a bracketed +term is appended, the Ith column of the global or per-atom or local +array calculated by the compute is used. See the discussion above for +how I can be specified with a wildcard asterisk to effectively specify +multiple values.</p> <p>Note that there is a <a class="reference internal" href="compute_reduce.html"><span class="doc">compute reduce</span></a> command which can sum per-atom quantities into a global scalar or vector which can thus be accessed by fix ave/histo. Or it can be a compute defined not in your input script, but by <a class="reference internal" href="thermo_style.html"><span class="doc">thermodynamic output</span></a> or other fixes such as <a class="reference internal" href="fix_nh.html"><span class="doc">fix nvt</span></a> or <a class="reference internal" href="fix_temp_rescale.html"><span class="doc">fix temp/rescale</span></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"><span class="doc">add them to LAMMPS</span></a>.</p> <p>If a value begins with “<a href="#id3"><span class="problematic" id="id4">f_</span></a>”, a fix ID must follow which has been previously defined in the input script. If <em>mode</em> = scalar, then if no bracketed term is appended, the global scalar calculated by the fix is used. If a bracketed term is appended, the Ith element of the global vector calculated by the fix is used. If <em>mode</em> = vector, then if no bracketed term is appended, the global or per-atom or local -vector calculated by the fix is used. Or if the fix calculates an -array, all of the columns of the array are used as if they had been -specified as individual vectors (see description above). If a -bracketed term is appended, the Ith column of the global or per-atom -or local array calculated by the fix is used.</p> +vector calculated by the fix is used. If a bracketed term is +appended, the Ith column of the global or per-atom or local array +calculated by the fix is used. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values.</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"><span class="doc">add them to LAMMPS</span></a>.</p> <p>If a value begins with “<a href="#id5"><span class="problematic" id="id6">v_</span></a>”, a variable name must follow which has been previously defined in the input script. If <em>mode</em> = scalar, then only equal-style or vector-style variables can be used, which both produce global values. In this mode, a vector-style variable requires a bracketed term to specify the Ith element of the vector calculated by the variable. If <em>mode</em> = vector, then only vector-style or atom-style variables can be used, which produce a global or per-atom vector respectively. The vector-style variable must be used without a bracketed term. See the <a class="reference internal" href="variable.html"><span class="doc">variable</span></a> command for details.</p> <p>Note that variables of style <em>equal</em>, <em>vector</em>, and <em>atom</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 histogram.</p> <hr class="docutils" /> <p>Additional optional keywords also affect the operation of this fix.</p> <p>If the <em>mode</em> keyword is set to <em>scalar</em>, then all input values must be global scalars, or elements of global vectors. If the <em>mode</em> keyword is set to <em>vector</em>, then all input values must be global or per-atom or local vectors, or columns of global or per-atom or local arrays.</p> <p>The <em>beyond</em> keyword determines how input values that fall outside the <em>lo</em> to <em>hi</em> bounds are treated. Values such that <em>lo</em> <= value <= <em>hi</em> are assigned to one bin. Values on a bin boundary are assigned to the lower of the 2 bins. If <em>beyond</em> is set to <em>ignore</em> then values < <em>lo</em> and values > <em>hi</em> are ignored, i.e. they are not binned. If <em>beyond</em> is set to <em>end</em> then values < <em>lo</em> are counted in the first bin and values > <em>hi</em> are counted in the last bin. If <em>beyond</em> is set to <em>extend</em> then two extra bins are created, so that there are Nbins+2 total bins. Values < <em>lo</em> are counted in the first bin and values > <em>hi</em> are counted in the last bin (Nbins+1). Values between <em>lo</em> and <em>hi</em> (inclusive) are counted in bins 2 thru Nbins+1. The “coordinate” stored and printed for these two extra bins is <em>lo</em> and <em>hi</em>.</p> <p>The <em>ave</em> keyword determines how the histogram produced every <em>Nfreq</em> steps are averaged with histograms produced on previous steps that were multiples of <em>Nfreq</em>, before they are accessed by another output command or written to a file.</p> <p>If the <em>ave</em> setting is <em>one</em>, then the histograms produced on timesteps that are multiples of <em>Nfreq</em> are independent of each other; they are output as-is without further averaging.</p> <p>If the <em>ave</em> setting is <em>running</em>, then the histograms produced on timesteps that are multiples of <em>Nfreq</em> are summed and averaged in a cumulative sense before being output. Each bin value in the histogram is thus the average of the bin value produced on that timestep with all preceding values for the same bin. This running average begins when the fix is defined; it can only be restarted by deleting the fix via the <a class="reference internal" href="unfix.html"><span class="doc">unfix</span></a> command, or by re-defining the fix by re-specifying it.</p> <p>If the <em>ave</em> setting is <em>window</em>, then the histograms produced on timesteps that are multiples of <em>Nfreq</em> are summed within a moving “window” of time, so that the last M histograms are used to produce the output. E.g. if M = 3 and Nfreq = 1000, then the output on step 10000 will be the combined histogram of the individual histograms on steps 8000,9000,10000. Outputs on early steps will be sums over less than M histograms if they are not available.</p> <p>The <em>start</em> keyword specifies what timestep histogramming will begin on. The default is step 0. Often input values can be 0.0 at time 0, so setting <em>start</em> to a larger value can avoid including a 0.0 in a running or windowed histogram.</p> <p>The <em>file</em> keyword allows a filename to be specified. Every <em>Nfreq</em> steps, one histogram is written to the file. This includes a leading line that contains the timestep, number of bins, the total count of values contributing to the histogram, the count of values that were not histogrammed (see the <em>beyond</em> keyword), the minimum value encountered, and the maximum value encountered. The min/max values include values that were not histogrammed. Following the leading line, one line per bin is written into the file. Each line contains the bin #, the coordinate for the center of the bin (between <em>lo</em> and <em>hi</em>), the count of values in the bin, and the normalized count. The normalized count is the bin count divided by the total count (not including values not histogrammed), so that the normalized values sum to 1.0 across all bins.</p> <p>The <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-default"><div class="highlight"><pre><span></span><span class="c1"># Histogram for fix ID</span> <span class="c1"># TimeStep Number-of-bins Total-counts Missing-counts Min-value Max-value</span> <span class="c1"># Bin Coord Count Count/Total</span> </pre></div> </div> <p>In the first line, ID is replaced with the fix-ID. The second line describes the six values that are printed at the first of each section of output. The third describes the 4 values printed for each bin in the histogram.</p> </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</h2> <p>No information about this fix is written to <a class="reference internal" href="restart.html"><span class="doc">binary restart files</span></a>. None of the <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></a> options are relevant to this fix.</p> <p>This fix produces a global vector and global array which can be accessed by various <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a>. The values can only be accessed on timesteps that are multiples of <em>Nfreq</em> since that is when a histogram is generated. The global vector has 4 values:</p> <ul class="simple"> <li>1 = total counts in the histogram</li> <li>2 = values that were not histogrammed (see <em>beyond</em> keyword)</li> <li>3 = min value of all input values, including ones not histogrammed</li> <li>4 = max value of all input values, including ones not histogrammed</li> </ul> <p>The global array has # of rows = Nbins and # of columns = 3. The first column has the bin coordinate, the 2nd column has the count of values in that histogram bin, and the 3rd column has the bin count divided by the total count (not including missing counts), so that the values in the 3rd column sum to 1.0.</p> <p>The vector and array values calculated by this fix are all treated as intensive. If this is not the case, e.g. due to histogramming per-atom input values, then you will need to account for that when interpreting the values produced by this fix.</p> <p>No parameter of this fix can be used with the <em>start/stop</em> keywords of the <a class="reference internal" href="run.html"><span class="doc">run</span></a> command. This fix is not invoked during <a class="reference internal" href="minimize.html"><span class="doc">energy minimization</span></a>.</p> </div> <div class="section" id="restrictions"> <h2>Restrictions</h2> <blockquote> <div>none</div></blockquote> </div> <div class="section" id="related-commands"> <h2>Related commands</h2> <p><a class="reference internal" href="compute.html"><span class="doc">compute</span></a>, <a class="reference internal" href="fix_ave_atom.html"><span class="doc">fix ave/atom</span></a>, <a class="reference internal" href="fix_ave_chunk.html"><span class="doc">fix ave/chunk</span></a>, <a class="reference internal" href="fix_ave_time.html"><span class="doc">fix ave/time</span></a>, <a class="reference internal" href="variable.html"><span class="doc">variable</span></a>, <a class="reference internal" href="fix_ave_correlate.html"><span class="doc">fix ave/correlate</span></a>,</p> <p><strong>Default:</strong> none</p> <p>The option defaults are mode = scalar, ave = one, start = 0, no file output, beyond = ignore, and title 1,2,3 = strings as described above.</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright 2013 Sandia Corporation. </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/html/fix_ave_time.html b/doc/html/fix_ave_time.html index 8dd384e81..6c6744c5e 100644 --- a/doc/html/fix_ave_time.html +++ b/doc/html/fix_ave_time.html @@ -1,484 +1,497 @@ <!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/time command — LAMMPS documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & 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/time 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-time-command"> <span id="index-0"></span><h1>fix ave/time command</h1> <div class="section" id="syntax"> <h2>Syntax</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="n">ID</span> <span class="n">group</span><span class="o">-</span><span class="n">ID</span> <span class="n">ave</span><span class="o">/</span><span class="n">time</span> <span class="n">Nevery</span> <span class="n">Nrepeat</span> <span class="n">Nfreq</span> <span class="n">value1</span> <span class="n">value2</span> <span class="o">...</span> <span class="n">keyword</span> <span class="n">args</span> <span class="o">...</span> </pre></div> </div> <ul class="simple"> <li>ID, group-ID are documented in <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> command</li> <li>ave/time = style name of this fix command</li> <li>Nevery = use input values every this many timesteps</li> <li>Nrepeat = # of times to use input values for calculating averages</li> <li>Nfreq = calculate 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-default"><div class="highlight"><pre><span></span><span class="n">c_ID</span> <span class="o">=</span> <span class="k">global</span> <span class="n">scalar</span><span class="p">,</span> <span class="n">vector</span><span class="p">,</span> <span class="ow">or</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span> -<span class="n">c_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">component</span> <span class="n">of</span> <span class="k">global</span> <span class="n">vector</span> <span class="ow">or</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="k">global</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span> -<span class="n">f_ID</span> <span class="o">=</span> <span class="k">global</span> <span class="n">scalar</span><span class="p">,</span> <span class="n">vector</span><span class="p">,</span> <span class="ow">or</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span> -<span class="n">f_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">component</span> <span class="n">of</span> <span class="k">global</span> <span class="n">vector</span> <span class="ow">or</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="k">global</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span> +<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">c_ID</span> <span class="o">=</span> <span class="k">global</span> <span class="n">scalar</span> <span class="ow">or</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span> +<span class="n">c_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">component</span> <span class="n">of</span> <span class="k">global</span> <span class="n">vector</span> <span class="ow">or</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="k">global</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">compute</span> <span class="k">with</span> <span class="n">ID</span><span class="p">,</span> <span class="n">I</span> <span class="n">can</span> <span class="n">include</span> <span class="n">wildcard</span> <span class="p">(</span><span class="n">see</span> <span class="n">below</span><span class="p">)</span> +<span class="n">f_ID</span> <span class="o">=</span> <span class="k">global</span> <span class="n">scalar</span> <span class="ow">or</span> <span class="n">vector</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span> +<span class="n">f_ID</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">Ith</span> <span class="n">component</span> <span class="n">of</span> <span class="k">global</span> <span class="n">vector</span> <span class="ow">or</span> <span class="n">Ith</span> <span class="n">column</span> <span class="n">of</span> <span class="k">global</span> <span class="n">array</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">fix</span> <span class="k">with</span> <span class="n">ID</span><span class="p">,</span> <span class="n">I</span> <span class="n">can</span> <span class="n">include</span> <span class="n">wildcard</span> <span class="p">(</span><span class="n">see</span> <span class="n">below</span><span class="p">)</span> <span class="n">v_name</span> <span class="o">=</span> <span class="n">value</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">an</span> <span class="n">equal</span><span class="o">-</span><span class="n">style</span> <span class="ow">or</span> <span class="n">vector</span><span class="o">-</span><span class="n">style</span> <span class="n">variable</span> <span class="k">with</span> <span class="n">name</span> <span class="n">v_name</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> <span class="n">calculated</span> <span class="n">by</span> <span class="n">a</span> <span class="n">vector</span><span class="o">-</span><span class="n">style</span> <span class="n">variable</span> <span class="k">with</span> <span class="n">name</span> </pre></div> </div> <ul class="simple"> <li>zero or more keyword/arg pairs may be appended</li> <li>keyword = <em>mode</em> or <em>file</em> or <em>ave</em> or <em>start</em> or <em>off</em> or <em>overwrite</em> or <em>title1</em> or <em>title2</em> or <em>title3</em></li> </ul> <pre class="literal-block"> <em>mode</em> arg = <em>scalar</em> or <em>vector</em> scalar = all input values are global scalars vector = all input values are global vectors or global arrays <em>ave</em> args = <em>one</em> or <em>running</em> or <em>window M</em> one = output a new average value every Nfreq steps running = output cummulative average of all previous Nfreq steps window M = output average of M most recent Nfreq steps <em>start</em> args = Nstart Nstart = start averaging on this timestep <em>off</em> arg = M = do not average this value M = value # from 1 to Nvalues <em>file</em> arg = filename filename = name of file to output time averages to <em>overwrite</em> arg = none = overwrite output file with only latest output <em>format</em> arg = string string = C-style format string <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, only for vector mode </pre> </div> <div class="section" id="examples"> <h2>Examples</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">time</span> <span class="mi">100</span> <span class="mi">5</span> <span class="mi">1000</span> <span class="n">c_myTemp</span> <span class="n">c_thermo_temp</span> <span class="n">file</span> <span class="n">temp</span><span class="o">.</span><span class="n">profile</span> <span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">time</span> <span class="mi">100</span> <span class="mi">5</span> <span class="mi">1000</span> <span class="n">c_thermo_press</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">ave</span> <span class="n">window</span> <span class="mi">20</span> <span class="o">&</span> <span class="n">title1</span> <span class="s2">"My output values"</span> +<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">time</span> <span class="mi">100</span> <span class="mi">5</span> <span class="mi">1000</span> <span class="n">c_thermo_press</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> <span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">time</span> <span class="mi">1</span> <span class="mi">100</span> <span class="mi">1000</span> <span class="n">f_indent</span> <span class="n">f_indent</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">file</span> <span class="n">temp</span><span class="o">.</span><span class="n">indent</span> <span class="n">off</span> <span class="mi">1</span> </pre></div> </div> </div> <div class="section" id="description"> <h2>Description</h2> <p>Use one or more global values as inputs every few timesteps, and average them over longer timescales. The resulting averages can be used by other <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a> such as <a class="reference internal" href="thermo_style.html"><span class="doc">thermo_style custom</span></a>, and can also be written to a file. Note that if no time averaging is done, this command can be used as a convenient way to simply output one or more global values to a file.</p> <p>The group specified with this command is ignored. However, note that specified values may represent calculations performed by computes and fixes which store their own “group” definitions.</p> <p>Each listed value can be the result of a <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> or <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> or the evaluation of an equal-style or vector-style <a class="reference internal" href="variable.html"><span class="doc">variable</span></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_chunk.html"><span class="doc">fix ave/chunk</span></a>, <a class="reference internal" href="fix_ave_atom.html"><span class="doc">fix ave/atom</span></a>, or <a class="reference internal" href="fix_ave_histo.html"><span class="doc">fix ave/histo</span></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"><span class="doc">compute reduce</span></a> command.</p> <p><a class="reference internal" href="compute.html"><span class="doc">Computes</span></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"><span class="doc">fixes</span></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"><span class="doc">Variables</span></a> of style <em>equal</em> and <em>vector</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 or all vectors (or -arrays), depending on the setting of the <em>mode</em> keyword. In both -cases, the averaging is performed independently on each input value. -I.e. each input scalar is averaged independently and each element of -each input vector (or array) is averaged independently.</p> -<p>If <em>mode</em> = vector, then the input values may either be vectors or -arrays and all must be the same “length”, which is the length of the -vector or number of rows in the array. If a global array is listed, -then it is the same as if the individual columns of the array had been -listed one by one. E.g. these 2 fix ave/time commands are equivalent, -since the <a class="reference internal" href="compute_rdf.html"><span class="doc">compute rdf</span></a> command creates, in this -case, a global array with 3 columns, each of length 50:</p> +<p>The input values must either be all scalars or all vectors depending +on the setting of the <em>mode</em> keyword. In both cases, the averaging is +performed independently on each input value. I.e. each input scalar +is averaged independently or each element of each input vector is +averaged independently.</p> +<p>If <em>mode</em> = scalar, then the input values must be scalars, or vectors +with a bracketed term appended, indicating the Ith value of the vector +is used.</p> +<p>If <em>mode</em> = vector, then the input values must be vectors, or arrays +with a bracketed term appended, indicating the Ith column of the array +is used. All vectors must be the same length, which is the length of +the vector or number of rows in the array.</p> +<p>Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form “*” or “<em>n” or “n</em>” or +“m*n”. If N = the size of the vector (for <em>mode</em> = scalar) or the +number of columns in the array (for <em>mode</em> = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive).</p> +<p>Using a wildcard is the same as if the individual elements of the +vector or columns of the array had been listed one by one. E.g. these +2 fix ave/time commands are equivalent, since the <a class="reference internal" href="compute_rdf.html"><span class="doc">compute rdf</span></a> command creates, in this case, a global array +with 3 columns, each of length 50:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">myRDF</span> <span class="nb">all</span> <span class="n">rdf</span> <span class="mi">50</span> <span class="mi">1</span> <span class="mi">2</span> -<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">time</span> <span class="mi">100</span> <span class="mi">1</span> <span class="mi">100</span> <span class="n">c_myRDF</span> <span class="n">file</span> <span class="n">tmp1</span><span class="o">.</span><span class="n">rdf</span> <span class="n">mode</span> <span class="n">vector</span> +<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">time</span> <span class="mi">100</span> <span class="mi">1</span> <span class="mi">100</span> <span class="n">c_myRDF</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> <span class="n">file</span> <span class="n">tmp1</span><span class="o">.</span><span class="n">rdf</span> <span class="n">mode</span> <span class="n">vector</span> <span class="n">fix</span> <span class="mi">2</span> <span class="nb">all</span> <span class="n">ave</span><span class="o">/</span><span class="n">time</span> <span class="mi">100</span> <span class="mi">1</span> <span class="mi">100</span> <span class="n">c_myRDF</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_myRDF</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">c_myRDF</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="n">file</span> <span class="n">tmp2</span><span class="o">.</span><span class="n">rdf</span> <span class="n">mode</span> <span class="n">vector</span> </pre></div> </div> <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 in order to contribute to the average. The final averaged quantities are generated on timesteps that are a mlutiple of <em>Nfreq</em>. The average is over <em>Nrepeat</em> quantities, computed in the preceding portion of the simulation every <em>Nevery</em> timesteps. <em>Nfreq</em> must be a multiple of <em>Nevery</em> and <em>Nevery</em> must be non-zero even if <em>Nrepeat</em> is 1. Also, the timesteps contributing to the average value cannot overlap, i.e. Nrepeat*Nevery can not exceed Nfreq.</p> <p>For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on timesteps 90,92,94,96,98,100 will be used to compute the final average on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time averaging is done; values are simply generated on timesteps 100,200,etc.</p> <hr class="docutils" /> <p>If a value begins with “<a href="#id1"><span class="problematic" id="id2">c_</span></a>”, a compute ID must follow which has been previously defined in the input script. If <em>mode</em> = scalar, then if no bracketed term is appended, the global scalar calculated by the compute is used. If a bracketed term is appended, the Ith element of the global vector calculated by the compute is used. If <em>mode</em> = vector, then if no bracketed term is appended, the global vector -calculated by the compute is used. Or if the compute calculates an -array, all of the columns of the global array are used as if they had -been specified as individual vectors (see description above). If a -bracketed term is appended, the Ith column of the global array -calculated by the compute is used.</p> +calculated by the compute is used. If a bracketed term is appended, +the Ith column of the global array calculated by the compute is used. +See the discussion above for how I can be specified with a wildcard +asterisk to effectively specify multiple values.</p> <p>Note that there is a <a class="reference internal" href="compute_reduce.html"><span class="doc">compute reduce</span></a> command which can sum per-atom quantities into a global scalar or vector which can thus be accessed by fix ave/time. Or it can be a compute defined not in your input script, but by <a class="reference internal" href="thermo_style.html"><span class="doc">thermodynamic output</span></a> or other fixes such as <a class="reference internal" href="fix_nh.html"><span class="doc">fix nvt</span></a> or <a class="reference internal" href="fix_temp_rescale.html"><span class="doc">fix temp/rescale</span></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"><span class="doc">add them to LAMMPS</span></a>.</p> <p>If a value begins with “<a href="#id3"><span class="problematic" id="id4">f_</span></a>”, a fix ID must follow which has been previously defined in the input script. If <em>mode</em> = scalar, then if no bracketed term is appended, the global scalar calculated by the fix is used. If a bracketed term is appended, the Ith element of the global vector calculated by the fix is used. If <em>mode</em> = vector, then if no bracketed term is appended, the global vector calculated by the -fix is used. Or if the fix calculates an array, all of the columns of -the global array are used as if they had been specified as individual -vectors (see description above). If a bracketed term is appended, the -Ith column of the global array calculated by the fix is used.</p> +fix is used. If a bracketed term is appended, the Ith column of the +global array calculated by the fix is used. See the discussion above +for how I can be specified with a wildcard asterisk to effectively +specify multiple values.</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"><span class="doc">add them to LAMMPS</span></a>.</p> <p>If a value begins with “<a href="#id5"><span class="problematic" id="id6">v_</span></a>”, a variable name must follow which has been previously defined in the input script. If <em>mode</em> = scalar, then only equal-style or vector-style variables can be used, which both produce global values. In this mode, a vector-style variable requires a bracketed term to specify the Ith element of the vector calculated by the variable. If <em>mode</em> = vector, then only a vector-style variable can be used, without a bracketed term. See the <a class="reference internal" href="variable.html"><span class="doc">variable</span></a> command for details.</p> <p>Note that variables of style <em>equal</em> and <em>vector</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 average.</p> <hr class="docutils" /> <p>Additional optional keywords also affect the operation of this fix.</p> <p>If the <em>mode</em> keyword is set to <em>scalar</em>, then all input values must be global scalars, or elements of global vectors. If the <em>mode</em> keyword is set to <em>vector</em>, then all input values must be global vectors, or columns of global arrays. They can also be global arrays, which are converted into a series of global vectors (one per column), as explained above.</p> <p>The <em>ave</em> keyword determines how the values produced every <em>Nfreq</em> steps are averaged with values produced on previous steps that were multiples of <em>Nfreq</em>, before they are accessed by another output command or written to a file.</p> <p>If the <em>ave</em> setting is <em>one</em>, then the values produced on timesteps that are multiples of <em>Nfreq</em> are independent of each other; they are output as-is without further averaging.</p> <p>If the <em>ave</em> setting is <em>running</em>, then the values produced on timesteps that are multiples of <em>Nfreq</em> are summed and averaged in a cummulative sense before being output. Each output value is thus the average of the value produced on that timestep with all preceding values. This running average begins when the fix is defined; it can only be restarted by deleting the fix via the <a class="reference internal" href="unfix.html"><span class="doc">unfix</span></a> command, or by re-defining the fix by re-specifying it.</p> <p>If the <em>ave</em> setting is <em>window</em>, then the values produced on timesteps that are multiples of <em>Nfreq</em> are summed and averaged within a moving “window” of time, so that the last M values are used to produce the output. E.g. if M = 3 and Nfreq = 1000, then the output on step 10000 will be the average of the individual values on steps 8000,9000,10000. Outputs on early steps will average over less than M values if they are not available.</p> <p>The <em>start</em> keyword specifies what timestep averaging will begin on. The default is step 0. Often input values can be 0.0 at time 0, so setting <em>start</em> to a larger value can avoid including a 0.0 in a running or windowed average.</p> <p>The <em>off</em> keyword can be used to flag any of the input values. If a value is flagged, it will not be time averaged. Instead the most recent input value will always be stored and output. This is useful if one of more of the inputs produced by a compute or fix or variable are effectively constant or are simply current values. E.g. they are being written to a file with other time-averaged values for purposes of creating well-formatted output.</p> <p>The <em>file</em> keyword allows a filename to be specified. Every <em>Nfreq</em> steps, one quantity or vector of quantities is written to the file for each input value specified in the fix ave/time command. For <em>mode</em> = scalar, this means a single line is written each time output is performed. Thus the file ends up to be a series of lines, i.e. one column of numbers for each input value. For <em>mode</em> = vector, an array of numbers is written each time output is performed. The number of rows is the length of the input vectors, and the number of columns is the number of values. Thus the file ends up to be a series of these array sections.</p> <p>The <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>format</em> keyword sets the numeric format of each value when it is printed to a file via the <em>file</em> keyword. Note that all values are floating point quantities. The default format is %g. You can specify a higher precision if desired, e.g. %20.16g.</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 2 or 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 for <em>mode</em> = scalar:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># Time-averaged data for fix ID</span> <span class="c1"># TimeStep value1 value2 ...</span> </pre></div> </div> <p>In the first line, ID is replaced with the fix-ID. In the second line the values are replaced with the appropriate fields from the fix ave/time command. There is no third line in the header of the file, so the <em>title3</em> setting is ignored when <em>mode</em> = scalar.</p> <p>By default, these header lines are as follows for <em>mode</em> = vector:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># Time-averaged data for fix ID</span> <span class="c1"># TimeStep Number-of-rows</span> <span class="c1"># Row value1 value2 ...</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 values are replaced with the appropriate fields from the fix ave/time command.</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</h2> <p>No information about this fix is written to <a class="reference internal" href="restart.html"><span class="doc">binary restart files</span></a>. None of the <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></a> options are relevant to this fix.</p> <p>This fix produces a global scalar or global vector or global array which can be accessed by various <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">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.</p> <p>A scalar is produced if only a single input value is averaged and <em>mode</em> = scalar. A vector is produced if multiple input values are averaged for <em>mode</em> = scalar, or a single input value for <em>mode</em> = vector. In the first case, the length of the vector is the number of inputs. In the second case, the length of the vector is the same as the length of the input vector. An array is produced if multiple input values are averaged and <em>mode</em> = vector. The global array has # of rows = length of the input vectors and # of columns = number of inputs.</p> <p>If the fix prouduces a scalar or vector, then the scalar and each element of the vector can be either “intensive” or “extensive”, depending on whether the values contributing to the scalar or vector element are “intensive” or “extensive”. If the fix produces an array, then all elements in the array must be the same, either “intensive” or “extensive”. If a compute or fix provides the value being time averaged, then the compute or fix determines whether the value is intensive or extensive; see the doc page for that compute or fix for further info. Values produced by a variable are treated as intensive.</p> <p>No parameter of this fix can be used with the <em>start/stop</em> keywords of the <a class="reference internal" href="run.html"><span class="doc">run</span></a> command. This fix is not invoked during <a class="reference internal" href="minimize.html"><span class="doc">energy minimization</span></a>.</p> </div> <div class="section" id="restrictions"> <h2>Restrictions</h2> <blockquote> <div>none</div></blockquote> </div> <div class="section" id="related-commands"> <h2>Related commands</h2> <p><a class="reference internal" href="compute.html"><span class="doc">compute</span></a>, <a class="reference internal" href="fix_ave_atom.html"><span class="doc">fix ave/atom</span></a>, <a class="reference internal" href="fix_ave_chunk.html"><span class="doc">fix ave/chunk</span></a>, <a class="reference internal" href="fix_ave_histo.html"><span class="doc">fix ave/histo</span></a>, <a class="reference internal" href="variable.html"><span class="doc">variable</span></a>, <a class="reference internal" href="fix_ave_correlate.html"><span class="doc">fix ave/correlate</span></a>,</p> </div> <div class="section" id="default"> <h2>Default</h2> <p>The option defaults are mode = scalar, ave = one, start = 0, no file output, format = %g, title 1,2,3 = strings as described above, and no off settings for any input values.</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright 2013 Sandia Corporation. </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/html/pair_modify.html b/doc/html/pair_modify.html index b45eacca3..3dbe93a18 100644 --- a/doc/html/pair_modify.html +++ b/doc/html/pair_modify.html @@ -1,431 +1,431 @@ <!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_modify command — LAMMPS documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & 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_modify 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-modify-command"> <span id="index-0"></span><h1>pair_modify command</h1> <div class="section" id="syntax"> <h2>Syntax</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">pair_modify</span> <span class="n">keyword</span> <span class="n">values</span> <span class="o">...</span> </pre></div> </div> <ul class="simple"> <li>one or more keyword/value pairs may be listed</li> <li>keyword = <em>pair</em> or <em>shift</em> or <em>mix</em> or <em>table</em> or <em>table/disp</em> or <em>tabinner</em> or <em>tabinner/disp</em> or <em>tail</em> or <em>compute</em></li> </ul> <pre class="literal-block"> <em>pair</em> values = sub-style N <em>special</em> which wt1 wt2 wt3 sub-style = sub-style of <a class="reference internal" href="pair_hybrid.html"><span class="doc">pair hybrid</span></a> N = which instance of sub-style (only if sub-style is used multiple times) <em>special</em> which wt1 wt2 wt3 = override <em>special_bonds</em> settings (optional) which = <em>lj/coul</em> or <em>lj</em> or <em>coul</em> w1,w2,w3 = 1-2, 1-3, and 1-4 weights from 0.0 to 1.0 inclusive <em>mix</em> value = <em>geometric</em> or <em>arithmetic</em> or <em>sixthpower</em> <em>shift</em> value = <em>yes</em> or <em>no</em> <em>table</em> value = N 2^N = # of values in table <em>table/disp</em> value = N 2^N = # of values in table <em>tabinner</em> value = cutoff cutoff = inner cutoff at which to begin table (distance units) <em>tabinner/disp</em> value = cutoff cutoff = inner cutoff at which to begin table (distance units) <em>tail</em> value = <em>yes</em> or <em>no</em> <em>compute</em> value = <em>yes</em> or <em>no</em> </pre> </div> <div class="section" id="examples"> <h2>Examples</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">pair_modify</span> <span class="n">shift</span> <span class="n">yes</span> <span class="n">mix</span> <span class="n">geometric</span> <span class="n">pair_modify</span> <span class="n">tail</span> <span class="n">yes</span> <span class="n">pair_modify</span> <span class="n">table</span> <span class="mi">12</span> <span class="n">pair_modify</span> <span class="n">pair</span> <span class="n">lj</span><span class="o">/</span><span class="n">cut</span> <span class="n">compute</span> <span class="n">no</span> <span class="n">pair_modify</span> <span class="n">pair</span> <span class="n">lj</span><span class="o">/</span><span class="n">cut</span><span class="o">/</span><span class="n">coul</span><span class="o">/</span><span class="n">long</span> <span class="mi">1</span> <span class="n">special</span> <span class="n">lj</span><span class="o">/</span><span class="n">coul</span> <span class="mf">0.0</span> <span class="mf">0.0</span> <span class="mf">0.0</span> </pre></div> </div> </div> <div class="section" id="description"> <h2>Description</h2> <p>Modify the parameters of the currently defined pair style. Not all parameters are relevant to all pair styles.</p> <p>If used, the <em>pair</em> keyword must appear first in the list of keywords. It can only be used with the <a class="reference internal" href="pair_hybrid.html"><span class="doc">hybrid and hybrid/overlay</span></a> pair styles. It means that all the following parameters will only be modified for the specified sub-style. If the sub-style is defined multiple times, then an additional numeric argument <em>N</em> must also be specified, which is a number from 1 to M where M is the number of times the sub-style was listed in the <a class="reference internal" href="pair_hybrid.html"><span class="doc">pair_style hybrid</span></a> command. The extra number indicates which instance of the sub-style the remaining keywords will be applied to. Note that if the <em>pair</em> keyword is not used, and the pair style is <em>hybrid</em> or <em>hybrid/overlay</em>, then all the specified keywords will be applied to all sub-styles.</p> <p>The <em>special</em> keyword can only be used in conjunction with the <em>pair</em> keyword and must directly follow it. It allows to override the <a class="reference internal" href="special_bonds.html"><span class="doc">special_bonds</span></a> settings for the specified sub-style. More details are given below.</p> <p>The <em>mix</em> keyword affects pair coefficients for interactions between atoms of type I and J, when I != J and the coefficients are not explicitly set in the input script. Note that coefficients for I = J must be set explicitly, either in the input script via the “pair_coeff” command or in the “Pair Coeffs” section of the <a class="reference internal" href="read_data.html"><span class="doc">data file</span></a>. For some pair styles it is not necessary to specify coefficients when I != J, since a “mixing” rule will create them from the I,I and J,J settings. The pair_modify <em>mix</em> value determines what formulas are used to compute the mixed coefficients. In each case, the cutoff distance is mixed the same way as sigma.</p> <p>Note that not all pair styles support mixing. Also, some mix options are not available for certain pair styles. See the doc page for individual pair styles for those restrictions. Note also that the <a class="reference internal" href="pair_coeff.html"><span class="doc">pair_coeff</span></a> command also can be to directly set coefficients for a specific I != J pairing, in which case no mixing is performed.</p> <p>mix <em>geometric</em></p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">epsilon_ij</span> <span class="o">=</span> <span class="n">sqrt</span><span class="p">(</span><span class="n">epsilon_i</span> <span class="o">*</span> <span class="n">epsilon_j</span><span class="p">)</span> <span class="n">sigma_ij</span> <span class="o">=</span> <span class="n">sqrt</span><span class="p">(</span><span class="n">sigma_i</span> <span class="o">*</span> <span class="n">sigma_j</span><span class="p">)</span> </pre></div> </div> <p>mix <em>arithmetic</em></p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">epsilon_ij</span> <span class="o">=</span> <span class="n">sqrt</span><span class="p">(</span><span class="n">epsilon_i</span> <span class="o">*</span> <span class="n">epsilon_j</span><span class="p">)</span> <span class="n">sigma_ij</span> <span class="o">=</span> <span class="p">(</span><span class="n">sigma_i</span> <span class="o">+</span> <span class="n">sigma_j</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span> </pre></div> </div> <p>mix <em>sixthpower</em></p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">epsilon_ij</span> <span class="o">=</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">sqrt</span><span class="p">(</span><span class="n">epsilon_i</span><span class="o">*</span><span class="n">epsilon_j</span><span class="p">)</span> <span class="o">*</span> <span class="n">sigma_i</span><span class="o">^</span><span class="mi">3</span> <span class="o">*</span> <span class="n">sigma_j</span><span class="o">^</span><span class="mi">3</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">sigma_i</span><span class="o">^</span><span class="mi">6</span> <span class="o">+</span> <span class="n">sigma_j</span><span class="o">^</span><span class="mi">6</span><span class="p">)</span> <span class="n">sigma_ij</span> <span class="o">=</span> <span class="p">((</span><span class="n">sigma_i</span><span class="o">**</span><span class="mi">6</span> <span class="o">+</span> <span class="n">sigma_j</span><span class="o">**</span><span class="mi">6</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span> <span class="o">^</span> <span class="p">(</span><span class="mi">1</span><span class="o">/</span><span class="mi">6</span><span class="p">)</span> </pre></div> </div> <p>The <em>shift</em> keyword determines whether a Lennard-Jones potential is shifted at its cutoff to 0.0. If so, this adds an energy term to each pairwise interaction which will be included in the thermodynamic output, but does not affect pair forces or atom trajectories. See the doc page for individual pair styles to see which ones support this option.</p> <p>The <em>table</em> and <em>table/disp</em> keywords apply to pair styles with a long-range Coulombic term or long-range dispersion term respectively; see the doc page for individual styles to see which potentials support these options. If N is non-zero, a table of length 2^N is pre-computed for forces and energies, which can shrink their computational cost by up to a factor of 2. The table is indexed via a -bit-mapping technique <a class="reference internal" href="#wolff"><span class="std std-ref">(Wolff)</span></a> and a linear interpolation is +bit-mapping technique <a class="reference internal" href="pair_table_rx.html#wolff"><span class="std std-ref">(Wolff)</span></a> and a linear interpolation is performed between adjacent table values. In our experiments with different table styles (lookup, linear, spline), this method typically gave the best performance in terms of speed and accuracy.</p> <p>The choice of table length is a tradeoff in accuracy versus speed. A larger N yields more accurate force computations, but requires more memory which can slow down the computation due to cache misses. A reasonable value of N is between 8 and 16. The default value of 12 (table of length 4096) gives approximately the same accuracy as the no-table (N = 0) option. For N = 0, forces and energies are computed directly, using a polynomial fit for the needed erfc() function evaluation, which is what earlier versions of LAMMPS did. Values greater than 16 typically slow down the simulation and will not improve accuracy; values from 1 to 8 give unreliable results.</p> <p>The <em>tabinner</em> and <em>tabinner/disp</em> keywords set an inner cutoff above which the pairwise computation is done by table lookup (if tables are invoked), for the corresponding Coulombic and dispersion tables discussed with the <em>table</em> and <em>table/disp</em> keywords. The smaller the cutoff is set, the less accurate the table becomes (for a given number of table values), which can require use of larger tables. The default cutoff value is sqrt(2.0) distance units which means nearly all pairwise interactions are computed via table lookup for simulations with “real” units, but some close pairs may be computed directly (non-table) for simulations with “lj” units.</p> <p>When the <em>tail</em> keyword is set to <em>yes</em>, certain pair styles will add a long-range VanderWaals tail “correction” to the energy and pressure. These corrections are bookkeeping terms which do not affect dynamics, unless a constant-pressure simulation is being performed. See the doc page for individual styles to see which support this option. These corrections are included in the calculation and printing of thermodynamic quantities (see the <a class="reference internal" href="thermo_style.html"><span class="doc">thermo_style</span></a> command). Their effect will also be included in constant NPT or NPH simulations where the pressure influences the simulation box dimensions (e.g. the <a class="reference internal" href="fix_nh.html"><span class="doc">fix npt</span></a> and <a class="reference internal" href="fix_nh.html"><span class="doc">fix nph</span></a> commands). The formulas used for the long-range corrections come from equation 5 of <a class="reference internal" href="#sun"><span class="std std-ref">(Sun)</span></a>.</p> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">The tail correction terms are computed at the beginning of each run, using the current atom counts of each atom type. If atoms are deleted (or lost) or created during a simulation, e.g. via the <a class="reference internal" href="fix_gcmc.html"><span class="doc">fix gcmc</span></a> command, the correction factors are not re-computed. If you expect the counts to change dramatically, you can break a run into a series of shorter runs so that the correction factors are re-computed more frequently.</p> </div> <p>Several additional assumptions are inherent in using tail corrections, including the following:</p> <ul class="simple"> <li>The simulated system is a 3d bulk homogeneous liquid. This option should not be used for systems that are non-liquid, 2d, have a slab geometry (only 2d periodic), or inhomogeneous.</li> <li>G(r), the radial distribution function (rdf), is unity beyond the cutoff, so a fairly large cutoff should be used (i.e. 2.5 sigma for an LJ fluid), and it is probably a good idea to verify this assumption by checking the rdf. The rdf is not exactly unity beyond the cutoff for each pair of interaction types, so the tail correction is necessarily an approximation.</li> </ul> <p>The tail corrections are computed at the beginning of each simulation run. If the number of atoms changes during the run, e.g. due to atoms leaving the simulation domain, or use of the <a class="reference internal" href="fix_gcmc.html"><span class="doc">fix gcmc</span></a> command, then the corrections are not updates to relect the changed atom count. If this is a large effect in your simulation, you should break the long run into several short runs, so that the correction factors are re-computed multiple times.</p> <ul class="simple"> <li>Thermophysical properties obtained from calculations with this option enabled will not be thermodynamically consistent with the truncated force-field that was used. In other words, atoms do not feel any LJ pair interactions beyond the cutoff, but the energy and pressure reported by the simulation include an estimated contribution from those interactions.</li> </ul> <p>The <em>compute</em> keyword allows pairwise computations to be turned off, even though a <a class="reference internal" href="pair_style.html"><span class="doc">pair_style</span></a> is defined. This is not useful for running a real simulation, but can be useful for debugging purposes or for performing a <a class="reference internal" href="rerun.html"><span class="doc">rerun</span></a> simulation, when you only wish to compute partial forces that do not include the pairwise contribution.</p> <p>Two examples are as follows. First, this option allows you to perform a simulation with <a class="reference internal" href="pair_hybrid.html"><span class="doc">pair_style hybrid</span></a> with only a subset of the hybrid sub-styles enabled. Second, this option allows you to perform a simulation with only long-range interactions but no short-range pairwise interactions. Doing this by simply not defining a pair style will not work, because the <a class="reference internal" href="kspace_style.html"><span class="doc">kspace_style</span></a> command requires a Kspace-compatible pair style be defined.</p> <hr class="docutils" /> <p>The <em>special</em> keyword allows to override the 1-2, 1-3, and 1-4 exclusion settings for individual sub-styles of a <a class="reference internal" href="pair_hybrid.html"><span class="doc">hybrid pair style</span></a>. It requires 4 arguments similar to the <a class="reference internal" href="special_bonds.html"><span class="doc">special_bonds</span></a> command, <em>which</em> and wt1,wt2,wt3. The <em>which</em> argument can be <em>lj</em> to change the Lennard-Jones settings, <em>coul</em> to change the Coulombic settings, or <em>lj/coul</em> to change both to the same set of 3 values. The wt1,wt2,wt3 values are numeric weights from 0.0 to 1.0 inclusive, for the 1-2, 1-3, and 1-4 bond topology neighbors, respectively. The <em>special</em> keyword can only be used in conjunction with the <em>pair</em> keyword and has to directly follow it.</p> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">The global settings specified by the <a class="reference internal" href="special_bonds.html"><span class="doc">special_bonds</span></a> command affect the construction of neighbor lists. Weights of 0.0 (for 1-2, 1-3, or 1-4 neighbors) exclude those pairs from the neighbor list entirely. Weights of 1.0 store the neighbor with no weighting applied. Thus only global values different from exactly 0.0 or 1.0 can be overridden and an error is generated if the requested setting is not compatible with the global setting. Substituting 1.0e-10 for 0.0 and 0.9999999999 for 1.0 is usually a sufficient workaround in this case without causing a significant error.</p> </div> </div> <hr class="docutils" /> <div class="section" id="restrictions"> <h2>Restrictions</h2> <blockquote> <div>none</div></blockquote> <p>You cannot use <em>shift</em> yes with <em>tail</em> yes, since those are conflicting options. You cannot use <em>tail</em> yes with 2d simulations.</p> </div> <div class="section" id="related-commands"> <h2>Related commands</h2> <p><a class="reference internal" href="pair_style.html"><span class="doc">pair_style</span></a>, <a class="reference internal" href="pair_coeff.html"><span class="doc">pair_coeff</span></a>, <a class="reference internal" href="thermo_style.html"><span class="doc">thermo_style</span></a></p> </div> <div class="section" id="default"> <h2>Default</h2> <p>The option defaults are mix = geometric, shift = no, table = 12, tabinner = sqrt(2.0), tail = no, and compute = yes.</p> <p>Note that some pair styles perform mixing, but only a certain style of mixing. See the doc pages for individual pair styles for details.</p> <hr class="docutils" /> <p id="wolff"><strong>(Wolff)</strong> Wolff and Rudd, Comp Phys Comm, 120, 200-32 (1999).</p> <p id="sun"><strong>(Sun)</strong> Sun, J Phys Chem B, 102, 7338-7364 (1998).</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright 2013 Sandia Corporation. </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js index da2bc9718..ed8cb0928 100644 --- a/doc/html/searchindex.js +++ b/doc/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:50,filenames:["Manual","Section_accelerate","Section_howto","Section_python","accelerate_intel","angle_charmm","angle_class2","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_quartic","angle_sdk","balance","bond_class2","bond_fene","bond_fene_expand","bond_harmonic","bond_harmonic_shift","bond_harmonic_shift_cut","bond_morse","bond_nonlinear","bond_quartic","compute_centro_atom","compute_cna_atom","compute_dpd","compute_fep","compute_gyration","compute_gyration_chunk","compute_heat_flux","compute_hexorder_atom","compute_msd_nongauss","compute_orientorder_atom","compute_pressure","compute_rigid_local","compute_saed","compute_sna_atom","compute_stress_atom","compute_xrd","create_atoms","dihedral_charmm","dihedral_class2","dihedral_cosine_shift_exp","dihedral_fourier","dihedral_harmonic","dihedral_helix","dihedral_multi_harmonic","dihedral_nharmonic","dihedral_opls","dihedral_quadratic","dihedral_spherical","dihedral_style","dump_image","fix_atc","fix_balance","fix_bond_swap","fix_box_relax","fix_ehex","fix_eos_cv","fix_eos_table_rx","fix_gld","fix_lb_fluid","fix_nh","fix_nphug","fix_orient","fix_pimd","fix_qbmsst","fix_restrain","fix_rx","fix_shake","fix_spring_rg","fix_ti_rs","fix_ti_spring","fix_ttm","fix_wall","fix_wall_region","improper_class2","improper_cossq","improper_cvff","improper_distance","improper_fourier","improper_harmonic","improper_ring","improper_umbrella","manifolds","minimize","neb","pair_adp","pair_airebo","pair_beck","pair_body","pair_bop","pair_born","pair_buck","pair_buck_long","pair_charmm","pair_class2","pair_colloid","pair_comb","pair_coul","pair_coul_diel","pair_cs","pair_dipole","pair_dpd","pair_dpd_fdt","pair_eam","pair_edip","pair_eff","pair_eim","pair_exp6_rx","pair_gauss","pair_gayberne","pair_gran","pair_gromacs","pair_hbond_dreiding","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_mdf","pair_meam","pair_meam_spline","pair_meam_sw_spline","pair_mgpt","pair_mie","pair_modify","pair_morse","pair_multi_lucy","pair_multi_lucy_rx","pair_nb3b_harmonic","pair_nm","pair_polymorphic","pair_resquared","pair_sdk","pair_smtbq","pair_snap","pair_soft","pair_sph_idealgas","pair_sph_taitwater","pair_sph_taitwater_morris","pair_srp","pair_sw","pair_tersoff","pair_tersoff_mod","pair_tersoff_zbl","pair_vashishta","pair_yukawa","pair_yukawa_colloid","pair_zbl","tutorial_github"],objects:{},objnames:{},objtypes:{},terms:{"00a":77,"00b":77,"02214e23":35,"0b1":3,"0e4":118,"0x98b5e0":58,"100k":1,"1024x1024":58,"10e":107,"10x":[91,92,97],"12th":74,"16e":74,"16x":1,"18986e":91,"1_prop":2,"1fluid":[115,142],"1st":[2,5,32,46,65,68,74,93,94,97,104,111,113,114,115,128,129,134,135,136,141,142,143,145,149,155,156,157,158,159],"2000k":58,"20x":97,"23899e":91,"2400k":58,"2697v2":4,"2697v4":4,"298k":106,"2k_ss":113,"2nd":[2,3,21,22,62,65,68,82,91,92,94,104,113,120,134,141,142,149,155,156,157,158,159],"2theta":44,"2x5":113,"36x":4,"3806504e":[2,35],"3n_k":66,"3nk":72,"3rd":[5,37,65,104,113,115,120,141,142,149,155,156,157,158,159],"3x3":35,"4857990943e":113,"49e":74,"4_94":3,"4th":[2,46,74,93,94,97,111,114,115,118,134,141,142,143,145,149,155,156,158,159],"50k":1,"512k":4,"524k":4,"5_1":97,"5th":[91,115],"66e":74,"6x6":2,"7120p":4,"8706e":148,"8706q":148,"8730m":148,"8730n":148,"8x1":2,"8x2":2,"948q":148,"9jan09":118,"9th":92,"break":[28,113,139],"case":[1,2,3,4,19,21,22,29,30,45,46,58,60,62,67,68,69,70,72,73,74,79,80,81,91,92,94,101,103,105,107,111,113,117,118,120,130,131,132,134,137,139,141,142,143,145,150,154,156,158,162,163],"catch":1,"char":[2,148],"class":[1,2,3,57,102,159],"default":[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],"export":[4,58],"final":[2,3,19,32,43,60,62,68,69,72,74,77,79,91,92,93,94,97,111,114,115,130,134,143,145,155,156,158,159,163],"float":[2,4,113],"function":[1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,32,35,39,42,46,47,48,49,50,51,52,53,54,55,56,59,62,65,66,67,68,69,71,73,74,75,77,78,79,80,82,83,84,86,87,88,89,91,93,94,95,97,98,99,100,101,102,103,104,105,106,108,109,110,111,112,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,150,151,152,153,155,156,157,158,159,160,161,162],"import":[1,2,3,37,45,50,62,68,79,130,137],"int":[2,3,79],"long":[1,2,4,18,32,39,43,46,51,58,59,63,68,75,79,91,92,95],"new":[0,2,3,19,32,45,58,60,61,62,63,68,69,71,75,91,92,111,134,137,141,142,163],"null":[2,35,36,38,39,43,45,74,76,93,94,104,111,114,118,134,135,136,143,145,149,155,156,157,158,159],"public":[0,114,141,142,148],"return":[2,3,4,19,45,68,118],"short":[1,2,4,68,90,94,97,98,99,100,101,104,105,107,113,122,126,130,133,134,139,140,144,147,148,163],"static":[2,19,58,60,68,118],"switch":[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,35,39,42,44,46,47,48,49,50,51,52,53,54,55,58,67,68,69,75,77,78,82,83,84,86,87,88,89,92,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,114,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,137,140,143,144,146,147,150,155,156,157,158,159,160,161,162,163],"true":[2,40,60,68,70,71,113,118,148,155],"try":[1,67,77,78,163],"var":[3,45],"void":[2,19,60],"while":[1,3,29,37,42,50,62,66,67,68,72,74,91,97,106,111,156,158,159],_j1m1m1:42,_j2m2m2:42,_manifold_rattl:163,_wirnsberg:63,a12:146,a2m:[2,35],a_0:[67,79,97],a_0_real:67,a_1:79,a_2:79,a_3:79,a_4:79,a_c:103,a_cc:103,a_f:158,a_ij:97,a_pi:97,a_sigma:97,a_ss:103,aat:47,aberdeen:[31,64],abil:[62,68,113],abl:[3,61],ablat:79,about:[0,1,2,3,4,19,41,45,58,59,60,61,62,63,67,69,70,73,75,76,77,78,79,80,81,90,91,92,96,101,105,161,163],abov:[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,32,33,34,35,39,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,60,61,62,68,69,71,73,74,82,83,84,85,86,87,88,89,92,95,96,97,98,99,100,101,102,103,104,105,106,108,109,110,111,112,113,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,137,138,139,140,141,142,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],abscissa:[141,142],absolut:[74,91,118,122],absorb:79,abstol:74,ac3:44,acceler:0,accelri:2,accept:[32,45,61,74,100,126,163],acceptor:120,access:[0,2,3,4,29,30,31,33,34,35,36,37,38,39,40,41,42,43,44,59,60,61,62,63,66,67,68,69,70,72,73,75,76,77,78,79,80,81,94,116,118,120,134,150],accident:163,accidenti:88,accomod:68,accomplish:4,accord:[2,31,58,65,67,68,72,77,78,79,80,81,113,118,125,128,145,148,150,151,152,153,154],accordingli:[3,131,132,154],account:[2,32,41,44,57,63,68,70,75,76,79,86,105,110,118,122,126,131,132,134,137,148,163],accumul:[2,31],accur:[1,2,19,60,74,75,81,97,113,117,118,139,146,156,158],accuraci:[1,2,19,60,63,68,75,94,113,139,141,142],achiev:[1,2,4,13,19,60,63,68,71,72],ackland1:111,ackland2:111,ackland:111,acknowledg:0,acolor:58,acquir:[2,62,68],across:[1,2,19,60,74,79,81,92],act:[2,40,67,77,78,79,81,91,108,117,118,120,146,154],acta:[41,44,93],actinid:137,action:[2,3,66,78],activ:[3,4,32,66,74,130],actual:[1,2,70,117,119,125,131,132,154],adapt:[2,32,74,130,131,150],adapti:70,adaptiv:94,add:[0,1,2,3,4,32,35,40,45,58,59,63,67,68,69,70,73,75,78,79,80,81,94,98,99,102,105,113,122,134,139,140,144,147,163],add_molecul:59,add_speci:59,add_to_nodeset:59,added:163,addforc:91,adding:[73,163],addit:[1,2,4,5,13,19,45,56,57,58,60,62,63,65,67,68,69,70,75,80,81,92,93,94,97,98,99,101,104,105,108,110,111,112,113,114,118,119,121,122,130,132,133,134,135,136,137,139,141,142,143,144,145,147,148,149,155,156,157,158,159,162,163],addition:[0,2,3,4,58,79,92,117,146,163],address:[3,58,163],addtorqu:91,adequ:92,adher:13,adhikari:67,adiabat:0,adiam:58,adjac:[45,63,92,139,156],adjiman:138,adjust:[2,4,19,41,44,58,60,62,68,69,70,72,74,80,91,92,94,131,132,148,158],admiss:69,adopt:73,advanc:[4,97],advantag:[1,2,3,19,60,112],advect:2,advis:[74,92],affect:[1,2,43,58,61,62,63,76,79,88,91,92,113,131,132,139],affin:[4,104],afshar:109,after:[2,3,6,19,45,47,56,58,59,60,61,62,67,68,72,74,75,77,78,80,82,91,93,94,97,104,111,112,113,114,115,130,131,132,134,135,136,137,141,142,143,145,148,149,155,156,157,158,159,163],afterword:19,ag1:44,ag2:44,again:[2,3,42,63,82,92,131,132],against:[3,92],aggreg:[2,76],aggress:63,agre:[91,94],ahd:120,aidan:0,aim:2,aka:58,al2o3:148,al2o3_001:41,al3:44,ala:[67,148],alat:[70,134],albe:[145,156,158],albeit:73,alchem:32,alcu:[93,97],alcu_eam:145,alderton:108,alejandr:68,algebra:137,algorithm:[0,1,2,19,59,60,61,63,67,71,75,79,91,110,113,132,137],alia:4,alias:1,align:[2,13,19,60],alkali:113,all:[0,1,2,3,4,19,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,78,79,80,81,82,86,91,92,93,94,96,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,118,119,120,121,122,123,124,126,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,161,162,163],allen:[13,32,108,117],allentildeslei:32,alloc:[2,3],alloi:[93,97,105],allow:[1,2,3,4,19,36,38,44,45,57,58,59,60,61,62,66,67,68,70,72,73,74,75,76,77,78,79,80,81,91,92,94,97,98,99,100,101,105,111,113,118,119,120,122,126,131,132,137,139,145,146,148,154,161,163],almost:[4,72,79,154],alo:105,alon:[2,61],along:[2,13,29,32,41,44,45,58,61,63,67,72,75,76,79,81,90,91,92,105,108,118,122,126,134],alonso:[135,136],alpha:[2,26,67,72,91,93,95,98,105,109,110,111,112,114,115,120,121,122,134,140,157],alpha_c:130,alpha_i:149,alpha_lj:130,alphabet:57,alreadi:[45,60,72,92,109,119,124,132,154,162],also:[0,1,2,3,4,13,18,19,28,29,30,31,32,33,34,36,37,38,39,42,43,45,46,57,58,60,61,62,64,65,66,67,68,69,70,71,72,73,74,75,76,79,81,91,92,97,100,101,106,107,108,109,111,112,113,117,118,120,126,130,131,134,137,139,143,145,146,147,151,152,153,155,156,157,158,159,163],alter:[2,3,19,45,58,61,62,68,92],altern:[1,2,3,4,35,45,64,68,74,83,87,91,93,94,105,110,111,112,114,122,130,134,135,136,143,145,149,155,156,158,159],alternat:91,although:[4,13,68],aluminum:162,alwai:[0,2,3,4,28,80,81,82,91,99,102,111,125,137,141,142,148,150,156,158,162],amaz:3,amber2lmp:0,amber:0,ambient:58,amd:137,among:[4,43,67],amorph:[45,157],amount:[1,2,58,62,68,70,74,109],amplitud:88,amzallag:148,analag:2,analalog:2,analog:[2,38,42,118],analysi:[30,137,149],analyt:[1,41,44,75,97,124,137,145],analyz:[2,92,137],andersen:75,anderson:109,andzelm:154,ang:[4,70],angl:[0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,28,32,36,38,39,41,42,43,44,45,47,48,49,51,53,55,56,57,58,61,68,73,75,82,83,84,86,87,88,89,91,94,97,105,112,120,122,126,130,135,136,143,159],angle1:73,angle2:73,angle:[4,13],angle_coeff:[5,6,7,8,9,10,11,12,13,14,15,16,17,18],angle_cosine_shift:11,angle_cosine_shift_exp:[10,48],angle_cutof:120,angle_cutoff:120,angle_hybrid:13,angle_styl:[0,2],angleangl:82,angleangletors:47,angletors:47,angmom:2,angmomi:40,angmomx:40,angmomz:40,angstrom:[2,40,41,44,45,58,80,93,94,101,111,130,134,143,158,162],angular:[2,13,40,42,45,75,93,97,104,118,131,132,134,137,145,156,157],anharmon:[11,27,48],ani:[1,2,3,4,13,19,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,56,58,60,61,62,63,65,67,68,69,70,71,74,75,79,80,81,91,92,94,97,100,101,104,105,108,109,111,112,114,117,126,137,139,141,142,145,146,149,155,156,157,158,159,163],anihil:[130,140],anim:[3,58,92],animat:58,anion:[114,148],aniso:[62,68,69],anisotrop:[117,146],ann:138,annoi:163,annot:[155,156,157,158,159],anoth:[2,3,4,13,58,61,63,66,68,69,79,91,92,105,109,113,114,117,120,121,122,130,146,150,154,156,157,158,163],another:[1,2,32,90],ansi:4,anthoni:78,antisymmetri:113,antonelli:[77,78],any:[1,2,58,154],anymor:78,anyth:[3,45,155,156,158,163],anywher:[45,134,149],aparam:32,apart:[96,150],api:3,appear:[2,3,19,32,36,38,42,45,58,60,62,82,91,92,103,111,134,139,141,142,148,159],append:[1,3,4,19,29,32,34,35,36,37,38,39,41,42,43,44,45,58,60,61,62,63,66,67,68,69,71,72,73,75,78,80,97,113,154],appendix:[13,108,148],appl:[62,68,159],appli:[2,13,19,32,37,42,43,44,45,46,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,75,78,79,91,92,96,98,99,101,105,108,113,115,118,119,120,122,128,132,137,139,142,144,147,154,161],applic:[1,2,4,61,70,73,158],applicat:59,appling:62,apply:[32,62,75,76],approach:[2,4,56,59,66,71,78,79,97,105,107,110,117,137,146,154],appropri:[1,2,3,30,35,40,57,61,62,67,68,69,71,72,80,81,92,94,97,100,103,104,105,112,118,126,130,137,155,156,157,158,159],approxim:[2,41,44,67,71,75,90,91,107,113,115,117,131,132,137,139,142,146,148,161],april:3,apu:[131,132],aqua:58,ar_thermal:59,ar_ttm:59,arbitrari:[2,58,68,71,74,155],arbitrarili:[3,42,62,68,105],arch:1,architectur:137,archiv:2,archive:3,area:[2,19,35,39,60,67,118],arg:[3,19,32,45,60,63,73,78,80,92,98,99,101,102,107,108,110,113,119,122,126,130,131,132,133,140,144,147],argument:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,32,35,38,39,42,43,45,46,47,48,49,50,51,52,53,54,55,60,62,65,68,69,74,75,79,82,83,84,86,87,88,89,92,93,94,95,96,97,98,99,100,101,102,103,104,105,107,108,109,110,111,112,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,133,134,135,136,139,140,141,142,143,144,145,146,147,148,149,150,155,156,157,158,159,160,161,162],aris:161,arithmet:[2,101,103,125,139],arl:[31,64],army:[31,64],around:[1,2,29,30,40,42,45,46,56,58,62,68,80,81,90,148],arrang:42,arrheniu:74,arriv:4,articl:[2,148],artifici:[72,151,152],arxiv:[42,90,149],ascend:19,ascii:[92,111,114,134],ash:[131,132],aside:[45,134],ask:[3,163],asoci:58,aspect:[2,117,146],aspher:0,asphere:[117,146],asq:[131,132],assign:[1,2,3,19,34,40,41,42,43,44,45,58,60,61,62,67,68,69,71,92,97,111,114,117,120,141,142,146,162],assignemnt:2,associ:[2,32,33,34,40,57,58,62,66,67,68,73,74,76,91,92,105,109,110,111,113,120,122,126,141,142,154],assum:[2,3,45,62,67,70,79,80,85,92,97,100,103,113,120,121,126,131,132,163],assume:92,assumpt:[93,139],astar:134,astart:150,asterisk:[32,120,154],astop:[91,150],asu:111,asub:134,asymmetr:[63,97,111],asynchron:4,atc_fe_output:59,athomp:0,atm2pa:2,atobodi:40,atom1:73,atom2:73,atom3:73,atom4:73,atom:[0,1],atom_element_map:59,atom_modifi:[3,92],atom_styl:[2,31,45,58,64,65,68,74,92,96,103,108,110,113,114,117,118,132,146,161],atom_weight:59,atomey:[2,3,58],atomfil:2,atomic:[0,148],atomic_charg:59,atomic_numb:145,atomid:40,atomist:[2,59,137],attach:[2,71],attatch:78,attempt:[2,19,60,61,92],attend:59,attrac:134,attract:[0,21,22,94,100,103,126,134,138,148,161],attribut:[2,3,32,40,58,61,62,68,69,97,113],atw:[131,132],atwater:157,atwt:134,atyp:[105,122,126,130],au1:44,au3:44,aug:3,augment:[62,134],augt1:134,author:[111,112],auto:[2,3,35],autocorrel:35,autom:58,automat:[2,4,18,67,104,111,134,137,162,163],auxiliari:[1,2,3],avail:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,32,39,42,46,47,48,49,50,51,52,53,54,55,58,62,66,68,69,74,75,78,82,83,84,86,87,88,89,90,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,113,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,134,135,139,140,143,144,145,146,147,149,150,155,156,157,158,159,160,161,162],availabl:4,avalo:110,ave_chunk:2,aveforc:2,avendano:138,averag:[2,19,31,32,35,36,37,41,44,59,60,62,68,69,72,74,82,94,110,113,115,134,142],avi:58,avoid:[1,2,18,40,45,58,70,71,81,97,113,130,134,140],avx2:4,avx512:4,avx:4,awai:[2,58,61,70,80,105,122,126],awar:112,axel:163,axi:[2,19,29,36,41,44,45,58,60,79,86,89,90],axial:69,azimuth:58,b_k:149,ba2:44,babadi:146,back:[1,2,3,40,45,68,77,78,92,118],backbon:[61,75,88],background:[32,39,43,60,79,92,103,131,132,134],backtrack:91,backward:92,baczewski:66,bad:92,badli:[62,68],balanc:[1,2,4],ball:[42,131,132],bammann:59,band:[2,42,92,97,137,148],bandwidth:1,bandwith:58,bar:[32,58],barashev:111,barostat:[0,1],barostt:2,barr:104,barrier:[2,89,92,104,116],bartok2010:149,bartok2013:149,bartok:[42,149],base:[2,3,4,5,32,35,41,44,45,58,59,60,71,74,94,95,97,109,113,117,120,122,131,135,136,144,145,148,155,157,158,159,163],bashford:[2,5,46,101],basi:[2,42,45,80],basic:[2,19,43,58,59,60,68,70,81,93,137],basin:92,bask:[111,134,145],bath:72,bayli:[2,46],bb13:47,bcc:[29,30],bcolor:58,bdiam:58,be2:44,bead:[21,22,61,71,154],bear:[2,66],becaus:[0,1,2,4,19,36,38,42,45,58,60,61,62,66,68,72,79,81,84,91,92,101,105,107,109,113,114,117,118,119,120,121,130,131,132,134,139,141,142,146,154,163],becker:[93,111],becom:[1,2,4,19,28,58,60,61,63,67,68,80,81,92,94,103,105,111,113,117,122,139,145,146,155,159,161,163],been:[1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,32,39,40,46,47,48,49,50,51,52,53,54,55,58,60,61,62,67,68,69,72,75,79,80,82,83,84,86,87,88,89,91,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,113,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,135,136,137,140,143,144,146,147,150,154,155,156,157,158,159,160,161,162],befor:[1,2,13,19,33,34,37,45,60,62,67,68,72,80,91,92,114,115,118,130,134,137,142,163],begin:[59,60,65,74,92,111,115,137,139,141,142,145,148,150,154,162],begun:74,behav:[11,48,91],behavior:[58,61,62,66,68,72,79,97,113,134,162],behaviour:2,behind:72,believ:3,bellott:[2,5,46,101],bellow:86,belong:40,below:[1,2,3,4,19,28,35,39,41,42,43,44,45,46,57,58,59,60,61,62,65,68,69,70,72,73,74,75,77,78,79,80,90,91,92,93,94,97,98,101,102,103,105,108,111,113,114,115,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,138,139,141,142,146,147,149,150,154,159,160,161,162,163],bench:[1,2,3],benchmark:[1,3,4,19,60],benedict:137,benefit:[1,4,66],bennet:32,berardi:[117,146],beraun:79,berendsen:[2,68,69,75],bern:[71,104,117,148],bernendsen:2,beryllium:113,best:[1,2,4,68,73,97,105,122,126,139],beta:[2,72,93,95,111,112,114,134,156,157,158],beta_:97,beta_k:149,beta_pi:97,beta_sigma:97,beta_t:157,better:[2,4,11,42,48,60,67,68,92,156,163],betwe:96,between:1,beutler:130,beyond:[2,32,68,116,128,139],bflag1:58,bflag2:58,bgq:137,bi3:44,bi5:44,bia:[2,39,43,68],bias:2,biersack:[134,158,162],big:[72,103,163],bin:[2,3,34,72],binari:[2,4,57,58,59,60,61,62,63,66,67,68,69,70,72,73,75,76,77,78,79,80,81,93,94,95,96,97,98,99,100,101,102,103,104,105,108,109,111,112,113,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,140,141,142,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],binary2txt:0,bind:[97,148],binsiz:4,biolog:2,biologi:51,biomolecul:101,biophi:90,bios:4,bisect:[19,60],bisector:[2,105,122,126],bispectrum:[42,149],bit:[3,139,163],bitrat:58,bkgd_dyn:134,bks:72,blank:[58,65,74,92,97,112,115,134,141,142,143,149,155,156,157,158,159],blast:79,blend:134,block:[2,35,42,45,81,90,97,113,145,149,163],blow:[80,81,150],blue:[58,61],bluegen:137,board:108,bodi:0,body:96,bodyforc:67,bodyforcei:67,bodyforcex:67,bodyforcez:67,bogu:62,bohr:[111,113,137,158],boltzmann:[2,32,35,39,61,65,67,69,109],bond:[0,1,2,4,6,13,18,20,21,22,23,24,25,26,27,28,32,35,36,38,39,42,43,45,46,47,56,57,58],bond_coeff:[2,20,21,22,23,24,25,26,27,28],bond_harmon:[24,25],bond_harmonic_shift:25,bond_interact:59,bond_styl:[0,2],bondangl:6,bondbond13:47,bondbond:6,bonet:110,book:[161,163],bookkeep:139,bookmark:0,boost:1,border:[4,79],boresch:32,boreschkarplu:32,born:[2,32],boron:113,botero:113,both:[1,2,3,4,11,28,32,45,48,57,58,61,62,63,67,68,72,75,77,78,79,80,81,82,91,92,94,97,98,99,100,101,102,103,108,109,111,112,113,117,118,120,122,124,126,127,128,130,131,132,137,138,139,140,144,146,147,155,156,157,158,159],bottleneck:1,bottom:67,bound:[2,10,11,19,48,60,68,80,81,91,113],boundari:[2,33,34,35,37,39,40,41,43,44,45,58,59,62,67,68,70,72,76,79,80,81,119,131,132,137],boundary_dynam:59,boundary_faceset:59,boundary_integr:59,bounds:[2,19,60],bount:3,box:[0,1],boxcolor:58,boxxlo:3,bptype:154,br1:44,bracket:[2,19,60],bragg:[41,44],branch:[3,163],branicio2009:159,branicio:[30,159],breakdown:[1,94],brennan:[31,64,110,141,142,154],brenner:94,brick:[19,60],bridg:90,brief:[1,2,68,94,97],briefli:[2,71,104,148,163],brilliantov:118,broadwel:4,broken:[28,29,68,97],brook:2,brown:[4,41,43],brownian:[2,37,131,132],brows:0,browser:58,bryantsev:120,btype:[105,122,126,130,154],buc:99,buck:[2,4,32,98],buckingham:[98,99,100,107,133],buckplusattr:148,buffer:58,bufi:58,bug:0,bui:58,build:[0,1,2],built:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,31,32,37,39,40,41,42,44,46,47,48,49,50,51,52,53,54,55,56,57,61,63,64,65,66,67,68,69,70,71,72,74,75,77,78,79,82,83,84,85,86,87,88,89,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,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],bulatov:[135,136],bulk:[2,29,67,70,106,134,137,139,148],bundl:[58,163],button:163,bypass:2,c11:134,c_0:[79,94,152,153],c_1:[40,41,44,66],c_2:[41,44],c_cluster:2,c_cstherm:2,c_doubl:3,c_e:79,c_flux:35,c_gauss:116,c_hb:120,c_i:65,c_id:[2,32],c_ij:2,c_ijkl:2,c_k:66,c_mychunk:[2,34],c_n_k:66,c_p:43,c_peratom:43,c_pi:97,c_prop:2,c_sigma:97,c_size:2,ca2:44,cach:[4,139],cacul:75,calcforc:67,calclat:35,calcluat:[37,39,43,105],calcualt:35,calcul:[0,1],caldwel:[2,46],calhoun:71,call:[1,2,3,4,71,94,103,161,163],callabl:3,callback:3,caltech:[2,113],calucl:2,calul:[3,29],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,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,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,91,92,93,94,95,96,97,98,99,100,101,102,103,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,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],cannot:[1,2,3,4,19,28,58,60,61,62,66,68,72,79,80,81,91,92,99,100,102,111,117,119,122,126,128,130,139,144,146,147,154],canon:[68,71,78,137],cao1:71,cao2:71,cao:71,capabl:[3,4,94,102],capac:[64,79,151],capolungo:[41,44],captur:[2,94,100,113,118,126,134],carbid:105,carbon:[58,88,94,104,134],card:[4,32,120],care:[2,45,56,67,68,96],carefulli:[3,28],carlo:[2,61],caro:111,carri:[4,79,118],carrillo:4,cartesian:[2,93],cascad:79,cat:[4,58],cate:67,categori:[0,94],cation:[114,148],caus:[1,2,4,45,62,68,70,74,75,80,81,91,92,120,122,128,131,132,139],caution:1,cautious:94,caveat:94,cbecker:[93,111],cc1:[2,34],ccc:[112,155,156,158,159],ccflag:4,ccflags:4,ccm6:111,ccsi:[112,155,156,158,159],ccu:97,cd2:44,cdeam:111,cdll:3,cdof:2,cdte:97,cdte_bop:97,cdtese:97,cdzn:97,cdznte:97,ce3:44,ce4:44,cell:[2,41,44,45,62,68,69,72,79,113,137],cella:2,cellalpha:2,cellb:2,cellbeta:2,cellc:2,cellgamma:2,center:[2,9,33,34,37,40,41,45,58,62,66,68,76,78,80,81,82,90,96,112,113,117,118,131,132,134,135,136,155,156,157,158,159],centr:63,central:[29,36,38,42,70,75,76,85,137,143,159],centro:2,centroid:71,centrosymmetri:29,certain:[1,2,58,61,139],cfg:[2,58],cg_type:147,ch2:75,ch2lmp:[0,2],ch3:75,chain:[0,2,13,28,61,68,69,71,75,78,88,108,109,154],challeng:2,champaign:131,chan:137,chandler:[93,111],chandrasekhar:[2,122],chang:[1,2,3,4,19,22,32,45,58,59,60,61,62,67,68,69,70,72,73,74,75,77,78,79,81,91,92,109,113,118,131,132,134,137,139,148,154,163],change_box:2,chapter:71,charact:[2,19,58,60,65,74,113,115,121,141,142,145,148],character:[2,29,38,42,149],characterist:77,charg:[1,2,3,32,41,44,45,98,99,104,105,107,108,111,113,114,122,126,130,144,148,158,159,161,162],charmm:0,cheaper:[117,146],check:[2,3,19,35,60,73,75,78,91,92,121,139],checkout:163,chem:[2,5,6,9,20,21,22,32,38,39,43,46,47,54,63,66,67,68,71,72,77,78,80,82,88,89,92,94,98,101,102,104,105,106,108,109,110,113,116,117,119,120,122,126,127,130,134,138,139,141,142,144,148,154],chemic:[31,41,44,59,115,142],chemistri:[72,94,97,113],chen:79,cheng:104,chi:[70,114,117],chiral:88,chmod:3,cho:134,choic:[2,4,19,28,29,32,43,56,60,61,67,68,71,92,130,139],choos:[1,2,13,28,32,58,61,62,67,68,69],chose:[156,158],chosen:[2,42,45,51,58,62,66,67,68,69,71,110,113,118,121,124,147,156],chunk:0,chunkid:34,ciccotti:75,cieplak:[2,46],circular:2,circumv:[36,38],citat:[0,67],cite:148,cl1:44,clarendon:[13,108],clarifi:[156,158],clark:144,classic:[0,2,4,71,72,79,89,113],classifi:159,clean:2,clear:[2,3],clebsch:42,click:[3,45,57,58,92,163],climb:92,clockwis:46,clone:163,close:[2,3,19,43,61,62,67,68,75,81,92,94,97,105,106,134,139,141,142,158,163],closer:[19,60,62,77,92],closest:[70,117,146,154],cloud:148,cluster:[2,4,43,63,75],cmax:134,cmd:[3,71],cmdarg:3,cmin:134,cmm:[18,147],cna:29,co2:[44,74,75,115],coars:[13,18,28,51,65,74,115,119,142,147],coarsest:42,code:[0,1],coeff:[6,46,47,56,82,121,139,150],coeffici:0,coefficienct:109,coefficient0:111,coefficient1:111,coeffieci:[2,95],coeffincientn:111,coexist:113,cohes:[2,114,134],coincid:[81,101,131,132],cold:2,coleman:[41,44],collect:[2,34,45,103],colliex:44,collis:[67,118,162],colloid:2,color:[19,58,60,66,72],column:[2,29,34,36,38,40,42,43,44,72,79,94,116,120],colvar:0,com:[2,37,40,63,96,163],comand:61,combiant:106,combin:[2,3,18,32,56,58,59,63,68,71,81,82,103,105,106,110,113,114,115,129,130,149,155,156,158,159,161],come:[0,2,13,62,68,77,78,139,155,156,158,159,163],comit:163,comm:[0,3,30,92,109,139],comm_modifi:[2,97,103,109,113,118],comm_styl:[19,60],comm_world:3,command:[0,1],comment:[3,46,65,74,79,92,93,111,112,114,115,121,134,141,142,143,148,149,155,156,157,158,159,163],commit:163,commmand:2,common:[0,1,2,3,4,30,62,71,81,82,118,120,155,156,158],commonli:[2,9,37,38,58,89,119,124,149,156,158],commun:[1,2,3,4,19,58,60,62,67,68,79,110],comp:[75,92,113,139,146,153,157],compar:[1,2,4,41,44,57,91,92,134,148],comparison:0,compart:90,compass:[6,20,47,57,82,102],compat:[3,19,50,60,63,80,137,139],compens:[2,113],compil:[4,58,137],complain:3,complement:134,complementari:[105,122],complet:[2,3,19,60,71,92,114],complex:[2,3,9,36,38,42,45,67,81,92,113,137],complic:[2,40],compon:[2,29,30,33,34,35,36,37,38,39,40,42,43,58,61,62,63,67,68,69,71,75,81,91,92,109,113,118,131,132,148,149],componenet:2,componennt:40,composit:[2,67,111],compound:[104,113,114,159],compress:[2,58,69,72],compris:[81,115,146],compton:[41,44],comput:[0,1],computation:[2,79,97],compute_modifi:[61,62,68,69],compute_sa:41,compute_xrd:44,concav:81,concentr:[65,74,111,115,142],concept:2,conceptu:[2,62,92,105,134],concern:[2,30,32,66],concis:3,concurr:4,conden:[79,156,158],condens:[2,79,94,107,111,122,159],condit:[2,39,41,43,44,58,59,67,69,70,72,75,76,79,110,113,119],conducit:2,conduct:0,confer:[4,137],configur:[1,2,4,58,62,71,91,92,94,97,112,134,137,155,156,158,159,163],conflict:[139,163],conform:[2,61,62,73,88,92,113],confus:159,conjuct:109,conjug:113,conjunct:[2,32,45,67,92,98,99,105,109,113,120,122,139,144,147],connect:[2,32,61,75,90,92,106,118,154,158],conner:94,connor:94,consecut:[3,45,105,122,126],consequ:[1,2,79,121],conserv:[13,61,66,67,68,74,75,92,108,109,110,118,128,148],consid:[2,29,32,40,60,61,79,113,146,148,154],consider:2,consist:[2,3,39,40,45,51,66,68,69,72,73,74,90,92,94,97,103,105,113,117,131,132,134,137,139,141,142,146,148],consistent_fe_initi:59,constant:0,constantli:63,constitu:[2,80,81,103,146],constrain:[2,63,66,75,76,91,113],constraint:[19,39,43,60,63,75,76,80,91,132],construct:[2,28,29,30,36,38,41,42,44,62,68,73,74,81,108,137,139,154,155],constructor:3,consult:4,consum:1,contact:[0,106,112,114,117,118,146],contain:[0,1,2,3,19,32,35,41,42,44,45,46,57,58,59,60,65,67,70,72,74,79,81,92,93,94,97,104,105,108,111,112,113,115,134,137,141,142,143,145,149,155,156,157,158,159,163],context:[2,4,161],contibut:29,contin:4,continu:[0,2,19,60,61,62,63,66,68,69,72,77,78,79,81,97,109,124,127,146,157],continuum:[2,59,79],contour_integr:59,contract:[62,68],contrain:75,contrast:[1,2,161],contrib:79,contribut:[2,29,32,33,34,35,39,42,43,62,67,75,91,92,109,111,113,131,132,137,139,148,163],control:[2,3,4,11,13,19,32,35,42,48,58,59,60,62,68,69,74,79,113,117,137,155,158],control_typ:59,convect:35,conveni:[2,13,149,163],convent:[13,50,55,57,73,111,113],converg:[2,19,58,60,61,62,69,72,73,75,91,92,104,105,122,148],convers:[42,58,105,106,107,113,122,126,130,144],convert:[2,5,6,8,12,16,17,18,35,45,47,58,82,83,87,88,92,93,111,137,156,158,162],convex:81,cool:63,coord:[2,3,36,38,40,70,80,92],coordb:148,coordbb:148,coordiat:91,coordin:[1,2,3,19,32,33,34,40,42,45,58,60,61,62,63,68,70,75,76,78,79,91,92,93,94,96,112,148],coords:148,copi:[0,3,58,79,92,163],copper:162,coprocessor:[1,4],core:[0,1],coreshel:2,coreshell:[2,99,105,107],cornel:[2,46],corner:[2,58,81,163],corpor:4,corr:104,correct:[2,3,32,46,58,63,68,72,80,81,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,111,112,113,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,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],correction_max_iter:59,correctli:[3,68,75,81,92,107,132,137,163],correl:[2,35,36,42,66,71],correpond:65,correspond:[1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,29,32,39,40,41,42,44,46,47,48,49,50,51,52,53,54,55,56,58,62,63,65,67,68,69,70,71,74,75,80,81,82,83,84,86,87,88,89,92,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,113,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,134,135,137,139,140,142,143,144,145,146,147,148,149,150,155,156,157,158,159,160,161,162],correspondingli:[131,132],cosin:2,cosineshift:11,cost:[1,2,3,19,41,43,44,58,60,68,74,79,105,122,126,137,139,155],costheta0:[155,156,158,159],costheta:145,costli:[3,4],coul:[2,4,18,21,22,32,46,91],could:[2,3,19,32,34,39,58,60,72,79,80,81,91,94,116,120],coulomb:[2,43,91,98,99,100,101,102,104,105,106,107,108,113,118,119,122,126,130,133,139,144,147,148,158,159,161],coulommb:2,count:[1,2,3,19,35,46,60,68,75,81,91,92,116,120,139],counterbal:63,counterbalanc:13,counterclockwis:46,coupl:0,couple:[2,3],cours:[4,66,73,80,131,150],cov:148,coval:[2,13,113,134,148],cover:[2,59,67,113],cpp:[1,2,3,32,75],cpu:[1,4],cpuinfo:4,cr2:44,cr3:44,creat:[0,1,2,3,19,35,39,41,45,58,59,60,61,62,65,68,69,70,71,73,79,92,94,97,104,111,112,130,139,140,141,142,145,148,155,156,157,158,159,163],create_atom:[2,19,35],create_box:[2,19,35,45,62,68,154],create_elementset:59,create_faceset:59,create_nodeset:59,createatom:0,creation:45,criteria:[58,61,91],criterion:[19,45,60,61,91,92,104,113,118,148],critic:[2,24,25,79,91],cross:[4,33,40,58,92,101,109,111,119,120,122,124,126,145,147,156,158,162],crossov:1,crozier:0,crucial:72,crystal:[2,4,29,30,38,70,78],crystallin:[2,157],crystallogr:[41,44],crystallographi:[41,44],cs1:44,cs_chunk:2,csanyi:[42,149],cscl:134,csequ:2,csh:[3,4],cshrc:3,csic:[112,155,156,158,159],csinfo:2,csisi:[112,155,156,158,159],cst:111,cstherm:2,csvr:2,ctcm:[93,111],ctype:3,cu1:44,cu2:44,cu3au:134,cube:[2,81],cubes:[19,60],cubic:[38,67,70,111],cuda:1,cuh:97,cummul:[2,61,120],cumul:[2,68,69,92],current:[0,1,2,3,4,19,30,32,43,58,59,60,61,62,63,68,73,74,75,76,79,80,90,91,92,97,104,108,111,113,114,118,121,131,132,134,135,136,139,145,150,156,158,163],curv:[2,45],curvatur:[117,146,162],custom:[0,2,3,33,34,35,43,58,61,62,68,69,72,91,94,116,120],cut:[1,2,4,19],cuthi:70,cutinn:[131,132],cutlo:70,cutmax:145,cutoff1:[102,108,122,126,130,133,144,147],cutoff2:[98,99,100,102,107,108,122,126,130,133,144,147],cutoff:[2,4,21,22,28,29,30,32,36,38,42,61,65,70,72,80,81,91,93,94,95,96,97,98,99,100,101,102,103,105,106,107,108,109,110,111,112,113,114,115,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,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],cutoffa:112,cutoffc:112,cuu3:111,cval:44,cvff:4,cwiggl:80,cyan:58,cycl:[68,69],cyclic:46,cylind:[58,81,90],cylinder_d:90,cylindr:2,cyrot:97,d3q15:67,d3q19:67,d_e:79,daan:78,damp:[2,68,69,72,91,92,98,99,101,105,108,113,118,122,130,144,147],dampflag:118,danger:109,darden:108,darken:58,dash:118,dat:[2,35,59],data2xmovi:0,data:1,databas:0,date:[0,2],datum:2,davenport:133,davi:80,david:[156,158],daw:[111,145],dcd:[2,58,71],deactiv:130,debug:[2,3,41,44,45,71,139],decai:[36,105,162],decid:[2,4,163],decod:58,decompos:[32,149],decomposit:[59,71],decoupl:2,decreas:[4,61,63],dedic:4,defect:[2,29,137],defin:[2,3,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,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,64,65,67,68,69,70,71,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,94,95,96,98,99,100,101,102,103,105,106,108,109,110,112,113,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,137,138,139,140,141,142,143,144,145,146,147,149,150,151,152,153,154,155,156,157,158,159,160,161,162],definit:[2,42,64,69,80,97,103,110,113,145,149],deform:[2,43,62,68,131,132],deg2theta:44,degre:[2,5,6,8,12,13,16,17,18,36,38,39,44,45,46,47,49,50,55,56,58,61,68,69,71,73,75,78,82,83,87,88,89,91,108,111,120],delai:2,delet:[28,61,68,139,154,163],delete_atom:45,delete_bond:[20,21,22,23,24,25,26,27,28],delete_el:59,delimit:74,dellago:[2,63],deloc:[113,148],delr:134,delta_1:97,delta_3:97,delta_7:97,delta_ij:[134,145],delta_pi:97,delta_r:145,delta_sigma:97,deltah_f:65,demo:3,demonstr:[72,134],dendrim:120,dendtrit:90,denniston:67,denot:[41,63,105,119],dens:[61,74,113],densiti:[2,19,42,45,59,60,67,79,80,93,94,97,111,134,135,136,141,142,145,146,148,151,152,153],dent:90,depart:0,departur:72,depend:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,36,39,40,42,45,46,47,48,49,50,51,52,53,54,55,57,58,60,62,65,67,68,69,70,74,75,77,79,80,81,82,83,84,86,87,88,89,91,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,111,112,113,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,134,135,137,138,140,141,142,143,144,145,146,147,148,149,150,155,156,157,158,159,160,161,162],dependend:2,deposit:[68,75],depth:[26,58,79,115,117,146],der:[32,103,104,130,161],deriv:[2,32,42,62,63,68,69,70,77,78,79,80,81,94,97,103,108,113,114,119,124,128,129,134,137,161],derjagin:161,derlet:70,descib:58,describ:[0,1,2,3,4,19,29,30,41,42,43,44,45,51,54,60,61,62,65,66,67,68,69,70,71,72,74,77,78,80,91,92,94,96,98,99,101,102,103,104,105,108,111,113,114,115,117,118,119,122,123,124,125,126,127,128,129,130,131,132,133,134,137,138,141,142,145,146,147,148,149,150,154,155,156,157,158,159,160,161,162,163],descript:[2,3],descriptor:42,design:[0,2,3,41,44,59,61,68,70,79,95,96,101,105,107,113,130,131,132,135,136,145],desir:[2,3,4,35,39,43,45,62,66,68,75,91,92,109,111,120,131,132,155,156,158],desktop:[2,58],destabil:97,destre:88,destroi:3,detail:[1,2,3,4,19,34,35,39,40,42,43,45,57,58,59,60,61,62,63,66,67,68,69,72,75,78,79,90,91,93,94,96,97,100,101,102,103,104,105,108,109,113,114,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,138,139,141,142,146,148,149,150,160,161,163],detect:[36,92,104,120,121],determin:[1,2,4,26,32,39,40,41,43,44,45,58,60,62,65,68,70,71,72,73,74,80,81,94,100,104,108,111,115,116,118,126,134,137,139,142,146,148,154,161],devan:147,devanathan:158,develop:[0,2,3,4,69,72,94,97,113,136,137,148,159],deviat:[69,70,116],devic:1,devin:104,devis:136,dfactor:58,dft:137,dhug:72,dhugoniot:72,dia:134,diag:74,diagnost:[4,61,74],diagon:[2,40,42,43,62,68],diagonalstyl:149,diagram:[19,41,44,57,60,71],diallo:120,diam:58,diamet:[2,45,58,103,117,118,124,146,161],diamond:[113,134],dick:2,did:[91,109,111,118,139,156,158],dielectr:[101,105,106,107,122,126,130,144],diff:[2,4],differ:[1,2,3,4,19,28,29,32,36,42,45,57,58,60,61,62,63,66,67,68,70,71,72,75,76,77,78,79,80,81,82,92,93,94,97,100,101,103,104,109,110,111,113,115,117,118,119,122,123,125,126,133,134,135,136,138,139,140,141,142,143,145,146,147,148,149,150,155,156,158,159,161],differenti:[1,2,13,74,105,145,157],difficult:[62,71,120],difficulti:[36,38,75],diffract:[41,44],diffraction:[41,44],diffus:0,diffuse:2,digit:137,dihedr:[0,4,28,36,38,39,42,43,45,46,47,48,49,50,51,52,53,54,55,56,57,61,73,83,84,85,87,91,94,97,101],dihedral_coeff:[46,47,48,49,50,51,52,53,54,55,56,57],dihedral_cosine_shift_exp:11,dihedral_styl:[0,2,43],dihydrid:113,dij:75,dilat:[62,68,69],dim:[45,134],dimens:[1,2,19,35,40,43,45,58,60,62,67,68,69,72,80,92,139],dimension:[36,39,41,42,44,79,92,145],dimensionless:[37,42,79,149,161],dimer:[2,134],dimstr:[19,60],dintel_offload_noaffinity:4,dipol:0,dipolar:13,dipole:108,dir:[1,3,70,72,145],dirac:42,direc:145,direct:[2,4,13,29,38,41,42,44,45,46,58,67,69,70,72,77,78,79,80,81,91,92,109,110,118,132],directli:[2,3,32,40,42,58,67,74,81,93,94,98,99,100,105,108,111,113,122,126,139,144,147,154],directori:[0,1,2,3,4,77,78,92,93,94,97,104,105,111,112,114,130,134,135,136,137,143,145,148,149,155,156,157,158,159],disabl:[4,79,121],disadvantag:[2,60],disallow:68,discard:[19,60,81],discontinu:[91,128],discourag:134,discret:[2,58,67],discuss:[0,1],disk:[2,36],disloc:[29,137],disord:[29,137],disp:0,dispar:146,disperion:[108,126],dispers:[2,100,108,126,131,139,159],displac:[2,37,62,68,70,118],displai:[3,57,58],disregard:137,dissip:[2,31,64,66,77,78,109,110,118,131,132],dist:[2,35,71,73,154],distanc:[2,5,6,20,21,22,23,24,25,26,27,28,30,33,34,36,37,38,40,41,42,45,47,58,61,62,63,67,68,69,70,72,73,75,76,78,79,80,81,82],distinct:[2,146],distinguish:[2,42,113],distort:93,distrbut:93,distribut:[0,2,3,19,32,42,57,60,66,67,68,93,97,105,111,112,114,134,135,136,139,143,145,146,155,156,157,158,159],distro:145,ditto:162,div:4,diverg:[78,94],divid:[2,4,19,35,39,43,57,60,70,91,92,114,148,159],divis:[2,56,67,97,130],dl_poly:2,dlammps_ffmpeg:58,dlammps_gzip:58,dlammps_jpeg:58,dlammps_memalign:4,dlammps_png:58,dlm:68,dlmp_intel_offload:4,dlopen:2,dlvo:[103,161],dm_lb:67,doc:[0,1,2,3,32,34,37,39,40,43,45,57,58,68,81,90,91,92,93,94,96,104,105,111,112,114,120,134,135,136,139,143,145,149,155,156,158,159,163],docuement:146,doe:[0,1,2,3,19,28,29,32,35,41,44,45,46,57,58,59,60,61,62,63,65,66,67,68,79,80,81,83,84,85,87,88,92,93,94,95,96,97,100,101,102,103,104,105,106,108,109,111,112,113,115,116,117,118,119,121,124,125,127,128,129,131,132,134,135,136,137,139,141,142,145,146,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],doesn:[45,94,104,112,155,156,157,158,159],dof:39,doi:[2,70],domain:[2,19,41,44,58,60,62,67,68,71,79,80,92,139],domin:[1,113],don:[0,4,81,134,148,163],done:[1,2,19,45,56,58,59,60,61,62,65,68,71,75,77,78,91,92,94,100,111,126,132,133,134,139,141,142,154,163],donor:120,dot:43,doti:[97,145],doubl:[1,2,3,4,32,46,81,97,114,119,137],dover:59,down:[2,3,62,113,139,148],download:3,downsid:2,dpd:2,dpdtheta:[31,110],dpdtheta_i:[64,65],dr_ewald:41,drag:[2,35,68,69,76],dragforc:67,drai:[58,72],drain:91,dramat:[61,62,68,139,148],drautz:97,draw:58,drawn:[58,66],drayleigh:72,dreid:2,dreiding:0,drfourth:37,drho:[93,111,141,142],drift:[2,37,63,66],drive:[3,62,68,70,92],driven:[2,51],driver:2,drop:109,drsquar:37,drude:0,dt_collis:67,dt_lb:67,dt_md:67,dtqm:72,dudarev:44,due:[1,2,4,28,29,33,34,37,41,42,43,44,45,58,61,62,66,67,68,69,70,73,77,78,79,80,81,91,92,106,109,110,111,116,117,131,132,139,145,146,147,154,156,158,161,162],duffi:79,dullweb:68,dumbbel:90,dummi:[13,157],dump:[0,1],dump_modifi:[2,58],dunbrack:[2,5,46,101],duplic:[19,60,70],durat:[57,79,118],dure:[2,4,19,32,40,46,59,60,61,62,63,65,66,67,68,69,70,71,72,73,75,76,77,78,79,80,81,91,92,109,130,137,139,140,141,142],dvlo:161,dvx:2,dx_lb:67,dy3:44,dyanam:2,dynam:[0,2,3,4,19,31,37,45,58,59,60,61,64,66,68,69,71,72,73,77,78,79,91,92,109,110,113,131,132,139,153],dynamo:[93,111,134],dyre:127,e28637:13,e_1:97,e_2:97,e_a:74,e_b:114,e_ee:113,e_hbond:120,e_i:[2,97,114],e_j:[2,97],e_k:97,e_ke:113,e_kl:2,e_lj:[94,108],e_n:97,e_ne:113,e_nn:113,e_pr:113,e_rebo:94,e_torsion:94,e_tot:137,e_vol:137,eaa:82,eaat:47,each:[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,32,33,34,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,65,66,67,68,69,70,71,74,75,76,78,79,80,81,82,83,84,85,86,87,88,89,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,158,159,160,161,162],eacn:[19,60],eam:[0,93,105],earli:[19,60],earlier:[92,118,134,139],earth:113,easi:[2,3,32,43,80],easier:[4,58],easili:[3,58,92],eat:47,eaxmpl:2,eba:6,ebb13:47,ebb:6,ebt:47,ec_ii:134,ec_ij:134,ec_jj:134,echo:[3,41,44],ecp:113,edg:[2,19,41,44,58,80,81],edge:80,edit:[4,163],edition:4,edu:[3,111,131],eebt:47,eff:0,effect:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,33,34,37,39,43,46,47,48,49,50,51,52,53,54,55,57,58,59,61,62,63,66,68,69,70,71,72,73,75,78,79,80,81,82,83,84,86,87,88,89,91,92,93,94,95,97,98,99,100,101,102,103,104,105,108,109,111,112,113,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,137,139,140,141,142,143,144,146,147,148,150,155,156,157,158,159,160,161,162],effici:[0,1,2,4,39,56,58,62,68,71,75,97,103,105,122,126,137,141,142,146],efficienc:4,efield:[75,91],eggebrecht:[105,148],ehex:2,eigenvalu:71,einstein:[2,78],either:[1,2,3,4,19,29,41,42,43,44,45,58,60,61,62,63,67,68,69,70,74,75,81,91,97,103,111,115,118,131,132,134,137,139,142,145,154,156,158],ejtehadi:[103,117,146],elaps:[80,150],elast:[2,21,22,92,118,157],elastic:0,elba:13,electr:[2,59,114,162],electric:4,electrolyt:161,electron:[2,41,59,79,93,104,108,111,113,114,134,137,145,148,158,159,162],electron_integr:59,electron_temperatur:59,electron_unit:113,electroneg:[2,104,114,148],electroneg_compon:148,electrostat:[2,4,103,108,113,122,130,132,148,161],elem1:[114,134,149],elem2:[114,134,149],elem:148,element1:[93,111,148],element2:[93,111,148],element:[2,33,37,39,42,43,58,59,93,94,97,104,111,112,113,114,134,135,136,137,143,145,148,149,155,156,157,158,159],elementn:[93,111],elementset:59,elif:42,elig:120,elimin:[2,66,75,77,78],elj:108,ellips:2,ellipsoid:[2,45,90,91,117,132,146],els:[58,68,79],elsewher:134,elt:134,emac:0,email:[0,3,114],emb:81,emb_lin_neg:134,embed:[3,13,79,93,111,114,130,134,135,136,145],embt:47,emphas:118,empir:[59,113],empiric:94,emploi:[63,157],empti:121,enabl:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,31,32,37,39,40,41,42,44,46,47,48,49,50,51,52,53,54,55,57,61,63,64,65,66,67,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,86,87,88,89,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,134,135,136,137,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],enclos:[2,134,148],encod:58,encompass:2,encount:38,encourag:[74,76],end:[1,2,3,4,19,47,58,61,63,66,68,73,74,79,92,109,111,117,133,137,146,149,150],endbondtors:47,energet:[61,94],energi:[0,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,31,32,35,39,43,45,46,47,48,49,50,51,52,53,54,55,56,57,59,60,61,62,63,64,65,66,67,68,69,70,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109],energy_compon:148,enforc:[2,58,61,68,75,122],enforce2d:[2,91],eng:[3,104,136],engineer:[59,77,111],enginer:135,enhanc:[59,63],enlarg:58,enough:[45,60,72,80,81,105],enpub:111,ensembl:[2,32,35,68,71,72,109,148],ensight:2,ensur:[2,42,62,66,68,97,130,155,159],enter:[114,137,159],enthalpi:[74,111],entir:[0,2,3,19,31,39,40,41,43,44,45,60,61,63,66,68,69,70,71,74,76,79,108,126,139],entiti:2,entri:[40,41,65,72,97,112,134,141,142,143,149,155,156,157,158,159],entry1:[141,142],enumuer:2,environ:[1,2,3,4,58,70,93,97,104,112,113,145,156],eos:65,epair:[94,116,120],epp:108,epq:108,eps0:161,eps14:130,epsilon0:158,epsilon:[2,18,21,22,27,28,32,46,80,81,91,96,101,102,103,105,106,107,108,115,117,119,120,121,122,123,124,125,126,127,128,129,130,133,138,144,146,147,155,160,161],epsilon_0:162,epsilon_14:101,epsilon_:146,epsilon_d:106,epsilon_i:[117,139,146],epsilon_i_:146,epsilon_i_a:[117,146],epsilon_i_b:[117,146],epsilon_i_c:[117,146],epsilon_ij:139,epsilon_j:[117,139,146],epsilon_j_:146,epsilon_j_a:[117,146],epsilon_j_b:[117,146],epsilon_j_c:[117,146],epsilon_lj:146,eqp:108,eqq:108,equal:[2,3,19,28,32,35,43,45,58,60,62,66,67,69,70,71,72,73,74,77,78,79,80,91,92,94,104,109,110,116,117,120,131,137,138,145,146,148,149,150,159,162],equat:[2,35,38,39,41,44,57,62,63,64,65,67,68,69,70,71,72,74,75,79,80,90,103,108,109,110,113,114,115,118,131,132,134,139,142,146,151,152,153,162],equation:[70,88],equilibr:[2,35,45,61,62,68,72,77,78,104,105],equilibrium:[1,2,6,8,10,11,12,13,16,17,18,20,23,24,25,26,27,47,48,62,66,67,68,69,72,73,75,78,82,83,87,88,104,134,143,148],equilibrium_start:59,equival:[2,13,62,68,73,94,109,113,148,156,158],equlibrium:2,er3:44,eradiu:113,eras:77,erat:132,erc:105,erfc:[105,122,139],erhart:[111,156,158],eros:134,erose_form:134,erot:2,errata:[156,158],erratum:80,error:[0,1,2,3,11,48,58,62,63,65,68,74,79,80,81,91,105,122,139,146,154,156,158],erta:118,especi:[4,45,60,72,73],essenti:[3,11,48,94,105,122,158],essential:69,essex:13,establish:32,estim:[1,2,19,29,35,43,59,60,74,139],esub:134,eta:[2,67,68,72,112,114,117,145,157,159],eta_dot:68,eta_ij:145,eta_ji:114,etap:68,etap_dot:68,etc:[1,2,3,4,28,33,34,35,40,43,45,58,59,66,68,79,81,91,92,111,112,130,132,137,155,156,158,159],etol:[91,92],etot0:72,etot:[2,43,72],eu2:44,eu3:44,euler:[74,91,92],eulerian:59,europhi:67,evalu:[3,32,35,42,45,46,58,59,66,74,80,91,137,139,141,142,145,148],evanseck:[2,5,46,101],evaul:91,even:[2,4,19,29,56,60,62,63,68,79,80,81,91,92,96,113,114,118,139,146,159],evenli:[19,43,60,67],event:[2,68,79],eventu:2,ever:28,everaer:[103,117,146],everi:[0,1,2,3,4,19,35,58,59,60,61,62,63,67,68,69,70,72,74,75,79,92,109,130,148,163],everyth:163,everywher:124,eviri:113,evolut:[63,67,71],evolv:[67,71],ewald:[2,41,43,91,98,99,100,105,108,113,122,126,144,147],ewald_disp:108,exact:[19,60,61,66,79],exactli:[2,19,35,45,60,66,72,109,111,118,131,139,141,142],examin:[2,61,74],exampl:[0,1],exce:[2,4,19,60,62,68,91],exceed:[19,60,68],excel:113,except:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,33,34,39,43,45,46,47,48,49,50,51,52,53,54,55,57,60,62,68,69,71,75,79,82,83,84,86,87,88,89,92,93,94,95,98,99,100,101,102,103,104,105,107,108,109,111,112,113,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,135,140,143,144,146,147,150,155,156,157,158,159,160,161,162],excess:113,exchang:[2,59,63,79,113],excit:113,excite:113,exclud:[2,4,39,40,42,91,118,131,132,139,154],exclus:[1,4,32,46,104,137,139],excurs:68,execut:[1,2,3,58],exempl:148,exemplari:66,exemplifi:113,exert:[2,81],exhaust:59,exhibit:[36,63,68,113],exist:[2,3,29,45,57,58,62,82,83,84,85,87,110,154,163],exit:[3,19,60],expans:[42,56],expect:[1,4,19,60,70,72,134,137,139],expens:[2,70,79],experi:[2,73,92,109,139],experienc:[2,4],explain:[1,2,3,19,30,40,58,60,62,68,70,92,96,111,148,150,163],explan:[2,40,42,70],explic:138,explicit:[2,3,32,74,94,97,101,111,113,121,131,163],explicitli:[2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,39,45,46,47,48,49,50,51,52,53,54,55,66,68,69,72,75,79,82,83,84,86,87,88,89,93,94,95,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,135,137,139,140,141,142,143,144,146,147,150,151,152,153,155,156,157,158,159,160,161,162,163],explictli:4,exploit:71,explor:[41,44],expon:[74,111,115,117,120,130,138,147],exponenti:[32,74,115,145,155,159,162],expos:3,exposit:[59,109],express:[2,42,45,62,70,74,79,97,111,113,124,134,148,149],expressiont:97,extend:[0,2],extens:[2,4,21,22,27,32,35,63,68,69,70,73,77,78,79,80,81,117,134,137,146,149],extent:[1,19,21,60,94],exterior:[2,81],extern:[32,58,62,66,67,68,69,79,91,135,136],extra:[2,3,4,19,22,39,41,43,44,45,60,68,72,91,108,118,134,139],extract:[2,3,18,32,92,105,114,134,149],extract_atom:3,extract_comput:3,extract_fix:3,extract_glob:3,extract_vari:3,extrapol:1,extrem:[1,2,58,62,68,78,113,157],extrema:130,extreme:113,extrins:59,f_1:2,f_a:[156,157,158],f_c:157,f_f:158,f_fix_id:72,f_harm:78,f_i:[13,145],f_id:2,f_ij:145,f_int:77,f_j:13,f_jj:35,f_k:145,f_langevin:79,f_max:72,f_r:[156,157,158],f_sigma:97,f_solid:78,f_ss:2,face:[2,80,81,117,134,146],facil:0,facilit:2,fact:[2,4,78,118,148],factor:[1,2,8,12,16,17,18,19,22,23,32,35,41,42,44,46,54,58,60,62,63,67,68,69,71,73,74,75,80,81,87,94,97,98,99,101,105,106,107,109,110,113,118,121,122,134,137,139,141,142,143,144,147,150,155],fail:[3,62,91,92,107],fairli:[3,139,163],faken:30,fall:2,fals:148,famili:159,familiar:[0,3,163],fan:145,far:[2,60,62,68,70,73,80,83,87,92],farrel:[156,158],fashion:[2,19,45,60,68,69,72,78,79,80,92,131],fast:[2,4,72,74,131,132,137],faster:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,37,39,46,47,48,49,50,51,52,53,54,55,60,68,69,75,77,79,82,83,84,86,87,88,89,93,94,95,97,98,99,100,101,102,103,104,105,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,140,143,144,146,147,150,155,156,157,158,159,160,161,162],fastest:[1,2,79],fault:29,fava:117,favor:61,fcc:[2,29,30,35,38],fcold:63,fdt:[64,65,74],fdti:32,fe2:44,fe3:44,fe_md_boundari:59,featur:[0,2,3,42,58,61,66,71,81,91,163],fecr:111,feel:[70,81,92,139],fehlberg:74,felling:136,felt:81,fene:[2,4],fennel:[105,122],fep:0,ferguson:[2,46],fermi:[1,158],fermion:113,fernando:133,few:[1,2,3,63,68,75,91,92,94,148],fewer:[1,3,4],feynman:71,ffield:[104,114,148],fflag1:58,fflag2:58,ffmpeg:58,ffplai:58,fft:[1,3,43],fhot:63,ficiti:154,fictiti:[2,71,73,105,122,126,154],field:0,fifth:[2,115,143],figshar:70,figur:[1,4,72,163],fij:108,file0:70,file1:[3,65,70],file2:[3,65],file:[0,1],filenam:[4,19,58,59,60,65,70,74,79,92,93,94,97,105,111,112,114,115,134,135,136,141,142,143,145,148,149,155,156,157,158,159],fill:[45,58,79,97,137,163],filter:59,finchham:[2,107],find:[0,2,3,4,30,32,61,62,65,70,73,91,92,105,122,126,134,141,142,148,163],fine:[4,78,163],finer:[42,45],finger:45,finish:[2,3,19,60],finit:0,finni:111,fire:[91,92],first:[0,1,2,3,4,6,19,21,22,28,29,35,37,38,39,43,44,47,58,60,61,65,66,67,68,70,71,72,75,76,77,78,79,82,91,92,93,94,96,97,98,99,101,104,105,111,113,114,115,118,119,121,122,126,131,132,134,136,137,139,141,142,143,145,148,149,154,155,156,157,158,159,162,163],fischer:[2,5,46,101],fit:[2,73,94,97,134,139,141,142,157,163],five:[30,72,97,135],fix:[0,1],fix_flux:59,fix_heat:63,fix_id:[62,68,69,72],fix_manifoldforc:163,fix_modifi:2,fix_nv:163,fix_rattl:75,fix_shak:75,fixedpoint:[62,68],fixid:[58,59],fji:108,flag:[3,4,33,34,40,41,44,58,61,94,120,121,134,137,154,163],flag_buck:100,flag_coul:[100,108,126],flag_lj:[108,126],flagfld:[131,132],flaghi:[131,132],flaglog:[131,132],flagvf:[131,132],flat:[2,4,79,80],fld:[80,131,132],flexibl:[2,58,113,157],flip:[2,68],fluctuat:[2,32,62,66,67,68,69,70,78,79,88,110],fluid:[2,62],flux:2,flv:58,fly:[19,58,59,75,97,137],fmass:71,fmax:91,fmsec:68,fno:4,fnorm:91,fnve:63,focu:75,foil:[42,70,149],fold:[4,76],follow:[0,1,2,3,4,5,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,35,36,38,42,43,45,46,48,49,50,51,52,53,54,55,56,58,59,60,64,65,66,67,68,69,71,72,73,74,75,77,78,79,83,84,85,86,87,88,89,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,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],foo:[3,58,74],foo_species:74,foot:2,forc:[0,1],forcefield:[73,120],forcegroup:67,ford:108,forgiv:68,fork:163,form:[2,28,32,33,34,36,42,43,66,73,74,79,80,81,82,85,88,92,94,97,110,111,113,116,120,121,133,134,136,137,141,142,143,144,145,146,148,149,150,156,157,158,161],formal:[2,35,66,68,71,148],format:[2,19,58,60,65,74,79,92,93,94,97,111,114,115,121,134,136,141,142,147,149,159],formation:65,former:[2,19,60,79,97],formul:[1,2,43,68,73,75,94,97,111,113,117,134],formula:[2,6,28,29,30,32,33,34,35,39,41,43,44,45,47,57,70,76,80,82,84,94,96,97,101,102,103,108,109,111,112,117,118,119,120,121,122,124,125,126,128,129,131,132,134,138,139,140,146,147,150,155,156,157,158,159,160,161],forth:[1,2,3],fortran:[2,3,111,134],forward:[32,92],foster:[97,145],found:[2,30,61,63,67,105,108],four:[2,3,28,42,79,88,92,137],fourier:2,fourth:[2,4,37,73,101,115,143,148],fox:[2,41,46,153],fqq:108,fraction:[1,2,4,19,43,58,61,62,72,74,92,97,115,118,131,132],frame:[42,59,72,117],framer:58,framework:[93,149],frattl:63,free:[2,13,29,32,70,77,78,79,92,113,130,137,140,145,161],freedom:[2,39,61,68,69,71,75,78,91,108],freeli:[0,2,58],freez:2,frenkel:[2,63,78],frequenc:[2,4,71,72,74,109,113,148],frequent:[29,30,36,38,42,63,139],fri:72,friction:[2,72,79,118],from:[0,1],front:72,frontend:58,frozen:[2,39,66,116],fs2:[2,35],ftol:[91,92],fuction:105,fudg:75,fulfil:2,full:[1,2,4,35,58,63,67,70,74,97,111,113,114,117],fuller:91,fulli:[2,70,91,92,105,145,163],fulton:111,fumi:98,funcfl:111,fund:0,funrol:137,further:[2,37,58,67,71,79,91,92,93,96,104,137,148],furthermor:[11,48,63,74,110,113],futur:[0,2,60,66,92,135,136],g_jik:145,g_p:79,ga3:44,gaa:97,gai:117,gain:4,galindo:138,gamma0:13,gamma:[2,13,67,72,109,110,112,117,134,138,151,152,153,155,156,158,159],gamma_:79,gamma_ijk:156,gamma_n:118,gamma_p:79,gamma_t:118,gammaa:138,gammafactor:67,gammar:138,gan:[145,155,156,158,159],gan_sw:145,gan_tersoff:145,gao:[2,5,46,101],gap:[131,132,149],gather:3,gather_atom:3,gathert_atom:3,gauch:51,gauss:106,gaussian:[2,35,37,66,71,73,109,113,116],gave:139,gavhan:4,gaybern:[2,4,91],gcmc:139,gd3:44,gdot:132,ge4:44,gec:[156,158],gen:68,gener:0,gentler:80,gentli:112,geom:2,geometr:[2,40,45,60,68,81,92,96,102,103,105,108,113,115,117,119,122,123,124,125,126,127,128,129,130,131,132,133,138,139,142,146,150,160,161],geometri:[2,9,19,45,60,62,139],gerber:130,germann:[69,124],germano:117,get:[0,1,2,3,4,19,35,40,42,45,58,60,62,81,92,105,159,163],get_natom:3,get_rank:3,get_siz:3,gewald:2,gezelt:[105,122],ghost:[2,4,30,62,68,109,110,113,118,121],gif:58,gifsicl:58,gillan:149,gingold:[151,152],git:163,give:[0,1,2,3,4,28,36,38,45,62,68,70,91,94,97,113,120,134,137,139,146,156,157,158],given:[2,3,4,11,38,42,43,48,57,62,63,66,67,68,69,70,71,72,73,74,75,76,79,80,81,93,94,97,98,99,100,102,103,104,105,106,109,110,111,113,114,115,117,118,120,122,123,124,126,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,162],glosli:137,glotzer:109,glue:3,gnu:0,gnuplot:3,goddard:[2,9,89,113,120],goe:[28,42,45,63,91,108,112,119,124,127,150,162],gold:29,goldman:72,good:[1,2,4,19,30,41,44,60,68,75,92,93,103,111,137,139,159,163],gordan:42,gordon:2,got:163,gould:[2,46],gov:[0,93,111,114],govern:67,gpa:94,gpl:0,gpt:137,gpu:[1,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,39,46,47,48,49,50,51,52,53,54,55,68,69,75,82,83,84,86,87,88,89,93,94],grab:2,grad:2,gradient:[2,62,63,79,92,132,141,142],graft:61,grain:[2,13,18,28,45,51,65,70,74,115,119,137,142,147],gram:111,gran:[2,80,81],grana:90,granular:0,graph:3,graphic:3,graviti:2,grdient:59,great:[72,163],greater:[1,62,66,68,70,96,98,99,100,139],greatli:[41,63],green:[2,35,58,71,97,163],green_kubo:2,grest:[21,22,61,100,118,126],grid:[19,41,44,60,67,79],grigera:2,gromac:91,gromacs:[2,91,119],groot:109,ground:[2,31,64,113],group:[2,3,4,19,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,92,148,159],group_id:3,grow:[2,68,70,74,118],growth:2,gsmooth_factor:134,guarante:45,guess:163,gui:[3,163],guid:[1,151,152,153],guidelin:1,gullet:134,gulp:2,gunnel:137,gunsteren:130,guo:[2,5,46,51,101],gyrat:2,gzip:[58,92],h12:117,h2o:[115,142],had:[2,3,40,61,62,66,68,69,79,109,118,154],hafskjold:[2,63],half:[1,2,4,19,58,60,68,79,80,81,97,103,113,137],halfwai:[19,58,163],halperin:36,halsei:118,halt:[19,60,63],halv:58,hamak:[80,81,103,146],hamilton:29,hamiltonian:[68,113],han:111,hand:[2,28,29,40,45,55,58,67,74,105,113],handl:[4,58,113,131,159],happen:2,hara:157,hard:[1,73,148],harden:150,harder:[80,81],hardi:59,hardwar:[1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,39,46,47,48,49,50,51,52,53,54,55,68,69,75,82,83,84,86,87,88,89,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,140,143,144,146,147,150,155,156,157,158,159,160,161,162],harmon:[2,4],harmonic_fix_wal:132,harrison:94,hartre:[111,113,137],hassl:73,hat:2,have:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,34,35,36,37,38,39,42,43,45,46,47,48,49,50,51,52,53,54,55,58,60,61,62,66,67,68,69,70,71,72,75,79,80,81,82,83,84,86,87,88,89,91,92,93,94,95,97,98,99,100,101,102,103,104,105,108,109,110,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,134,135,136,137,139,140,141,142,143,144,145,146,147,148,150,155,156,157,158,159,160,161,162,163],hbond:2,hcn:74,hcp:[29,30,134],he1:44,head:[2,6,47,82,94,116,120,163],header:[2,58,72,79,93,97,111,154],heat:2,heavili:[19,60],heavisid:79,hebenstreit:4,height:[58,92,116],held:[2,74,92,118],helic:51,helium:95,help:[4,62,70,97,140,156,158,163],henc:[1,5,6,10,16,17,18,29,47,68,80,81,82,83,87,88,105,116,130,145],henderson:27,henkelman1:92,henkelman2:92,henkelman:92,here:[1,2,3,4,19,29,40,41,44,50,57,58,60,61,66,67,70,72,79,80,90,91,92,94,97,114,117,120,121,133,145,146,148,162,163],hertzian:[2,118],hertzsch:118,heterogen:37,hex:[45,63],hexagon:[36,134],hexat:36,hey:43,hf4:44,hfo:104,hftn:[91,92],hg1:44,hg2:44,hibb:71,hierarchi:[100,101,122,123,126,133,138],higdon:[131,132],high:[1,2,4,19,38,58,60,62,79,91,94,97,113,117,137,141,142,146,162],higher:[1,4,42,63,91,94,113,148],highest:[63,92],highli:[2,4,45,58,68,72,91,113],highlight:2,hight:116,hill:71,histo:[2,44],histogram:[1,2],histor:114,histori:[0,2],ho3:44,hoc:88,hoh:[2,105,122,126],hold:[2,73,91,92,118,130,161],holdem:73,holian:[69,124],holm:70,home:3,homepag:58,homogen:139,hone:71,hood:137,hook:[2,3],hookean:118,hoover:[2,68,69,71,78,109],hop:[61,92,97,148],hope:[19,60],hopefulli:91,horn:2,host:4,hot:2,hove:134,how:[0,1],howev:[1,2,3,4,18,19,35,41,42,44,58,60,61,62,66,67,68,70,71,72,79,92,102,103,111,112,118,134,137,141,142,145,155,158,163],howto:[2,68,105,120,122,126],hoyt:59,hpc:1,htm:111,html:[0,3,116,132],htmldoc:0,http:[0,2,3,70,93,111,131,163],https:163,htype:[105,122,126,130],hubbard:106,huge:163,huggin:[98,99],hugh:59,hugoniostat:69,hugoniot:[69,72],hundr:63,hura:2,hybrid:[1,2,4,32,57,68,93,94,104,105,109,111,114,117,118,120,121,130,134,135,136,137,139,143,145,146,148,149,154,155,156,157,158,159,162],hydrat:116,hydrocarbon:[94,104,113],hydrodynam:[67,131,132],hydrogen:[2,94,97,105,113,120,122,126,130],hydrostat:[62,68,69],hynninen:[106,116],hyoungki:136,hyper:[4,71],hyperbol:106,hyperradiu:90,hyperspher:42,i_0:79,i_1:145,i_csid:2,i_mpi_pin_domain:4,i_mpi_shm_lmt:4,i_n:145,ialloi:134,ibar:134,ibead:71,ibm:137,icc:137,ice:2,icm:163,icms:163,icosohedr:30,id1:[92,121],id2:[92,121],id_press:[62,68,69],id_temp:[61,62,68,69],idea:[1,2,3,19,43,58,60,70,139,163],ideal:[2,30,70,131,151,163],idealiz:2,ident:[1,4,42,62,66,68,70,71,92,98,99,105,107,111,122,124,130,143,148,149,159,162],identifi:[1,2,29,45,65,120,121,134,141,142],idn:92,ielement:134,ignor:[2,3,4,19,32,58,60,62,68,69,73,79,80,81,92,93,102,103,111,112,114,117,121,134,141,142,143,145,146,155,156,157,158,159],iii:[2,9,89,120],ijj:159,ijk:[86,88,89,97,145,159],ijl:88,ikeshoji:[2,63],ikj:159,illinoi:131,illustr:[1,2,3,4,70,71,92],imag:[2,3,33,34,40,41,45],image2pip:58,image:58,imagemagick:58,imagin:[97,112,135,136,143,145,155,156,157,158,159],imaginari:[2,36,71],imbal:[1,19,60,74],imbalanc:[19,60],img:58,immedi:[0,45,74,75],immers:67,impact:[1,2,94],impart:2,impei:[2,122],implement:[1,2,11,31,32,38,41,44,45,48,57,63,64,67,68,71,72,74,75,79,88,91,92,93,97,104,105,107,109,110,111,112,113,122,126,130,134,146,156,158],impli:[2,32,43,58,73],implicit:[2,66,80],implict:106,important:78,impos:[2,39,63,70,77,78,80,81,91,92],imposs:1,improp:[0,4,39,43,45,61,82,83,84,85,86,87,88,89,91],improper:[4,88],improper_coeff:[82,83,84,85,86,87,88,89],improper_styl:[0,2],improv:[0,1,4,19,60,63,68,120,122,137,139,155,157],in3:44,inaccur:[1,2],inaccuraci:81,inact:120,inappropri:45,incid:[41,44],includ:[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,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,54,55,57,58,59,61,62,66,67,68,69,70,71,72,73,74,75,78,79,80,81,82,83,84,86,87,88,89,91,92,93,94,95,97,98,99,100,101,102,103,104,105,106,108,109,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,134,135,136,137,139,140,143,144,145,146,147,149,150,155,156,157,158,159,160,161,162,163],inclus:[0,32,139],incompat:3,incomplet:3,incompress:113,inconsist:61,incorpor:[56,72,97,106,163],incorrect:134,incorrectli:118,increas:[1,2,4,41,43,58,61,63,65,73,74,92,94,113,117,141,142,157],increasingli:113,increment:[3,60,68,148],incur:79,indefinit:77,indent:91,independ:[2,3,19,35,45,60,61,62,66,67,68,78,79,118,137],index:[0,2,3,40,65,71,79,139,141,142],indic:[2,3,4,6,28,31,33,35,37,39,43,47,58,62,68,79,82,88,104,114,134,137,139,143,148,156,158,163],indirectli:2,indium:149,individu:[0,1,2,3,4,32,39,43,45,57,58,62,63,67,68,75,91,98,99,101,102,105,111,113,119,121,122,126,139,144,147],induc:0,ineffici:[2,29,30,36,38,42,58,68],inerti:132,inertia:[2,40,132],inertiai:40,inertiax:40,inertiaz:40,infer:[60,114],infin:91,infininti:58,infinit:[67,79,113],infinitesim:2,inflect:[106,124],influenc:[19,139,156,157,158],inform:[0,1,2,3,4,19,40,41,44,45,46,58,59,60,61,62,63,67,70,73,75,76,77,80,81,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,108,109,111,112,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,140,141,142,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],infrequ:[2,68,109],infti:[106,131,132],ingtegr:97,inher:[91,139],inherit:2,inhomogen:[79,139],inidividu:91,init:148,init_fil:79,initi:[2,3,19,32,58,59,60,61,62,65,66,67,68,69,71,72,73,74,77,78,79,80,91,92,94,108,109,137,141,142,148],initial:2,initialt:79,inlclud:3,inner2:[101,119],inner:[4,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,111,112,113,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,144,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],inner_distance_cutoff:120,innner:128,inorgan:[2,159],inp:[149,159],input1:40,input2:40,input:[0,1],insert:[45,149,154],insid:[2,3,40,45,63,67,80,81],inside:[67,124],insight:2,instabl:[67,108],instal:[1,2,3,4,58,92,100,101,122,126,130,137,163],install:0,instanc:[2,3,116,139,145],instantan:[2,61,62,66,68,69,72],instanti:[2,3,59],instead:[1,2,3,4,19,29,34,46,60,62,67,99,100,111,121,123,130,134,137,140],instruct:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,39,46,47,48,49,50,51,52,53,54,55,58,68,69,75,82,83,84,86,87,88,89,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,140,143,144,146,147,150,155,156,157,158,159,160,161,162],instruction:3,insuffici:2,insult:68,insur:[2,3,30,45,58,79,80,81,103,117,146],integ:[2,3,29,38,42,45,46,49,50,53,56,58,61,66,67,72,74,79,86,109,110,134,149],integral:[71,141,142],intel:1,intel_coprocessor:4,intel_cpu_intelmpi:4,intel_cpu_mpich:4,intel_cpu_openpmi:4,intend:[2,18,66],intens:[1,2,33,34,35,37,39,41,44,60,61,68,69,79],inter:[61,92,97],interact:[1,2,3,13,28,32,36,38,39,42,43,46,51,56,57,61,70,71,73,74,79,80,81,83,84,85,87,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,142,144,145,146,147,148,149,150,154,155,156,157,158,159,160,161,162],interatom:[45,77,78,93,97,111,113,134,137,148,157],intercept:41,interchang:2,interconvert:113,interesect:81,interest:[1,3,44,71,78,112,132],interf:163,interfac:0,interfer:[68,94],interg:2,interi:132,interior:[2,19,81],interlac:134,interleav:[2,45],intermedi:[2,58,70,88,92],intermolecular:94,intern:[0,2,3,4,5,6,8,12,16,17,18,31,32,40,43,47,58,59,64,65,68,69,74,82,83,87,88,91,110,115,141,142,151],internal:58,internal_element_set:59,internal_quadratur:59,internat:[4,41,44,59],interpenetr:134,interpentr:[151,152],interpol:[2,58,59,65,67,70,92,97,139,141,142,156],interpret:[2,3,56,58,118,150],interrupt:72,intersect:[2,41,81],intersert:81,interspers:91,interstiti:137,interv:[2,35,68,72,148],intestieti:41,intial:[2,94],intiial:19,intramolecular:13,introduc:[2,36,38,58,63,68,72,88,93,105,113,122,126,130,155],introduct:0,inv:[41,44],invalid:[33,92,131,132],invari:[38,42],invent:75,invers:[2,26,41,44,72,88,89,98,105,122,160,161],invert:[1,2],invis:81,invoc:61,invok:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,32,33,34,39,45,46,47,48,49,50,51,52,53,54,55,58,59,60,61,62,63,66,67,68,69,70,75,76,77,78,79,80,81,82,83,84,86,87,88,89,91,92,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,135,139,140,143,144,146,147,149,150,155,156,157,158,159,160,161,162],involv:[2,67,91,92,96,117,155,156,158],ion:[2,79,97,106,114,116,134,137,148,158,162],ionic:[2,98,99,106,113,114,144,148],ioniz:[104,113],ipp:0,ir3:44,ir4:44,irregular:[2,19,60,62,68],irrelev:143,irrespect:[131,132],irrevers:74,isbn:161,isenthalp:68,ismail:[100,126],isn:[3,63],iso:[62,68,69],isobar:[68,110],isodem:113,isoenerget:110,isoenthalp:110,isol:118,isomorph:71,isotherm:[68,110],isotrop:[2,36,117,131,132],issu:[1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,30,39,46,47,48,49,50,51,52,53,54,55,58,61,62,63,68,69,71,75,78,82,83,84,86,87,88,89,92,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,140,143,144,146,147,150,154,155,156,157,158,159,160,161,162],issue:59,item:[2,19,60],iter:[2,19,60,62,75,91,92,148],iterat:91,itself:[2,3,35,58,79,92,105,114,117,141,142],ityp:45,izumi:157,j0jt:35,j_m:42,jackson:138,jacs:[2,46],janssen:70,januari:134,jaramillo:113,jcp:80,jeffer:4,jello:68,jeremi:136,jik:97,jmm:42,job:75,jochim:68,join:[2,29,118],joint:120,jon:29,jone:[1,2,21,22,32,46,59,63,80,81,91,94,96,99,100,101,102,103,108,117,119,120,121,122,123,124,126,127,129,130,133,138,139,145,146,147],jonsson:[30,92,148],jorgensen:[2,54,105,122,126],journal:[51,59,111,137,151,152],jpeg:58,jpg:58,judici:2,jump:[2,18,69],jun:4,just:[2,3,13,35,43,58,79,92,94,96,145,163],justo:112,jusufi:[106,116],jut:81,k11:35,k22:35,k33:35,k_2:85,k_4:85,k_sigma:97,k_ub:5,kalia:159,kapfer:38,kappa:[2,35,105,110,122,160,161],kappa_:79,karplu:32,karttunen:67,kate:0,kaufmann:4,kayser:106,kcal2j:35,ke_eta_dot:68,ke_etap_dot:68,ke_omega_dot:68,keblinski:[105,148],keef:41,keep:[55,74,78,91,105,130,149,163],kei:[2,159],kelchner:29,kemper:104,kepler:1,kept:[2,69,77,78],kernel:[4,59,66,137,151,152,153],keword:58,keyword:[2,4,19,29,32,34,36,37,38,39,40,41,42,43,44,45,58,59,60,61,62,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,91,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,111,112,113,116,117,118,119,120,121,122,123,124,125,126,127,128,129,131,132,133,134,135,136,137,138,139,140,141,142,144,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],keywrod:113,khersonskii:42,khvostov:4,kim:[134,135,136],kind:[1,2,3,19,30,58,60,61,75,92,97,113],kinemat:[131,132],kinet:[2,32,35,39,43,62,63,68,69,72,74,91,113,115,142],kjl:88,klein:[2,59,68,122,147],kmax:41,kmp_affinity:4,knight:4,knl:4,knock:79,know:[3,19,91,112,163],knowledg:58,known:[42,58,63,77],kokko:1,kokkos:[1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,39,46,47,48,49,50,51,52,53,54,55,68,69,75,82,83,84,86,87,88,89,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,140,143,144,146,147,150,155,156,157,158,159,160,161,162],kollman:[2,46],kone:[77,78],koning00a:77,koning00b:77,koning96:[77,78],koning97:78,koning99:77,kraker:4,kremer:[21,22],kress:[135,136],kspace:[0,1,2,32,39,43,91,98,99,100,101,105,108,122,126,130,132,139,147],kspace_modifi:[2,4],kspace_styl:0,kstart:73,kstop:73,kth:[66,71],kub:5,kubo:[2,35],kumagai:157,kumar:[131,132],kuronen:145,kuster:90,kutta:74,l12:134,l_box:113,l_skin:79,la3:44,label:[63,71,92],laboratori:[0,31,64,72],lack:[4,113],lackmann:97,ladd:78,lafitt:138,lag:79,lagrangian:[2,59,72],lagrangian_posit:72,lagrangian_spe:72,lambda1:[156,157,158,159],lambda2:[156,157,158],lambda3:[156,158],lambda4:159,lambda:[32,41,44,67,77,78,79,93,112,130,140,155],lambda_fin:77,lambda_initi:77,lamda:[27,140],laminar:153,lammp:[0,3,92,134,137,163],lammps2pdb:2,lammps_clos:2,lammps_command:2,lammps_extract_atom:2,lammps_extract_comput:2,lammps_extract_fix:2,lammps_extract_glob:2,lammps_extract_vari:2,lammps_fil:2,lammps_get_coord:2,lammps_get_natom:2,lammps_ns:2,lammps_open:2,lammps_potentials:104,lammps_put_coord:2,lammps_quest:2,lammps_rk4:74,lammps_set_vari:2,lammps_sppark:2,lammps_vers:2,lamms:2,lamoureux:2,land:4,landron:148,lane:1,langevin:[2,66,68,69,72,73,78,79,92,108,109],languag:[2,3],larentzo:[31,64],larg:[0,1,2,4,19,29,40,43,45,51,58,60,61,62,63,67,68,72,73,75,79,80,81,88,90,91,103,109,113,117,118,121,137,139,141,142,146],larger:[1,2,3,19,29,45,58,63,67,68,73,79,80,81,91,92,97,103,105,106,113,118,122,126,132,139,154],largest:[2,45,91,141,142,154],laser:79,last:[1,2,3,43,56,58,60,74,91,92,95,96,97,98,103,104,109,110,111,116,117,118,119,120,123,125,127,128,129,132,138,140,146,148,150,154,160,161],lat:134,later:[2,3,69,91,94,97,163],latitud:42,lattc:134,latter:[2,3,4,19,32,60,62,68,74,81,97,99,100,101,102,108,122,126,130,137,144,147,148],lattic:[2,19,29,30,35,36,41,44,45,60,67,70,80,81,93,111,134],launch:[1,2,3,4],laupretr:88,law:2,layer:[2,79],layout:1,lb_fluid:67,lbtype:67,ld_library_path:3,lead:[2,9,19,32,60,67,69,72,74,75,88,92,105,122,126,128,137,163],least:[2,41,44,63],leav:[3,6,19,43,47,60,62,68,75,82,139],lee2:134,lee:[59,134],left:[2,3,19,57,58,61,70,74,163],leftmost:[19,60],legaci:4,leimkuhl:68,leiu:109,lenart:[106,116],length:[2,3,4,6,19,27,28,29,31,32,33,34,35,37,39,40,41,44,47,58,60,61,62,65,67,68,69,70,75,79,80,81,90,91,92,94,97,98,99,105,106,113,116,120,122,134,139,141,142,156,160,161],lennard:[1,2,21,22,32,46,63,80,81,91,94,96,99,100,101,102,103,108,117,119,120,121,122,123,124,126,127,129,130],lenoski:[135,136],less:[1,2,4,19,36,38,40,60,61,62,63,68,70,91,97,101,117,118,131,132,139,146,155,158,161],let:[1,50,65,75,103,141,142],lett:[42,67,77,78,97,111,113,117,130,141,142,149],letter:[19,60,71],level:[3,58,68,70,73,76,80,81,97,100,101,122,123,126,133,137,138],lever:154,levin:118,lgr_po:72,lgr_vel:72,li1:44,liang:104,lib:[1,3,4,104],libdir:3,liblammp:3,liblammps_foo:3,liblammps_g:3,libmpi:3,librari:[0,1],licens:[0,58],lie:[2,29],like:[2,3,4,28,58,62,68,70,72,74,80,81,90,92,97,103,108,109,110,113,114,118,120,127,128,134,149,158,160,161,163],likelihood:[41,44,61],likewis:[1,2,19,59,60,68,69,92,93,96,97,105,111,114,137],limit:[2,4,11,41,42,44,45,48,58,62,63,66,68,72,91,106,113,118,132,147,150],limit_eradiu:113,line:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,39,42,43,46,47,48,49,50,51,52,53,54,55,58,60,62,65,68,69,70,72,74,75,79,82,83,84,86,87,88,89,91,92,93,94,95,97,98,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,134,135,137,140,141,142,143,144,145,146,147,148,149,150,155,156,157,158,159,160,161,162,163],linear:[2,9,11,42,48,59,61,62,65,68,73,75,79,80,83,84,85,87,92,118,128],linearli:[2,80,92],lineflag:2,lineforc:91,lingo:3,link:[2,3,57,58,134],linkflags:4,linux:[3,4,58],liouvil:68,lipid:13,liquid:[2,4,13,19,32,36,43,60,62,68,72,108,137,139,144,157],lisal:[110,154],list:[0,1,2,3,4,6,19,29,30,32,36,38,39,42,43,47,57,58,59,60,61,65,68,70,74,75,82,83,84,85,87,88,90,91,92,93,94,97,98,99,101,102,104,105,107,109,110,111,112,113,114,115,117,119,120],listfil:121,literatur:[2,134,148,155],lithium:113,littl:[1,4,63,68],littmark:[134,158,162],liu:120,lj126:2,lj12_4:147,lj12_6:147,lj93:2,lj9_6:147,lj_flag:94,lmp1:3,lmp2:3,lmp2arc:[0,2],lmp2cfg:[0,2],lmp2vmd:0,lmp:3,lmp_g:[2,3],lmp_linux:2,lmp_machin:[1,4],lmp_mpi:71,lmpptr:3,load:[1,2,3,4,19,58,60,72,74,104],loadabl:3,localized_lambda:59,localtemp:74,locat:[2,3,11,41,44,48,56,63,67,78,81,105,114,115,116,122,124,126],lockstep:[62,68],log:[1,2,4,72,75,92,94,116,120,131,132],logfil:[0,2],logic:[3,4,19,45,60],lomdahl:[69,124],longer:[1,2,28,68,70,72,74,75,80,81,94,118,148],longest:[19,60],look:[1,2,3,28,58,149,163],lookup:[139,141,142],loop:[2,3,40,43,58,91,92,137,148],loopmax:148,lopez:68,lorentz:44,lose:[2,62,68,118],loss:2,lossi:58,lossless:58,lost:139,low:[1,2,19,58,60,137,141,142,161],lower:[2,3,4,19,58,60,62,67,68,72,80,106,134],lowercas:[0,58],lowest:42,lrt:4,lsurfac:79,ltbbmalloc:4,lu3:44,lubric:2,lubricateu:[80,131],luci:74,lumped_lambda_solv:59,lyulin:88,m4v:58,m_eff:118,m_i:76,m_u:67,m_v:67,machin:[1,2,3,4,58,68,91,137,163],mackai:67,mackerel:[2,5,46,101],macos:58,made:[2,3,19,58,60,78,117,118,146,150,163],madura:[2,122],magazin:111,magda:80,magic:3,magnitud:[2,29,37,45,91,108,118],mai:[0,1,2,3,4,13,19,29,32,33,34,36,37,38,39,40,41,42,43,44,45,57,58,60,62,63,66,67,68,69,71,72,73,74,75,78,79,80,81,91,92,94,96,97,103,109,113,118,128,130,132,134,135,136,137,139,141,142,147,149,154,159,162,163],mail:163,main:[2,3,67,77,78,111,148],mainboard:1,mainli:144,maintain:[4,93,111,163],make:[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,31,32,37,39,40,41,42,44,46,47,48,49,50,51,52,53,54,55,56,57,58,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,78,79,81,82,83,84,85,86,87,88,89,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,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],makefil:[3,4,137],maks:118,manag:71,manbi:149,mandadapu:59,manh:97,mani:[1,2,4,19,35,45,58,60,61,62,63,65,66,67,68,69,70,74,75,79,91,92,104,113,116,120,141,142,148,149,156,158],manipul:[19,60,105,145],manner:[2,3,19,43,58,60,68,77,78,80,81,92,111,113,131],manual:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,39,41,44,46,47,48,49,50,51,52,53,54,55,58,68,69,75,82,83,84,86,87,88,89,92,93,94,95,96,98,99,100,101,102,103,104,105,107,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,140,143,144,146,147,150,155,156,157,158,159,160,161,162],manybodi:[43,91],manybody:[93,94,97,104,111,114,143,145,155,156,157,158,159],map:[3,41,42,44,45,58,59,63,73,92,93,94,97,104,111,112,114,134,135,136,139,143,145,148,149,154,155,156,157,158,159],mara:148,march:134,mark:[119,130,148],maroonmpi:3,marrink:119,marsaglia:66,martin:134,martyna:68,mask:70,mask_direct:59,mass:[2,32,33,34,35,37,40,45,59,63,66,67,68,71,72,75,76,78,79,93,96,97,111,113,114,118,131,132,135,136,137,145,148,151,152,153],mass_matrix:59,massdelta:75,massiv:[0,58,67,71],massless:[2,105,122,126,130],master:92,mat:[59,104,157],match:[2,3,19,60,61,65,68,97,120,128,134,141,142],mater:[30,93,136,145,148],materi:[2,29,59,70,79,105,111,112,113,118,134,135,137],material_fil:59,math:[4,68],mathemat:[41,42,44,45,62,66,80,149],mathrm:163,matlab:0,matric:[42,117],matrix:[2,35,62,74,137],matter:[2,79,94,107,111,113,134,147,148,156,158,159,162],mattson:[31,39,43,64],max2theta:44,max:[2,60,62,74,75,91,92,148],max_step:74,maxev:91,maxim:92,maximum:[2,9,19,21,27,28,36,38,41,44,60,63,70,74,75,92,97,116,131,132,148],maxit:91,maxstep:74,maxx:145,mayer:[98,99,148],mayo:[2,9,89,120],mbt:47,mcdram:4,mcgraw:71,mclachlan:68,mdregion:59,mdump:[19,60],meam:105,meam_sw_splin:136,meamf:134,mean:[2,3,4,19,28,32,35,36,37,38,39,40,42,43,45,46,57,58,60,61,62,63,66,68,69,70,71,74,75,79,80,81,83,84,85,87,91,92,98,99,100,101,105,109,111,113,117,118,120,122,123,126,133,134,138,139,141,142,144,145,146,147,154,155,156,157,158,161],meant:2,measur:0,mechan:[2,3,31,59,63,64,71,74,97,113,124,137],meck:38,media:58,medium:161,meet:[58,61],mehl:93,mei:133,melros:[131,132],melt:[61,97,137,157],member:[46,97],membran:[13,161],memori:[2,4,66,79,97,139],mendelev:111,mention:[1,2,3,67,69,80,92,94],menu:58,mep:92,mer:61,mercuri:163,meremianin:42,merg:163,merz:[2,46],mesh:[1,2,19,41,44,59,60,67,137],mesoparticl:[64,65,110],messag:[0,2,3,58,63,131,132,163],met:[19,60,91,92],metal:[45,59,72,80,93,94,97,104,111,112,113,114,134,135,136,137,145,148,155,156,157,158,159],methan:72,methin:88,method:[1,2,3,4,19,32,35,43,59,60,65,67,68,71,72,74,75,77,78,91,92,93,97,104,105,111,113,114,134,135,136,139,141,142,145,148,159],methodolog:[2,30,43,71],mezei:32,mg2:44,mgoh:143,mgptfast:137,micel:76,micelle2d:0,michael:136,mickel:38,microscal:131,mid:[137,154],middl:[2,4,19,32,47,60,73,82,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,111,112,113,116,117,118,119,120,121,122,123,124,125,126,127,128,129,131,132,133,134,135,136,137,138,140,141,142,144,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],middlebondtors:47,midpoint:154,might:[2,4,9,148,163],migrat:[19,40,60,70],mikami:[2,68],mike:4,mil:111,militz:70,million:[19,60],mimic:[2,28,105,116,122],mimim:[62,92],min2theta:44,min:[2,42,74,148,154],min_modifi:[62,91],min_step:74,min_styl:[91,92],mind:66,minim:[0,2,19,45,58],minima:[51,56,89],minimi:92,minimizaiton:92,minimum:[9,10,11,21,37,44,48,58,62,73,74,80,81,89,91,92,101,113,115,117,119,120,122,124,126,131,132,147,154],minmiz:62,minstep:74,mintmir:105,minu:92,misc:[2,10,11,13,24,25,37,48,66,70,71,77,78,79,83,85,88,106,108,111,112,116,121,127,133,135,136,140,144,154],miscellan:59,mishin:93,mishra:4,miss:[121,139],mitchel:[2,107],mitig:68,mix:[1,2,4,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,111,112,113,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,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],mixtur:[2,68,103,115,134,142],mixture_ref_t:134,mjpeg:58,mkv:58,mn2:44,mn3:44,mn4:44,mo3:44,mo5:[44,137],mo6:44,mobil:[2,37,43,58],mode:[1,2,3,4,34,44,58,68,71,105,113,137,148],model:[0,1],modern:4,modest:1,modif:[2,4,32,134,137,146,158,163],modifi:[0,1,2,3,32,58,63,73,75,78,94,108,111,113,130,134,135,136,139,140,148,157,163],modin:59,modul:[3,90],modulu:[118,134],mol:[40,45,75,108,117,147],molchunk:34,mole:[111,115],molecul:[2,13,33,34,40,43,45,61,63,65,73,74,75,101,105,117,122,126,146],molecular:[0,2,4,27,45,51,59,63,71,72,73,79,95,97,100,113],molecule:[5,7,8,9,12,16,21,22,23,26,27,28,46,50,51,52,54,57,84,87,89,101,122],moltempl:0,molybdenum:137,mom:[2,35,73],moment:[2,40,45,67,68,76,108,112,148],momenta:[63,113],momentum:[2,13,40,42,45,59,66,67,68,132],momon:61,monaghan:[151,152],monitor:[2,62,68,72,75,91,92,108],mono:[30,131],monodispers:[118,131,132],monom:[28,61],monoton:[65,92],mont:[2,61],month:0,moor:[31,43,64,141,142],more:[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,31,32,34,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,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,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],morgan:4,moriarti:137,moriarty1:137,moriarty2:137,moriarty3:137,mors:2,mosi2:134,moskalev:42,most:[0,1,2,3,4,19,29,57,58,60,62,68,71,72,94,113,117,134,158,163],mostli:[3,58],motiion:2,motion:[2,63,67,68,69,70,71,73,79,81,90,92,108,113,131,132],motiv:70,mov:58,move:[1,2,3,37,62,67,68,70,72,73,79,80,81,91,92,105,109,131,132,137],movement:[2,91],mp2:94,mp4:58,mpeg:58,mpg:58,mpi4pi:3,mpi:[0,1,2],mpi_barrier:1,mpi_comm:2,mpicc:3,mpich:4,mpirun:[1,2,3,4,71],mplayer:58,msd:2,msi2lmp:0,msmse:[41,44],msse3:137,msst:[69,72],mtk:[68,69],mu_j:13,muccioli:117,much:[1,2,3,58,62,72,94,117,146,163],muller:[2,35,138],multi:[0,1],multibodi:[141,142],multicent:113,multicor:1,multinod:4,multiphys:3,multipl:[0,1],multipli:[32,35,57,67,70,91,94],multiscal:3,multisect:[19,60],multistag:32,multithread:4,murdick:97,murti:157,must:[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,32,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,58,59,60,61,62,63,65,66,67,68,69,70,72,73,74,75,78,79,80,81,82,83,84,85,86,87,88,89,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,110,111,112,113,114,115,116,117,118,119,120,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],mutli:2,mux:58,mxn:71,mychunk:[2,34],myflux:35,myhug:69,myke:35,mymol:75,mympi:3,mype:35,myramp:43,myrigid:40,myspher:81,mystress:35,n_f:72,n_hbond:120,n_ij:118,n_ion:79,n_k:66,n_particl:31,na1:44,nabla:79,nacl:[2,134],nacl_cs_x0:2,nakano:[92,159],name:[0,1,2,3,4,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,58,59,60,61,62,63,64,65,66,67,71,72,73,74,75,76,77,78,80,81,92,93,94,97,99,111,112,114,117,118,121,134,135,136,143,145,148,149,155,156,157,158,159,163],namespac:2,nanoindent:29,nanoparticl:60,nanosecond:63,narrow:2,narulkar:[156,158],nation:0,nativ:[1,2],natom:[2,3],natur:[2,42,68,70,111,113,114,134,145],navi:111,navier:67,nb3:44,nb3bharmon:143,nb5:44,nbodi:137,nbot:97,nchunk:[2,34],ncoeff:149,nd3:44,nden:[2,35],ndof:[68,69],nearbi:[81,94,131,132,161],nearest:[29,30,36,38,40,67,70,81,121,134,141,142,148],nearli:[2,28,60,113,137,139],neb:2,neb_combin:92,neb_fin:92,necessari:[2,3,4,32,57,60,62,66,74,130,137,139,148],necessarili:[63,83,84,85,87,139],need:[1,2,3,19,28,29,30,35,36,38,39,42,43,45,46,56,57,58,59,60,62,65,67,68,73,79,80,92,93,94,95,97,98,99,100,101,102,103,104,105,107,108,109,111,112,113,114,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,163],needless:2,neg:[2,11,22,33,42,43,48,50,58,62,66,69,70,74,80,114,125,134],neglect:[120,132],neglig:[2,3,32,68,155],neigh_modifi:[2,4,60,91,109],neighbor:[1,2,4,19,29,30,36,38,42,43,45,58,60,61,70,71,92,103,105,109,111,112,114,115,121,122,126,134,139,142,145,148,149,154,155,156,157,158,159],neighborhood:[10,29,36,149],neighobr:[2,105,122,126],neither:[19,59,61,94,113,131,132],nelem:149,nelement:[93,111],nelson:[36,38],nemd:0,net:[2,3,70,132],netpbm:58,neutral:[105,122,148],never:[62,68,70,75,80,111,134,149,159],neveri:[61,63,67,92,148],newer:134,newtion:[97,137,145],newton:[4,13,94,104,112,135,136,148,154,155,156,157,158,159],newtonian:66,next:[1,2,3,29,35,40,58,65,66,74,75,79,91,92,97,115,118,131,132,141,142,145,163],nfile:[65,141,142],nfreq:60,ngb:70,ngp:37,nguyen:97,nhc:71,ni2:44,ni3:44,ni_000:41,nialh_jea:111,nice:[2,163],nickla:136,nine:[114,148],nissila:[67,148],nist:[93,111],niter:[19,60],nitrid:105,niu3:111,nkb:72,nlocal:3,nlvalu:38,nmpimd:71,nn2:134,nnn:[36,38],no2:[65,74,115],no_affin:4,no_histori:2,noced:91,nocheck:121,nodal:[2,59,65,79,141,142],node:[1,4,19,41,44,60,67,79,121],node_area:67,node_group:59,nodeless:113,nodes:[19,60],nodeset:59,nodeset_to_elementset:59,noforc:[2,132],nois:[2,66,67,72,79],nomenclatur:2,nomin:68,non:[0,1],nonbond:143,none:[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,33,34,35,36,38,39,40,43,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,73,74,75,76,79,80,81,82,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,122,123,124,125,126,127,128,129,130,133,134,135,136,138,139,140,141,142,143,144,146,147,149,150,151,152,153,154,155,156,157,158,159,160,161,162],nonequilibrium:[77,78,113],nongaussian:37,nonlinear:[21,22],noordhoek:104,nor:[19,59,104],nord:[145,156,158],nordlund:[145,156,158],norm:[2,74,91,92,154],normal:[2,3,4,19,29,30,35,39,45,46,60,62,68,70,71,79,80,81,82,83,84,85,87,90,91,92,103,104,117,118,137,154,162],norman:79,nose:[2,68,69,71,78,109],notat:[2,29,42,68,111,159],note:[1,2,3,4,8,9,12,16,17,18,19,23,28,30,32,33,34,35,37,39,40,41,42,43,44,45,46,50,54,57,58,59,60,61,62,64,65,67,68,69,71,72,73,74,76,79,80,81,82,83,84,85,87,91,92,93,94,97,98,99,100,101,103,105,106,108,109,110,111,114,117,118,119,120,121,122,124,126,131,132,134,135,136,137,138,139,141,142,143,145,146,147,148,149,150,154,155,156,158,159,161,162,163],notes:[32,130],noth:163,notic:[0,2,78,79],novemb:134,now:[2,3,4,22,66,81,111,113,118,150,163],np3:44,np4:44,np6:44,nparticl:96,nph:[2,40],nphi:4,nproc:3,npt:[2,4,32,40,62],nreset:[62,68,69],nreset_ref:62,nrho:[93,111],nrl:111,nstat:70,nstep:[62,68],ntabl:[141,142],ntheta:97,ntype:[42,45,113,120,145],nuclear:[72,113,162],nuclei:113,nucleu:158,nudg:[2,92],num_step:74,numa:1,numactl:4,number:[1,2,3,4,11,19,29,30,31,32,34,35,36,38,39,40,41,42,44,45,48,57,58,60,61,65,66,67,68,69,70,71,72,74,75,77,78,79,80,91,92,93,94,97,104,109,111,112,113,114,120,134,135,136,137,139,141,142,143,145,146,148,149,154,155,156,157,158,159,162],numer:[1,2,3,19,32,38,56,58,59,63,66,68,71,75,79,80,91,108,134,139,141,142,162],numpi:3,nvcc:1,nve:[1,2,4,32,35,40,45,59,63,66,68,69,73,75,79,108,117,131,132,146,148,150],nvidia:1,nvt:[2,4,32,35,40,59,63],nvtfe:59,nxnode:79,object:[2,3,58,62,67,91],observ:[4,68,72],obtain:[1,4,13,30,32,38,67,69,71,94,108,134,139,148,156,158],obviou:162,obvious:58,occ:116,occasion:68,occlus:58,occup:116,occur:[1,2,3,37,56,60,61,62,65,77,113,130,141,142],occurr:88,oct:3,octahedr:9,odd:[19,38,60,68,79],ode:74,off:[1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,39,42,43,44,46,47,48,49,50,51,52,53,54,55,57,58,61,66,68,69,75,80,81,82,83,84,86,87,88,89,91,92,93,94,95,98,99,100,101,102,103,104,105,107,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,134,135,139,140,141,142,143,144,146,147,148,150,154,155,156,157,158,159,160,161,162],offer:[2,105,148],offload:[1,4],offset:[2,45,58,105,122,126],often:[1,2,4,57,58,60,62,68,71,91,92,104,109,122,156,158,163],ohio:136,old:[2,62,68,134,150],older:[4,62,68,150],oleinik:97,olfason:[2,9,89,120],ollila:67,olmsted:[59,70],omega0:89,omega:[2,68,80,86,89,108,118,137],omega_dot:68,omega_ij:110,omega_ijk:158,omega_ik:156,omegadd:[141,142],omegai:40,omegax:40,omegaz:40,omgea:2,omiss:0,omit:[63,100,108,126],omp:[1,4],omp_num_threads:4,on_the_fli:59,onc:[0,1,2,3,4,19,46,58,60,74,92,117,119,145,146],once:[0,2,19,35,60,163],one:[2,13,35,42,58,68,69,79,97,106,132,148],onli:[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,34,36,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,61,62,63,64,65,66,67,68,69,70,71,72,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,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,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],only:[2,4,19,29,58,62,63,70,91,92,93,94,97,101,104,111,112,114,120,131,132,134,135,136,143,145,149,155,156,157,158,159],onset:[72,88],onto:[42,61,63,67,154],open:[0,3,58,163],opencl:1,opengl:2,openmp:[1,4],openmpi:4,oper:[1,2,3,4,19,35,45,60,61,63,68,69,75,78,79,92,137,163],opl:4,opls:[54,57],oppelstrup:137,oppos:[2,73],opposit:[2,13,29,46,70,92,105,130],opt:[1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,39,46,47,48,49,50,51,52,53,54,55,68,69,75,82,83,84,86,87,88,89,93,94,95,98,99,100],optim:0,optimiz:[4,91,104],option:[0,1],optional:149,options:[4,137],orang:58,orbit:[97,105,113,148],order:[2,3,4,11,13,19,32,33,34,36,38,39,40,42,43,48,57,58,61,62,63,65,67,68,70,72,73,74,75,79,82,83,84,85,87,88,90,92,93,94,97,104,110,111,113,114,117,118,122,130,134,137,141,142,146,148,155,156,157,158,159],ordinari:[74,120],org:[2,3,70],organ:[0,2,104],organometal:9,orient:[2,13,29,35,36,38,40,45,68],orientord:36,origin:[2,41,45,58,63,68,71,78,93,94,95,97,105,108,109,111,120,134,156,158,163],orlikowski:137,orsi:13,orthogon:0,orthograph:58,orthorhomb:72,os4:44,oscil:[2,68,72,80],ose:58,oserror:3,other:[0,1],otherwis:[1,41,46,57,68,74,89,90,91,121,131,132,145],otyp:[105,122,126,130],our:[2,67,75,139,156,158],out:[1,2,3,6,19,34,35,37,47,58,60,67,79,81,82,83,87,92,113,133],outer2:[101,119],outer:[4,91,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,111,112,113,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,140,141,142,144,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],outer_distance_cutoff:120,outermost:[68,70,73,76,80,81],outlin:[2,58],output:[0,1],output_frequ:59,outsid:[45,58,63,81,92,98,99,105,113,122,124,144,147],outut:2,outward:[80,81],over:[1,2,4,11,19,32,33,34,36,37,38,40,42,43,48,58,60,66,68,70,72,73,74,80,81,82,92,103,109,111,112,113,114,120,131,134,137,145,149,150,155,156,157,158,159],overal:[2,9,62,68,71,75,113,120,149],overhead:[2,3,19,60,63],overlai:[2,4,32,79,105,109,120,121,130,139,149,162],overlap:[4,45,91,109,113,118,130,150],overli:74,overload:1,overrid:[4,45,58,62,68,120,134,139],overridden:[2,45,58,69,131,139,150],overview:[0,1,2],overwrit:[3,134],overwritten:120,own:[2,3,19,30,34,40,59,60,61,62,66,67,68,69,71,92,94,97,104,112,145,155,156,157,158,159,163],oxford:[13,32,108],oxid:[104,105,148],oxygen:[2,105,122,126,148],p10:118,p_e:79,p_ik:145,p_pi:97,pacakg:4,pack:[97,134],packag:0,packet:[58,113],pad:[58,71],page:[0,1,2,3,32,34,37,39,40,43,45,57,58,68,81,90,91,92,93,94,96,104,105,111,112,114,120,134,135,136,139,143,145,149,155,156,158,159],painless:163,pair:1,pair_:32,pair_charmm:130,pair_coeff:[2,32,35,46,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],pair_dzugatov:163,pair_eam:93,pair_interact:59,pair_list:121,pair_lj:130,pair_lj_soft_coul_soft:32,pair_modifi:[2,32,91,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,111,112,113,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138],pair_sph:[151,152,153],pair_styl:[0,1,2,4,18,28,32,35,42,46,66,80,81,91],pair_writ:128,pairwis:[0,1,2,28,29,36,38,39,42,43,46,57,61,66,80,91,93,96,98,99,100,101,103,105,109,110,111,113,114,118,120,121,122,123,126,131,132,133,134,135,136,138,139,140,144,147,150,154,158,160,161],pakketeretet2:163,pan:58,panagiotopoulo:[106,116],papaconstantopoulo:93,paper:[2,42,51,67,79,92,94,100,105,118,120,124,126,156,158],paquai:[90,163],paraemt:146,paragraph:[80,141,142],parallel:[0,1,2],parallel_studio_xe_2016:4,parallelepip:2,param:115,paramet:0,parameter:[41,44,94,97,104,105,111,112,113,114,134,135,136,145,148,155,156,157,158,159],parameter_fil:59,parameterizaion:105,parametr:[2,18,112,147],paramt:[37,146],paramter:104,paratem:130,parenthes:[65,74,115,118,141,142],parenthesi:4,parinello:2,pariticl:60,park:[59,136],parmin:137,parrinello1981:62,parrinello:[62,68,72],pars:0,part:[0,1,2,3,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,31,36,37,39,40,41,42,43,44,46,47,48,49,50,51,52,53,54,55,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,86,87,88,89,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,134,135,136,137,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],partial:[1,2,62,67,69,71,134,139],partic:2,particip:[56,96],particl:0,particular:[1,2,29,42,45,58,60,61,66,67,68,70,73,75,82,96,97,98,99,101,102,103,107,110,112,113,117,119,122,126,130,133,140,143,144,146,147,155,156,157,158,159,163],particularli:[2,9,58,62,113],partit:[2,19,60,71,92,100,101,113,122,123,126,133,138,145],partner:61,pass:[2,3,33,34,37,40,58,62,68,80,90,154],password:163,past:[0,72,109],patch:0,patel:137,path:[2,3,71,79,92,93,94,97,111,112,114,134,135,136,143,145,148,149,155,156,158,159],pathtolammp:148,patrick:157,pattern:30,paul:0,pauli:[113,148],paves:71,payn:[42,149],pb2:44,pb4:44,pbc:80,pchain:[68,69],pcie:1,pd2:44,pd4:44,pdamp:[68,69],pdb:2,pdf:[0,151,152,153],pe_eta:68,pe_etap:68,pe_omega:68,pe_strain:68,peak:116,pearlman:32,pencil:2,peng:44,per:[0,1],peratom:43,perceiv:58,percent:[4,62,155],percentag:[1,62,68],perfect:[2,19,29,30,36,60,70,92],perfectli:[19,60],perfom:[2,92],perform:0,performac:1,pergamon:[134,158,162],peri:[2,45],peridynam:2,perimitt:106,period:2,perioid:80,perl:2,perman:[28,73,120],permit:[2,67,137],permitt:[106,158,161,162],permut:[112,155,156,158,159],perpendicular:[2,58,70,80],perram:117,persepct:58,person:163,persp:58,perspect:58,perturb:[29,32,80],peskin:67,pettifor:97,pettifor_1:97,pettifor_2:97,pettifor_3:97,pfactor:58,phase:[4,68,97,122,157],phenomena:113,phi0:[55,73],phi1:47,phi2:[47,112,155],phi3:[47,112,155],phi:[1,4,36,38,42,56,57,58,73,84,93,97,111,114,134,135,136],phi_ij:[97,114,145],phillip:109,phillpot:[104,105,148],philosoph:111,philosophi:2,phonon:[0,59,79],phophor:149,phosphid:149,phy:[2,5,6,9,20,21,22,29,30,32,36,38,39,42,43,46,47,54,62,63,66,67,68,69,71,72,75,77,78,79,80,82,88,89,92,94,97,98,101,102,103,104,105,106,107,108,109,110,111,112,113,116,117,118,119,120,122,124,126,127,130,131,132,133,134,136,138,139,141,142,144,145,146,148,149,154,155,156,157,158,159],physic:[2,4,27,56,59,63,67,79,92,94,95,100,103,111,120,137,151,152,153],physica:[131,132],picosend:113,piec:[3,42,68],pimd:2,pin:4,pipe:[2,58],pipelin:[2,4],pisarev:79,pishevar:109,pitera:2,pixel:58,pizza:[2,3,19,58,60],pka:79,place:[2,3,19,32,45,58,61,63,66,68,79,80,120],placehold:[93,94,104,111,114,134,135,136,143,145,149,154,155,156,157,158,159],placement:122,plai:[2,58],plain:130,plan:[2,4],planar:[2,70,88,89],planck:71,plane:[2,19,36,58,59,60,70,79,82,83,84,85,86,87,89,90,132],plane_wiggl:90,planeforc:91,plasma:[79,113],platform:[1,4,58],plath:[2,35],player:58,pleas:[0,3,4,59,67,112,114,148],plimpton:[0,4,29,39,43,61,70,118],ploop:[68,69],plos:13,plot:[3,4,72,128,130],plu:[3,62,69,113],pm3:44,png:58,pni:58,poariz:2,poem:2,poems:2,point:[1,2,3,4,13,19,29,41,42,44,45,50,58,60,62,65,67,68,71,72,79,81,90,91,92,96,104,106,108,110,113,117,124,137,141,142,145,146,148,154,157,161],pointer:3,poisson:118,poisson_solv:59,polar:[2,38,42,44,59,104,105,122],polar_off:104,polar_on:104,polariz:0,politano:148,polydispers:[103,118,131,132,161],polyethylen:94,polygon:2,polym:[0,2,21,22,28,61,71,75,76,109,154],polynomi:[111,128,139,148],poor:[19,60,75,128],poorli:91,popular:112,porou:67,portion:[1,3,19,28,35,43,60,62,63,67,68,98,99,100,101,102,105,106,108,109,113,115,116,117,119,120,122,126,130,133,144,146,147,158,163],poschel:118,posit:[2,11,19,22,29,33,34,41,42,43,44,45,48,50,56,58,60,61,62,63,66,67,68,70,71,72,74,75,77,78,79,80,81,82,92,94,96,109,110,113,116,125,141,142,148,154],possibl:[1,2,3,19,29,32,40,42,43,59,60,61,64,70,74,79,86,91,120,134,148,159],post:[0,2,35,59,72],pot:118,potentail:114,potenti:0,potentiel:130,potin:137,pour:[2,75],power:[3,4,37,42,97],pparam:32,ppm:58,ppn:4,pppm:[0,1],pproni:66,pr3:44,pr4:44,practic:[62,68,159,163],prb:[156,158],prd:[2,92],pre:[2,73,80,97,118,139,141,142,148,150],prec:[4,148],preced:[2,46,74,92,97,120],preceed:[3,80],precis:[1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,39,45,46,47,48,49,50,51,52,53,54,55,62,63,68,69,75,82,83,84,86,87,88,89,91,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,137,140,143,144,146,147,148,150,155,156,157,158,159,160,161,162],predefin:[55,113],predict:[1,2],prefactor:[8,9,12,16,17,18,57,80,83,87,88,91,103,116,143,146,147,150,161],prefer:[73,94,163],prefix:[3,58,74],preliminari:[65,141,142],prematur:91,preprint:[42,90,149],prescrib:[2,59],presenc:[67,131,132,137,161],present:[1,4,58,66,67,81,104,113,121,130,137,146,148],preserv:[62,68,75],press:[2,4,13,32,43,62,68,69,108,134,158,161],pressur:[1,2],pressure_with_eviri:113,presum:[30,92],prevent:[2,56,88,91,92,109,151,152,154],previou:[0,2,3,60,91,97,118,120,134,141,142],previous:[3,45,75,79,80,118],price:[2,108],primari:[0,2,79],prime:[119,137,156,158],primit:[2,81],princip:[40,148],principl:[2,3,113,137,155,163],print:[0,1,2,3,4,19,35,42,58,61,62,67,68,69,70,72,74,75,91,92,94,109,116,120,139,148],printfluid:67,prism:2,privileg:3,probab:150,probabl:[56,60,61,68,80,91,139,141,142],problem:[0,1,2,3,19,35,59,60,62,73,78,81,91,92,105,108,120,163],proc:[1,3,4],proce:[19,28,60,92,137],procedur:[2,19,60,68,69,77,78,91,92,94],proceed:137,procesor:19,process:1,processor:[1,2,3,4,19,40,45,58,59,60,61,62,66,67,68,71,75,79,92,109,148],processsor:[19,60],produc:[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,39,40,43,46,47,48,49,50,51,52,53,54,55,58,60,61,66,68,69,72,74,75,79,80,82,83,84,86,87,88,89,91,92,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,113,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,140,143,144,145,146,147,150,155,156,157,158,159,160,161,162],product:[2,4,42,74,113,115,142],profil:[2,63,92],program:[2,3,4,58,67,111],progress:[1,19,60,72,91,92],project:[2,163],promot:97,prompt:3,proni:66,prop:2,propag:[68,72,113],propens:2,proper:[61,70,134,163],properli:[92,110],properti:0,proport:[2,19,32,60,72,74,118],propos:[2,42,62,68,122,136,157],protein:[4,45,76],proton:[158,162],prove:[31,64,67],provid:[1,2,3,4,13,29,41,44,45,58,61,62,67,68,72,77,78,92,94,97,104,105,109,112,113,118,120,121,130,131,134,136,137,145,148,149,154,155,156,157,158,159,163],pscrozi:0,psec:68,pseudo:113,pseudopotenti:137,psf:2,psi:[114,161],psi_ij:114,pstart:[68,69],pstop:[68,69],pstyle:32,psxevar:4,pt2:44,pt4:44,ptarget:62,pthread:4,ptr:[2,3],pu3:44,pu4:44,pu6:44,publish:[67,90,105,134,137,156,158],pull:163,puls:79,pump:[131,132],purchas:58,pure:[3,135,136,156,158],purport:3,purpos:[2,41,44,45,61,62,70,71,73,100,126,137,139],push:[70,91,118,150,163],put:[2,3,45],pxx:[62,68],pxy:2,pxz:2,pydir:3,pyi:[62,68],pymol:3,pymol_aspher:0,pympi:3,pypar:3,python:[0,2],pythonpath:3,pyz:2,pzz:[62,68,72],q_1:148,q_2:148,q_3:148,q_i:[114,130],q_j:130,qdist:[105,122,126,130],qeq:[2,104,105,148],qeqall:148,qeqallparallel:148,qfile:105,qinitmod:148,qoffload:4,qopenmp:4,qoverrid:4,qtb:72,quadrant:4,quadratur:[32,59],quadrupl:93,quadruplet:[57,82,83,84,85,87,88],qualiti:[58,94],quantic:148,quantit:[37,118],quantiti:1,quantum:[2,42,71,72,94,97,113,137,148],quantum_temperatur:72,quartic_spher:59,quartz:72,quasi:71,quaternion:[2,40,45,117],quati:40,quatj:40,quatk:40,quatw:40,queri:[3,28],quest:2,question:[70,163],quick:[0,4],quickli:[36,60,91,92,94],quickmin:[91,92],quicktim:58,quit:[67,149],quot:134,quotat:148,r10:97,r12:117,r_1:42,r_2:42,r_c:[106,108,116,158],r_cut:[97,133],r_e:114,r_fu:[131,132],r_i:[13,42],r_ii:42,r_ij:[13,97,113,145,162],r_ik:145,r_j:13,r_jik:145,r_m:133,r_me:106,r_mh:116,r_min:107,r_ub:5,ra2:44,rad2theta:44,radial:[42,91,113,120,139,141,142],radian:[5,6,8,12,16,17,18,40,44,47,55,73,82,83,87,88],radiat:[41,44,79],radii:[42,61,103,111,117,118,131,132,137,161],radit:113,radiu:[2,33,34,41,42,58,67,76,80,81,90,97,103,113,114,118,122,130,131,132,133,134,148,149,158,161],rahman:[2,62,68,72],rai:44,ram:158,raman:4,ramp:[2,66,68,72,80,101,109,119,130,131,133,150,162],ran:[2,3],random:[2,45,58,61,66,67,68,71,72,79,109,110],randomli:45,rang:[1,2,4,38,39,42,43,44,51,58,59,91,94,95,97,98,99,100,101,102,103,105,106,107,108,109,111,113,115,117,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,137,138,139,140,144,145,146,147,148,154,158,160,161,162],rank:[2,3],rankin:69,rapid:[2,3],rapidli:[61,68,105,109],rare:2,rasmol:2,rasmussen:117,raster3d:2,rate:[2,4,59,72,74,77,78,115,131,132,142],rather:[2,19,39,58,60,66,79,113,141,142],ratio:[2,32,42,60,117,118,146,151],rattl:63,rattle:[63,75],rattle_debug:75,ravelo:[69,124],raw:4,rayleigh:72,rb1:44,rbb:148,rcb:[19,60],rcm:[33,34],rcmx:[33,34],rcmy:[33,34],rcold:63,rcutfac:[42,149],rd1:92,rdf:139,rdn:92,rdt:92,reach:[2,19,60,62,69,74,106],reacquaint:163,react:2,reactant:[74,113],reaction:[65,74,76,92,113,115,142],reactiv:94,read:[2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,61,62,65,68,69,71,74,75,78,79,82,83,84,85,86,87,88,89,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,110,111,112,113,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,140,141,142,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],read_data:[2,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,33,34,45,46,47,48,49,50,51,52,53,54,55,56,57,58,61,71,73,74,82,83,84,85,86,87,88,89,92,95,96,98,99,100,101,102,103,105,106,108,109,110,113,116,117,119,120,122,123,124,125,126,127,128,129,130,131,132,133,138,140,144,145,146,147,148,150,154,160,161],read_dump:92,read_restart:[2,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,45,46,47,48,49,50,51,52,53,54,55,57,59,62,67,68,69,71,79,82,83,84,85,86,87,88,89,92,95,96,98,99,100,101,102,103,105,106,108,109,110,113,116,117,118,119,122,123,124,125,126,127,128,129,130,131,132,133,138,140,144,146,147,150,154,160,161],readabl:58,readi:3,readme:[1,2,3,4,90,137],real:[2,3,11,14,15,35,36,38,42,45,48,71,72,80,86,105,137,139,158],realli:[1,39,43,163],reamin:[80,81],rearrang:92,reason:[2,3,45,56,77,78,92,106,113,114,116,132,139],reax:[0,72],rebal:[19,60],rebalanc:[19,60],rebuild:[3,4,109],rebuilt:58,recalcul:32,receiv:70,recent:[3,4,60,134],reciproc:[2,41,44,98,99,100,105,108,113,122,126,144,147],recogn:[30,68,74,111,134],recomend:2,recommed:74,recommend:[4,58,63,72,78,113,131,132,137,146,148,163],recompil:[1,75],reconstruct:148,recov:[62,63,68],rectangl:[19,60],rectangular:[19,60],rectilinear:[41,44],rector:27,recurs:[19,60,97],recust:19,red:[58,61,71],reduc:[1,2,11,19,39,40,41,43,44,58,60,61,70,73,74,91,113,117,145,146,155,156,158],reduct:[41,44,72],redund:114,reed:72,ref:[77,78],refactor:2,refer:[2,3,4,13,32,45,59,61,62,63,68,69,70,71,72,75,82,89,93,117,134,136,137,146,152,153,156,158],referenc:[2,105,120,143,146],reflect:[2,41,42,44,57,58,80,97],refresh:59,regard:[2,75],regardless:[45,68],regim:[2,106],region:[0,2,19,35,44,45,51,58,59,60,63,68,79,80],region_styl:81,regoin:2,regspher:45,regul:2,regular:[1,19,58,60,79,106],reinder:4,reinhardt:[77,78],reject:[45,61],rel:[1,2,11,18,19,36,42,45,48,60,63,70,74,79,91,113,117,118,131,132,134,146,161],relat:[1,2],relationship:[2,148,161],relax:2,releas:0,relect:139,relev:[2,19,45,59,60,63,66,67,75,76,79,80,90,91,95,103,105,106,108,109,113,116,117,118,119,120,121,123,124,125,127,128,129,131,132,139,140,141,142,146,150,154,160,161,162],reli:[113,162],reltol:74,remain:[19,32,56,57,62,68,79,97,113,130,137,139,163],remaina:97,remaind:[45,158],remap:[2,45],remedi:2,rememb:163,remot:163,remov:[2,28,36,38,42,45,68,74,75,92,108,132,137,163],remove_molecul:59,remove_sourc:59,remove_speci:59,ren:44,renam:163,render:58,rendon:68,reneighbor:[60,109],repeat:[2,58,61,62,74,97,156,158],replac:[2,3,19,33,34,58,60,61,69,94,105,118,124,141,142],replica:0,report:[0,1,4,41,44,72,73,74,79,92,108,113,134,139],repositori:163,reprens:79,repres:[1,2,19,29,34,40,51,58,62,65,66,67,68,71,74,79,81,92,93,97,117,130,131,132,134,135,136,144,145],represent:[2,66,71,79,97,113,117,137,146],reproduc:[4,68,105,111,118],repul:134,repuls:[2,18,21,22,80,81,94,97,103,105,109,113,115,118,120,130,134,138,148,154,158,159,161,162],request:[2,19,67,139,163],requir:[1,2,3,4,18,19,28,31,32,41,43,44,45,46,56,58,59,60,61,64,65,66,67,68,74,75,79,80,82,91,92,93,94,96,97,101,103,104,105,109,110,111,112,113,114,117,118,120,128,130,131,132,134,135,136,137,139,140,141,142,143,145,146,147,148,149,154,155,156,157,158,159,161,162],rerun:[36,38,42,58,139],rescal:[2,63,68,69,77,78],research:[31,64,67,137],resembl:163,resepct:2,reservoir:[35,63,79],reset:[2,3,33,34,62,68,69,75,79,91,132],reset_atomic_reference_posit:59,reset_tim:59,reset_timestep:[2,35],resist:2,resolut:148,resolv:[62,71,132,163],resourc:[93,111],respa:[4,68,70,73,76,80,81,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,111,112,113,116,117,118,119,120,121,122,123,124,125,126,127,128,129,131,132,133,134,135,136,137,138,140,141,142,144,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],respecifi:137,respect:[1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,29,32,33,39,41,44,46,47,48,49,50,51,52,53,54,55,58,61,62,63,67,68,69,75,79,80,82,83,84,86,87,88,89,91,93,94,95,97,98,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,134,135,137,139,140,143,144,146,147,148,149,150,155,156,157,158,159,160,161,162],respond:[2,113],respons:2,resquar:[2,117],rest:[2,73,97,132,134],restart1:71,restart2:71,restart2data:0,restart:[0,1],restor:45,restrain:13,restraint:[73,121],restratin:73,restrict:[1,2],result:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,32,34,35,39,41,43,44,45,46,47,48,49,50,51,52,53,54,55,58,60,61,62,63,66,67,68,69,71,74,75,77,78,79,80,82,83,84,86,87,88,89,92,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,113,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,134,135,137,139,140,141,142,143,144,146,147,150,155,156,157,158,159,160,161,162],retain:[94,97,137],retriev:[2,135,136],rev:[2,29,36,38,42,43,68,69,77,78,97,103,104,105,108,111,112,113,117,118,124,131,132,133,134,136,141,142,145,146,149,155,156,157,158,159],revers:[2,32,50,61,68,70,77,92,130],review:[42,137,149,163],rfac0:[42,149],rg0:76,rh3:44,rh4:44,rheolog:2,rhi:[141,142],rho0:[134,152,153],rho0_meam:134,rho:[67,93,98,99,100,111,133,134,135,136,141,142,146,151],rho_0:[152,153],rho_alpha_beta:111,rho_bkgd:134,rho_colloid:80,rho_e:79,rho_i:[135,136],rho_ref_meam:134,rho_wal:80,rhodopsin:[1,4],rhosum:[151,152,153],rhot:63,rhs:74,rick:[104,148],right:[2,3,19,29,45,55,57,60,61,67,70,74,105,163],rightmost:[19,60],rigidid:40,rii:[33,34],rij:[36,38,70,109,110,141,142,154],rin:[120,127,128],ring:[2,46,71],rino:[30,159],rirj:118,risi:[42,149],risk:73,rix:[33,34],rk4:74,rkf45:74,rlo:[141,142],rmin0:[42,149],rmin:124,rms:74,rnemd:2,robust:91,rock:134,rockett:145,role:2,ronchetti:38,root:[3,32,33,34,111],rose:134,ross:134,rosski:71,rot:[2,35,71,73],rotat:[2,42,45,81,91,108,117,146],rotation:38,rough:[2,45,58],roughli:[19,58,68,92],round:[1,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,39,46,47,48,49,50,51,52,53,54,55,68,69,75,82,83,84,86,87,88,89,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,140,141,142,143,144,146,147,150,155,156,157,158,159,160,161,162],rous:66,rout:[32,120,130],routin:[2,3,4,67,137],roux:2,row:[2,34,40,44,79,113],rozero:134,rrespa:[1,4,68,93,94,95,96,98,99,100,101,102,103,104,105,106,108,109,111,112,113,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,131,132,133,134,135,136,138,140,141,142,144,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],rsq:[141,142],rsurfac:79,ru3:44,ru4:44,rub:5,rubia:[135,136],rudd:139,rule:[0,2,13,29,45,61,68,81,93,95,96,102,103,108,120,125,134,138,139,150,154,155,156,158,162],run1:2,run2:2,run3:2,run4:2,run5:2,run6:2,run7:2,run8:2,run:[0,1],run_styl:[4,68,91,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,111,112,113,116,117,118,119,120,121,122,123,124,125,126,127,128,129,131,132,133,134,135,136,137,138,140,141,142,144,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],rung:74,runtim:58,rutherford:79,rutuparna:[156,158],rxn:74,ryckaert:[75,88],rydberg:137,s0st:2,s2050:1,s2629:111,s319:59,s_i:[2,113],s_ij:2,saddl:92,sadigh:[111,135,136],saed_vtk:41,safe:[58,163],safran:161,sagui:108,sai:[1,163],said:91,sakai:157,sall:148,salt:[106,116,134],salter:148,same:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,32,33,34,35,36,37,38,39,42,43,45,46,47,48,49,50,51,52,53,54,55,58,59,60,61,62,63,66,67,68,69,70,71,72,73,75,77,78,79,81,82,83,84,86,87,88,89,90,92,93,94,95,97,98,99,100,101,102,103,104,105,106,107,108,109,111,112,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,134,135,138,139,140,143,144,145,146,147,148,150,154,155,156,157,158,159,160,161,162,163],sampl:[1,2,3,35,58,68,71,76,78,97],sample_frequ:59,sandia:[0,29,114,134],saniti:73,satellit:2,satisfi:[30,41,42,44,62,63,67,69,75,91,118],satur:106,save:[2,58,61,66,74,79,97],sb3:44,sb5:44,sc3:44,scalabl:[0,1,4],scale:[0,1,2,4,35,42,46,58,59,62,67,68,69,71,72,77,78,79,93,94,106,113,115,118,131,132,134,137],scalegamma:67,scalexi:[62,68,69],scalexz:[62,68,69],scaleyz:[62,68,69],scatter:[3,41,44],scatter_atom:3,scatter_coord:3,scenario:[2,61,81],schaik:130,schell:157,schemat:61,scheme:[2,66,68,71,75,79],schmid:109,schroding:113,schroeder:38,sci:[30,104,136,145,148],scienc:[59,61,70,77,111,135,148,157],scientif:[42,111],scm:3,scratch:[19,60],screen:[0,1,2,3,4,41,44,58,67,75,92,101,105,122,134,155,158,159,160,161,162],screenshot:3,scripe:3,script:[0,1],sea:3,search:[0,36,38,91,92,118],secant:65,second:[1,2,3,4,28,29,35,37,38,39,43,44,56,61,63,65,66,71,73,75,76,77,78,79,91,92,96,97,98,99,100,104,105,111,113,114,115,118,119,121,124,134,139,143,148,155,157,158,159,162],second_mo:148,secondari:51,section:[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,31,32,33,34,35,37,39,40,41,42,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,63,64,65,66,67,68,69,70,71,72,74,75,77,78,79,82,83,84,85,86,87,88,89,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,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],section_acceler:[5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,39,46,47,48,49,50,51,52,53,54,55,68,69,75,82,83,84,86,87,88,89,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,135,140,143,144,146,147,150,155,156,157,158,159,160,161,162],section_accerl:111,section_command:[0,1],section_exampl:2,section_howto:[2,3,29,30,32,33,34,36,38,42,43,96,107],section_modifi:[2,58],section_python:2,section_start:[2,3,92],section_tool:2,see:[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,34,35,36,37,38,39,40,41,42,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,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],seed:[45,58,61,66,67,71,72,79,109,110],seek:[19,60],seem:[2,62,134],seen:[4,67,81],segment:[2,58,109,154],select:[2,41,44,45,58,80,92,120,121,134,148],self:[2,72,73,74,76,78,91,104,105,137,145,148],semi:59,semimet:113,semin:4,send:[0,3],sens:[1,2,19,57,60,61,66,72,79,92,105,122,126,156,157,158],sensit:[2,30,62],sep:[2,3],separ:[2,4,19,42,45,56,58,59,60,61,62,68,71,75,98,99,105,106,108,110,122,131,132,134,141,142,143,149,155,158,161],seper:106,sequenc:[19,58,60,92,145],sequenti:145,seri:[2,4,42,58,66,94,117,134,137,139,141,142,146,150],serial:1,serv:[2,154],server:1,set:[0,1],set_vari:[2,3],setarea:67,sete:61,setenv:3,setfl:[93,111],setforc:[2,91,92],setgamma:67,settl:62,setup:[2,3,4,32,35,57,59,61],seven:136,sever:[1,2,3,4,32,57,59,62,67,68,91,97,100,111,126,130,134,139,145,148],sexton:137,sfactor:58,shade:58,shake:[2,13,39,43,63],shan:104,shape:[2,19,45,58,60,62,68,72,81,96,117,146],shardlow:[64,74,110],share:[0,1,2],sharp:[81,134,158],shear:[2,62,67,68,118,131,132],shell:0,shenderova:94,shift:[1,2],shiga:[2,68],shini:58,shinoda:[2,68,147],shiny:58,shlib:3,shm:4,shock:[69,72,124],shockvel:72,shortcut:[62,68],shorter:[70,139],shortest:58,should:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,32,35,39,40,43,45,46,47,48,49,50,51,52,53,54,55,58,60,61,62,66,67,68,69,70,71,72,73,74,75,79,80,81,82,83,84,86,87,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103,104,105,107,108,109,111,112,113,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,134,135,137,139,140,141,142,143,144,146,147,148,150,154,155,156,157,158,159,160,161,162,163],show:[2,3,92,120,134,137],shown:[1,4,19,41,42,44,57,60,61,63,68,70,71,113,114,117,118,130,137,146,148],shrink:[2,19,58,60,67,70,91,105,122,126,139],shrunk:74,shut:[2,3],si4:44,sic:[105,134,143,155,156,158,159],sic_tersoff:145,sicc:[112,155,156,158,159],sicg:[156,158],sicsi:[112,155,156,158,159],side:[19,45,60,61,67,70,74,80,81,92,105,117,118,146],sige:[156,158],sigma0:97,sigma14:130,sigma1:97,sigma2:97,sigma:[2,21,22,28,32,40,46,67,70,80,81,94,96,97,98,101,102,103,108,109,110,112,113,117,119,120,121,122,123,124,125,126,127,128,129,130,133,138,139,146,147,155],sigma_14:101,sigma_:106,sigma_c:103,sigma_cc:[94,103],sigma_h:116,sigma_i:[114,139],sigma_ij:139,sigma_j:139,sigma_ss:103,sign:[2,50,57,137,163],signifi:[34,115,142],signific:[66,74,113,117,134,137,139],significantli:[1,2,43,67,68,73,113,155],silbert:118,silicon:[112,134,155],sim:147,similar:[2,3,4,19,22,32,39,40,43,45,60,66,72,73,80,94,96,97,109,111,113,118,130,131,139,140,145],similarli:[2,39,58,68,75,81,82,92,94,100,118,126,155],simluat:[2,131],simlul:79,simpl:[1,2,3,4],simpler:3,simplest:34,simpli:[1,2,3,34,40,62,68,71,92,100,108,126,134,139],simplif:113,simplifi:[73,137],simplist:3,simul:[0,1],simulatan:4,simulationub:148,simultan:[2,4],sin:[56,80,90,145],sinc:[0,1,2,3,6,19,28,29,30,33,34,40,41,46,58,60,61,62,67,68,69,70,71,74,79,80,81,82,91,92,93,94,97,99,100,101,102,103,104,108,109,111,112,117,118,119,121,122,124,125,126,127,128,129,130,131,132,133,134,135,136,137,139,141,142,144,145,146,147,148,149,150,155,156,157,158,159,162,163],sinclair:[70,111],sine:145,singapor:42,singh:93,singl:[1,2,3,4,19,32,34,40,45,56,58,60,61,62,67,68,69,71,73,75,79,80,92,93,94,97,101,104,111,112,113,114,118,119,120,134,135,136,137,143,144,145,146,148,149,150,155,156,157,158,159],singleel:97,singular:[56,130,131,132,140],sinnott:[94,104],sinusoid:[45,80,90],sio2:159,sio:104,sirk:[43,154],sisic:[112,155,156,158,159],sisisi:[112,155,156,157,158,159],site:[0,1,2,3,29,32,63,67,75,93,97,105,111,115,116,122,126,130,140,142,144],situat:[62,67,68,71,97],sival:44,six:[2,42,143,145],sixth:143,sixthpow:[102,139],size:[0,1],sjplimp:[0,3],skew:[2,58,68],skin:[30,79],skip:[4,40,46,121],slab:[2,139],slater:[105,148],sleight:28,slepoi:134,slice:[2,41,71],slider:3,slight:[63,79],slightli:[1,2,4,58,68,94,105,122,126,156,158,159],sligthli:108,sliozberg:154,sllod:[2,4],slope:[2,78,106],slot:1,slow:[2,66,68,92,139,148],slower:[1,97],slowest:79,slowli:[60,91,137,150],sm3:44,small:[2,19,29,32,40,41,43,44,60,61,63,66,68,70,72,74,75,88,90,91,92,94,103,105,106,107,122,131,132,134,146,149,155,158,163],smaller:[1,2,4,58,67,74,78,139],smallest:29,smd:76,smith:144,smooth:[2,81,97,101,105,119,124,127],smoother:45,smoothli:[28,42,101,119,128,130,133,158,162],smt:4,smtb:148,smulat:137,sn2:44,sn4:44,snap:[42,58],snapcoeff:149,snapparam:149,snapshot:[0,1],snc4:4,soc:120,sodani:4,soderlind:137,soft:[3,32,91,109,115],softer:[80,81],softwar:[1,2,3,4],sole:[92,145],solid:[2,19,29,30,35,43,59,60,62,68,70,78,98,124,137],solut:[2,62,74,75,81],solv:[63,67,74,75,78,79,132],solvat:45,solvent:[60,66,68,101,103,105,106,116,122,131,132,146],solver:[0,1,2,19,43,59,60,65,74,105,107,115,122,130,142],some:[1,2,3,4,19,37,40,45,50,57,58,60,61,62,68,74,79,80,91,92,96,97,105,111,113,137,139,163],someon:91,someth:[3,62,68,80,163],sometim:[2,62,68],somewhat:[29,68],somewher:113,soon:61,sort:[4,92],sound:[67,152,153],soundspe:[152,153],sourc:[0,3,4,59,62,79,130],source_integr:59,sourceforg:3,south:42,space:[2,3,4,19,41,42,44,45,58,60,67,68,71,80,92,98,99,100,105,108,111,113,122,126,134,137,141,142,144,145,147,161],spahn:118,span:[63,93,94,97,104,111,114,134,135,136,143,145,149,155,156,157,158,159],spars:74,spatial:[2,19,29,34,59,60,79],spc:0,spce:63,spearot:[41,44],speci:[42,65,74,111,114,115,142,145,156,158],special:[2,45,46,59,75,93,104,107,139],special_bond:[2,4,21,22,28,36,38,42,46,57,61,107,120,139],species1:[65,142],species2:[65,142],species:74,speciesn:65,specif:[1,2,4,13,19,45,58,59,60,61,66,67,79,80,91,92,94,96,97,107,111,117,118,134,137,139,146,155],specifi:[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,32,34,35,36,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,57,58,59,60,61,62,63,65,66,67,68,69,70,72,73,74,75,76,78,79,80,81,82,83,84,86,87,88,89,91,92,93,94,95,96,97,98,99,100,101,102,103,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,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],specifii:67,spectral:149,spectrum:[42,72],speed:[1,2,4,19,60,67,72,92,97,105,137,139,152,153,156],speedup:[1,4],spefici:[45,58,120],spellmey:[2,46],spent:1,sphere1:67,sphere:[2,41,42,45,58,67,68,81,90,103,108,113,117,118,122,131,132,146,161],spheric:0,spheriod:2,spheroid:[2,68],spin:113,spine:90,spine_two:90,spline:[65,91,94,97,120,134],split:[1,2,3,4,19,60,63,68,110],splittol:2,spparks:2,spread:[1,2],spring:[2,10,11,21,22,24,25,27,48,56,61,71],sqrt:[33,38,70,90,103,109,111,116,118,134,139],squar:[2,8],squares:[19,60],squeez:[62,131,132],sr2:44,src:[0,1,2,3,4,75,90,137,163],srolovitz:111,srp:109,srtio:148,ssao:58,stabil:[2,68,97],stabl:[2,56,67,69,73,97],stabli:66,stack:29,stage:[32,92],stagger:1,stai:72,stall:4,stand:[0,2],standard:[0,1,2,3,4,38,45,51,59,67,71,75,80,93,94,96,105,108,113,116,117,122,123,124,125,126,129,133,134,137,138,146,155],starikov:79,start:[0,2,4,19,39,45],start_6:116,stat:[28,70,91],state:[2,3,29,30,32,51,58,61,62,64,65,66,68,69,72,77,78,79,92,97,108,110,113,117,118,134,136,137,146,148,151,152,153],statement:163,stationari:[67,131,132],statist:[2,19,61,66,72,74,75,79,91,92,94,109,118,131,161],statu:[28,104],steadi:[2,69,72],stefan:163,stegailov:79,steinhardt:38,stencil:67,step:[1,2,3,4,35,43,58,59,60,61,62,63,70,72,74,75,77,78,79,91,92,94,109,116,120,134,137,148],stepwis:32,steve:0,steven:61,stiff:[2,26,71,74,91],stile:106,still:[1,2,3,4,19,36,60,79,102,111,117,118,121,131,146,150,163],stilling:[112,136,145,155,159],stochast:110,stoddard:108,stoichiometr:74,stoichiometri:148,stoke:67,stone:108,stop:[2,3,19,28],stopthresh:[19,60],store:[2,3,33,35,36,39,40,43,45,57,58,59,66,67,68,69,70,71,74,75,76,78,79,93,94,97,104,109,110,111,112,113,114,115,117,118,134,135,136,137,139,141,142,145,148,149,155,156,157,158,159],straatsma:2,straightforward:113,strain:[2,62,68,69,131,132],strang:58,strategi:0,stratford:67,stream:[2,39,43,58,59,66],streiz:105,strength:[42,58,73,80,81,146],stress:[2,35,39],stretch:28,strict:149,strictli:[2,19,60,72],strietz:105,string:[2,3,19,45,60,74,134,145,149],strong:94,stronger:2,strongest:[131,132],strongli:[1,2,75,79,137],structur:[0,2,3,29,30,38,41,44,51,73,89,97,104,113,134,137,145,148],strucur:30,stuart:[94,104,148],stuck:62,studi:[2,37,124,148],studio:4,stukowski:111,style:0,style_nam:68,stylecomput:148,sub:[1,2,3,19,32,35,42,57,58,60,62,68,69,72,75,79,81,94,96,104,117,118,120,139,146,148,162],subbox:58,subdivis:67,subdomain:67,subequ:3,subject:[2,4,19,60],submit:[0,57,114],subscript:[3,79,82,114,159],subsequ:[2,3,19,60,62,79,111],subset:[2,3,4,19,42,60,68,69,92,94,97,139],substanti:[2,155],substep:68,substitut:[1,92,113,139],substract:105,substrat:[62,68],substyl:130,subsystem:79,subtract:[2,28,35,37,39,40,43,63,66,129],success:[2,3,62,91,92],successfulli:3,successulli:3,sudden:18,suddenli:81,sudo:3,suffer:81,suffici:[2,19,60,68,80,121,139],suffix:[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,39,46,47,48,49,50,51,52,53,54,55,58,68,69,74,75,82,83,84,86,87,88,89,92,93,94,95,97,98,99,100,101,102,103,104,105,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,134,135,136,140,143,144,145,146,147,150,155,156,157,158,159,160,161,162],suggest:[0,2,72],suit:[67,113],suitabl:[28,32,61,97,118,130,134],sum:[2,29,33,34,36,37,38,39,42,43,66,70,72,78,79,80,81,91,96,105,109,113,114,122,125,134,149],summar:[2,114,148],summari:1,summat:[2,29,38,100,105,111,112,122,126,137,148,155,156,157,158,159],sun:[6,20,47,82,102,139],sup:[72,104,148],superspher:90,supinski:137,supplementari:[117,146],suppli:79,support:[1,2,3,4,19,32,58,60,61,62,67,68,69,70,72,73,76,78,80,81,90,91,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,111,112,113,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,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],suppos:[114,163],suppress:2,sure:[2,3,62,75,111,163],surfac:[2,29,41,42,45,58,67,70,73,79,80,81,90,92,97,131,132,137,148,161],surface_mov:79,surfact:[106,116],surpris:113,surround:[29,45,62,65,68,70,141,142],suspens:[131,132],sustain:[62,118],suzuki:68,svg:2,svn:3,swap:2,swiggl:80,swiler:[42,149],switch7_section_start:116,switchflag:[42,149],swol:27,swope:2,symbol:[2,41,44,97,113,149],symmetr:[2,29,32,39,43,62,68,93,108,111,156,158],symmetri:[2,29,36,38,70,82,93],symplect:68,sync:2,synchron:[1,92],syntax:[1,2,3],sysstem:97,syst:148,system:[0,1],system_:71,systemat:[2,137],t_e:79,t_e_min:79,t_equil:[77,78],t_infil:79,t_init:[72,79],t_j:13,t_lb:67,t_oufil:79,t_out:79,t_outfil:79,t_qm:72,t_switch:[77,78],ta06a:149,ta4:137,ta5:44,ta6:137,tabbernor:41,tabinn:139,table:65,tabul:[65,74,93,97,98,99,100,101,102,105,111,113,115,122,126,133,141,142,144,145,147,156],tabular:145,tad:2,tag:[59,65,74,115,142],tail:[32,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,111,112,113,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,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],tait:[152,153],take:[1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,32,33,35,39,43,46,47,48,49,50,51,52,53,54,55,58,60,62,63,68,69,74,75,76,82,83,84,86,87,88,89,93,94,95,97,98,99,100,101,102,103,104,105,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,137,140,143,144,146,147,148,150,154,155,156,157,158,159,160,161,162],taken:[2,45,61,66,67,72,74,79,86,111,113,117,141,142,155,159],talk:2,talli:[2,19,60,94,113,116,120],tang:137,tangenti:[2,118],tanh:79,tantalum:[137,149],taper:[90,133],tarbal:[0,3],target:[2,3,19,60,62,63,66,68,69,71,72,76,79,109],task:[1,2,4,28,71],taskset:4,tau:[67,68,77,78,79],tau_1:66,tau_k:66,tau_n_k:66,tb3:44,tbp:97,tchain:[68,69],tcsh:3,tdamp:[68,69],technic:[2,67],techniqu:[2,32,62,72,139],technolog:4,tell:[2,3,57],temeperatur:3,temp:[2,32,35,39,43,61,62,63,68,69,71,72,79,94,108,116,117,120,146],temper:[2,92],temperar:71,temperatur:0,temperature_definit:59,templat:[45,75],templeton2010:59,templeton2011:59,templeton:59,tempor:66,temporarili:73,tend:[13,68,70,74],tensor:[2,33,34,35,39,40,42,43,62,67,68,69,113,131,132,137],term:[0,1,2,5,6,11,21,22,32,33,35,39,43,47,48,56,63,66,67,68,69,71,72,73,76,79,82,89,91,93,94,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,117,118,119,122,126,129,130,131,132,134,135,136,137,139,140,144,146,148,154,155,156,157,158,159,161],termin:[41,68,91,92],tersoff:[4,43,105,112,145],tersoff_1:[156,157,158],tersoff_2:[156,157,158],tersoff_mod:157,tertiari:51,test:[0,2],tether:[2,78,116],tetot:148,texas_holdem:73,text:[2,19,58,59,60,65,79,92,111,114,121,134,141,142,149,163],tfix:73,tflag:58,th4:44,thakkar:4,thakker:4,than:[1,2,3,4,11,19,36,37,38,39,40,43,48,60,61,62,66,67,70,72,73,74,76,79,80,81,91,92,94,96,97,98,99,100,101,111,113,117,118,131,132,134,139,141,142,146,148,150,154,155,158,161,162],thank:[156,158],thei:[0,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,32,33,34,35,39,40,42,45,46,47,48,49,50,51,52,53,54,55,57,58,60,61,62,66,67,68,69,73,75,79,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,107,108,109,110,111,112,113,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,140,142,143,144,145,146,147,148,149,150,154,155,156,157,158,159,160,161,162,163],them:[1,2,3,19,28,35,47,58,60,61,62,68,69,70,73,75,79,82,90,92,93,97,111,114,117,139,146,150,163],themselv:[2,3,60,92,93,97,105,111,130,134,135,136,149],theorem:[66,97,110],theoret:[37,72,155],theori:[2,42,59,68,97,137,161],therebi:[131,132],therefor:[2,32,63,67,75,107,155],therein:[2,134],thereof:32,thermal:0,thermo:[0,1],thermo_modifi:[2,62,68,154],thermo_press:[39,62,68,69],thermo_styl:[2,31,35,39,43,45,61,62,68,69,72,80,91,94,116,120,139],thermo_temp:[39,61,62,68,69],thermoberendsen:2,thermochemistri:113,thermodyanm:61,thermodynam:0,thermophys:139,thermost:2,thermostat:0,thermostatequ:2,thesi:131,thess:98,theta0:[5,6,8,10,11,12,16,17,18,42,48,73,88],theta0max:42,theta10:97,theta1:[47,56,82,97],theta2:[47,56,82,97],theta3:[82,97],theta4:97,theta5:97,theta6:97,theta7:97,theta8:97,theta9:97,theta:[2,10,11,36,38,42,44,45,48,58,73,79,82,88,120,145,157],theta_0:143,theta_:[88,97],theta_c:120,theta_ijk:97,theta_ijl:82,theta_jik:[135,136],theta_pi:97,theta_sigma:97,thi:[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,34,35,36,37,38,39,40,41,42,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,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],thick:[41,58],thin:58,thing:[2,3,28,62,68,163],think:[2,3,83,87,91],third:[2,13,29,35,42,43,66,76,79,104,114,115,134,143,159],thirumalai:51,tho:112,thole:2,thompson:[0,39,42,43,149],those:[1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,32,35,36,38,39,42,43,45,46,47,48,49,50,51,52,53,54,55,58,62,63,68,69,75,77,78,82,83,84,86,87,88,89,91,92,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,134,135,139,140,143,144,146,147,149,150,155,156,157,158,159,160,161,162,163],though:[2,35,45,62,92,109,111,113,114,117,118,130,131,139,159],thought:[80,118,121],thread:[1,4],three:[1,2,28,29,32,35,36,37,41,42,44,45,51,61,62,63,68,69,74,77,79,85,86,88,93,94,97,111,112,114,117,118,121,134,135,136,137,143,145,146,148,149,155,156,157,158,159],threebodi:155,thresh:[19,58,60],threshhold:[19,58,60],threshold:[19,60,70],through:[2,3,45,62,65,67,68,71,74,79,80,81,90,94,110,112,113,115,118,122,137,142,147,148,150,154],throughout:[2,4,41,137],thru:[2,3,33,34,37,40,91],thrust:1,thu:[1,2,3,19,29,30,34,35,36,38,42,43,45,46,57,58,60,61,62,63,66,68,69,70,75,76,79,80,81,82,91,92,93,94,96,97,98,99,100,101,102,103,104,105,109,110,111,112,113,114,115,116,117,118,122,126,130,131,132,134,135,136,137,139,140,141,142,144,145,146,148,149,151,152,153,154,155,156,157,158,159,162],thumb:[45,103],thylakoid:90,ti2:44,ti3:44,ti4:44,tidi:163,tight:[97,148],tij:108,tildeslei:[13,32,108],tile:[2,19,45,60],tilt:[2,62,68,70,72,159],time:[0,1],time_integr:59,timer:1,timescal:[72,113],timespan:68,timestep:[1,2,3,19,35,40,43,58,60,61,62,63,66,67,68,69,70,73,74,75,77,78,79,80,91,92,97,109,113,120,131,132,150],timesteppnig:75,tin:[104,105],tini:[45,91,97],tio2:148,tio:148,tip3p:0,tip4:2,tip4p:0,tip:0,tirrel:80,titl:163,tji:108,tl1:44,tl3:44,tlbr_msw:145,tloop:[68,69],tm3:44,tmp:[2,19,34,40,58,60],tobia:68,togeth:[2,3,4,19,43,45,60,62,68,116],tol:[75,155],toler:[62,74,75,91,92,155],tolernac:74,too:[1,2,19,29,30,36,38,42,58,60,62,63,68,75,79,92,109],took:150,tool:[0,1,2,3,19,58,60,92],toolkit:2,top:[0,3,4,67,92,149,163],topolog:[2,32,57,139],torqu:[2,13,40,67,91,96,108,117,118,132],torsion:[2,47,57,94],torsion_flag:94,toru:90,tosi:98,tot:148,total:[2,3,4,19,31,33,34,35,37,40,42,43,60,66,67,68,69,71,72,73,74,77,78,79,80,81,91,92,93,94,96,97,104,111,113,118,134,135,136,137,145,148,149],toukmaji:108,toward:[13,58,67,69,70,88,92],toxvaerd:127,tptask:4,tqx:40,tqy:40,tqz:40,trace:113,track:[67,79,90],track_displac:59,tractabl:74,trade:[2,105,122,126],tradeoff:139,tradit:[2,56],trail:[32,92,114,134,149],trajectori:[2,32,68,71,75,109,139],tran:[50,51],transfer:[1,2,4,59,79,97,137],transform:[2,32,117,140],transit:[2,4,92,106,130,136,137,158],translat:[2,63,68,71,113],transmit:2,transport:[59,79],trap:[2,35],treat:[2,43,79,81,91,96,107,113,114,117,120,135,136,137,146],treatment:107,tree:130,tri:[2,3,58,62,68,69,91],triangl:[2,58],triangul:2,triangular:[2,62],triclin:[0,1],triflag:2,trigger:[3,60,61,91],trigon:9,trilinear:67,tringl:58,tripl:[42,97],triplet:[112,143,145,155,156,157,158,159],trivial:3,trott:[42,149],troubl:3,truncat:[2,63,74,80,81,95,105,113,118,122,124,127,139,148],tscale:72,tsige:100,tstart:[66,68,109],tstat:[2,66],tstop:[66,68,109],tsuzuki:[30,159],ttm_mod:79,tucker:[42,149],tuckerman:[68,71],tune:[2,4],tunnel:71,turkand:38,turn:[2,28,42,44,57,58,61,62,68,91,92,94,107,120,134,139,154],tutein:94,tutori:[2,70],tweak:45,twice:[2,4,46,62,68],twist:[131,132],two:[1,2,3,4,19,28,29,32,36,40,41,42,44,45,56,58,60,61,62,66,67,68,69,70,71,72,78,79,81,89,90,91,92,93,94,96,97,98,99,100,103,104,105,107,108,109,111,112,113,114,115,117,118,121,122,126,130,131,132,134,137,139,142,144,145,146,148,149,150,154,155,156,157,158,159,161,162],two_temperatur:59,twobodi:[156,158,159],twojmax:[42,149],txt:[79,121,148,163],typcial:[19,60],type1:[41,44],type2:[41,44],type:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,32,35,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,58,59,67,75,81,82,83,84,85,86,87,88,89,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,110,111,112,113,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,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],typen:[41,44],typic:[1,2,3,4,13,19,21,22,29,32,40,45,56,58,59,60,61,62,68,73,75,91,92,101,103,105,116,117,120,121,122,126,131,132,134,139,146,158,163],tzou:79,u_chem:31,u_cond:[31,64],u_f:67,u_i:[64,65],u_ij:145,u_j:65,u_mech:[31,64],u_prom:97,uberuaga:92,ubiquit:[3,97],uchem:[115,142],uloop:[71,92],umbrella:2,umin:[10,11,24,25,48],unabl:[3,19,60],unaffect:[62,68],unambigu:159,unbias:113,unchang:[62,68],uncom:1,uncompress:58,uncorrel:66,uncoupl:71,under:[0,2,4,6,42,47,58,68,72,82,110,113,130,149],underflow:58,undergo:[2,32,66,68],undergon:61,underli:[2,29,58,68,79],underpredict:2,underscor:[61,62,68,69],understand:[1,2,137],understood:97,undesir:[62,68],undisturb:[131,132],undump:58,unfix:[2,35,59,73,77],unfix_flux:59,unfold:76,uniaxi:69,uniform:[4,19,59,60,67,117,146],uniformli:[67,79,141,142,145],uninterrupt:[68,69,72,78,79],union:[2,81],uniqu:[2,66,69,92,111,113],unit:[2,5,6,16,17,18,29,30,31,32,33,34,35,36,37,39,40,41,42,43,44,45,47,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,76,78,79,80,81,82,83,87,88,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,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],uniti:[112,139],unitless:[29,40,68,72,74,91,118,140,144,155,156,157,158,159],univers:[2,32,92,131,136,158],unknown:30,unless:[3,4,41,44,45,62,68,91,103,139],unlik:[33,45,93,97,111,114,134,135,136,149],unlike:[68,69,111,120,121,135,136],unlimit:145,unnecessari:4,unoccupi:79,unoptim:58,unpack:[0,3],unperturb:32,unphys:[2,68],unpublish:137,unrel:[46,163],unreli:139,unrestrain:73,unscal:40,unset:113,unshift:108,unsmooth:128,unsolv:101,unstabl:67,unstag:163,until:[2,19,58,60,62,65,77,97,118,141,142],unus:97,unwant:45,unwrap:[33,34,40,43,61],up_intern:58,updat:[0,2,4,40,66,67,68,72,79,97,108,137,139],upenn:3,upon:[2,74,97],upper:[19,37,60,62,67,68,72,80,91,118,148],uppercas:0,upsid:2,upsilon:117,upstream:163,urbana:131,urey_bradlei:5,url:163,usabl:111,usag:[2,70,130],use:[2,40,58,79,117,134,146,148,163],useful:137,user:[0,1,2,3],user_manifold:163,user_misc:[14,15,17,49,53,55,56,86],usernam:163,using:[0,1],usr:3,usual:[2,8,12,16,17,18,23,32,54,56,58,61,62,69,72,73,79,80,81,87,92,101,103,106,108,117,121,130,131,132,139,143,149,154,155],util:117,v11:2,v22:2,v33:2,v_0:79,v_2:137,v_3:137,v_4:137,v_delta:32,v_dhug:72,v_drai:72,v_e_hbond:120,v_ij:145,v_jx:35,v_jy:35,v_jz:35,v_k11:35,v_k22:35,v_k33:35,v_lgr_po:72,v_lgr_vel:72,v_linear:80,v_lj:94,v_mu:131,v_n:[67,137],v_name:[2,32,58,80],v_occ:116,v_prefactor:150,v_press:43,v_pxy:2,v_pxz:2,v_pyz:2,v_ramp:80,v_rebo:94,v_t_qm:72,v_torsion:94,v_v11:2,v_v22:2,v_v33:2,v_valu:58,v_wiggl:80,v_x:[45,80],v_xave:2,v_xmax:2,v_xx:45,v_y:45,v_yi:45,vacanc:[77,137],vacf:2,vacuum:[79,106,158,162],valanc:97,valenc:[97,113],valent:97,valid:[2,3,41,44,62,70,111,113,117,137,145],valon:134,value1:69,value2:69,van:[27,32,103,104,130,134,161],vanadium:137,vanderwa:139,vanilla:2,vanish:75,vapor:[19,60],vare:79,vari:[1,19,32,41,44,59,60,62,68,73,79,80,101,109,110,119,128,131,150],variabl:0,varianc:109,variant:[1,2,40,68,69,118,135,136,140,156,158],variat:[19,60],varieti:[1,2,58,134,159],variou:0,varshalovich:42,vashishta1990:159,vashishta2007:159,vbia:2,vcm:2,vdisplac:80,vdw:104,vec:70,vector:1,vel:[2,109,110,113,118],veld:[100,126],veloc:[2,35,39,40,43,45,58,62,63,67,68,69,70,71,72,73,75,78,79,80,91,92,109,113,118,131,132],velocit:[109,110,113,118],velocity_bottom:67,velocity_top:67,verbos:148,veri:[1,2,19,32,40,58,60,62,68,71,75,92,113,118,131,132,141,142,149,150,163],verifi:[139,163],verlet:[1,4,59,63,68,71,75,79],versa:[2,61],versu:[2,19,60,75,100,108,118,126,139],vertic:[4,19,58,60],via:[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,32,35,39,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,61,62,67,68,69,71,73,75,79,80,81,82,83,84,85,86,87,88,89,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,144,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],vibrat:[2,70,72,88,113],vice:[2,61],video:58,view:[2,58,97,113,114,148],viewer:58,viewpoint:58,vij:109,vim:0,virial:[35,39,42,43,62,68,69,75,109,110,113],virtual:[2,155],viscoelast:118,viscos:0,viscosity:2,viscou:[2,66,67,91,92],vision:148,visual:0,viz:3,viz_tool:3,vizplotgui_tool:3,vmax:62,vmd:[2,3],voigt:[2,42],vol:[2,35,43,134,158],volpress:137,volum:[2,19,32,35,39,41,43,44,45,60,62,64,67,68,69,72,79,80,81,131,132,137,152,153,162],voronoi:43,voter:[135,136],voth:71,vri:119,vstream:2,vtk:[2,41],w_1:42,w_2:42,w_i:42,w_ik:145,waal:[32,103,104,130,161],wadlei:97,wagner:[59,67,134],wai:[1,2,3,29,32,34,35,36,38,42,43,45,58,61,62,66,67,68,69,71,79,80,83,84,85,87,88,91,92,93,94,105,106,109,111,112,114,117,120,122,134,135,136,139,143,145,146,148,149,150,154,155,156,158,159,163],wait:[1,4],walk:[66,68],wall:0,wallhi:80,wang:[134,145],want:[0,1,2,3,31,34,39,40,43,45,58,60,61,70,73,78,80,81,92,93,94,97,103,104,109,111,114,134,141,142,143,145,148,150,155,156,158,159,163],ward:97,warm:[4,113],warmup:4,warn:[0,21,22,30,58,68,69,74,131,132,134,141,142,163],warner:93,warning:134,warp:134,warren:[109,141,142],watanab:[77,78],watch:92,water:0,watkin:54,wave:113,wavefunct:113,wavelength:[41,44],wavepacket:113,weak:36,web:1,webb:59,weber:[112,136,145,155,159],weight:[2,32,42,44,46,57,66,67,74,107,109,110,115,134,139,141,142,149],well:[1,2,3,11,26,36,38,39,43,45,48,58,60,62,67,68,69,74,78,91,92,96,116,117,120,131,132,134,137,146,150,156,157,158,163],went:3,were:[2,3,4,19,29,38,39,45,58,60,94,113,118,121,163],westview:161,what:[0,1,2,3,40,45,58,60,61,65,68,71,73,75,80,91,92,134,139,141,142,150,154,163],whatev:[40,58,62,68,91,92,102,103,137],whelan:44,when:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,36,37,38,39,45,46,47,48,49,50,51,52,53,54,55,57,58,60,61,62,67,68,69,70,72,73,74,75,76,79,80,81,82,83,84,86,87,88,89,91,92,93,94,95,98,99,100,101,102,103,104,105,107,108,109,111,112,113,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,134,135,136,137,139,140,141,142,143,144,145,146,147,149,150,154,155,156,157,158,159,160,161,162,163],whenev:[0,56,120],where:[1,2,3,4,6,7,8,9,10,11,12,13,16,17,18,19,20,23,24,25,26,29,30,31,32,33,34,36,39,40,41,43,44,47,48,57,58,60,61,62,63,64,65,66,67,68,69,70,71,72,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,91,92,93,94,96,97,98,99,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,122,126,131,132,133,134,135,136,137,139,142,143,144,145,146,148,149,151,152,153,154,155,156,157,158,159,161,162],wherea:[2,3,36,66,68,79],whether:[2,3,28,29,58,61,62,68,69,75,99,101,104,119,121,131,132,134,139,148],which:[0,1,2,3,4,5,6,7,8,9,12,13,16,19,21,22,23,26,27,28,29,30,31,32,33,34,35,37,38,39,40,42,43,44,45,46,47,50,51,52,54,57,58,60,61,62,63,65,66,67,68,69,70,71,72,73,75,76,77,78,79,80,81,82,84,87,89,90,91,92,93,94,96,97,98,99,100,101,103,104,105,106,107,108,109,111,112,113,114,115,116,117,118,119,120,121,122,124,125,126,128,130,131,132,134,135,136,137,139,140,141,142,143,144,145,146,147,148,149,150,154,155,156,157,158,159,161,163],white:[66,79],who:[0,2,93,111],whole:74,whose:[2,32,58,65,68,70,73,74,75,81,92,113,115,124,141,142,155,156,158],why:[2,163],wicaksono1:70,wicaksono2:70,wicaksono:70,wide:[1,2,101,103,113],width:[58,90,116],wiggl:80,wigner:42,wih:2,wikipedia:2,wild:[32,120],wildcard:[58,154],wildli:68,window:[58,163],wire:73,wirnsberg:[2,63],wisdom:163,wise:[109,155],wish:[2,3,43,46,67,75,80,92,99,120,134,139,141,142],within:[1,2,3,4,13,19,29,30,36,38,39,40,42,45,58,60,61,65,70,74,75,79,80,81,91,92,96,98,99,105,110,111,112,113,115,116,121,122,134,137,142,144,146,147,155,156,157,158,159],without:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,32,39,46,47,48,49,50,51,52,53,54,55,58,62,65,66,68,69,74,75,82,83,84,86,87,88,89,92,93,94,95,98,99,100,101,102,103,104,105,108,109,111,112,113,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,137,139,140,141,142,143,144,146,147,150,155,156,157,158,159,160,161,162,163],wolff:139,won:132,wong:[59,97],word:[2,13,73,103,139],work:[1,2,3,4,28,40,41,44,58,61,67,68,73,75,78,104,107,109,131,132,134,137,139,148],workaround:139,worker:159,workflow:163,world:[42,92],worlei:109,worst:81,worth:72,would:[1,2,3,4,13,19,29,33,35,40,43,45,46,57,58,60,61,63,68,70,71,74,82,83,84,85,87,91,92,93,94,97,103,104,105,109,110,111,112,114,134,135,136,137,143,145,149,154,155,156,157,158,159,163],wrap:[1,2,3,40,45,67,80,81,92],wrapper:[0,2],wright:91,write_atom_weight:59,write_restart:[59,67],written:[2,42,58,59,60,61,62,63,66,67,70,72,73,75,76,77,79,80,81,111,133,137,161,163],wrong:[3,62,68,80,81],wt1:139,wt2:139,wt3:139,www:[0,2,3,93,111,131],x200:4,x86:137,x_ij:145,x_ijkl:82,x_kjli:82,x_ljik:82,xave:2,xavx:4,xcore:4,xeon:[1,4],xhi:[2,80],xhi_bound:2,xhost:4,xi_ij:145,xiaowang:[114,156,158],xiij:70,xlat:45,xlo:[2,3,80],xlo_bound:2,xmax:2,xmgrace:0,xmic:4,xmovi:[0,2],xmu:118,xpo:45,xrd:41,xtc:[2,58],xyz:[2,45,58,62,68,69],xzhou:114,yamada:4,yang:[137,145],yate:137,yb2:44,yb3:44,yellow:58,yet:[4,58,80,91,102,103,104,113,161,163],yhi:[2,80],yhi_bound:2,yield:[2,35,43,62,68,74,96,109,118,139],yip:77,ylat:45,ylo:[2,80],ylo_bound:2,york:71,yoshida:68,you:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,35,36,38,39,40,42,43,45,46,47,48,49,50,51,52,53,54,55,57,58,60,61,62,63,66,68,69,71,73,75,77,78,79,80,81,82,83,84,86,87,88,89,91,92,93,94,95,97,98,99,100,101,102,103,104,105,108,109,111,112,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,134,135,136,137,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],young:118,your:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,39,45,46,47,48,49,50,51,52,53,54,55,58,59,61,62,68,69,75,79,80,81,82,83,84,86,87,88,89,92,93,94,95,97,98,99,100,101,102,103,104,105,108,109,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,134,135,136,137,139,140,143,144,145,146,147,150,154,155,156,157,158,159,160,161,162,163],yourself:[2,62,163],ypo:45,yukawa:103,z_i:[113,158,162],z_j:[158,162],z_meam:134,zannoni:117,zbl:[134,149],zblcut:158,zblcutinn:149,zblcutout:149,zblexpscal:158,zblz:149,zero:[2,3,10,11,19,24,25,29,32,34,36,37,38,39,41,42,43,44,45,46,48,55,57,58,60,62,63,66,67,68,69,71,72,74,75,78,79,80,86,91,92,97,98,99,100,101,103,105,108,109,110,113,117,119,120,122,124,126,127,130,132,133,134,137,139,140,146,147,148,154,159,162],zeta:[67,114],zfactor:58,zhang:118,zhi:[2,80],zhi_bound:2,zhou:[97,114,145,156,158],zhu:153,ziegler:[134,158,162],zimmerman2004:59,zimmerman2010:59,zimmerman:[29,59,97],zlim:148,zlo:[2,80],zlo_bound:2,zmax:67,zmin:67,zn2:44,zone:41,zoom:58,zr4:44,zwall:80,zwall_veloc:67},titles:["LAMMPS Documentation","5. Accelerating LAMMPS performance","6. How-to discussions","11. Python interface to LAMMPS","5.USER-INTEL package","angle_style charmm command","angle_style class2 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 quartic command","angle_style sdk command","balance command","bond_style class2 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 morse command","bond_style nonlinear command","bond_style quartic command","compute centro/atom command","compute cna/atom command","compute dpd command","compute fep command","compute gyration command","compute gyration/chunk command","compute heat/flux command","compute hexorder/atom command","compute msd/nongauss command","compute orientorder/atom command","compute pressure command","compute rigid/local command","compute saed command","compute sna/atom command","compute stress/atom command","compute xrd command","create_atoms command","dihedral_style charmm command","dihedral_style class2 command","dihedral_style cosine/shift/exp command","dihedral_style fourier command","dihedral_style harmonic command","dihedral_style helix command","dihedral_style multi/harmonic command","dihedral_style nharmonic command","dihedral_style opls command","dihedral_style quadratic command","dihedral_style spherical command","dihedral_style command","dump image command","fix atc command","fix balance command","fix bond/swap command","fix box/relax command","fix ehex command","fix eos/cv command","fix eos/table/rx command","fix gld command","fix lb/fluid command","fix nvt command","fix nphug command","fix orient/fcc command","fix pimd command","fix qbmsst command","fix restrain command","fix rx command","fix shake command","fix spring/rg command","fix ti/rs command","fix ti/spring command","fix ttm command","fix wall/lj93 command","fix wall/region command","improper_style class2 command","improper_style cossq command","improper_style cvff command","improper_style distance command","improper_style fourier command","improper_style harmonic command","improper_style ring command","improper_style umbrella command","Manifolds (surfacse)","minimize command","neb command","pair_style adp command","pair_style airebo command","pair_style beck command","pair_style body command","pair_style bop command","pair_style born 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_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 dpd/fdt command","pair_style eam command","pair_style edip command","pair_style eff/cut command","pair_style eim command","pair_style exp6/rx 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 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 lj/mdf command","pair_style meam command","pair_style meam/spline","pair_style meam/sw/spline","pair_style mgpt command","pair_style mie/cut command","pair_modify command","pair_style morse command","pair_style multi/lucy command","pair_style multi/lucy/rx command","pair_style nb3b/harmonic command","pair_style nm/cut command","pair_style polymorphic command","pair_style resquared command","pair_style lj/sdk command","pair_style smtbq command","pair_style snap command","pair_style soft command","pair_style sph/idealgas command","pair_style sph/taitwater command","pair_style sph/taitwater/morris command","pair_style srp command","pair_style sw command","pair_style tersoff command","pair_style tersoff/mod command","pair_style tersoff/zbl command","pair_style vashishta command","pair_style yukawa command","pair_style yukawa/colloid command","pair_style zbl command","LAMMPS GitHub tutorial"],titleterms:{"default":[29,32,36,37,38,41,42,44,45,57,58,59,62,66,67,68,69,71,72,77,78,80,97,113,131,132,137,139,154],"long":[98,99,100,101,102,105,107,108,122,126,130,144,147],acceler:1,adiabat:2,adp:93,airebo:94,alloi:111,amber:2,angle_styl:[5,6,7,8,9,10,11,12,13,14,15,16,17,18],arrai:2,aspher:2,atc:59,atom:[2,29,30,36,38,42,43],balanc:[19,60],barostat:2,bcc:70,beck:95,between:2,bodi:[2,96],bond:61,bond_styl:[20,21,22,23,24,25,26,27,28],bop:97,born:[98,107],box:[2,62],buck:[99,100,107,133],build:3,calcul:2,centro:29,charmm:[2,5,46,101,130],chunk:[2,34],class2:[6,20,47,82,102],cna:30,code:2,coeffici:2,colloid:[80,103,161],comb3:104,comb:104,command:[2,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,34,35,36,37,38,39,40,41,42,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,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],comparison:1,compos:2,comput:[2,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],conduct:2,constant:2,core:2,cosin:[7,8,9,10,11,12,48],cossq:83,coul:[98,99,100,101,102,105,106,107,119,122,126,130,144,147],coupl:2,create_atom:45,cubic:124,cut:[25,99,102,105,108,113,116,122,123,130,138,144],cvff:84,data:2,deby:[105,122],delta:8,descript:[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,34,35,36,37,38,39,40,41,42,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,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],diel:106,diffus:2,dihedral_styl:[46,47,48,49,50,51,52,53,54,55,56,57],dipol:[2,13,108],discuss:2,disp:2,distanc:85,document:0,dpd:[31,109,110],dreid:120,dreiding:2,drude:2,dsf:[105,122],dump:[2,58],eam:111,edip:112,eff:113,ehex:63,eim:114,elastic:2,energi:110,exampl:[2,3,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,34,35,36,37,38,39,40,41,42,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,79,80,81,82,83,84,85,86,87,88,89,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,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],exp6:115,exp:[11,48],expand:[22,125],extend:3,fcc:70,fdt:110,fene:[21,22],fep:32,field:2,file:2,finit:2,fix:[2,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81],fix_modifi:[59,60,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81],flow:2,fluid:67,flux:35,forc:2,fourier:[14,15,49,86],from:[2,3],gauss:116,gaybern:117,gener:[1,2],github:163,gld:66,global:2,gpu:[95,98,99,101,102,103,105,108,109,111,116,117,119,122,123,124,125,138,140,146,147,150,155,156,157,158,160,161,162],gran:118,granular:2,gromac:119,gyrat:[33,34],harmon:[16,23,24,25,50,52,80,87,143],hbond:120,heat:35,helix:51,hertz:118,hexord:36,histori:118,hook:118,how:2,idealga:151,imag:58,implicit:101,improper_styl:[82,83,84,85,86,87,88,89],indice:0,induc:2,info:[0,59,60,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81],input:2,install:3,integr:2,intel:[4,5,16,21,23,46,50,54,68,84,87,99,101,117,122,155,156],interfac:[2,3],jul:0,kspace_styl:2,lammps:[0,1,2,3,163],lennard:133,librari:[2,3],linear:[129,140],list:121,lj1043:80,lj126:80,lj93:80,lj96:123,local:[2,40],lubric:131,lubricateu:132,luci:[141,142],manifold:90,mdf:133,meam:[134,135,136],measur:1,mgpt:137,mie:138,minim:[59,60,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81,91],mod:[79,157],model:2,morri:153,mors:[26,94,120,140],movi:58,mpi:3,msd:37,msm:[98,99,101,105,122],multi:[2,52,141,142],multipl:2,nb3b:143,neb:92,nemd:2,nharmon:53,non:2,nongauss:37,nonlinear:27,nph:68,nphug:69,npt:68,nvt:68,omp:[5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,46,47,48,49,50,51,52,53,54,55,68,69,82,83,84,86,87,88,89,93,94,95,98,99,100,101,102,103,104,105,106,108,109,111,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,135,136,140,143,144,146,147,150,155,156,157,158,159,160,161,162],opl:54,opt:[101,111,122,126,140],optim:1,option:2,orient:70,orientord:38,orthogon:2,other:2,output:[2,59,60,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81],overview:3,packag:[1,4],pair:2,pair_modifi:139,pair_styl:[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,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],parallel:3,paramet:2,particl:2,per:2,perform:1,period:9,pimd:71,polariz:2,poli:[131,132],polymorph:145,potenti:2,pppm:2,pressur:39,process:2,properti:2,python:3,qbmsst:72,quadrat:55,quantiti:2,quartic:[17,28],rattl:75,rebo:94,region:81,relat:[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,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,72,74,76,77,78,79,80,81,82,83,84,85,86,87,88,89,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,149,150,151,152,153,154,155,156,157,158,159,160,161,162],relax:62,replica:2,resquar:146,restart:[2,59,60,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81],restrain:73,restrict:[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,34,35,36,37,38,39,40,41,42,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,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,149,150,151,152,153,154,155,156,157,158,159,160,161,162],rigid:[2,40],ring:88,run:[2,3,59,60,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81],scalar:2,script:[2,3],sdk:[18,147],serial:3,set:2,shake:75,share:3,shell:2,shift:[10,11,24,25,48],simpl:15,simul:2,size:2,smooth:[128,129,140],smtbq:148,sna:42,snad:42,snap:149,snapshot:2,snav:42,soft:[130,140,150],spc:2,sph:[151,152,153],spheric:[2,56],spline:[135,136],spring:[76,78],squar:12,srp:154,start:[59,60,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81],stop:[59,60,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81],strategi:1,streitz:105,stress:43,style:[1,2],summari:2,surfacs:90,swap:61,syntax:[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,34,35,36,37,38,39,40,41,42,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,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,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],system:2,tabl:[0,2,65,156],taitwat:[152,153],temperatur:2,tersoff:[156,157,158],test:3,thermal:2,thermo:2,thermodynam:2,thermostat:2,time:2,tip3p:2,tip4p:[2,105,122,126,130],triclin:2,tstat:109,ttm:79,tutori:163,umbrella:89,user:4,using:[2,3],valu:2,variabl:2,variou:1,vashishta:159,vector:2,version:0,viscos:2,visual:2,wall:[2,80,81],water:2,wolf:[98,105],wrapper:3,write:2,xrd:44,yukawa:[160,161],zbl:[158,162]}}) \ No newline at end of file +Search.setIndex({envversion:50,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_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","angle_zero","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","bond_write","bond_zero","boundary","box","change_box","clear","comm_modify","comm_style","compute","compute_ackland_atom","compute_angle","compute_angle_local","compute_angmom_chunk","compute_basal_atom","compute_body_local","compute_bond","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","compute_dihedral_local","compute_dilatation_atom","compute_dipole_chunk","compute_displace_atom","compute_dpd","compute_dpd_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_hexorder_atom","compute_improper","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_orientorder_atom","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_rigid_local","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_body","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_spherical","dihedral_style","dihedral_table","dihedral_zero","dimension","displace_atoms","dump","dump_custom_vtk","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_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_ehex","fix_enforce2d","fix_eos_cv","fix_eos_table","fix_eos_table_rx","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_manifoldforce","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_body","fix_nph_sphere","fix_nphug","fix_npt_asphere","fix_npt_body","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_manifold_rattle","fix_nve_noforce","fix_nve_sphere","fix_nve_tri","fix_nvt_asphere","fix_nvt_body","fix_nvt_manifold_rattle","fix_nvt_sllod","fix_nvt_sllod_eff","fix_nvt_sphere","fix_oneway","fix_orient","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_rx","fix_saed_vtk","fix_setforce","fix_shake","fix_shardlow","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_chunk","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_distance","improper_fourier","improper_harmonic","improper_hybrid","improper_none","improper_ring","improper_style","improper_umbrella","improper_zero","include","info","jump","kspace_modify","kspace_style","label","lattice","log","manifolds","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_dpd_fdt","pair_dsmc","pair_eam","pair_edip","pair_eff","pair_eim","pair_exp6_rx","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_mdf","pair_meam","pair_meam_spline","pair_meam_sw_spline","pair_mgpt","pair_mie","pair_modify","pair_morse","pair_multi_lucy","pair_multi_lucy_rx","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_smtbq","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_table_rx","pair_tersoff","pair_tersoff_mod","pair_tersoff_zbl","pair_thole","pair_tri_lj","pair_vashishta","pair_write","pair_yukawa","pair_yukawa_colloid","pair_zbl","pair_zero","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","tutorial_github","uncompute","undump","unfix","units","variable","velocity","write_coeff","write_data","write_dump","write_restart"],objects:{},objnames:{},objtypes:{},terms:{"00a":344,"00b":344,"02214e23":99,"03275e":523,"0892e":12,"0b1":11,"0e20":[360,500,524],"0e4":[269,353,423],"0e5":269,"0x98b5e0":206,"100k":1,"1024x1024":206,"10e":411,"10f":3,"10g":524,"10th":[492,498,511],"10x":[3,385,386,388,389,399],"10x10x10":166,"10x20x20":380,"12th":318,"15g":[207,524],"16e":318,"16g":[219,223],"16x":1,"18986e":386,"1_12":380,"1_3":380,"1_6":380,"1_prop":6,"1fluid":[420,451,479],"1st":[2,6,8,12,19,21,37,44,56,59,60,62,75,95,172,184,186,199,211,212,219,220,221,222,223,227,231,241,242,271,305,315,318,346,358,362,383,389,394,395,399,406,408,416,418,419,420,427,428,437,438,443,444,445,450,451,452,456,467,477,478,479,480,481,482,485,491,497,505,506,509,524],"1x2x2":494,"2000k":206,"20x":399,"23899e":386,"2400k":206,"2697v2":15,"2697v4":15,"298k":410,"2_3":380,"2k_ss":418,"2nd":[2,3,6,11,12,14,16,37,45,46,56,59,62,75,81,96,160,167,199,207,219,220,221,222,223,227,229,231,241,242,271,317,323,331,358,361,368,376,386,387,388,389,393,395,408,418,425,426,443,450,451,467,476,477,478,479,480,481,482,485,497,504,506,509,524],"2pi":199,"2theta":177,"2x1x2":494,"2x2x1":494,"2x2x2":494,"2x4x10":494,"2x5":418,"300k":[248,317,512,525],"310k":512,"3419e":269,"36x":15,"3806504e":[6,99],"3n_k":247,"3nk":307,"3nkb":312,"3rd":[4,9,14,16,19,37,56,75,115,125,199,219,220,222,223,227,241,242,317,319,358,387,391,393,408,418,420,425,426,450,451,467,477,478,479,480,481,482,485,497,504,509,524],"3x3":[99,380],"4857990943e":418,"49e":318,"4_94":11,"4th":[6,37,56,87,113,114,127,174,184,199,207,318,331,358,378,392,394,395,399,416,419,420,423,427,443,450,451,452,456,467,477,478,479,480,482,485,497,504,509,512,529],"4x10":376,"4x2x10":494,"4x6x10":494,"50k":1,"512k":15,"524k":15,"53xx":17,"54xx":17,"58i":211,"5_1":399,"5_12":380,"5_6":380,"5kx":[213,237],"5nlog_2":12,"5th":[127,386,420,514],"6021765e":523,"66e":318,"6863e22":455,"6x6":6,"7120p":15,"72360e":269,"7797e":269,"7842e":12,"8032044e":523,"8706e":466,"8706q":466,"8730m":466,"8730n":466,"8e12":221,"8x1":6,"8x2":[6,12],"948q":466,"9e18":[12,39],"9e9":455,"9jan09":[353,423],"9th":388,"abstract":16,"boolean":[3,358,360],"break":[2,3,7,8,9,12,54,55,61,182,210],"byte":[3,12,221,514],"case":[1,2,3,6,8,11,12,13,14,15,16,17,39,40,41,45,46,61,63,65,74,75,77,113,114,119,125,127,128,155,156,157,158,159,161,164,165,166,167,168,170,171,172,176,178,180,181,182,184,202,203,204,205,206,207,213,214,218,219,220,222,223,224,225,227,229,231,235,237,243,246,249,250,252,253,254,255,257,269,271,272,273,274,275,276,277,278,279,287,291,292,294,296,298,299,303,304,306,307,308,309,316,317,318,320,323,325,326,328,331,335,338,339,340,342,343,347,349,350,352,353,355,356,357,358,360,376,377,378,380,383,385,386,387,388,390,392,393,395,404,407,409,411,416,418,422,423,425,426,427,439,440,441,443,446,448,450,451,452,456,459,462,464,468,475,478,479,480,482,489,490,492,495,497,499,500,504,505,507,509,511,513,514,515,516,518,519,523,524,525,528,529],"catch":[1,3,495],"char":[6,8,466],"class":[1,3,5,6,7,8,9,11,12,13,21,36,44,55,186,198,244,306,362,371,405,426,458,459,476,485,495,497],"default":[1,2,3,6,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"else":[8,205],"export":[15,206,406],"false":[360,524],"final":[3,5,6,7,8,9,11,12,16,41,61,95,153,207,218,219,220,222,223,225,229,231,246,270,271,276,307,311,317,318,319,323,344,346,347,354,360,386,388,394,395,399,416,419,420,427,439,443,452,456,457,477,478,479,480,482,485,492,505,511,518,519,524,527],"float":[3,6,8,12,15,40,42,75,124,203,207,219,223,251,306,319,337,418,463,465,495,497,507,514,524],"function":[1,3,6,7,8,9,11,12,14,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,42,43,45,46,47,48,49,51,53,54,56,57,65,69,75,85,95,99,103,110,116,123,127,128,152,155,165,172,173,174,184,185,187,188,189,190,192,193,195,196,197,199,202,203,207,211,212,213,214,216,220,221,224,227,229,230,231,236,237,239,241,242,244,245,247,249,250,252,254,255,257,268,270,271,273,274,275,276,277,278,279,280,281,288,289,291,292,294,296,299,300,304,309,310,311,312,316,317,318,320,321,328,338,339,340,344,345,347,349,352,355,357,360,361,363,364,366,367,370,372,377,378,386,394,395,396,397,399,400,401,402,403,404,405,407,408,409,410,412,413,414,416,417,418,419,421,422,423,424,425,426,429,430,431,432,433,434,435,436,437,438,439,440,442,443,444,445,446,447,448,449,450,451,452,453,455,456,458,459,460,461,466,468,469,470,471,472,473,474,477,478,479,480,481,482,483,485,486,487,488,489,494,495,500,502,504,506,507,513,518],"import":[1,2,3,6,9,11,16,75,115,178,189,210,229,246,249,250,254,255,271,312,338,339,340,342,347,357,359,439,446,459,495,497,506,514,518],"int":[3,6,8,11,111,244,246,254,256,312,347,514],"long":[1,2,3,6,7,8,9,10,12,14,15,17,35,61,63,76,95,96,119,120,121,123,127,153,172,179,182,183,184,190,202,206,210,211,212,216,217,220],"new":[0,3,5,6,7],"null":[3,6,99,100,117,123,128,153,178,203,210,218,220,224,230,233,236,268,306,315,318,320,323,327,328,331,333,353,394,395,408,416,419,423,426,427,428,443,444,445,452,456,458,459,467,477,480,481,482,485,497,500,505,507,525],"public":[0,7,8,12,244,253,419,450,451,457,466],"return":[2,3,6,8,11,14,15,16,17,18,41,75,118,119,128,146,147,151,176,178,207,219,231,244,271,360,374,376,423,494,495,496,504,507,513,515,524],"short":[1,3,6,7,9,13,15,176,271,317,335,348,378,382,389,390,393,395,399,400,402,403,404,408,409,411,418,426,429,431,435,439,442,443,448,449,453,461,466,478,483,492,495,505,507,511,518,519],"static":[2,3,5,6,7,8],"switch":[1,3,6,10,12,13,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,43,45,46,47,48,49,51,53,54,56,99,123,152,155,165,177,184,185,187,188,189,190,192,193,195,196,199,206,209,213,217,224,231,239,245,249,253,254,257,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,309,310,317,320,321,344,345,355,361,363,364,366,367,370,372,374,376,378,381,388,392,393,394,395,397,400,401,402,403,404,405,407,408,409,412,413,416,417,419,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,444,446,449,452,453,455,458,459,460,461,468,477,478,480,481,482,483,485,487,488,489,491,492,494,497,499,500,504,506,510,512,519,524,527,529],"throw":514,"true":[6,12,13,16,119,126,129,203,204,219,225,227,231,271,272,298,299,300,304,317,342,346,358,360,393,418,423,466,477,495,499,507,524],"try":[1,3,8,12,16,18,219,251,257,343,344,345,350,495,519,524],"var":[3,11,12,178,358,376,508,524],"void":[4,6,7,8,41,181,225,244,500],"while":[1,3,9,11,12,13,17,74,75,115,152,161,176,189,203,208,217,229,231,235,247,248,253,254,255,257,263,271,294,307,308,312,314,318,348,378,386,393,399,410,416,458,459,480,482,485,492,495,506,511,518],__main__:495,__pthread_key_cr:12,_boundingbox:204,_compute_group_group:154,_compute_heat_flux:154,_compute_t:8,_j1m1m1:152,_j2m2m2:152,_manifold_rattl:519,_pair_lj:9,_serial:12,_wirnsberg:238,a10:360,a123:360,a12:460,a2m:[6,99],a_0:[257,347,399],a_0_real:257,a_1:347,a_2:347,a_3:347,a_4:347,a_c:407,a_cc:407,a_f:482,a_ij:399,a_pi:399,a_sigma:399,a_ss:407,aat:185,aatom1:[68,126],aatom2:[68,126],aatom3:[68,126],ab_23_cd:360,abbrevi:12,abc:[3,12,360,495,524],aberdeen:[88,89,240,322],abf:230,abf_integr:13,abi:208,abil:[3,229,271,304,317,418],abl:[3,8,9,11,12,39,94,203,208,228,237,245,287,343,350,393,495,524,528],ablat:347,abort:512,about:[0,1,3,6,8,9,11,12,13,15,16,39,41,42,63,65,82,119,126,127,130,172,178,203,204,206,207,208,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,231,232,233,235,236,237,238,239,243,244,245,246,249,250,251,252,254,255,256,257,258,259,260,261,262,263,264,265,267,270,276,280,281,282,283,284,285,286,287,288,289,290,293,297,298,299,301,302,303,304,305,306,308,309,310,311,312,313,314,315,316,317,319,320,321,331,332,333,335,336,338,339,340,341,342,343,344,345,346,347,349,350,351,352,354,355,356,357,358,375,378,382,385,386,388,393,398,404,409,426,455,459,488,495,498,499,504,505,507,512,516,519,524,527,529],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,34,35,37,40,41,42,43,44,45,46,47,48,49,50,51,53,54,56,59,65,66,71,74,75,76,77,80,81,94,95,97,98,99,103,104,106,107,123,125,127,128,130,152,153,155,156,157,158,159,160,161,164,165,166,167,168,170,171,172,176,177,178,180,181,184,185,186,187,188,189,190,191,192,193,195,196,197,199,203,204,205,206,207,210,211,212,213,214,218,219,220,222,223,225,228,229,231,232,237,241,244,246,250,252,254,255,256,260,270,271,276,300,303,305,310,316,317,318,323,331,335,338,339,340,341,358,360,361,362,363,364,365,366,367,368,370,372,378,380,383,387,388,392,393,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,435,436,437,438,439,440,441,442,443,446,447,448,449,450,451,453,455,456,458,459,460,461,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,483,484,485,487,488,489,490,491,492,493,494,495,497,498,499,500,501,504,505,506,507,508,511,512,515,518,519,524,525,528,529],abscissa:[450,451,478,479],absenc:214,absent:518,absolut:[3,207,217,230,231,235,318,323,337,377,378,386,423,431,498],absorb:347,absoult:378,abstol:318,ac3:177,academ:246,acc:342,acceler:0,accelri:[6,13],accept:[7,12,95,176,178,207,228,231,246,318,342,403,435,505,512,519],acceptanc:217,acceptor:425,access:[0,3,6,7,8,9,11,12,15,38,40,58,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,93,96,97,98,99,100,101,102,103,105,106,109,110,111,113,114,115,116,117,118,119,121,122,123,124,125,126,128,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,173,174,175,176,177,200,210,211,212,213,214,215,216,217,218,219,220,222,223,224,225,226,227,228,229,230,231,232,233,236,237,238,239,243,244,245,246,247,248,249,250,251,252,254,256,257,258,259,260,261,262,263,264,265,267,268,269,270,271,276,280,281,282,283,284,285,286,287,288,289,290,293,297,298,299,301,302,303,304,305,306,307,308,309,310,311,313,314,315,316,317,319,320,321,323,328,331,332,333,334,335,336,337,338,339,340,341,343,344,345,346,347,349,350,351,352,353,354,355,356,357,373,377,393,395,421,423,425,426,443,458,459,468,494,495,498,503,515,516,524],accident:519,accidenti:370,accler:[9,12],accommod:215,accomod:271,accompani:8,accomplish:[15,231,258,288],accord:[6,66,75,88,133,139,142,160,206,217,226,227,242,257,271,287,299,307,323,325,344,345,347,352,353,355,356,357,389,418,423,434,437,456,463,465,466,468,470,471,473,474,475,511,524],accordingli:[11,112,156,157,171,176,182,389,440,441,475],account:[3,6,95,130,160,176,177,186,198,220,222,236,238,251,252,254,271,277,278,279,291,292,294,296,298,302,308,317,319,321,331,333,334,335,338,339,340,343,347,350,366,387,409,414,423,431,435,440,441,443,446,466,494,511,519,525],accuml:[3,317,343,350],accumul:[6,8,14,75,88,154,210,220,221,254,317,323,349,375,393,503,523],accur:[1,3,6,9,14,16,37,41,56,161,225,269,312,317,318,321,335,343,350,356,358,378,399,418,422,423,448,460,476,478,479,480,482,511,516,524],accuraci:[1,3,6,12,41,202,203,207,225,238,248,271,309,321,348,358,377,378,385,395,418,448,450,451,458,459,478,479,486,506,511,516,518,524,528],accuractli:516,ach:377,achiev:[1,3,6,9,10,15,16,17,28,41,225,238,246,248,271,272,287,299,300,307,377,426,506],achiv:17,acid:9,ackland1:416,ackland2:416,ackland:2,acknowledg:0,acml:12,aco:524,acolor:[206,207],acoust:299,acquir:[3,6,60,63,64,181,182,227,229,231,271,454,490,502,518],across:[1,2,3,6,9,12,13,14,41,59,63,68,71,73,75,84,102,119,126,128,166,180,182,219,222,225,236,250,317,318,319,324,343,347,350,356,360,388,393,492,497,500,501,505,514,516],act:[3,6,73,119,129,163,235,249,252,253,254,255,257,260,270,317,328,342,344,345,347,356,357,358,386,401,412,422,423,425,460,475],acta:[130,177,394],actinid:[9,446],action:[2,6,11,12,75,247,252,345,518],activ:[5,8,11,12,13,15,55,61,95,176,230,247,251,254,260,266,270,297,317,318,326,346,375,439,476,506,518,521,524],active:[266,491],actual:[1,3,6,8,12,56,64,134,161,203,204,207,211,212,224,226,227,235,254,255,294,298,303,304,312,315,323,335,338,339,340,342,348,357,358,377,389,422,424,429,434,440,441,475,494,495,506,507,515,524],actualli:337,adam:[377,378],adapt:[2,3,6,9,95,172,210],adapti:298,adaptiv:[9,230,395],add:[0,1,3,5,6,7,8,9,11,12,13,14,15,16,17,18,40,42,75,95,99,112,125,128,129,131,176,178,179,203,204,205,206,210,211,212,213,214,216,218,219,220,222,223,227,230,235,237,238,244,248,249,250,252,254,256,257,261,269,270,271,272,273,274,275,276,277,278,279,291,292,294,295,296,298,306,316,317,320,321,331,332,334,338,340,341,345,346,347,349,351,352,356,358,378,380,385,387,395,400,402,405,409,418,426,431,443,448,449,453,459,461,495,497,498,503,505,507,509,516,518,519],add_molecul:216,add_speci:216,add_to_nodeset:216,added:[498,519],addforc:[2,3,210],adding:[8,213,237,316,519],addit:[1,2,3,4,6,7,8,9,12,13,14,15,16,17,19,21,28,32,36,37,39,40,41,42,44,50,55,56,65,118,119,124,154,178,179,181,182,186,191,197,198,199,200,201,206,207,208,210,213,221,224,225,229,230,235,237,238,241,242,246,248,249,250,254,257,271,272,273,274,275,276,277,278,279,289,291,292,294,295,296,298,306,317,320,321,322,324,348,351,352,356,362,368,371,373,378,380,388,390,393,394,395,399,400,402,404,406,408,409,412,414,415,416,417,418,419,423,424,426,427,428,430,431,439,441,442,443,444,445,446,448,450,451,452,453,456,458,459,461,466,467,476,477,478,479,480,481,482,485,489,492,497,498,499,504,505,506,509,511,518,519,520,522,524,527,528,529],addition:[0,4,6,8,11],additionali:204,addres:9,address:[7,8,11,206,253,519],addtorqu:2,adequ:[263,335,348,377,388,506],adher:28,adhikari:257,adiabat:0,adiam:[206,207],adjac:[39,176,178,238,388,448,478,479,480,511,512],adjiman:447,adjust:[2,3,6,15,16,41,61,130,140,156,157,158,161,162,165,166,171,172,177,182,203,206,219,225,229,231,251,254,258,262,267,268,271,272,276,294,298,301,303,304,307,308,309,310,315,317,318,326,335,339,343,348,350,351,352,354,355,357,377,378,386,388,393,395,415,440,441,466,482,507,525],adjust_radiu:326,adjust_radius_factor:326,admiss:276,adof:[158,219],adopt:[316,518],adp:[2,3,7],adri:[9,313,458,459],adust:172,advanc:[3,15,251,399,492,503],advantag:[1,6,8,11,17,39,40,41,225,393,417,506,511],advect:[3,6,335],advertis:8,advis:[318,388,457,516],afer:3,affect:[1,6,10,14,16,40,62,63,75,96,128,153,162,176,182,206,207,212,219,220,222,223,226,227,228,229,231,232,238,244,250,252,254,260,266,268,272,273,274,275,277,278,279,285,291,292,294,296,317,319,333,347,357,370,377,384,385,386,388,389,390,393,418,440,441,448,494,495,497,499,500,502,505,507,516],affin:[15,16,17,231,393,408],affiniti:393,afile:248,aforement:17,afresh:[305,505,524],afshar:413,after:[2,3,5,6,8,11,12,14,20,21,32,39,40,41,44,50,59,60,61,63,65,75,156,157,158,159,160,161,162,165,166,167,168,170,171,178,179,181,182,185,186,191,197,202,203,204,205,206,207,208,210,211,212,216,217,219,220,225,226,227,228,229,231,235,246,257,258,259,260,261,267,268,269,271,277,278,279,285,291,292,294,296,299,303,307,315,317,318,321,330,332,336,338,339,340,342,343,344,345,346,350,352,354,358,361,362,368,376,383,384,386,387,389,391,392,393,394,395,399,406,408,416,417,418,419,420,426,427,428,439,440,441,443,444,445,446,450,451,452,456,458,459,466,467,476,477,479,480,481,482,485,492,494,496,497,498,499,500,502,503,505,507,509,511,514,515,516,518,519,523,524,525,527,528,529],afterrun:505,afterward:3,afterword:41,ag1:177,ag2:177,again:[6,11,12,16,64,152,158,164,172,203,207,231,238,250,303,361,376,388,440,441,492,494,495,497,499,504,511,513,524,527],against:[11,12,13,66,232,388,458,459],aggreg:[6,12,68,71,73,84,102,119,126,250,267,315,317,333,492,525],aggress:[238,250,511],agilio:[9,13],agre:[3,8,199,386,395,428,459],agreement:[5,7],ahd:425,ahead:354,aidan:[0,5,7,9,13,380],aij:13,aim:6,airebo:[2,3,7,226,227,314],ajaramil:[7,9,13],aka:206,akohlmei:[7,9,13,208,251],aktulga:[7,9,310,459],al2o3:466,al2o3_001:[130,319],al3:177,ala:[257,466],alain:9,alat:[298,443],albe:[456,480,482],albeit:316,albert:9,alchem:[95,172],alcohol:350,alcu:[394,399],alcu_eam:456,alderton:412,alejandr:[271,272],alessandro:13,algebra:446,algorithm:[0,1,6,7,8,9,41,63,207,210,216,225,228,231,238,250,257,259,260,285,300,308,317,321,322,342,343,347,350,355,384,385,386,390,393,414,418,441,446,463,465,492,494,511],alia:[9,15],alias:[1,378],aliceblu:207,align:[6,9,12,28,41,75,180,199,225,252,380,497,500,518],alkali:418,all:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,21,32,36,38,39,40,41,42,44,50,54,55,57,58,59,61,62,63,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,166,171,172,173,174,175,176,177,178,179,180,181,182,184,186,191,197,198,199,200,203,204,205,206,207,208,210,211,212,213,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,234,235,236,237,238,239,240,241,242,243,244,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,263,264,266,267,269,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,289,290,291,292,293,294,295,296,297,298,299,300,302,303,304,305,306,307,308,309,310,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,334,335,336,337,338,339,342,343,344,345,346,347,348,349,350,352,353,354,355,356,357,358,359,360,361,362,366,371,373,375,376,377,378,379,380,383,386,387,388,389,390,392,393,394,395,396,398,399,400,402,403,404,405,406,408,409,412,413,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,435,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,455,456,457,458,459,460,461,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,488,489,490,491,492,494,495,496,497,498,499,500,501,502,504,505,506,507,508,509,510,511,512,514,515,516,518,519,523,524,525,527,528,529],allen:[28,95,412,422],allentildeslei:95,allign:3,allindex:359,alloc:[3,5,6,8,9,11,12,62,244,349,387,389,393,454,459,497,505],allocat:3,alloi:[2,3,12,13,394,399,409],allosw:75,allow:[1,2,3,6,8,9,11,12,13,14,15,16,17,21,36,38,39,40,41,55,57,58,59,60,61,63,64,65,81,100,117,119,154,156,157,158,171,176,177,178,180,186,198,199,200,202,203,204,206,207,208,210,211,213,214,215,216,217,219,220,221,222,223,224,225,227,228,229,230,231,232,233,236,237,244,246,247,248,249,251,252,254,257,260,261,266,268,271,272,289,298,302,303,304,305,306,307,309,311,316,317,318,319,320,321,323,325,326,330,331,332,333,334,335,342,343,344,345,347,348,349,350,351,352,356,358,360,362,371,373,377,378,380,386,387,388,389,392,393,395,396,399,400,401,402,403,404,409,416,418,423,424,425,426,431,435,440,441,446,448,456,459,460,463,465,466,475,483,486,488,490,492,495,497,499,500,501,502,503,504,507,509,510,511,514,515,519,524,525],almost:[2,3,12,15,62,252,307,347,378,390,393,475],alo:409,alon:[6,7,228,313,458,459,495],alond:13,along:[6,8,12,28,40,74,75,95,130,176,177,178,202,203,206,219,228,238,252,257,258,262,263,268,270,307,317,321,323,327,331,333,342,346,347,353,356,358,380,382,384,385,386,388,409,412,423,426,429,431,435,443,458,459,478,479,497,500,507,508,524],alonso:[444,445],alpha:[6,12,51,211,257,307,308,312,386,394,397,400,409,413,414,416,417,419,420,425,430,431,443,449,455,481,483,515,518],alpha_c:439,alpha_i:467,alpha_lj:439,alphabet:[2,3,21,36,44,55,65,186,198,210,362,371,387,406,476,497],alphanumer:[3,65,210,306,314,360,387,524],alreadi:[3,7,8,9,12,16,17,42,57,178,179,181,205,215,219,225,227,231,261,305,307,335,358,359,387,388,413,424,426,433,441,475,486,489,493,497,498,502,507,523,524],also:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,21,28,35,36,37,39,40,41,42,44,54,55,56,60,61,63,65,69,74,75,76,77,79,81,86,87,88,89,95,97,98,100,103,113,114,115,116,117,118,120,121,123,125,127,128,131,152,153,154,155,156,157,158,159,160,161,162,164,165,166,167,168,170,171,172,173,174,175,178,179,180,181,182,184,186,198,199,201,202,203,204,205,206,207,208,210,211,212,213,215,218,219,220,221,222,223,224,225,226,227,228,229,231,232,237,240,241,242,244,245,246,247,248,250,251,254,255,256,257,266,268,269,271,272,273,274,275,276,277,278,279,284,288,289,291,292,294,295,296,298,299,300,302,303,304,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,327,328,331,333,335,338,339,340,341,342,346,347,348,349,351,353,356,358,359,360,362,368,371,375,377,378,380,381,383,386,387,388,389,390,392,393,399,403,404,406,410,411,412,413,416,417,418,422,423,425,426,427,435,439,440,443,446,448,452,454,455,456,457,459,460,461,463,470,471,473,474,476,477,478,479,480,481,482,483,485,492,494,495,496,497,498,499,500,501,502,504,505,506,507,509,510,511,512,515,516,517,518,519,520,522,523,524,525,527,529],alter:[3,6,8,9,11,12,41,61,155,156,157,158,159,161,164,165,166,167,170,171,178,182,203,204,206,208,211,212,219,226,227,228,229,231,270,271,312,315,317,320,328,335,343,350,357,385,388,426,497,502,504,507,524,525,529],altern:[1,6,8,9,11,12,15,16,17,99,178,203,210,220,231,240,251,255,271,306,317,318,342,343,350,363,367,377,385,386,394,395,409,414,416,417,419,428,431,439,443,444,445,452,456,457,467,477,480,482,485,495,497,498,510,512,515],alternat:[386,518],although:[15,28,42,199,260,271,304,308,317,342,376,504,518,529],aluminum:489,alwai:[0,6,11,12,15,16,17,54,59,65,75,176,207,219,220,221,223,227,230,246,248,252,309,312,317,335,352,356,357,361,377,378,384,386,387,389,390,393,402,405,416,434,446,450,451,458,459,466,468,478,479,480,482,489,492,497,498,500,502,509,511,514,518,524,525],amap:207,amatrix:248,amaz:11,amazingli:13,amber2lmp:0,amber:0,ambient:206,ambigu:[3,65,210,524],amd:[16,393,446],amino:9,amit:9,among:[15,153,217,257],amorph:[178,481],amount:[1,3,6,12,61,96,126,176,180,202,206,217,221,229,230,246,250,254,271,298,304,317,318,326,335,340,343,348,350,358,377,393,413,454,497,500],amplitud:[231,268,327,353,370,500,524],amu:246,amzallag:466,analag:[6,524],analalog:6,analog:[6,117,152,180,199,423],analys:[7,502],analysi:[7,9,13,65,66,77,208,313,314,324,359,446,467,497,507],analyt:[1,3,9,13,130,172,177,321,377,399,427,428,433,446,456,478],analyz:[6,8,9,13,388,446],andersen:[287,293,321],anderson:[302,413],andre:[7,9,13],andrew:13,andzelm:475,ang:[15,298,518],angl:[0,1,2,3,6,7],angle1:316,angle2:316,angle:[3,8,15,21,28,32,36,37,68,387,497],angle_coeff:[2,3,19,20],angle_cosine_shift:26,angle_cosine_shift_exp:[25,187],angle_cutof:425,angle_cutoff:425,angle_hybrid:[28,67],angle_info:459,angle_styl:0,angle_typ:40,angleangl:[3,361,368,497],angleangletors:[3,185,497],anglecoeff:[3,38],angles:207,angletors:[3,185,191,497],angletyp:227,angmom:[2,3,6,65],angmomi:[124,129,203,204,219,337],angmomx:[124,129,203,204,219,337],angmomz:[124,129,203,204,219,337],angstrom:[6,10,61,75,129,130,167,177,178,202,203,204,206,207,215,231,232,246,251,252,268,310,315,352,354,355,357,378,380,384,390,394,395,404,416,439,443,452,457,458,459,482,489,500,506,523,525],angular:[6,28,40,63,65,69,90,91,92,93,116,124,129,152,156,157,170,171,178,203,204,210,254,260,267,268,273,274,275,277,278,279,281,282,283,286,289,290,291,292,296,315,317,321,327,337,394,399,408,423,440,441,443,446,456,476,480,481,497,507,524,525],angularm:282,anharmon:[26,53,187,312,511],ani:[1,3,6,7,8,9,10,11,12,13,15,16,21,28,37,38,39,40,41,42,44,55,56,58,60,61,63,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,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,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,181,182,184,186,197,199,200,202,203,204,205,206,207,210,213,214,215,217,219,220,223,224,225,226,227,228,229,230,231,232,234,235,237,238,242,243,246,249,250,252,254,257,260,267,268,271,276,298,300,302,303,304,306,308,309,310,312,314,315,317,318,320,321,323,327,328,331,334,335,336,337,346,347,352,353,354,356,358,359,360,362,373,376,377,378,380,383,384,386,387,388,390,391,392,393,395,399,403,404,408,409,412,413,416,417,419,422,426,427,428,435,446,448,450,451,456,458,459,460,467,476,477,478,479,480,481,482,483,484,485,490,491,492,494,495,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,515,516,518,519,520,522,523,524,525,527,528,529],anihil:[439,449],anim:[2,4,7,11,13,206,388],animat:[4,206],anion:[419,466],aniso:[3,229,231,271,272,273,274,275,276,277,278,279,304,317],anisotrop:[254,422,460],ann:447,annoi:519,annot:[7,477,480,481,482,485,497],annual:[492,511],anoth:[3,6,7,8,9,11,12,15,16,28,40,65,75,131,205,206,210,211,217,219,222,223,228,231,232,238,247,250,254,255,260,271,272,276,303,317,319,338,339,340,347,357,360,384,386,388,389,392,409,413,418,419,422,425,426,430,431,439,458,460,468,475,478,480,481,482,491,492,495,498,504,512,518,519,524,529],another:[1,6,12,76,95,127,306,317,382,506],ansi:[9,12,15],answer:[3,4,8,12,317,390,391],anthoni:345,antiquewhit:207,antisymmetr:[9,40,396],antisymmetri:418,antonelli:[344,345],antonio:455,any:[1,3,6,12,14,42,61,68,73,176,202,203,206,207,213,214,224,227,231,233,249,252,268,304,320,328,353,355,357,426,458,475,492,494,495,497,498,500,508,511,525],anymor:345,anyon:7,anyparticl:94,anyth:[8,11,178,231,253,477,480,482,508,519],anywai:[181,393,518,527],anywher:[12,178,406,443,467,524],aoff:[387,497],aparam:[95,211,212],apart:[3,179,260,331,389,398,468,497,506],aperiod:299,api:[9,11,12,208,427,495],appar:3,appear:[2,3,6,11,12,13,39,40,41,76,81,95,100,117,119,126,127,152,161,178,179,181,203,204,206,207,219,225,229,232,235,246,251,303,314,346,358,360,361,377,386,387,388,407,416,443,448,450,451,466,478,479,485,493,494,495,497,498,499,502,504,518,524,529],append:[1,2,3,9,11,12,14,15,16,17,18,39,41,57,60,61,63,68,71,73,74,75,84,95,96,98,99,100,102,113,115,117,119,120,121,123,126,128,130,131,152,153,156,157,158,166,167,171,172,176,177,178,180,181,182,202,204,206,207,210,211,212,213],appendix:[28,412,466],appl:[229,271,272,485],appli:[2,3,4,5,6,8,9,12,16,17,28,32,41,50,59,61,63,65,75,76,95,96,115,127,152,153,158,164,166,168,172,177,178,180,184,186,191,198,202,203,204,206,207,210,211,212,213,214,216,219,225,229,230,231,233,236,237,238,240,241,242,244,245,246,247,248,249,251,252,254,255,256,257,261,271,272,276,277,278,279,285,291,292,296,297,298,300,304,307,315,316,317,320,321,323,324,327,331,332,334,336,338,339,340,341,343,345,346,347,350,358,377,380,386,387,388,398,400,402,404,409,412,418,420,423,424,425,426,428,429,431,437,441,446,448,451,453,458,461,462,463,464,465,475,479,483,488,497,498,500,501,502,506,507,509,514,516,518,524,525,527,528],applic:[1,6,9,12,15,16,208,228,232,233,244,246,248,251,298,303,306,316,323,331,343,350,377,393,482,507,518],applicat:216,appling:229,apply:[95,224,229,233,248,254,255,256,321,331,332,333,334],applyt:3,appopri:[9,16],approach:[6,7,15,197,203,216,247,299,300,312,317,342,343,345,347,350,377,399,409,411,414,415,422,426,446,460,462,464,475,486],appropri:[1,2,3,6,8,9,11,12,13,14,16,32,37,42,50,56,57,63,77,96,99,119,126,127,128,129,156,157,158,186,191,198,199,202,203,204,207,219,220,223,228,229,231,244,245,248,257,266,268,269,271,273,274,275,276,277,278,279,291,292,294,296,300,303,304,307,312,317,322,335,338,339,340,343,350,352,353,355,356,357,368,378,388,395,399,403,407,408,409,417,423,426,428,435,439,446,457,458,459,477,478,479,480,481,482,485,486,497,498,499,501,502,510,511,514,524,525],approri:249,approxim:[6,9,130,134,177,246,248,257,300,319,321,342,377,382,384,385,386,401,411,418,420,422,440,441,446,448,451,457,460,466,479,483,488,511,518],april:11,aprpopri:492,apu:[440,441],aqua:[206,207],aquamarin:207,ar_thermal:216,ar_ttm:216,ara:13,arbitrari:[6,40,60,127,203,204,206,208,230,231,249,271,300,304,308,318,477,495,508,524],arbitrarili:[11,61,127,152,202,229,271,409,524],arcco:3,arch:[1,9,12,14,16],architect:375,architectur:[393,446],archiv:[6,7,9,12,337,406,504],archive:[11,12],arcsin:3,area:[6,41,99,123,127,176,225,231,257,343,350,415,423,455,484,494,507],aren:[127,360,459],arflags:12,arg:[3,11,12,21,40,41,44,55,61,65,75,95,119,126,128,166,172,176,178,181,182,186,202,203,204,205,207,210,211,212,213,215,217,219,220,221,222,223,224,225,226,227,230,231,232,237,238,244,246,249,250,251,252,260,263,268,273,274,275,287,293,303,316,317,319,320,324,327,328,330,342,345,352,353,354,355,357,358,362,375,388,393,400,401,402,404,405,406,411,412,414,418,424,426,431,435,439,440,441,442,449,453,461,463,465,476,483,494,495,497,500,502,504,506,508,510,515,516,524,525,528,529],argon:246,argonn:12,args:495,argument:[2,3,6,8,11,12,15,16,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,40,41,42,43,44,45,46,47,48,49,51,53,54,56,61,65,74,77,95,99,117,123,127,152,153,155,160,165,166,167,172,176,178,179,180,182,184,185,186,187,188,189,190,192,193,195,196,199,203,204,207,210,211,212,213,215,218,219,220,221,222,223,224,225,229,230,231,239,241,242,244,245,246,248,249,253,254,260,268,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,302,303,305,309,310,314,317,318,319,320,321,335,347,349,353,355,358,360,361,362,363,364,366,367,368,370,372,375,376,378,379,380,383,388,392,393,394,395,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,413,414,416,417,419,420,421,422,423,424,425,426,427,428,429,431,432,433,434,435,436,437,438,439,440,442,443,444,445,448,449,450,451,452,453,455,456,458,459,460,461,466,467,468,476,477,478,479,480,481,482,483,485,487,488,489,491,492,493,494,495,496,497,498,500,502,505,506,507,508,512,514,515,524,525,528],aris:[12,488],arithmet:[3,6,113,377,404,407,434,448,483,484],arkansa:9,arl:[9,88,89,240,322],armv8:16,army:[88,89,240,322],arnold:377,around:[1,3,4,6,9,12,42,59,60,61,69,74,75,76,77,81,127,129,152,156,173,176,178,180,184,197,202,206,207,214,215,229,231,232,252,268,271,304,306,308,312,317,327,331,335,352,353,356,376,382,387,466,497,500,507,508,518,524],aroung:3,arrai:3,arrang:152,arrheniu:[318,511],arriv:15,art:[9,492,511],artefact:248,articl:[6,466],articul:[7,9,302],artifact:[96,176,518],artifici:[269,307,470,471,473],arun:13,arxiv:[152,205,287,293,382,467],ascend:[41,207,251,260,317,502],asci:7,ascii:[13,204,319,346,388,416,419,443,497],ash:[440,441],asid:[8,393],aside:[178,443],asin:524,ask:[3,11,519],askari:455,askoos:13,asoci:206,aspect:[6,7,61,231,246,422,460,484,497,507,511],aspect_ratio:319,asper:4,aspher:[0,2,3,4],asphere:4,asq:[440,441],assembl:4,assign:[1,2,3,6,7,11,12,14,16,17,32,38,39,40,41,50,58,59,61,63,65,69,75,76,79,86,98,103,114,116,121,124,125,129,130,152,153,158,173,175,177,178,181,191,202,203,204,205,206,207,208,210,211,212,215,219,222,225,227,228,229,232,234,246,251,254,255,256,257,268,271,273,274,275,276,277,278,279,289,291,292,294,295,296,300,303,304,306,308,314,317,319,338,339,340,341,358,368,378,380,383,387,388,392,393,399,416,419,422,425,426,450,451,459,460,489,494,495,497,498,499,500,501,506,507,512,515,524,525],assignemnt:[6,506],assignment:14,assing:306,assingn:478,assist:[7,269],associ:[3,5,6,8,12,21,36,39,40,44,55,61,69,78,79,86,87,95,97,98,103,109,111,113,114,116,129,142,173,186,198,203,204,206,207,211,212,213,217,229,231,237,244,246,247,253,257,268,271,302,312,316,317,318,319,333,335,359,360,362,371,380,386,388,392,393,406,409,413,414,415,416,418,425,426,428,431,435,450,451,462,464,475,476,478,479,495,498,505,517,518,521,524],associd:70,assum:[2,3,4,6,9,11,12,16,17,39,61,70,75,96,106,112,114,155,156,157,158,159,160,161,163,164,165,166,167,168,170,171,176,178,181,207,211,212,217,219,220,222,223,229,231,243,251,253,257,260,273,274,275,277,278,279,281,283,286,289,290,291,292,296,298,299,303,304,305,308,317,320,323,331,343,346,347,352,355,358,365,377,378,387,388,393,399,401,403,406,407,415,418,425,426,430,435,440,441,492,494,495,497,499,502,507,511,514,515,518,519,525],assume:[172,388,484],assumpt:[176,251,394,448],astar:443,astart:468,asterisk:[21,44,63,81,95,127,128,172,182,186,203,207,211,212,218,219,220,222,223,260,317,362,383,406,425,475,491,494,507,515,523],astop:[386,468],asu:416,asub:443,asubrama:13,asum:306,asymmetr:[139,238,355,399,416],asynchron:[14,15],atan2:524,atan:524,atc:[2,7],atc_fe_output:216,athomp:[0,7,9,13],atm2pa:6,atmospher:523,atobodi:129,atol:12,atom1:[302,316,387,497],atom2:[302,316,387,497],atom3:[302,316,387,497],atom4:[316,387,497],atom:[0,1,2,3,4,5],atom_element_map:216,atom_forc:459,atom_info:459,atom_modifi:[2,3,11],atom_styl:[2,3,6,9,12,36,39],atom_vec:8,atom_vec_atom:8,atom_vec_electron:8,atom_veloc:459,atom_weight:216,atomey:[6,7,11,13,203,206,207],atomfil:[3,6,75,306,358,392,507,524],atomic:[0,466],atomic_charg:216,atomic_numb:456,atomid:[129,497],atomist:[6,216,342,446],atomperbin:3,atoms:[203,255,518],atomt:207,atomvec:8,attach:[6,300,323,331,497],attatch:345,attempt:[3,6,41,61,75,202,217,225,226,227,228,232,246,303,304,335,355,377,381,388,426,495,512,515,524],attend:216,attent:[14,17],attogram:523,attrac:443,attract:0,attribut:[3,6,7,8,9,11,39,40,42,60,65,75,95,124,125,126,128,129,156,172,203,204,206,207,210,211,212,218,219,222,228,229,271,273,274,275,276,277,278,279,281,282,291,292,294,296,304,317,319,337,338,339,340,380,387,399,418,426,497,498,499,507,515,524],attribute1:126,attribute2:126,atw:[440,441],atwater:481,atwt:443,atyp:[68,126,172,227,409,431,435,439],atype:172,au1:177,au3:177,augment:[9,12,124,229,306,443],augt1:443,auo:314,auoh:314,author:[3,8,9,13,205,416,417,518],auto:[3,6,8,9,11,12,99,174,210,220,221,323,349,377,387,393,494],autocorrel:[65,99,254],autom:[9,12,206],automag:7,automat:[3,6,9,12,14,15,16,17,18,35,140,199,215,221,246,248,257,317,323,348,377,393,408,416,426,443,446,459,462,463,464,465,489,497,510,518,519,524],auxiliari:[1,6,9,11,12,13,203,299,317,498,502,527],avail:[1,3,5,6,7,8,9,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,63,65,95,123,124,152,155,165,176,184,185,187,188,189,190,192,193,195,196,199,203,206,210,211,213,219,222,223,224,229,230,231,239,245,247,249,250,251,254,271,272,273,274,275,276,277,278,279,280,281,287,289,291,292,293,294,296,309,310,311,317,318,319,320,321,345,355,361,363,364,366,367,370,372,375,378,382,393,394,395,397,400,401,402,403,404,405,407,408,409,412,413,416,417,418,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,441,443,444,448,449,452,453,455,456,458,459,460,461,467,468,477,478,480,481,482,483,485,487,488,489,498,500,506,510,524],availabl:15,avalo:[322,414],ave:12,ave_chunk:6,aveforc:[2,3,6,210,213],avendano:447,averag:[3,6,7,12,14,41,65,66,75,88,89,95,99,100,113,115,127,130,154,158,166,174,177,203,204,207,210,212,216,218,219,220,221,222,223,224,225,229,246,248,250,254,260,271,272,276,299,304,307,313,314,317,318,319,323,361,395,414,418,420,443,451,479,483,498,502,515,518,524],averi:335,avesq:128,avg:12,avi:206,avoid:[1,3,6,12,35,39,61,129,178,179,199,206,215,220,222,223,235,246,248,255,298,300,308,312,317,319,349,356,391,399,418,439,443,449,459,478,479,483,499,505,506,518],avx2:15,avx512:15,avx:15,awai:[3,6,63,127,203,206,219,228,232,249,252,270,298,323,331,346,352,389,409,431,435,502],awar:[393,417,494],awpmd:[2,7],axel:[7,9,13,17,519],axi:[3,6,41,74,75,100,130,142,156,177,178,180,202,206,219,225,246,249,252,268,303,327,331,347,353,366,372,380,382,497,500,507],axial:276,azimuth:[206,249],azur:207,b_k:467,ba2:177,babadi:460,back:[1,6,7,11,12,13,14,16,129,159,160,161,165,166,167,168,170,178,182,203,204,207,208,211,212,230,235,244,251,252,254,255,271,277,278,279,291,292,294,296,306,315,317,338,339,340,344,345,354,355,357,376,377,378,388,423,495,497,498,499,500,501,504,510,511,524,525],backbon:[228,321,370],backcolor:[207,528],backend:16,background:[9,95,96,123,153,207,225,231,254,335,343,347,350,388,407,440,441,443],backtrack:[384,386],backward:[12,208,388,511,524],baczewski:247,bad:[3,12,61,63,252,388,497,502,514],badli:[3,229,271],bal:342,balanc:[1,2,3,4,6,7,12,14,15,17],balasubramanian:295,ball:[152,440,441],ballenegg:377,bammann:216,band:[4,6,7,9,152,210,270,385,388,399,446,466],bandwidth:[1,10,17,40],bandwith:206,bar:[95,206,523],barashev:416,bare:[235,253,255],barost:[235,518],barostat:[0,1,3],barostt:6,barr:408,barrat:312,barrett:70,barrier:[3,4,6,270,372,388,408,421,511],bartel:299,bartok2010:467,bartok2013:467,bartok:[9,152,457,467],bartok_2010:457,bartok_phd:457,bary:523,barycent:330,basal:2,base:[3,4,6,8,9,11,12,13,14,15,19,65,66,75,82,95,99,113,122,130,158,160,177,178,180,203,205,206,207,210,216,225,226,227,231,232,236,246,251,254,258,260,285,293,299,300,303,306,308,310,317,318,319,323,324,335,342,378,393,395,397,399,413,418,422,425,426,427,429,431,440,444,445,453,455,456,466,477,481,482,485,492,494,497,498,499,501,504,507,508,511,512,515,519,523,524,525,529],bash:406,bashford:[6,19,184,404,509],basi:[3,6,12,40,152,158,178,215,254,256,299,335,352,380,429,507,524],basic:[6,7,8,12,16,41,124,153,206,207,216,225,271,272,298,356,394,396,446,491,499,518],basin:[94,388,492,511],bask:[416,443,456],batch:516,bath:[9,307,312],batom1:[73,126,128,203,207],batom2:[73,126,128,203,207],bayli:[6,184,509],bb13:185,bcc:[2,3,4,7,66,74,77,210],bcolor:[3,206,207],bdiam:[3,206,207],be2:177,bead:[5,7,10,13,40,45,46,170,214,228,300,475],beam:232,bear:[6,247],becau:13,becaus:[0,1,3,6,8,12,15,16,17,40,41,42,61,66,75,76,81,100,117,127,140,152,158,163,168,178,179,180,203,204,205,206,207,208,213,219,225,226,227,228,229,231,237,245,246,247,248,253,254,255,256,266,268,271,272,285,287,294,303,307,308,312,317,331,337,342,343,346,347,350,354,355,356,357,358,364,377,384,386,388,389,392,393,404,406,409,411,413,418,419,422,423,424,425,426,430,439,440,441,443,448,450,451,460,475,476,478,483,484,494,495,497,499,500,501,504,506,507,509,511,512,518,519,523,524,525,527,529],beck:[2,3],becker:[394,416],beckman:251,becom:[1,2,3,6,7,8,15,17,39,41,54,59,61,75,180,203,204,206,207,225,226,227,228,231,238,246,248,257,270,271,314,315,338,339,352,353,355,356,357,377,378,384,388,395,407,409,416,418,422,431,448,456,460,477,485,488,497,498,500,507,519,524],been:[1,2,3,6,7,8,9,11,12,13,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,42,43,45,46,47,48,49,51,53,54,56,59,61,62,65,68,73,75,95,123,124,125,126,128,129,131,155,156,157,158,159,160,161,165,166,167,168,170,171,179,180,181,182,184,185,187,188,189,190,192,193,195,196,199,202,203,204,206,207,208,213,215,217,218,219,220,222,223,224,225,228,229,230,231,232,239,245,246,249,251,252,254,255,257,258,259,260,261,266,268,269,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,302,303,304,307,309,310,311,314,315,317,320,321,330,336,338,339,340,347,348,349,352,353,354,355,357,358,361,363,364,366,367,370,372,376,377,378,386,389,393,394,395,397,400,401,402,403,404,405,407,408,409,412,413,415,416,417,418,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,441,444,445,446,449,452,453,455,458,459,460,461,468,475,477,478,480,481,482,483,484,485,487,488,489,490,492,494,495,497,498,499,500,501,503,507,511,514,515,524,525,527,528],befor:[1,2,3,6,8,12,16,21,28,39,40,41,44,57,61,69,75,78,79,86,87,97,98,103,113,114,115,116,125,158,161,166,167,173,178,179,181,182,186,201,202,207,211,212,213,214,215,217,219,222,223,224,225,229,234,235,245,246,251,253,254,255,257,260,268,271,277,278,279,291,292,296,299,306,307,308,311,312,317,319,320,336,338,339,340,346,352,353,354,358,362,383,384,386,388,393,419,420,423,439,443,446,451,476,479,486,492,494,495,498,499,500,501,502,504,505,507,511,514,515,518,519,524,525,527,528,529],began:[5,12],begin:[3,8,12,37,39,56,75,128,131,179,199,202,203,207,211,212,216,218,219,220,222,223,225,231,241,242,266,285,302,315,318,319,332,335,337,340,349,354,357,358,374,376,377,378,379,381,385,387,388,389,392,416,420,446,448,450,451,456,463,465,466,468,475,478,479,489,492,497,504,511,513,515,523,524,527],begun:318,behalf:3,behav:[3,26,187,385,386],behavior:[3,182,199,203,204,206,208,228,229,232,246,247,248,251,254,255,256,271,303,307,312,335,338,339,347,385,399,418,443,489,491,499,503,523,524,527],behaviour:[6,254],behind:[8,253,269,307,335,377],beig:207,belak:7,believ:11,bellott:[6,19,184,404,509],bellow:366,belong:[2,3,40,75,129,132,181,217,219,246,260,317,358,387,462,497],below:[1,2,3,4,5,6,8,9,10,11,12,14,15,16,21,37,39,40,41,42,44,54,56,61,62,65,68,71,73,75,81,84,99,102,123,124,127,128,130,152,153,158,164,166,172,176,177,178,181,182,184,186,198,199,202,203,204,206,207,210,211,213,214,216,218,219,220,221,222,223,224,225,227,228,229,231,232,237,241,242,244,246,249,250,252,254,255,260,268,269,271,276,277,278,279,291,292,296,298,303,306,307,308,315,316,317,318,320,321,328,331,335,336,337,338,339,340,343,344,345,347,350,352,353,358,360,362,375,377,380,382,383,384,386,387,388,390,393,394,395,396,399,400,401,404,405,406,407,409,412,416,418,419,420,422,423,424,425,426,429,431,432,433,434,435,436,437,438,439,440,441,442,443,447,448,450,451,455,458,459,460,461,467,468,475,476,478,479,484,485,487,488,489,490,491,492,495,497,498,499,500,502,504,505,507,509,510,511,513,514,515,517,518,519,524,525,529],bench:[1,6,9,10,11,12],benchmark:[1,7,10,11,12,13,14,15,16,17,41,225,377,510],beneath:232,benedict:446,benefici:[63,390],benefit:[1,15,247,483,506],bennet:95,beowulf:7,berardi:[422,460],beraun:347,berendsen:[2,3,6,7,159,160,161,165,166,167,168,170,210,217,246,248,271,276],berensen:317,berger:9,berkelei:176,berkowitz:377,berlin:[7,9,323],bern:[3,300,308,309,408,422,466,476,506],bernendsen:6,beryllium:418,besid:[8,320,500],best:[1,6,8,14,15,16,17,18,271,294,295,316,317,393,399,409,431,435,448,478,479,498,506,511],beta:[6,307,394,397,416,417,419,443,480,481,482,515,524],beta_:399,beta_k:467,beta_pi:399,beta_sigma:399,beta_t:481,better:[3,6,7,8,12,15,26,152,187,212,225,246,257,271,285,289,308,315,317,335,378,388,393,480,519],betwe:398,between:[1,2,3,4,5],beutler:439,bewteen:[119,220,335,343,350,426,429,494],beyon:506,beyond:[3,5,6,12,16,63,75,95,176,203,207,222,246,271,377,390,421,437,448,511,515,524],bflag1:[42,206],bflag2:[42,206],bgq:[16,446],bi3:177,bi5:177,bia:[3,6,8,123,153,156,157,158,159,160,161,165,166,167,168,170,171,210,219,230,231,246,254,255,271,277,278,279,291,292,293,294,296,312,338,339,340,342,525],bias:[6,9,230,525],biaxial:156,biersack:[443,476,482,489],big:[3,4,12,203,307,312,335,389,407,519],bigbig:[3,12],bigger:3,bigint:[3,244],bilay:[4,10,331],bilayer1:331,bilayer2:331,bill:7,billion:[3,7,10,12,39,246,505],bin2d:75,bin3d:75,bin:[3,6,11,12,39,65,69,75,79,86,98,103,114,116,125,127,158,166,173,175,203,207,219,222,299,307,312,332,335,343,350,389,390,393,415,454,498,528],binari:[3,6,7,9,12,13,15,32,36,50,55,191,198,203,204,205,206,207,208,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,238,239,243,244,245,246,247,248,249,250,251,252,254,255,256,257,258,259,260,261,262,263,264,265,267,268,269,270,271,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,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,319,320,321,323,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,349,350,351,352,353,354,355,356,357,368,371,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,412,413,415,416,417,418,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,455,456,457,458,459,460,461,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,484,485,487,488,489,490,498,499,504,527,529],binary2txt:0,binchunk:219,bind:[9,16,17,205,399,466],binsiz:[15,39,207,389,393],binstyl:166,bio:[40,389],biolog:[6,7],biologi:190,biomolecul:[302,317,377,378,404],biomolecular:506,biophi:[287,293,382],biophys:251,bios:15,biosym:13,bird:415,bisect:[41,225,484],bisector:[6,409,431,435],bispectrum:[65,152,467],bisqu:207,bit:[3,11,12,16,39,244,255,448,478,479,483,505,518,519],bitmap:[3,478,479,486],bitrat:[206,207],bitzek:385,bkgd_dyn:443,bks:[307,312],black:207,blais:[9,13],blanchedalmond:207,blank:[2,3,12,37,56,118,199,206,241,242,302,317,318,387,388,399,417,420,443,450,451,452,467,477,478,479,480,481,482,485,494,495,497,524],blas:12,blast:347,blend:443,block:[2,3,6,99,152,178,180,181,303,356,380,382,393,399,418,456,467,500,511,518,519],blocksiz:393,blow:[3,285,352,356,468],blown:3,blue:[2,206,207,228],bluegen:[203,377,446],blueviolet:207,bni:75,board:[378,412],bodi:[0,2,3,4,5],body_nparticl:8,bodyflag:497,bodyforc:257,bodyforcei:257,bodyforcex:257,bodyforcez:257,bodystyl:[260,317],boff:[387,497],bogaert:342,bogu:[3,161,229],bogusz:96,bohr:[416,418,446,482,523],boltzmann:[6,7,9,95,99,123,155,158,159,160,161,164,165,166,167,168,170,219,228,242,254,257,258,259,260,261,276,351,413,512,523],bond:[0,1,2,3,6,7],bond_coeff:[2,3,6,43],bond_graph_cutoff:459,bond_harmon:[8,48,49],bond_harmonic_shift:49,bond_info:459,bond_interact:216,bond_styl:0,bond_typ:182,bond_writ:2,bondangl:[3,20,32,497],bondbond13:[3,185,497],bondbond:[3,20,32,497],bondchk:459,bondcoeff:[3,58],bonds:207,bondtyp:[226,227,387],bonet:[322,414],bonu:[3,527],book:[488,519],bookkeep:448,bookmark:0,boost:[1,3,12,66,389],bop:[2,3,9,314,383],border:[3,7,15,63,347,525],boresch:95,boreschkarplu:95,born:[2,3,6,7,9,95,172,211,212],boron:418,borrow:323,bose:312,botero:[7,9,13,418],both:[1,3,4,6,7,8,9,11,12,14,15,16,26,36,39,40,54,55,59,61,63,64,65,71,73,75,91,95,96,119,124,126,127,140,154,156,157,158,163,166,168,171,176,178,180,181,182,187,198,199,203,206,209,210,211,212,217,219,220,222,223,226,227,228,229,230,231,236,238,246,248,250,252,254,255,257,258,267,268,271,272,277,278,279,285,291,292,296,302,303,306,307,314,317,321,323,331,335,339,343,344,345,347,350,352,353,355,356,357,360,361,371,378,383,386,387,388,389,391,393,395,399,400,401,402,403,404,405,407,412,413,416,417,418,422,423,425,426,427,431,433,435,436,437,439,440,441,446,447,448,449,453,458,460,461,477,480,481,482,485,492,494,495,497,498,499,500,504,509,514,515,518,524,527,528,529],bottleneck:[1,3,495,516],bottom:[8,9,161,176,207,231,245,257,294,343,350,380,509],bottomwal:224,bounc:[3,335],bound:[3,6,16,25,26,41,42,59,61,75,167,180,187,202,203,204,207,222,225,231,232,236,246,255,271,303,335,352,353,354,355,356,357,377,386,418,497,500,511,518,524,525],boundar:3,boundari:[2,3,5,6],boundary_dynam:216,boundary_faceset:216,boundary_integr:216,bounds:[6,41,203,225],bount:11,bourgogn:9,box:[0,1,2,3,4],boxcolor:[206,207],boxxlo:11,bpclermont:[9,13],bptype:475,br1:177,bracket:[2,3,6,41,65,75,128,131,203,210,218,219,220,222,223,225,349,515,524],bragg:[130,177],branch:[11,519],branicio2009:485,branicio:[77,485],breakabl:[7,44,55],breakag:[82,226],breakdown:[1,12,14,96,118,395,458,459,492,511],brennan:[9,88,89,240,322,414,450,451,475],brenner:[395,476],brick:[3,41,63,64,166,180,225,497,499,501,524],bridg:382,brief:[1,5,6,7,8,12,253,271,395,399,459,511],briefli:[6,10,300,408,466,519],brilliantov:423,bristol:[5,7],brittl:455,broader:495,broadli:8,broadwel:15,broken:[2,54,68,73,74,82,113,118,126,182,226,271,399,499,509,516,527],brook:6,brought:202,brown:[7,9,13,14,15,130,153,207],brownian:[2,3,6,7,9,115,254,256,287,317,351],brownw:7,brows:0,browser:[4,206],bryantsev:425,bsd:12,bstyle:[40,42],btype:[57,73,126,179,203,409,431,435,439,475],buc:402,buck:[2,3,6,9,15,95,211,212,348,378,400],buckingham:[7,9,211,212,308,378,400,402,403,411,442,476],buckplusattr:466,buffer:[3,8,204,206,207,514],bufi:206,bug:0,bui:206,build:[0,1,2,3,6,7,8,9,10],builder:[7,13],built:[1,2,3,4,6,8,9,11,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,40,43,45,46,47,48,49,50,51,53,54,55,56,66,70,82,85,88,89,91,94,95,106,107,108,109,110,111,115,122,123,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,154,155,156,157,162,164,165,169,170,172,176,177,184,185,187,188,189,190,191,192,193,195,196,197,198,199,203,204,205,208,210,213,214,215,217,221,224,226,227,228,230,231,232,237,238,239,240,241,242,243,245,246,247,248,249,251,253,254,256,257,258,259,260,261,263,264,265,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,286,287,289,290,291,292,293,294,295,296,298,299,300,302,303,306,307,308,309,310,311,312,313,314,317,318,320,321,322,323,324,325,326,327,328,330,335,341,342,343,344,345,347,348,350,353,354,355,359,360,361,363,364,365,366,367,368,370,371,372,378,388,389,390,393,394,395,397,398,399,400,401,402,403,404,405,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,449,450,451,452,453,454,455,456,457,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,487,488,489,492,495,498,500,506,510,511,512],bulatov:[444,445],bulk:[4,6,74,257,298,304,410,443,446,448,455,462,464,466,501],bullet:7,bump:254,bunch:8,bundl:[9,206,208,519],burlywood:207,bussi1:339,bussi2:339,bussi:[248,339],button:519,buyl:[9,205],bybe:9,bypass:6,c11:[220,443],c12:220,c13:220,c1n:220,c21:220,c22:220,c23:220,c2n:220,c31:220,c32:220,c33:220,c34:220,c3n:220,c41:220,c42:220,c43:220,c44:220,c_0:[347,395,473,474],c_1:[68,71,73,84,102,119,128,129,130,177,203,207,247,306,319,358],c_2:[68,73,84,102,119,128,130,174,176,177,203,319,349,358],c_3:[128,319],c_6:176,c_cluster:6,c_cstherm:6,c_dist:128,c_doubl:11,c_e:347,c_flux:99,c_foo:524,c_forc:128,c_gauss:421,c_hb:425,c_i:242,c_id:[6,65,75,95,128,131,203,204,218,219,220,221,222,223,319,337,349,515,524],c_ij:6,c_ijkl:6,c_index:128,c_k:247,c_ke:343,c_msdmol:131,c_my_stress:218,c_myang:219,c_mycentro:219,c_mychunk1:125,c_mychunk2:125,c_mychunk:[6,69,79,86,98,103,114,116,158,173,175],c_mycom:222,c_mycomput:219,c_myd:204,c_myf:[203,528],c_mypress:220,c_myrdf:[127,223],c_mytemp:[8,220,221,222,223,349,515,524],c_n_k:247,c_p:153,c_pe:121,c_peratom:[121,153],c_pi:399,c_press:128,c_prop:6,c_radiu:176,c_reax:[458,459],c_saed:319,c_sigma:399,c_size:6,c_stress:203,c_tdrude:[235,255,518],c_thermo_press:[8,220,221,222,223],c_thermo_temp:223,c_xrd:222,ca2:177,cach:[15,16,39,448,510],cacul:321,cadetblu:207,cai:518,calcal:9,calcforc:257,calclat:99,calcluat:[115,121,123,153,409],calcualt:[99,219],calcul:[0,1,3,4],caldwel:[6,184,509],calhoun:300,call:[1,3,6,7,8,11],callabl:[3,11],callback:[3,8,11,154,210,244,495],caller:3,calori:523,caltech:[6,7,9,13,418],calucl:6,calul:[11,12,74,158,378],cambridg:[9,457],campana:299,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,34,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,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,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,200,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,236,237,238,239,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,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,327,328,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,370,371,372,373,374,375,376,377,378,380,381,383,384,386,387,388,389,390,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,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,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,504,505,506,507,508,509,510,511,512,513,514,515,516,518,519,523,524,525,526,527,528,529],cancel:[210,317,525],candid:[182,217,246],cannot:[1,2,3,6,9,11,12,13,14,15,16,38,39,40,41,54,58,59,60,61,71,75,90,92,96,128,131,154,156,158,179,181,182,200,203,204,205,206,207,218,219,220,222,223,225,228,229,231,232,246,247,248,254,255,256,260,268,271,273,275,277,279,281,282,283,289,291,296,303,304,307,312,314,317,319,320,324,335,343,347,349,350,352,353,356,357,358,360,373,377,380,386,388,391,392,393,402,403,405,416,422,424,431,435,437,439,448,453,458,460,461,462,464,475,476,478,479,492,494,495,497,498,500,501,503,506,507,509,511,514,523,524],canon:[9,210,217,246,248,271,272,291,292,293,294,295,296,300,339,342,345,446,455],cao1:300,cao2:300,cao:300,capabl:[5,7,9,11,15,16,17,354,360,378,393,395,405],capac:[9,40,111,164,240,312,347,470,497,507],capit:[234,497],capolungo:[130,177,319],captur:[6,348,395,403,418,423,435,443,518],carbid:409,carbon:[7,206,370,395,408,428,443],card:[12,15,21,44,81,95,127,186,211,212,317,362,383,406,425,491,499,504,527,529],care:[3,6,61,75,178,181,197,202,219,226,227,232,248,253,257,271,303,317,342,398,495,497,500,501,506,507],carefulli:[11,12,54,314,358,426,428,502],carlo:[4,6,7,9,210,217,228,246,317,342,415,476],caro:[217,416],carpent:[7,13],carri:[15,264,306,347,423,459],carrillo:15,cart:[3,494],carter:[9,16],cartesian:[3,6,64,394,494],carv:181,cascad:[236,347],cash:7,cast:[248,524],cat:[14,15,206],catastroph:308,cate:257,categori:0,cation:[419,466],cauchi:[145,150],caus:[1,2,3,6,8,12,15,16,178,180,181,182,203,207,215,229,236,246,271,285,298,303,315,317,318,321,352,354,355,356,357,360,376,378,386,388,392,425,431,437,440,441,448,491,495,496,497,498,502,504,505,524,529],caution:[1,378],cautiou:[226,227],cautious:395,caveat:[395,506],cbecker:[394,416],cc1:[6,69,79,86,98,103,114,116,125,158,173,175,219],ccc:[417,477,480,482,485],ccflag:15,ccflags:[9,15,16,17,18,203],ccm6:416,ccsi:[417,477,480,482,485],ccu:399,cd2:177,cdeam:416,cdennist:9,cdll:11,cdof:[6,158,219],cdte:399,cdte_bop:399,cdtese:399,cdzn:399,cdznte:399,ce3:177,ce4:177,ceas:385,ceil:524,cell:[3,6,61,96,127,130,176,177,178,203,215,229,230,246,251,269,271,272,276,299,307,310,322,347,377,378,380,415,418,446,515],cella:[6,515],cellalpha:[6,515],cellb:[6,515],cellbeta:[6,515],cellc:[6,515],cellgamma:[6,515],center:[3,6,24,42,65,69,75,78,79,86,94,97,98,108,113,114,115,125,127,129,130,158,159,160,163,166,170,173,175,178,206,207,210,211,212,214,219,222,229,231,232,233,235,246,247,252,254,255,260,267,271,277,278,279,291,292,294,296,303,308,314,315,317,319,323,331,332,333,335,337,338,339,340,342,343,345,352,356,361,380,382,387,398,417,418,422,423,429,440,441,443,444,445,458,459,477,480,481,482,484,485,500,507,518,524],centimet:523,centr:238,central:[3,63,74,80,81,100,117,127,134,152,176,260,298,321,333,365,387,446,452,458,459,485,497],centro:[2,3,5,6,7,8,65,66,70],centroid:[3,300,484,507],centrosymmetri:74,cerda:377,ceriotti2:248,ceriotti:[13,248,253],certain:[1,2,3,6,8,12,16,39,75,124,128,131,182,203,204,206,218,219,220,222,223,228,244,245,317,320,336,349,360,368,376,389,426,448,459,483,499,503,518,524],certainli:252,cerutti:378,cfg:[3,6,7,9,13,203,205,206,207,208],cfile:459,cfl:[140,324],cfor:323,cg_type:461,ch2:321,ch2lmp:[0,6],ch3:321,ch5md:205,chain3:389,chain:[0,3,4,6,9,10],challeng:[6,323],chalopin:312,champaign:[251,377,378,440],chan:446,chandler:[394,416],chandrasekhar:[6,431],chang:[1,2,3,6,8,9,11,12,14,15,16,39,40,41,46,55,59,61,64,75,85,95,113,127,138,140,160,161,162,178,179,180,182,199,202,203,204,205,206,207,208,210,211,212,213,214,216,217,224,225,226,227,228,229,230,231,232,236,237,243,245,246,248,250,251,252,254,256,257,258,260,267,268,269,271,272,273,274,275,276,277,278,279,285,287,289,291,292,294,295,296,298,299,303,304,306,307,308,311,314,315,316,317,318,320,321,323,335,338,339,340,341,343,344,345,346,347,348,350,353,356,358,378,384,386,388,391,393,413,418,423,426,440,441,443,446,448,458,459,466,475,476,492,493,494,495,497,498,499,500,501,502,503,505,506,507,508,509,512,515,519,520,522,523,524,525,527],change_box:[2,3,6,59],changeabl:203,channel:[4,213],chapter:[300,378],charact:[2,3,6,12,37,41,56,65,199,203,204,206,207,208,210,225,241,242,306,314,318,360,387,392,418,420,430,450,451,456,458,459,466,478,479,494,495,499,504,505,524,527,528,529],character:[6,70,74,117,127,152,467,492,511],characterist:[255,335,344],charg:[1,3,4,5,6,7,9,11,14,40,86,95,96,124,130,177,178,203,204,208,210,211,212,217,232,237,246,306,308,309,310,314,337,350,377,378,387,400,402,408,409,411,412,416,418,419,426,431,435,439,453,458,459,466,476,482,483,485,486,488,489,497,498,502,507,509,518,523,524],charmm2lammp:13,charmm:[0,2,3,5],chartreus:207,cheap:335,cheaper:[236,422,460],check:[3,6,8,9,11,12,14,16,38,39,41,58,75,99,199,200,217,225,226,227,232,243,246,252,253,303,316,321,335,343,345,350,358,360,373,376,386,387,388,389,390,393,415,427,430,448,459,490,492,494,495,497,505,511,514,515,516,524],checkf:199,checkout:519,checkqeq:459,checku:199,chem:[6,13,19,20,24,39,40,43,45,46,95,96,117,123,153,184,185,195,221,230,235,238,247,248,255,257,270,271,272,289,294,295,300,304,307,309,317,322,323,335,338,339,342,343,344,345,352,361,370,372,377,378,385,388,395,400,404,405,408,409,410,412,413,414,418,421,422,424,425,431,435,436,439,443,447,448,450,451,453,466,475,483,506,509,511,518],chemic:[9,40,88,89,130,172,177,203,204,216,217,246,308,313,314,342,378,420,451,458,459,471,479],chemistri:[307,308,310,395,399,418,458,459],chen:347,cheng:408,chenoweth:[458,459],chenoweth_2008:[458,459],chi:[102,167,202,298,308,310,373,419,422,525],chiefli:457,child:8,chip:[7,9,16,17,393,510],chipot:230,chiral:370,chmod:[11,12],cho:443,chocol:[7,207],choic:[3,6,9,12,14,15,17,40,41,54,74,95,153,156,157,171,182,197,199,219,225,228,231,232,248,254,257,269,271,300,304,308,317,342,353,371,378,384,385,388,390,393,426,439,448,454,459,497,506,507,510,511,517,518,523],choos:[1,3,6,7,8,9,12,16,17,28,39,54,95,128,168,169,206,226,227,228,229,232,243,254,257,269,271,273,274,275,276,277,278,279,303,304,322,335,339,353,377,378,385,486,492,494,506,512],chose:[480,482],chosen:[2,3,6,12,16,152,178,181,190,199,206,212,217,229,232,243,246,247,255,257,269,271,276,300,303,314,335,339,342,343,348,350,351,357,378,379,385,393,414,418,423,430,433,461,480,492,506,511,512,518],chri:176,christian:[7,9,16],christoph:7,chunk:[0,2,3],chunkid:[69,79,86,98,103,114,116,125,158,173,175,219,332],chute:[4,9,10,249],ciccotti:321,cieplak:[6,184,509],cii:220,cij:220,circl:[42,75,330],circular:[3,6,156,201],circumst:17,circumv:[100,117,312],citat:0,cite:[3,7,8,12,254,466],civ:9,cl1:177,clarendon:[28,412],clarifi:[7,480,482],clariti:360,clark:453,class2:[2,3],classic:[0,3,5,6,7,8,9,15,244,300,307,312,347,372,418],classifi:[476,485],claus:495,clean:[6,12,14,16,505],cleanli:[496,515,528],clear:[2,3,6,8,11],clearli:7,clebsch:152,clermont:[9,13],clever:501,click:[2,11,21,36,44,55,178,186,198,206,251,362,371,388,406,476,519],client:[251,253],climb:[270,388,511],clinic:[7,13],clo:[167,202,525],clock:[12,492,511,516],clockwis:[184,353],clone:519,close:[3,6,11,12,13,39,41,70,75,153,181,203,227,228,229,248,255,257,271,287,294,317,321,353,356,376,378,381,384,385,388,393,395,399,409,410,429,443,448,450,451,458,462,464,478,482,501,507,518,519,521],closer:[3,10,41,127,176,202,203,225,229,233,344,388],closest:[227,298,317,350,422,460,475,486],cloud:[466,518],clovertown:17,clsuter:76,clump1:[302,317],clump2:[302,317],clump3:[302,317],clump:317,cluster:[2,3,6,7,12,15,63,65,75],clutter:3,cmap:497,cmatrix:248,cmax:443,cmd:[11,12,300,508],cmdarg:11,cmin:443,cmm:7,cmoput:145,cn1:220,cn2:220,cna:[2,3,7,65,74],cnn:220,cnr:13,cnrs:9,cnt:[426,501],co2:[40,177,318,321,387,420],coars:[7,9,10,28,35,40,54,190,242,302,317,318,335,420,424,451,461,479,506,509],coarser:[378,524],coarsest:152,code:[0,1,3,5],coeff:[3,7,8,12,20,21,32,44,50,184,185,186,191,197,361,362,368,406,426,430,448,463,465,468,497,526],coeffcient:497,coeffici:[0,2,3,4],coefficienct:413,coefficient0:416,coefficient1:416,coeffieci:[6,397,429],coeffincientn:416,coexist:[246,418],cohes:[6,419,443],coincid:[134,356,404,440,441,492],colberg:205,cold:[6,163,246,250,389,518],coldest:343,coleman8:9,coleman:[9,130,177,319],colin:9,collabor:[7,8,14],collect:[3,6,7,8,9,13,40,42,69,79,86,91,98,103,108,114,116,125,158,166,173,175,178,203,204,207,219,230,260,267,302,312,315,317,358,377,387,389,407,497,504,510,516,529],collid:[236,335,357],colliex:177,collinear:[3,302],collis:[3,257,335,353,357,415,423,489],colllis:335,colloid:[2,3,4,6,7],colombo:39,colon:[208,358,498,516],color1:207,color2:207,color:[3,9,41,203,206,207,225,247,307,312],column:[3,6,9,12,13,42,65,68,69,70,71,73,74,75,79,81,84,86,87,89,98,100,102,103,114,116,117,119,121,124,125,126,127,128,129,131,152,153,158,166,173,175,176,177,199,203,204,207,210,218,219,220,222,223,260,268,269,307,317,336,337,347,357,395,421,425,458,459,498,512,514,515,524],columnar:176,colvar:[0,2,9,12],colvarmodul:12,com:[2,3,6,7,9,13,14,42,65,75],comamnd:231,comand:228,comannd:393,comb3:[2,3],comb:[2,3,4,7,9,210,308],comb_1:309,comb_2:309,combiant:410,combin:[3,6,7,9,11,13,35,40,65,68,73,84,95,102,113,119,126,156,157,171,197,203,206,216,222,238,246,251,260,263,271,287,293,300,306,322,339,348,356,359,361,377,378,380,385,393,407,409,410,414,418,419,420,426,438,439,467,477,480,482,483,485,488,500,505,510,518,524,526],come:[0,2,3],comfort:[12,13],comid:332,comit:519,comm:[0,3,11,12,63,77,205,251,253,254,378,388,393,413,448,455,478,479,499],comm_modifi:[2,3,6,39],comm_modift:63,comm_styl:[2,3,41,63],comm_world:11,command:[0,1],comment:[2,4,7,11,12,37,56,184,199,203,241,242,255,317,318,347,387,388,394,416,417,419,420,430,443,450,451,452,459,466,467,477,478,479,480,481,482,485,494,495,497,518,519,524],commerci:7,commit:[9,519],commmand:[3,6,12,61,118,295,429,491,492,494,511,528],common:[0,1],commonli:[3,6,9,12,16,24,59,61,115,117,180,203,206,208,372,424,433,467,480,482,497,500,509],commun:[1,3,6,7,8,9,10,11,12,14,15,17,40,41,60,63,64,75,176,181,182,206,207,225,226,227,229,230,231,251,253,257,259,260,261,271,299,306,308,309,310,317,322,335,347,358,375,377,389,390,391,393,414,415,454,490,494,495,506,507,524,527,529],communc:377,comp:[7,205,253,254,287,293,321,378,388,418,448,455,460,474,478,479,481],compact:[65,210,406,476],compani:[5,7],compar:[1,3,4,6,8,12,15,16,39,94,121,130,161,177,186,198,207,235,308,358,360,377,378,386,388,443,466,492,511,512,518,523],comparison:0,compart:382,compass:[7,9,20,21,36,43,44,55,185,186,198,361,362,371,405,476],compat:[3,5,7,8,9,11,12,13,16,17,41,75,128,131,189,203,208,212,218,219,220,222,223,225,238,299,311,339,342,349,352,355,377,393,427,446,448,478,494,495,524],compens:[6,226,227,315,389,418],compet:346,competit:378,compil:[3,7,8,9,12,13,14,15,16,17,18,176,203,205,206,208,251,346,378,393,446,497,498,502,518,524],compl:16,complain:[11,12,16],complement:443,complementari:[7,409,431],complet:[3,6,9,11,12,14,41,61,75,207,225,230,260,300,303,306,335,346,348,359,360,376,388,393,419,463,465,484,492,497,502,505,509,511,514,518,524],complex:[4,6,8,11,12,13,24,40,42,64,100,117,152,154,166,178,179,257,287,330,356,375,388,418,446,478,479,495,497,500,524],compli:[342,346],complic:[6,7,9,12,13,129,217,246,495],complier:12,compon:[3,6,8,12,63,65,69,70,74,77,86,87,96,97,98,99,100,103,104,107,112,114,115,116,117,118,119,120,121,123,124,128,129,139,142,143,144,145,148,149,150,152,153,155,156,157,158,159,160,161,162,163,164,165,166,167,168,170,171,173,174,175,202,203,204,206,207,213,214,218,219,220,221,222,223,224,228,229,231,232,237,238,244,249,253,254,257,260,262,263,267,268,270,271,272,276,277,278,279,291,292,294,296,297,299,300,301,304,315,317,320,321,323,327,328,331,335,338,339,340,342,349,350,355,356,357,377,380,385,386,387,388,393,413,418,423,440,441,463,465,466,467,497,498,507,515,524,525],componenet:6,componennt:129,composit:[6,217,257,416],compound:[408,418,419,485],compres:[75,125,219],compress:[3,6],compris:[40,356,420,460,484],compton:[130,177],comptu:3,compuat:378,comput:[0,1],computation:[3,6,226,227,347,399],computational:518,compute_arrai:8,compute_inn:8,compute_ke_atom:8,compute_loc:8,compute_modifi:[2,3,65],compute_peratom:8,compute_sa:[130,319],compute_scalar:8,compute_temp:8,compute_vector:8,compute_xrd:177,concaten:[2,3,528],concav:356,concentr:[75,242,318,416,420,451,479],concept:[6,158,168,219,506],conceptu:[3,6,75,166,229,231,388,409,426,443,502],concern:[6,77,95,205,247],concetr:75,concis:[11,346],conclud:12,concret:8,concurr:[15,378,524],conden:[347,480,482],condens:[6,160,347,395,411,416,431,485],condit:[2,3,5,6],conducit:6,conduct:[0,2,3,4],cone:500,confer:[15,446],confid:[3,511],config:[12,203,494],configfil:230,configur:[1,2,6,12,14,15,16,37,61,134,180,199,202,203,206,210,229,230,231,232,236,246,253,254,285,300,308,346,375,386,388,395,399,417,443,446,477,480,482,485,492,497,499,500,511,515,519],confin:[497,511],confirm:516,conflict:[3,12,40,204,448,495,519],conform:[3,6,13,61,228,229,270,316,323,346,370,388,418,509],confus:[3,485],conjuct:[9,413],conjug:[7,8,254,385,418,458,459],conjunct:[6,7,75,94,95,125,161,166,172,178,182,207,211,212,254,257,261,285,303,304,308,309,310,312,317,322,335,343,350,355,377,378,388,400,402,406,409,413,418,425,431,448,453,461,483,497,500,504,518,529],connect:[3,6,9,95,163,181,228,251,302,317,321,331,382,388,410,423,458,459,475,482,494,495,497,501,518],conner:395,connor:395,conput:3,consecut:[3,11,12,39,75,178,207,211,212,232,251,252,409,431,435,492,498,500],consequ:[1,6,217,347,430,511],conserv:[3,9,28,210,217,228,235,236,247,250,254,256,257,261,267,269,271,285,287,289,317,318,321,322,338,339,343,350,351,355,388,412,413,414,423,437,466,506,511],consid:[6,74,75,82,95,126,129,160,163,164,181,203,204,207,211,212,218,220,225,227,228,232,258,272,299,317,342,343,346,347,350,378,406,418,426,459,460,466,475,492,493,495,498,499,500,502,505,507,515,518,524],consider:[6,8,254,255,338,339,340,393,459,506],consist:[3,6,8,9,11,12,40,42,68,73,84,102,114,119,122,123,126,129,158,161,163,178,190,202,208,213,214,219,231,232,235,237,244,247,254,255,256,268,271,273,274,275,276,277,278,279,280,281,283,284,285,286,289,290,291,292,294,295,296,304,307,312,314,315,316,317,318,338,339,340,341,351,377,378,380,382,387,388,393,395,399,401,407,409,418,422,426,429,440,441,443,446,448,450,451,460,463,465,466,478,479,486,495,497,498,499,500,501,502,509,518,524],consistent_fe_initi:216,consit:317,constant:[0,3,4],constantli:238,constitu:[3,6,260,317,352,356,407,460],constitut:[463,465],constrain:[3,6,8,9,155,156,157,158,159,161,164,165,166,167,168,170,171,210,219,232,238,246,247,252,260,263,265,287,293,302,303,315,317,321,333,343,350,386,387,418,502,509,518],constraint:[3,5],construct:[6,8,12,37,54,56,63,66,70,74,76,77,81,100,117,130,152,177,229,271,299,316,318,356,389,393,412,446,448,475,477,478,479,500,501,516,524],constructor:[8,11],consult:[15,459],consum:[1,312,454,524],consumpt:375,contact:[0,2,3,4,5,8,9,12,13,40,42,65],contact_stiff:[462,464],contain:[0,1,2,3,4,6,8,9,11,12,13,16,17,18,37,40,41,56,65,95,99,127,130,152,154,158,166,176,177,178,180,184,186,198,199,203,204,206,207,208,210,211,212,216,218,219,220,222,223,225,230,232,237,241,242,248,252,253,254,257,269,285,298,299,302,303,305,306,307,310,314,317,318,319,324,335,342,346,347,356,357,360,376,378,387,388,391,392,394,395,396,399,408,409,412,416,417,418,420,426,427,443,446,450,451,452,456,457,458,459,467,477,478,479,480,481,482,483,485,492,493,494,495,497,498,499,500,502,504,506,509,511,512,514,515,518,519,524,527,529],content:[4,8,9,12,17,459,513,515],context:[3,6,8,12,15,16,127,128,207,226,227,232,302,314,351,385,488,497,504,513,523,524,525],contibut:74,contigu:494,contin:15,continu:[0,2,3,5,6,9,12,13,41,75,87,113,114,174,207,210,211,212,217,219,220,221,222,223,225,228,229,230,231,232,238,246,247,248,250,251,252,254,255,256,262,268,269,271,273,274,275,276,277,278,279,291,292,294,295,296,301,303,306,307,317,319,323,334,335,337,344,345,347,353,356,360,376,392,393,399,413,415,433,436,458,459,460,463,465,481,492,495,497,499,500,505,511,512,514,515,524,527],continuum:[6,7,9,216,347,463,465],contour_integr:216,contract:[61,229,231,271,304,317],contradictori:3,contrain:321,contraint:285,contrari:[248,255],contrast:[1,6,42,55,66,160,163,204,231,358,463,465,488,528],contrib:347,contribut:[3,4,5,6,7,8,9,12,13,16,65,67,69,71,72,74,75,78,79,81,83,85,86,92,95,96,97,98,99,101,103,112,114,116,118,119,120,121,123,125,128,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,212,217,218,219,220,222,223,229,246,254,257,260,261,266,272,294,295,302,303,311,314,317,319,321,349,377,386,388,396,413,415,416,418,426,440,441,446,448,458,459,466,509,515,518,519],contributor:12,control:[3,5,6,7,8,9,11,13,15,26,28,41,95,99,134,152,187,203,204,206,210,216,217,225,229,230,231,250,251,254,255,271,273,274,275,276,277,278,279,304,309,317,318,325,326,338,339,340,347,351,375,377,390,418,422,446,458,459,462,464,477,482,492,494,506,512,513],control_typ:216,controlfil:459,convect:99,conveni:[6,12,28,203,208,223,319,380,467,483,516,519,524],convent:[3,8,28,189,196,198,204,207,316,331,359,416,418,524],converg:[3,6,41,96,203,204,206,208,213,225,228,229,237,244,276,287,293,307,309,312,316,321,384,385,386,388,408,409,431,466,492,504,511,516],convers:[3,8,152,206,207,217,220,304,377,409,410,411,418,431,435,439,453,495,511,523],convert:[2,3,4,5,6,7,8,12,13,19,20,23,27,31,34,35,61,65,75,99,178,185,203,206,207,220,223,269,303,306,358,361,363,367,370,380,388,394,416,446,480,482,489,495,497,498,499,504,514,518,523,524,527,529],convex:[42,356],convinc:[7,12],cook:9,cooki:7,cool:[7,168,238,250,315],cooordin:[203,204],cooper:[5,7],coord123:125,coord1:[3,125,219],coord2:[3,125,219],coord3:[3,125,219],coord:[2,3,6,7,11,61,65,75,76,80],coordb:466,coordbb:466,coordiat:386,coordin:[1,3,4,6,7,8,11,13,14,16,40,41,42,61,63,64,65,69,71,75,78,79,81,86,87,95,97,98,103,113,114,116,124,125,127,129,146,152,161,167,173,175,176,178,182,202,203,204,205,206,207,208,210,213,218,219,222,225,226,227,228,229,230,231,232,235,237,238,239,244,246,249,250,251,252,253,254,255,268,270,271,273,274,275,277,278,279,294,297,298,299,302,303,304,314,315,317,320,321,323,328,331,332,333,334,335,337,345,346,347,354,355,357,358,380,386,387,388,393,394,395,398,417,466,492,497,498,499,500,502,505,507,511,518,524,525],coordn:[125,219],coords:466,copi:[0,3,4,8,9,11,12,14,16,40,131,206,347,388,406,458,495,519],copper:489,coprocessor:[1,7,9,15,16,393,510],coproprocessor:16,copy_arrai:8,copyright:[7,8,302],coral:207,core:[0,1,3,4],core_shel:160,cores:518,coreshel:[4,6,9],coreshell:[4,6],cornel:[6,184,509],corner123i:124,corner123x:124,corner123z:124,corner1i:124,corner1x:124,corner1z:124,corner2i:124,corner2x:124,corner2z:124,corner3i:124,corner3x:124,corner3z:124,corner:[3,6,40,124,206,356,357,380,484,497,519],cornflowerblu:207,cornsilk:207,corp:9,corpor:15,corr:408,correct:[3,6,9,11,12,16,61,86,95,96,112,113,118,121,127,160,165,172,184,204,206,231,238,246,248,254,271,272,294,302,304,307,346,352,356,377,388,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,410,411,412,413,415,416,417,418,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,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,484,485,487,488,489,490,497,512,515,518,519],correction_max_iter:216,correctli:[3,8,11,16,75,87,112,113,114,155,156,157,159,161,163,164,165,166,167,170,171,174,203,207,213,232,237,244,255,265,271,272,310,317,321,331,334,353,356,388,389,393,411,441,446,494,495,497,507,519,523,525],correl:[2,3,6,99,100,152,174,210,219],correpond:[241,242],correspond:[1,2,4,6,8,9,10,11,12,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,40,42,43,44,45,46,47,48,49,51,53,54,56,74,75,95,106,107,123,124,125,126,129,130,131,139,142,143,144,145,146,148,149,150,152,155,156,165,172,176,177,184,185,186,187,188,189,190,192,193,195,196,197,199,202,203,204,206,207,211,212,213,219,221,222,224,227,229,231,238,239,242,244,245,249,254,257,258,267,268,269,271,273,274,275,276,277,278,279,280,281,285,289,291,292,294,296,298,299,300,304,309,310,317,318,320,321,342,352,353,355,356,357,359,361,362,363,364,366,367,370,372,378,383,385,387,388,394,395,397,400,401,402,403,404,405,406,407,408,409,412,413,416,417,418,419,420,421,422,423,424,425,426,429,431,432,433,434,435,436,437,438,439,440,443,444,446,448,449,451,452,453,455,456,458,459,460,461,466,467,468,477,478,479,480,481,482,483,485,487,488,489,492,494,495,497,498,500,510,511,512,514,515,518,524],correspondingli:[440,441,506],corrupt:3,cosin:[2,6,7,21],cosineshift:26,cosmo:[248,253],cossq:2,cost:[1,6,10,11,12,16,39,41,75,120,130,153,177,206,207,219,225,226,227,243,271,289,309,318,347,377,378,391,409,431,435,446,448,477,494,506],costheta0:[477,480,482,485],costheta:456,costli:[11,15,96,248,389],couett:4,coul:[2,3,6,9,15,35,45,46,76,95,118,127,172,184,211,212,348,378,386],could:[2,3,6,9,11,12,16,32,41,50,61,69,75,79,86,95,98,103,114,116,120,123,125,158,168,173,175,191,203,204,206,207,211,212,219,220,225,231,244,253,306,307,308,312,315,317,320,335,336,342,346,347,348,352,356,358,360,368,374,376,384,386,389,393,395,396,421,425,426,429,458,459,493,494,495,497,499,501,504,505,512,513,518,524,525],coulomb:[3,5,6,7,8,9,10,12,14,17,76,96,118,119,127,153,179,183,308,310,348,377,378,386,393,400,402,403,404,405,408,409,410,411,412,418,423,424,426,431,435,439,442,448,453,458,459,461,466,476,482,483,485,488,502,509,515,518,523],coulommb:6,cound:3,count:[1,3,6,8,11,12,41,65,71,81,99,125,127,128,166,176,182,184,213,214,217,219,222,224,225,232,237,243,246,252,271,285,303,320,321,338,339,356,378,386,387,388,390,393,421,425,448,515,516,524],counter:[3,353,492,503,505,511],counteract:246,counterbal:[238,250],counterbalanc:28,counterclockwis:184,counterpart:[203,492],counterproduct:17,coupl:[0,3,4],couple:[4,6,11,12],courant:324,cours:[3,8,15,138,140,172,203,211,212,247,316,331,346,352,354,355,357,358,378,440,468,494,497,510,518,524,527],courtesi:380,cov:466,coval:[6,9,28,418,443,466,518],covari:248,cover:[6,12,75,199,207,216,257,418,484],coverag:75,cpc:253,cpp:[1,3,6,8,9,11,12,13,95,203,211,212,244,321],cpu:[1,3,9,10,12,14,15,16,17,65,75,207,221,235,255,348,375,378,393,406,476,492,510,511,514,515,516,524],cpuinfo:15,cpuremain:515,cpus:12,cr2:177,cr3:177,crack:[4,389],crada:[5,7],crai:[5,7,13,17,203],crash:[3,12,389,518],craympi:393,creat:[0,1,2,3,4,6,7,8,9,11,12,13,14,16,37,39,41,42,56,60,61,64,65,75,87,99,113,114,119,120,123,126,128,130,146,155,161,162,174,176,178,179,180,181,199,203,204,205,206,207,210,215,216,218,219,220,222,223,225,226],create_atom:[2,3,6,7,8,40,41,61,99],create_bond:[2,3],create_box:[2,3,6,21,40,41,44,59,60,61,64,75,99,176,178,179],create_elementset:216,create_faceset:216,create_group:205,create_nodeset:216,createatom:0,creation:[3,5],crimson:207,critchlei:302,criteria:[3,127,179,206,207,226,227,228,266,386,455,484,499,502,524],criterion:[12,41,133,178,181,217,225,228,246,285,309,324,353,358,386,388,408,418,423,466,502,511,512],criterioni:511,critic:[6,48,49,269,342,347,386],crmax:75,crmin:75,cross:[3,12,15,21,75,97,129,156,176,186,203,204,206,218,227,231,268,270,294,317,327,331,334,343,350,362,380,388,404,413,415,416,424,425,426,431,433,435,456,461,463,465,480,482,489,497,501,507,527],crossov:1,crossterm:497,crozier:[0,7,13],crucial:307,crystal:[3,4,6,13,15,74,77,117,298,299,345,380,389,497,501,515,518],crystallin:[6,113,299,380,481,518],crystallis:342,crystallogr:[130,177],crystallograph:[380,515],crystallographi:[130,177,380],cs1:177,cs_chunk:6,cs_im:[40,497],cs_re:[40,497],csanyi:[152,457,467],cscl:443,csequ:6,csh:[11,12,15,406],cshrc:[11,12],csic:[417,477,480,482,485],csinfo:6,csisi:[417,477,480,482,485],csld:[2,3,210],cst:416,cstherm:6,cstyle:494,csvr:[2,3,6,210],ctcm:[394,416],ctemp_core:235,cterm:323,ctr:9,ctype:11,cu1:177,cu2:177,cu3au:443,cube:[6,176,181,235,356,380,518],cubes:[41,225],cubic:[2,3,37,56,117,199,241,257,298,335,378,380,416],cuda:[1,3,7,9,12,14,16,393,510,524],cuda_arch:[9,14],cuda_get:14,cuda_home:[9,14],cuda_prec:[9,14],cuh:399,cummul:[3,6,223,226,227,228,230,243,248,254,256,335,338,339,340,341,343,350,425,515],cumul:[6,217,219,222,236,246,254,269,271,276,285,317,319,388],curli:2,current:[0,1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,40,41,42,57,61,63,65,75,77,87,95,113,119,127,128,142,153,158,166,168,174,176,179,182,202,203,204,205,206,207,208,211,212,216,219,223,225,226,227,228,229,230,231,232,236,237,238,244,246,248,251,252,254,260,266,268,271,272,277,278,279,285,287,291,292,293,294,296,302,303,308,309,311,314,315,316,317,318,321,322,323,324,325,326,327,328,330,332,333,334,335,338,339,340,346,347,350,351,352,353,354,355,357,358,360,375,376,377,378,381,382,383,385,386,387,388,393,399,406,408,412,416,418,419,423,426,427,430,440,441,443,444,445,448,456,458,459,462,463,464,465,468,480,482,483,486,492,493,494,495,497,498,499,500,501,503,504,505,507,509,511,512,514,515,519,524,525,526,527,528,529],curv:[6,178,246,287,293,299],curvatur:[422,460,489],custom:[0,2,3,6],cut0:495,cut1:506,cut2:506,cut:[1,2,3,6,9,12,14,15,16,17,18,41],cuthi:[298,310],cutinn:[401,440,441],cutlo:[298,310],cutmax:456,cutoff1:[405,412,431,435,439,442,453,461],cutoff2:[400,402,403,405,411,412,431,435,439,442,453,461,483],cutoff:[3,6,8,10,15,17,39,45,46,54,55,63,74,76,77,81,95,100,117,119,126,127,152,176,179,181,182,227,228,233,241,242,298,307,308,310,312,314,317,322,335,348,352,356,358,375,377,378,386,389,390,391,393,394,395,396,397,398,399,400,401,402,403,404,405,407,409,410,411,412,413,414,415,416,417,418,419,420,421,422,424,425,426,427,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,458,459,460,461,466,467,468,469,470,471,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,495,499,502,506,518,524],cutoffa:417,cutoffc:417,cuu3:416,cval:177,cvd:342,cvel:323,cvff:[2,7,15,362],cwiggl:[3,268,352,355,357,524],cyan:[2,206,207],cycl:[3,246,269,271,272,276],cyclic:[3,184,199],cygwin:12,cylind:[3,4,75,206,219,252,293,303,353,356,382,500],cylinder_d:382,cylindr:[6,252,331,353],cypress:393,cyrot:399,cyrstal:299,d3q15:257,d3q19:257,d_double_double:14,d_e:347,d_flag2:306,d_flag:306,d_name:[124,203,306,337,507],d_single_double:14,d_single_single:14,d_sx:306,d_sy:306,d_sz:306,daan:345,dai:12,daili:12,daivi:294,damag:[2,3,9,65],dammak:312,damp:[3,6,210,215,254,255,256,261,271,272,276,293,304,307,308,312,317,338,339,351,353,354,385,386,388,400,402,404,409,412,418,423,431,439,453,461,476,483,511,518],damp_com:255,damp_drud:255,dampen:[317,518],dampflag:[353,423],dan:16,danger:[3,12,246,358,413,515],dangl:181,daniel:9,darden:[378,412],darkblu:207,darkcyan:207,darken:206,darkgoldenrod:207,darkgrai:207,darkgreen:207,darkkhaki:207,darkmagenta:207,darkolivegreen:207,darkorang:207,darkorchid:207,darkr:207,darksalmon:207,darkseagreen:207,darkslateblu:207,darkslategrai:207,darkturquois:207,darkviolet:207,dasgupta:308,dash:[423,514],dat:[6,99,199,216,493],data2xmovi:0,data:[1,2,3,4],data_atom:8,data_atom_hybrid:8,data_bodi:8,data_vel:8,data_vel_hybrid:8,databas:0,datafil:[12,13,319],dataset:319,datatyp:3,date:[0,4,6,12,13,202,458,459,524],datom1:[84,126],datom2:[84,126],datom3:[84,126],datom4:[84,126],datum:[3,6,42,68,71,73,84,102,119,126,203,220],davenport:442,davi:352,david:[9,18,377,378,480,482],daw:[416,456],dcd:[3,6,7,203,205,206,207,208,300,498,502],dcs:9,ddim:202,deactiv:439,dealt:253,debug:[6,7,11,12,13,16,57,130,134,177,178,300,305,375,377,427,448,486,495,496,504,507,514,524],deby:[2,3,7,211,212,312],decai:[100,409,489],decid:[3,6,12,15,75,268,306,317,348,512,519],decipher:380,deck:306,declar:205,declin:335,decod:206,decompos:[95,467],decomposit:[3,5,7,17,64,216,300,322],decoupl:[6,518],decreas:[3,15,203,204,213,214,221,228,231,237,238,244,246,254,346,377],decrement:323,dedic:[15,393],deepli:374,deeppink:207,deepskyblu:207,def:[12,13,495],defaul:63,defect:[6,74,176,446],defgrad:2,defin:[2,3,5,6,7,8,11,12,16,19,20,21,22,23,24,25,26,27,28,29,30,31,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,51,53,54,55,56,57,58,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,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,184,185,186,187,188,189,190,192,193,195,196,197,198,199,200,201,202,203,204,205,206,207,210,211,212,213,214,215,216,217,218,219,220,222,223,224,225,226,227,228,229,231,232,235,236,237,240,242,244,245,246,249,252,253,254,255,256,257,266,268,270,271,272,273,274,275,276,277,278,279,281,282,283,286,289,290,291,292,294,295,296,298,299,300,302,303,304,306,308,310,315,317,318,319,320,321,324,328,332,333,335,337,338,339,340,341,343,344,345,347,349,350,352,353,354,355,356,357,358,360,361,362,363,364,365,366,367,370,371,372,373,375,377,378,380,382,383,385,386,387,388,389,390,391,392,393,395,396,397,398,400,401,402,403,404,405,406,407,409,410,412,413,414,415,417,418,420,421,422,423,424,425,426,427,429,431,432,433,434,435,436,437,438,439,440,441,442,446,447,448,449,450,451,452,453,455,456,458,459,460,461,462,463,464,465,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,494,495,497,498,500,501,502,503,506,507,508,509,511,512,514,515,518,520,521,522,523,524,525,526],definit:[2,3,6,8,12,13,82,85,127,152,207,219,220,221,222,223,231,240,252,276,319,337,349,352,355,357,359,371,375,387,396,399,407,414,418,429,456,463,465,467,484,495,497,499,506,508,523,524],defint:515,deform:[2,3,6,7,8,40,42,59,61,63,65,85,122,134,138,139,153],deg2theta:177,deg:518,degener:[3,302],degrad:[8,17,299,378,506],degre:[3,6,8,19,20,23,27,28,31,34,35,37,68,84,100,102,104,106,107,109,111,112,117,123,155,156,157,158,159,160,161,162,163,164,165,166,167,168,170,171,177,178,184,185,188,189,196,197,199,202,206,219,228,235,246,248,249,254,255,260,271,272,276,277,278,279,291,292,294,296,300,302,316,317,321,338,339,340,345,361,363,367,370,372,386,412,416,425,507,515,518,525],degrees:199,degress:[158,219],del:511,delai:[3,6,12,389,415,515],deleg:426,delet:[2,3,7,8,12,54,59,62,65,176,181,182,210,219,220,222,223,226,228,243,246,271,319,338,339,358,360,376,387,389,392,448,475,497,498,499,500,508,509,514,519,520,522,524,525],delete_atom:[2,3,7,178],delete_bond:[2,3,43,45,46,47,48,49,50,51,53,54,55,56,68,73,126,179],delete_el:216,deli:202,delimit:[318,495,524],dellago:[6,238],deloc:[272,418,466],delr:443,delt_lo:511,delta:[2,21],delta_1:399,delta_3:399,delta_7:399,delta_conf:3,delta_ij:[443,456],delta_pi:399,delta_r:456,delta_sigma:399,deltah_f:242,delx:202,delz:202,demand:312,demo:11,demon:297,demonstr:[307,443],den:303,dendrim:425,dendtrit:382,denniston:[9,257,259,260,261,299],denomin:[7,183],denot:[130,235,238,255,299,310,312,409,424,426,459,463,465],dens:[75,228,318,418],densiti:[3,6,7,9,17,40,41,61,110,127,138,152,164,176,178,211,212,216,219,225,231,244,257,260,264,265,299,303,304,306,308,347,352,380,383,387,394,395,399,416,443,444,445,450,451,456,460,466,470,472,473,474,497,506,507,515,523],density_continuity:465,density_summation:465,dent:382,depart:[0,7],departur:[269,307],deped:8,depend:[1,2,3,6,8,9,11,12,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,43,44,45,46,47,48,49,51,53,54,56,63,65,68,71,73,74,75,84,100,102,113,119,123,124,125,126,129,131,152,154,155,161,165,166,172,178,179,184,185,186,187,188,189,190,192,193,195,196,198,199,202,203,204,206,207,210,211,212,213,214,217,219,221,222,223,224,225,227,229,231,237,239,242,245,248,249,250,252,254,255,257,259,260,268,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,298,309,310,312,314,317,318,320,321,322,328,335,338,339,340,342,344,346,347,349,352,355,356,357,358,360,361,362,363,364,366,367,370,372,378,380,386,387,389,390,391,393,394,395,397,398,399,400,401,402,403,404,405,406,407,408,409,410,412,413,416,417,418,419,420,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,443,444,446,447,449,450,451,452,453,455,456,458,459,460,461,466,467,468,476,477,478,480,481,482,483,485,487,488,489,492,494,497,499,500,503,507,509,511,514,515,517,524,525],dependend:6,depflags:12,dephas:[492,511],depos:232,deposit:[2,3,4,112,180,210,217],deprec:[3,308,458],deprect:219,depth:[51,156,206,347,420,422,460],dequidt:9,der:[95,118,407,408,439,458,459,488],deriv:[6,7,8,9,37,56,65,95,152,172,199,220,229,231,238,246,254,268,271,273,274,275,276,277,278,279,298,304,308,312,344,345,347,352,353,356,385,387,395,399,407,412,418,419,424,433,437,438,443,446,458,459,476,478,479,488,518],derjagin:488,derlet:298,descend:207,descent:[7,385],descib:[40,206,308],describ:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,37,39,40,41,42,56,64,65,71,74,75,77,96,121,124,127,130,142,152,153,156,157,158,162,163,166,169,171,172,176,177,178,180,181,190,195,199,203,204,205,210,211,212,219,220,221,222,223,225,228,229,230,231,232,234,235,241,242,247,248,251,252,253,254,255,256,257,259,260,261,266,270,271,272,276,284,295,298,300,305,306,307,308,309,310,317,318,323,331,335,336,337,338,339,340,341,342,343,344,345,350,352,353,355,360,377,378,380,384,385,386,387,388,392,395,396,398,400,401,402,404,405,406,407,408,409,412,416,418,419,420,422,423,424,426,429,431,432,433,434,435,436,437,438,439,440,441,442,443,446,447,450,451,455,456,457,458,459,460,461,466,467,468,475,476,477,478,479,480,481,482,483,485,487,488,489,490,492,494,495,497,498,499,500,501,507,510,511,514,519,524,525,527],descript:[2,3,6,8,9,11,12,13,17],descriptor:[152,203,427],deserno:378,design:[0,3,6,7,8,11,13,14,16,130,160,163,177,216,228,234,235,271,272,298,299,319,342,347,396,397,398,401,404,409,411,418,439,440,441,444,445,456,459,478],desir:[2,3,6,7,9,11,12,14,15,32,40,50,61,75,96,99,123,128,153,160,178,191,202,219,223,229,231,244,246,247,254,255,256,260,271,294,302,303,304,305,308,312,317,320,321,335,338,339,340,341,346,353,368,374,377,378,380,384,386,387,388,413,416,425,440,441,477,480,482,493,494,495,497,501,506,511,512,514,515,516,524,525,527],desk:7,desktop:[4,6,7,10,12,206],despit:518,destabil:399,destre:370,destroi:[9,11,39,226,227],detail:[1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,21,36,40,41,42,55,65,69,70,71,75,79,82,86,98,99,103,114,116,118,120,121,122,123,125,128,129,131,152,153,155,156,157,158,161,171,172,173,175,178,179,182,183,186,198,202,203,204,206,207,210,211,212,216,219,220,221,222,223,225,227,228,229,230,231,232,238,244,246,247,248,249,251,252,254,256,257,261,268,269,270,271,272,273,274,275,276,277,278,279,283,285,291,292,294,295,296,299,302,303,304,306,307,309,310,311,317,321,322,335,338,339,340,341,342,343,345,346,347,348,349,350,351,358,360,362,371,377,378,381,382,386,387,389,390,393,394,395,396,398,399,401,403,404,405,406,407,408,409,412,413,418,419,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,441,442,443,447,448,450,451,455,458,459,460,466,467,468,476,484,487,488,490,495,497,498,499,500,502,503,506,507,509,512,515,516,519,524,525,529],detect:[2,3,12,42,63,65,94,100,245,303,346,388,408,425,430,492,494,497,508,511,524],determin:[1,3,6,8,9,12,14,15,39,40,42,51,59,60,61,63,64,71,75,95,112,118,119,123,126,129,130,131,139,153,166,167,176,177,178,202,203,204,206,207,208,209,213,214,215,218,219,220,221,222,223,224,225,229,231,232,235,237,242,246,249,250,252,254,255,260,266,268,269,271,277,278,279,291,292,294,296,298,300,303,304,307,314,315,316,317,318,319,320,324,326,328,335,338,339,340,342,348,349,352,353,354,355,356,357,358,371,377,378,380,387,389,390,393,395,396,403,408,412,415,416,420,421,423,426,427,435,443,446,448,451,459,460,466,475,478,479,483,488,494,497,498,500,502,504,507,511,513,514,516,523,524,525],determinist:322,detil:119,devan:[9,461],devanathan:482,develop:[0,3,5,6,7,8,9,11,12,14,15,16,17,18,42,251,276,302,307,308,311,395,399,418,445,446,466,485,499],devemi:9,deviat:[269,276,298,421],deviator:9,devic:[1,3,12,14,16,251,393],device_typ:393,devin:[309,408],devis:445,dfactor:206,dff:518,dfft_fftw2:12,dfft_fftw3:12,dfft_fftw:12,dfft_none:12,dfft_single:[3,12,378],dfft_xxx:12,dfftw:12,dfftw_size:12,dft:[9,311,446],dhi:[61,202,231,303],dhug:[269,307],dhugoniot:[269,307],dia:443,diag:318,diagnost:[2,5],diagon:[3,6,91,129,152,153,154,229,271,304,317,350,463,465],diagonalstyl:467,diagram:[41,84,130,177,198,225,300],diallo:425,diam:[206,207,303,387],diamet:[3,6,40,42,124,178,203,204,206,207,211,212,254,303,306,317,335,337,351,353,387,407,422,423,433,460,484,488,497,498,507],diamond:[380,418,443],diamter:[40,303],dick:6,dicsuss:268,dictat:[217,269],did:[3,12,386,413,415,416,423,448,480,482,505],didn:3,die:17,diel:2,dielectr:2,diff:[3,6,12,15,174,349,377],differ:[1,2,3,4,6,7,8,9,11,12,14,15,16,17,21,36,37,39,41,42,54,55,56,63,66,71,74,75,95,100,104,106,107,132,152,154,155,156,157,158,159,161,164,165,166,167,168,170,171,172,178,179,181,186,198,199,202,203,206,207,210,212,215,217,219,222,225,226,227,228,229,230,231,235,238,241,245,246,247,248,249,250,251,254,255,257,268,271,272,273,274,275,277,278,279,281,283,286,289,290,291,292,296,298,300,302,304,307,308,309,312,315,317,321,323,331,333,335,338,339,340,343,344,345,347,350,351,352,353,356,360,361,371,374,376,377,378,380,381,384,385,387,388,390,391,392,393,394,395,399,403,404,406,407,408,413,414,416,418,420,422,423,424,426,429,431,432,434,435,442,443,444,445,447,448,449,450,451,452,456,458,459,460,461,462,463,465,466,467,468,476,477,478,479,480,482,484,485,488,491,492,494,495,497,499,500,501,502,505,506,507,509,511,512,514,515,516,518,523,524,525,527],differenti:[1,3,6,28,199,318,377,409,456,481],difficult:[229,300,393,425,506,516],difficulti:[100,117,321,458],diffract:[7,9,130,177,319],diffus:[0,4],diffuse:[4,6],digit:[2,3,207,360,446,524],dih_table1:199,dih_table2:199,dihedr:[0,2,3,7],dihedral_coeff:[2,3,184,185],dihedral_cosine_shift_exp:26,dihedral_styl:0,dihedralcoeff:[3,200],dihedraltyp:227,dihydrid:418,dij:321,dilat:[2,3,61,63,65,82],dim1:3,dim2:3,dim:[3,61,75,155,159,160,161,164,165,166,167,168,170,178,202,231,252,353,380,443,500,523,524,525],dimdim:524,dimems:299,dimens:[1,2,3,6,7,12,41,59,60,61,63,65,75,99,125,129,153,158,165,166,167,178,180],dimensinon:75,dimension:[3,39,100,123,130,152,155,158,159,160,161,164,165,166,167,168,170,177,201,219,270,299,347,380,384,388,456,497,507],dimensionless:[115,133,134,136,139,141,143,148,152,347,378,467,488],dimensions:319,diment:3,dimentionless:147,dimer:[6,317,443],dimgrai:207,dimstr:[41,225],dinola:[304,338],dintel_offload_noaffinity:15,dipol:[0,2,3,4],dipolar:[4,28,40,203,204,337,518],dir1:508,dir2:508,dir:[1,3,4,8,10,11,12,269,298,307,334,456,458,459,495,508,524],dirac:152,direc:456,direct:[2,3,6,7,12,13,15,28,59,74,75,117,130,152,176,177,178,184,202,203,206,210,213,214,215,231,232],directli:[3,6,8,9,11,12,95,124,129,152,154,203,204,205,206,213,237,248,252,257,299,318,319,339,351,353,354,355,356,380,385,393,394,395,400,402,403,409,412,416,418,431,435,448,453,461,475,495,507,508,509,515,524],directori:[0,1,2,3],disabl:[3,12,15,347,393,430,495,510,524],disadvantag:[6,225],disallow:[203,231,271],disappear:499,discard:[2,3,41,75,221,225,348,356,494,499,500],discontinu:[199,386,437],discourag:443,discov:[13,348],discret:[6,8,40,42,206,207,254,257,293],discuss:[0,1,2,3],disk:[6,92,93,100,171,201,232,246,303,495],disloc:[74,446],disord:[39,74,446],disp:[0,2,3],dispar:460,disperion:[412,435],dispers:[3,6,7,9,176,299,377,378,403,412,435,440,448,459,478,485],displac:[2,3,6,7,12,42,61,65],displace_atom:[2,3,7,113],displace_box:61,displacemet:500,displai:[11,13,21,36,44,55,186,198,203,206,362,371,406,476],dispters:3,disregard:446,dissip:[6,9,40,88,89,240,247,254,299,322,344,345,401,413,414,423,440,441,476],dissolut:226,dist:[6,73,99,119,128,203,300,316,415,475,492,525],distanc:[2,3,6,7,8,9,12,19,20,39,43,45,46,47,48,49,51,53,54,55,56,57,58,60,61,63,65,66,69,73,75,76,77,78,79,80,81,86,87,94,97,98,100,103,113,114,115,116,117,119,125,126,127,128,129,130,132,146,152,167,173,176,178,179,180,181,185,202,203,204,206,207,215,219,226,227,228,229,231,232,233,236,238,246,252,257,268,269,270,271,276,285,298,299,303,307,308,315,316,317,321,323,327,331,332,333,334,335,342,343,345,346,347,350,352,353,354,355,356,357,361],distinct:[6,235,314,377,460],distinguish:[6,94,152,260,418,496,524],distort:[176,394],distrbut:394,distribut:[0,2,4,5,6],distro:[122,406,455,456],ditto:[8,12,14,16,17,42,126,227,317,489,495],div:[8,15],divd:128,diverg:[3,12,39,317,345,395,499,518,527],divid:[3,6,15,41,99,123,128,138,140,153,175,176,186,198,207,219,220,222,225,231,298,343,350,355,377,386,388,419,459,466,485,506,514,524],divis:[6,197,257,399,429,439,494,515,524],dl_poly:[6,7],dlambda:172,dlammps_async_imd:251,dlammps_bigbig:[12,39],dlammps_ffmpeg:[3,12,206],dlammps_gzip:[3,12,203,206,346,497,498,502],dlammps_jpeg:[3,12,206],dlammps_longlong_to_long:12,dlammps_memalign:[9,12,15],dlammps_png:[3,12,206],dlammps_smallbig:12,dlammps_smallsmall:12,dlammps_xdr:[12,203],dlen:507,dlm:[271,289],dlmp_intel_offload:[9,15],dlo:[61,202,231,303],dlopen:6,dlvo:[7,407,488],dm_lb:257,dmax:[335,384],dmpvtk:204,dmpvtp:204,dna:7,doc:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,16,17,21,36,40,42,55,59,61,65,69,71,79,84,86,95,98,102,103,114,115,116,118,120,121,122,123,125,128,129,131,153,156,157,158,171,173,175,178,179,180,186,198,202,203,204,205,206,207,208,210,211,212,217,218,219,220,221,222,223,232,246,254,255,266,271,272,277,278,279,283,291,292,294,295,296,303,306,317,331,335,338,339,340,349,353,356,358,360,362,371,376,382,386,387,388,393,394,395,398,406,408,409,416,417,419,425,426,428,429,443,444,445,448,452,455,456,457,467,476,477,480,482,484,485,495,497,498,499,500,502,505,506,507,514,515,519,524,525,527,528],docuement:460,dodd:42,dodgerblu:207,doe:[0,1,2,3,5,6,7,8,9,11,12,14,16,17,32,37,39,41,42,50,54,56,61,64,65,70,74,75,76,95,96,99,114,118,121,127,128,130,154,156,158,160,161,166,168,172,177,178,179,180,182,184,186,191,198,199,202,203,204,205,206,207,210,216,217,219,224,225,227,228,229,231,235,237,238,241,242,243,246,247,250,252,254,255,257,260,267,271,272,273,274,275,277,278,279,291,292,293,294,295,296,304,305,306,310,312,315,317,335,338,340,342,343,347,350,351,352,355,356,357,358,363,364,365,367,368,370,376,377,378,379,380,387,388,389,394,395,396,397,398,399,401,403,404,405,407,408,409,410,412,413,415,416,417,418,420,421,422,423,424,426,427,428,429,430,433,434,436,437,438,440,441,443,444,445,446,448,450,451,456,457,458,459,460,462,463,464,465,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,483,484,485,487,488,489,490,492,493,494,495,497,498,499,500,501,504,505,507,508,509,510,511,514,515,518,519,524,529],doegenomestolif:7,doesn:[3,7,8,12,178,203,204,217,331,387,389,393,395,408,417,428,458,459,477,480,481,482,485,497,499],dof:[3,8,123,156,157,158,171,219,317,525],dof_per_atom:[158,219],dof_per_chunk:[158,219],doff:[387,497],doi:[6,230,298],domain:[3,6,7,12,13,17,39,41,42,60,63,64,75,130,167,177,180,202,205,206,207,210,217,225,229,231,232,250,253,257,271,272,300,312,317,322,347,352,353,377,378,388,393,415,448,492,494,497,501,514],domin:[1,418,511],don:[0,8,9,12,13,15,127,181,213,237,255,356,443,466,495,497,519],donadio:339,done:[1,3,6,7,8,12,14,16,17,37,39,41,56,61,64,75,172,175,178,181,197,199,203,206,207,216,217,219,221,222,223,225,226,227,228,229,231,232,241,242,244,246,251,252,254,255,262,271,277,278,279,291,292,294,296,297,299,300,301,303,306,314,317,319,321,335,338,339,340,342,344,345,358,360,376,377,378,386,388,389,392,393,395,403,416,426,427,428,435,441,442,443,448,450,451,458,475,478,479,484,492,493,494,495,498,501,502,505,515,516,518,519,524,525],donor:425,dot:[153,174,213,237,249,270],doti:[399,456],doubl:[1,2,3,6,8,9,11,12,14,15,16,39,95,184,231,244,305,356,360,376,378,392,393,399,419,424,446,458,459,493,497,501,505,510,524,525],dover:216,down:[3,6,7,8,11,39,75,229,246,254,335,351,418,448,466,496,516],downhil:[384,385],download:[5,7,8,9,11,12,13,16,251,427,457],downsid:6,downward:314,dozen:[8,9,12,118,210,458,459],dpack_array:12,dpack_memcpy:12,dpack_pointer:12,dpd:[2,3,6,7],dpde:264,dpdtheta:[40,88,89,414],dpdtheta_i:[240,241,242],dproduct:396,dr_ewald:[130,319],drag:[2,6,99,210],dragforc:257,drai:[206,269,307],drain:[250,351,386],dramat:[9,61,202,226,227,228,229,231,271,335,338,339,378,448,466,494],drautz:399,draw:206,drawback:306,drawn:[42,203,206,207,247,492],drayleigh:[269,307],dreid:[2,3,4,6,9],dreiding:0,drfourth:115,drho:[124,394,416,450,451],drift:[6,113,115,238,247,248,250,254,255,267,315,335,506,514,518],drive:[11,12,214,229,231,249,271,298,304,317,354,388],driven:[6,190],driver:[6,12,14,210,244,251],drop:[3,207,413],droplet:426,drsquar:115,drude:[0,2],drudes:[255,518],dry:243,dsecriptor:427,dsf:[2,3],dsmc:[2,3,9],dstyle:303,dt_collis:257,dt_lb:257,dt_md:257,dt_srd:335,dtilt:[61,231],dtneb:511,dtqm:307,dtype:[84,126,227],dual:[16,335,393],dudarev:177,due:[1,3,6,9,12,15,16,18,40,54,57,59,60,63,69,74,75,78,79,86,87,94,96,97,98,103,112,113,114,115,116,121,127,130,138,152,153,155,156,157,159,161,164,165,166,167,168,170,171,173,177,178,181,182,203,204,206,210,213,214,222,224,226,227,228,229,230,231,232,237,239,243,244,247,248,251,252,254,255,256,257,260,261,262,267,268,269,270,271,276,285,298,301,303,315,316,317,320,331,332,334,335,336,338,339,340,341,342,344,345,347,351,352,354,355,356,358,377,378,384,386,388,389,390,410,413,414,416,421,422,426,440,441,448,456,458,460,461,475,478,480,482,486,488,489,492,494,497,498,499,506,511,514,515,516,518,524,525],duffi:347,duin:[9,308,313,458,459],duke:378,dullweb:[271,289],dumbbel:382,dummi:[12,28,481],dump0:204,dump10000:204,dump1:502,dump20000:204,dump2:502,dump2vtk_tri:146,dump:[0,1,2,3,4],dump_0:204,dump_1:204,dump_atom:8,dump_custom:8,dump_h5md:205,dump_modifi:[2,3,6,203,204,205,206],dump_p:204,dumpcustom:8,dumptimestep:502,dunbrack:[6,19,184,404,509],dunweg:[254,256],duplic:[2,3,14,16,41,42,179,204,225,248,298,497,523],dupont:[5,7,13],durat:[36,55,155,156,157,159,160,161,163,164,165,166,167,170,171,198,207,219,246,312,347,371,423,476],dure:[2,3,6,8,9,12,15,16,37,39,41,56,75,95,129,138,140,154,160,179,182,184,199,203,204,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,231,232,233,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,254,255,256,257,258,259,260,261,262,263,264,265,267,268,270,271,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,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,319,320,321,323,327,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,378,386,388,392,413,439,446,448,449,450,451,459,478,479,492,493,495,497,500,502,504,505,507,509,511,512,515,516,524,528,529],dvector:8,dvlo:488,dvx:6,dx_lb:257,dy3:177,dyamic:12,dyanam:6,dyanmic:511,dynam:[0,2,3,4,5,6,7,9,11,12,13,14,15,39,40,41,61,63,75,88,89,112,115,127,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,155,156,157,158,159,161,163,164,165,166,167,168,170,171,176,178,182,203,206,207,210,213,216,225,228,230,231,232,237,240,243,246,247,248,253,254,255,256,261,269,271,272,276,282,285,287,299,300,303,306,307],dynamo:[5,394,416,443],dyne:523,dyre:436,dysam:500,e28637:28,e_1:399,e_2:399,e_a:318,e_b:419,e_data:204,e_ee:418,e_hbond:425,e_i:[6,399,419],e_j:[6,399],e_k:399,e_ke:418,e_kl:6,e_lj:[395,412],e_n:399,e_ne:418,e_nn:418,e_pr:418,e_rebo:395,e_torsion:395,e_tot:446,e_vol:446,eaa:361,eaat:185,each:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,57,59,61,63,64,65,66,67,69,70,71,72,74,75,76,77,78,79,80,81,82,83,85,86,87,89,91,93,95,97,98,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,120,121,122,123,124,125,126,127,128,129,130,131,132,146,152,153,154,156,157,158,159,160,161,162,165,166,167,168,170,171,172,173,174,175,176,177,178,181,182,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,239,241,242,243,244,246,247,248,249,250,251,252,253,254,255,256,257,258,260,261,262,263,264,265,267,268,269,270,271,273,274,275,276,277,278,279,280,281,282,283,285,286,287,288,289,290,291,292,294,295,296,298,299,300,301,302,303,304,305,306,308,309,310,312,314,317,318,319,320,321,322,323,327,328,330,331,332,333,334,335,336,337,338,339,340,342,345,346,347,348,349,350,351,352,353,355,356,357,358,360,361,363,364,365,366,367,368,370,371,372,376,377,378,380,385,386,387,388,389,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,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,446,447,448,449,450,451,452,453,455,456,458,459,460,461,462,466,467,468,469,470,471,472,473,474,475,476,477,478,479,482,483,484,485,486,487,488,489,490,491,492,494,495,497,498,499,500,501,502,504,505,506,507,509,511,512,514,515,516,517,518,523,524,525,527,529],eacn:[41,225],eam0d:299,eam3d:299,eam:[0,2,3,5,7,8,9,10,12],eam_databas:13,eam_gener:13,eangl:515,earli:[41,219,222,223,225,311,319],earlier:[7,8,12,61,207,388,423,443,448,511],earliest:511,earth:418,easi:[6,7,8,9,10,11,13,95,153,203,211,212,213,214,224,237,249,250,252,254,255,320,328,338,339,340,352,355,357,387,497,500,505,507,525],easier:[8,9,13,15,203,204,206,299],easili:[8,11,206,207,351,388,494,504,513,524],eastwood:[377,378],eat:185,eatom:358,eaxmpl:6,eba:20,ebb13:185,ebb:20,ebond:[235,255,514,515,524],ebt:185,ec_ii:443,ec_ij:443,ec_jj:443,echo:[2,3,11,12,62,130,177],eco:[458,459],ecoa:[458,459],ecoul:[118,154,235,255,458,459,515],ecp:[418,497],edg:[3,6,41,42,61,75,130,176,177,180,181,203,205,206,215,252,320,352,355,356,357,358,380,497,500,507],edge:[2,3,352,355,357,500],edge_histo:176,edge_threshold:176,edih:515,edim:343,edip:[2,7],edit:[3,8,9,12,13,14,15,16,17,18,518,519],edition:15,editor:13,edu:[7,9,11,13,416,440,455,458,459],edward:[9,16],eebt:185,eff:[0,2,7,8],effect:[1,2,3,6,8,9,11,12,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,43,45,46,47,48,49,51,53,54,56,69,75,78,79,86,87,97,98,103,113,114,115,116,123,128,153,155,160,165,166,173,176,182,184,185,187,188,189,190,192,193,195,196,198,199,202,203,204,206,207,211,212,213,216,217,218,219,220,222,223,224,226,227,228,229,231,232,238,239,241,245,246,247,248,249,250,251,252,254,255,270,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,297,298,300,303,304,306,307,308,309,310,312,315,316,317,320,321,334,335,338,339,340,342,343,345,347,350,351,352,353,354,355,356,357,358,361,363,364,366,367,370,372,377,378,380,385,386,387,388,389,394,395,397,399,400,401,402,403,404,405,407,408,409,412,413,416,417,418,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,444,446,448,449,450,451,452,453,455,459,460,461,462,464,466,468,476,477,478,479,480,481,482,483,484,485,487,488,489,492,494,495,499,500,502,506,507,509,515,516,523,524,527],effectiv:[254,380],efffect:501,efficaci:39,effici:[0,1,3,6,7,8,9,10,12,14,15,16,17,39,60,63,70,123,154,197,203,204,205,206,207,220,221,229,231,235,248,271,300,302,303,312,317,321,335,377,378,384,389,393,399,407,409,426,431,435,446,450,451,460,478,504,529],efficienc:15,efficient:[9,302],effort:[5,7,498],efftemp:[106,107,164],efi:[458,459],efield:[2,3,210,217],eflux:250,eforc:204,eggebrecht:[409,466],ehanc:210,ehb:[458,459],ehex:[2,6,210],eigensolv:3,eigenvalu:[299,300,377],eigtol:3,eike:172,eim:[2,3,4,7,9],eimp:515,eindhoven:9,einstein:[6,312,345],either:[1,2,3,6,8,9,10,11,12,14,15,16,21,32,41,44,50,61,65,74,75,113,118,124,127,130,152,153,158,160,161,176,177,178,181,186,191,199,203,204,205,206,207,210,218,220,222,223,225,228,229,230,231,232,238,246,252,253,257,261,268,269,271,272,276,294,298,306,314,318,320,321,323,331,335,342,349,353,356,360,362,375,377,378,380,385,386,390,393,399,401,407,416,420,423,426,427,429,440,441,443,446,448,451,454,456,459,475,479,480,482,484,492,495,497,499,500,504,506,509,512,514,524],ejtehadi:[407,422,460],elaplong:[211,212,252,500,515,524],elaps:[3,202,211,212,213,214,224,231,237,249,250,252,254,255,268,303,320,328,338,339,340,352,353,355,357,468,492,500,502,503,507,511,515,516,524],elast:[4,6,7,9,44,45,46,55,122,210,270,299,353,385,388,423,455,481],elastic:[0,4],elastic_t:4,elba:28,electr:[6,210,216,237,255,377,378,419,458,459,489,518,523],electric:15,electrolyt:[9,488],electron:[3,6,7,9,13,40,106,107,124,130,162,164,169,204,210,216,234,235,255,256,272,284,295,310,341,347,385,387,394,396,408,412,416,418,419,443,446,456,457,466,482,485,489,497,517,518,523],electron_integr:216,electron_temperatur:216,electron_unit:418,electroneg:[6,308,309,310,408,419,466],electroneg_compon:466,electronic_dens:3,electronic_specific_heat:3,electronic_thermal_conduct:3,electrostat:[6,9,15,17,217,246,308,310,311,348,377,378,407,412,418,431,439,441,459,466,488],eleftheri:317,elem1:[419,443,467],elem2:[419,443,467],elem:466,element1:[314,394,416,466],element2:[314,394,416,466],element:[3,6,7,8,9,12,13,42,65,87,97,113,115,123,128,131,146,152,153,154,155,156,157,158,159,160,161,165,166,167,168,170,171,174,203,204,205,206,207,208,210,211,216,220,222,223,299,314,342,349,394,395,399,408,416,417,418,419,426,427,428,443,444,445,446,452,456,457,458,459,466,467,477,480,481,482,485,515,518,524,528],elementn:[394,416],elementset:216,elev:511,elif:[152,360],elig:[3,217,226,227,243,246,425],elimin:[3,6,75,176,247,254,255,317,321,344,345,492],elj:412,ellad:9,elliot:9,elliott:9,ellips:[4,6,9,75,90,156,201],ellipsoid:[3,4,6,7,9,13,40,42,75,90,124,142,156,178,201,202,203,204,254,268,273,277,281,282,287,291,317,335,382,383,386,422,441,460,476,497,507,527],ellipsoidflag:497,elong:[235,255,515],elp:[458,459],els:[3,7,8,12,75,118,127,128,131,206,218,219,220,222,223,246,271,317,335,347,348,349,358,360,377,426,496,508,524,528],elsewher:[8,268,335,443,457,458,459,509,515,524],elt:443,emac:0,email:[0,3,5,7,8,9,11,419],emb:[3,9,356],emb_lin_neg:443,embed:[3,4,5,7,9,11,12,13,28,96,154,176,347,394,416,419,439,443,444,445,456,476,486,495],embt:185,emi:[7,9],emile:9,emol:[458,459,515],emphas:423,empir:[9,216,339,418],empiric:395,emploi:[238,299,308,312,481],empti:[3,59,75,176,180,317,377,389,430,497,508,509,524],empty:3,enabl:[3,6,8,9,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,36,37,39,40,43,45,46,47,48,49,50,51,53,54,55,56,62,63,64,66,70,82,85,88,89,91,95,96,106,107,108,109,110,111,115,118,122,123,129,130,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,154,155,156,157,160,162,164,165,169,170,172,176,177,184,185,187,188,189,190,191,192,193,195,196,198,199,203,204,205,207,208,210,211,212,213,214,215,217,221,224,226,227,228,230,231,232,237,238,239,240,241,242,243,244,245,246,247,248,249,251,252,253,254,255,256,257,258,259,260,261,263,264,265,266,267,269,271,272,273,274,275,276,277,278,279,280,281,282,283,284,286,287,289,290,291,292,293,294,295,296,298,299,300,302,303,307,308,309,310,311,312,313,314,316,317,318,320,321,322,323,324,325,326,327,328,330,331,332,334,335,341,342,343,344,345,347,348,350,352,353,354,355,356,359,361,363,364,366,367,368,370,371,372,378,386,388,392,393,394,395,397,398,399,400,401,402,403,404,405,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,443,444,445,446,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,478,479,480,481,482,483,484,485,487,488,489,495,498,499,500,504,506,516,524,529],enclos:[2,6,12,180,203,305,360,443,466,493,495,505,524],encod:[13,39,42,203,206,207,306,426],encompass:[3,6,40,42,59,61,127,179,330,349,476,500],encount:[3,8,12,61,117,222,392,502,524],encourag:[7,8,311,318,333],end12i:124,end12x:124,end12z:124,end1i:124,end1x:124,end1z:124,end2i:124,end2x:124,end2z:124,end:[1,2,3,5,6,8,11,12,14,15,16,17,18,37,40,41,42,57,59,61,75,124,181,182,185,202,203,204,206,207,208,211,212,220,222,223,228,231,238,247,252,254,256,270,271,272,285,293,304,316,317,318,323,335,338,339,340,341,343,346,347,350,354,357,358,376,377,387,388,392,393,413,416,422,429,442,446,460,463,465,467,468,486,492,495,497,498,499,500,502,504,505,509,513,515,518,524,529],end_of_step:8,endbondtors:[3,185,191,497],endif:8,energet:[228,395,459],energi:[0,1,2,3,4,5,6,7,8,9,12,13,19,20,22,23,24,25,26,27,28,29,30,31,33,34,35,37,38,40,43,45,46,47,48,49,51,52,53,54,56,57,58,65,67,68,72,73,83,88,89,90,91,92,93,94,95,96,99,101,104,105,106,107,108,109,111,118,119,120,121,123],energy_compon:466,energy_update_freq:459,enforc:[6,9,59,60,114,202,203,204,205,206,208,210,217,228,231,271,297,299,309,317,321,360,377,431,494,524,525],enforce2d:[2,3,6,201,210],eng:[11,68,73,119,203,244,358,360,408,445],eng_previ:360,engiliti:9,engilitycorp:9,engin:231,engineer:[216,302,323,344,416],enginer:444,enhanc:[212,216,238,492],enlarg:[61,206],enough:[3,40,63,94,178,179,181,182,225,255,303,307,312,317,348,352,353,356,389,393,409,454,497,501,502],enpub:416,ensembl:6,ensight:6,ensur:[3,6,152,203,204,217,221,229,246,247,271,324,346,378,399,415,439,477,485],enter:[59,168,419,446,485,511],enthalpi:[135,273,274,275,318,416,514,515,524],entir:[0,2,3,6,11,14,41,42,65,88,89,96,120,121,123,127,129,130,153,158,177,178,207,210,211,212,219,225,228,230,238,243,246,247,250,254,255,267,271,273,274,275,276,277,278,279,298,300,302,315,317,318,333,347,349,360,393,412,435,448,478,479,497,505,506],entireti:484,entiti:[6,8,40,42,203,317],entri:[3,8,12,37,42,56,68,73,84,102,119,126,129,130,139,142,143,144,145,146,148,149,150,176,199,204,207,211,222,230,241,242,307,358,387,399,417,443,450,451,452,459,467,477,478,479,480,481,482,485,524],entries:207,entropi:511,entry1:[37,56,207,406,450,451,478,479],entry2:207,entryn:207,enumer:[179,203,490],enumuer:6,env:393,environ:[1,3,6,11,12,15,16,17,206,248,253,298,393,394,399,406,408,417,418,456,480,494,508,524],eos:[9,241,242],epair:[118,207,395,421,425,458,459,515],epen:[458,459],epfl:[248,253],epp:412,epq:412,eps0:488,eps14:439,eps:[455,476],epsilon0:482,epsilon:[3,6,35,45,46,50,53,54,95,184,211,212,246,317,335,352,356,384,386,398,404,405,407,409,410,411,412,420,422,424,425,426,429,430,431,432,433,434,435,436,437,438,439,442,447,453,460,461,471,477,483,484,487,488,506,518,523],epsilon_0:489,epsilon_14:404,epsilon_:460,epsilon_d:410,epsilon_i:[422,448,460],epsilon_i_:460,epsilon_i_a:[422,460],epsilon_i_b:[422,460],epsilon_i_c:[422,460],epsilon_ij:448,epsilon_j:[422,448,460],epsilon_j_:460,epsilon_j_a:[422,460],epsilon_j_b:[422,460],epsilon_j_c:[422,460],epsilon_lj:460,epton:455,eqch:173,eqeq:[458,459],eqp:412,eqq:412,equal:[2,3,6,8,11,12,16,39,41,54,65,68,71,73,75,80,84,94,95,99,102,119,121,126,128,131,153,156,172,174,176,178,202,206,207,210,211,212,213,214,217,220,221,222,223,224,225,229,231,232,237,246,247,249,250,252,254,255,257,260,261,268,269,276,287,288,298,300,303,305,307,308,309,312,314,316,317,318,320,323,328,330,338,339,340,343,344,345,347,349,350,352,355,357,358,360,376,380,386,388,389,390,392,393,395,408,413,414,421,422,425,429,440,446,447,456,458,459,460,462,463,464,466,467,468,478,479,484,485,489,493,494,495,497,499,500,504,505,508,511,513,515,524,525],equat:[3,6,7,8,9,99,117,123,130,177,186,198,210,229,235,236,238,240,241,242,248,254,255,257,260,269,270,271,272,276,294,298,300,307,308,312,318,321,322,335,343,347,350,352,353,355,357,377,378,382,407,412,413,414,418,419,420,423,428,440,441,443,448,451,460,463,465,470,471,473,474,479,489,518],equation:[248,298,370],equi:272,equidist:270,equil:[3,308,381,504,529],equilater:507,equilibr:[3,4,5,6,7,9,61,99,178,210,217,220,228,229,246,269,271,272,294,295,304,307,308,309,310,343,344,345,350,408,409,458,459,493,507],equilibria:350,equilibribum:[226,227],equilibrium:[1,3,4,6,7,20,23,25,26,27,28,31,34,35,37,38,43,47,48,49,51,53,56,58,61,161,162,185,187,229,231,246,247,248,255,257,271,276,294,307,308,312,316,321,323,331,335,342,343,345,350,361,363,367,370,408,443,452,466,518],equilibrium_angl:8,equilibrium_dist:8,equilibrium_start:216,equival:[6,12,13,28,61,63,128,136,137,145,150,176,180,203,207,218,219,220,222,223,229,231,246,254,271,294,304,316,317,355,395,413,418,466,480,482,483,497,500,505,506,515,518],equlibrium:6,equliibr:[308,310],er3:177,eradiu:[40,124,204,418,497],eras:[320,344],erat:[231,441],erc:409,erfc:[409,431,448],erforc:[124,204],erg:523,erhart:[217,416,480,482],ermscal:396,ernst:9,eror:3,eros:443,erose_form:443,erot:[2,3,6,9,65],errata:[480,482],erratum:352,erron:3,error:[0,1,2],erta:423,ervel:[124,204,497],escap:[232,518],especi:[8,15,166,178,210,217,225,246,307,312,315,316,393,494,516],espresso:[9,311],essenti:[11,12,26,96,140,159,160,161,164,165,166,167,168,170,187,220,299,351,378,395,409,431,482,502,515],essential:[8,276],essex:28,establish:[95,250],estim:[1,3,6,10,12,37,41,56,74,99,153,216,225,236,269,318,335,342,377,378,384,448,459,478,479,511,515],estimat:3,esu:523,esub:443,eta:[6,257,271,307,308,310,351,417,419,422,456,481,485,523],eta_dot:271,eta_ij:456,eta_ji:419,etag:[40,497],etail:515,etap:271,etap_dot:271,etc:[1,2,3,4,6,7,8,9,10,11,12,13,14,15,39,40,42,54,63,71,97,98,99,104,120,121,124,126,129,153,155,158,159,160,161,162,164,165,166,167,168,170,172,178,180,181,182,191,203,204,206,207,210,211,216,217,218,219,222,223,226,227,231,232,244,246,247,254,271,303,314,319,347,348,356,360,376,377,386,387,388,389,391,416,417,426,439,441,446,454,458,459,477,480,482,485,492,495,497,498,499,504,506,507,511,512,513,514,515,516,518,523,524,527,529],ethernet:17,etol:[386,388,492,511],etot0:307,etot:[6,104,106,107,121,153,164,207,235,255,269,307,514,515],eu2:177,eu3:177,euler:[318,386,388],eulerian:216,euqat:469,europhi:257,ev_tal:8,evalu:[2,3,9,11,12,37,56,75,95,96,99,118,128,131,152,154,158,168,176,178,184,202,203,204,206,207,211,212,213,214,216,218,219,220,221,222,223,224,231,237,247,249,250,252,253,254,255,299,305,308,318,320,324,328,338,339,340,349,352,355,357,358,360,384,386,446,448,450,451,456,462,464,466,478,479,492,493,495,499,500,502,504,505,506,507,511,513,515,524,525],evaluat:[377,378,524],evalut:[360,495],evan:[166,294],evanseck:[6,19,184,404,509],evapor:[2,3,9,59,112,210,217],evaul:[8,386],evdwl:[118,154,458,459,515],even:[3,6,8,12,14,15,16,17,33,39,41,52,57,59,61,63,65,74,75,96,118,131,176,179,180,194,197,199,203,204,207,210,211,212,217,218,219,222,223,225,226,227,229,231,232,235,238,252,255,269,271,272,299,303,312,314,317,319,330,335,343,347,350,352,356,358,369,377,384,386,388,393,398,418,419,423,426,429,448,460,485,486,490,497,498,500,502,503,504,506,507,509,512,514,515,516,518,529],evenli:[3,41,57,153,199,225,257,429,486],event:[2,3,6,8,65],eventu:[3,6,12,14,180,511],eventual:308,ever:[9,54,56,253,335],everaer:[407,422,460,476],everi:[0,1,2,3,6,8,9,11,12,14,15,39,41,75,76,99,124,131,140,166,181,203,204,205,206,207,208,210,211,212,213,216,217,218,219,220,221,222,223,224,225,226,227,228,229,231,232,236,238,243,244,246,248,250,251,252,257,258,267,271,272,276,287,293,297,298,299,303,304,305,306,307,308,309,310,312,314,315,317,318,319,321,323,332,335,337,338,339,340,341,342,343,346,347,348,349,350,358,360,376,378,388,389,390,393,413,415,426,439,458,459,466,472,491,492,493,497,499,501,502,504,505,506,511,512,513,515,516,519,524,529],everyth:[8,118,519],everywher:[127,433],eviri:418,evolut:[238,248,257,300,492],evolv:[257,300,348],ewald:[2,3,5,6,7,8,9,12,96,121,130,153,348,377,378,386,400,402,403,409,412,418,431,435,453,461,476,478,483],ewald_disp:412,ewalddisp:3,exact:[21,41,44,75,134,172,181,186,225,228,247,248,254,255,256,303,312,313,335,347,362,377,406,499,504,511,524,527,529],exactli:[3,6,12,16,37,41,42,56,61,75,76,99,127,156,162,169,178,199,211,212,222,225,231,236,241,247,254,255,256,272,284,285,295,299,306,307,335,340,341,354,393,406,413,416,423,426,440,448,450,451,478,479,499,500,507,511,524],exager:518,examin:[6,8,16,228,299,318],examp:[495,524],exampl:[0,1,2,3],exce:[3,6,15,16,17,41,60,75,180,218,219,222,223,225,229,231,236,243,271,299,314,319,325,326,335,386,393,497,524],exceed:[3,41,61,225,231,271,335,459,505],excel:418,except:[1,2,5,6,8,10,11,15,19,20,21,22,23,24,25,26,27,28,29,30,31,34,36,37,40,41,43,44,45,46,47,48,49,51,53,54,55,56,61,62,65,75,97,98,119,123,128,153,155,156,157,158,159,160,161,162,164,165,166,167,168,169,170,171,178,182,184,185,186,187,188,189,190,192,193,195,196,198,199,202,203,204,207,210,213,219,220,222,224,225,229,231,239,245,246,249,252,254,256,271,272,273,274,275,276,277,278,279,280,281,284,285,289,291,292,294,295,296,300,309,310,317,320,321,331,335,341,347,355,358,359,360,361,362,363,364,366,367,370,371,372,377,378,380,383,387,388,389,391,392,393,394,395,397,400,401,402,403,404,405,406,407,408,409,411,412,413,416,417,418,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,441,444,449,452,453,455,458,459,460,461,468,476,477,478,480,481,482,483,485,487,488,489,492,494,495,497,499,500,502,505,506,507,508,509,511,515,518,523,524,525,528],exception:495,excess:[221,418],exchang:[2,3,6,8,63,64,210,216,217,238,246,250,254,309,317,343,347,350,377,393,418,512],exchange:377,excit:418,excite:418,exclud:[3,6,9,12,15,16,65,75,112,123,129,152,158,165,166,182,203,219,226,227,258,267,302,315,317,342,353,358,386,387,389,401,423,426,429,440,441,448,475,509],exclude:389,exclus:[1,3,12,15,95,184,408,446,448,506,516],excurs:[271,492],exectubl:12,execut:[1,2,3,4,6,8,9,11,12,16,62,179,206,251,311,360,376,379,392,493,495,505,508,511,524],exempl:466,exemplari:247,exemplifi:418,exert:[6,252,255,287,312,354,355,356,378],exhaust:[216,392,524],exhibit:[100,238,250,271,385,418,506],exist:[3,6,7,8,11,12,13,36,55,57,61,71,74,134,178,179,198,205,206,207,210,215,224,227,229,232,246,302,303,305,306,358,359,361,363,364,365,367,371,381,387,414,426,458,475,486,493,495,497,498,499,508,509,510,519,524,525,527],exit:[2,3,11,12,41,59,203,225,376,392,495,496,505,514,515,516,524],exlanatori:3,exp6:2,exp:2,expand:[2,3,44],expans:[12,152,197,203,508,524],expect:[1,3,8,12,13,14,15,16,17,18,41,42,75,112,159,170,176,199,225,237,246,248,268,298,304,306,307,312,317,358,378,389,406,443,446,448,492,495,497,499,502,506,511,524],expens:[6,75,207,298,302,317,347,358,377,378,389,393,495],experi:[6,13,14,224,232,251,260,270,304,316,317,384,388,413,448,506,511],experienc:[6,12,15,259,260],experiment:[16,246,377,393,511],expert:12,expertis:7,expir:[515,516],explain:[1,3,6,8,9,11,12,17,41,61,65,68,71,73,75,76,77,80,81,84,94,102,129,158,166,199,203,204,206,207,210,219,220,223,225,227,229,231,271,287,298,306,317,331,358,360,376,377,380,387,388,392,398,416,429,466,468,484,495,498,499,502,504,507,518,519,524,529],explan:[3,6,61,124,129,152,203,204,219,270,298,426,491,494,495,497,506],explanatori:[3,8,128,203,204,218,219,222,317,387,494,524],explantori:[3,313],explic:447,explicit:[6,9,11,21,44,81,95,124,127,172,186,211,212,231,318,325,326,362,377,383,395,396,399,404,406,416,418,430,440,483,491,494,498,501,519],explicitli:[3,6,8,12,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,75,123,155,165,168,176,178,184,185,187,188,189,190,192,193,195,196,199,203,204,207,213,224,231,239,245,247,249,254,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,306,307,309,310,317,320,321,340,341,347,355,361,363,364,366,367,370,372,387,393,394,395,397,400,401,402,403,404,405,406,407,408,409,410,412,413,415,416,417,419,420,421,422,423,424,425,426,430,431,432,433,434,435,436,437,438,439,440,444,446,448,449,450,451,452,453,455,459,460,461,468,469,470,471,472,473,474,476,477,478,479,480,481,482,483,485,487,488,489,497,499,500,506,507,509,510,516,518,519],explictli:[15,510],exploit:[14,16,300],explor:[130,177],expon:[3,308,310,318,416,420,422,425,439,447,461],exponenti:[95,318,420,456,477,485,489,511,524],expos:11,exposit:[216,413,415],express:[6,152,164,178,211,212,229,268,298,308,318,347,353,360,399,416,418,433,443,466,467,476,524],expression:360,expressiont:399,extend:[0,3,6,7],extens:[3,6,9,15,16,44,45,46,53,55,65,67,72,83,90,91,92,95,96,99,101,104,107,108,118,120,128,131,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,204,210,213,214,217,223,224,230,233,237,238,244,245,246,248,249,250,252,254,256,269,271,276,285,298,299,315,316,317,320,323,328,331,332,334,338,339,340,341,342,344,345,347,349,352,356,357,422,443,446,459,460,467,514,515,523],extensiv:[65,210,515],extent:[1,3,41,42,45,59,75,176,180,203,215,225,252,354,357,377,380,395,462,464,478,479,494,497,500],exterior:[3,6,176,356],extern:[2,3,9,94,95,176,206,210,224,229,237],extra:[3,6,8,11,12,15,16,40,41,46,63,75,112,120,121,123,130,153,155,156,157,159,161,164,165,166,167,168,170,171,177,178,179,180,207,222,225,227,271,305,306,307,317,335,386,387,390,391,393,412,423,426,429,443,448,494,495,497,500,509,518,524],extract:[3,6,11,13,35,65,67,72,83,95,101,118,126,128,131,211,212,310,388,409,419,443,467,495,502,514],extract_atom:11,extract_comput:[11,495],extract_fix:11,extract_glob:11,extract_vari:11,extramake:[12,14],extrapol:1,extrem:[1,3,6,16,60,206,221,229,231,271,345,418,481,518],extrema:439,extreme:418,extrins:216,f77:[5,7,12],f90:[5,7,12],f_1:6,f_5:[174,349],f_a:[480,481,482],f_ave:128,f_c:481,f_f:482,f_fix_id:307,f_foo:524,f_harm:345,f_i:[28,456],f_id:[6,75,128,131,203,204,210,218,219,220,221,222,223,266,337,349,515,524],f_ij:456,f_indent:223,f_int:344,f_j:28,f_jj:99,f_k:456,f_langevin:347,f_max:[307,312],f_msst:269,f_r:[255,480,481,482],f_sigma:399,f_solid:345,f_ss:6,face:[3,6,59,61,75,166,176,180,215,352,354,355,356,357,380,422,443,460,497,500],face_threshold:176,facet:176,facil:[0,12],facilit:[6,13,42],fact:[6,8,15,248,303,335,345,423,458,466,509],factor:[1,3,6,12,17,23,27,31,34,35,39,41,46,47,59,60,61,76,95,99,112,119,126,127,130,152,172,177,180,184,195,202,203,206,207,211,212,220,225,229,231,232,238,246,251,254,256,257,269,271,272,276,300,304,308,316,318,321,324,326,335,339,343,350,351,352,356,367,378,380,387,393,395,396,399,400,402,404,409,410,411,413,414,418,423,426,430,431,443,446,448,450,451,452,453,459,461,468,477,483,494,497,500,501,506,509,511,512,515,518,523,524],factori:[3,495],factoriz:377,fail:[3,9,11,12,61,182,229,232,377,386,388,411,459,495],failur:[133,463,496,524],fairli:[11,448,506,511,519],faken:77,falcon:251,fall:[3,6,207,222,303,495,524],fals:[94,358,466,524],fame:8,famili:[485,494],familiar:[0,11,519],fan:456,far:[3,6,12,16,59,61,63,94,203,204,207,208,225,226,227,229,232,271,298,316,317,335,352,363,367,384,388,389,484,495,497,502,515],farago:254,farrel:[480,482],farther:203,fashion:[6,8,41,75,178,207,210,211,212,217,225,227,232,246,248,252,268,269,271,273,274,275,276,277,278,279,288,291,292,294,295,296,306,307,309,317,323,327,334,337,345,347,351,352,353,355,357,388,426,440,500,509,524,528],fasolino:428,fast:[6,7,9,12,13,15,16,39,203,204,282,307,318,348,377,378,401,440,441,446,476,478,479,499,504,506,515,525,529],faster:[1,6,9,11,12,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,41,43,45,46,47,48,49,51,53,54,56,63,65,115,123,155,165,184,185,187,188,189,190,192,193,195,196,199,203,204,207,213,224,225,231,239,245,249,253,254,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,304,308,309,310,317,320,321,335,342,344,347,351,355,361,363,364,366,367,370,372,377,378,390,391,393,394,395,397,399,400,401,402,403,404,405,406,407,408,409,412,413,416,417,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,444,449,452,453,455,459,460,461,468,476,477,478,480,481,482,483,485,487,488,489,492,500,506,510,518],fastest:[1,6,16,166,347,348,393,494],fatal:[3,514],fault:[74,459],faulti:12,fava:422,favor:228,favorit:7,fbmc:342,fcc:[2,3,6,7,66,74,77,99,117,210],fcm:[288,524],fcold:238,fdirect:235,fdotr:427,fdt:[2,9,240,241,242,318,322],fdti:95,fe2:177,fe3:177,fe_md_boundari:216,featu:8,featur:[0,3,5,6],fecr:416,feedback:[7,251],feel:[7,251,252,260,298,356,358,388,448],fehlberg:318,felling:445,felt:356,femtosecond:523,fene:[2,3,6,7,10,15,44],fennel:[409,431],fep:[0,2],ferguson:[6,184,509],fermi:[1,9,10,12,14,164,393,482],fermion:418,fernando:442,ferrand:[9,13],few:[1,3,4,5,6,7,9,10,11,12,13,17,39,65,208,218,219,220,222,223,238,255,271,303,306,308,321,349,377,386,387,388,395,466,494,497,502,506,508,516,527],fewer:[1,3,11,14,15,63,260,506],fewest:3,fextern:244,feynman:300,fff:495,ffield:[408,419,458,459,466],fflag1:206,fflag2:206,ffmpeg:[3,12,206],ffplai:206,fft:[1,3,7,9,11,12,14,96,120,121,153,299,377,378,506],fft_inc:[12,378],fft_lib:12,fft_path:12,fftbench:[377,516],fftw2:12,fftw3:12,fftw:[9,12],fhg:[7,9],fhot:238,ficiti:475,fictiti:[6,213,214,237,244,248,300,316,409,431,435,475],field1:[498,502],field2:498,field:[0,2,3,5],fifth:[6,331,420,452],figshar:298,figur:[1,3,8,12,15,307,494,495,519],fij:412,file0:298,file1:[11,13,242,298,346,360,387,502,504,508],file2:[11,13,242,346,360,387,502,504,508],file:[0,1,2,3,4],file_from:205,filen:387,filenam:[3,12,13,15,37,41,56,199,203,204,206,207,208,216,219,220,221,222,223,225,230,241,242,298,302,305,308,309,310,313,314,317,318,319,346,347,374,375,376,387,388,394,395,399,409,416,417,419,420,428,443,444,445,450,451,452,456,457,458,459,466,467,477,478,479,480,481,482,485,493,494,495,498,499,504,508,515,524,527,528,529],filennam:504,filep:[3,203,204,207,499,504,529],filepo:314,fill:[7,9,178,206,303,347,380,389,399,446,459,500,519],filter:[207,216],final_integr:8,final_integrate_respa:8,finchham:[6,160,411],find:[0,3,4,6,7,8,9,11,12,13,15,37,39,56,63,75,77,95,128,181,199,208,217,228,229,241,242,243,246,270,298,303,304,312,316,384,386,388,389,409,426,431,435,443,450,451,466,476,478,479,518,519,524],find_custom:8,fine:[15,16,182,213,237,345,389,393,519,524],finer:[152,178,524],finest:377,finger:[178,202,268,500],finish:[6,11,41,225,360,374,376,377,390,392,393,484,502,524,525],finit:[0,3,4],finni:[7,416,476],finverse:235,fiorin:[9,230],fire:[2,3,210],firebrick:207,first:[0,1,2,3,5,6,8,9,10,11,12,14,15,16,20,37,39,41,42,45,46,54,56,59,61,63,64,74,75,87,96,99,113,114,115,117,123,127,128,139,142,145,146,150,153,163,166,172,174,176,177,179,180,181,185,199,203,204,205,206,207,208,210,211,219,220,222,223,225,228,231,241,242,246,247,252,257,268,269,270,271,298,300,305,306,307,309,314,317,321,323,331,332,333,335,336,337,344,345,346,347,349,358,360,361,368,380,386,387,388,389,392,393,394,395,398,399,400,402,404,406,408,409,416,418,419,420,423,424,426,427,428,429,430,431,435,440,441,443,445,446,448,450,451,452,456,458,459,466,467,475,477,478,479,480,481,482,485,489,492,493,494,495,497,498,499,502,504,506,509,510,511,514,515,518,519,524,525,526,527,529],fischer:[6,9,18,19,184,404,509],fit:[3,6,9,12,37,56,199,241,316,335,395,399,428,443,448,450,451,471,478,479,481,505,519,524],five:[77,164,307,387,399,444,497,511],fix:[0,1],fix_deposit:3,fix_flux:216,fix_heat:238,fix_id:[3,229,269,271,273,274,275,276,277,278,279,304,307],fix_manifoldforc:519,fix_modifi:[2,3,6,8,120,121,160,163,210],fix_nh:8,fix_nv:519,fix_poem:3,fix_pour:3,fix_qeq:3,fix_rattl:321,fix_reax_bond:458,fix_saed_vtk:319,fix_setforc:8,fix_shak:321,fix_srd:3,fixedpoint:[229,271],fixextern:244,fixid:[206,216],fji:412,flag1:[234,391],flag2:[234,391],flag:[3,8,9,11,12,14,15,16,38,40,58,69,78,79,86,87,94,97,98,103,113,114,116,129,130,173,177,181,200,203,204,206,207,208,223,228,230,234,251,254,258,260,267,268,299,306,317,331,334,335,342,346,355,358,373,375,378,387,391,392,393,395,425,430,443,446,475,490,492,494,495,497,498,499,501,502,503,507,519,524],flag_buck:403,flag_coul:[403,412,435],flag_lj:[412,435],flagfld:[401,440,441],flaghi:[3,401,440,441],flaglog:[401,440,441],flagn:234,flagvf:[401,440,441],flat:[6,15,347,352,353,357],flavor:[2,7,12],fld:[352,440,441],flen:396,flex_press:396,flexibl:[3,6,8,179,206,219,230,248,272,343,350,418,481,515],flip:[3,6,231,271,354,355],floor:524,flop:12,floralwhit:207,flow:[4,5],fluctuat:[6,66,95,229,246,247,254,257,271,276,298,299,304,322,345,347,370,414],fluid:[2,6,7,9,10,40,69,79,86,96,103,116,127,128,158,173,175,229,231,249],fluid_veloc:261,flush:[3,207,514],flux:[2,3,6,65],flv:206,fly:[7,9,12,41,206,210,216,221,232,235,317,321,348,399,446,515,518],fmackai:9,fmag:233,fmass:300,fmax:[386,515],fmomentum:235,fmsec:[2,207,254,255,268,271,304,317,338,339,506,517,523,525],fname:376,fno:[9,15],fnorm:[386,515],fnpt:235,fnve:238,fnvt:235,foce:426,fock:396,focu:321,fogarti:[9,310,459],foil:[152,298,467],fold:[15,333,506],folk:7,follow:[0,1,2,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19,22,23,24,25,26,27,28,29,30,31,34,35,37,40,41,42,43,45,46,47,48,49,51,53,54,56,61,65,66,74,75,77,88,99,100,106,107,117,124,127,128,131,152,153,156,157,158,164,166,171,174,176,178,179,184,187,188,189,190,192,193,195,196,197,199,203,205,206,207,210,216,217,218,219,220,221,222,223,225,230,231,232,235,236,240,241,242,244,246,247,248,251,253,254,255,257,260,269,271,276,277,278,279,291,292,294,296,299,300,302,305,306,307,308,310,312,314,316,317,318,319,321,337,338,339,340,343,344,345,346,347,349,350,358,359,363,364,365,366,367,370,372,375,380,383,386,387,388,393,394,395,396,397,398,399,400,401,402,403,404,405,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,447,448,449,450,451,452,453,455,456,457,458,459,460,461,463,465,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,483,484,485,487,488,489,490,492,494,495,497,498,500,502,504,505,506,509,511,512,513,518,519,524,525,528],foo:[4,8,11,12,203,206,244,318,495,508,524],foo_species:318,foot:6,footprint:[12,393],fopenmp:[9,17],forc:[0,1,2,3,5],force_uvm:16,forceatom:260,forcefield:[316,425],forcegroup:257,forcezero:384,ford:412,forestgreen:207,forev:75,forget:[255,518],forgiv:271,fork:[12,203,519],form:[2,3,6,8,12,18,21,44,54,57,65,69,78,79,81,86,87,95,97,98,100,103,113,114,116,127,128,152,153,172,173,182,186,203,207,210,211,212,218,219,220,222,223,227,247,248,254,256,260,268,294,299,310,312,316,317,318,347,352,356,361,362,365,370,383,385,387,388,395,396,399,406,414,416,418,421,425,426,430,442,443,445,446,450,451,452,453,456,458,459,460,466,467,468,476,478,480,481,482,488,491,494,495,497,502,507,514,515,518,524],formal:[6,82,85,99,247,248,254,271,300,335,343,466],format:[2,3,6,7,8,9,12,13,21,37,41,44,56,57,71,81,186,199,203,204,205,206,207,208,219,222,223,225,227,241,242,299,302,306,308,310,313,317,318,319,330,346,347,358,359,362,383,387,388,394,395,399,406,416,419,420,430,443,445,450,451,457,458,459,461,467,478,479,485,486,494,495,497,498,499,502,513,514,515,524,526,527],formation:242,former:[6,12,39,41,207,225,347,351,399,401,503,509,524],formerli:[7,13],formul:[1,6,9,40,66,153,213,237,254,271,294,308,310,316,321,346,377,395,399,416,418,422,443,455],formula:[2,3,6,7,13,20,21,36,44,54,55,74,77,95,97,98,99,104,106,107,116,123,130,131,153,155,156,157,158,159,160,161,162,164,165,166,167,168,169,170,171,177,178,183,185,186,198,202,203,211,212,213,214,219,220,221,222,223,224,231,237,249,250,252,254,255,268,298,299,305,314,320,328,333,335,338,339,340,349,352,353,355,357,358,360,361,362,364,371,380,387,395,396,398,399,404,405,406,407,412,413,416,417,422,423,424,425,427,430,431,433,434,435,437,438,440,441,443,447,448,449,460,461,468,476,477,478,480,481,482,485,487,488,493,497,500,507,514,515,523,524,525],forth:[1,6,11,12,13,14,392,495,500,504],fortran:[3,6,9,11,12,13,244,416,426,443,458,459],fortun:8,forward:[3,8,95,376,388,393],foster:[399,455,456],foul:181,found:[3,6,9,12,77,172,203,228,230,238,246,251,257,263,299,342,348,360,376,389,406,409,412,492,498,499,514],four:[6,11,54,87,113,114,152,174,269,347,370,387,388,446,492],fourier:[2,6,12],fourth:[6,15,115,316,331,342,404,420,452,466],fox:[6,130,184,474,509],fphi:[37,56,478,479],fpic:12,fplo:[37,56,478,479],fprime:[478,479],fqdn:253,fqq:412,fraction:[1,3,6,8,12,15,39,41,85,120,153,181,202,206,207,217,226,227,228,229,269,303,307,314,315,318,335,340,341,380,388,393,399,401,420,423,440,441,502,507],fragment:[42,251,314],fraig:42,frame:[91,152,207,216,269,307,354,422],framer:[206,207],framework:[5,248,394,467],franc:9,frattl:238,fraunhof:9,free:[5,6,7,9,13,28,62,65,74,95,172,211,212,298,335,344,345,346,347,385,388,396,418,439,446,449,456,488,494],freedom:[3,6,8,104,106,107,109,111,112,123,155,156,157,158,159,160,161,162,163,164,165,166,167,168,170,171,219,228,235,246,248,254,255,260,271,272,276,277,278,279,291,292,294,296,300,302,317,321,338,339,340,345,386,412,515,518,525],freeli:[0,6,7,12,156,157,171,176,206],freez:[2,3,6,210,215],frenkel:[6,238,246,345],freq:215,frequenc:[3,6,15,39,113,207,221,285,299,300,307,312,318,375,413,418,459,466,492,506,511,524,528],frequent:[3,66,70,74,76,77,81,96,100,117,152,207,226,227,238,243,343,350,448,483,504,516],fri:[269,307],friction:[4,5,6,9,10,42,210,248,254,307,312,317,347,351,353,423,507],friedrich:324,from:[0,1,2,3,5],front:[269,307,354],frontend:[206,311],frozen:[6,123,182,245,247,255,389,421],fs2:[6,99],fscale:251,fstr:524,fstring:495,fstyle:353,ftol:[386,388,492,511],fuchsia:207,fuction:409,fudg:321,fugac:246,fugacity_coeff:246,fulfil:6,full:[1,2,3,6,9,12,15,16,37,39,40,99,206,220,221,230,238,257,298,318,377,378,393,399,416,418,419,422,459,483,497,499,504,505,509,511,516,518,528],full_energi:[3,246],fuller:386,fulli:[3,6,82,248,253,298,386,388,409,456,457,497,519,526,527],fulton:416,fumi:400,func:[495,524],funcfl:416,functionaliri:230,fund:[0,7],fundament:[335,523],funnel_flow:330,funrol:446,further:[3,4,6,8,12,13,63,65,67,72,75,83,94,101,115,118,127,206,207,210,219,222,223,226,232,236,257,261,300,308,319,322,324,335,347,349,358,378,384,386,387,388,389,394,398,408,446,466,492,511,512,524],furthermor:[26,187,238,318,414,418],furthest:63,futher:3,futur:0,g_ewald:3,g_ewald_6:3,g_ewald_disp:3,g_jik:456,g_p:347,ga3:177,gaa:399,gahler:385,gai:[3,422,476],gain:[15,342],gainsboro:207,galindo:447,game:251,gamma0:28,gamma:[3,6,28,254,257,261,299,307,308,310,312,351,413,414,417,422,443,447,470,473,474,477,480,482,485,515],gamma_:[3,347,353],gamma_ijk:480,gamma_n:[353,423],gamma_p:[3,347],gamma_t:[353,423],gammaa:447,gammafactor:257,gammar:447,gan:[456,477,480,482,485],gan_sw:456,gan_tersoff:456,ganzenmuel:[7,9],ganzenmul:9,gao:[6,19,184,404,509],gap:[199,440,441,457,467],gap_2014_5_8_60_17_10_38_466:457,gap_exampl:457,gaseou:7,gass:246,gather:[11,505],gather_atom:11,gather_scatter_loop_unrol:9,gathert_atom:11,gauch:190,gaug:12,gauss:[2,3,118,172,211,212,410],gaussian:[6,40,65,99,113,115,232,247,248,254,300,316,335,339,357,377,413,415,418,421,457,476,492,524,525],gave:[3,448],gavhan:15,gaybern:[2,3,6,7,9,15,156,386],gcc:16,gcmc:[2,3,7,9,210,217],gcores:235,gd3:177,gdot:441,gdrudes:235,ge4:177,gec:[480,482],gen:[271,272],gener:0,genom:7,gentler:[352,355,357],gentli:417,geom:[6,377,415,492,525],geometr:[3,6,7,8,42,59,61,75,86,129,168,169,178,180,203,207,213,224,225,232,237,250,271,277,278,279,291,292,294,296,317,320,328,338,339,340,356,358,377,380,388,398,401,405,407,409,412,418,420,422,424,431,432,433,434,435,436,437,438,439,440,441,442,447,448,451,460,468,479,483,484,487,488,490,497,500,507,515,524],geometri:[3,6,7,9,13,24,38,41,58,75,86,166,178,200,225,226,227,229,232,252,322,373,380,448,497,500],georg:[7,9],georgia:13,gerar:524,gerber:439,germani:9,germann:[276,433,492,511],germano:422,gerolf:13,get:[0,1,3,6,8,9,11],get_natom:[11,495],get_rank:11,get_siz:11,getenv:524,gettimeofdai:12,gewald:[6,377],gezelt:[409,431],gflop:12,gflp:12,gfortran:9,ghost:[3,6,7,12,15,60,63,64,77,176,181,182,229,231,255,271,306,317,319,375,377,389,393,413,414,415,418,423,430,490,502,507,518],ghostwhit:207,giacomo:9,gif:[4,206],gifsicl:206,gigabit:17,giko:2,gikot:2,gillan:467,gingold:[470,471,473],gio:2,git:[7,12,519],github:[8,13,16,230,248,253,457],give:[0,1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,54,75,100,117,124,158,161,165,178,203,204,207,213,215,219,220,222,223,229,231,248,271,289,294,298,299,304,312,314,317,349,377,378,386,389,390,393,395,399,415,418,425,426,443,446,448,460,480,481,482,492,494,495,497,507,511,518,525],given:[3,4,5,6,7,9,11,12,15,16,21,26,36,44,55,63,65,66,70,75,117,124,135,136,137,139,140,143,144,145,146,147,148,149,150,151,152,153,172,176,180,186,187,198,199,203,204,205,207,210,217,219,221,226,227,229,231,232,236,238,246,247,248,249,251,257,263,265,268,270,271,276,297,298,299,300,307,308,314,316,318,321,330,331,333,335,337,342,347,348,351,352,353,356,362,371,377,378,393,394,395,399,400,402,403,405,406,407,408,409,410,413,414,415,416,418,419,420,422,423,425,431,432,433,435,443,444,445,446,447,448,449,450,451,452,453,456,460,461,463,465,466,467,476,489,492,495,497,499,500,506,507,511,523,528,529],gjf:254,gjwagn:7,gkio:2,gko:2,gkot:2,gld:[2,3,210],gle4md:[248,253],gle:2,glitch:3,glob:508,global:3,glosli:[378,446],glotzer:[317,413],glue:11,gmail:[7,9,13],gmake:[12,16],gmask:[3,524],gnu:[0,7,9,12,16],gnuplot:[11,13],goal:[5,12,39],goddard:[6,9,24,308,309,310,372,418,425,458,459,509],goe:[12,54,152,178,202,238,268,327,386,389,412,417,424,433,436,468,489,500,504],gold:[74,207],goldenrod:207,goldman:307,gone:3,good:[1,3,6,10,12,15,16,41,77,130,176,177,225,254,269,271,304,308,314,321,342,377,388,389,394,407,415,416,446,448,478,479,485,492,506,511,515,519],googl:251,gordan:152,gordon:6,got:[2,519],gould:[6,184,509],gov:[0,7,9,13,394,416,419,523],govern:257,gpa:395,gpl:[0,7,8,12],gpt:[9,446],gpu:[1,2,3,4,7],gpuid:393,grab:[3,6],gracefulli:3,grad:[6,9,213,237,270],gradient:[6,7,8,12,13,134,139,229,237,238,249,250,270,294,309,343,347,384,385,388,441,450,451,459,478,479],gradient_correction:465,graduat:302,graft:228,grai:207,grain:[5,6,7,9,10,28,35,40,54,70,178,181,190,210,242,298,302,317,318,335,420,424,446,451,461,479,506,509],gram:[219,416,523],grama:[9,310,459],gran:[2,3,6,9,210,352],grana:382,grand:[3,9,210,217,246],granflow:5,granular:[0,3,4,5],graph:11,graphen:501,graphic:11,grasp:5,gravit:249,graviti:[2,3,6,210,217,246],grdient:216,great:[3,13,307,519],greater:[1,3,10,63,75,94,176,207,229,247,271,298,340,354,393,398,400,402,403,429,448,492,494,497,500,506,511,524,525],greathous:13,greatli:[130,238,511],green:[2,6,99,142,143,206,207,299,300,343,399,519],green_kubo:6,greenyellow:207,greffet:312,greg:[7,9],grest:[45,46,228,335,378,403,423,435,509],grew:75,grid:[3,12,41,64,130,166,177,180,204,225,257,312,335,347,348,375,377,378,491,494,497,499,501,506],grigera:6,grime:40,grmask:[3,524],gromac:[2,3,359,386],gromacs:[6,7,203,386,424,476],gronbech:[254,377],groot:413,ground:[6,88,89,240,322,418],group1:[160,181,389],group2:[96,154,160,179,181,389],group2ndx:2,group:[2,3,5,6,7,8,9,11,12,13,15,39,41,61,63,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],group_id:11,groupbig:335,groupid1:[260,317],groupid2:[260,317],groupid:497,groupnam:389,grouptyp:246,grow:[3,6,8,215,231,232,252,254,271,298,318,349,423,497,509],grow_arrai:8,grow_reset:8,growth:[6,342],grueneisen:9,gsmooth_factor:443,gstyle:[3,494],gtl:7,guarante:[68,73,84,102,119,126,178,181,203,236,308,376,380,507],guess:[3,203,304,498,519],gui:[7,11,519],guid:[1,16,40,82,85,109,110,111,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,210,264,265,324,325,326,327,330,348,455,463,465,469,470,471,472,473,474,507],guidelin:[1,8,14,16,17,18,377,478,479],guidlin:16,gullet:443,gulp:6,gumbsch:385,gunnel:446,gunsteren:[304,338,439],gunzenmul:7,gunzip:12,guo:[6,19,184,190,404,509],gwald:3,gyrat:[2,3,6,65],gzip:[3,12,203,204,206,207,346,388,497,498,502],h12:422,h2o:[40,387,420,451,479],h5cc:205,h5md1:205,haak:[304,338],had:[3,6,11,13,61,65,128,129,203,204,207,208,218,219,220,222,223,228,229,247,248,250,254,255,256,269,271,273,274,275,276,277,278,279,291,292,294,296,303,304,335,338,339,340,347,413,415,423,475,499,503,506,512,515],hafskjold:[6,238],half:[1,3,6,8,9,15,16,39,41,60,61,180,206,218,225,231,254,271,347,352,356,389,393,396,399,407,418,446,459,462,464,497,499,500,507,518],halfwai:[41,206,207,429,519],halperin:100,halsei:423,halt:[41,207,225,238,250,360,514],halv:206,ham:[37,56],hamak:[352,356,407,460],hamilton:74,hamiltonian:[210,248,271,272,339,418,506],hammond:[377,378],han:416,hand:[3,6,9,18,54,74,129,154,178,196,202,206,257,268,318,380,409,418,497,500,507,510],handl:[3,15,206,230,287,310,393,396,418,440,459,485,495,511,518],hang:[3,12,494,495],happen:[3,6,8,12,14,17,63,127,182,207,217,220,389,393,495,498,505],happi:8,haptic:251,hara:481,hard:[1,260,310,316,317,415,458,466,500],harden:[9,468],harder:[352,356,518],hardi:[216,255,377,378,518],hardwar:[1,9,10,12,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,123,155,165,184,185,187,188,189,190,192,193,195,196,199,213,224,231,239,245,249,254,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,309,310,317,320,321,355,361,363,364,366,367,370,372,377,378,393,394,395,397,400,401,402,403,404,405,407,408,409,412,413,416,417,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,444,449,452,453,455,459,460,461,468,477,478,480,481,482,483,485,487,488,489,500,510],hardwir:[3,16,353],hardy2:378,harm:396,harmon:[2,3,4,6,7,8,15,21],harmonic_1:57,harmonic_fix_wal:441,harpertown:17,harrison:395,hart:335,hartre:[396,416,418,446,523],hasan:9,hash:[39,497],hassl:316,hat:[6,270],have:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,42,43,45,46,47,48,49,51,53,54,56,59,61,65,66,68,69,70,73,74,75,76,77,79,81,86,87,94,98,99,100,103,113,114,115,116,117,123,124,125,126,127,142,152,153,154,155,156,157,158,159,161,165,167,170,171,173,174,175,176,178,179,180,181,182,184,185,187,188,189,190,192,193,195,196,199,202,203,204,205,206,207,208,213,215,217,218,219,220,223,224,225,226,227,228,229,231,232,237,239,243,245,246,247,248,249,250,251,252,254,255,256,257,260,263,266,268,269,271,273,274,275,276,277,278,279,280,281,285,289,291,292,294,295,296,298,300,302,303,304,306,307,308,309,310,312,315,317,320,321,328,330,335,336,338,339,340,341,342,346,347,348,349,351,352,353,354,355,356,357,358,359,360,361,363,364,366,367,368,370,372,377,378,380,384,385,386,387,388,389,390,393,394,395,396,397,399,400,401,402,403,404,405,407,408,409,412,413,414,415,416,417,419,421,422,423,424,425,426,427,431,432,433,434,435,436,437,438,439,440,441,443,444,445,446,448,449,450,451,452,453,455,456,458,459,460,461,465,466,468,477,478,479,480,481,482,483,484,485,487,488,489,491,492,494,495,497,498,499,500,501,502,503,504,505,506,507,509,511,512,514,515,516,518,519,523,524,525,527,528,529],haven:495,hayoun:312,hayr:254,hbcut:458,hbnewflag:458,hbond:[2,3,6,9],hbond_cutoff:459,hcn:318,hcp:[66,70,74,77,380,443],hdf5:[9,205],he1:177,head:[6,20,185,361,395,421,425,458,459,512,519],header:[3,6,7,8,12,179,203,206,207,208,219,220,222,223,269,307,314,319,347,387,394,399,416,475,494,497,507,514],heal:506,heat:[2,3,6,9,40,65],heatconduct:2,heavi:[306,335],heavili:[41,225],heavisid:347,hebenstreit:15,hecht:335,heenen:9,height:[206,232,303,388,421],held:[6,75,318,335,388,423],helic:190,helium:397,helix:[2,7,186],hello:495,help:[3,8,12,14,15,16,17,18,203,229,231,269,298,375,399,449,480,482,519,527],henc:[1,3,13,19,20,25,31,34,35,74,75,119,158,160,168,185,219,271,310,335,351,352,356,358,361,363,367,370,378,409,421,439,456],henderson:53,hendrik:9,henin:[9,230],henkelman1:[270,388],henkelman2:[270,388],henkelman:[270,385,388],here:[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,21,36,40,41,44,55,65,68,71,73,74,75,84,102,119,129,130,158,176,177,186,189,198,203,206,207,210,219,225,228,231,246,247,255,257,298,307,310,312,319,347,352,355,357,358,360,362,371,376,382,386,388,392,393,395,396,399,406,419,422,425,426,430,442,456,460,463,465,466,476,478,479,489,495,499,502,518,519,524],herist:348,herrmann:335,hertizian:353,hertz:[2,9,132,353],hertzian:[6,353,423,476],hertzsch:423,hess:377,hessian:[5,385],heterogen:115,heurist:[348,498],hex:[3,178,238,250,380],hexagon:[70,100,443],hexahedron:204,hexat:100,hexord:[2,3,65],hey:[121,153],hf4:177,hfo:408,hftn:[263,287,293,385,386,388],hg1:177,hg2:177,hgrid:335,hibb:300,hidden:[16,495],hienergi:358,hierarch:[7,506],hierarchi:[378,403,404,431,432,435,442,447,506],higdon:[9,440,441],high:[1,3,6,7,9,12,15,18,41,117,199,203,206,225,229,236,255,269,343,347,350,378,385,386,393,395,399,418,422,446,450,451,460,478,479,489,494,506,511,518],higher:[1,15,152,181,207,219,223,226,227,232,238,252,303,312,342,355,357,386,395,418,427,466,524],highest:[232,238,360,387,388,524],highli:[3,6,7,15,178,206,231,254,271,285,307,317,384,386,418,492,511],highlight:[4,6,7,13],hight:421,hilger:[377,378],hill:300,hill_height:13,him:9,hing:9,hint:12,histo:[2,3,6,65,124,177,210,218,219,220],histogram:[1,3,6,12,65,127,176,210,220,222,223],histor:419,histori:[0,2,3],hit:[3,335,354],hmaktulga:[7,9],ho3:177,hoc:370,hocknei:[377,378],hofl:205,hoh:[6,409,431,435],hold:[6,32,61,75,191,219,231,262,301,316,317,331,386,388,423,439,488,508],holdem:316,holder2:378,holder:[377,378],hole:331,holian:[276,433],holm:[298,378],holonom:346,home:[11,12,208],homebrew:12,homepag:[204,206,251],homogen:[294,448],hone:300,honeydew:207,honor:208,hood:446,hook:[2,6,9,11,251,353],hookean:423,hoomd:208,hoover:[6,7,8,168,210,235,254,255,271,272,273,274,275,276,277,278,279,291,292,293,294,295,296,300,304,312,317,338,339,340,345,413,518],hop:[228,388,399,466],hope:[5,13,16,41,42,225,505],hopefulli:[8,386],horizon:455,horn:6,host:[3,12,15,16,230,393],hot:[6,250,272],hotpink:207,hottest:343,hour:[12,516],hourglass:[2,9],hove:443,how:[0,1,2,3,4],howev:[1,2,3,6,7,9,11,12,14,15,16,35,39,41,75,96,99,114,130,152,177,199,203,206,207,220,221,223,225,228,229,232,235,246,247,248,253,254,255,256,257,260,271,298,300,303,304,306,307,312,317,319,335,336,338,339,342,343,347,348,349,350,351,378,380,383,384,388,393,405,407,416,417,423,426,443,446,450,451,454,456,465,477,478,479,482,492,494,495,498,499,505,511,514,515,518,519,524,525],howto:[6,9,65,75,155,156,157,159,161,164,165,166,167,168,170,171,203,210,254,255,271,304,338,339,340,409,425,431,435,525],hoyt:216,hpc:[1,14],hsw:16,htm:416,html:[0,8,9,11,12,14,67,154,253,421,441,506,507],htmldoc:0,htst:511,http:[0,6,7,9,11,13,14,230,248,251,253,298,394,416,440,457,458,459,519],https:519,htype:[409,431,435,439],hubbard:410,huge:[10,12,180,285,335,497,502,514,519],huggin:[7,400,402,476],hugh:216,hugoniostat:[4,9,210,276],hugoniot:[269,276,307],hull:176,hummer:377,hundr:[7,238],hura:6,hwat:306,hwloc:[12,16],hybrid:[1,2,3,6,7,12,15,17,21],hydrat:421,hydrocarbon:[395,408,418],hydrodyanm:40,hydrodynam:[7,9,40,109,111,257,259,260,261,401,440,441,463,465,476,507],hydrogen:[3,6,7,9,243,306,312,395,399,409,418,425,431,435,439,458,459,476,497,506,518],hydrostat:[3,9,229,271,276,304,317],hynninen:[410,421],hyoungki:445,hyper:[15,300],hyperbol:410,hyperradiu:382,hyperspher:152,hyperthread:[16,393],i_0:347,i_1:456,i_csid:6,i_flag1:306,i_mpi_pin_domain:15,i_mpi_shm_lmt:15,i_myflag1:306,i_myflag2:306,i_n:456,i_nam:[124,203,306,337,507],ialloi:443,iatom1:[102,126],iatom2:[102,126],iatom3:[102,126],iatom4:[102,126],ibar:443,ibead:300,ibm:[203,377,446],icc:[9,12,446],ice:6,icm:[251,519],icms:[9,251,519],ico:66,icosohedr:77,ictp:13,id1:[317,388,430,497,500],id2:[317,323,331,388,430,497,500],id_press:[229,269,271,273,274,275,276,277,278,279,304],id_temp:[228,229,269,271,273,274,275,276,277,278,279,291,292,294,296,304,338,339,340],idea:[1,3,6,11,12,41,153,206,207,225,252,298,323,335,343,378,448,505,518,519],ideal:[6,9,40,77,127,246,298,380,440,470,519],idealga:2,idealiz:6,idealli:[12,134,235,518],ident:[1,3,9,12,15,39,40,75,152,203,207,222,229,230,247,248,254,255,268,271,298,300,304,312,314,317,378,387,388,393,400,402,409,411,416,431,433,439,452,458,459,466,467,485,489,492,495,498,511,523,524,525,528],identi:393,identif:70,identifi:[1,3,6,12,37,40,56,74,154,176,178,199,241,242,306,314,335,358,425,430,443,450,451,478,479,492,494,497,500,511,512,514,516],idflag:303,idl:[17,511],idn:[317,388],idr:524,ids:[12,498],ielement:443,ieni:13,ifdef:[8,12],iff:255,iffp:495,ifort:9,ignor:[3,6,11,15,38,41,42,58,63,67,72,75,83,91,95,101,108,118,131,182,200,203,204,206,207,211,212,220,221,222,223,225,229,230,231,232,246,249,253,254,268,271,276,282,288,303,304,305,306,316,317,319,335,338,339,340,346,347,349,352,356,357,358,368,373,379,383,387,388,393,394,405,406,407,416,417,419,422,429,430,443,450,451,452,456,460,477,478,479,480,481,482,484,485,490,492,494,497,498,502,507,509,511,514,524],ignore:3,ihle:335,iii:[6,9,24,308,310,372,425,509],ijj:485,ijk:[366,370,372,399,456,485,494],ijl:370,ikeshoji:[6,238],ikj:485,iko:2,ill:[158,168,219,308],illeg:3,illegal:3,illinoi:[251,377,378,440],illog:495,illustr:[1,4,6,8,9,11,12,15,16,17,18,298,300,388,426,495,518,524],ilmenau:7,ilya:[7,9],imag:[2,3,4,6,11,12,42,69,75,78,79,86,87,97,98,103,113,114,116,124,129,130,173,178],image2pip:206,image:[3,12,203,206,319],imageint:3,imagemagick:[4,206],imagin:[331,346,399,417,426,427,429,444,445,452,456,477,480,481,482,485,509],imaginari:[6,100,246,300,497],imbal:[1,12,41,225,318,393,516],imbalanc:[41,225],imbu:335,imd:2,img:206,immedi:[0,2,3,8,12,178,226,227,232,318,321,336,337,354,494,495,497,499,511,524,528],immediat:[330,524],immens:3,immers:[257,317],impact:[1,4,6,8,9,236,342,395,516],impart:[3,6,249,335,357],impei:[6,431],implement:[1,3,6,8,9,12,16,17,26,82,88,89,95,117,130,160,166,177,178,186,187,198,219,230,234,238,240,248,250,251,254,257,259,260,261,269,271,294,297,299,300,306,307,310,311,312,318,321,322,323,335,342,347,351,370,376,377,378,386,388,393,394,396,399,408,409,411,413,414,416,417,418,426,431,435,439,443,455,458,459,460,480,482,494,495,506,511,518,524,526,527],impli:[3,6,40,61,95,153,202,206,211,212,213,231,237,254,316,338,340,341,377,380,406,495],implicit:[2,3,6,7,247,248,254,282,317,351,352],implicitli:8,implict:410,imporop:387,important:345,impos:[2,6,75,123,167,202,210,213,214,224,237,238,239,244,249,252,261,262,270,285,298,301,320,328,331,332,334,335,342,343,344,345,350,351,352,355,356,357,386,388,390,491,505,516],impose:249,imposs:[1,3,306,497],improp:[0,2,3,7],improper:[3,8,15,362,368,370,371,387,497],improper_coeff:[2,3,361],improper_styl:0,impropercoeff:[3,373],impropertyp:227,imprortant:107,improtant:[211,212],improv:[0,1,9,15,39,41,207,225,238,250,271,299,393,425,431,446,448,459,477,481],imrop:369,in3:177,inaccur:[1,3,6,181,269,377],inaccuraci:356,inact:[425,515,516],inappropri:178,incid:[130,177,232],includ:[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,34,35,36,37,39,40,41,43,44,45,46,47,48,49,51,53,54,55,56,57,61,63,65,68,69,71,73,74,76,78,79,81,84,86,87,91,95,96,97,98,99,100,102,103,104,107,108,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,129,130,152,153,154,155,156,157,158,159,160,161,162,164,165,166,167,168,169,170,171,172,173,175,176,177,181,182,184,185,186,187,188,189,190,192,193,195,196,198,199,202,203,204,206,207,208,210,211,212,213,214,216,217,218,219,220,221,222,223,224,228,229,231,232,233,235,237,239,244,245,246,247,249,250,251,252,254,255,257,258,260,261,266,267,271,272,273,274,275,276,277,278,279,280,281,289,291,292,294,295,296,298,299,300,302,303,306,307,309,310,312,313,314,316,317,318,319,320,321,323,328,331,332,334,335,336,338,339,340,342,345,346,347,348,349,351,352,353,355,356,357,358,360,361,362,363,364,366,367,370,371,372],include:[12,374],includelink:9,includig:[360,376],inclus:[0,3],inclusion:12,incom:251,incompat:[3,11,263,287,293,427],incomplet:[3,11,497],incompress:[272,418],inconsist:[3,182,228,498],inconveni:380,incorpor:[197,307,399,410,519],incorrect:[3,161,254,443],incorrectli:[3,380,423,524],increas:[1,3,6,15,17,37,56,59,61,120,130,153,199,203,204,206,207,221,226,227,228,231,238,241,242,246,254,304,315,316,317,318,343,346,350,377,378,388,393,395,418,422,450,451,459,478,479,481,495,506,511,524],increasingli:418,increment:[3,11,140,213,214,224,225,232,237,243,271,303,323,324,358,376,392,429,466,492,495,509,511,524],incur:[16,219,243,347,494],inde:161,indefatig:7,indefinit:344,indent:[2,3,4,210,223],independ:[4,6,9,11,12,16,41,61,65,86,99,128,131,164,178,202,210,218,219,220,222,223,225,228,229,230,231,232,247,249,254,255,257,260,271,299,304,308,312,317,319,323,334,345,347,380,423,446,492,495,514,525],indetermin:[203,204,207],index:[0,3,6,8,11,12,37,39,40,56,57,68,71,73,84,102,119,128,129,131,176,199,203,207,218,219,220,222,223,241,242,251,253,300,319,347,358,359,360,383,392,448,450,451,458,459,478,479,486,497,512,515,524],indianr:207,indic:[2,3,6,8,11,12,15,20,40,42,54,67,70,72,78,83,87,88,89,96,97,99,101,113,115,123,126,128,153,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,174,185,199,203,206,211,212,218,219,220,222,223,229,271,299,317,347,358,361,370,377,387,389,408,415,419,426,443,446,448,452,458,459,466,480,482,494,496,497,499,515,519,524],indigo:207,indirectli:[6,306,524],indistinguish:254,indium:467,individu:[0,1],induc:[0,3],industri:7,ineffici:[3,6,40,66,70,74,76,77,81,100,117,152,166,206,231,271,299,377,390],inelig:217,inerti:441,inertia:[2,3,6,40,42,65,90,91,92,93],inertiai:129,inertiax:129,inertiaz:129,inexpens:[248,506],inf:[2,3,12,350,500],infer:[3,104,106,107,172,213,214,225,226,227,237,251,302,335,343,350,380,406,419,497,509,515],infil:[3,13,317,494],infin:[3,386,502,515],infininti:206,infinit:[3,232,245,252,254,257,299,335,347,353,354,378,380,418,497,501,523],infinitesim:6,inflect:[410,433,476],influenc:[3,9,41,85,160,268,303,377,378,448,480,481,482],inform:[0,1,2,3,6,7,8,9,11,12,13,14,15,16,39,41,42,61,63,64,65,71,96,126,128,129,130,177,178,184,203,204,205,206,207,208,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,238,239,243,244,245,246,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,267,270,280,281,282,283,284,285,286,287,288,289,290,293,297,298,299,301,302,303,304,305,306,308,309,310,311,312,313,314,315,316,317,319,320,321,324,331,332,333,335,336,338,339,340,341,342,343,344,346,349,350,351,352,354,355,356,357,359,375,377,378,381,385,386,387,388,389,391,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,412,413,415,416,417,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,449,450,451,453,455,456,457,458,459,460,461,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,484,485,487,488,489,490,494,495,497,498,499,501,502,504,509,511,512,514,516,524,526,527,528,529],informat:[8,12,498],infrequ:[6,271,413,492,511,516],infti:[410,440,441],ingtegr:399,inher:[377,386,448],inherit:[6,483],inhomogen:[17,347,448],inidividu:386,init:[3,8,315,466],init_fil:347,init_list:8,init_on:8,init_styl:8,initi:[2,3,4,6,7,8,11,12,13,37,39,40,41,56,59,61,64,75,85,87,94,95,113,114,142,174,179,180,199,202,203,204,206,207,208,211,212,215,216,220,225,227,228,229,231,239,241,242,246,247,251,252,253,254,255,257,262,267,268,269,270,271,276,285,287,299,300,301,306,307,312,315,316,317,318,320,322,332,334,335,337,342,344,345,346,347,348,349,352,353,354,355,357,358,360,377,381,385,386,388,395,396,412,413,415,446,450,451,457,458,459,466,478,479,492,494,495,497,499,500,502,504,505,507,511,512,515,518,524,525,527,529],initial:[2,3,6,87,113,180,524],initial_integr:8,initial_integrate_respa:8,initialis:457,initialt:347,inlclud:11,inlin:495,inner2:[404,424],inner:[3,8,15,57,203,252,360,376,384,385,386,388,392,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,410,412,413,415,416,417,418,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,455,457,458,459,460,461,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,484,485,486,487,488,489,490,506,511,524],inner_distance_cutoff:425,innergroup:260,innermost:[37,56,75,391,478,479,506],innernod:260,innner:437,inordin:348,inorgan:[6,485],inp:[230,360,467,485],input1:[71,124,125,128,129,131,337],input2:[71,124,125,128,129,131,337],input:[0,1],input_doubl:3,inquir:324,insensit:12,insert:[3,5,7,8,9,12,61,178,210,232,246,252,303,377,467,475,495,501,518],insertion:[3,232,246,303],insid:[2,3,6,8,11,75,129,141,147,178,203,204,207,218,232,233,238,243,246,252,257,260,303,317,335,352,354,355,356,357,358,375,380,495,496,497,499,500,507,524],inside:[257,433,495,511],insight:[6,13],instabl:[257,412,465],instal:[1,3,6,8,9,11,12,14,15,16,176,203,205,206,208,378,388,403,404,427,431,435,439,446,492,498,499,504,512,519,529],install:[0,8],instanc:[6,9,11,211,230,248,354,421,426,448,456,495,518],instantan:[6,65,228,229,247,248,271,276,299,304,307,312,314,317,342,503,515],instanti:[6,11,12,216,426,494],instead:[1,3,6,8,11,12,13,15,16,17,40,41,61,63,65,74,75,98,113,128,156,160,182,184,199,203,204,212,219,222,223,225,229,230,246,254,257,260,261,299,305,306,315,317,337,355,375,377,378,381,389,393,402,403,416,430,432,439,443,446,449,459,476,483,492,500,504,511,513,518,524],institut:[9,251,302],instruct:[3,4,6,8,9,10,11,12,13,15,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,123,155,165,176,184,185,187,188,189,190,192,193,195,196,199,201,206,213,224,231,239,245,249,254,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,309,310,317,320,321,355,361,363,364,366,367,370,372,378,393,394,395,397,400,401,402,403,404,405,407,408,409,412,413,416,417,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,444,449,452,453,455,459,460,461,468,477,478,480,481,482,483,485,487,488,489,500,506,518],instruction:11,insuffici:[3,6,12],insult:271,insur:[3,6,11,12,16,39,40,63,77,112,114,178,179,199,203,204,206,207,213,226,227,232,237,239,243,244,246,249,254,267,305,306,315,317,335,347,352,356,357,358,360,376,387,389,393,407,422,426,454,460,478,490,494,495,497,498,502,505,506,514,515,524,525],insure:16,int_max:3,inteatom:10,integ:[3,6,8,11,12,39,40,42,66,71,74,75,117,124,126,128,131,152,176,178,181,182,184,188,189,193,197,199,202,203,206,207,217,219,226,227,228,232,234,244,246,247,248,251,254,255,256,257,299,302,303,306,307,312,317,318,335,337,339,342,346,347,366,377,380,401,413,414,415,429,443,458,459,463,465,467,492,494,495,496,497,505,506,507,511,514,524,525],integer:[3,497],integr:[2,3,5],integral:[300,450,451],integrate_ulsph:325,intel:[1,2,3,7],intel_coprocessor:15,intel_cpu:12,intel_cpu_intelmpi:15,intel_cpu_mpich:15,intel_cpu_openpmi:15,intel_phi:12,intend:[3,6,8,12,13,35,221,247,457,497],intens:[1,3,6,9,65,69,78,79,86,94,97,98,99,103,113,114,115,116,123,125,127,128,130,131,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,173,174,175,177,210,219,220,222,223,225,226,227,228,236,243,250,260,269,271,276,314,317,319,335,343,347,349,350,514,515,523],intensiv:[65,210,515],intepol:524,inter:[17,42,63,64,158,181,182,203,228,254,256,270,309,317,377,388,399,507,518,524,527,529],interact:[1,3,6,7,8,9,10,11,12,14,16,21,28,32,33,36,39,40,42,44,50,52,54,55,57,59,63,65,68,73,76,81,84,95,96,100,102,117,118,119,121,123,126,127,134,135,136,137,139,140,141,142,143,144,145,147,148,149,150,152,153,154,156,157,171,172,176,179,180,181,182,183,184,186,190,191,194,197,198,203,204,210,211,212,226,227,228,245,246,251,252,254,256,260,285,298,300,302,303,308,310,316,317,318,325,326,335,336,342,347,351,352,353,356,357,362,363,364,365,367,369,371,377,378,386,387,388,389,390,391,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,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,451,453,454,455,456,459,460,461,463,465,466,467,468,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,492,495,497,499,501,502,506,507,509,514,515,518,527],interatom:[3,4,7,9,10,178,203,270,344,345,394,399,416,418,427,443,446,466,481,524],intercept:130,interchang:6,interconnect:17,interconvert:418,intereract:39,interesect:356,interest:[1,5,7,8,9,11,13,75,177,300,342,345,378,417,441,458,459,495,524],interf:[393,519],interfac:[0,3],interfer:[12,271,395],interg:[6,518],intergr:506,interi:441,interior:[3,6,41,356,500],interlac:443,interleav:[6,178,505],intermedi:[6,12,61,206,270,298,370,388,495,496,505,509],intermix:492,intermolecular:[154,395],intern:[0,2,3,5,6,9,11,15,19,20,23,27,31,34,35,39,40,42,65,88,89,95,109,111,129],internal:[3,206,212,303,524],internal_element_set:216,internal_quadratur:216,internat:[15,130,177,216],internet:253,interpenetr:443,interpentr:[470,471,473],interpol:[6,14,37,56,110,199,206,207,216,241,242,257,298,377,378,388,399,448,450,451,459,472,478,479,480],interpret:[2,6,11,197,206,222,423,468,492,495,511,524],interrupt:307,intersect:[3,6,130,207,356,358,500],intersert:356,interspers:386,interstiti:[176,446],intertia:[3,103],interv:[3,6,99,205,220,254,271,307,312,313,326,466,472,492,511,524],intestieti:130,intial:[6,393,395],intiial:[41,502],intiti:[3,334],intra:317,intra_energi:246,intramolecular:[28,154,246],introduc:[6,9,100,117,206,238,271,307,312,317,370,377,394,409,418,431,435,439,477,511,524],introduct:0,intuit:380,inv:[130,177,319],invalid:[3,12,75,97,181,285,388,440,441,499],invari:[117,145,150,152],invent:321,invers:[3,6,51,130,177,207],inverse:518,invert:[1,6,182,299],invis:356,invoc:[176,228,393,463,465,495],invok:[1,3,6,7,8,9,11,12,13,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,41,43,45,46,47,48,49,51,53,54,56,57,61,65,69,75,78,79,86,87,95,96,97,98,103,113,114,116,121,122,123,128,131,155,165,172,173,176,178,179,181,182,184,185,187,188,189,190,192,193,195,196,199,203,204,206,207,208,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,231,232,233,234,236,237,238,239,243,244,245,246,247,249,250,251,252,254,255,256,257,258,259,260,261,262,263,264,265,267,268,270,271,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,301,302,303,304,305,306,308,309,310,311,312,313,314,315,317,319,320,321,323,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,361,363,364,366,367,370,372,376,377,378,379,380,386,388,393,394,395,397,400,401,402,403,404,405,407,408,409,412,413,416,417,419,421,422,423,424,425,426,427,431,432,433,434,435,436,437,438,439,440,441,444,448,449,452,453,455,459,460,461,463,465,467,468,477,478,480,481,482,483,485,486,487,488,489,491,494,495,496,498,500,502,505,506,508,509,511,514,515,518,524,525],invokd:3,invoke:[3,12,16],involv:[3,6,7,8,12,65,119,126,127,128,158,182,210,217,226,246,257,302,305,310,335,377,385,386,388,398,415,422,429,477,480,482,493,494,500,502,506,511,512],ioff:[387,497],ion:[6,7,9,160,297,331,347,378,399,410,419,421,443,446,466,476,482,489,497,518],ionic:[6,9,400,402,410,418,419,453,466,518],ioniz:[408,418],ionocoval:9,iparam:[3,227],ipi:[2,13],ipp:0,ir3:177,ir4:177,irregular:[6,41,60,225,229,231,271,317],irrelev:452,irrespect:[440,441],irrevers:[235,318],is_act:[3,524],is_avail:[3,524],is_defin:[3,524],isbn:488,isele:[377,378],isenthalp:[9,271,272,273,274,275],ismail:[377,378,403,435],isn:[3,8,11,12,238,250],iso:[3,229,235,255,271,272,273,274,275,276,277,278,279,304,312,317,518],isobar:[9,271,272,277,278,279,322,414],isodem:418,isoenerget:[9,322,414],isoenthalp:[322,414],isol:[3,181,358,423],isomorph:300,isotherm:[9,246,271,272,277,278,279,304,322,414],isotop:306,isotrop:[6,100,254,304,377,378,401,422,440,441],isovolum:319,isralewitz:323,issu:[1,3,6,9,11,12,13,14,16,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,61,75,77,87,113,123,155,165,184,185,187,188,189,190,192,193,195,196,199,206,213,224,228,229,231,232,237,238,239,245,246,249,254,269,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,300,304,306,309,310,317,320,321,334,338,339,340,345,355,357,360,361,363,364,366,367,370,372,378,387,388,391,394,395,397,400,401,402,403,404,405,407,408,409,412,413,416,417,419,421,422,423,424,425,431,432,433,434,435,436,437,438,439,440,444,449,452,453,455,459,460,461,468,475,477,478,480,481,482,483,485,487,488,489,497,499,500,506,509,514,515,516,524,525],issue:216,ital:[458,459],itali:13,item:[6,7,8,41,203,207,225],iter:[3,6,12,39,41,65,205,213,214,224,225,229,235,237,244,252,287,293,299,308,309,317,321,332,342,358,360,376,384,385,386,388,392,466,492,502,506,511,515,516,524],iterat:[12,386],ith:[75,128,131,203,218,219,220,221,222,223,337,349,515,524],itself:[2,3,6,7,8,9,11,12,13,17,42,61,99,118,169,203,205,206,207,208,220,221,230,235,255,270,311,317,347,358,360,387,388,409,419,422,426,427,450,451,478,479,495,501,504,505,509,524,529],itset:507,ityp:[3,57,102,126,127,178,215,227,310,486],itype1:127,itype2:127,itypen:127,ivector:8,ivori:207,ixcm:317,ixi:[42,317,387],ixx:[42,103,317,387,524],ixy:[103,387,524],ixz:[42,103,317,387,524],iycm:317,iyi:[42,103,317,387,524],iyz:[42,103,317,387,524],izcm:317,izrailev:323,izumi:481,izz:[42,103,317,387,524],j0jt:99,j20:220,j_m:152,jackson:447,jacobi:3,jacobsen:385,jacs:[6,184,509],jagreat:13,jame:[9,18],janssen:298,januari:443,jaramillo:[7,9,13,418],jarzynski:323,jatempl:9,jcc:9,jcp:352,jec:13,jeff:13,jeffer:15,jello:271,jensen:[254,377],jeremi:[9,445],jerom:9,jewett:13,jiang:[255,518],jiao:[9,13],jiht:[7,9],jik:399,jim:7,jku:[7,9],jmake:12,jmm:152,joannopoulo:269,job:[12,62,321,505,516],jochim:[271,272],john:[7,9,13,205],johnson:[9,13],join:[6,74,423,500],joint:[3,302,425],jon:[9,74],jonathan:9,jone:[1,3,6,7,9,10,12,13,45,46,66,95,118,121,184,210,216,238,304,335,352,356,378,380,386,395,398,402,403,404,405,407,412,422,424,425,426,429,430,431,432,433,435,436,438,439,442,447,448,456,460,461,471,476,484,509,518],jonsson:[77,270,385,388,466],jorgensen:[6,195,409,431,435],joul:523,journal:[172,190,216,310,378,416,446,458,459,470,471,473],jparam:[3,227],jpeg:[3,12,206],jpeglib:12,jpg:[4,8,12,203,206,207,528],jpg_inc:12,jpg_lib:12,jpg_path:12,jpl:[7,9],jth:524,jtype1:127,jtype2:127,jtype:[3,57,127,227,486],jtypen:127,judg:511,judici:6,julien:9,jump:[2,6,35,276,360,374],jun:15,june:208,just:[3,6,8,11,12,13,16,18,21,28,42,44,61,63,99,118,121,127,153,156,157,171,182,186,203,206,219,231,235,243,260,268,304,306,317,342,347,358,360,362,387,388,393,395,398,406,426,456,484,495,499,501,502,504,505,516,518,519,524,528,529],justo:417,jusufi:[410,421],jut:356,jzimmer:9,k11:99,k22:99,k33:99,k_2:365,k_4:365,k_d:518,k_sigma:399,k_ub:19,kadiri:70,kalia:485,kamberaj:317,kapfer:117,kappa:[4,6,99,322,343,409,414,431,487,488],kappa_:347,karplu:95,karttunen:257,kate:0,kaufmann:15,kayser:410,kbit:207,kboltz:335,kbp:207,kbt:312,kcal2j:99,kcal:[251,506,518,523],kde:13,ke_eta_dot:271,ke_etap_dot:271,ke_omega_dot:271,keblinski:[409,466],kecom:158,keef:130,keep:[3,7,12,61,75,196,227,231,252,263,299,315,318,345,350,377,386,409,439,467,492,497,503,505,511,515,519,524],keflag:3,kei:[6,16,61,335,485,511,516],keir:13,kelchner:74,kelkar:350,kelvin:523,kemper:[309,408],kepler30:16,kepler32:16,kepler35:16,kepler37:16,kepler:[1,9,10,12,14,16,393],kept:[6,210,276,344,345,518],kernel:[7,13,15,16,40,110,141,147,216,247,248,326,446,469,470,471,472,473,474,497,507],keword:206,keyboard:12,keyword:[3,6,8,12,15,16,37,39,41,42,56,57,60,61,63,68,71,73,74,75,81,84,95,96,98,100,102,104,106,107,112,113,115,117,118,119,120,121,123,125,126,128,129,130,131,152,153,156,157,158,166,167,171,172,176,177,178,180,181,182,199,202,203,204,205,206,207,208,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,238,239,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,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,323,325,326,327,328,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,360,375,377,378,380,381,383,384,386,387,389,393,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,410,412,413,415,416,417,418,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,448,449,450,451,453,455,457,458,459,460,461,463,465,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,484,485,486,487,488,489,490,492,493,494,495,497,498,500,502,504,505,506,507,509,511,514,515,516,518],keywrod:418,kforc:518,khaki:207,khersonskii:152,khvostov:15,kick:[213,214,215,237,354],kilogram:523,kim:[2,3,4,7],kimvirial:[3,427],kind:[1,2,3,4,6,7,8,9,10,11,12,16,39,40,41,42,57,63,64,65,77,128,158,203,204,206,210,217,219,220,222,225,228,230,234,246,249,268,317,321,335,342,357,388,390,392,399,418,458,459,486,492,496,497,502,503,510,511,518,524],kinemat:[9,440,441],kinet:[3,6,8,65,90,91,92,93,95,99,104,105,106,107,108,123,153,155,156,157,158,159,160,161,163,164,165,166,167,168,170,171,210,217,219,229,235,238,246,250,254,267,269,271,272,273,274,275,276,277,278,279,304,307,318,335,343,350,351,386,418,420,451,479,492,507,511,515,518],kio:2,kiss:[9,12],kjl:370,klahn:346,klapp:377,klein:[6,9,216,230,271,272,295,317,431,461],kloss:7,kmax:[3,130,319,377],kmp_affinity:15,knc:16,knight:15,knl:15,knock:347,know:[3,9,11,12,41,65,67,72,83,101,118,127,210,235,253,255,285,335,386,417,427,483,495,498,501,506,518,519],knowledg:[4,8,9,206,427],known:[3,12,152,206,238,250,299,308,317,344,494,511,525],kohlmey:[7,9,13,17,377,378],kokko:[1,3,9,12,16,320,393,459,500,510,524],kokkos:[1,2,3],kokkos_arch:[9,16],kokkos_cuda:[9,12,16],kokkos_cuda_options:16,kokkos_debug:16,kokkos_device:16,kokkos_devices:16,kokkos_omp:[9,12,16],kokkos_pg:16,kokkos_phi:[9,12,16],kokkos_use_tpls:16,kolafa:378,kollman:[6,184,509],kondor:457,kone:[344,345],kong2011:299,kong:[9,13,299],konglt:9,koning00a:344,koning00b:344,koning96:[344,345],koning97:345,koning99:344,kooser:13,koskinen:385,kosztin:323,kraker:15,krau:13,kremer:[45,46,509],kress:[444,445],kspace:[0,1],kspace_modifi:[2,3,6,15,348],kspace_styl:[0,2,3],kspce:12,kspring:270,kstart:316,kstop:316,kth:[247,300],kub:19,kubo:[6,99,343],kumagai:481,kumar:[9,440,441],kuronen:456,kurt:302,kuster:[287,293,382],kutta:318,l12:443,l_box:418,l_skin:347,la3:177,laa:9,laas:9,lab:[5,7,9,12,122,455],label:[2,3,12,76,203,207,211,212,226,227,230,238,299,300,314,360,376],laboratori:[0,88,89,240,269,307,322],lack:[3,15,269,418],lackmann:399,ladd:[294,345],lafitt:447,lag:347,lagrang:[142,143],lagrangian:[6,134,135,136,137,139,140,141,142,143,144,145,147,148,149,150,216,269,307,308,325,326,463,465,518],lagrangian_posit:[269,307],lagrangian_spe:[269,307],lai:491,lambda1:[480,481,482,485],lambda2:[480,481,482],lambda3:[480,482],lambda4:485,lambda:[95,122,130,172,177,257,319,344,345,347,394,417,439,449,477],lambda_fin:344,lambda_initi:344,lamda:[3,53,335,449],laminar:474,lammp:[0,3,4,7,8,9,11,12,13,14,16,204,299,381,388,392,406,443,446,492,495,506,508,511,512,519,524],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_ns:[6,12],lammps_open:6,lammps_potentials:[406,408,508],lammps_put_coord:6,lammps_quest:[6,244],lammps_rk4:318,lammps_scatter_atom:3,lammps_set_vari:6,lammps_sppark:6,lammps_vers:6,lammpsplot:13,lammpstrj:[498,502,518],lammpsvirial:[3,427],lamms:6,lamoureux:[6,235,483,518],land:15,landron:466,lane:1,lang:518,langevin:[2,3,6,39,159,160,161,163,165,166,167,168,170,210,215,217,234,235,246,247,248,250],langston:42,languag:[6,11,12,16,495,524],lanl:9,lapack:12,laps:348,laptop:7,larentzo:[9,88,89,240,322],larg:[0,1,3,4,5,6,7,8,9,10,12,13,15,16,17,39,40,41,60,61,74,75,120,127,129,153,158,161,166,178,179,180,190,199,202,203,204,206,207,219,225,228,229,231,232,236,238,246,257,271,285,294,299,302,303,304,306,307,312,314,315,316,317,321,331,335,343,347,348,350,352,356,370,377,378,382,384,386,389,393,407,413,418,422,423,430,446,448,450,451,454,460,478,479,492,495,497,499,500,504,506,511,514,516,518,525,529],larger:[1,2,3,6,11,12,13,39,41,56,61,74,75,127,178,180,206,220,222,223,232,238,250,257,266,271,294,295,303,308,312,316,317,319,322,330,335,342,347,351,352,353,356,377,378,384,385,386,388,389,390,393,399,407,409,410,418,423,431,435,441,448,454,475,476,484,497,501,502,505,506,511,524],largest:[3,6,12,39,75,176,178,236,377,386,390,450,451,475,478,479,497,499,505,506,517,524],laroch:312,laser:347,last:[1,2,3,5,6,11,12,14,37,42,56,61,63,75,121,128,153,176,197,199,203,204,206,207,208,209,219,220,222,223,225,236,270,315,318,319,331,335,360,375,386,387,388,389,393,397,398,399,400,407,408,413,414,416,421,422,423,424,425,429,432,434,436,437,438,441,447,449,460,466,468,475,478,479,483,484,487,488,492,493,495,498,502,504,505,509,511,512,515,516,524],lat:443,late:5,latenc:[10,251],later:[6,9,11,12,16,40,61,75,114,180,182,220,232,276,294,302,323,342,358,360,377,386,387,392,393,395,399,495,497,499,501,511,514,516,519,524,527],latest:[7,219,220,221,222,223,319,499],latex:8,latgen:299,latitud:152,lattc:443,latter:[2,6,9,11,14,15,16,41,42,95,156,207,211,212,218,219,220,225,229,252,261,271,273,274,275,277,278,279,302,304,306,310,317,318,335,349,351,356,376,387,399,401,402,403,404,405,412,429,431,435,439,446,453,461,466,483,492,494,495,500,503,514,515,524,528],lattic:[2,3,5,6,7,9,41,61,66,70,74,75,77,99,100,125,130,167,176,177,178,179,202,215,219,225,231,232,236,252,257,258,259,260,261,268,298,299,315,352,354,355,356,357],launch:[1,3,6,11,12,15,16,17,393,494,495,516],laupretr:370,lavend:207,lavenderblush:207,lavgevin:231,law:[6,269,391,463,465],lawngreen:207,lawrenc:9,layer:[6,75,343,347,350],layout:[1,3,16,180,375,494,497,506],lb_fluid:257,lbl:[7,9,176],lbnl:9,lbtype:257,lcbop:[2,3],ld_library_path:[11,12],ldfftw:12,ldrd:7,lead:[2,3,6,12,21,24,39,41,44,61,63,81,95,127,128,172,176,182,186,203,207,211,212,218,219,220,222,223,225,232,248,257,276,307,317,318,321,335,342,343,350,362,370,377,383,388,393,406,409,431,435,437,446,465,491,497,507,515,518,519,524,525],least:[3,6,12,17,75,130,177,205,217,238,248,302,351,389,393,426,478,479,484,495,524],leav:[3,7,11,12,16,20,41,59,153,168,185,225,229,232,271,273,274,275,277,278,279,303,304,317,321,361,448,497,501,509],lechman:335,lectur:323,led:[3,5],lee2:443,lee:[216,443],left:[6,11,12,41,118,154,198,206,207,228,252,297,298,318,335,358,360,380,497,499,504,519,524,529],leftmost:[41,225],legaci:[12,15,204],legal:7,lehoucq:455,leimkuhl:[271,289,355],leiu:413,lemonchiffon:207,len:507,lenart:[410,421],length:[3,6,8,11,12,15,17,20,37,39,40,41,42,44,53,54,55,56,57,60,61,63,67,68,71,72,73,74,75,78,83,84,85,88,90,95,96,97,98,99,101,102,113,115,118,119,123,125,126,128,129,130,131,140,142,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,174,176,177,180,185,199,203,204,206,207,210,217,221,222,223,225,226,227,228,229,231,241,242,246,249,257,269,270,271,272,276,285,293,298,304,314,317,319,321,322,331,335,342,346,347,349,352,356,378,380,382,384,386,388,389,391,395,396,399,400,402,409,410,415,418,421,425,429,431,443,448,450,451,458,459,469,478,479,480,483,487,488,490,497,500,505,507,514,515,518,524],lengthi:246,lennard:[1,2,3,6,7,9,10,12,45,46,95,118,121,184,210,238,304,335,352,356,378,380,386,395,398,402,403,404,405,407,412,422,424,425,426,429,430,431,432,433,435,436,438,439],lennardjones612_universal__mo_826355984548_001:211,lenoski:[444,445],less:[1,3,6,13,14,15,16,17,37,41,56,59,60,61,75,80,100,117,119,126,127,129,156,157,171,199,207,219,222,223,225,227,228,229,231,232,238,243,252,269,271,298,310,312,319,335,354,355,357,378,380,386,390,393,399,404,422,423,429,440,441,448,460,477,478,479,482,488,497,516,524,525],let:[1,12,37,56,161,189,199,220,241,242,321,335,353,393,407,450,451,478,479,506,510,518,527],lett:[152,166,248,255,257,269,312,323,344,345,385,399,416,418,422,439,450,451,467,518],letter:[2,12,41,59,61,207,225,234,235,255,300,360,392,457],leuven:9,level:[2,3,8,11,12,16,203,206,211,212,213,214,221,224,233,237,249,251,252,266,268,270,271,298,309,316,320,323,331,332,333,334,351,352,356,360,375,378,392,399,403,404,431,432,435,442,446,447,458,459,494,506,511,516,524],lever:475,levin:423,lewi:324,lexicon:7,lgr_po:[269,307],lgr_vel:[269,307],lgvdw:459,li1:177,liang:408,lib:[1,3,9,11,12,14,15,16,204,311,393,408,427,495,498],libatom:[9,457],libcolvar:12,libdir:11,libfftw3:12,libgpu:[9,14],libjpeg:12,liblammp:[11,12],liblammps_foo:[11,12],liblammps_g:[11,12],liblink:9,libmeam:9,libmpi:11,libmpi_stub:12,libmpich:12,libpackag:12,libpng:12,libpoem:9,librar:9,librari:[0,1,3,4],libreax:9,librt:16,licens:[0,7,8,12,206],license:[7,12],lie:[6,74,319],lieu:377,life:7,lifo:8,ligand:331,liggghts:7,light:306,lightblu:207,lightcor:207,lightcyan:207,lightest:342,lightgoldenrodyellow:207,lightgreen:207,lightgrei:207,lightli:331,lightpink:207,lightsalmon:207,lightseagreen:207,lightskyblu:207,lightslategrai:207,lightsteelblu:207,lightweight:335,lightyellow:207,like:[3,4,6,7,8,9,11,12,15,16,17,39,42,54,61,162,169,203,206,208,213,229,230,232,235,237,251,254,255,256,269,271,272,277,278,279,284,285,287,291,292,294,295,296,298,304,306,307,308,312,317,318,319,322,335,337,338,339,340,341,342,343,350,351,352,355,356,357,360,377,380,382,385,388,393,399,407,412,413,414,418,419,423,425,426,436,437,443,467,478,479,482,483,487,488,494,495,497,498,499,500,502,507,512,515,516,518,519,524,525],likelihood:[130,177,228],likewis:[1,6,12,14,17,39,41,75,96,126,216,225,226,227,246,254,255,271,272,276,295,312,335,338,339,340,378,388,394,398,399,409,416,419,446,476,495,497,499,509,524],likhtman:221,lime:207,limegreen:207,limit:[2,3,6,7,9,12,15,16,17,26,39,60,61,63,75,130,152,154,177,178,179,180,187,205,206,210,227,229,230,231,238,247,254,271],limit_eradiu:418,limit_veloc:[325,326],lindahl:377,line:[0,1,2,3,4,6,7,8,9,10,11],linear:[2,3,6,24,26,37,44,55,56,112,152,187,199,210,211,212,216,228,229,235,241,242,258,262,267,268,271,302,315,316,321,324,327,339,343,347,350,352,354,355,357,363,364,365,367,380,388,423,437],linearli:[6,10,128,207,231,299,352,354,355,357,387,388,390,497,524],lineflag:[6,497],lineforc:[2,210],linen:207,linesearch:[8,12,384],ling:[9,13],lingo:[11,427],link:[5,6,7,8,9,11,12,13,14,16,21,36,44,55,65,186,198,204,206,210,227,251,255,302,311,313,323,331,362,371,396,406,443,457,458,459,476,483,495],linker:12,linkflags:[9,15,17],linux:[9,10,11,12,14,15,206,208,251],linuxamd64:498,liouvil:271,lip:13,lipid:[4,9,10,13,28,317],lipton:302,liquid:[6,7,9,15,28,39,40,41,61,95,100,153,164,176,225,229,231,246,271,304,307,312,342,412,446,448,453,481,506],lisal:[322,414,475],lism:9,list:[0,1],listen:[251,253],listfil:430,liter:[497,508],literatur:[6,8,443,466,477],lithium:418,littl:[1,3,12,15,66,238,271,389,492,500],littmark:[443,476,482,489],liu:[425,459],livermor:9,lj1043:[2,210],lj126:[2,6,210],lj12_4:461,lj12_6:461,lj1d:299,lj6:3,lj93:[2,6,210],lj96:[2,3],lj9_6:461,lj_flag:395,llnl:[5,7,9],lmp1:11,lmp2:11,lmp2arc:[0,6],lmp2cfg:[0,6],lmp2vmd:0,lmp:[11,495,518],lmp_auto:12,lmp_cuda:16,lmp_foo:12,lmp_g:[6,11,12,13,16,376],lmp_gpu:14,lmp_ibm:[12,376],lmp_inc:12,lmp_kokkos_cuda:16,lmp_kokkos_omp:16,lmp_kokkos_phi:16,lmp_linux:[4,6,12],lmp_mac:12,lmp_machin:[1,12,14,15,393],lmp_mpi:[12,16,17,18,300],lmp_mvapich:16,lmp_openmpi:16,lmp_win_mpi:12,lmp_win_no:12,lmpptr:[11,495],lmpqst:244,lmpsdata:13,lmptype:[3,12,244],load:[1,3,4,6,7,9,11,12,15,16,17,41,206,208,210,225,251,307,318,393,408,494,495,516],loadabl:11,loca:207,local:[2,3],localhost:251,localized_lambda:216,localonli:12,localtemp:318,localvector:65,locat:[3,6,8,11,12,26,63,127,130,176,177,187,197,199,203,232,233,238,257,334,345,356,384,406,409,419,420,421,431,433,435,483,494,497,498,500,507,509],lock:[3,392,524],lockstep:[229,271,304,317],log:[1,2,3,4,6,7,8,10,12,13,14,15,62,209,269,299,307,321,335,375,377],logarithm:[148,149,524],logfil:[0,3,6,12,305,381,493],logfreq2:524,logfreq:[207,504,513,524],logic:[7,10,11,12,15,16,41,178,225,358,360,492,494,495,498,506,511,524],lomdahl:[276,433],london:[13,246,459],lone:[458,459],longer:[1,3,4,6,8,12,13,54,127,203,207,218,219,220,221,222,223,226,246,254,271,289,298,302,307,317,318,321,342,352,356,358,384,393,395,423,466,494,502,506,511,521],longest:[41,225,226,389,484],longitudin:331,look:[1,3,6,8,11,12,17,54,63,203,206,209,406,467,478,479,518,519,524],lookup:[3,39,199,448,450,451,478,479],lookup_table:319,loop:[3,4,6,7,11,12,17,39,42,68,71,73,84,96,102,119,126,127,129,153,206,219,226,227,236,342,358,360,376,379,386,388,389,391,392,415,446,466,492,493,495,501,502,505,506,511,515,516,517,524,525],loopa:[360,376,392],loopb:[360,376,392],loopmax:466,loopvar:524,lopez:[271,272],lorant:308,lorentz:177,lose:[6,60,61,180,229,231,255,271,423,497],loss:[6,523],lossi:206,lossless:206,lost:[3,12,13,59,112,232,315,324,335,448,497,498,499,506,514],lot:[17,323,377],low:[1,3,6,7,12,41,161,176,203,206,225,235,255,294,312,317,343,350,378,446,450,451,459,478,479,488,511,518],lower:[2,3,6,9,11,12,15,41,59,61,75,96,154,167,202,206,207,220,221,222,225,229,235,251,254,255,257,271,307,312,343,350,352,353,358,359,377,380,392,410,443,511,520,522,525],lowercas:0,lowest:[56,152,360,387,507,511,512,524],lps:[455,476],lrt:[15,393],ls_:146,lsfftw:12,lsurfac:347,ltbbmalloc:15,lu3:177,lubric:[2,3,6,7,9,211,212,282,401],lubricateu:[2,3,9,352,401,440],lubricuteu:282,luci:[2,318],lucki:12,luigi:13,lumped_lambda_solv:216,lussetti:343,lustig:[7,13],lybrand:378,lyulin:370,m4v:206,m_d:518,m_eff:[353,423],m_fill:3,m_i:333,m_lambdai:455,m_taubi:455,m_u:257,m_v:257,m_yield_stress:455,mac:12,mac_mpi:12,mach:[9,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,324,325,326,327,330,507],machin:[1,3,4,6,7,9,10,11,12,14,15,16,17,18,203,204,206,251,271,348,377,384,386,391,446,494,499,504,505,506,519,525,529],machines:12,mackai:[9,257,259,260,261],mackerel:[6,19,184,255,404,509,518],macos:206,macro:16,macroparticl:415,macroscop:[7,249,269,455],made:[3,6,9,11,12,14,32,41,42,50,66,67,72,83,86,101,179,191,203,206,208,210,211,212,217,225,232,236,251,260,303,311,315,317,345,358,368,389,393,422,423,426,458,460,468,494,501,507,510,519,520,522,525,527],madura:[6,431],magazin:416,magda:352,magenta:207,magic:[3,11],maginn:[172,350],magnitu:337,magnitud:[6,74,115,119,124,154,178,202,203,204,207,232,233,249,250,252,254,323,331,332,334,335,342,353,378,386,412,423,507],mai:[0,1,2,3,6,7,8,11,12,13,14,15,16,17,28,37,39,40,41,56,60,61,63,65,68,71,73,74,75,84,94,95,96,97,98,100,102,112,113,115,117,118,119,120,121,123,124,125,126,128,129,130,152,153,156,157,158,166,167,171,172,176,177,178,179,180,181,182,198,199,202,203,204,205,206,207,208,210,211,212,213,215,217,219,220,221,222,223,224,225,226,227,229,231,232,235,236,237,238,241,243,246,247,248,250,251,252,254,255,256,257,258,260,266,267,268,269,271,272,276,285,287,289,293,299,300,303,304,305,306,307,308,309,312,314,315,316,317,318,319,320,321,323,325,326,328,335,337,338,339,342,343,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,375,376,377,378,380,384,385,386,387,388,389,390,391,393,395,396,398,399,407,413,418,423,426,427,429,437,439,441,443,444,445,446,448,450,451,458,459,461,467,475,478,479,485,489,492,493,494,495,497,498,499,500,501,502,503,504,505,506,507,509,511,512,514,515,516,518,519,524,525,527,529],mail:[3,7,9,12,358,519],main:[3,6,8,11,12,204,251,257,317,344,345,416,466,483,495,512],mainboard:1,mainli:453,maintain:[8,9,13,15,39,163,227,231,294,335,348,385,394,416,506,509,519],major:12,make:[0,1,2,3,6,7,8,9,11],makefil:[3,7,9,11,12,13,14,15,16,17,18,203,204,378,393,446,495],makelist:12,maks:423,malloc:[3,12],manag:[5,8,12,203,251,300,337,506],manbi:467,mandadapu:216,mandatori:[8,203,230],manh:399,mani:[1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,37,39,40,41,42,56,63,65,71,75,96,99,112,113,127,154,158,178,179,199,202,203,204,205,206,207,208,210,211,212,213,217,218,219,220,221,222,223,225,226,227,228,229,231,232,238,241,242,243,246,247,250,251,257,258,267,269,271,272,276,285,297,298,299,303,304,306,308,309,310,312,314,317,318,319,321,335,346,347,349,358,360,377,386,388,389,391,393,406,408,415,418,421,425,426,450,451,466,467,476,478,479,480,482,495,497,499,501,502,504,505,506,507,509,510,511,512,516,524,525,529],manifold:2,manifoldforc:[2,9],manipul:[12,41,225,251,409,456,508],manner:[2,3,6,9,11,12,16,41,153,174,206,211,212,213,214,222,225,231,236,237,244,250,254,255,271,277,278,279,291,292,294,296,311,338,339,340,343,344,345,350,352,356,360,378,387,388,392,393,416,418,426,429,440,484,492,494,497,498,499,500,502,506,511,512],manolopoulo:253,mantissa:3,manual:[0,1,3,6,7,8,9,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,43,45,46,47,48,49,51,53,54,56,60,65,71,75,123,130,155,156,157,159,160,161,164,165,166,167,168,170,171,177,184,185,187,188,189,190,192,193,195,196,199,203,204,206,208,213,224,231,239,245,249,253,254,255,270,271,273,274,275,276,277,278,279,280,281,283,286,289,290,291,292,294,296,304,306,309,310,317,319,320,321,338,339,340,350,355,360,361,363,364,366,367,370,372,378,388,392,393,394,395,397,398,400,401,402,403,404,405,407,408,409,411,412,413,416,417,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,444,449,452,453,455,459,460,461,468,477,478,480,481,482,483,485,487,488,489,492,500,506,510,511,512,515,524],manybodi:[3,7,8,9,12,153,154,386,426,509,524],map:[2,3,11,12,16,17,39,61,66,75,130,134,152,166,177,178,202,206,207,216,238,299,316,377,378,380,388,394,395,399,408,416,417,419,426,427,428,443,444,445,448,452,456,457,458,459,466,467,475,477,478,479,480,481,482,485,494,497,499,511,524],map_fil:299,mapflag:12,mara:[9,466],march:[9,443],margin:511,mari:13,mark:[424,439,463,465,466],marker:305,maroon:207,maroonmpi:11,marrink:424,marsaglia:[3,247,248,254,255,312],marseil:9,martin:[299,443],martinez:217,martyna:[271,272,317,506],mashayak:16,mask:[3,298,524],mask_direct:216,mass:[2,3,6,8,13,40,42,65,69,78,79,86,94,95,97,98,99,103,104,105,106,107,108,110,113,114,115,124,129,138,158,159,160,163,166,170,173,175,178,181,182,203,204,208,210,211,212,214,216,217,219,231,235,238,245,246,247,249,254,255,257,260,267,269,271,277,278,279,291,292,294,296,299,300,303,306,307,312,314,315,317,321,323,331,332,333,335,337,338,339,340,342,343,345,347,350,351,353,354],mass_matrix:216,massdelta:321,massiv:[0,206,257,300,343,350],massless:[6,255,378,409,431,435,439,518],masstot:317,master:[3,388,492,511],mat:[70,216,408,481],match:[3,6,9,11,12,16,37,41,56,61,75,127,161,199,207,208,225,228,231,241,242,251,271,272,294,314,319,335,342,377,378,399,425,437,443,450,451,457,458,459,478,479,491,495,497,498,499,502,506,511,518,524],matchett:42,mater:[77,394,445,456,466],materi:[6,7,9,61,74,136,137,181,215,216,231,246,252,269,298,304,312,343,347,353,409,416,417,418,423,427,443,444,446,455,458,459,462,463,464,465,492,497,511,518,523],material_fil:216,math:[3,8,15,207,255,271,272,504,513],mathemat:[130,152,177,178,202,211,212,213,214,224,229,237,247,249,250,252,254,255,305,320,328,338,339,340,352,355,357,467,493,500,507,525],mathrm:519,matlab:0,matric:[9,152,248,299,422],matrix:[3,6,9,99,176,220,229,248,299,308,318,377,380,446],matter:[6,12,39,59,61,75,160,347,389,395,411,416,418,443,461,466,480,482,485,489],mattox:9,mattson:[88,89,123,153,240,322],max2theta:177,max:[3,6,8,12,14,17,75,128,207,222,225,227,229,232,266,303,318,321,335,360,380,384,386,388,389,393,466,492,497,511,515,524],max_alpha:8,max_cell_s:415,max_group:3,max_nn:326,max_step:318,max_travel:327,max_vel:[325,326],max_veloc:326,maxangl:246,maxbody:3,maxbond:[3,227],maxedg:176,maxev:[386,492,511],maxfoo:8,maxim:[342,388,516],maximum:[3,6,8,12,14,16,24,41,42,45,53,54,59,61,63,100,117,127,128,130,133,176,177,179,180,202,203,215,220,221,222,225,227,231,232,236,238,246,266,285,287,293,298,303,308,318,321,324,325,326,335,348,377,378,384,388,389,393,396,399,415,421,440,441,466,497,500,505,515,524,525],maxit:[287,293,308,386,492,511,515],maxsize_restart:8,maxspeci:3,maxstep:318,maxwel:[16,297],maxwell50:16,maxwell52:16,maxwell53:16,maxx:456,mayb:13,mayer:[7,400,402,466,476],mayo:[6,7,13,24,372,425,509],mbt:185,mbyte:[12,312],mcc:[458,459],mcdlt:[168,250],mcdram:15,mcgraw:300,mclachlan:[271,289],mdatom:246,mdf:2,mdnvt:246,mdregion:216,mdtemp:246,mdump:[41,225],meam:[2,3,4,7],meam_sw_splin:445,meamf:443,mean:[2,3,4,6,7,8,11,12,15,16,21,33,36,37,38,39,41,42,44,52,54,55,56,58,59,61,63,65,71,75,76,80,81,90,92,93,95,99,100,113,114,115,117,123,124,125,126,127,128,129,131,152,153,155,156,157,159,160,161,164,165,166,167,168,170,171,172,178,179,181,182,184,186,194,198,199,200,201,202,203,204,206,207,208,210,211,212,215,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,237,238,241,244,246,247,248,249,250,252,254,255,256,260,268,271,273,274,275,276,277,278,279,285,287,291,292,293,294,296,298,300,302,303,304,306,312,314,315,317,318,320,321,323,328,331,335,337,338,339,340,342,343,346,347,349,350,351,352,353,354,355,356,357,358,362,363,364,365,367,369,371,373,377,378,380,383,384,386,387,388,389,391,393,396,400,402,403,404,406,409,413,415,416,418,422,423,425,426,429,431,432,435,442,443,447,448,450,451,453,454,456,458,459,460,461,475,477,478,479,480,481,482,484,488,491,492,494,495,497,498,499,500,501,502,503,504,505,506,507,508,509,511,512,514,515,518,523,524,525,526,527,529],meaning:[127,136,137,139,142,146,426],meaningless:[70,342],meant:[6,317,483,501],measur:0,meaur:516,mech:455,mechan:[6,8,9,11,12,16,40,88,89,138,154,216,238,240,250,300,311,318,399,418,427,433,446,463,465,491,495,497],mechanic:311,mechanim:134,meck:117,media:206,medium:488,mediumaquamarin:207,mediumblu:207,mediumorchid:207,mediumpurpl:207,mediumseagreen:207,mediumslateblu:207,mediumspringgreen:207,mediumturquois:207,mediumvioletr:207,mee:342,meet:[3,12,179,206,207,227,228,348,502],mehl:394,mei:442,meloni:39,melros:[440,441],melt1:208,melt2:208,melt3:208,melt:[4,10,228,299,399,446,481],mem:14,member:[181,184,302,399],membran:[28,297,488],memori:[3,5,6,7,8,9,12,14,15,16,17,39,40,62,75,207,219,221,247,248,312,347,375,389,393,399,448,454,459,494,497],memory_usag:8,mendelev:416,mention:[1,6,7,11,40,42,231,250,257,276,352,380,388,395,458,459,499,524],menu:[206,251],mep:[270,388],mer:[4,10,228],mercuri:519,meremianin:152,merg:[5,497,519],merz:[6,184,509],mescscop:455,mesh:[1,2,3,6,7,8,9,10,12,40,41,42,130],meshless:9,meso:[2,3,40],mesocop:40,mesoparticl:[240,241,242,414],mesoscal:7,mesoscop:[7,109,110,111,264],mess:[3,507],messag:[0,2],met:[8,41,127,225,360,376,378,386,388,392,484,505],metadynam:[9,13,230],metal:[3,5,7,9,10,40,61,75,167,178,215,216,231,232,250,252,307,308,312,351,352,354,355,357,378,380,390,394,395,399,408,416,417,418,419,426,428,443,444,445,446,456,457,466,477,480,481,482,485,500,514,515,517,523],meter:[390,523],methan:[307,312],methanol:4,methin:370,method:[1,3,4,5,6,7,8,9,11,12,13,15,16,18,37,39,40,41,56,66,95,99,121,153,199,210,211,212,216,220,221,225,230,241,242,244,254,257,261,266,269,271,299,300,307,308,309,310,312,317,318,321,322,323,342,343,344,345,350,377,378,384,385,386,388,393,394,396,399,408,409,416,418,419,443,444,445,448,450,451,456,466,476,478,479,485,492,494,495,497,498,500,511,518],methodolog:[6,77,153,300,377],metin:[7,9],metric:[3,10,66,500,515],metropoli:[217,246,512],mezei:95,mf1:208,mf2:208,mf3:208,mg2:177,mglob_default_function_attr:9,mgoh:452,mgpt:2,mgptfast:446,miai:312,mic:[9,16],micel:[4,9,13,333],micelle2d:0,michael:[9,13,445],michel:13,mickel:117,micro:[3,517,523],microcanon:[280,281,283,284,286,289,290],microelast:455,micromet:523,micropor:246,microscal:440,microsec:523,microsecond:523,mid:[5,9,61,231,446,475],middl:[3,6,8,15,21,41,44,81,95,127,128,167,172,182,185,186,203,207,211,212,218,219,220,222,223,225,303,315,316,317,343,350,361,362,383,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,412,413,415,416,417,418,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,453,455,457,458,459,460,461,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,484,485,487,488,489,490,491,495,505,506,507,515,524],middlebondtors:[3,185,497],midnightblu:207,midpoint:475,mie:[2,3,9],might:[3,6,7,8,12,15,24,75,160,244,246,248,250,287,317,466,495,505,519,524],migrat:[3,8,16,41,42,61,63,68,73,84,102,119,126,129,203,210,225,298,306,312,335,377,390,393,505,527,529],mikami:[6,271,272],mike:[7,9,13,14,15],mil:[9,416],militz:298,mill:385,miller:317,million:[3,7,39,41,75,225],mimic:[6,42,54,255,269,303,409,421,431],mimim:[229,388],min2theta:177,min:[3,4,6,8,12,128,152,207,222,318,377,380,466,475,492,511,524],min_cap:3,min_cg:8,min_clearstor:8,min_dof:8,min_modifi:[2,229],min_nn:326,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,318],min_stor:8,min_styl:[2,3,261,263,287,293,351,384],minarea:176,mincap:459,mind:[7,247,299],mine:[12,96,168,169,210,358,521],minim:[0,2,3,4,5,6,7],minima:[190,197,372],minimi:[388,484],minimizaiton:388,minimizi:312,minimum:[3,12,24,25,26,42,45,59,61,75,94,115,128,176,177,179,181,187,202,203,206,215,222,229,230,236,253,270,314,316,318,319,324,326,330,335,352,356,360,372,377,380,384,385,386,388,389,404,418,420,422,424,425,431,433,435,440,441,459,461,475,492,505,511,524,525],minlength:176,minmiz:[8,229],minn:9,minord:[3,377],minstep:318,mintcream:207,mintmir:[4,7,308,409,476],minu:[12,61,158,231,360,388,524],minut:[4,8,516],mirror:[63,354],misc:[6,8],miscellan:[2,216],mise:[145,150],mishin:[394,476],mishra:15,mismatch:3,miss:[3,5,12,181,222,246,285,312,335,430,448,514,515],mistak:[3,524],mistakenli:3,mistyp:3,mistyros:207,mitchel:[6,122,160,377,378,411,455],mitchell2011:455,mitchell2011a:455,mitig:271,mivi2:312,mix:[1,3,6,9,14,15,75,126,160,222,348,377,378,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,412,413,415,416,417,418,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,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,487,488,489,490,495,497,510,518,527],mixtur:[6,40,271,306,317,335,357,407,420,443,451,479,497],mixture_ref_t:443,mjpeg:206,mkdir:508,mkl:12,mkv:206,mldivide3:3,mlpark:7,mlutipl:223,mn2:177,mn3:177,mn4:177,mo3:177,mo5:[177,446],mo6:177,mobil:[6,115,153,155,156,157,159,164,171,206,317,358,359],moccasin:207,mod:2,mode:[1,3,4,6,9,10,11,12,13,14,15,16,17,63,69,79,86,96,98,103,114,116,125,127,128,154,158,173,175,176,177,203,204,206,207,218,219,220,222,223,230,231,244,248,271,300,312,323,335,375,377,390,393,409,418,446,466,494,499,504,506,515,523,524,529],model:[0,1,3,4],model_ar_p_mors:427,modern:[12,15,254,256],modest:[1,391],modif:[6,13,15,95,443,446,460,482,518,519],modifi:[0,1,2,3,6,7],modify_param:8,modin:216,modul:[3,9,11,12,13,230,312,382,495],modular:8,modulo:[3,524],modulu:[304,423,443,455,462,464],moementum:268,mofil:498,mol1:524,mol:[2,3,9,75,124,129],molchunk:[69,79,86,98,103,114,116,158,173,175,219],mole:[217,416,420,523],moleclu:[226,227,232,243],molecul:[2,3,4,6,7,8,9,12,13,28,40,69,75,79,86,97,98,103,114,116,124,125,129,153,154,158,160,173,175,178,179,180,181,203,204,207,210,217,219,226,227,228,232,233,238,242,243,246,254,255,260,302,303,306,314,315,316,317,318,321,330,331,332,337,343,350,358,378],molecular:[0,2,3,5,6,7,8,9,12,13,15,39,40,53,75,119,124,126,155,156,157,159,161,164,165,166,167,170,171,178,179,180,181,182,190,203,204,205,208,216,227,230,238,246,253,299,300,307,311,312,316,323,346,347,378,387,396,397,399,403,415,418,426,476,497,498,499,501,502,506,507,509,515,517,518,524],molfil:9,molfrac:[232,303],molnar:323,molpe:120,moltempl:0,molybdenum:446,mom:[6,99,316,525],momementum:[156,157,273,274,277,278,281,282,283,291,292],momemtum:69,moment:[3,6,9,40,42,86,90,92,93,116,124,129,156,171,178,201,203,204,254,257,260,271,289,303,317,333,337,387,412,417,466,497,507,518,523],momenta:[238,248,282,350,418],momentum:[2,3,6,28,40,63,65,69,90,94,112,116,124,129,152,156,157,178,203,204,210,216,235,247,250,254,255,257],momon:228,monaghan:[9,470,471,473],monitor:[3,6,9,12,106,107,161,229,231,232,243,251,254,269,271,303,305,307,317,321,335,386,388,412,515],mono:[77,440],monodispers:[3,353,401,423,440,441],monom:[13,54,228],monoton:[3,241,242,323,346,388,511],monoval:378,mont:[4,6,7,9,210,217,228,246,317,342,415,476],montalenti:[492,511],month:0,moor:[9,16,88,89,153,240,322,450,451],more:[0,1,2,3,4,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,34,35,36,37,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,60,61,63,64,65,66,67,68,70,71,72,73,74,75,76,81,82,83,84,85,88,89,91,94,95,96,98,100,101,102,106,107,108,109,110,111,112,113,115,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,160,161,162,164,165,166,167,169,170,171,172,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,202,203,204,205,206,207,208,210,211,212,213,214,215,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,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,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,286,287,289,290,291,292,293,294,295,296,298,299,300,302,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,330,335,337,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,370,371,372,375,377,378,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,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,478,479,480,481,482,483,484,485,487,488,489,492,493,494,495,497,498,500,501,502,503,504,505,506,507,508,509,510,511,512,514,516,518,519,524,525,527,528,529],morefoo:8,moreov:[226,227,483],morgan:15,moriarti:[9,446],moriarty1:446,moriarty2:[9,446],moriarty3:446,morri:2,morriss:[166,294],mors:[2,3,6,7,9,44],morse_fe:[478,479],mosel:385,mosi2:443,moskalev:152,most:[0,1,2,3,4,5,6,7,8,10,11,12,14,15,16,17,18,36,39,41,55,74,75,113,119,166,198,203,204,206,207,219,222,223,225,226,227,229,250,271,272,300,304,305,306,307,308,317,319,348,350,358,360,371,378,385,389,391,393,395,418,422,443,457,458,459,482,492,493,494,506,511,512,515,516,519,524,527],mostli:[8,9,11,13,75,180,206,389,497,506,509,524,528],motiion:6,motion:[3,6,7,9,42,94,107,113,155,156,157,159,161,163,164,165,166,167,168,170,171,231,235,238,248,257,260,261,268,271,272,276,287,294,298,300,302,312,316,317,322,343,347,353,356,382,388,412,418,440,441,500,506,518],motiv:298,mous:251,mov:206,move:[1,2,3,6,8,9,11,12,14,59,61,63,75,94,115,146,158,161,176,202,210,211,213,214,217,219,222,223,226,227,229,231,232,236,237,239,244,245,246,250,251,252,253,257,262],movement:[3,6,12,268,342,386,515],movi:[2,3,4,7,9,12],mp2:395,mp4:206,mpeg:206,mpg:206,mpi4pi:11,mpi:[0,1,3,5,6,7,9,10],mpi_allreduc:[317,495],mpi_barrier:1,mpi_cart:494,mpi_cart_creat:494,mpi_cart_get:494,mpi_cart_rank:494,mpi_cart_shift:494,mpi_comm:6,mpi_get_processor_nam:494,mpi_inc:12,mpi_lib:12,mpi_lmp_bigint:3,mpi_lmp_tagint:3,mpi_path:12,mpi_wtime:12,mpicc:11,mpich2:12,mpich:[12,14,15,16,17,393],mpicxx:[12,16],mpiexec:[12,14,16,17,393],mpiio:3,mpirun:[1,6,11,12,14,15,16,17,18,300,376,393],mplayer:206,mri:[458,459],msd:[2,3,6,12,65,75,87],msi2lmp:0,msi:13,msm:[2,3,9,12,76,127,348,377,378],msmse:[130,177,319],msse3:446,msst:[2,3,4,9,210],mtchell2011:455,mtchell2011a:455,mtd:230,mth:[8,131,207,514],mtk:[271,272,276],mtotal:387,mu_j:28,muccioli:422,much:[1,3,6,11,12,39,154,203,204,206,221,229,307,342,389,390,393,395,422,460,492,495,511,516,518,519,524],mui:[124,203,204,237,337,497],mukherje:[7,9,302],mulder:346,muller:[6,99,210,343,350,447],mult:8,multi:[0,1,2,3],multibodi:[3,9,63,302,450,451],multicent:418,multicor:[1,9,494,510],multidimension:13,multielectron:396,multilevel:[9,377,378],multinod:15,multiphys:11,multipl:[0,1,2,3],multipli:[3,95,99,127,186,198,211,212,220,254,257,298,304,380,386,395,497,524],multiscal:11,multisect:[41,225],multistag:95,multithread:[15,393,459],multitud:7,mundi:295,munich:9,murdick:399,murti:481,murtola:377,muser:299,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,34,35,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,56,57,58,59,61,63,64,75,90,92,94,95,114,118,120,121,123,126,127,128,129,130,131,156,160,167,171,176,177,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,197,199,200,201,202,203,204,205,206,207,208,211,212,213,215,216,217,218,219,220,222,223,224,225,226,227,228,229,231,232,235,237,238,241,242,244,246,247,248,250,251,252,253,254,255,257,258,259,260,261,266,267,268,269,270,271,272,273,275,276,277,279,281,282,283,285,287,289,291,293,296,298,302,303,304,305,306,307,308,310,312,314,315,316,317,318,319,320,321,322,328,330,331,332,334,335,338,339,340,342,343,345,346,347,349,350,352,353,354,355,356,357,358,360,361,362,363,364,365,366,367,368,370,372,373,377,378,380,383,386,387,388,389,390,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,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,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,492,493,494,495,497,498,499,500,502,504,505,506,507,508,511,512,514,515,518,523,524,525,527,529],mutli:6,mutlipl:497,mutual:[3,380,516],mutut:506,muvt:246,mux:[124,203,204,206,237,337,497],muz:[124,203,204,237,337,497],mv2_comm_world_local_rank:12,mvapich2:[16,393],mvapich:12,mxn:[12,300],my_ga:246,my_one_wat:246,my_post_process:508,my_qeq:308,my_setup:508,my_stress:218,my_swap_region:217,myang:219,myblock:[232,303],mybox:180,mychunk1:125,mychunk2:125,mychunk:[6,69,79,86,98,103,114,116,158,173,175],mycmap:497,mycom:222,mydump:[203,207],myer:[5,7],myfil:[494,524],myfix:[217,512],myflux:99,myforc:[203,204,528],myhug:276,myke:99,mymol:[40,321,387],mympi:11,mymultipli:[495,524],myn:495,mype:99,mypi:524,mypress:[128,203,220,266],myramp:153,myrdf:[127,223],myreg:380,myregion:358,myrigid:[91,108,129,303],mysocket:253,myspher:[207,356],mystr:360,mystress:99,mytemp:[2,112,155,156,157,159,161,162,164,166,171,266,360,376,392,514,515,525],myvec:524,myz:497,n_dephas:492,n_element:205,n_f:[307,312],n_hbond:425,n_ij:423,n_ion:347,n_k:247,n_particl:88,na1:177,nabla:347,nacl:[4,6,443],nacl_cs_x0:6,nakano:[308,310,388,485],namd:[7,203,251],name1:[172,231],name2:[172,231],name:[0,1,2,3,4,5,6,8,9,11,12,13,15,32,42,50,57,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,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,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,191,202,203,204,205,206,207,208,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,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,267,268,269,270,273,274,275,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,299,300,301,302,303,304,305,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,340,341,342,343,344,345,346,348,349,350,351,352,353,354,355,356,357,358,359,360,368,375,376,378,379,381,387,388,392,394,395,399,402,416,417,419,422,423,426,427,428,430,443,444,445,452,456,458,459,466,467,477,480,481,482,483,485,486,490,494,495,497,498,499,500,504,507,510,512,513,515,518,519,524,525,526,527,528,529],namespac:[6,8,12],nan:3,nangl:[3,497],nangletyp:[387,497,507],nano:[317,517,523],nanoindent:74,nanolett:317,nanomet:[203,207,523],nanoparticl:[225,317],nanosec:523,nanosecond:[238,523],nappli:244,narea:3,narrow:[6,199],narulkar:[480,482],nasa:7,nasr:299,natdef:3,nation:[0,7,9,12,122,455],nativ:[1,6,7,9,12,16,203,208,498],natoli:[9,18],natom1:126,natom2:126,natom:[3,6,11,39,387,495,497,514,515,524],nattempt:303,natur:[6,9,152,231,271,298,312,353,416,418,419,443,456,494,524],navajowhit:207,navi:[207,416],navier:257,nb3:177,nb3b:[2,3,4],nb3bharmon:452,nb3d:9,nb5:177,nbin:[127,222,343,350],nbodi:[260,317,446],nbond:[3,124,497],nbondtyp:[207,387,497,507],nbot:399,nbounc:335,nbrhood_cutoff:459,nbtype:126,nbuild:515,ncall:244,ncbin:75,nchar:207,ncheck:516,nchunk:[3,6,69,75,79,86,98,103,114,116,125,158,173,175,219],ncoeff:467,ncorr:221,ncorrel:221,ncount:[219,220,221],nd3:177,ndanger:515,nden:[6,99],ndihedr:[3,497],ndihedraltyp:[387,497],ndirango:317,ndof:[271,276],ndoubl:497,ndp:518,ndx2group:2,ndx:359,neal:317,nearbi:[7,64,179,232,268,309,335,356,389,395,440,441,476,488,518],nearest:[3,74,75,77,100,117,129,176,179,257,270,298,342,356,377,430,443,450,451,466,478,479,524],nearli:[4,6,9,17,54,61,225,254,335,418,446,448,492,495,501,509],neb:[2,3,4,6,9,13,210],neb_combin:388,neb_fin:388,neb_log:511,neb_step:511,neb_styl:511,necessari:[6,11,12,13,14,15,16,32,63,95,186,191,198,208,225,229,230,246,247,311,318,322,335,348,358,377,439,446,448,466,497,498,502,505,506,507,511,518,528],necessarili:[12,238,312,342,363,364,365,367,380,448,525],necessit:306,need:[1,2,3,5,6,7,8,9,10,11,12,13,14,16,17,32,36,37,39,40,41,42,50,54,55,56,60,63,65,66,70,74,76,77,81,90,99,100,112,114,117,120,123,140,152,153,155,156,157,158,159,161,164,165,166,167,168,170,171,178,180,182,184,186,191,197,198,199,202,203,205,206,207,211,212,213,214,216,217,219,220,221,222,223,225,226,227,229,230,231,235,237,241,242,244,245,246,250,251,253,254,255,257,264,265,271,285,299,303,304,306,312,316,317,323,330,335,343,346,347,349,350,351,352,358,368,371,377,378,387,388,389,390,393,394,395,396,397,399,400,401,402,403,404,405,407,408,409,411,412,413,415,416,417,418,419,421,422,423,424,425,426,427,428,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,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,484,485,487,488,490,492,495,497,498,499,500,502,504,505,507,509,510,511,512,518,519,524,526,527,528,529],needless:[6,389],neelov:378,neg:[3,6,12,26,46,68,73,97,112,119,126,152,153,180,182,187,189,199,206,229,231,232,247,276,298,318,323,331,346,350,352,357,377,385,419,434,443,476,497,500,515,516],neglect:[425,441],neglig:[6,11,95,271,477],neigh:[2,3,12,14],neigh_modifi:[2,3,6,12,15,39,63,182,225,246,285,302,317,335,348,386],neighbor:[1,2,3,6,7,8,9,10,12,14,15,16,39,41,42,63,64,65,66,70,74,76,77,80,81,82,85,96,100,117,119,126,127,147,152,153,176,178,179,180,181,182,203,204,205,206,208,217,225,226,227,228,230,232,243,246,251,270,285,298,300,303,306,308,310,317,326,335,342,358,377,387,388,389],neighborhood:[25,74,100,134,467],neighbour:255,neighobr:[6,409,431,435],neither:[2,3,12,41,65,204,216,228,231,232,395,401,418,440,441,502],nelem:467,nelement:[394,416],nelson:[100,117],nemd:[0,4],nest:[2,360,374,392,524],net:[3,6,11,39,86,94,96,159,170,250,298,308,317,441,459],netherland:9,netpbm:206,network:[12,203,226,227,251,494],neumann:377,neutral:[3,96,246,377,409,431,466],never:[7,12,65,75,210,220,229,246,271,298,321,337,348,352,355,357,377,389,416,443,467,485,494,497,511,514,524],neveri:[3,8,75,213,218,219,220,221,222,223,226,227,228,238,257,258,299,308,309,310,313,314,319,343,349,350,388,466,502,511],newatom:232,newer:[12,219,443,524],newfil:[374,376],newli:[232,303,518,525],newlin:207,newn:317,newt:165,newtemp:[65,112],newtion:[399,446,456],newton:[2,3,5,7,14,15,16,28,63,124,287,293,294,385],newtonian:247,newtyp:[3,227],next:[1,2,3,6,11,12,17,37,56,59,68,73,74,75,84,99,102,119,126,129,142,199,206,207,217,219,232,236,241,242,246,247,285,303,317,318,321,347,360,376,377,386,387,388,389],neyt:342,nfile:[3,37,56,199,203,204,207,241,242,450,451,478,479,499,504,529],nfirst:502,nfirt:502,nfreak:319,nfreq:[39,75,218,219,220,221,222,223,225,314,319,502],nfs:203,ngb:298,nghost:[3,12],ngp:115,ngpu:393,nguyen:[14,399],nharmon:2,nhc:300,nht:317,ni2:177,ni3:177,ni_000:[130,319],nialh_jea:416,nialhjea:[406,426],nice:[6,8,519],nickla:445,nicola:9,nimprop:[3,497],nimpropertyp:[387,497],nine:[139,146,419,466],ninteg:497,nissila:[257,466],nist:[394,416,523],niter:[41,225],nitrid:409,niu3:[406,416,426],nkb:307,nlast:502,nlen:221,nline:387,nlocal:[3,8,11,12,244],nlog:378,nlvalu:117,nmax:42,nmin:42,nmol:497,nmpimd:300,nn2:443,nneighmaxdef:3,nnn:[100,117],no2:[242,318,420,479],no_affin:[15,393],no_gradient_correction:465,no_histori:6,no_velocity_gradient:465,noced:386,nocheck:430,nocit:12,nocoeff:[38,58,200,373,490,497,526,527],nodal:[6,37,56,199,216,241,242,347,450,451,478,479],node:[1,3,10,12,14,15,16,17,41,130,134,177,205,225,251,257,347,393,430,494,510],node_area:257,node_group:216,nodeless:418,nodes:[41,225],nodeset:216,nodeset_to_elementset:216,nof:199,noforc:[2,3,6,210],nois:[6,247,248,254,255,256,257,307,312,317,339,347],nomenclatur:[6,75,380],nomin:[203,271],non:[0,1,2,3,4],nonbond:[4,12,452,476],none:[2,3,6,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32],noneq:248,nonequilibrium:[344,345,418],nonetheless:254,nongauss:[2,65,113],nongaussian:115,nonlinear:[2,7,44,45,46],nonloc:[455,507],nonperiod:3,nonzero:3,noordhoek:408,nopreliminari:199,nor:[2,3,41,61,204,216,324,325,326,327,328,330,408,462,463,464,465,497,500],nord:[456,480,482],norder:494,nordlund:[456,480,482],norm:[6,12,65,128,210,219,318,319,325,326,386,388,475,514,515,523],normal:[3,6,9,11,12,15,39,41,60,63,65,70,74,75,77,96,99,112,113,123,127,128,163,166,176,178,179,180,184,199,207,210,219,220,222,225,229,231,232,245,246,250,254,255,263,268,271,285,298,300,301,306,308,312,314,315,323,335,336,338,339,340,347,352,353,356,357,361,363,364,365,367,382,383,385,386,388,393,407,408,422,423,426,446,475,489,491,492,495,497,499,500,502,503,507,511,514,515,516,518,523,524,528],norman:347,nornal:3,nose:[6,7,8,168,210,235,254,255,271,272,273,274,275,276,277,278,279,291,292,293,294,295,296,300,304,312,317,338,339,340,345,413,518],noskov:[483,518],noslip:[335,357],nosync:516,notabl:[5,39],notat:[6,63,65,74,152,172,210,268,271,416,485,524],note:[1,2,3,6,7,8,9,11,12,13,14,15,16,17,18,21,23,24,27,31,32,34,35,36,37,38,39,40,41,42,44,47,54,55,56,58,60,61,62,63,64,65,68,69,71,73,75,77,79,84,86,95,97,98,99,102,103,107,113,114,115,116,119,121,123,124,125,126,127,128,129,130,131,152,153,158,160,161,162,166,168,172,173,175,176,177,178,179,180,181,182,184,186,189,191,195,198,199,200,202,203,204,205,206,207,208,210,211,212,213,216,217,218,219,220,221,222,223,224,225,226,227,228,229,231,232,235,236,237,240,241,242,243,244,246,248,249,250,252,253,254,255,256,257,267,268,269,271,273,274,275,276,277,278,279,285,287,291,292,294,296,300,302,303,304,306,307,308,310,315,316,317,318,319,322,323,331,332,333,335,338,339,340,343,346,347,349,350,351,352,353,356,357,358,360,361,362,363,364,365,367,371,373,376,377,378,380,383,386,387,388,389,393,394,395,399,400,402,403,404,406,407,409,410,412,413,414,415,416,419,422,423,424,425,426,430,431,433,435,440,441,443,444,445,446,447,448,450,451,452,456,458,459,460,461,463,465,466,467,468,471,475,477,478,479,480,482,484,485,488,489,490,492,494,495,497,498,499,500,501,502,504,505,507,509,511,512,514,515,518,519,523,524,525,528,529],notes:[95,439],noth:[217,253,379,393,495,508,519],notic:[0,6,7,8,12,345,347,518],noutcol:8,noutput:299,noutrow:8,novemb:443,novik:13,novint:251,now:[2,3,6,10,11,12,13,15,46,63,64,75,203,211,212,227,247,251,252,306,317,353,356,378,380,416,418,423,458,459,468,493,498,518,519,525],nowait:251,nozforc:377,np3:177,np4:177,np6:177,npair:[127,220],nparticl:[3,40,42,398],npartit:515,npernod:[14,16,17,393],nph:[2,3,5,6,7,9,42,129,168,210,231,255],nphi:[15,393],nphug:[2,3,9,210,269],npoli:303,nproc:[3,11,203],npt:[2,3,5,6,7,8,10,15,42,59,61,95,129,155,159,160,161,162,164,165,166,167,168,170,210,229,231,235,248,255],npt_aspher:[273,279,291],npt_bodi:[274,292],npt_sphere:[275,296],nrecomput:415,nrepeat:[75,218,219,220,221,222,223,314,319,502],nreset:[229,271,272,276],nreset_ref:229,nrho:[394,416],nrl:416,nsall:9,nsampl:415,nsbin:75,nsbmax_most:3,nsec:517,nskip:[131,502],nsq:[3,390,454],nstart:[131,220,221,222,223,319,497,502],nstat:298,nstep:[3,13,229,271,358,472,495,498],nsteplast:495,nstop:[131,502],nswap:[343,350],nswaptyp:3,ntabl:[37,56,199,241,450,451,478,479],nterm:323,nth:[12,81,127,128,204,207,222,231,502,512],ntheta:399,nthread:[3,393],ntpc:393,ntptask:393,ntype1:126,ntype2:126,ntype:[3,152,178,203,207,308,310,418,425,456,497,507],nuclear:[9,106,107,164,248,272,307,312,387,418,489],nuclei:[106,107,162,164,169,204,256,272,284,295,341,396,418,497],nucleu:[106,107,308,482,518],nudg:[4,6,7,9,210,270,385,388],nulcear:9,num:2,num_of_collis:3,num_step:318,numa:[1,3,12,393,494],numactl:15,number:[1,3,4,6,7,8,9,10,11,12,13,14,15,16,17,21,26,37,38,39,40,41,42,44,56,57,58,65,66,67,68,69,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,88,95,98,99,100,101,102,103,112,113,114,116,117,119,122,123,124,125,126,127,128,129,130,131,141,147,152,155,156,157,158,159,160,161,163,164,165,166,167,168,170,171,172,173,175,176,177,178,179,180,181,182,186,187,198,199,200,202,203,204,205,206,207,208,210,211,212,215,217,218,219,220,221,222,223,225,226,227,228,230,231,232,241,242,243,244,246,247,248,250,251,252,253,254,255,256,257,260,266,268,271,272,276,285,287,293,298,299,300,302,303,306,307,308,312,314,317,318,321,322,326,332,335,336,337,339,342,343,344,345,347,348,349,350,352,354,355,357,358,360,362,373,375,377,378,380,383,384,386,387,388,389,390,393,394,395,399,401,406,408,413,415,416,417,418,419,425,426,427,428,429,443,444,445,446,448,450,451,452,456,457,458,459,460,463,465,466,467,475,477,478,479,480,481,482,484,485,486,489,490,491,492,494,495,497,498,499,500,501,503,504,505,506,507,509,511,512,514,515,516,518,523,524,525,529],number_of_a:3,number_of_b:3,numbond:3,numer:[1,2,3,6,9,11,12,21,37,41,42,44,56,75,81,95,117,127,128,172,182,186,197,199,203,206,207,211,212,213,215,216,218,219,220,222,223,237,238,247,250,254,268,271,300,317,321,322,347,352,354,355,357,358,362,383,386,387,406,412,426,443,448,450,451,458,459,465,478,479,489,491,495,496,497,504,507,513,514,515],numpi:11,nvalu:[219,223,495],nvaluelast:495,nvc_get_devic:14,nvcc:[1,9,16],nve:[1,2,3,4,5,6,7,8,9,10,15,39,42,95,99,129,178,210,216,235,238,247,248,250,253,254,255,256,260,263,268,271,276],nve_aspher:[273,277,291],nve_bodi:[274,278,292],nve_spher:[275,279,296],nvida:16,nvidia:[1,3,9,14,16,393],nvt1:518,nvt2:518,nvt:[2,3,5,6,7,8,15,42,95,99,129,159,160,161,162,165,166,167,168,170,210,216,217,220,222,223,231,235,238,246,248,250,254,255,263,268],nvt_aspher:[273,277,296],nvt_bodi:[274,278],nvt_sphere:[275,279],nvtfe:216,nwait:299,nwchem:7,nxnode:347,o_core:160,o_shell:160,oascr:7,obei:[3,231,380,492],ober:7,obj_shared_foo:12,obj_target:12,object:[6,8,11,12,14,40,42,206,229,251,257,260,303,323,330,386,387,495,500],observ:[15,271,307,338,339,342,343,350],obsolet:13,obstacl:[4,252],obtain:[1,3,9,12,15,28,77,95,113,117,176,208,212,245,248,257,276,299,300,342,377,395,412,443,448,457,466,480,482,506],obviou:[12,489,524],obvious:206,obviousli:[303,512,524],occ:421,occasion:[3,271,492],occlus:206,occup:[3,176,393,421],occur:[1,3,6,11,12,16,39,59,61,63,64,75,94,115,176,179,181,197,199,203,204,207,217,225,228,229,231,241,242,246,249,252,260,269,285,308,317,335,344,357,358,360,377,389,393,415,418,439,450,451,459,478,492,494,495,500,502,506,511,514,524],occurr:[370,497,511,524],oct:11,octahedr:24,octant:494,odd:[41,117,207,225,271,317,338,339,347,512],ode:[9,318],off:[1,3,6,12,14,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,36,37,39,40,43,44,45,46,47,48,49,50,51,53,54,55,56,61,63,68,73,75,118,119,123,124,126,152,153,155,161,165,176,177,182,184,185,186,187,188,189,190,191,192,193,195,196,198,199,203,204,206,207,210,213,217,223,224,227,228,231,239,245,246,247,249,251,254,255,260,271,273,274,275,276,277,278,279,280,281,285,289,291,292,294,296,302,304,305,309,310,317,320,321,335,350,352,355,356,361,362,363,364,366,367,368,370,371,372,377,378,386,388,389,391,393,394,395,397,400,401,402,403,404,405,407,408,409,411,412,413,416,417,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,441,443,444,448,449,450,451,452,453,455,459,460,461,463,465,466,468,475,476,477,478,480,481,482,483,485,487,488,489,492,493,494,497,499,500,504,506,509,510,511,516,521,523,524,527,529],offend:[3,495],offer:[6,17,181,385,409,466,492,506],offic:7,offload:[1,9,15,16,251,393],offset:[3,6,59,178,206,231,232,303,387,409,431,435,476,497],offsite:8,often:[1,3,6,7,12,13,14,15,16,17,36,55,75,172,198,206,213,222,223,225,229,244,251,271,300,319,371,380,385,386,388,389,390,393,408,413,431,478,480,482,492,511,516,518,519,523],ohio:445,old:[3,6,210,229,232,271,443,458,468,498,501,505,508,523,527],older:[3,5,12,13,15,16,207,229,271,468,524],oldlac:207,oleinik:399,olfason:[6,24,372,425,509],oliv:207,olivedrab:207,olivier:9,ollila:[257,259,260,261],olmsted:[216,298],omega0:372,omega:[2,3,6,65,92],omega_dot:271,omega_ij:414,omega_ijk:482,omega_ik:480,omegadd:[450,451],omegai:[124,129,203,204,337],omegax:[124,129,203,204,337],omegaz:[124,129,203,204,337],omgea:6,omiss:[0,7],omit:[199,207,238,354,403,412,435],omp:[1,2,3,7],omp_num_threads:[3,15,17,393],omp_proc_bind:16,ompi_comm_world_local_rank:12,on_the_fli:216,onc:[0,1,3,6,11,12,15,41,61,65,75,114,184,205,206,210,211,212,225,244,246,248,255,303,306,317,318,335,343,348,350,358,384,387,388,389,422,424,426,456,460,494,495,504,514,518,524],once:[0,2,6,8,12,40,41,62,99,207,225,226,227,232,299,348,427,511,519],one:[3,6,12,13,16,28,42,76,81,99,127,152,160,206,226,227,231,267,271,276,315,331,335,342,347,349,378,387,399,410,441,459,466,492,495,497,498,506,509,524],onelevel:494,onewai:[2,3,210],ongo:251,oniom:[9,311],onli:[1,2,3,6,7,8,9,11,12,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,58,61,62,63,65,66,68,69,70,71,73,74,75,77,79,82,84,85,86,88,89,91,94,95,96,98,100,102,103,106,107,108,109,110,111,113,114,115,116,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,161,162,164,165,166,168,169,170,171,172,173,175,176,177,178,181,182,184,185,187,188,189,190,191,192,193,195,196,197,198,199,200,202,203,204,205,206,207,208,210,211,212,213,214,215,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,235,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,264,265,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,286,287,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,306,307,308,309,310,311,312,313,314,317,318,319,320,321,322,323,324,325,326,327,328,330,335,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,363,364,365,366,367,368,370,371,372,373,375,377,378,380,383,386,387,388,389,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,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,479,480,481,482,483,484,485,486,487,488,489,490,491,492,494,495,497,498,500,501,502,504,505,506,507,508,509,511,512,513,514,515,516,518,519,524,525],only:[2,3,6,13,15,41,61,74,76,112,131,156,157,158,181,203,204,205,206,207,208,220,223,229,238,246,249,263,266,270,287,293,298,302,308,309,317,343,349,350,358,360,377,386,388,394,395,399,401,404,408,416,417,419,425,427,428,440,441,443,444,445,452,456,457,458,459,467,477,480,481,482,485,506,515,518,524,527],only_group:176,onn:506,onset:[307,370],ontario:9,onto:[152,180,228,232,238,257,475],onward:2,open:[0,3,5],opencl:[1,3,7,14,393],opengl:6,openkim:9,openmp:[1,3,4,7,9,10,12,15,16,17,375,393,459,510],openmpi:[12,14,15,16,17,393],opensourc:7,oper:[1,3,6,7,8,11,12,15,16,39,41,42,61,75,99,128,131,166,168,169,178,181,182,207,210,217,219,220,222,223,225,226,227,228,232,238,246,249,256,266,267,268,269,271,272,273,274,275,276,277,278,279,284,291,292,294,295,296,303,305,306,315,317,319,321,323,334,335,336,337,341,345,347,351,353,358,360,375,377,378,385,388,390,393,446,463,465,491,492,493,494,495,497,498,499,500,502,503,505,506,510,511,514,519,524,525,528],operat:3,opl:[2,15,186],opls:[7,186,195,198,426],oppelstrup2:9,oppelstrup:[9,446],oppos:[6,39,201,203,204,316,354,378,387,497],opposit:[6,28,74,184,215,254,261,298,317,350,388,409,439,483,495],opt:[1,2],optic:156,optim:0,optimiz:[15,309,386,408],option:[0,1,2,3,4],optional:[227,246,314,353,393,459,467,505],optionn:16,options:[9,12,15,16,446],orang:[2,206,207],orbit:[308,310,399,409,418,466,476],orchid:207,order:[2,3,6,9,11,12,15,26,28,37,39,41,56,61,65,68,73,75,84,95,97,98,100,102,103,117,119,123,126,129,142,152,153,154,155,156,157,158,159,160,161,164,165,166,167,168,170,171,182,187,198,199,203,204,206,207,210,213,218,220,222,223,224,226,227,228,229,230,235,237,238,242,246,248,250,251,253,257,258,260,269,271,298,306,307,311,314,315,316,317,318,319,320,321,323,328,330,336,342,346,347,348,349,359,360,361,363,364,365,367,370,371,377,382,387,388,394,395,396,399,408,414,415,416,418,419,422,423,426,428,431,439,443,446,450,451,458,459,460,466,476,477,478,479,480,481,482,483,485,486,492,494,495,497,498,502,504,506,507,511,514,518,524,529],orderomg:3,ordinari:[122,318,425,455],org:[6,7,11,12,13,298,457],organ:[0,3,6,7,8,408],organis:[463,465],organometal:24,orien:507,orient:[2,3,6,8,13,28,40,42,65,74,75,90,99,100,117,124,129,178,202,203,204,210,231,237,246,260,268,271,273,274,277,278,281,282,283,286,289,290,291,292],orientord:[2,3,65,100],origid:219,origin:[3,6,7,9,12,75,87,113,114,125,130,174,178,180,202,206,207,210,211,212,219,226,227,231,235,238,255,268,271,294,300,303,313,317,319,327,334,345,374,376,377,380,385,394,395,397,399,409,412,413,415,416,425,428,443,455,458,459,480,482,483,484,494,497,498,499,500,501,502,519,523,527],orlikowski:446,ornl:[7,9,14],orsi:28,ortho:[3,61,180,497],orthogon:[0,3],orthograph:206,orthong:61,orthongon:[61,317],orthonorm:232,orthorhomb:307,os4:177,oscil:[6,9,163,227,231,234,235,255,268,269,271,307,312,317,352,353,355,357,387,396,483],oscillatori:[268,327],ose:206,oserror:11,other:[0,1,2,3,5],otherwis:[1,3,9,12,16,17,36,39,55,57,75,122,130,156,157,158,171,179,184,198,204,207,208,217,219,226,227,231,244,246,248,255,271,317,318,371,372,382,386,393,401,426,430,440,441,456,486,490,492,495,497,498,518,524],otyp:[409,431,435,439],our:[5,6,7,8,13,257,321,448,480,482,518],out:[1,2,3,4,6,7,8,11,12,13,17,18,20,41,66,69,75,79,86,98,99,103,104,107,113,114,115,116,118,125,126,155,156,157,158,159,161,162,164,165,166,167,168,170,171,173,175,181,185,203,204,206,207,208,210,225,226,227,230,239,245,246,252,254,257,262,285,287,299,301,302,303,306,312,313,314,317,331,347,356,358,359,360,361,363,367,375,376,380,384,388,392,418,426,442,476,491,492,494,495,500,501,502,504,505,506,508,511,513,514,515,516,520,522,524,525,526,527,528,529],outcom:[317,525],outer2:[404,424],outer:[3,8,15,57,75,236,252,360,376,384,386,392,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,410,412,413,415,416,417,418,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,455,457,458,459,460,461,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,484,485,486,487,488,489,490,492,505,506,511,516,517,524],outer_distance_cutoff:425,outermost:[37,56,75,211,212,213,214,224,233,237,249,252,266,268,271,298,309,316,320,323,331,332,333,334,351,352,356,389,478,479,506],outfil:[13,494],outlin:[6,206],outmost:251,outpur:119,output:[0,1,2,3,5],output_frequ:216,outputss:139,outsid:[3,8,59,61,75,168,178,202,203,204,205,206,207,208,222,232,238,246,252,317,319,335,340,341,354,355,356,357,358,375,388,400,402,409,418,431,433,453,461,495,497,498,500,507,514,525],outut:6,outward:[75,176,352,356,357,497,506],over:[1,3,5,6,7,12,15,17,26,39,41,42,55,62,68,71,73,75,84,85,95,96,97,98,100,102,111,113,115,117,119,126,127,129,137,138,144,149,152,153,158,161,164,172,174,187,199,206,208,210,211,212,218,219,220,221,222,223,224,225,226,227,231,232,244,247,248,252,254,255,256,260,268,269,270,271,272,273,274,275,277,278,279,291,292,294,295,296,298,303,304,307,314,315,316,317,318,319,323,331,335,338,339,340,341,343,346,349,350,352,354,355,356,357,358,361,376,379,388,389,390,407,413,416,417,418,419,425,440,443,446,456,467,468,476,477,478,480,481,482,485,493,494,495,500,502,503,505,506,511,512,514,515,523,524,525],overal:[6,17,24,61,172,229,235,271,272,300,321,335,360,384,418,425,426,467],overalap:317,overcom:[285,335],overflow:[3,387,389],overhead:[6,11,18,41,207,219,221,225,238,243,306,389,390,500,516],overkil:317,overlai:[2,6,15,95,118,172,211,212,347,409,413,415,425],overlaid:7,overlap:[3,13,15,64,80,119,126,178,181,199,207,215,218,219,222,223,232,236,263,285,303,308,314,317,319,335,353,357,377,380,384,386,387,393,413,418,423,426,429,439,462,464,468,484,497,500,506],overli:318,overload:1,overrid:[3,9,12,15,16,21,44,75,164,178,186,206,207,211,212,229,236,266,271,320,362,377,387,389,406,425,426,443,448,458,494,495,499,507,509,514,524],overridden:[6,178,206,276,317,429,440,448,468,476,505,524,527],overview:[0,1,2,6,7,8,9],overwrit:[11,12,21,44,186,207,219,220,221,222,223,319,362,375,381,406,443,495,498,499],overwritten:[204,305,346,375,425,426,492,493,498],own:[3,4,6,7,8,11,12,13,14,16,39,41,61,63,65,68,69,73,75,77,79,84,86,98,102,103,114,116,124,125,126,128,129,131,158,161,173,175,176,203,204,207,210,216,218,219,220,221,222,223,225,228,229,231,244,247,248,254,255,257,266,269,271,273,274,275,276,277,278,279,291,292,294,296,300,304,312,317,319,338,339,340,349,377,388,393,395,399,408,417,428,456,458,459,477,480,481,482,485,494,507,512,514,519,525],oxford:[28,95,412],oxid:[9,408,409,466],oxygen:[6,40,243,306,409,431,435,466,497],oxygen_c:160,p10:423,p_e:347,p_ik:456,p_pi:399,pacakg:[15,393],pack:[5,8,70,353,393,399,443],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:393,packag:0,packakg:14,packet:[7,9,40,206,396,418],pad:[3,203,204,206,207,300,524],padua:[9,13],page:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,21,36,40,42,44,55,59,61,65,69,71,79,84,86,95,98,102,103,114,115,116,118,120,121,123,125,128,129,131,153,156,157,158,171,173,175,178,179,180,186,198,202,203,204,205,206,207,208,210,211,212,217,218,219,220,221,222,223,232,246,253,254,255,266,271,272,277,278,279,283,291,292,294,295,296,303,306,317,331,335,338,339,340,349,353,356,358,360,362,371,376,382,386,387,388,389,393,394,395,398,406,408,409,416,417,419,425,426,428,429,443,444,445,448,452,456,457,467,476,477,480,482,484,485,495,497,498,499,500,502,505,506,507,509,514,515,524,525,527,528],pai:[14,17],painless:519,pair:[1,2,3,4],pair_:[95,211,212],pair_airebo:428,pair_charmm:439,pair_class:8,pair_coeff:[2,3,6,95,99,119,126,179,184,211,212,227,314,335,394,395,396,397,398,399,400,401,402,403,404,405],pair_dpd:9,pair_dzugatov:519,pair_eam:394,pair_eff:164,pair_foo:8,pair_gayberne_extra:9,pair_hybrid:[426,483],pair_interact:216,pair_kim:211,pair_list:430,pair_lj:439,pair_lj_cut:8,pair_lj_soft_coul_soft:95,pair_modifi:[2,3,6,95,96,118,121,377,386,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,412,413,415,416,417,418,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],pair_resquared_extra:9,pair_sph:[469,470,471,472,473,474],pair_styl:[0,1],pair_tally_callback:8,pair_writ:[2,3,406,437,476,478,479],paircoeff:[3,490],pairfoo:8,pairij:[3,497],pairkim:3,pairstyl:8,pairwis:[0,1,3,5,6,7],pakketeretet2:519,palegoldenrod:207,palegreen:207,paleturquois:207,palevioletr:207,pan:206,panagiotopoulo:[410,421],pandit:[9,310,459],papaconstantopoulo:394,papayawhip:207,paper:[3,6,7,8,9,13,39,40,66,152,166,172,190,254,257,261,270,302,308,310,317,335,343,347,350,377,385,388,395,403,409,423,425,428,433,435,455,458,459,480,482,492,511],paquai:[9,287,293,382,519],paradyn:5,paraemt:460,paragraph:[75,166,352,380,450,451,478,498,499],parallel:[0,1,2,3,4,5,6,7,8,9,10],parallel_studio_xe_2016:15,parallelepip:[6,180,380,497,500],parallelipip:[180,299],paralleliz:[9,302],param:[3,308,310,420,429,494,500],param_free_:211,param_free_sigma:211,paramet:[0,2,3],parameter:[130,177,395,399,408,409,416,417,418,419,428,443,444,445,456,458,459,466,477,480,481,482,485],parameter_fil:216,parameterizaion:409,parametr:[6,9,35,417,457,461],paramt:[115,308,354,460],paramter:408,paratem:439,paraview:[204,319],parent:[3,8,358],parenthes:[37,56,199,241,242,318,420,423,450,451,478,479,524],parenthesi:[2,15,219,360,524],parinello:[6,7],pariticl:225,paritlc:3,park:[3,7,9,216,323,445,455],parmin:446,parrinello1981:229,parrinello:[229,248,269,271,272,307,339],pars:0,parser:[12,524],part:[0,1,2,3,6,7,8,9,11,12,16,19,20,22,23,24,25,26,27,28,29,30,31,34,35,36,37,40,41,43,45,46,47,48,49,51,53,54,55,56,66,70,74,75,76,82,85,88,89,91,100,106,107,108,109,110,111,113,115,118,119,122,123,126,129,130,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,160,162,164,165,169,170,172,176,177,181,184,185,187,188,189,190,192,193,195,196,198,199,203,204,205,207,208,210,213,214,215,217,221,224,225,226,227,228,229,230,231,232,234,237,238,239,240,241,242,243,244,245,246,247,248,249,251,252,253,254,255,256,257,258,259,260,261,263,264,265,266,269,271,272,273,274,275,276,277,278,279,280,281,282,283,284,286,287,289,290,291,292,293,294,295,296,298,299,300,302,303,307,308,309,310,311,312,313,314,316,317,318,320,321,322,323,324,325,326,327,328,330,331,332,334,335,338,340,341,342,343,344,345,346,347,348,350,352,353,354,355,356,358,359,360,361,363,364,366,367,370,371,372,377,378,386,387,388,389,393,394,395,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,443,444,445,446,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,478,479,480,481,482,483,484,485,487,488,489,494,495,497,498,499,500,504,505,506,509,515,519,524,529],partai:[9,457],parti:[4,9],partial:[1,2,3,6,8,65,112,155,158,164],partic:6,particip:[197,227,398,429,484],particl:[0,3,4,5],particleenergi:3,particleviri:3,particular:[1,3,4,6,8,10,12,40,65,68,73,74,75,84,102,119,124,126,127,152,178,202,203,204,206,210,211,215,225,228,246,247,252,253,257,268,271,298,303,316,317,321,342,353,358,361,378,380,384,387,393,398,399,400,402,404,405,407,411,414,417,418,422,424,426,431,435,439,442,449,452,453,460,461,476,477,480,481,482,483,485,492,494,497,498,499,504,505,507,515,519,524,525,528,529],particularli:[6,7,9,12,14,24,39,206,229,317,378,418],particuolog:42,partilc:335,partit:[2,3,6,7,12,41,64,154,166,180,207,225,272,300,374,376,381,388,392,403,404,418,431,432,435,442,447,456],partitoin:64,partner:[3,7,63,226,227,228,255,335,350,483,507,512,518],pascal:[9,13,523],pass:[6,7,8,9,11,69,78,79,86,87,97,98,103,113,114,115,116,129,173,203,204,206,207,208,229,230,244,246,268,269,271,306,335,352,376,382,389,393,426,429,458,475,495,497,498,502,508,524,528],passphras:12,password:519,past:0,patch:[0,12],patchi:317,patel:446,path:[3,6,7,11,12,13,14,208,253,270,300,323,335,342,347,388,394,395,399,406,416,417,419,428,443,444,445,452,456,457,458,466,467,477,480,482,485,498],pathtolammp:466,patient:12,patom1:[119,126],patom2:[119,126],patrick:481,pattern:[3,7,12,64,77,499],pattnaik:317,paul:[0,7,13,254,256],pauli:[418,466],paus:505,paves:300,payn:[152,457,467],pb2:177,pb4:177,pbc:[75,352,396],pchain:[271,272,276,317],pcie:1,pd2:177,pd4:177,pdamp:[271,272,276,304,317],pdb:[6,13,208],pdebuyl:9,pdf:[0,8,9,13,16,40,109,110,111,122,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,230,253,264,265,324,325,326,327,330,455,469,470,471,472,473,474,507],pdim:350,pdlammps:[82,85,455],pdlammps_eps:[9,122,455],pdlammps_overview:9,pdlammps_ves:[9,455],pe_eta:271,pe_etap:271,pe_omega:271,pe_strain:271,peachei:13,peachpuff:207,peak:421,pearlman:95,peculiar:12,pedersen:378,peform:[39,309],penalti:[458,459],pencil:[6,75,166],pend:3,penetr:[42,132,462,464,507],penetret:40,peng:177,penn:13,peopl:[7,8,9,12],peptid:[4,9,230],per:[0,1,3,5],peratom:[3,121,153,176],perceiv:206,percent:[3,12,15,229,393,477],percentag:[1,12,229,271,303,304,317],percol:227,perfect:[6,41,74,77,100,225,298,388],perfectli:[41,225,498],perfom:[6,388],perform:0,performac:1,pergamon:[443,482,489],perhap:380,peri:[2,3,4,6,7],peridyma:82,peridynam:[3,4,6,7,9,40,65,82,85,122,455,476,497,507],perimitt:410,period:[2,3,6,7,8,9,12,21],perioid:352,perl:[6,13],perm0:523,perman:[3,39,54,75,182,226,227,251,316,358,393,425,501,509],permeabl:297,permiss:[227,495],permit:[6,257,446],permitt:[410,482,488,489],permut:[12,417,477,480,482,485],perpendicular:[6,75,156,206,231,252,262,268,270,298,301,327,352,353,385,497],perram:[378,422],persepct:206,persist:[3,8,75,244,317,393,494,495,499,503,524],person:[9,519],persp:[3,206],perspect:206,pertain:[406,476],perturb:[9,13,74,95,267,315,352,355,357,502],peru:207,peskin:257,pessimist:378,petersen:[335,378],pettifor:[399,476],pettifor_1:399,pettifor_2:399,pettifor_3:399,pfactor:206,pforc:495,phantom:251,pharmaceut:7,phase:[3,12,15,271,342,350,399,431,481,494],phd:457,phenol:518,phenomena:418,phi0:[196,316],phi1:185,phi2:[185,417,477],phi3:[185,417,477],phi:[1,3,4,7,9,10,12,15,16,84,100,117,152,197,198,199,206,249,316,364,393,394,399,416,419,443,444,445,510],phi_ij:[399,419,456],philadelphia:9,phillip:[255,413,518],phillpot:[309,408,409,466],philosoph:416,philosophi:[6,7,253],phonon:[0,2],phophor:467,phosphid:467,phy:[6,7,13,19,20,24,39,43,45,46,66,74,77,95,96,100,117,121,123,152,153,160,166,184,185,195,205,217,221,229,230,235,238,247,248,253,254,255,256,257,269,270,271,272,276,287,289,293,294,295,299,300,304,307,309,312,317,321,322,323,335,338,339,342,343,344,345,347,350,352,361,370,372,377,378,385,388,395,399,400,404,405,407,408,409,410,411,412,413,414,416,417,418,421,422,423,424,425,428,431,433,435,436,439,440,441,442,443,445,447,448,450,451,453,455,456,460,466,467,475,477,478,479,480,481,482,483,485,492,506,509,511,518],physic:[3,6,12,15,16,17,40,42,53,61,132,160,172,197,216,231,238,248,254,256,257,259,260,261,269,299,308,310,346,347,378,380,388,393,395,397,403,407,416,425,426,446,457,458,459,462,470,471,473,474,492,494,506,507,512,523],physica:[440,441],physik:[7,9],pic:9,picki:8,picocoulomb:523,picogram:523,picosecond:[207,231,515,523],picosend:418,pictur:7,piec:[3,11,152,207,271,504,529],pierr:9,pieter:13,pimd:[2,6,7,13,253],pin:15,pink:207,pipe:[6,203,206],pipelin:[3,6,15],pisarev:347,pishevar:413,piston:[2,3,9,210,215],pitera:6,pixel:206,pizza:[6,7,11,13,41,203,206,225],pjintv:13,pka:347,place:[3,6,7,11,12,32,41,50,75,95,172,178,182,191,199,203,206,207,209,210,211,212,227,228,231,238,246,247,248,250,253,254,255,256,258,260,261,271,277,278,279,291,292,296,303,306,315,317,338,339,340,347,352,355,357,376,406,425,476,484,494,495,498,505,507,512,515,524],placehold:[32,191,394,395,408,416,419,427,428,443,444,445,452,456,458,459,467,475,477,480,481,482,485],placement:[380,431],plai:[6,206,342],plain:[9,439,495],plan:[3,5,6,15,16,180,497],planar:[6,40,42,252,298,353,370,372],planck:[246,300],plane:[3,6,9,41,42,59,61,70,75,100,206,210,216,225,249,252,262,298,301,311,331,334,347,353,361,363,364,365,366,367,372,380,382,441,484,500,507],plane_wiggl:382,planeforc:[2,210,262],plasma:[96,272,347,418],plastic:[2,3,9,65,82,85],plastic_strain:133,platform:[1,3,7,9,12,13,14,15,16,203,206,208,499,504,529],plath:[6,99,210,343,350],player:206,pleas:[0,3,7,11,12,13,15,216,248,257,261,299,302,306,313,342,358,417,419,455,463,465,466],plen:396,plimpton:[0,5,7,15,74,123,153,228,298,308,335,423,455],plog:[3,12,506],ploop:[271,272,276],plos:28,plot:[7,11,13,15,57,307,437,439,478,479,486],plu:[3,11,12,39,61,71,106,176,181,207,224,229,231,232,276,317,390,418,429],plug:9,plugin:[9,13,208,498],plum:207,pm3:177,pmb:[2,9],pme:378,pmf:[230,323,331],png:[3,12,203,206],pni:206,poariz:6,poem:[2,3,6,9,12,210],poems:[3,6,7],point1:497,point2:497,point3:497,point:[1,2,3,4,6,7,8,9,11,12,15,17,28,37,40,41,42,56,61,74,75,90,92,93,124,125,130,152,156,157,171,176,177,178,189,199,201,202,203,204,206,207,210,215,219,221,223,225,229,231,232,233,237,241,242,245,246,248,251,252,257,260,268,270,271,273,274,275,277,278,279,281,282,283,286,289,290,291,292,294,296,299,300,306,307],point_data:319,pointer:[3,7,8,9,11,244,495],pois:523,poiseuil:[4,213,249],poisson:[61,231,378,423],poisson_solv:216,polak:385,polar:[6,7,117,152,160,177,216,234,408,409,431,483,518],polar_off:408,polar_on:408,polariz:0,poli:[2,3,176,303,380],politano:[9,466],pollock:[7,378],polya:358,polybond:13,polychain:317,polydispers:[3,387,401,407,423,440,441,476,488],polyethylen:395,polygon:[6,42,176],polyhedron:176,polym:[0,5,6,7,10],polymer:7,polymorph:[2,3,7],polynomi:[9,37,56,199,416,437,448,466,471,478,479],polytechn:302,poor:[16,41,225,294,295,321,393,437],poorli:[385,386],pop:[3,8],popen:12,popul:[12,312,380,415,497],popular:[12,203,417],pore:331,poros:181,porou:[257,260],port:[251,253],portabl:[7,9,12,203,205,230,458,499],portion:[1,3,9,11,12,14,41,54,67,72,75,83,96,99,101,118,119,121,124,153,154,168,203,204,207,218,219,222,223,225,229,238,243,257,271,273,274,275,277,278,279,309,314,315,317,319,360,376,389,393,400,402,403,404,405,409,410,412,413,418,420,421,422,424,425,431,435,439,442,453,460,461,482,486,496,497,502,506,507,516,519,524],poschel:423,posfreq:314,posit:[3,6,26,39,40,41,42,46,59,61,74,75,86,87,97,98,113,114,119,128,130,134,152,153,161,176,177,178,180,181,182,187,189,197,199,202,204,205,206,207,210,211,213,215,217,218,219,222,225,226,227,228,229,230,231,232,235,237,238,246,247,248,249,251,252,254,255,256,257,259,260,264,265,268,269,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,294,295,296,298,299,300,302,303,304,307,308,312,314,315,317,318,321,323,327,330,331,334,335,337,338,339,340,342,344,345,346,347,350,352,353,354,355,356,357,358,361,377,380,388,395,396,398,401,413,414,415,418,421,434,450,451,459,466,475,478,479,484,492,497,500,507,516,518,524,525],posix:251,posix_memalign:12,possibl:[1,3,6,8,9,11,12,14,37,40,41,55,61,65,74,75,95,124,126,129,152,153,156,157,171,202,203,204,205,207,210,212,216,217,225,226,227,228,232,234,240,248,255,266,298,303,311,312,314,317,318,330,335,337,347,348,353,366,376,378,386,389,390,393,415,425,443,459,463,465,466,478,479,485,495,501,510,511,515,518,524,525,528],post:[0,4,6],post_forc:8,post_force_integr:8,post_force_respa:8,post_integrate_respa:8,postit:285,postiv:94,postma:[304,338],postprocess:13,pot:[423,459],potentail:419,potenti:0,potentials:10,potentiel:439,potetni:426,potin:446,potpourri:9,pour:[2,3,4,6,9,112,180,207,210,232],pourtoi:342,pow:231,powderblu:207,power7:16,power8:16,power:[3,9,11,15,115,152,207,312,377,393,399,495],pparam:[95,211,212],ppm:[12,203,206],ppn:[14,15,16,17,393],pppm:[0,1,2,3,5],pppm_disp:3,pppmdisp:3,pproni:[3,247],pr3:177,pr4:177,practic:[3,12,229,271,272,299,306,485,494,519],prb:[480,482],prd:[2,3,4,6,9,94,231,388],pre:[3,6],pre_exchang:8,pre_forc:8,pre_force_respa:8,pre_neighbor:8,prec:[15,466],prece:465,preced:[2,6,61,184,204,218,219,220,221,222,223,253,314,318,319,360,380,388,393,399,425,511,514,515,524],preceed:[11,12,75,166,220,352,495,524],precipit:176,precis:[1,3,9,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,43,45,46,47,48,49,51,53,54,56,113,123,155,165,178,184,185,187,188,189,190,192,193,195,196,199,203,207,213,219,223,224,229,231,238,239,245,249,254,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,308,309,310,317,320,321,355,361,363,364,366,367,370,372,377,378,386,393,394,395,397,400,401,402,403,404,405,407,408,409,412,413,416,417,419,421,422,423,424,425,431,432,433,434,435,436,437,438,439,440,444,446,449,452,453,455,458,459,460,461,466,468,477,478,480,481,482,483,485,487,488,489,499,500,506,507,510,515,518,523,524,525],precv:494,predefin:[196,207,358,418],predict:[1,6,10,12,285,317,393,516],preexponenti:511,prefactor:[23,24,27,31,34,35,172,186,198,211,212,220,352,363,367,370,386,407,421,452,460,461,468,488],prefer:[7,8,12,250,316,348,395,519],prefix:[11,12,206,230,299,318,491,494],preliminari:[37,56,199,241,242,450,451,478,479],prematur:386,prepar:[8,9,308,311,335,508,518],prepend:458,preprint:[152,287,293,382,467],preprocessor:251,prerecord:230,prescrib:[6,8,156,157,158,171,210,211,216,219,232,268,288,348],presenc:[203,226,227,257,260,440,441,446,488,527],present:[1,3,9,12,15,17,176,199,205,206,232,247,248,253,257,258,260,261,312,330,353,356,359,408,418,430,439,446,459,460,466,494,518],preserv:[3,61,229,231,271,321,335,357,498],press:[2,3,6,9,15,28,95,106,107,121,153,164,210,229,235,246,248,255,266,269,271,273,274,275,276,277,278,279],pressdown:224,pressur:[1,2,3,6,7,8,9,59,65],pressure_with_eviri:418,presum:[77,167,210,211,212,231,388,426,500],prevent:[2,3,6,40,132,197,232,245,303,335,346,370,377,384,386,388,393,413,426,454,470,471,473,475,495,499,505,507,518,524],previou:[0,2,3,5,6,8,11],previouli:232,previous:[3,9,11,61,63,75,94,112,128,131,167,178,180,182,202,203,204,205,207,215,217,218,219,220,222,223,231,232,246,252,266,268,303,315,317,320,321,347,349,352,353,354,355,357,358,379,423,476,492,495,499,500,510,512,514,515,520,521,522,524,525],prevoiu:353,price:[6,412],primari:[0,6,347],primarili:[5,7,9,16,154],prime:[235,255,424,446,480,482,494],primit:[3,6,355,356,380],princip:[3,129,251,466],principl:[6,9,11,251,272,308,418,427,446,477,494,519],prinicp:[42,317,387],print:[0,1,2,3,6,7,8,11,12,15,16,17,18,41,99,106,107,128,152,203,204,206,207,208,210,219,220,221,222,223,228,229,232,251,254,257,266,269,271,273,274,275,276,277,278,279,287,288,291,292,293,294,296,298,302,303,304],printabl:2,printflag:427,printfluid:257,prior:[176,201,322,379,528],priori:506,prism:[3,6,166,180,500],priveleg:3,privileg:[11,12,251],prob:[226,227],probab:468,probabl:[3,8,12,40,75,168,181,182,197,217,225,226,227,228,232,246,255,271,303,352,358,386,448,450,451,478,492,511,518],probe:524,problem:[0,1,2],problemat:246,proc:[1,3,8,11,12,14,15,124,203,204,376,494],proce:[41,54,182,225,236,388,446,504,512,515],procedur:[6,12,39,41,207,217,225,246,254,255,256,271,273,274,275,276,277,278,279,291,292,294,295,296,299,338,339,340,341,344,345,386,388,395,401,498,518],proceed:[12,446],procesor:[41,494],process:[1,3,4],processor:[1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,39,40,41,42,60,61,63,64,65,68,71,73,75,84,102,119,124,126,127,129,166,176,178,180,181,182,202,203,204,206,207,210,216,219,225,226,227,228,229,231,244,247,248,254,255,257,271,300,306,309,312,317,321,322,335,347,358,374,375,376,377,381,388,390,391,392,393,413,415,454,466,491,492],processsor:[41,225,494],procp1:[203,204],procsessor:516,procssor:506,produc:[1,3,4,6,7,12,13,14,15,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,41,42,43,45,46,47,48,49,51,53,54,56,65,68,71,73,75,84,102,119,121,123,124,125,126,128,129,131,153,155,165,176,184,185,187,188,189,190,192,193,195,196,199,203,204,206,207,210,213,218,219,220,222,223,224,225,228,231,239,244,245,247,248,249,254,255,256,266,268,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,303,307,308,309,310,312,317,318,319,320,321,336,337,347,348,349,352,355,360,361,363,364,366,367,370,372,378,386,388,391,393,394,395,397,400,401,402,403,404,405,407,408,409,412,413,416,417,418,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,444,449,452,453,455,456,459,460,461,468,477,478,479,480,481,482,483,485,487,488,489,492,494,499,500,502,503,506,511,512,515,524,525],product:[6,15,16,17,152,176,231,294,308,318,348,393,396,418,420,451,459,479,494,524],proessor:393,prof:302,profi:167,profil:[2,3,6,65,156,157,158,161],program:[3,4,6,7,9,11,12,13,15,16,154,203,206,207,208,210,230,244,251,257,311,416,495,496,508,524],programm:[13,16],progress:[1,41,225,251,269,307,385,386,388,515,518],prohibit:507,project:[6,7,13,385,476,519],promis:7,promot:399,prompt:[8,11,12,251,508],proni:[3,247,248],pronounc:250,proofread:8,prop:[6,306],propag:[4,9,215,271,307,324,418,426],propens:6,proper:[228,298,443,495,519],properati:306,properli:[213,237,317,322,330,387,388,414,495,525],properti:[0,2,3],propoerti:335,proport:[6,39,41,95,113,114,174,225,254,255,256,307,318,343,350,351,423],proportion:254,propos:[6,152,217,229,246,271,294,312,431,445,481,483],prospect:7,protect:335,protein:[7,10,15,178,315,317,333,497,505],protocol:251,proton:[482,489,523],prototyp:[42,455],prouduc:[223,349],prove:[88,89,240,257,322],proven:294,provid:[1,3,4,6,7,8,9,10,11,12,13,14,15,16,17,28,40,42,63,70,74,130,151,154,172,176,177,178,205,206,208,211,218,219,223,228,229,230,231,244,246,251,253,257,261,269,271,299,306,307,308,311,312,317,322,323,342,344,345,348,349,360,375,377,378,384,388,393,395,399,401,406,408,409,413,417,418,423,425,428,430,439,440,443,445,446,456,457,458,459,466,467,475,476,477,480,481,482,485,494,499,505,507,510,511,515,516,519,524],proxim:202,psa:355,pscreen:[3,12,506],pscrozi:[0,7,13],psec:[207,231,250,254,255,271,304,317,338,339,517,523],psend:494,pseudo:[418,492,497,502],pseudodynam:342,pseudopotenti:[9,446],psf:6,psi:[419,488],psi_ij:419,pstart:[3,271,272,276,304,317],pstop:[3,271,272,276,304,317],pstyle:[95,118,211,212],psu:[458,459],psuedo:502,psxevar:15,pt2:177,pt4:177,ptarget:229,pthread:[12,15,16],ptr:[6,11,244,495],ptype1:126,ptype2:126,pu3:177,pu4:177,pu6:177,publicli:5,publish:[7,257,261,287,293,308,382,409,443,446,480,482],pull:[323,331,519],puls:347,pump:[440,441],punctuat:[2,492,511],purchas:206,purdu:[9,13],pure:[11,335,426,444,445,480,482,506],purg:[3,498],purpl:[2,207],purport:11,purpos:[3,6,7,9,12,42,63,75,130,140,146,161,162,177,178,180,182,199,203,223,228,229,254,298,300,303,305,316,335,377,403,429,435,446,448,484,490,497,500,504,507,509,510,524,529],push:[3,8,213,224,231,252,270,298,315,323,386,423,468,519],pushd:252,put:[3,6,8,11,12,13,39,61,166,178,203,232,236,354,355,358,380,458,495,497,501],putenv:[508,524],px1:506,px2:506,pxx:[229,271,304,317,377,378,514,515],pxy:[3,6,515],pxz:[3,6,515],py1:506,py2:506,pydir:11,pyi:[229,271,304,317,377,378,515],pymol:[7,11,13],pymol_aspher:0,pympi:11,pypar:11,python:[0,2,3,4,6,7],pythonpath:11,pyz:[3,6,515],pz1:506,pz2:506,pzz:[229,269,271,304,307,317,377,378,515],q_1:466,q_2:466,q_3:466,q_d:518,q_i:[419,439],q_j:439,qbmsst:[2,9],qcore:308,qdamp:308,qdist:[409,431,435,439],qeq1:308,qeq2:308,qeq:[2,3,4,6,7],qeqall:466,qeqallparallel:466,qfile:[308,409],qin:250,qinitmod:466,qmin:385,qmmm:2,qmol:311,qoffload:15,qopenmp:15,qout:250,qoverrid:15,qstep:308,qtb:2,quad:[12,17,393,494],quadrant:15,quadrat:[2,3],quadratur:[95,216],quadrupl:394,quadruplet:[194,198,200,361,363,364,365,367,369,370,371,373],qualifi:[3,253],qualiti:[7,206,207,395],quantic:466,quantit:[78,87,113,114,115,174,423],quantiti:[1,3,4],quantum:[6,9,152,244,248,300,307,311,312,395,399,418,446,466,476],quantum_temperatur:307,quartic:[2,3,7],quartic_spher:216,quartz:[307,312],quasi:300,quat:[3,507],quaternion:[3,6,40,90,124,129,142,156,157,178,273,274,277,278,281,282,283,291,292,422,497,507],quati:[124,129,497],quatj:[124,129,497],quatk:[124,129,497],quatw:[124,129,497],queen:13,quench:[358,492,511],queri:[3,11,54,288,495,524],quest:[6,244],question:[8,9,12,13,287,298,358,455,519,524],queteschin:9,quick:[0,4,12,14,15,16,17,18],quickli:[3,4,8,12,13,39,100,225,231,246,251,335,385,386,388,395],quickmin:[263,287,293,384,385,386,388,511],quicktim:[4,206],quip:2,quit:[2,257,342,360,467],quot:[2,3,12,205,305,360,443,492,493,495,505,524],quotat:466,r0m:332,r10:399,r12:422,r_1:152,r_2:152,r_c:[410,412,421,482],r_cut:[399,442],r_d:518,r_e:419,r_ewald:319,r_fu:[440,441],r_i:[28,152],r_ii:152,r_ij:[28,399,418,456,489],r_ik:456,r_j:28,r_jik:456,r_m:442,r_me:410,r_mh:421,r_min:411,r_ub:19,r_x86_64_32:12,ra2:177,rad2theta:177,rad:358,radhi:500,radial:[65,75,106,107,124,127,152,162,164,169,219,256,272,284,295,331,341,386,418,425,448,450,451,497,500],radian:[19,20,23,27,31,34,35,37,129,177,185,196,199,316,361,363,367,370,497,500,507],radians:199,radiat:[130,177,347],radic:[180,497],radii:[75,80,119,126,152,228,232,407,416,422,423,440,441,446,462,464,488,500],radit:418,radiu:[2,3,6,40,42,65,75,80,92,93,97,98,119,124,126,130],radlo:500,rafferti:350,rahman:[6,7,229,269,271,272,307,455],rai:[9,16,177],ram:482,raman:15,ramirez:221,ramp:[2,3,6,9,65,161,162,166],ran:[3,6,11],random:[3,6,39,178,181,202,206,215,217,226,227,228,230,232,243,246,247,248,254,255,256,257,267,271,300,303,307,312,315,317,322,335,339,342,347,351,354,401,413,414,415,492,507,512,518,524,525],random_se:492,randomli:[178,181,217,232,246,254,303,335,357,511,512],rang:[1,3,6,7,8,9,10,12,14,15,17,37,39,56,63,75,76,81,96,117,119,120,121,123,127,128,133,152,153,164,172,177,179,182,183,190,199,203,204,206,207,216,217,227,231,232,246,248,266,303,319,335,336,342,343,348,350,377,378,386,389,390,393,395,397,399,400,401,402,403,404,405,407,409,410,411,412,413,415,416,418,420,422,424,425,426,428,431,432,433,434,435,436,437,438,439,440,441,442,443,446,447,448,449,453,456,459,460,461,466,475,476,478,479,482,483,487,488,489,491,495,506,507,515,528],rank:[6,11,12,251,348,375,494],rankin:276,raphson:3,rapid:[4,6,11],rapidli:[3,8,12,75,228,254,269,271,317,338,339,351,409,413],rapp:[308,309,310],rappe_and_goddard:309,rare:6,rasmol:[6,7],rasmussen:422,raster3d:[6,7],rate:[2,6,12,15,136],rather:[2,6,9,12,40,41,64,123,161,206,225,231,247,248,317,339,347,351,353,354,355,358,418,450,451,458,478,479,498,502,507,509,514,524],ratio:[6,61,95,111,152,217,225,231,254,256,335,343,350,351,377,391,422,423,460,470,484,494,497,507,511],rational:[348,509],rattl:[2,3,9,210,238,263],rattle:[3,9,210,238,248,287,293,321],rattle_debug:321,ravelo:[276,433],raw:15,rayleigh:[269,307],rb1:177,rbb:466,rbg:207,rcb:[3,41,225],rcm:[97,98],rcmx:[97,98],rcmy:[97,98],rcold:238,rcut:63,rcutfac:[152,467],rd1:388,rdc:16,rdf:[2,3,65],rdn:388,rdt:388,rdx:4,reach:[6,12,41,131,221,225,227,229,255,276,318,327,335,342,360,376,392,410,516,518,524],reacquaint:519,react:6,reactant:[318,418],reaction:[9,242,318,323,333,346,357,388,418,420,451,479],reactiv:[9,314,395],read:[2,3,6,7,8,9,11,12,13,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,36,37,38,40,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,61,126,176,178,179,181,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,202,203,204,206,207,208,209,210,216,217,228,229,231,232,241,242,246,248,251,268,269,271,273,274,275,276,277,278,279,291,292,294,295,296,299,300,302,303,305,306,310,317,318,321,323,327,330,334,337,345,346,347,353,359,361,362,363,364,365,366,367,369,370,371,372,373,374,376,383,387,388,392,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,412,413,414,415,416,417,418,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,455,456,457,458,459,460,461,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,484,485,486,487,488,489,490,492,494,497,498,499,501,502,503,504,505,507,508,509,511,524,525,526,527,529],read_data:[2,3,6,7,8,12,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,36,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,58,59,60,61,64,69,75,78,79,86,87,90,97,98,103,113,114,116,126,173,176,178,179,180,181,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,200,201,203,206,227,228,231,268,300,306,316,318,346,361,362,363,364,365,366,367,369,370,371,372,373,383,387,388,391,392,393,396,397,398,400,401,402,403,404,405,406,407,409,410,412,413,414,415,418,421,422,424,425,426,429,431,432,433,434,435,436,437,438,439,440,441,442,447,449,453,455,456,458,459,460,461,466,468,475,476,484,487,488,490,494],read_dump:[2,3,203,388,497],read_restart:[2,3,6,8,9,12,13,19,20,21,22,23,24,25,26,27,28,29,30,31,34,36,39,40,41,43,44,45,46,47,48,49,51,53,54,55,59,60,61,64,178,184,185,186,187,188,189,190,192,193,195,196,198,210,216,217,229,230,231,232,246,257,268,269,271,273,274,275,276,277,278,279,291,292,294,295,296,300,306,317,323,334,337,347,353,361,362,363,364,365,366,367,370,371,372,383,388,396,397,398,400,401,402,403,404,405,406,407,409,410,412,413,414,415,418,421,422,423,424,426,429,431,432,433,434,435,436,437,438,439,440,441,442,447,449,453,455,460,461,468,475,476,484,487,488,490,494,497,498],read_restart_set:8,readabl:[204,206,387,504,529],reader:[3,13,498],readi:[11,12,179,181,182,251,507,518,527,528,529],readme:[1,4,6,8,9,10,11,12,13,15,176,203,204,208,311,382,427,446,458,459,495],real:[3,6,7,11,26,29,30,61,75,99,100,117,152,167,178,187,202,207,215,231,232,235,251,252,255,268,300,307,312,315,351,352,354,355,357,366,377,378,380,384,390,409,446,448,458,459,482,497,500,506,514,517,523,525],realist:[3,232,501],realiz:[75,210,495],realli:[1,3,8,12,123,134,153,207,252,389,426,509,519],realloc:3,realtim:251,reamin:[352,356],rearrang:[204,388],reason:[3,6,7,11,12,18,39,159,170,178,197,219,254,304,317,344,345,348,358,387,388,393,406,410,418,419,421,441,448,484,486,501,506,525],reax:[0,2,3,4],reax_def:3,reaxc:7,reaxff:[3,4,5,7,9,13,210,308,310,313,314,426,458,459,476,509],rebal:[41,225],rebalanc:[41,225],rebo:[2,7,9,314],rebuild:[11,12,14,15,246,389,413,515],rebuilt:[3,12,203,204,205,206,208,389,393],recalcul:[75,95,335],receiv:[3,224,251,253,298,494],recent:[2,3,11,12,15,210,219,222,223,225,226,227,250,267],reciproc:[6,12,130,176,177,299,377,400,402,403,409,412,418,431,435,453,461,511],recog:12,recoginz:3,recogn:[3,12,77,180,226,227,271,318,387,416,443,458,495,497,504,505,518],recomend:6,recommed:318,recommend:[7,12,15,206,207,238,307,345,377,418,426,440,441,446,459,460,463,465,466,506,516,519],recompil:[1,3,9,12,208,321],recomput:[112,140,182,236,323,415,509],reconstruct:[3,230,466],record:[208,230,323],recov:[229,238,271],recreat:359,rectangl:[41,225,380],rectangular:[7,41,64,180,225,246,380,497,499,501],rectilinear:[130,177,204],rector:53,recurs:[41,225,399,484],recust:41,recv:494,red:[2,206,207,228,300],redefin:[3,499,505,524],redirect:12,redo:12,reduc:[1,2,3,6,12,16,17,18,26,41,65,75,96,120,121,123,124,125,126],reduct:[17,18,128,130,177,269,307,377],redund:419,ree:471,reed:[269,307],rees:[7,9,13],ref:[344,345,385],refactor:6,refer:[2,3,6,7,8,9,11,12,14,15,28,65,71,75,85,91,94,95,112,113,114,124,126,128,131,156,157,158,171,178,202,203,204,205,210,216,218,219,220,222,223,228,229,231,232,238,245,269,271,272,276,298,300,302,303,305,306,307,317,321,323,342,349,354,360,361,372,377,378,385,389,394,401,415,422,429,443,445,446,460,473,474,480,482,492,493,495,499,502,505,506,507,510,511,515],referenc:[3,6,12,65,71,75,125,131,203,204,210,220,246,306,349,378,409,425,452,460,495,515,524],reflect:[2,3,6,75,130,152,177,198,206,210,226,227,232,260,269,297,299,317,352,354],refman:9,reformat:7,refresh:216,reg:500,regard:[6,61,268,321,322,327,455,459],regardless:[14,75,178,181,202,222,231,254,271,273,274,275,277,278,279,304,317,328,335,393,494,500,507],regim:[6,343,350,410,506],region:[0,2,3,6,7],region_spher:8,region_styl:356,regist:[8,127,154,330],regoin:6,regress:524,regspher:178,regstrip:358,regul:6,regular:[1,3,41,64,96,176,180,203,206,217,225,246,306,347,378,410,429,494,497,499,501],reigon:524,reinder:15,reinhardt:[344,345],reject:[178,228,458,512],rel:[1,6,26,35,41,61,75,100,113,134,142,152,156,160,161,163,178,187,207,210,217,225,231,232,235,238,246,252,255,267,268,294,298,303,312,314,315,318,323,331,335,337,342,343,347,354,358,377,378,386,418,422,423,440,441,443,460,488,498,506,511,515,518,525],relat:[1,6,8,9,10,12],relationship:[6,241,308,360,377,466,488,518,524],relax:[2,3,4,6,7,210],releas:[0,5,7,8,13,226],relect:[3,448],reles:42,relev:[2,6,12,41,82,85,122,140,178,182,207,211,212,215,216,217,218,219,220,221,222,223,225,226,227,231,232,236,238,239,243,245,246,247,250,251,257,258,259,261,262,263,264,265,267,268,270,280,281,282,283,284,285,286,287,288,289,290,293,297,301,302,303,305,306,311,313,314,315,319,321,328,333,335,336,337,342,343,346,347,348,349,350,351,352,353,354,355,357,358,377,382,386,396,397,401,407,409,410,412,413,415,418,421,422,423,424,425,430,432,433,434,436,437,438,440,441,448,449,450,451,455,460,468,475,478,479,487,488,489,494,510,525],reli:[3,12,309,418,459,489,497,507],reloc:12,reltol:318,remain:[7,12,32,36,41,50,55,61,75,95,114,158,159,160,161,165,166,167,168,170,181,191,197,198,199,203,211,212,217,219,220,229,231,254,255,262,271,272,277,278,279,291,292,294,296,301,302,326,335,338,339,340,346,347,358,360,368,371,387,399,418,426,439,446,448,476,492,497,498,502,507,509,511,515,516,518,519,524,525],remaina:399,remaind:[9,178,203,232,303,335,348,482,497],remap:[3,6,12,61,63,75,161,178,202,231,252,268,294,377,497,498,499],remedi:[6,518],rememb:[2,519],remot:519,remov:[2,3,6,8,13,54,75,76,81,100,117,125,127,152,156,157,158,159,160,161,165,166,167,168,170,171,178,181,182,204,210,219,226,243,254,255,260,263,267,269,271,277,278,279,291,292,294,296,302,308,317,318,319,321,335,338,339,340,342,358,377,388,412,441,446,497,500,508,509,519,524,525],remove_bia:8,remove_bias_al:8,remove_molecul:216,remove_sourc:216,remove_speci:216,ren:177,renam:[12,359,508,519],render:[12,13,203,206,207],rendon:[271,272],reneighbor:[3,8,12,39,59,75,225,246,335,348,358,413,514,515],renssela:302,renumb:75,reorder:[3,12,39,494],rep:512,repeat:[2,6,206,207,228,229,246,318,327,380,399,480,482,484,492,511],repeatedli:2,repel:252,repes:203,replac:[2,3,6,11,12,41,65,97,98,128,155,156,157,158,159,160,161,164,165,166,167,168,170,171,203,204,206,207,208,219,220,222,223,225,228,232,254,276,305,306,312,314,353,393,395,409,423,433,450,451,478,498,499,504,505,515,524,525,527,529],replic:[2,3,7,380,494,497],replica:[0,2,3,4],replica_fil:12,report:[0,1],repositori:[7,9,12,427,457,458,459,519],reprens:347,repres:[1,3,6,8,9,12,14,40,41,42,61,70,74,75,98,124,127,129,190,199,203,204,206,219,220,221,222,223,229,235,242,247,249,254,257,271,300,302,304,312,317,318,319,323,331,332,347,349,356,378,388,394,399,422,429,439,440,441,443,444,445,453,456,458,459,483,484,492,494,497,507,509,512,518,524,527],represent:[3,6,8,9,59,61,146,180,203,247,248,300,347,399,418,422,446,460,497,500,518],reprocess:502,reproduc:[3,15,271,353,409,416,423],repul:443,repuls:[6,7,35,40,45,46,119,252,308,352,353,356,395,399,407,409,413,418,420,423,425,439,443,447,466,475,482,485,488,489,507],reqir:[308,310],request:[3,6,8,12,41,113,181,199,203,251,257,315,322,335,337,375,377,448,458,459,492,502,507,511,516,519,524,525,527],requir:[1,2,3,4,6,7,8,9,11],rerun:[2,3,7,76,81,100,117,127,152,203,206,448,498],rescal:[2,3,6,155,159,160,161,165,166,167,168,170,210,217,220,222,223,238,246,248,250,254,255,267,271,276,294,302,304,312,317,335,338,339],research:[5,7,88,89,240,257,261,322,446,492,511],resembl:[312,519],resepct:6,reserv:[12,251,518],reservoir:[99,238,246,250,254,347],reset:[2,3,6,8,11,12,63,69,75,78,79,86,87,97,98,103,113,114,116,173,182,210,211,212,229,231],reset_atomic_reference_posit:216,reset_dt:8,reset_target:8,reset_tim:216,reset_timestep:[2,6,99,498,502],resid:13,residu:251,residue1:389,resist:[6,251],resolut:[221,466,478,479],resolv:[229,300,335,441,519],resort:3,resourc:[7,394,416],respa:[3,15,213,214,224,233,236,237,249,251,252,266,271,298,309,316,320,323,331,332,333,334,351,352,356,391,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,410,412,413,415,416,417,418,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,453,455,457,458,459,460,461,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,484,485,487,488,489,490,505,506,516,517,524],respecifi:446,respect:[1,6,9,13,14,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,42,43,45,46,47,48,49,51,53,54,56,61,74,75,95,97,106,107,123,130,134,154,155,160,163,165,172,176,177,184,185,187,188,189,190,192,193,195,196,199,204,206,207,213,222,224,227,228,229,231,238,239,245,249,252,254,255,257,271,273,274,275,276,277,278,279,280,281,287,289,291,292,294,296,308,309,310,317,319,321,323,331,334,347,352,355,361,363,364,366,367,370,372,375,377,378,383,386,387,392,393,394,395,397,399,400,401,402,403,404,405,407,408,409,412,413,416,417,419,420,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,443,444,446,448,449,452,453,455,459,460,461,465,466,467,468,477,478,480,481,482,483,485,487,488,489,494,498,507,510,516,518,524,526,527,529],respon:9,respond:[6,7,161,231,418,455],respons:[6,7,269,343,350],resquar:[2,3,6,7,9,422],rest:[6,8,12,38,58,200,306,310,316,373,399,441,443,490,514,515,518],restart1:300,restart2:300,restart2data:[0,12],restart:[0,1,2,3],restartfil:[12,13],restor:[3,8,62,63,113,178,211,212,266,306,323,331,332,337,359,514,515],restore_bia:8,restore_bias_al:8,restrain:[2,3,28,210,217,246,269],restraint:[9,230,269,316,334,430],restratin:316,restrict:[1,2,3,6,8,9,12],result:[1,2,3,6,7,9,10,11,12,13,14,15,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,43,45,46,47,48,49,51,53,54,56,65,66,69,70,75,79,86,95,98,99,103,113,114,116,121,123,125,126,127,128,130,131,153,155,158,161,165,172,173,175,177,178,181,184,185,187,188,189,190,192,193,195,196,199,202,203,204,206,207,210,213,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,235,238,239,241,245,246,247,249,254,255,257,261,269,271,273,274,275,276,277,278,279,280,281,289,291,292,294,295,296,299,300,308,309,310,314,315,317,318,320,321,335,343,344,345,347,348,349,352,353,355,357,360,361,363,364,366,367,370,372,377,378,388,391,394,395,397,400,401,402,403,404,405,407,408,409,412,413,416,417,418,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,441,443,444,446,448,449,450,451,452,453,455,459,460,461,468,477,478,479,480,481,482,483,485,487,488,489,492,494,497,499,500,502,506,507,508,509,511,523,524,525],resum:524,retain:[2,226,227,395,399,446,494],retart:[32,50,191,368],retir:[3,458],retreiv:8,retriev:[6,8,244,444,445,524],reus:[3,509],rev:[6,13,66,74,100,117,121,152,153,166,217,248,254,256,269,271,272,276,294,299,309,312,317,323,335,339,342,344,345,350,385,399,407,408,409,412,416,417,418,422,423,428,433,440,441,442,443,445,450,451,456,460,467,477,480,481,482,485,492],revers:[2,6,8,95,189,228,252,271,289,297,298,308,327,343,344,350,388,439,506,518],review:[152,308,323,342,446,457,467,492,511,518,519],rewind:376,rewrap:203,rewrit:[5,12],rewritten:18,rezwanur:455,rfac0:[152,467],rfactor:335,rfile:317,rg0:333,rgb:207,rh3:177,rh4:177,rhaphson:3,rheolog:6,rhi:[450,451,478,479],rho0:[443,463,465,473,474],rho0_meam:443,rho:[2,3,40],rho_0:[473,474],rho_alpha_beta:416,rho_bkgd:443,rho_colloid:352,rho_e:347,rho_fin:346,rho_i:[444,445],rho_initi:346,rho_ref_meam:443,rho_wal:352,rhodo:[9,10],rhodopsin:[1,10,15],rhohi:303,rholo:303,rhosum:[2,110,469,470,471],rhot:238,rhs:318,ribier:385,richard:9,richardson:317,richi:[9,18],rick:[308,309,408,466],rick_and_stuart:309,ridg:[9,18],right:[3,6,11,12,41,74,154,178,196,198,202,204,225,228,252,257,268,297,298,318,360,380,409,497,500,507,519,524],rightmost:[41,225],rigid:[2,3,4],rigidid:129,rigidifi:317,rii:[97,98],rij:[100,117,226,227,298,413,414,450,451,475],rin:[425,436,437],ring:[2,3,6,127,184,300,302],rino:[77,485],rinv:377,rirj:[353,423],risi:[152,467],risk:[8,316,506],rix:[97,98],rjk:[226,227],rjone:[7,9,13],rk4:318,rkf45:318,rlo:[450,451,478,479],rmask:[3,524],rmass:[3,306],rmax:[75,179,226],rmdir:508,rmin0:[152,467],rmin:[75,179,227,433],rms:[318,377,378],rmsd:346,rnemd:6,robert:9,robin:207,robust:[384,385,386,459],rock:443,rockett:456,rod:317,rodata:12,rodnei:312,roi:7,role:[6,342],roll:12,ronchetti:117,room:[59,61],root:[11,95,97,98,205,342,346,416,504],rosati:39,rose:443,ross:443,rosski:300,rosybrown:207,rot:[6,99,300,316,342,525],rotat:[2,3,4,6,7,9,40,65,90,91,92,93,104,142,152,156,157,158],rotate:327,rotation:117,rotaton:500,rough:[6,178,206,357],roughli:[7,10,12,41,161,206,221,246,254,255,263,270,271,285,304,317,335,338,339,342,378,388,393,462,464,499,506],round:[1,3,12,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,42,43,45,46,47,48,49,51,53,54,56,75,123,155,165,184,185,187,188,189,190,192,193,195,196,199,207,213,224,231,239,245,249,254,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,309,310,317,320,321,355,361,363,364,366,367,370,372,378,391,394,395,397,400,401,402,403,404,405,407,408,409,412,413,416,417,419,421,422,423,424,425,429,431,432,433,434,435,436,437,438,439,440,444,449,450,451,452,453,455,459,460,461,468,477,478,480,481,482,483,485,487,488,489,499,500,506,523,524],rous:247,rout:[95,425,439],routin:[5,6,8,11,14,15,37,39,56,96,182,257,446,457,478,479,510],roux:[6,235,255,483,518],row:[6,68,69,71,73,79,84,86,98,102,103,114,116,119,125,126,127,129,131,158,166,173,175,176,177,219,220,222,223,260,317,347,349,357,418],royalblu:207,rozero:443,rperp:[268,327],rpi:302,rpm:12,rrespa:[1,3,5,7,8,15,211,212,268,271,389,394,395,396,397,398,400,401,402,403,404,405,407,408,409,410,412,413,415,416,417,418,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,447,449,450,451,453,455,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,484,485,487,488,489,490,506],rspace:3,rsq:[450,451,478,479,486],rsurfac:347,ru3:177,ru4:177,rub:19,rubia:[444,445],rudd:[448,478,479],rudra:[7,9],rudranarayan:[7,302],ruiz:217,rule:0,run1:[6,392,524],run2:[6,374,376,392,524],run3:[6,392,524],run4:[6,392,524],run5:[6,392,524],run6:[6,392,524],run7:[6,392,497,498,502,524],run8:[6,392,524],run:[0,1,2,3,4],run_styl:[2,3,7,8,9,12,15,17,271,272,355,386,389,391,393,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,410,412,413,415,416,417,418,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,453,455,457,458,459,460,461,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,484,485,487,488,489,490,491,492,494,505],rung:318,runloop:376,runtim:[12,16,206,393],russia:9,rutherford:347,rutuparna:[480,482],rxn:[318,479],ryan:9,ryckaert:[321,370],rycroft:176,rydberg:446,s00:455,s0st:6,s2050:1,s2629:416,s319:216,s_fact:324,s_i:[6,418],s_ij:6,sack:7,saddl:[270,388],saddlebrown:207,sadigh:[217,416,444,445],saed:319,saed_vtk:130,safe:[12,206,235,255,393,519],safe_zone:3,safest:[3,335],safeti:324,safezon:459,safran:488,sagui:[378,412],sai:[1,3,12,13,207,458,459,495,519],said:386,sakai:481,sall:[9,466],salmon:207,salt:[410,421,443,497],salter:466,same:[1,2,3,4,6,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,37,39,40,41,43,44,45,46,47,48,49,50,51,53,54,56,59,61,64,65,68,73,75,76,81,84,87,90,92,93,95,96,97,98,99,100,102,104,107,113,114,115,117,119,121,123,124,126,127,128,152,153,154,155,156,157,158,159,160,161,164,165,166,167,168,170,171,172,174,176,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,199,201,202,203,204,205,206,207,210,211,212,213,216,217,218,219,220,222,223,224,225,226,227,228,229,231,232,236,237,238,239,245,246,247,248,249,250,251,252,253,254,255,256,257,260,268,271,273,274,275,276,277,278,279,280,281,289,291,292,294,295,296,298,299,300,302,303,304,306,307,308,309,310,312,313,314,315,316,317,320,321,323,328,331,334,335,336,337,338,339,340,341,342,343,344,345,346,347,349,350,351,353,354,355,356,358,359,360,361,362,363,364,366,367,370,372,377,378,380,381,382,383,387,388,389,390,391,392,393,394,395,397,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,415,416,417,418,419,421,422,423,424,425,426,427,430,431,432,433,434,435,436,437,438,439,440,441,443,444,447,448,449,452,453,455,456,459,460,461,466,468,475,476,477,478,480,481,482,483,485,487,488,489,492,494,495,497,498,499,500,502,505,506,507,508,509,510,511,515,518,519,523,524,525,528],sampl:[1,2,4,6,9,11,12,99,113,156,157,171,176,202,206,210,219,220,230,232,244,246,248,250,271,272,293,300,303,312,314,319,331,333,335,339,342,345,357,389,399,415,497,511],sample_frequ:216,san:455,sandia:[0,5,7,9,13,16,74,122,419,443,455],sandybrown:207,saniti:[316,389],satellit:[6,160],satifsi:524,satisfi:[3,12,77,130,152,177,229,238,257,263,276,287,293,321,355,386,389,423,511],satur:410,save:[6,8,12,18,40,61,199,204,206,221,228,247,248,254,255,256,303,312,318,347,359,378,389,391,399,499,502,509],sb3:177,sb5:177,sc3:177,scalabl:[0,1,7,9],scalar:3,scalars:319,scale:[0,1,3,5,6,9,10,13,15,17,40,61,65,75,76,99,112,124,127,128,152,164,172,184,199,202,203,204,206,207,210,211,212,216,217,220,229,231,246,250,251,252,254,256,257,269,271,273,274,275,276,277,278,279,300,304,307,308,317,325,326,335,337,339,342,344,345,347,351,358,377,378,380,387,390,394,395,396,410,415,418,420,423,426,440,441,443,446,455,462,464,483,498,500,502,506,509,511,514,515,524,525],scale_factor:[462,464],scalegamma:257,scalexi:[3,229,271,276],scalexz:[229,271,276],scaleyz:[229,271,276],scan:[207,227,376,498],scatter:[11,130,177],scatter_atom:11,scatter_coord:11,scenario:[6,40,63,228,306,315,335,348,356,389,501,502,506,514],scf:518,schaik:439,schedul:492,schell:481,schemat:228,scheme:[6,9,17,247,248,271,289,300,312,321,347,377,459,483],schlitter1:346,schlitter2:346,schlitter:346,schmid:413,schneider:[254,256],schoen:377,schroding:418,schroeder:[117,518],schulten:[255,323,378,518],schunk:335,schwen:9,sci:[77,355,408,445,456,466],scienc:[8,216,228,251,298,323,344,416,444,466,481],scientif:[9,152,416,524],scm:11,scratch:[12,41,225],screen:[0,1,3,6,8,11],screenshot:11,scripe:11,script:[0,1],scripta:70,scsl:12,sdk:[2,3,9,14],sea:11,seagreen:207,seamlessli:306,search:[0,2,3,8,12,100,117,179,181,207,208,335,353,384,385,386,388,390,423,492,498,499,511,524],seashel:207,sec:[12,517,523],secant:242,second:[1,3,6,9,11,12,15,54,59,61,63,74,75,96,99,113,115,117,123,145,146,150,153,154,166,172,176,177,179,180,181,197,202,203,207,210,211,219,220,222,223,228,238,242,246,247,252,268,270,300,306,314,316,317,321,323,331,333,335,344,345,347,358,377,380,385,386,388,389,398,399,400,402,403,408,409,416,418,419,420,423,424,426,429,430,433,443,448,452,466,477,481,482,483,485,489,492,493,494,495,497,499,504,506,510,511,515,516,518,523,524,525,527,529],second_mo:466,secondari:[3,190],sectinn:528,section:[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,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,60,61,65,66,67,68,69,70,71,72,73,75,78,79,82,83,84,85,86,87,88,89,91,94,95,96,97,98,99,101,102,103,106,107,108,109,110,111,113,114,115,116,118,119,122,123,124,125,126,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,176,177,179,184,185,186,187,188,189,190,191,192,193,195,196,197,198,199,200,202,203,204,205,206,208,210,213,214,215,216,217,219,220,221,222,223,224,225,226,227,228,230,231,232,234,235,237,238,239,240,241,242,243,245,246,247,248,249,251,253,254,255,256,257,258,259,260,261,263,264,265,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,286,287,289,290,291,292,293,294,295,296,298,299,300,302,303,304,306,307,308,309,310,311,312,313,314,317,318,320,321,322,323,324,325,326,327,328,330,335,338,339,340,341,342,343,344,345,346,347,348,350,353,354,355,358,359,361,362,363,364,365,366,367,368,370,371,372,373,378,379,380,383,387,388,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,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,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,478,479,480,481,482,483,484,485,486,487,488,489,490,492,493,494,495,497,498,500,502,505,506,507,508,510,511,512,515,516,518,524,525,526],section_acceler:[9,12,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,123,155,165,184,185,187,188,189,190,192,193,195,196,199,213,224,231,239,245,249,254,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,309,310,317,320,321,355,361,363,364,366,367,370,372,378,394,395,397,400,402,403,404,405,407,408,409,412,413,416,417,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,444,449,452,453,455,459,460,461,468,477,478,480,481,482,483,485,487,488,489,500,506],section_accerl:416,section_command:[0,1,9,360],section_error:[7,12],section_exampl:[2,6],section_histori:[7,12],section_howto15:89,section_howto:[6,8,9,11,12,40,42,59,61,66,69,70,71,74,75,76,77,79,80,81,82,85,86,87,90,91,92,93,94,95,97,98,100,103,104,105,106,107,108,109,110,111,114,116,117,120,121,122,125,127,128,132,147,148,149,150,152,153,158,160,172,173,175,176,180,201,219,270,283,286,290,350,398,411,492,497,500,511],section_modifi:[6,7,42,203,204,206,515],section_packag:[12,459],section_perf:7,section_python:[6,12],section_start:[3,6,9,11,381,388,491,492,506,512,515],section_tool:[6,7],see:[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,34,35,36,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,59,60,61,63,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,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,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,263,264,265,266,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,289,290,291,292,293,294,295,296,298,299,300,302,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,330,331,334,335,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,374,377,378,380,381,382,383,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,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,479,480,481,482,483,484,485,487,488,489,490,491,492,493,494,495,497,498,499,500,502,503,504,505,506,507,509,510,511,512,513,514,515,516,517,518,519,524,525,527,528,529],seed1:512,seed2:512,seed:[3,178,181,202,206,215,217,226,227,228,230,232,243,246,247,248,254,255,256,257,300,303,307,312,317,335,339,342,347,354,401,413,414,415,492,507,512,518,524,525],seed_com:255,seed_drud:255,seek:[41,225],seem:[6,229,348,385,443,506],seen:[12,15,257,356],segement:3,segment:[3,6,7,12,40,42,90,124,206,210,286,303,317,335,413,429,459,475,476,497,505,507],select:[3,6,9,12,14,61,63,75,128,130,167,172,177,178,199,206,208,215,217,231,232,243,246,251,252,266,268,323,334,342,343,348,350,352,354,355,357,375,377,384,388,390,393,425,430,443,466,494,498,500,506,507,511,516,524],self:[2,3,4,6,8,9,12,128,203,204,205,210,213,218,219,222,233,235,237,255,307,308,310,312,313,316,317,318,323,331,332,333],sellerio:13,semi:[3,208,216,217,297,299,498],semiax:156,semimet:418,semin:15,send:[0,3,5,7,8,11,12,207,251,494],sender:[3,494],sens:[1,3,6,7,17,39,41,42,61,75,113,198,203,219,222,223,225,228,231,247,248,253,254,255,256,303,307,312,319,335,342,343,347,350,358,388,409,431,435,480,481,482,492,497,502,506,509,514],sensabl:251,sensibl:114,sensit:[2,6,77,229,312,525],sent:[207,251,375],sep:[6,11,524],separ:[2,3,6,7,9,12,13,15,40,41,80,127,134,152,178,181,197,204,206,207,208,216,220,225,226,227,228,229,232,235,246,254,255,271,285,300,303,304,306,308,312,317,321,335,338,339,340,343,350,358,378,393,400,402,409,410,412,414,431,440,441,443,450,451,452,457,467,476,477,478,479,482,488,495,497,498,499,506,509,514,516,518,525,526,527,528],seper:410,sequec:524,sequenc:[2,3,12,41,61,203,204,206,207,208,225,248,270,358,380,388,426,456,512,524],sequenti:[61,62,207,456,498],sequestr:7,seri:[3,4,6,9,13,15,17,152,203,204,206,207,220,223,247,248,303,392,395,422,443,446,448,450,451,460,468,478,479,495,504,505,512,514,515,524],serial:[1,5,7],serial_icc:12,serious:8,serv:[6,140,180,335,475],server:[1,253],set:[0,1,2,3],set_callback:244,set_energi:244,set_vari:[6,11,495],setarea:257,sete:[219,228],setenv:[11,12,406],setfl:[13,394,416],setforc:[2,3,6,210,213,224,245,288,317],setgamma:257,setmask:8,settl:229,setup:[3,6,7,8,11,12,13,15,36,40,55,61,75,95,99,166,179,180,181,182,198,207,216,228,231,335,348,371,389,390,393,476,494,497,505,527,529],setup_pre_exchang:8,setup_pre_forc:8,setup_pre_force_respa:8,setvel:2,seven:445,seventh:[145,150],sever:[1,4,5,6,7,8,9,10,11,12,13,14,15,17,39,40,65,75,95,172,179,182,198,203,204,205,208,210,216,226,227,229,248,254,257,261,271,302,304,306,317,323,335,342,351,375,380,386,396,399,403,415,416,426,435,439,443,448,456,458,459,465,466,492,495,499,503,511,515,518,524,525],sexton:446,sfactor:[3,206,207,387],sfftw:12,sgi:12,sgmc:217,sgrid:335,sgroup:176,shade:206,shake:[2,3,5,6,7,8,9,28,37,38,56,58,68,73,123,126,153,155,156,157,158,159,161,164,165,166,167,168,170,171,182,210,219,232,238,246,248,285,303,317],shan:[16,308,309,408],shanghai:[9,13],shape:[2,3,6,8,40,41,60,61,64,75,90,124],shape_upd:8,shapei:[124,497],shapex:[124,497],shapez:[124,497],shapshot:502,shardlow:[2,9,240,241,318],share:[0,1,3,6,7,9],sharon:317,sharp:[356,443,482],shawn:9,shear:[3,4,5,6,7,9,61,63,161,202,229,231,257,271,294,335,350,353,423,440,441,455,463,465],sheet:501,shell:[0,2,3,4],shen:9,shenderova:395,sheppard:385,shflags:12,shield:[2,3,7,210],shift:[1,2,3,6],shiftse:335,shiga:[6,271,272],shini:[206,528],shinoda:[6,9,271,272,461],shiny:206,ship:208,shlib:[11,12],shlibflags:12,shm:15,shock:4,shockvel:[269,307],shortcut:[229,271,304,317],shorter:[3,131,246,298,390,448,505],shortest:[206,390,396,506],shorthand:[207,483],shoul:484,should:[1,2,3,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,34,37,39,40,41,42,43,44,45,46,47,48,49,51,53,54,56,61,63,74,75,77,87,91,95,99,106,107,108,112,113,114,121,123,129,153,155,156,157,160,161,164,165,166,168,171,174,178,180,182,184,185,186,187,188,189,190,192,193,195,196,199,201,202,203,204,206,207,211,212,213,214,217,221,224,225,226,227,228,229,231,232,234,235,237,239,241,243,244,245,246,247,248,249,250,252,254,255,256,257,259,260,261,262,268,271,273,274,275,276,277,278,279,280,281,285,289,291,292,294,296,298,299,300,301,302,303,304,305,307,308,309,310,311,312,313,314,315,316,317,318,320,321,328,331,335,336,338,339,340,341,342,343,346,347,348,350,351,352,353,354,355,356,357,358,360,361,362,363,364,366,367,370,372,377,378,380,381,382,384,386,387,388,389,390,391,393,394,395,397,398,400,401,402,403,404,405,406,407,408,409,411,412,413,415,416,417,418,419,421,422,423,424,425,426,427,428,429,431,432,433,434,435,436,437,438,439,440,441,443,444,446,448,449,450,451,452,453,454,455,457,458,459,460,461,462,464,466,468,475,477,478,479,480,481,482,483,485,487,488,489,492,493,494,495,497,498,499,500,501,502,504,505,506,507,509,513,514,515,516,518,519,524,525,527],shouldn:[3,8],show:[6,10,11,12,127,388,425,443,446,478,479],shown:[1,12,15,16,41,106,107,130,152,164,177,198,225,228,238,254,271,294,298,300,303,312,342,377,418,419,422,423,439,446,460,466,497],shrank:75,shrink:[3,6,41,59,61,75,180,202,203,206,211,212,215,225,231,232,252,257,298,335,354,358,377,378,386,409,431,435,448,497,498],shrink_spher:287,shrunk:[75,318],shut:[6,11,389,496],si4:177,siam:355,sic:[4,409,426,443,452,477,480,482,485],sic_tersoff:456,sicc:[417,477,480,482,485],sicg:[480,482],sicsi:[417,477,480,482,485],side1:500,side2:500,side3:500,side4:500,side:[3,8,41,59,63,75,168,178,217,218,225,228,232,246,252,257,268,298,303,311,318,331,352,356,357,358,388,409,422,423,460,484,495,497,500,507],sidewai:4,sienna:207,siepmann:350,sige:[480,482],sigma0:399,sigma14:439,sigma1:399,sigma2:399,sigma:[3,6,10,45,46,50,54,95,129,184,203,204,207,211,212,232,246,257,298,322,335,351,352,356,380,390,393,395,398,399,400,404,405,407,412,413,414,415,417,418,422,424,425,429,430,431,432,433,434,435,436,437,438,439,442,447,448,460,461,471,477,483,484,506,523,524,525],sigma_14:404,sigma_:410,sigma_c:407,sigma_cc:[395,407],sigma_h:421,sigma_i:[419,448],sigma_ii:484,sigma_ij:[448,484],sigma_j:448,sigma_max:415,sigma_ss:407,sign:[3,6,12,189,198,297,331,355,360,446,505,514,519,524],signal:496,signicantli:16,signifi:[3,69,79,86,98,103,114,116,125,158,173,175,420,451,479],signific:[7,12,17,94,247,269,272,312,318,335,348,418,422,443,446,448,527],significantli:[1,6,39,153,176,257,271,316,418,477],sij:220,sikandar:16,silbert:423,silent:[207,495,508],silicon:[417,443,477,497],sill:455,silver:207,sim:[9,461],similar:[5,6,7,8,9,10,11,12,15,16,17,40,41,42,46,61,71,76,95,123,126,127,129,153,154,178,179,203,204,207,210,211,212,219,221,225,244,245,247,254,260,261,272,306,307,312,316,317,339,342,352,353,355,357,378,384,385,387,395,398,399,413,416,418,423,439,440,448,449,455,456,465,478,483,494,499,504,506,511,513,515,518,524,525,527,529],similarli:[3,6,7,8,38,58,61,123,174,180,182,200,202,203,206,207,218,219,222,223,227,231,237,252,271,273,274,275,277,278,279,302,304,317,319,321,335,342,343,350,356,361,373,378,380,388,391,395,403,423,435,477,490,494,497,500,501,506,507,511,524,528],simluat:[6,39,207,335,440,498,499],simlul:[317,347],simmul:350,simpl:[1,2,4,6,7,8,10,11,12,13,15],simpler:[8,11,42,207,317],simplest:[3,8,9,40,69,79,86,98,103,114,116,125,127,158,173,175,308,518],simpli:[1,3,6,8,9,11,12,16,40,69,75,79,86,96,98,103,105,114,116,124,125,129,131,158,173,175,181,182,207,210,211,212,219,222,223,227,229,231,235,244,253,255,260,271,300,304,315,317,319,343,349,350,377,378,380,387,388,393,403,412,426,435,443,448,494,495,502,505,512,515,523,524],simplif:418,simplifi:[9,217,316,446],simplist:11,simualt:378,simul:[0,1,2,3,4],simulatan:[15,246,393],simulation_nam:459,simulationub:466,simulatoin:[12,498],simult:393,simultan:[6,7,14,15,231,393],sin:[197,231,268,352,355,357,382,456,497,500,507,524],sinc:[0,1,2,3,6,8,9,10,11,12,13,14,20,21,32,39,41,44,54,61,63,66,70,74,75,77,97,98,121,127,128,129,130,154,156,158,168,176,180,181,183,184,186,191,203,204,206,207,210,211,212,213,214,217,218,219,220,221,222,223,224,225,228,229,230,231,232,236,237,246,248,250,253,254,256,257,268,271,273,274,275,276,277,278,279,282,285,294,298,300,303,305,306,312,315,317,318,323,334,335,343,347,348,349,350,352,353,356,357,358,359,361,362,376,378,386,387,388,389,392,393,394,395,399,402,403,404,405,407,408,412,413,415,416,417,422,423,424,426,427,428,429,430,431,433,434,435,436,437,438,439,440,441,442,443,444,445,446,448,450,451,453,456,457,458,459,460,461,466,467,468,477,478,479,480,481,482,485,489,492,494,495,497,498,500,502,505,506,507,508,509,511,515,518,519,523,524,525,528],sinclair:[7,298,416,476],sine:456,singapor:152,singh:394,singl:[1,2,3,6,7,8,9,10,11,12,14,15,16,17,40,41,42,59,61,63,65,68,69,71,73,79,81,84,86,95,96,98,102,103,113,114,116,119,124,125,126,127,128,129,131,154,158,173,175,176,178,197,203,204,206,207,208,210,215,218,219,220,222,223,225,227,228,229,232,235,243,245,250,257,260,268,271,272,276,285,287,293,300,302,303,305,316,317,319,321,324,330,335,337,347,349,352,353,355,357,358,360,377,378,384,387,388,389,390,392,393,394,395,399,404,406,408,415,416,417,418,419,423,424,425,426,427,428,443,444,445,446,452,453,456,457,458,459,460,466,467,468,477,480,481,482,485,492,493,495,497,504,505,506,507,508,509,510,511,512,514,516,524,528,529],singleel:399,singular:[197,439,440,441,449],sinnott:[309,395,408],sinusoid:[178,231,352,353,355,357,382],sio2:485,sio:408,sirk:[153,475],sisic:[417,477,480,482,485],sisisi:[417,477,480,481,482,485],sister:406,sit:[299,497],site:[0,1,2,3,4,5,6,7,8,10,11,12,13,14,16,70,74,95,238,251,257,258,321,378,394,399,409,416,420,421,431,435,439,449,451,453,479,483],situat:[176,229,246,257,271,300,319,385,399],sival:177,six:[6,145,150,152,220,222,452,456],sixth:452,sixthpow:[405,448],size:[0,1,3],size_restart:8,sizei:429,sizej:429,sizescal:3,sizex:279,sjplimp:[0,7,11,12],sjtu:9,skew:[3,6,60,61,180,206,231,271,497,500],skin:[3,12,39,63,77,126,179,181,246,285,317,322,347,389,390,393,429,454,515,523],skip:[12,15,32,129,184,191,302,303,376,387,392,430,497,502,505,514,516,524],skyblu:207,slab:[3,6,75,166,303,331,377,378,389,448],slateblu:207,slategrai:207,slater:[2,3,7,210],sleight:54,slepoi:443,slice:[2,3,6,65,130],slider:11,slight:[3,12,238,347],slightli:[1,6,15,39,40,203,204,205,206,208,271,289,312,317,378,395,409,431,435,458,480,482,485,492,505,527],sligthli:412,sliozberg:475,slip:[3,210,335,351,357],sllod:[2,3,6,15,161,162,210,231],slope:[6,113,114,343,345,350,410,524],slot:[1,154,516],slow:[3,6,7,12,39,247,251,254,255,269,271,287,335,342,377,388,448,466,506,516,518,525],slower:[1,16,39,255,378,393,399],slowest:[347,494],slowli:[12,75,225,351,386,446,468,499],slurm:12,slurm_localid:12,sm3:177,small:[2,3,4,6,7,8,9,12,14,16,17,39,40,41,60,74,85,95,121,129,130,153,158,161,176,177,180,203,204,210,219,225,226,227,228,232,233,235,238,246,247,254,255,263,269,271,289,294,298,303,304,306,307,308,312,314,315],smallbig:3,smaller:[1,3,6,12,15,16,39,56,61,63,75,131,180,203,204,206,207,217,232,236,246,257,299,317,318,335,345,360,377,378,384,393,448,476,484,486,497,504,506,516,524,529],smallest:[3,42,74,75,76,176,269,314,524],smallint:3,smallq:378,smallsmall:[3,12],smart:248,smd:[2,3],smd_lammps_userguid:9,smi:3,smirichinski:9,smit:246,smith:453,smmoth:507,smooth:[2,6,9,40,109,111,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,324,325,326,327,330,356,357,377,399,404,409,424,433,436],smoother:178,smoothli:[54,152,343,350,404,424,437,439,442,482,489],smpd:12,smt:[15,393],smtb:[9,466],smtbq:2,smulat:446,sn2:177,sn4:177,sna:[2,3,9,65],snad:[2,3,9,65],snap:[2,3,4,7],snapcoeff:467,snaphot:502,snapparam:467,snapshot:[0,1,3,4],snav:[2,3,9,65],snb:16,snc4:15,snow:207,soc:425,socket:[12,16,17,253,494],sodani:15,soderlind:446,soft:[2,3,7,9,11,12,13,95,211,212,285,355,386,413,420],softer:[352,356],softwar:[1,6,9,11,14,15,16,17,18,176,251,302,319],sole:[226,227,388,456,463,465],solid:[4,6,7,9,10,39,40,41,61,74,77,99,113,153,176,216,225,229,231,236,260,271,273,274,275,277,278,279,298,299,304,317,342,345,378,380,400,433,446,455,463,465,497],solut:[3,6,13,176,229,236,269,315,318,321,335,356,524],solv:[3,9,12,17,238,257,308,318,321,345,347,378,385,441],solvat:[4,10,178],solvent:[4,7,9,13,63,75,179,181,225,243,247,248,254,271,315,317,331,335,343,350,351,404,407,409,410,421,431,440,441,460,476,497,507],solver:[0,1],some:[1,2,3,4,6,7,8,9,11,12,13,15,16,17,39,40,41,55,63,65,75,115,118,124,128,129,131,156,157,158,159,170,171,172,176,178,181,186,189,198,201,203,204,206,207,210,211,212,215,217,218,219,220,222,223,225,227,228,229,230,243,246,269,271,272,303,305,306,308,310,317,318,323,336,342,347,348,349,351,352,358,375,376,377,378,384,385,386,387,388,389,390,393,396,398,399,406,409,416,418,426,429,446,448,458,459,476,478,479,490,492,494,495,496,497,499,502,503,504,505,506,507,509,511,514,515,516,519,523,524,525,526,529],somehow:3,someindex:359,someon:[7,386],someth:[2,3,7,8,11,12,61,229,271,352,355,357,389,426,495,504,519],sometim:[2,3,6,8,12,17,229,271,343,350,377,390],somewhat:[7,9,12,74,113,158,168,219,271,377,516],somewher:[16,272,418],soon:[3,42,217,228,243,246,251,458],sophist:[7,154],sorensen:511,sort:[3,13,15,39,75,203,204,207,208,251,388,389,415,498,499,528],sound:[140,257,269,324,473,474],soundspe:[473,474],sourc:[0,3,5],source_integr:216,sourceforg:11,south:152,souza:343,space:[2,3,6,8,11,12,15,17,41,57,61,75,130,152,167,172,177,178,199,202,206,211,212,215,222,225,227,231,232,252,257,265,268,271,299,300,315,319,324,335,352,354,355,357,360,377,378,380,387,388,389,400,402,403,409,412,416,418,429,431,435,443,446,450,451,453,456,461,478,479,486,488,494,497,500,509,515,518,524,525],spahn:423,span:[2,12,37,75,211,212,238,252,317,377,394,395,399,408,416,419,427,428,443,444,445,452,456,467,477,480,481,482,485,491,492,500,501,524],spars:[75,199,318],spatial:[3,5,6,7,17,39,41,69,74,75,79,86,98,103,114,116,125,142,158,166,173,175,203,204,213,216,219,220,223,225,237,250,254,320,328,332,347,462,464,507,525],spawn:251,spc:0,spce:238,spcpu:515,speak:[16,335,342],spearot:[130,177,319],specfi:[12,118,252,266,500],speci:[2,9,152,205,242,253,313],special:[2,3,6],special_bond:[2,3,6,12,15,36,45,46,54,55,76,81,100,117,119,126,127,152,179,181,182,184,198,226,227,228,371,387,389,411,425,426,448,483,497,499],species1:[242,451,479],species2:[242,451,479],species:318,speciesn:242,specif:[1,2,3,4,6,7,8,9,12,13,14,15,16,17,21,28,32,40,41,42,50,65,75,119,124,126,127,158,160,163,176,178,186,191,203,204,206,207,208,210,211,212,215,216,219,220,222,223,225,228,230,243,244,246,247,251,257,266,303,305,306,309,317,342,347,348,352,358,362,378,386,388,393,395,398,399,411,416,422,423,426,427,428,443,446,448,458,459,460,476,477,483,484,494,497,498,502,503,504,506,507,513,514,515,523,524,525,527],specifi:[2,3,6,7,8,9,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,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,65,67,68,69,71,72,73,74,75,77,79,80,81,82,83,84,85,86,87,91,93,94,95,96,98,99,100,101,102,103,104,105,106,107,108,109,110,111,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,153,155,158,160,165,166,167,172,173,174,175,176,177,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,198,199,200,202,203,204,205,206,207,208,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,238,239,241,242,245,246,247,248,249,250,252,253,254,255,257,258,259,260,262,263,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,285,289,291,292,294,295,296,297,298,299,301,302,303,304,305,306,307,308,309,310,312,313,314,315,316,317,318,319,320,321,322,323,327,328,331,332,333,334,335,336,337,338,339,340,342,345,346,347,349,351,352,353,354,355,356,357,358,359,360,361,362,363,364,366,367,368,370,371,372,373,376,377,378,380,381,383,386,387,388,389,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,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,455,456,457,458,459,460,461,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,518,519,523,524,525,526,527,528,529],specifii:[248,257],speciti:506,spectral:[9,467],spectrum:[9,152,307,312],sped:[39,269],speed:[1,3,6,9,12,14,15,16,17,18,39,41,140,203,207,225,254,257,269,307,324,335,342,348,354,377,378,388,393,399,409,446,448,473,474,480,492,506,512],speedup:[1,15,17,378,506],spefici:[178,206,425],spell:500,spellmey:[6,184,509],spend:[12,218],spent:[1,12,13,14,492,511,516],sperhic:497,sph:[2,7],sph_lammps_userguid:9,sphere1:257,sphere:[2,3,6,40,42,65,75,80,90],spheric:[0,2,3,4],spheriod:[3,6],spherioid:335,spheroid:[6,271,289,317,335],spike:127,spin:[40,124,204,353,396,418,497],spine:382,spine_two:382,spirit:[7,221],spit:3,spline:[2,3,37,56,199,241,242,386,395,399,425,443],split:[1,3,6,9,11,12,15,17,41,219,225,238,255,271,322,355,377,393,414,484,491,494,506],splittol:[6,377],spparks:6,spread:[1,6,12,360,505],spring:[2,3,5,6,7,10,13,25,26,40,45,46,48,49,53,187,197,210,213,228,233,237,270,300,315,323],springer:323,springgreen:207,sptial:75,sputter:232,sq2:[3,380],sqrt:[2,3,42,61,87,97,117,246,254,256,298,335,351,353,380,382,407,413,416,421,423,443,448,524],squar:[2,3,6,7,12,21,23],squares:[41,225],squeez:[229,252,440,441],squibb:[5,7],sr2:177,src:[0,1,3,4,6,7,8,9,11,12,14,15,16,17,18,176,203,244,321,382,446,519],srd:[2,3,4,7],srmax:75,srmin:75,srolovitz:416,srp:[2,413],srtio:466,srun:12,ssa:322,ssao:[206,528],stabil:[6,9,254,271,399,458,483],stabl:[6,66,140,197,257,276,316,324,399,518],stabli:247,stack:[3,8,74],stage:[3,8,95,210,244,270,311,358,388,492,511,524],stagger:[1,2,3,207,378,504,513,524],stai:[3,16,211,212,269,288,307,393,497],stall:15,stamp:[210,342,498],stamped:12,stan:[9,16],stand:[0,6,7,9,12,13,313,458,459,495],standard:[0,1,3,6,8],stanford:9,starikov:347,start:[0,3,4,6,8,9],start_6:421,start_7:506,startstep:524,stat:[12,40,54,182,298,312,386],statcoul:523,statcoulomb:523,state:[2,3,6,7,9,11,12,13,61,63,65,74,77,85,87,94,95,113,122,142,190,206,210,217,221,228,229,230,232,240,241,242,246,247,248,254,255,256,269,270,271,273,274,275,276,277,278,279,291,292,294,295,296,299,303,307,312,317],statement:[3,495,496,519],stationari:[2,113,257,264],statist:[3,6,12,33,39,41,52,66,194,221,226,227,228,247,248,254,255,256,302,303,307,312,317,318,321,335,346,347,348,369,386,388,395,413,415,423,440,488,492,499,505,507,511,514,515],statu:[3,12,54,62,133,182,230,235,255,408,496,511,516],statvolt:523,std:12,stdin:[3,12,376],steadi:[6,269,276,307],steelblu:207,steep:[478,479],steepest:[7,385],steer:[7,9,230,233,323],stefan:[9,519],stegailov:347,steinhardt:[65,117],steinhaus:518,stencil:[3,257,377],step:[1,2,3,6,8,9,11,12,13,14,15,16,17,18,39,75,99,106,107,121,127,128,140,153,164,174,176,203,205,206,207,208,210,211,212,216,217,219,220,221,222,223,225,226,227,228,229,231,232,235,236,238,243,244,246,248,251,252,255,263,269,285,287,293,298,299,303,305,306,307,308,309,310,318,319,321,322,323,324,335,337,340,341,342,343,344,345,346,347,348,349,350,357,358,360,376,377,384,386,388,389,395,413,421,425,443,446,458,459,466,492,494,495,499,501,502,504,505,506,511,512,514,515,516,518,524,529],stepani:323,stepwis:95,stesman:342,steve:[0,5,7,13],steven:228,stiff:[6,40,51,226,227,299,300,318,386,455,518],stile:410,still:[1,3,6,9,11,12,13,15,16,37,38,41,58,63,75,100,119,127,176,182,199,200,201,203,204,207,211,212,225,250,254,285,308,312,335,347,360,373,377,378,384,405,416,422,423,426,430,440,454,458,460,468,476,497,499,505,519],stilling:[3,5,7,9,14,96,154,417,445,456,476,477,485,509],stipul:251,stl:[9,75,327,330],stl_surf:330,stochast:[4,7,9,210,248,322,335,342,357,414,415],stockmay:40,stoddard:412,stoichiometr:318,stoichiometri:466,stoke:[257,351],stokesian:9,stoll:[254,256],stone:[9,18,378,412],stop:[3,6,11,12,41,54,131],stopstep:524,stopthresh:[41,225],storag:[3,12,14,349,393,509],store:[2,3,6,7,8,11,12,16,32,36,37,39,40,42,50,55,56,61,63,64,65,68,71,73,75,80,84,87,90,92,94,97,99,100,102,113,114,118,119,123,124,125,126,128,129,131,153,155,156,157,158,159,160,161,165,166,167,168,170,171,174,176,178,181,191,198,199,201,203,205,206,207,208,210,211,212,215,216,218,219,220,221,222,223,226,227,231,232,236,239,244,247,251,257,258,259,260,261,262,263,264,265,267,268,270,271,273,274,275,276,277,278,279,280,281,282,283,284,286,287,288,289,290,291,292,293,296,297,298,299,300,301,302,303,304,305,306,308,309,310,311,313,314,317,318,319,321,323,330,331,332,333,334,335],store_st:336,storm:12,stouch:7,str:524,straatsma:6,straddl:[3,61,63,168,252,317,331,358,497,507],straight:317,straightforward:[4,13,418,518],strain:[2,3,6,61,85,133],strang:[199,206,524],strategi:0,stratford:257,strcmp:360,stream:[3,6,123,153,158,161,162,206,216,231,247,248,254,255,294,303,312,335,525],streamlin:[12,505],streitz:[2,3,4,7,308],streiz:409,strength:[3,9,152,172,183,206,316,352,356,426,459,460,509],stress:[2,3,5,6,7,9,40,42,65,99,121,123,128,143,144],stretch:[3,54,61,128,226,323],strict:467,strictli:[6,41,199,225,269,307,342,497],stride2:524,stride:[207,248,504,513,524],strietz:409,strike:232,string:[2,3,6,11,12,41,178,203,204,205,207,219,220,221,222,223,225,246,305,318,319,360,379,392,443,456,457,458,467,493,495,497,507,508,514,515,524],strip:524,strong:[10,308,395],stronger:6,strongest:[440,441],strongli:[1,6,13,232,317,321,347,446,518],structrur:3,structur:0,structured_points:319,strucur:77,stuart:[308,309,395,408,466,476],stub:12,stubs:12,stuck:229,student:302,studi:[6,115,287,306,433,466],studio:15,stukowski:[217,416],style1:[32,50,191,368,426,497],style2:[32,50,191,368,426,497],style:0,style_nam:[271,272],stylecomput:466,stylist:8,sub1:508,sub:[1,3,4,6,7,8,9,11,12,13,17,32,36,39,40,41,42,50,55,60,63,65,67,71,72,83,95,99,101,118,152,172,180,191,198,205,206,207,211,212,225,229,231,271,272,276,307,312,321,322,347,348,356,358,368,371,380,383,393,395,398,408,415,422,423,425,426,429,448,458,459,460,466,483,484,489,494,497,500,506,514],sub_styl:[67,72,83,101],subbox:[128,206,207],subcutoff:429,subdivis:257,subdomain:257,subequ:11,subgroup:[203,528],subinterv:205,subject:[6,15,41,181,225,483],submit:0,subramaniyan:13,subscript:[11,347,361,419,485,524],subsequ:[3,6,11,12,41,61,113,179,207,221,225,229,246,342,347,348,349,380,392,416,476,495,497,498,504,507,508,516,517,524,529],subset:[6,11,12,15,41,85,152,203,204,207,225,267,271,273,274,275,276,277,278,279,303,304,308,317,388,393,395,399,426,448,491,494,497,499,502,506,524],subspac:9,substanti:[6,477,506],substep:271,substitut:[1,2,3,12,203,253,306,388,392,418,448,495,508,524],substract:409,substrat:[180,229,271,273,274,275,277,278,279,304,317,497],substyl:[439,506],subsystem:347,subtl:[104,106,107,248],subtleti:164,subtract:[3,6,54,65,75,86,99,104,107,112,113,115,123,129,153,155,156,157,158,159,160,161,162,164,165,166,167,168,170,171,203,204,210,219,238,246,247,250,254,255,256,258,262,263,267,294,301,317,358,389,438,497,507,515,524,525],succe:12,succeed:[220,221],succes:221,succesfulli:3,success:[2,6,11,12,14,127,203,207,217,220,229,232,246,285,303,317,335,342,360,386,388,495,496,504,505,512],successfulli:[3,11,203,232,495,508],successulli:11,successv:502,sucessfulli:3,sudden:35,suddenli:356,sudo:[11,12],sufac:42,suffer:[16,17,293,350,356,393],suffici:[2,3,6,7,16,17,41,63,75,205,225,269,271,299,335,342,349,352,360,430,448,497,518],suffix2:12,suffix:[1,2,3,6,9,12,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,123,155,165,184,185,187,188,189,190,192,193,195,196,199,203,204,206,213,224,231,239,245,249,254,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,309,310,317,318,320,321,346,355,361,363,364,366,367,370,372,377,378,388,393,394,395,397,399,400,401,402,403,404,405,407,408,409,412,413,416,417,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,443,444,445,449,452,453,455,456,459,460,461,468,477,478,480,481,482,483,485,487,488,489,495,497,498,500,506],suggest:[0,6,7,12,269,307,495,518],suit:[7,13,212,257,418],suitabl:[4,12,13,16,54,95,203,228,306,339,399,406,423,439,443,458,459,492,511],sukumaran:221,sum:[3,6,8,12,40,74,75,80,85,91,96,97,98,100,104,108,113,115,117,119,120,121,123,126,127,128,135,151,152,153,155,158,159,160,161,164,165,166,167,168,170,172,174,175,176,219,220,222,223,232,244,247,254,255,260,298,299,303,307,312,317,319,323,334,345,347,349,352,356,358,377,378,386,398,409,413,418,419,429,431,434,443,458,459,467,484,495,515,518,523,524,525],summar:[6,12,419,466],summari:1,summat:[6,9,42,74,96,117,377,378,403,409,416,417,431,435,446,466,477,480,481,482,485],summer:[3,13,458,459],sumsq:128,sun:[20,43,185,361,405,448,459],sunderland:16,sup:[307,312,408,466],supercomput:[12,17,495],superpos:[426,476],superposit:7,superspher:382,supinski:446,supplement:[248,458,459],supplementari:[230,422,460],suppli:[9,12,199,246,269,347],support:[1,3,4,6,7,8,9,11,12,13,14,15,16,17,18,40,41,42,63,95,96,112,118,203,204,205,206,207,208,211,212,213,214,219,224,225,228,229,230,233,237,244,248,249,252,254,255,256,257,266,269,271,273,274,275,276,277,278,279,287,291,292,293,294,295,296,298,299,304,307,309,311,316,317,320,323,324,325,326,327,328,330,331,332,333,334,338,339,340,341,345,350,351,352,356,375,376,377,378,382,385,386,387,393,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,410,412,413,415,416,417,418,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,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,487,488,489,490,494,498,499,500,504,506,507,508,510,511,512,517,518,523,524,528,529],suppos:[3,8,419,519,524],suppress:[6,12,176],surc:8,sure:[6,8,11,13,199,211,212,229,303,317,321,357,416,478,479,519],surf:[8,146,179],surfac:[2,3,4,6,8,9,40,42,59,74,130,146,152,176,178,181,206,210,232,243,252,257,260,287,293,298,309,316,327,330,331,335,342,347,352,356,357,377,382,388,399,426,440,441,446,464,466,484,488,494,500],surface_exterior:8,surface_interior:8,surface_mov:347,surfact:[410,421],surpris:418,surround:[37,56,74,178,199,207,229,241,242,271,273,274,275,277,278,279,298,304,317,450,451,478,479,518],suspect:3,suspens:[440,441],sustain:[203,204,229,423],suzuki:[271,317],svg:6,svn:[7,11,12],sw_exampl:457,swamp:317,swap:[2,3,6,7,9,210],swegat:346,swiggl:[3,268,352,355,357,500,524],swiler:[152,467],switch7_section_start:421,switchflag:[152,467],swm4:518,swol:53,swope:6,sxx:207,sy0302:9,symbol:[6,12,130,177,314,399,418,467],symmetr:[6,74,95,103,123,143,144,145,148,149,150,153,211,212,229,271,272,343,350,394,406,412,416,480,482,524],symmetri:[3,5,6,7,8,65,66,74,100,117,180,203,204,269,298,361,378,394,497,518],symplect:[271,289],sync:[3,6,516],synchron:[1,248,388,516],synechococcu:7,syntax:[1,2,3,6,7,8,9,11,12,13,14,17],sysdim:299,sysmt:16,sysstem:399,syst:466,system:[0,1,2,3,4,5],system_:300,systemat:[6,9,221,246,254,446],systemx:3,t10:512,t11:512,t12:512,t13:512,t14:512,t15:512,t3e:12,t_chain:3,t_corr:3,t_correl:492,t_dephas:492,t_e:347,t_e_min:347,t_equil:[344,345],t_event:[3,492,511],t_hi:511,t_infil:347,t_init:[307,347],t_iter:3,t_j:28,t_lb:257,t_lo:511,t_order:3,t_oufil:347,t_out:347,t_outfil:347,t_qm:307,t_switch:[344,345],t_target:401,ta06a:467,ta4:446,ta5:177,ta6:446,tab:[2,497],tabbernor:130,tabinn:448,table:[241,242],tabul:[3,7,13,21,36,37,44,55,56,57,68,75,84,102,199,241,242,318,335,377,394,399,400,402,403,404,405,406,409,416,418,420,431,435,442,450,451,453,456,459,461,476,478,479,480,486,499],tabular:456,tabulate_long_rang:459,tad:[2,3,4,6,9,94,492],tadmor:9,tag:[216,242,318,420,451,479,518],tagint:3,tail:[3,95,96,118,121,172,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,410,412,413,415,416,417,418,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,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,484,485,487,488,489,490,515,524],tailor:[75,348],tait:[9,473,474],taitwat:[2,472],take:[1,2,3,6,11,12,16,19,20,21,22,23,24,25,26,27,28,29,30,31,34,37,39,40,41,42,43,44,45,46,47,48,49,51,53,54,56,61,81,95,97,99,123,124,127,128,153,155,165,172,176,182,184,185,186,187,188,189,190,192,193,195,196,199,203,206,207,211,212,213,218,219,220,222,223,224,225,229,231,238,239,245,249,253,254,255,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,304,306,309,310,317,318,320,321,331,333,334,335,337,338,339,340,348,355,358,361,362,363,364,366,367,370,372,377,378,383,393,394,395,397,399,400,401,402,403,404,405,406,407,408,409,412,413,416,417,419,421,422,423,424,425,431,432,433,434,435,436,437,438,439,440,444,446,449,452,453,455,458,459,460,461,466,468,475,477,478,480,481,482,483,485,487,488,489,491,495,498,500,505,506,507,512,514,515,516,524],taken:[6,61,160,178,202,228,232,246,247,248,254,255,256,257,303,307,310,318,347,366,416,418,422,450,451,477,485,492,506,507],talk:[6,7],talli:[2,3,6,8,9,41,118,124],tally:8,tan:[207,524],tandem:317,tang:446,tangent:[42,270],tangenti:[6,119,335,353,357,423],tanh:347,tantalum:[4,446,467],taper:[3,310,382,442],tar:12,tarbal:[0,8,11,12],target:[3,6,7,8,11,12,16,39,41,207,215,225,229,230,232,238,246,247,248,254,255,256,271,272,273,274,275,276,277,278,279,291,292,294,295,296,300,304,307,312,317,323,333,338,339,340,341,346,347,350,351,354,375,378,401,413,492,503,505,525],target_fil:346,task:[1,6,7,10,12,13,14,15,16,17,54,207,251,300,348,393,495,516],taskset:15,tatb:[4,313],tatom:518,tatoms:518,tau:[3,167,221,254,255,257,271,304,317,338,339,344,345,347,517,523],tau_1:247,tau_k:247,tau_n_k:247,tb3:177,tbead:170,tbp:399,tchain:[271,272,276,287,293,294,295,317],tcl:312,tcom:255,tcsh:[11,12,406],tdamp:[254,271,272,276,293,317,338,339],tdephas:492,tdrude:[163,235,255,518],teal:207,tech:[7,13],technic:[6,7,9,257,310,335,459],techniqu:[6,7,9,95,210,229,269,307,317,351,354,378,448,478,479,518],technolgi:9,technolog:[9,15,18,251],tediou:306,tell:[2,6,11,12,36,55,198,210,299,371,389,458,459,476,495,497,499,518],telsa:16,temeperatur:11,temp:[2,3,6,9,13,42,65,95,99,104,106,107,112,121,123,128,153],temp_drud:518,temp_eff:107,tempcom:[156,157,171],temper:[2,3,6,7,9,388,492,505,511],temperar:300,temperatur:[0,2,3,4,5],temperature_definit:216,tempfix:512,templ:[7,9,17],templat:[3,8,13,16,18,40,178,179,181,232,246,303,317,321,387,497],templeton2010:216,templeton2011:216,templeton:[9,216],tempor:247,temporari:[2,3,504],temporarili:[199,316,510,511],tend:[28,271,298,318],tensil:[7,231],tensor:[3,6,8,65,90,91,97,98,99,103,116,123,129,139,142,143,144,145,148,149,150,152,153,154,155,156,157,158,159,160,161,162,164,165,166,167,168,169,170,171,229,257,260,271,272,276,302,304,317,350,377,378,387,418,440,441,446,463,465,515,524],tenth:[139,211,376],term:[0,1,3,5,6,7,8,9,12,19,20,21,26,37,40,45,46,63,95,96,97,99,121,123,153,154,156,157,166,171,172,185,186,187,197,199,207,211,212,218,220,222,223,231,237,238,247,248,249,254,255,256,257,270,271,272,273,274,275,276,277,278,279,291,292,294,296,300,304,307,316,317,333,338,339,340,347,349,351,353,361,362,372,377,386,389,394,395,399,400,401,402,403,404,405,407,408,409,410,411,412,413,414,416,417,418,419,420,422,423,424,431,435,438,439,440,441,443,444,445,446,448,449,453,460,466,475,477,480,481,482,485,488,506,507,509,515,518],termin:[130,271,386,388,463,465,496,505,516],termostat:339,terrel:385,terri:7,tersoff:[2,3,5,7,8,9,15,96,121,153,154,226,227,409,417,426,456,476],tersoff_1:[480,481,482],tersoff_2:[480,481,482],tersoff_mod:481,tertiari:190,tessel:[9,176],test:[0,3,4,6,7,9,10],test_descriptor_str:3,testf:199,testu:199,tether:[6,266,315,323,331,332,334,345,421],tetot:[9,466],tex:8,texa:455,texas_holdem:316,text:[2,3,4,6,7,8,12,13,37,41,56,199,203,204,206,207,210,216,219,220,221,222,223,225,230,241,242,251,305,346,347,359,378,380,388,416,419,430,443,450,451,467,478,479,493,497,498,514,519,524,526,527],textur:16,tfac_insert:246,tfactor:[3,207],tfinal:524,tfix:316,tflag:206,tfmc:[2,3,7,210],th4:177,thakkar:15,thakker:15,than:[1,2,3,6,8,9,11,12,13,14,15,16,17,26,37,39,40,41,42,56,59,60,61,63,65,71,75,80,94,96,100,115,117,119,123,126,127,129,131,153,176,179,180,181,187,199,202,203,205,207,210,215,217,219,222,223,225,226,227,228,229,231,232,233,236,241,243,246,247,248,249,252,253,254,257,266,269,298,299,303,304,305,307,308,310,312,315,316,317,318,319,322,323,324,330,331,333,335,339,340,342,343,347,350,351,352,353,354,355,356,357,358,360,377,378,384,385,386,387,388,389,390,393,395,398,399,400,402,403,404,416,418,422,423,429,440,441,443,448,450,451,458,459,460,466,468,475,476,477,478,479,482,484,486,488,489,492,493,494,495,497,498,499,500,502,505,506,509,511,512,514,516,524,525,527],thank:[251,480,482],thb:459,thb_cutoff:459,thb_cutoff_sq:[458,459],thei:[0,1,2,3,4,6,7,8,11,12,13,14,16,19,20,22,23,24,25,26,27,28,29,30,31,34,36,37,39,40,41,42,43,45,46,47,48,49,51,53,54,55,56,59,61,63,65,66,69,71,74,75,78,79,86,87,90,92,95,96,97,98,99,103,113,114,116,118,119,123,125,126,127,128,129,131,152,155,156,158,160,161,164,165,171,173,175,176,178,180,181,182,184,185,187,188,189,190,192,193,195,196,198,199,203,204,206,207,210,211,212,213,215,218,219,220,222,223,224,225,226,227,228,229,231,232,237,239,245,246,247,249,250,251,254,255,257,260,268,271,273,274,275,276,277,278,279,280,281,282,283,289,291,292,294,296,302,303,304,305,306,308,309,310,316,317,319,320,321,335,336,339,342,346,347,349,350,353,355,356,358,359,360,361,363,364,365,366,367,370,371,372,375,377,378,380,382,383,385,386,387,388,389,392,393,394,395,397,398,399,400,401,402,403,404,405,406,407,408,409,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,429,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,449,451,452,453,455,456,458,459,460,461,466,467,468,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,493,495,497,498,499,500,501,502,506,507,509,510,515,518,519,524,527,528],them:[1,2,3,6,7,8,9,11,12,13,16,39,40,41,54,61,75,99,113,118,125,128,131,154,180,185,203,206,207,208,218,219,220,222,223,225,228,229,231,243,251,254,255,263,267,271,273,274,275,276,277,278,279,291,292,296,298,304,306,314,315,316,317,321,335,338,339,340,342,346,347,349,353,354,355,357,358,361,378,380,382,387,388,389,393,394,399,406,416,419,422,426,429,448,460,468,483,484,492,495,497,504,509,512,518,519,524,525],themselv:[6,9,11,181,211,212,225,255,377,378,388,390,394,399,409,416,439,443,444,445,467,524],theor:342,theorem:[247,254,322,399,414],theoret:[115,251,307,477],theori:[3,6,9,12,40,152,216,230,248,271,299,377,378,399,446,488,511],thereaft:[75,262,301,317,332,343,350,495],therebi:[348,440,441],therefor:[3,6,12,66,95,163,235,238,246,255,257,321,342,378,411,457,459,477,483,506,518],therein:[6,443],thereof:95,thermal:[0,2,3,4],thermo:[0,1,2,3],thermo_modifi:[2,3,6,59,65,106,107,128,155,159,161,162,164,165,166,167,168,169,170,210,229,232,271,475,513],thermo_p:[3,65,120,495,515],thermo_press:[65,123,229,235,271,273,274,275,276,277,278,279,304,514,515,518],thermo_styl:[2,3,6,8,65,88,99,104,106,107,120,121,123,128,153,155,164,174,178,202,203,204,210,211,212,213,214,219,220,223,224,228,229,231,235,236,237,249,250,252,254,255,266,269,271,273,274,275,276,277,278,279,291,292,294,296,304,307,320,328,338,339,340,349,352,355,357,358,386,395,421,425,448,458,459,500,502,507,513,514],thermo_temp:[65,123,155,228,229,246,271,273,274,275,276,277,278,279,291,292,294,296,299,304,338,339,340,514,515,518],thermoberendsen:6,thermochem:523,thermochemistri:418,thermodyam:[515,523],thermodyanm:[65,228,335,358,506],thermodynam:[0,3],thermophys:448,thermost:[6,160,215,230,235,255,354,518],thermostat:[0,3],thermostatequ:6,thesi:[377,378,440,457],thess:400,theta0:[19,20,23,25,26,27,31,32,34,35,152,187,316,370],theta0max:152,theta10:399,theta1:[185,197,361,399],theta2:[185,197,361,399],theta3:[361,399],theta4:399,theta5:399,theta6:399,theta7:399,theta8:399,theta9:399,theta:[3,6,25,26,36,37,38,65,68,85,100,117,152,177,178,187,200,202,206,249,312,316,347,361,370,425,456,481,497,500,507],theta_0:452,theta_:[370,399],theta_c:425,theta_ijk:399,theta_ijl:361,theta_jik:[444,445],theta_pi:399,theta_sigma:399,thex:308,thi:[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,34,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,181,182,183,184,185,186,187,188,189,190,191,192,193,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,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,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,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,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,479,480,481,482,483,484,485,486,487,488,489,490,491,492,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,518,519,520,521,522,523,524,525,526,527,528,529],thick:[75,130,206,500],thie:121,thijss:342,thin:[127,206],thing:[3,6,11,12,54,71,75,229,271,304,317,335,494,495,499,519,524],think:[3,6,7,8,11,13,207,317,358,363,367,380,386,426,458,459,478,479,495,499,502,524],third:[6,9,12,28,74,99,146,152,153,176,219,220,222,223,247,314,331,333,347,408,419,420,443,452,483,485,492,493,495,497,500],thirumalai:190,thistl:207,tho:417,thole:[2,6,9,163,234,235,255],thompson:[0,5,7,9,13,123,152,153,308,380,467],those:[1,2,3,5,6,7,8,9,10,12,13,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,37,39,40,42,43,45,46,47,48,49,50,51,53,54,56,63,75,76,81,95,99,100,117,119,120,121,123,127,152,153,155,158,165,168,176,178,182,184,185,187,188,189,190,191,192,193,195,196,199,202,203,204,206,207,213,217,218,219,220,223,224,229,231,232,238,239,243,245,249,251,252,253,254,260,268,270,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,303,306,309,310,317,321,337,344,345,349,353,354,355,358,359,361,363,364,366,367,368,370,372,377,378,386,388,389,393,394,395,397,400,401,402,403,404,405,406,407,408,409,412,413,416,417,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,443,444,448,449,452,453,455,458,459,460,461,467,468,476,477,478,480,481,482,483,485,487,488,489,492,494,495,497,499,500,501,502,504,506,507,509,511,514,515,516,518,519,524,528,529],though:[6,8,12,39,40,65,75,99,114,178,200,203,207,217,226,227,229,231,236,263,272,315,317,320,330,343,350,360,373,377,380,388,413,415,416,418,419,422,423,439,440,448,485,492,497,499,500,505,509,516,524],thought:[161,254,294,317,351,352,385,423,430,518],thread:[1,3,9,12,15,16,17,251,348,375,393,510,516],threads_per_atom:3,three:[1,3,6,54,65,74,78,95,99,100,115,128,130,142,152,156,177,178,190,210,228,229,234,238,258,271,276,299,304,308,317,318,335,342,344,347,365,366,370,377,378,387,393,394,395,399,416,417,419,422,423,427,430,443,444,445,446,452,456,459,460,466,467,477,480,481,482,485,495,497,500,516,524],threebodi:477,thresh:[41,203,204,206,207,225,495],threshhold:[3,41,206,225,358,495],threshold:[3,41,94,176,207,225,298,389,459,492,511],thrid:495,through:[3,6,7,9,11,12,65,178,182,203,204,208,229,242,244,246,251,252,257,259,260,261,271,272,300,308,318,327,342,347,352,356,376,382,384,395,414,417,418,420,423,429,431,446,451,461,466,468,475,479,483,492,495,498,506,508,514,518],throughout:[6,15,127,130,348,393,446,497],thru:[3,6,7,11,12,69,78,79,86,87,97,98,103,113,114,115,116,129,173,202,203,207,222,268,335,355,360,376,386,392,500],thrust:1,thu:[1,2,3,6,8,11,12,17,32,37,39,41,42,50,61,63,65,66,69,70,74,75,76,77,79,81,86,87,96,98,99,100,103,113,114,116,117,119,120,124,125,126,127,128,152,153,154,158,161,166,168,173,174,175,178,180,181,182,184,186,191,198,199,202,203,204,206,207,208,210,211,212,213,214,218,219,220,222,223,224,225,226,227,228,229,231,232,235,237,238,243,247,248,249,250,251,252,254,255,260,266,271,276,288,298,304,306,308,312,315,317,319,320,321,323,327,328,331,332,333,334,335,336,338,339,340,342,343,346,347,349,350,351,352,355,356,357,358,360,361,368,377,378,380,384,386,387,388,392,393,394,395,398,399,400,401,402,403,404,405,406,407,408,409,413,414,415,416,417,418,419,420,421,422,423,426,427,428,429,431,435,439,440,441,443,444,445,446,448,449,450,451,453,455,456,457,458,459,460,466,467,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,489,492,494,495,497,498,499,500,502,504,505,506,507,509,511,512,513,514,515,516,518,523,524,525,527,528],thumb:[8,16,178,202,268,317,393,407,500,506],thylakoid:382,thz:312,ti2:177,ti3:177,ti4:177,tidi:519,tight:[9,399,466],tightli:306,tij:412,tildeslei:[28,95,412],tile:[3,6,41,64,178,225,429,484,494,524],tilt:[3,6,59,60,61,75,166,180,203,204,207,229,231,232,249,269,271,272,298,307,378,380,485,497,500,515],time:[0,1,2,3,4],time_integr:216,timedelta:220,timelin:5,timeout:[515,516],timer:[1,2,12,16,515],timeremain:[515,516],timescal:[3,218,219,220,222,223,269,307,312,418,492,506],timespan:[254,255,271,304,317,338,339],timestamp:[3,502],timestep:[1,2,3,6,7,8,9,10,11,12,14,16,39,41,59,63,64,65,68,73,75,84,99,102,114,119,120,121,126,128,129,131,153,158,166,202,203,204,205,206,207,208,210,211,212,213,214,215,217,218,219,220,221,222,223,224,225,226,227,228,229,231,232,236,237,238,243,244,246,247,249,250,252,254,255,257,258,264,265,267,268,269,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,287,288,289,290,291,292,294,295,296,297,298,299,302,303,304,305,306,308,309,313,314,315,316,317,318,319,320,321,326,327,328,330,331,332,334,335,336,337,338,339,340,342,344,345,346,347,349,352,353,354,355,357,358,360,376,377,378,384,385,386,388,389,390,391,393,399,413,415,418,425,440,441,459,468,472,492,495,498,499,500,502,503,504,505,506,507,511,512,513,514,515,516],timesteppnig:321,timothi:9,tin:[408,409],tinfoil:378,tini:[76,127,178,386,399,525],tinker:7,tio2:466,tio:466,tip3p:0,tip4:6,tip4p:[0,2,3],tip:0,tirrel:352,titan:14,titer:317,titl:[219,220,221,222,223,305,459,519],title1:[219,220,221,222,223],title2:[219,220,221,222,223],title3:[219,220,222,223],tji:412,tkin:507,tl1:177,tl3:177,tlbr_msw:456,tlo:511,tloop:[271,272,276],tlsph:[2,134,136,137],tlsph_defgrad:134,tlsph_dt:324,tlsph_stress:133,tm3:177,tmax:[3,236,511],tmd:[2,3,210],tmd_dump_fil:346,tmdatom:346,tmin:236,tmm:9,tmp1:[222,223,508],tmp2:[222,223,508],tmp3:508,tmp:[6,12,41,68,69,71,73,79,84,86,98,102,103,114,116,119,125,127,129,158,173,175,203,204,206,207,219,225,306,317,343,350,392,504,508,524],tobia:[271,272,317],todd:294,toe:172,toff:[387,497],togeth:[2,3,6,9,11,12,15,16,39,41,75,126,153,158,172,178,179,203,204,211,212,219,222,225,229,235,248,255,271,304,317,323,328,331,335,353,357,358,421,426,495,500,505,518,528],toggl:[61,182,504],togther:3,tol:[287,293,321,335,377,477],toler:[3,229,287,293,308,309,310,318,321,335,386,388,477,492,511],tolernac:318,toma:9,tomato:207,tong:[9,13],too:[1,3,6,7,39,41,66,70,74,76,77,81,96,100,117,152,166,179,181,206,221,225,226,227,229,232,238,243,246,250,271,299,304,308,312,314,321,335,342,343,347,350,378,388,389,393,413,429,492,500,511,514,516,518,524],took:[75,468],tool:[0,1,4,6,7,8,9,11],toolkit:[6,7,13,14,204],top:[0,3,8,9,11,12,13,15,61,161,176,202,210,224,231,250,257,270,294,319,354,355,357,388,393,458,459,467,497,501,507,519],top_group:328,top_veloc:328,topic:[524,528],toplog:[3,494],topolgi:40,topolog:[2,3,6,7,8,12,13,36,39,40,55,95,119,126,181,182,198,207,226,227,251,302,371,387,426,448,494,497,498,499,501,502,509],topwal:224,torder:317,torqu:[2,3,6,28,40,65,124,129,156,157,171],torsion:[6,185,186,198,395,458,459],torsion_flag:395,toru:382,tosi:400,tot:[312,466],total:[3,6,11,12,14,15,16,17,39,41,42,65,67,72,75,83,86,87,88,89,96,97,98,99,101,108,112,113,114,115,118,120,121,128,129,134,135,136,137,139,140,141,142,143,144,145,152,153,155,158,159,160,161,164,165,166,167,168,170,172,174,175,176,203,210,213,214,217,219,221,222,224,225,227,233,235,237,244,245,246,247,252,254,255,256,257,258,260,269,271,272,276,287,288,299,300,302,303,306,307,312,314,316,317,318,319,320,323,325,328,331,332,334,343,344,345,347,350,352,356,377,386,387,388,389,390,393,394,395,396,398,399,408,416,418,423,443,444,445,446,456,458,459,463,466,467,484,492,494,495,497,499,505,506,511,512,515,516,524],touch:[12,252,353,499],toukmaji:[378,412],toward:[9,28,176,206,210,232,233,252,257,270,276,298,315,331,346,348,370,388],toxvaerd:436,tpa:393,tparam:317,tpartial:158,tpc:393,tpcpu:515,tperiod:317,tptask:[15,393],tqx:[124,129,203,204,337],tqy:[124,129,203,204,337],tqz:[124,129,203,204,337],trace:418,track:[3,7,12,227,231,257,347,357,382,492,497,503,511,515,524],track_displac:216,tracker:251,tractabl:318,trade:[6,12,309,377,378,409,431,435,506,511],tradeoff:448,tradit:[6,9,197,378],traffic:12,trail:[2,21,44,81,95,127,128,172,182,186,203,207,211,212,218,219,220,222,223,317,362,383,387,388,406,419,443,459,467,491,497,505,507,515],train:459,traingul:330,traj:230,traj_titl:459,trajectori:[3,6,12,39,95,203,251,271,273,274,275,277,278,279,280,281,283,284,286,289,290,291,292,294,295,296,300,317,321,323,327,348,357,413,448,459,499,507,512,518,523],tran:[189,190],transfer:[1,6,15,216,235,251,253,343,347,350,377,393,399,446,518],transform:[2,6,9,12,59,61,75,95,163,172,180,203,231,234],transit:[6,9,15,94,270,323,346,388,410,439,445,446,482,492,511],translat:[3,6,63,65,104,105,106,107,108,156,157,158,162,171,219,238,246,250,254,255,260,271,277,278,279,291,292,296,300,317,338,339,340,342,380,418,497,515],transmiss:251,transmit:[6,251],transpar:16,transport:[216,347,469],transpos:12,trap:[3,6,99,174,220,252,349,524],trapezoid:[220,524],trate:[3,231,251],travel:335,treat:[2,3,6,8,9,16,40,42,75,90,92,93,131,153,156,160,171,182,201,219,220,222,223,232,245,272,299,302,303,317,335,347,349,356,360,376,377,386,387,389,398,411,418,419,422,425,429,444,445,446,460,484,497,500,502,505,507,518,524],treatment:[9,312,411],tree:[3,302,439],tref:415,tri:[2,3,6,11,40,90,146,202,206,210,217,229,243,246,268,271,272,276],tri_surfac:[132,330],trial:[232,246,396,506],triangl:[2,3,4,6,7,9,40,42,90,124],triangle_mesh_vertic:[327,330],triangleflag:497,triangul:[2,6,13,330,464],triangular:[6,42,90,124,229,290,330,464,497],tricki:[494,518],triclin:[0,1,3],triflag:6,trigger:[3,11,12,64,94,225,228,246,386,454,490,515],trigon:24,trilinear:257,trilino:16,trim:[3,498],tringl:206,tripflag:458,tripl:[2,152,231,399,458,493,495],triplet:[3,33,36,38,417,452,456,477,480,481,482,485],trivial:[8,11,308],trj:459,trott:[7,9,16,152,467],troubl:[11,12],truli:8,truncat:[3,5,6,12,75,238,306,312,318,352,356,385,397,409,418,423,431,433,436,448,455,466,507],trung:14,tscale:[3,269,307],tschopp:70,tsige:403,tsrd:[335,357],tstart:[247,248,254,256,271,272,293,317,338,339,340,341,413,503],tstat:[2,3,6,230,247,248,254,335],tstop:[247,248,254,256,271,272,293,317,338,339,340,341,413,503,511],tsuzuki:[77,485],tthi:139,ttm:[2,3,210],ttm_mod:347,tucker:[152,467],tuckerman:[271,272,295,300,317,506],tue:9,tune:[2,3,6,14,15,210],tunnel:300,turkand:117,turn:[3,4,6,12,21,32,36,39,44,50,54,55,61,68,73,75,119,126,152,176,177,182,186,191,198,206,207,210,217,226,227,228,229,246,251,271,285,302,305,306,317,335,362,368,371,377,386,388,389,391,393,395,411,425,426,443,448,459,475,476,493,497,499,504,509,510,515,516,521,527],turquois:207,tutein:395,tutori:[6,8,9,298],tweak:[12,178,251,393],twice:[3,6,15,16,65,96,184,207,210,211,212,229,268,271,310,322,393,426,495,497,504],twin:70,twist:[440,441],two:[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,21,37,39,41,42,44,54,56,59,61,63,65,68,71,73,74,75,80,81,84,95,96,100,102,113,118,119,124,125,126,127,128,129,130,152,154,156,160,161,163,164,166,172,176,177,178,179,181,186,197,202,203,204,205,206,207,210,211,212,217,218,219,220,222,223,225,226,227,228,229,232,235,243,246,247,248,250,252,253,254,255,257,260,270,271,272,276,298,299,300,303,304,306,307,308,312,314,317,323,331,335,342,343,345,347,350,353,356,358,360,362,372,377,378,380,382,383,384,386,387,388,391,393,394,395,396,398,399,400,401,402,403,406,407,408,409,411,412,413,415,416,417,418,419,420,422,423,426,429,430,431,435,439,440,441,443,446,448,451,453,456,457,458,459,460,462,466,467,468,475,476,477,479,480,481,482,483,484,485,488,489,491,492,494,495,497,498,499,500,501,504,507,509,510,511,512,514,515,516,518,523,524,525,526,527,528,529],two_temperatur:216,twobodi:[480,482,485],twogrid:3,twojmax:[152,467],twolevel:[3,494],txt2html:8,txt:[8,13,57,203,208,305,306,347,375,387,430,466,486,502,519,524],typcial:[41,225],type1:[81,130,177],type2:[81,130,177],type:[3,6],typei:429,typej:429,typen:[81,130,177],typic:[1,2,3,6,7,8,9,10,11,12,13,14,15,16,17,28,39,40,41,45,46,55,59,61,63,65,74,75,94,95,112,118,129,131,140,172,178,179,181,197,203,204,205,206,207,210,211,212,213,215,216,219,221,225,226,227,228,229,231,232,237,243,244,246,249,255,271,285,299,302,303,306,308,310,316,317,321,324,326,335,342,350,351,357,377,380,385,386,387,388,389,390,393,404,406,407,409,421,422,425,426,430,431,435,440,441,443,448,460,463,465,476,478,479,482,492,493,495,497,498,499,500,506,509,511,512,514,519,523,524,527,529],typicali:12,tzou:347,u_chem:[88,89],u_cond:[88,89,240],u_f:257,u_i:[240,241,242],u_ij:456,u_j:242,u_mech:[88,89,240],u_prom:399,uberuaga:[270,388],ubiquit:[11,399],uchem:[40,420,451,479],ucond:40,uhf:396,uiuc:[9,16],uloop:[3,300,388,392,524],ulsph:[2,141],ultim:511,ultra:176,umbrella:[2,6,7,9,230,331,362,371],umech:40,umin:[25,26,48,49,187],unabl:[3,11,41,225],unaffect:[203,229,271,317,498,509,514],unalt:[211,212,285],unambigu:[75,485],unari:[360,524],unbalanc:3,unbias:[166,418],unbond:[227,497],unbroken:85,uncertainti:40,unchang:[61,229,232,270,271,273,274,275,277,278,279,288,304,317,497,498,501,507],uncharg:[40,378],uncom:[1,4],uncompress:[12,75,206],uncomput:[2,3,65],uncorrel:[247,342,492],uncoupl:300,undefin:[3,12],under:[0,5,6,7,8,9,12,15,17,20,21,44,152,185,186,206,251,269,271,303,307,308,322,361,362,383,414,418,439,459,467,495,511,516,518],underestim:176,underflow:206,undergo:[6,94,95,113,166,247,254,255,271,323,335],undergon:[228,335],underli:[6,12,16,74,206,271,347,380],undermin:39,underpredict:6,underscor:[2,3,65,204,210,228,229,269,271,273,274,275,276,277,278,279,291,292,294,296,304,306,338,339,340,360,387,524],understand:[1,4,6,8,246,272,446],understood:[203,399],undesir:[61,229,231,271,317],undetermin:335,undisturb:[440,441],undo:[182,251],undump:[2,3,61,203,204,205,206,207,208,376],unexpect:[3,503],unfix:[2,3,6,61,99,210,216,219,220,222,223,308,316,319,344],unfix_flux:216,unfold:333,unfortun:[348,505,506],uniaxi:[3,156,276],uniform:[7,15,41,96,127,216,225,226,227,232,254,257,260,272,342,415,422,460,492,494,524,525],uniformli:[61,127,202,257,303,347,450,451,456,478,479,525],uninstal:12,uninterrupt:[217,232,246,268,269,271,273,274,275,276,277,278,279,291,292,294,295,296,306,307,317,323,334,337,345,347,353],union:[3,6,40,207,306,356,358,497,500],uniqu:[3,6,7,8,12,39,75,134,221,247,248,254,255,276,306,312,314,388,416,418,497,524,525],unit:[2,3,5,6,7,8,19,20,31,34,35,37,39,56,57,61,63,67,68,69,70,71,72,73,74,75,76,77,78,79,81,83,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,113,114,115,116,118,119,120,121,123,124,125,127,128,129,130,131,132,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,172,173,174,175,176,177,178,181,185,199,202,203,204,206,207,213,214,215,217,219,220,224,226,227,228,229,231,232,233,236,237,238,240,241,242,244,246,247,248,249,250,251,252,254,255,256,257,268,269,270,271,272,276,285,293,298,299,300,303,304,307,308,310,312,315,316,317,318,319,323,327,331,332,333,334,335,338,339,340,341,342,343,345,346,347,350,351,352,353,354,355,356,357,361,363,367,370,375,377,378,380,383,384,386,387,388,389,390,393,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,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,455,456,457,458,459,460,461,462,464,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,483,484,485,486,487,488,489,490,495,497,499,500,506,507,511,514,515,517,518],unit_styl:3,uniti:[417,448,471],unitless:[66,70,74,75,125,129,183,219,231,246,269,271,307,318,353,386,396,423,449,453,455,477,480,481,482,485,523],unitlesss:[82,85,122],univ:[9,13],univers:[3,6,9,12,13,17,95,251,377,378,388,392,440,445,455,457,482,491,494,524],universit:[9,13],unix:[12,16,253,508],unknown:[3,12,66,77,497],unless:[2,3,9,11,12,14,15,55,59,70,113,130,163,177,178,203,204,207,208,215,229,232,246,254,271,273,274,275,277,278,279,303,304,317,335,346,379,386,407,448,478,479,495,500,504,509,524],unlik:[12,97,178,221,254,310,377,394,399,416,419,426,443,444,445,467,476],unlike:[32,50,61,168,191,203,254,271,276,304,312,338,339,340,368,376,416,425,430,444,445,459,494,499,504,509,524,529],unlimit:[456,516],unlucki:3,unmark:7,unmodifi:336,unnecessari:15,unoccupi:347,unoptim:206,unpack:[0,8,11,393],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:207,unperturb:95,unphys:[3,6,255,271,317,497],unpredict:[315,507],unpublish:446,unrecogn:3,unrel:[8,9,13,184,519],unreli:448,unrestrain:316,unrestrict:396,unscal:[3,124,129,172,203,204,337,498],unset:[3,377,418],unshift:412,unsmooth:437,unsolv:[390,404],unsort:207,unspecifi:[231,497],unsplit:518,unstabl:[3,257],unstag:519,unstrain:231,unsuccess:[3,303],unsupport:[3,512],untar:12,until:[2,3,6,12,37,39,41,56,75,131,199,206,225,229,232,241,242,246,251,287,303,327,335,337,344,360,376,377,389,392,393,399,423,450,451,478,479,492,497,498,502,503,505,511,523,524],untilt:500,unus:399,unusu:[3,8,389],unwant:[3,178,377],unwrap:[3,69,78,79,86,87,97,98,103,113,114,116,124,129,153,173,203,204,207,208,218,228,230,251,268,317,331,337,497,498,501,507],unwrapexpand:203,unzip:12,up_intern:206,updat:[0,3,6,8,12,13,15,129,135,136,137,147,148,149,150,202,203,204,210,217,226,227,235,244,247,254,255,257,260,264,265,268,269,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,294,295,296,302,304,306,307,312,317,326,327,337,338,339,340,342,347,358,359,393,399,412,446,448,458,459,465,492,497,499,507,508,511,518],update:259,upenn:[11,13],upgrad:12,upon:[6,217,251,318,399,483,511],upper:[2,3,41,59,61,75,96,113,115,154,167,174,202,207,220,221,225,229,235,255,257,271,307,312,352,353,358,359,386,423,466,500,525],uppercas:0,upsid:6,upsilon:422,upstream:519,upto:[3,499,505],upward:232,urbana:[251,377,378,440],urey_bradlei:19,url:519,usa:9,usabl:[12,246,416],usag:[3,6,8,298,312,335,426,439,497],usage:255,use:[3,6,12,14,16,17,18,129,203,204,205,206,218,219,220,222,223,246,255,269,317,320,343,347,349,350,422,443,458,459,460,466,478,479,495,497,509,519],use_ldg:16,usec:517,used:[207,254,256],useful:446,user:[0,1,2,3,4,5,6,7,8],user_manifold:519,user_misc:[29,30,34,188,193,196,197,366],userguid:9,usernam:519,using:[0,1,3],usr:[11,12,498],usual:[2,3,6,12,14,16,17,23,27,31,34,35,47,63,75,95,128,156,157,158,163,171,176,195,197,203,204,206,211,212,217,219,228,229,230,231,246,249,254,256,269,276,299,307,308,314,316,317,335,343,347,350,352,356,360,367,375,388,389,393,404,407,410,412,422,426,427,430,439,440,441,448,452,463,465,467,475,477,483,492,496,498,502,506,508,511,514,515,516,524,529],usualli:[3,462,464],util:[8,12,16,17,393,422,516],utilizi:12,utilz:[12,516],utsa:455,uttormark:13,uwo:9,v11:6,v22:6,v33:6,v_0:[3,347],v_2:446,v_3:446,v_4:446,v_a:[8,231],v_abc:[495,515,524],v_area:[2,524],v_atomfil:507,v_c:172,v_cluster:306,v_dc:172,v_delta:95,v_dhug:[269,307],v_diff:[174,349],v_displac:231,v_dk:172,v_dlj:172,v_drai:[269,307],v_dx:[268,500],v_dy:[268,500],v_dz:268,v_e_hbond:425,v_ea:[458,459],v_eb:[458,459],v_eqeq:[458,459],v_espac:213,v_f:495,v_fac:495,v_flux:250,v_foo:[495,524],v_ij:456,v_increas:249,v_integr:349,v_jx:99,v_jy:99,v_jz:99,v_k11:99,v_k22:99,v_k33:99,v_k:172,v_ke:[203,204,528],v_left:500,v_lgr_po:[269,307],v_lgr_vel:[269,307],v_linear:[352,355,357],v_lj:[172,395],v_mol:207,v_mu:440,v_myi:268,v_myindex:524,v_myke:128,v_mystep:504,v_myvar:[8,207],v_myvec:[131,524],v_myx:268,v_n:[257,446],v_name1:[172,231],v_name2:[172,231],v_name:[3,6,75,95,128,131,202,203,204,206,207,211,212,213,214,218,219,220,221,222,223,224,237,249,250,252,254,255,268,320,328,337,338,339,340,349,352,355,357,495,500,504,507,513,515,524,525],v_nstep:358,v_occ:421,v_omega:268,v_oscil:[213,214,224,237,320],v_phi:249,v_prefactor:[211,212,468],v_press:153,v_pressdown:[355,357],v_push:213,v_pxy:6,v_pxz:6,v_pyz:6,v_r0:252,v_r1:176,v_r2:176,v_r:[176,252,287],v_rad:358,v_radiu:252,v_ramp:[352,355,357],v_rate:[231,252],v_rebo:395,v_scale1:[211,212],v_scale2:[211,212],v_size:[211,212],v_t_qm:307,v_temp:343,v_theta:[249,500],v_torsion:395,v_tp:231,v_up:500,v_v0:524,v_v11:6,v_v22:6,v_v33:6,v_v:[268,524],v_valu:[206,495],v_vx:268,v_vy:268,v_vz:[268,525],v_wiggl:[352,355,357],v_x:[2,178,252,268,352,355,357,495,500,524],v_xave:6,v_xmax:6,v_xx:178,v_y:[178,252,500],v_yi:178,v_z:500,vacanc:[4,176,344,446],vacf:[2,3,6,65],vacuum:[347,378,410,482,489],valanc:399,vale:3,valenc:[310,399,418,458,459],valent:399,valeriu:9,valid:[2,3,6,9,11,12,75,130,164,177,207,229,246,254,298,317,335,358,360,375,380,416,418,422,446,456,497,498,505,507,524],valon:443,valu:[2,3],value0:524,value1:[12,68,73,84,102,119,158,218,219,220,221,222,223,276,349,358,508],value2:[12,68,73,84,102,119,158,218,219,220,221,222,223,276,349,358,508],valuei:220,valuej:220,valuev:[7,9],valus:306,van:[9,53,95,118,304,308,313,338,407,408,439,443,458,459,488,525],vanadium:446,vanderwa:[448,515],vanilla:[6,8,12],vanillia:42,vanish:[235,312,321],vapor:[41,225,246,514],vapour:342,var1:508,var2:508,varaibl:[3,500],varavg:12,vare:347,vari:[1,10,17,41,63,64,75,95,130,166,168,177,211,212,216,219,220,225,229,231,269,271,304,316,317,338,339,347,352,377,404,413,414,424,437,440,455,468,478,479,494,512,516],variabl:[0,2,3],variable_hill_factor:13,variable_nam:459,varianc:[128,413,524],variant:[1,3,6,9,12,91,108,129,271,276,317,322,353,377,385,393,423,444,445,449,480,482,506,510,525],variat:[12,41,225,524],varieti:[1,2,4,6,7,9,13,14,75,206,251,375,380,426,443,458,459,476,485,524],variou:0,varreturn:495,varshalovich:152,varshnei:13,vartiabl:3,vashishta1990:485,vashishta2007:485,vashishta:[2,3,4,9,476],vbia:6,vcm:[2,3,6,65,108],vdim:[167,343,350,525],vdisplac:[3,252,268,352,355,357,524],vdw:[3,408,459],vec1:[128,306],vec2:[128,306],vec:298,vector:[1,2,3],vector_styl:524,vel:[3,6,63,219,231,255,303,323,354,413,414,418,423,492,499,500,502,518,524],veld:[13,335,378,403,435],veloc:[2,3,6,7,8,39,40,63,65,69,90,91,92,93,99,104,105,106,107,108,112,116,123,124,128,129,153,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,174,175,178,203,204,205,206,207,210,211,217,218,219,222,229,231,232,235,236,238,239,246,250,252,254,255,256,257,258,259,260,261,262,264,265,267,268,269,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,294,295,296,297,298,300,301,302,303,304,307,312,315,316,317,320,321,323,325,326,327,328,335,336,337,338,339,340,341,342,343,345,347,349,350,351,352,353,354,355,357,358,380,383,385,386,388,413,415,418,423,440,441,459,492,497,498,499,500,501,502,506,507,514,515,518,523,524],velocit:[250,413,414,418,423],velocity_bottom:257,velocity_gradient:465,velocity_temp:525,velocity_top:257,vendor:[9,12],verbatim:495,verbos:[12,466],veri:[1,3,6,7,8,9,10,12,13,16,41,75,76,95,127,128,129,131,203,204,206,207,218,219,220,221,222,223,225,226,227,229,246,260,263,271,272,285,287,293,300,304,315,321,338,339,349,388,389,390,393,418,423,440,441,450,451,455,458,467,468,478,479,505,515,516,518,519,523,527],verifi:[8,393,448,506,512,519],verlag:323,verlet:[1,3,7,8,9,12,15,17,216,238,254,271,285,294,300,321,336,347,355,358,393,491,494,506],versa:[3,6,13,61,172,180,228,241,252,254,255,317,497,498,518],versu:[6,14,17,39,41,85,113,114,127,174,207,225,317,321,378,403,412,423,435,448,515,524],vertex:[42,146,330],vertic:[2,15,41,42],ves:[455,476],vfinal:524,vfrac:124,vhi:[167,525],vhs:415,via:[0,1,2,3,4,6,7,8,9,11],vibrat:[6,9,232,248,298,307,312,370,418,492,506],vice:[3,6,13,61,172,180,228,241,252,254,255,317,497,498,518],video:206,view:[4,6,7,13,203,206,335,399,418,419,466],viewer:[203,206],viewpoint:206,vij:413,vika:13,vim:0,vincent:[9,18],violat:342,violet:207,virial:[3,65,99,123,152,153,172,211,212,229,235,271,272,273,274,275,276,277,278,279,302,304,317,321,377,393,396,413,414,415,418,427],virialmod:427,virtual:[6,7,8,12,477],virut:9,visa:7,viscoelast:[122,423,455],viscoelsat:455,viscos:[0,2,3,4],viscosity:[4,6],viscou:[2,6,210,247,248,250,254,257],viscous:317,vision:466,visit:319,vista:203,visual:[0,3,4],viz:[11,13],viz_tool:11,vizplotgui_tool:11,vizualiziton:319,vlo:[167,525],vmax:[229,335],vmd:[6,7,9,11,13,203,208,251,498],vmdarch:208,vmdhome:208,vname:524,voigt:[6,152],vol:[2,6,8,99,138],volfactor:377,volpress:446,volt:[457,523],volum:[2,3,6,40,41,60,61,65,85,95,99,110,123,127,130,138,142,151,153,176,177,178,181,217,219,225,229,231,232,240,246,257,269,271,272,276,280,281,283,284,286,287,289,290,291,292,294,295,296,303,304,307,317,323,347,352,356,358,377,380,387,401,440,441,446,455,473,474,489,493,494,497,500,507,515,518,523,524],volumetr:85,von:[145,150],voro:[3,9,176],vorobyov:518,voronoi:[2,3],vorselaar:221,voter2:[492,511],voter:[444,445,492,511],voth:[40,300],vpz:354,vratio:524,vri:424,vrpn:251,vshear:353,vstream:6,vtarget:[3,350],vtk:[2,6],vtp:204,vtr:204,vtu:204,vv0210:13,vx0:174,vxcm:317,vxhi:[232,303],vxlo:[232,303],vy0:174,vycm:317,vyhi:[232,303],vylo:[232,303],vz0:174,vzcm:317,vzhi:232,vzi:354,vzlo:232,w_1:152,w_2:152,w_i:152,w_ik:456,waal:[95,118,407,408,439,458,459,488],wadlei:[13,399],wag:[7,9,13],wagner:[7,9,216,257,443],wai:[1,2,3,6,7,8,9,10,11,12,14,17,21,33,44,52,61,65,68,69,73,74,75,76,79,81,84,86,95,98,99,100,102,103,114,116,117,119,125,126,127,152,153,155,156,157,158,159,160,161,164,165,166,167,168,170,171,172,173,175,178,181,186,194,199,202,203,204,206,207,210,211,212,219,222,223,224,227,228,229,231,244,247,252,254,255,257,269,271,276,285,287,300,303,304,306,315,317,319,323,331,332,335,337,338,339,340,343,346,347,349,352,355,357,358,362,363,364,365,367,369,370,378,380,383,386,388,389,393,394,395,406,409,410,413,415,416,417,419,422,425,426,428,431,443,444,445,448,452,454,456,457,460,466,467,468,475,477,480,482,485,491,492,495,497,498,499,500,501,502,505,506,507,519,524,525,526],wait:[1,12,15,251,299,492,494],walk:[3,247,254,255,271],wall:[0,2,3,5],wall_surac:146,wall_surfac:[146,327],wallhi:352,wallstyl:353,walltim:516,wander:331,wang:[378,443,456],want:[0,1,2,3,5,6,7,8,9,11,12,16,37,40,56,65,67,69,71,72,75,79,83,86,87,88,89,98,101,103,113,114,116,118,120,121,123,125,127,129,153,158,173,174,175,176,178,181,199,203,204,206,207,210,211,212,213,218,219,225,228,231,232,235,237,241,244,246,252,255,266,288,298,303,306,316,317,320,331,332,334,336,343,345,350,352,356,358,360,378,380,388,394,395,399,407,408,413,416,419,426,427,428,429,443,450,451,452,456,458,459,466,468,477,478,479,480,482,484,485,493,495,497,498,499,500,502,504,505,512,515,516,518,519,524,527,529],ward:399,warm:[15,418],warmup:15,warn:0,warner:394,warning:[2,3,12,443,458],warp:[5,443],warranti:7,warren:[413,450,451],wasn:3,wast:3,watanab:[344,345],watch:388,water:[0,3],watkin:195,wave:[7,9,40,215,269,311,354,396,418],wavefunct:[396,418],wavelength:[130,177],wavepacket:[40,396,418,497],wavevector:299,wbodi:91,weak:[10,100,308],web:[1,4,8,10,14,16,406],webb:216,weber:[3,5,7,9,14,96,154,417,445,456,476,477,485,509],websit:[8,458,459],weckner:455,weight:[2,3,6,36,55,95,119,126,127,152,177,179,182,184,198],welcom:495,well:[1,3,6,7,8,9,11,12,13,14,16,17,26,40,51,70,75,100,117,123,153,156,164,178,187,206,207,213,217,219,223,225,226,227,229,232,237,246,250,254,257,261,263,268,271,276,287,293,303,304,317,318,320,328,342,345,353,386,388,393,398,421,422,425,426,427,440,441,443,446,460,468,480,481,482,495,497,499,501,506,511,516,518,519,523,528],wennberg:377,went:[3,11],were:[3,5,6,7,9,11,12,13,14,15,18,33,41,42,52,56,62,74,75,113,117,120,121,123,127,155,158,178,181,182,194,203,206,207,210,213,219,222,223,225,231,237,243,250,251,285,294,319,353,354,358,369,377,390,392,395,418,423,426,430,455,459,478,492,494,495,497,498,499,500,502,504,512,515,519,524,525,528,529],weren:502,western:9,westview:488,what:[0,1,2,3,6],whatev:[8,12,14,119,124,127,128,129,131,206,207,211,212,229,271,304,306,353,380,385,386,388,393,405,407,446,458,459,511,518,524],wheat:207,whelan:177,when:[0,1,2,3,4,6,8,9,11,12,13,14,15,16,17,19,20,22,23,24,25,26,27,28,29,30,31,32,34,36,37,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,61,63,64,65,67,72,75,76,83,87,94,96,100,101,113,114,115,117,118,119,120,123,124,126,127,128,131,154,155,156,161,165,166,168,174,176,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,198,199,203,204,205,206,207,208,210,211,212,213,214,215,217,218,219,220,222,223,224,225,226,227,228,229,230,231,232,236,237,239,241,243,244,245,246,248,249,251,254,257,258,260,261,266,271,272,273,274,275,276,277,278,279,280,281,285,288,289,291,292,294,296,298,302,303,304,305,306,307,309,310,311,312,316,317,318,319,320,321,323,331,333,335,336,337,342,343,347,348,349,350,352,353,354,355,356,357,358,359,360,361,363,364,366,367,368,370,371,372,374,375,376,377,378,380,384,385,386,387,388,389,390,392,393,394,395,397,400,401,402,403,404,405,406,407,408,409,411,412,413,415,416,417,418,419,421,422,423,424,425,426,427,428,429,431,432,433,434,435,436,437,438,439,440,441,443,444,445,446,448,449,450,451,452,453,455,456,458,459,460,461,467,468,475,477,478,479,480,481,482,483,484,485,487,488,489,490,492,494,495,497,498,499,500,501,502,503,504,505,506,507,508,509,511,512,514,515,516,517,519,523,524,525,527,529],whenev:[0,8,12,75,197,207,218,317,380,425,495,506,510,524,529],whenth:3,where:[1,3,6,8,9,10,11,12,14,15,17,20,22,23,24,25,26,27,28,31,34,35,36,39,40,41,43,47,48,49,51,55,63,65,67,68,69,71,72,73,74,75,77,79,83,84,85,86,88,90,91,92,93,95,96,97,98,100,101,102,103,104,105,106,107,108,114,116,119,123,124,125,126,127,128,129,130,131,153,155,156,157,158,159,160,161,164,165,166,167,168,170,171,172,173,175,177,179,181,182,185,187,198,202,203,206,207,210,211,212,213,214,219,220,224,225,228,229,231,232,236,237,238,240,242,243,244,246,247,248,249,250,252,254,255,256,257,260,261,264,266,268,269,271,272,276,285,289,297,298,299,300,303,305,306,307,310,312,317,318,319,320,321,323,327,328,331,332,334,337,338,339,340,343,344,345,347,350,351,352,353,355,356,357,358,361,363,364,365,366,367,370,371,372,375,378,380,385,386,387,388,389,390,393,394,395,398,399,400,402,406,407,408,409,410,411,412,413,414,416,417,418,419,420,421,422,423,424,425,426,427,428,431,435,440,441,442,443,444,445,446,448,451,452,453,455,456,457,458,459,460,466,467,470,473,474,475,476,477,478,479,480,481,482,485,488,489,491,492,494,495,496,497,499,500,501,502,504,506,507,509,511,512,513,514,515,518,523,524,525,527,529],wherea:[6,11,100,217,247,271,308,342,347,518],wherebi:309,wherev:250,whether:[6,8,11,12,16,39,40,54,61,63,65,74,75,112,118,154,165,166,199,206,207,209,210,211,212,219,223,226,227,228,229,230,231,235,243,246,255,268,271,276,306,321,335,343,349,350,358,360,375,377,378,387,391,393,402,404,408,424,426,430,440,441,443,448,459,466,476,492,495,497,498,500,502,509,510,511,514,524,525],which:[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,27,28,31,32,36,37,38,39,40,41,42,44,45,46,47,50,51,53,54,55,56,58,60,61,63,65,66,67,69,70,72,74,75,76,77,78,79,80,81,82,83,85,86,87,88,89,90,91,93,95,96,97,98,99,101,103,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,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,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,184,185,186,189,190,191,192,195,198,199,202,203,204,206,207,208,210,211,212,213,214,215,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,238,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,260,261,265,266,268,269,270,271,272,273,274,275,276,277,278,279,281,283,285,286,287,289,290,291,292,293,294,295,296,298,299,300,302,303,304,305,306,307,308,309,310,312,313,314,315,316,317,319,320,321,323,324,325,326,328,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,360,361,362,364,367,368,371,372,375,376,377,378,380,382,383,384,385,386,387,388,389,390,392,393,394,395,396,398,399,400,402,403,404,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,433,434,435,437,439,440,441,443,444,445,446,448,449,450,451,452,453,454,456,457,458,459,460,461,462,463,464,465,466,467,468,471,475,476,477,478,479,480,481,482,483,484,485,488,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,518,519,524,525,527,528,529],whichev:[12,392,492,511],white:[207,247,254,255,256,317,339,347,497,524,528],whitesmok:207,whitespac:[2,3,207,387,497],who:[0,3,6,7,8,9,13,394,416],whole:[235,251,299,312,318,323,518],wholli:232,whose:[3,6,7,8,9,17,18,37,39,42,56,61,80,95,163,181,199,206,207,217,231,241,242,252,253,268,271,273,274,275,277,278,279,298,299,315,316,318,321,335,349,356,358,380,388,389,418,420,433,450,451,462,464,477,478,479,480,482,518,524,525],why:[3,6,255,343,350,519],wicaksono1:298,wicaksono2:298,wicaksono:298,wide:[1,6,7,63,65,210,343,350,380,390,404,407,418,458,459],width:[206,207,232,382,396,421],wiggl:[3,231,268,327,352,353,355,357,500],wiggle:327,wigner:152,wih:6,wikipedia:6,wild:[3,12,21,44,81,95,127,186,211,212,317,362,383,406,425,491,499,504,527,529],wildcard:[3,12,128,172,182,203,204,206,207,218,219,220,222,223,314,406,475,504,507,515,528,529],wildli:[271,304],win:393,window:[3,4,12,13,75,203,206,208,219,220,221,222,223,251,319,340,341,406,498,519],wipe:[210,426,476,520,522],wire:316,wirnsberg:[6,238],wirt:207,wisconsin:13,wisdom:519,wise:[3,12,413,477,506],wish:[2,3,5,6,7,8,11,12,16,40,42,59,60,61,75,128,153,158,179,180,182,184,203,204,207,211,218,219,220,223,227,231,232,243,246,252,257,261,303,306,317,321,335,336,352,353,377,380,388,393,402,425,426,443,448,450,451,458,478,479,495,497,498,499,505,509,515,524,525,529],within:[1,2,3,6,8,9,11,12,13,14,15,16,28,39,40,41,42,55,61,63,65,68,73,74,75,76,77,81,84,100,102,117,119,123,126,127,128,129,131,134,152,169,178,181,205,206,207,211,212,217,218,219,222,223,225,226,227,228,232,234,241,242,243,246,252,254,298,302,303,304,306,308,317,318,319,321,324,326,330,331,336,347,350,352,356,358,360,376,380,386,387,388,389,390,393,398,400,402,409,414,415,416,417,418,420,421,426,427,430,431,443,446,451,453,454,455,460,461,476,477,479,480,481,482,483,485,490,492,494,495,497,505,506,509,511,518,523,524],without:[1,2,3,4,6,7,8,9,11,12,15,16,19,20,22,23,24,25,26,27,28,29,30,31,34,37,40,43,45,46,47,48,49,51,53,54,56,61,95,123,155,160,165,179,184,185,187,188,189,190,192,193,195,196,199,203,206,207,208,210,213,219,221,222,223,224,229,231,239,241,242,245,247,249,251,254,268,271,273,274,275,276,277,278,279,280,281,289,291,292,294,295,296,303,306,308,309,310,311,315,317,318,319,320,321,327,335,351,355,359,361,363,364,366,367,370,372,376,377,378,388,389,393,394,395,397,400,401,402,403,404,405,406,407,408,409,412,413,416,417,418,419,420,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,444,446,448,449,450,451,452,453,455,459,460,461,468,476,477,478,479,480,481,482,483,485,487,488,489,495,497,500,505,506,512,515,518,519,523,524],wolf:[2,3,7,76,127],wolff:[448,478,479],won:[3,315,441],wong:[216,399],word:[2,3,6,8,12,28,65,207,210,217,218,219,220,223,230,252,282,288,305,310,316,349,360,376,407,448,493,495,497,516,524,525],work:[1,3,6,7,8,9,11,12,15,17,39,54,61,62,96,128,129,130,156,157,159,160,161,165,166,167,168,170,171,176,177,203,206,208,211,212,219,228,244,246,253,254,255,257,261,268,271,277,278,279,287,291,292,294,295,296,304,306,314,316,319,321,338,339,340,345,376,377,389,393,406,408,411,413,426,440,441,443,446,448,466,492,494,495,498,499,501,505,506,508,511,524],workaround:[76,127,317,448,525],worker:[12,458,459,485],workflow:519,workhors:8,workstat:495,world:[3,12,152,376,388,392,491,494,495,512,524],worlei:413,worri:16,worsen:17,worst:356,worth:[219,220,222,223,307,319],would:[1,3,4,5,6,7,8,11,12,15,21,28,36,41,42,44,55,74,75,76,97,99,127,129,153,158,166,178,179,180,181,182,184,186,198,203,204,206,207,208,210,211,212,214,217,219,225,228,230,231,235,236,238,243,246,249,250,251,255,268,271,272,285,298,300,304,306,308,312,315,318,335,342,346,354,355,358,360,361,362,363,364,365,367,368,371,377,380,383,385,386,387,388,389,392,393,394,395,399,406,407,408,409,413,414,415,416,417,419,426,427,428,429,443,444,445,446,452,456,458,459,463,465,467,475,477,480,481,482,485,492,495,497,500,501,502,504,505,506,507,508,512,514,515,518,519,524,525,528,529],wrap:[1,3,6,9,11,12,59,61,129,178,180,202,203,204,205,207,208,218,230,231,232,251,257,268,317,331,335,352,354,356,377,378,388,495,497,498,500,505],wrapper:[0,6,7],wrigger:323,wright:386,writabl:3,write:3,write_atom_weight:216,write_coeff:2,write_data:[2,3,8,12,13,306,497,526],write_dump:[2,3,205],write_freq:459,write_head:8,write_restart:[2,3,8,9,13,210,216,257,499,504,526,527],writen:319,written:[3,5,6,7,8,9,12,13,16,57,68,73,126,152,176,203,204,205,206,207,208,210,211,212,213,214,215,216,218,219,220,221,222,223,224,225,226,227,228,229,230,231,233,235,236,237,238,239,243,244,245,247,248,249,250,251,252,254,255,256,257,258,259,260,261,262,263,264,265,267,270,280,281,282,283,284,285,286,287,288,289,290,293,297,298,299,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,319,320,321,331,332,333,335,336,338,339,340,341,342,343,344,346,347,349,350,351,352,354,355,356,357,359,375,380,389,416,426,442,446,486,488,492,493,495,498,499,503,504,511,512,513,514,519,524,527,528,529],wrong:[3,11,229,271,297,352,356,357,389,459,499,504],wrote:[3,9,499],wt1:448,wt2:448,wt3:448,wurtzit:380,www:[0,2,3,5,6,7,8,10,11,12,13,14,394,416,440,457,458,459,523],x200:15,x86:[12,446],x_ij:456,x_ijkl:361,x_kjli:361,x_ljik:361,xave:6,xavx:15,xcm:[8,317,524],xcore:15,xdr:[12,203],xeon:[1,7,9,10,12,15,16,17,393,510],xflag:[165,166,258,260,267,317,342],xhi:[2,6,59,61,180,203,231,346,352,355,357,497,500,515,524],xhi_bound:[6,203],xhi_new:497,xhost:[9,15],xi_ij:456,xiaowang:[13,419,480,482],xiij:298,xk7:9,xlat:[178,231,252,515],xlo:[2,6,11,59,61,180,203,231,252,346,352,355,357,497,500,515,524],xlo_bound:[6,203],xlo_new:497,xmax:[6,215,236,285,524],xmgrace:0,xmic:15,xmid:232,xmin:524,xml:[204,208,457],xml_label:457,xmovi:[0,4,6,7],xmu:[353,423],xorig:75,xplane:353,xplor:203,xpo:178,xrd:[2,9,130],xsph:9,xsu:[3,203,204,337,498],xt3:203,xt4:[17,203],xt5:[17,203],xtc:[3,6,7,12,203,205,206,207,208],xtcdump:207,xvf:12,xwall:[354,355,357],xxx:12,xyz:[3,6,7,9,13,42,69,75,116,119,166,173,178,203,205,206,207,208,229,260,271,272,276,304,314,315,317,331,334,353,355,357,379,387,494,498,525,528],xzhou:[13,419],xzy:494,yamada:15,yang:[446,456],yate:446,yb2:177,yb3:177,ybox:231,ycm:317,year:[5,7],yeh:377,yellow:[206,207],yellowgreen:207,yet:[3,7,15,16,39,42,206,211,314,352,378,385,386,393,405,407,408,418,488,495,497,498,519,524,526,527,528],yflag:[165,166,258,260,267,317,342],yhi:[6,61,180,203,231,346,352,355,357,497,500,515],yhi_bound:[6,203],yield:[6,99,121,128,153,161,166,207,220,229,235,271,294,308,318,343,349,350,353,358,377,398,413,423,448,455,515,524],yip:344,ylat:[178,231,252,515],ylo:[6,61,180,203,231,346,352,355,357,497,500,515],ylo_bound:[6,203],ymax:[215,524],ymid:232,ymin:524,yorig:75,york:[300,378],yoshida:[271,317],you:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,32,34,37,39,40,41,42,43,45,46,47,48,49,50,51,53,54,56,59,60,61,63,65,67,69,71,72,75,76,77,78,79,81,83,86,87,88,89,95,96,97,98,99,100,101,103,112,113,114,116,117,118,120,121,123,125,127,128,129,152,153,155,156,157,158,161,165,166,171,172,173,174,175,176,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,195,196,198,199,203,204,206,207,208,210,211,212,213,214,217,218,219,220,222,223,224,225,226,227,228,229,231,232,235,237,238,239,241,243,244,245,246,247,248,249,250,251,252,254,255,256,266,268,271,273,274,275,276,277,278,279,280,281,285,288,289,291,292,294,295,296,299,300,302,303,304,306,308,309,310,312,315,316,317,320,321,323,331,332,334,335,336,338,339,340,341,343,344,345,346,347,349,350,351,352,353,355,356,357,358,360,361,363,364,366,367,368,370,372,376,377,378,380,383,385,386,387,388,389,392,393,394,395,397,399,400,401,402,403,404,405,406,407,408,409,412,413,415,416,417,418,419,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,443,444,445,446,448,449,450,451,452,453,454,455,456,457,458,459,460,461,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,483,485,487,488,489,491,492,493,494,495,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,514,515,516,518,519,523,524,525,526,527,529],young:[423,462,464],your:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29,30,31,34,37,39,40,43,45,46,47,48,49,51,53,54,56,61,63,118,123,127,155,156,157,161,165,171,176,178,179,180,181,182,184,185,187,188,189,190,192,193,195,196,199,202,203,204,205,206,213,216,220,222,223,224,226,227,228,229,231,232,239,245,246,249,251,254,268,271,273,274,275,276,277,278,279,280,281,289,291,292,294,296,303,306,309,310,315,317,320,321,323,337,343,347,349,350,352,355,356,357,358,361,363,364,366,367,370,372,378,380,387,388,389,392,393,394,395,397,399,400,401,402,403,404,405,406,407,408,409,412,413,415,416,417,419,421,422,423,424,425,426,427,428,431,432,433,434,435,436,437,438,439,440,443,444,445,446,448,449,452,453,455,456,458,459,460,461,468,475,477,478,479,480,481,482,483,485,487,488,489,491,494,495,497,499,500,501,504,505,506,507,508,509,510,514,515,519,523,524,526,527,529],yourself:[6,8,12,13,229,387,519],yplane:353,ypo:178,ysu:[3,203,204,337,498],yuan:9,yukawa:[2,3,7,9,407,476],yukawa_1_1:486,yxz:494,yzx:494,z_i:[418,482,489],z_j:[482,489],z_meam:443,zachari:13,zannoni:422,zbl:[2,3,443,467,476],zblcut:482,zblcutinn:467,zblcutout:467,zblexpscal:482,zblz:467,zcm:317,zcylind:353,zepeda:217,zero:[2,3,4,6,9,11,12,25,26,33,36],zeta:[3,257,308,419],zfactor:206,zflag:[165,166,258,260,267,317,342],zhang:[317,343,423],zhi:[3,6,180,203,215,346,352,355,357,497,500,515],zhi_bound:[6,203],zhou:[13,399,419,456,480,482],zhu:474,ziegenhain:13,ziegler:[302,443,476,482,489],zimmerman2004:216,zimmerman2010:216,zimmerman:[9,74,216,399],zlat:[231,252,515],zlib:[9,203],zlim:466,zlo:[3,6,180,203,215,346,352,354,355,357,497,500,515],zlo_bound:[6,203],zmax:[215,257,524],zmid:232,zmin:[257,524],zn2:177,zone:[130,319],zoom:[3,203,206,207],zorig:75,zplane:353,zr4:177,zrest:334,zsu:[3,203,204,337,498],zwall:352,zwall_veloc:257,zxy:494,zybin:459,zyx:494},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.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","angle_style zero 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","bond_write command","bond_style zero command","boundary command","box command","change_box command","clear command","comm_modify command","comm_style command","compute command","compute ackland/atom command","compute angle command","compute angle/local command","compute angmom/chunk command","compute basal/atom command","compute body/local command","compute bond 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 command","compute dihedral/local command","compute dilatation/atom command","compute dipole/chunk command","compute displace/atom command","compute dpd command","compute dpd/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 hexorder/atom command","compute improper 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 orientorder/atom 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 rigid/local 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/body 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 spherical command","dihedral_style command","dihedral_style table command","dihedral_style zero command","dimension command","displace_atoms command","dump command","dump custom/vtk 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/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 ehex command","fix enforce2d command","fix eos/cv command","fix eos/table command","fix eos/table/rx 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 manifoldforce 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/body command","fix nph/sphere command","fix nphug command","fix npt/asphere command","fix npt/body 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/manifold/rattle command","fix nve/noforce command","fix nve/sphere command","fix nve/tri command","fix nvt/asphere command","fix nvt/body command","fix nvt/manifold/rattle 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 rx command","fix saed/vtk command","fix setforce command","fix shake command","fix shardlow 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/chunk 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 distance 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","improper_style zero command","include command","info command","jump command","kspace_modify command","kspace_style command","label command","lattice command","log command","Manifolds (surfacse)","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 dpd/fdt command","pair_style dsmc command","pair_style eam command","pair_style edip command","pair_style eff/cut command","pair_style eim command","pair_style exp6/rx 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 lj/mdf command","pair_style meam command","pair_style meam/spline","pair_style meam/sw/spline","pair_style mgpt command","pair_style mie/cut command","pair_modify command","pair_style morse command","pair_style multi/lucy command","pair_style multi/lucy/rx 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 smtbq 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 table/rx 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","pair_style zero 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","Tutorial for Thermalized Drude oscillators in LAMMPS","LAMMPS GitHub tutorial","uncompute command","undump command","unfix command","units command","variable command","velocity command","write_coeff command","write_data command","write_dump command","write_restart command"],titleterms:{"break":226,"default":[36,39,40,55,59,60,61,63,64,74,75,95,96,100,112,113,115,117,118,119,126,130,134,135,152,158,166,167,171,177,178,181,183,198,201,202,203,204,206,207,208,209,211,212,213,215,216,217,219,223,226,227,229,230,231,232,236,243,246,247,252,254,255,256,257,258,260,266,269,271,272,276,294,295,299,300,303,304,305,306,307,309,312,314,315,317,319,335,337,342,343,344,345,348,350,352,354,358,371,375,377,378,380,381,384,385,387,389,390,391,393,396,399,401,418,440,441,446,448,458,459,475,476,492,493,494,497,498,500,502,504,505,506,509,511,513,514,515,516,517,523,525,527,528],"function":524,"long":[221,400,402,403,404,405,409,411,412,431,435,439,453,461,483],"new":8,"static":12,acceler:1,ackland:66,acknowledg:7,adapt:[211,212],addforc:213,addition:[12,13],addtorqu:214,adiabat:6,adjust_dt:324,adp:394,airebo:395,alloi:416,amber2lmp:13,amber:6,angl:[8,67,68],angle_coeff:21,angle_styl:[2,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],angmom:69,append:215,arrai:6,aspher:[6,90,156,273,277,281,282,291],asphere:9,atc:[9,216],atom:[6,7,8,66,70,74,75,76,77,80,81,82,85,87,89,93,100,105,106,109,110,111,117,121,122,124,152,153,176,215,217,218,306,524],atom_modifi:39,atom_styl:40,attract:5,aug:0,aveforc:224,awpmd:[9,396],balanc:[41,225],barostat:6,basal:70,bcc:298,beck:397,berendsen:[304,338],between:6,binary2txt:13,bodi:[6,8,42,71,157,274,278,283,292,398],body:9,bond:[8,13,72,73,226,227,228,313],bond_coeff:44,bond_styl:[2,43,45,46,47,48,49,50,51,52,53,54,55,56,58],bond_writ:57,bop:399,born:[400,411],boundari:[7,59],box:[6,60,229],brownian:401,buck:[402,403,411,442],bug:3,build:[11,12],calcul:6,call:12,categori:2,centro:74,ch2lmp:13,chain:13,change_box:61,charmm:[6,19,184,404,439],chunk:[6,69,75,79,86,98,103,114,116,125,158,173,175,219,332],citat:7,class2:[9,20,43,185,361,405],clear:62,cluster:76,cmm:9,cna:77,code:6,coeffici:6,colloid:[9,352,407,488],colvar:[13,230],colvars:9,com:[78,79,159],comb3:408,comb:[309,408],come:5,comm_modifi:63,comm_styl:64,command:[2,6,8,12,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,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,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,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,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,520,521,522,523,524,525,526,527,528,529],common:3,comparison:1,compos:6,compress:9,comput:[2,6,8,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,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,524],compute_modifi:112,condit:7,conduct:[6,343],constant:[6,524],constraint:7,contact:[80,132],coord:81,core:6,coreshell:9,correl:[220,221],cosin:[22,23,24,25,26,27,187],cossq:363,coul:[400,402,403,404,405,409,410,411,424,431,435,439,453,461],coupl:6,creat:227,create_atom:178,create_bond:179,create_box:180,createatom:13,creation:7,csld:339,csvr:339,cubic:433,custom:[8,203,204],cut:[49,396,402,405,409,412,418,421,431,432,439,447,453,483],cvff:364,damag:[82,133],data2xmovi:13,data:6,databas:13,deby:[409,431],defgrad:139,deform:[161,162,231],delete_atom:181,delete_bond:182,delta:23,deposit:232,descript:[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,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,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,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,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,520,521,522,523,524,525,526,527,528,529],diagnost:7,diel:410,dielectr:183,diffraction:9,diffus:6,dihedr:[8,83,84],dihedral_coeff:186,dihedral_styl:[2,184,185,187,188,189,190,191,192,193,194,195,196,197,198,199,200],dilat:85,dimens:201,dipol:[6,28,86,412],dipole:9,direct:235,directori:4,discuss:6,disp:6,displac:[87,94],displace_atom:202,distanc:365,distribut:[7,12],document:0,dpd:[9,88,89,413,414],drag:233,dreid:425,dreiding:6,drude:[6,9,163,234,235,255,518],dsf:[409,431],dsmc:415,dump:[6,8,203,204,205,206,208],dump_modifi:207,dynam:308,eam:[13,416],echo:209,edip:417,eff:[9,13,106,107,162,164,169,256,272,284,295,341,418],efield:237,ehex:238,eim:419,elastic:6,emac:13,energi:[135,414],enforce2d:239,ensembl:7,erot:[90,91,92,93],error:[3,134],evapor:243,event:94,exampl:[4,6,11,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,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,330,331,332,333,334,335,336,337,338,339,340,341,342,343,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,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,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,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,510,511,512,513,514,515,516,517,520,521,522,523,524,525,526,527,528,529],exp6:420,exp:[26,187],expand:[46,434],extend:[8,11],extern:244,fcc:298,fdt:414,featur:[7,8,524],fene:[45,46],fep:[9,13,95,212],field:[6,7],file:6,finit:6,fire:308,fix:[2,6,8,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,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,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,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,524],fix_modifi:[211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,229,230,231,232,233,235,236,237,238,239,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,301,302,303,304,305,306,307,308,309,310,311,313,314,315,316,317,319,320,321,323,324,325,326,327,328,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,349,350,351,352,353,354,355,356,357],flow:6,fluid:257,flux:[99,154],forc:[6,7,154,336],fourier:[29,30,188,366],freez:245,from:[6,11],futur:5,gauss:421,gaybern:422,gcmc:246,gener:[1,6,7,13],get:12,github:519,gld:247,gle:248,global:6,gpu:[9,14,397,400,402,404,405,407,409,412,413,416,421,422,424,431,432,433,434,447,449,460,461,468,477,478,480,481,482,487,488,489],gran:[353,423],granular:[6,9],graviti:249,gromac:424,group2ndx:359,group:[96,358,524],gyrat:[97,98],h5md:[9,203,205],harmon:[31,47,48,49,189,192,352,367,452],hbond:425,heat:[99,154,250],heatconduct:469,helix:190,hertz:[423,462],hexord:100,histo:222,histori:[5,423],hook:423,hourglass:134,how:6,hybrid:[32,50,191,368,426],idealga:470,imag:[203,206],imd:251,implicit:404,improp:[8,101,102],improper_coeff:362,improper_styl:[2,361,363,364,365,366,367,368,369,370,371,372,373],includ:374,inclus:8,indent:252,indice:0,individu:2,induc:6,inertia:103,info:[0,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,229,230,231,232,233,235,236,237,238,239,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,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,301,302,303,304,305,306,307,308,309,310,311,313,314,315,316,317,319,320,321,323,324,325,326,327,328,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,349,350,351,352,353,354,355,356,357,375],input:[2,6,8],install:11,integr:6,integrat:7,integrate_tlsph:325,integrate_ulsph:326,intel:[9,15,19,31,45,47,184,189,195,271,280,281,294,364,367,402,404,422,431,477,480],interfac:[6,11],intern:135,introduct:7,invers:235,ipi:253,ipp:13,jump:376,kate:13,keyword:524,kim:[9,427],kokkos:[9,16],kspace:[2,8,9,348],kspace_modifi:377,kspace_styl:[6,378],label:379,lammps:[0,1,2,6,7,8,11,12,518,519],langevin:[254,255,256],lattic:380,lcbop:428,lennard:442,librari:[6,11,12],limit:285,line:[12,286,429],linear:[438,449],lineforc:262,list:[2,430],lj1043:352,lj126:352,lj93:352,lj96:432,lmp2arc:13,lmp2cfg:13,lmp2vmd:13,local:[6,68,71,73,84,102,119,126,129],log:381,lowercas:4,lubric:440,lubricateu:441,luci:[450,451],make:12,manifold:[9,287,293,382],manifoldforc:263,manybody:9,mass:383,math:524,matlab:13,mdf:442,meam:[9,443,444,445],measur:1,mesh:146,meso:[109,110,111,264,265],messag:3,mgpt:[9,446],micelle2d:13,mie:447,min_modifi:384,min_styl:385,minim:[8,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,229,230,231,232,233,235,236,237,238,239,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,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,301,302,303,304,305,306,307,308,309,310,311,313,314,315,316,317,319,320,321,323,324,325,326,327,328,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,349,350,351,352,353,354,355,356,357,386],misc:9,mod:[347,481],model:[6,7],modifi:8,mol:154,molecul:387,molecule:9,molfil:[203,208],molfile:9,moltempl:13,momentum:[258,267],morri:474,mors:[51,395,425,449],move:268,move_tri_surf:327,movi:[203,206],mpi:11,mpiio:9,msd:[113,114,115],msi2lmp:13,msm:[400,402,404,409,431],msst:269,multi:[6,7,192,450,451],multipl:6,nb3b:452,ndx2group:359,neb:[270,388],neigh:[141,147],neigh_modifi:389,neighbor:390,nemd:6,newton:391,next:392,nharmon:193,noforc:[282,288],non:[6,7],none:[33,52,194,369,454],nongauss:115,nonlinear:53,nph:[271,272,273,274,275,317],nphug:276,npt:[271,272,277,278,279,317],num:[141,147],numer:524,nve:[280,281,282,283,284,285,286,287,288,289,290,317],nvt:[271,272,291,292,293,294,295,296,317],omega:116,omp:[9,17,19,20,22,23,24,25,26,27,28,29,30,31,34,37,43,45,46,47,48,49,51,53,54,56,184,185,187,188,189,190,192,193,195,196,199,249,271,273,275,276,277,279,280,289,291,294,296,309,361,363,364,366,367,370,372,394,395,397,400,401,402,403,404,405,407,408,409,410,412,413,416,419,421,422,423,424,425,426,431,432,433,434,435,436,437,438,439,440,444,445,449,452,453,455,460,461,468,477,478,480,481,482,483,485,487,488,489],onewai:297,open:7,operat:524,opl:195,opt:[9,18,404,416,431,435,449],optim:1,option:[6,8,12],orient:298,orientord:117,orthogon:6,oscil:518,other:6,output:[6,7,8,12,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,229,230,231,232,233,235,236,237,238,239,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,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,301,302,303,304,305,306,307,308,309,310,311,313,314,315,316,317,319,320,321,323,324,325,326,327,328,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,349,350,351,352,353,354,355,356,357],overlai:426,overview:11,packag:[1,9,12,14,15,16,17,18,393],pair:[6,118,119],pair_coeff:406,pair_modifi:448,pair_styl:[2,394,395,396,397,398,399,400,401,402,403,404,405,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,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,487,488,489,490],pair_writ:486,pairwis:8,parallel:11,paramet:6,pars:2,partial:165,particl:[6,7,42],partit:491,past:5,per:6,perform:[1,10],peri:[9,455],period:24,phonon:[9,13,299],pimd:300,piston:354,planeforc:301,plastic:[122,136,137],pmb:455,poem:302,poems:9,point:308,polariz:6,poli:[401,440,441],polym:13,polymorph:456,post:7,potenti:[2,6,8],pour:303,pppm:6,prd:492,pre:7,press:304,pressur:123,previou:12,print:[305,493],problem:[3,4],process:[6,7],processor:494,profil:166,properti:[6,124,125,126,306],pymol_aspher:13,python:[9,11,13,495],qbmsst:307,qeq:[9,308,309,310],qmmm:[9,311],qtb:[9,312],quadrat:196,quantiti:6,quartic:[34,54],quip:[9,457],quit:496,radiu:132,ramp:167,rate:[137,144,149],rattl:[287,293,321],rdf:127,read_data:497,read_dump:498,read_restart:499,reax:[9,13,310,313,314,458,459],reaxc:9,rebo:395,recent:315,reduc:128,refer:524,reflect:355,region:[8,128,168,169,356,500,524],relat:[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,40,41,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,91,92,93,94,95,97,99,100,101,102,103,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,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,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,201,202,203,204,205,206,207,208,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,240,241,242,243,245,246,247,248,249,250,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,301,302,303,304,305,306,307,308,309,310,312,313,314,315,317,318,319,320,322,323,324,325,326,327,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,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,374,375,376,377,378,380,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,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,502,503,504,505,506,507,509,510,511,512,513,514,515,516,517,520,521,522,524,525,526,527,528,529],relax:229,replic:501,replica:[6,7,9],report:3,requir:12,rerun:502,rescal:[340,341],reset:236,reset_timestep:503,resquar:460,restart2data:13,restart:[6,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,229,230,231,232,233,235,236,237,238,239,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,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,301,302,303,304,305,306,307,308,309,310,311,313,314,315,316,317,319,320,321,323,324,325,326,327,328,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,349,350,351,352,353,354,355,356,357,504],restrain:316,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,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,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,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,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,520,521,522,523,524,525,526,527,528,529],rho:[110,138],rhosum:472,rigid:[6,9,91,108,129,260,317],ring:370,rotat:170,rule:2,run:[6,11,12,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,229,230,231,232,233,235,236,237,238,239,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,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,301,302,303,304,305,306,307,308,309,310,311,313,314,315,316,317,319,320,321,323,324,325,326,327,328,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,349,350,351,352,353,354,355,356,357,505],run_styl:506,scalabl:10,scalar:6,screen:12,script:[2,6,8,11],sdk:[35,461],self:334,serial:11,set:[6,507],setforc:320,setvel:328,shake:321,shape:142,shardlow:322,share:[11,12],shell:[6,508],shield:308,shift:[25,26,48,49,187],shock:9,simpl:30,simul:6,size:6,slater:308,slice:131,sllod:[294,295],small:317,smd:[9,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,323,324,325,326,327,328,330,462,463,464,465],smooth:[437,438,449],smtbq:[9,466],sna:152,snad:152,snap:[9,467],snapshot:6,snav:152,soft:[439,449,468],solver:2,sourc:7,spc:6,speci:314,special:[7,524],special_bond:509,sph:[9,469,470,471,472,473,474],sphere:[92,93,171,260,275,279,289,296],spheric:[6,197],spline:[444,445],spring:[331,332,333,334,345],squar:27,srd:[9,335,357],srp:475,standard:9,start:[12,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,229,230,231,232,233,235,236,237,238,239,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,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,301,302,303,304,305,306,307,308,309,310,311,313,314,315,316,317,319,320,321,323,324,325,326,327,328,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,349,350,351,352,353,354,355,356,357],state:337,stationari:265,stop:[211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,229,230,231,232,233,235,236,237,238,239,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,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,301,302,303,304,305,306,307,308,309,310,311,313,314,315,316,317,319,320,321,323,324,325,326,327,328,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,349,350,351,352,353,354,355,356,357],store:[336,337],strain:[136,137,143,144,148,149],strategi:1,streitz:409,stress:[145,150,153,154],structur:2,style:[1,2,6,8],submit:8,suffix:510,summari:6,surfacs:382,swap:[217,228],syntax:[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,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,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,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,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,520,521,522,523,524,525,526,527,528,529],system:6,tabl:[0,6,37,56,199,241,242,478,479,480],tad:511,taitwat:[473,474],talli:154,tally:9,temp:[155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,338,339,340,341],temper:512,temperatur:6,tersoff:[480,481,482],test:11,tfmc:342,thermal:[6,343,518],thermo:[6,513,524],thermo_modifi:514,thermo_styl:515,thermodynam:[6,8],thermostat:6,thole:483,time:[6,223],timer:516,timestep:517,tip3p:6,tip4p:[6,409,431,435,439],tip:12,tlsph:[139,140,141,142,143,144,145,463],tmd:346,tool:[12,13],torqu:173,transform:235,tri:[290,484],tri_surfac:464,triangl:146,triclin:6,tstat:413,ttm:347,tune:348,tutori:[518,519],type:7,ulsph:[147,148,149,150,465],umbrella:372,uncomput:520,undump:521,unfix:522,unit:523,uppercas:4,user:[9,12,15,17],using:[6,11],vacf:174,valu:[6,524],variabl:[6,8,524],variou:1,vashishta:485,vcm:175,vector:[6,349,524],veloc:525,version:[0,5,12],vertic:146,via:12,vim:13,viscos:[6,350],viscou:[261,351],visual:6,vol:151,voronoi:[9,176],vtk:[9,203,204,319],wall:[6,352,353,354,355,356,357],wall_surfac:330,warn:3,water:6,weight:222,what:[7,12],wolf:[400,409],wrapper:11,write:6,write_coeff:526,write_data:527,write_dump:528,write_restart:529,xmgrace:13,xmovi:13,xrd:177,yukawa:[487,488],zbl:[482,489],zero:[38,58,200,373,490]}}) \ No newline at end of file diff --git a/doc/html/thermo_style.html b/doc/html/thermo_style.html index 6bbcc98b4..c76cf8115 100644 --- a/doc/html/thermo_style.html +++ b/doc/html/thermo_style.html @@ -1,530 +1,561 @@ <!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>thermo_style command — LAMMPS documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & 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>thermo_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="thermo-style-command"> <span id="index-0"></span><h1>thermo_style command</h1> <div class="section" id="syntax"> <h2>Syntax</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">thermo_style</span> <span class="n">style</span> <span class="n">args</span> </pre></div> </div> <ul class="simple"> <li>style = <em>one</em> or <em>multi</em> or <em>custom</em></li> <li>args = list of arguments for a particular style</li> </ul> <pre class="literal-block"> <em>one</em> args = none <em>multi</em> args = none <em>custom</em> args = list of keywords possible keywords = step, elapsed, elaplong, dt, time, cpu, tpcpu, spcpu, cpuremain, part, timeremain, atoms, temp, press, pe, ke, etotal, enthalpy, evdwl, ecoul, epair, ebond, eangle, edihed, eimp, emol, elong, etail, vol, density, lx, ly, lz, xlo, xhi, ylo, yhi, zlo, zhi, xy, xz, yz, xlat, ylat, zlat, bonds, angles, dihedrals, impropers, pxx, pyy, pzz, pxy, pxz, pyz, fmax, fnorm, nbuild, ndanger, cella, cellb, cellc, cellalpha, cellbeta, cellgamma, c_ID, c_ID[I], c_ID[I][J], f_ID, f_ID[I], f_ID[I][J], v_name, v_name[I] step = timestep elapsed = timesteps since start of this run elaplong = timesteps since start of initial run in a series of runs dt = timestep size time = simulation time cpu = elapsed CPU time in seconds tpcpu = time per CPU second spcpu = timesteps per CPU second cpuremain = estimated CPU time remaining in run part = which partition (0 to Npartition-1) this is timeremain = remaining time in seconds on timer timeout. atoms = # of atoms temp = temperature press = pressure pe = total potential energy ke = kinetic energy etotal = total energy (pe + ke) enthalpy = enthalpy (etotal + press*vol) evdwl = VanderWaal pairwise energy (includes etail) ecoul = Coulombic pairwise energy epair = pairwise energy (evdwl + ecoul + elong) ebond = bond energy eangle = angle energy edihed = dihedral energy eimp = improper energy emol = molecular energy (ebond + eangle + edihed + eimp) elong = long-range kspace energy etail = VanderWaal energy long-range tail correction vol = volume density = mass density of system lx,ly,lz = box lengths in x,y,z xlo,xhi,ylo,yhi,zlo,zhi = box boundaries xy,xz,yz = box tilt for triclinic (non-orthogonal) simulation boxes xlat,ylat,zlat = lattice spacings as calculated by <a class="reference internal" href="lattice.html"><span class="doc">lattice</span></a> command bonds,angles,dihedrals,impropers = # of these interactions defined pxx,pyy,pzz,pxy,pxz,pyz = 6 components of pressure tensor fmax = max component of force on any atom in any dimension fnorm = length of force vector for all atoms nbuild = # of neighbor list builds ndanger = # of dangerous neighbor list builds cella,cellb,cellc = periodic cell lattice constants a,b,c cellalpha, cellbeta, cellgamma = periodic cell angles alpha,beta,gamma c_ID = global scalar value calculated by a compute with ID - c_ID[I] = Ith component of global vector calculated by a compute with ID + c_ID[I] = Ith component of global vector calculated by a compute with ID, I can include wildcard (see below) c_ID[I][J] = I,J component of global array calculated by a compute with ID f_ID = global scalar value calculated by a fix with ID - f_ID[I] = Ith component of global vector calculated by a fix with ID + f_ID[I] = Ith component of global vector calculated by a fix with ID, I can include wildcard (see below) f_ID[I][J] = I,J component of global array calculated by a fix with ID v_name = value calculated by an equal-style variable with name v_name[I] = value calculated by a vector-style variable with name </pre> </div> <div class="section" id="examples"> <h2>Examples</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">thermo_style</span> <span class="n">multi</span> <span class="n">thermo_style</span> <span class="n">custom</span> <span class="n">step</span> <span class="n">temp</span> <span class="n">pe</span> <span class="n">etotal</span> <span class="n">press</span> <span class="n">vol</span> <span class="n">thermo_style</span> <span class="n">custom</span> <span class="n">step</span> <span class="n">temp</span> <span class="n">etotal</span> <span class="n">c_myTemp</span> <span class="n">v_abc</span> +<span class="n">thermo_style</span> <span class="n">custom</span> <span class="n">step</span> <span class="n">temp</span> <span class="n">etotal</span> <span class="n">c_myTemp</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> <span class="n">v_abc</span> </pre></div> </div> </div> <div class="section" id="description"> <h2>Description</h2> <p>Set the style and content for printing thermodynamic data to the screen and log file.</p> <p>Style <em>one</em> prints a one-line summary of thermodynamic info that is the equivalent of “thermo_style custom step temp epair emol etotal press”. The line contains only numeric values.</p> <p>Style <em>multi</em> prints a multiple-line listing of thermodynamic info that is the equivalent of “thermo_style custom etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press”. The listing contains numeric values and a string ID for each quantity.</p> <p>Style <em>custom</em> is the most general setting and allows you to specify which of the keywords listed above you want printed on each thermodynamic timestep. Note that the keywords c_ID, f_ID, v_name are references to <a class="reference internal" href="compute.html"><span class="doc">computes</span></a>, <a class="reference internal" href="fix.html"><span class="doc">fixes</span></a>, and equal-style <a class="reference external" href="variable.html"">variables</a> that have been defined elsewhere in the input script or can even be new styles which users have added to LAMMPS (see the <a class="reference internal" href="Section_modify.html"><span class="doc">Section_modify</span></a> section of the documentation). Thus the <em>custom</em> style provides a flexible means of outputting essentially any desired quantity as a simulation proceeds.</p> <p>All styles except <em>custom</em> have <em>vol</em> appended to their list of outputs if the simulation box volume changes during the simulation.</p> <p>The values printed by the various keywords are instantaneous values, calculated on the current timestep. Time-averaged quantities, which include values from previous timesteps, can be output by using the f_ID keyword and accessing a fix that does time-averaging such as the <a class="reference internal" href="fix_ave_time.html"><span class="doc">fix ave/time</span></a> command.</p> <p>Options invoked by the <a class="reference internal" href="thermo_modify.html"><span class="doc">thermo_modify</span></a> command can be used to set the one- or multi-line format of the print-out, the normalization of thermodynamic output (total values versus per-atom values for extensive quantities (ones which scale with the number of atoms in the system), and the numeric precision of each printed value.</p> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">When you use a “thermo_style” command, all thermodynamic settings are restored to their default values, including those previously set by a <a class="reference internal" href="thermo_modify.html"><span class="doc">thermo_modify</span></a> command. Thus if your input script specifies a thermo_style command, you should use the thermo_modify command after it.</p> </div> <hr class="docutils" /> +<p>Note that for values from a compute or fix, the bracketed index I used +to index a vector, as in <em>c_ID[I]</em> or <em>f_ID[I]</em>, can be specified +using a wildcard asterisk with the index to effectively specify +multiple values. This takes the form “*” or “<em>n” or “n</em>” or “m*n”. +If N = the size of the vector (for <em>mode</em> = scalar) or the number of +columns in the array (for <em>mode</em> = vector), then an asterisk with no +numeric values means all indices from 1 to N. A leading asterisk +means all indices from 1 to n (inclusive). A trailing asterisk means +all indices from n to N (inclusive). A middle asterisk means all +indices from m to n (inclusive).</p> +<p>Using a wildcard is the same as if the individual elements of the +vector had been listed one by one. E.g. these 2 thermo_style commands +are equivalent, since the <a class="reference internal" href="compute_temp.html"><span class="doc">compute temp</span></a> command +creates a global vector with 6 values.</p> +<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">myTemp</span> <span class="nb">all</span> <span class="n">temp</span> +<span class="n">thermo_style</span> <span class="n">custom</span> <span class="n">step</span> <span class="n">temp</span> <span class="n">etotal</span> <span class="n">c_myTemp</span><span class="p">[</span><span class="o">*</span><span class="p">]</span> +<span class="n">thermo_style</span> <span class="n">custom</span> <span class="n">step</span> <span class="n">temp</span> <span class="n">etotal</span> <span class="o">&</span> + <span class="n">c_myTemp</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_myTemp</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">c_myTemp</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">&</span> + <span class="n">c_myTemp</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="n">c_myTemp</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="n">c_myTemp</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span> +</pre></div> +</div> +<hr class="docutils" /> <p>Several of the thermodynamic quantities require a temperature to be computed: “temp”, “press”, “ke”, “etotal”, “enthalpy”, “pxx”, etc. By default this is done by using a <em>temperature</em> compute which is created when LAMMPS starts up, as if this command had been issued:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">thermo_temp</span> <span class="nb">all</span> <span class="n">temp</span> </pre></div> </div> <p>See the <a class="reference internal" href="compute_temp.html"><span class="doc">compute temp</span></a> command for details. Note that the ID of this compute is <em>thermo_temp</em> and the group is <em>all</em>. You can change the attributes of this temperature (e.g. its degrees-of-freedom) via the <a class="reference internal" href="compute_modify.html"><span class="doc">compute_modify</span></a> command. Alternatively, you can directly assign a new compute (that calculates temperature) which you have defined, to be used for calculating any thermodynamic quantity that requires a temperature. This is done via the <a class="reference internal" href="thermo_modify.html"><span class="doc">thermo_modify</span></a> command.</p> <p>Several of the thermodynamic quantities require a pressure to be computed: “press”, “enthalpy”, “pxx”, etc. By default this is done by using a <em>pressure</em> compute which is created when LAMMPS starts up, as if this command had been issued:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">thermo_press</span> <span class="nb">all</span> <span class="n">pressure</span> <span class="n">thermo_temp</span> </pre></div> </div> <p>See the <a class="reference internal" href="compute_pressure.html"><span class="doc">compute pressure</span></a> command for details. Note that the ID of this compute is <em>thermo_press</em> and the group is <em>all</em>. You can change the attributes of this pressure via the <a class="reference internal" href="compute_modify.html"><span class="doc">compute_modify</span></a> command. Alternatively, you can directly assign a new compute (that calculates pressure) which you have defined, to be used for calculating any thermodynamic quantity that requires a pressure. This is done via the <a class="reference internal" href="thermo_modify.html"><span class="doc">thermo_modify</span></a> command.</p> <p>Several of the thermodynamic quantities require a potential energy to be computed: “pe”, “etotal”, “ebond”, etc. This is done by using a <em>pe</em> compute which is created when LAMMPS starts up, as if this command had been issued:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">thermo_pe</span> <span class="nb">all</span> <span class="n">pe</span> </pre></div> </div> <p>See the <a class="reference internal" href="compute_pe.html"><span class="doc">compute pe</span></a> command for details. Note that the ID of this compute is <em>thermo_pe</em> and the group is <em>all</em>. You can change the attributes of this potential energy via the <a class="reference internal" href="compute_modify.html"><span class="doc">compute_modify</span></a> command.</p> <hr class="docutils" /> <p>The kinetic energy of the system <em>ke</em> is inferred from the temperature of the system with 1/2 Kb T of energy for each degree of freedom. Thus, using different <a class="reference internal" href="compute.html"><span class="doc">compute commands</span></a> for calculating temperature, via the <a class="reference internal" href="thermo_modify.html"><span class="doc">thermo_modify temp</span></a> command, may yield different kinetic energies, since different computes that calculate temperature can subtract out different non-thermal components of velocity and/or include different degrees of freedom (translational, rotational, etc).</p> <p>The potential energy of the system <em>pe</em> will include contributions from fixes if the <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify thermo</span></a> option is set for a fix that calculates such a contribution. For example, the <a class="reference internal" href="fix_wall.html"><span class="doc">fix wall/lj93</span></a> fix calculates the energy of atoms interacting with the wall. See the doc pages for “individual fixes” to see which ones contribute.</p> <p>A long-range tail correction <em>etail</em> for the VanderWaal pairwise energy will be non-zero only if the <a class="reference internal" href="pair_modify.html"><span class="doc">pair_modify tail</span></a> option is turned on. The <em>etail</em> contribution is included in <em>evdwl</em>, <em>epair</em>, <em>pe</em>, and <em>etotal</em>, and the corresponding tail correction to the pressure is included in <em>press</em> and <em>pxx</em>, <em>pyy</em>, etc.</p> <hr class="docutils" /> <p>The <em>step</em>, <em>elapsed</em>, and <em>elaplong</em> keywords refer to timestep count. <em>Step</em> is the current timestep, or iteration count when a <a class="reference internal" href="minimize.html"><span class="doc">minimization</span></a> is being performed. <em>Elapsed</em> is the number of timesteps elapsed since the beginning of this run. <em>Elaplong</em> is the number of timesteps elapsed since the beginning of an initial run in a series of runs. See the <em>start</em> and <em>stop</em> keywords for the <a class="reference internal" href="run.html"><span class="doc">run</span></a> for info on how to invoke a series of runs that keep track of an initial starting time. If these keywords are not used, then <em>elapsed</em> and <em>elaplong</em> are the same value.</p> <p>The <em>dt</em> keyword is the current timestep size in time <a class="reference internal" href="units.html"><span class="doc">units</span></a>. The <em>time</em> keyword is the current elapsed simulation time, also in time <a class="reference internal" href="units.html"><span class="doc">units</span></a>, which is simply (step*dt) if the timestep size has not changed and the timestep has not been reset. If the timestep has changed (e.g. via <a class="reference internal" href="fix_dt_reset.html"><span class="doc">fix dt/reset</span></a>) or the timestep has been reset (e.g. via the “reset_timestep” command), then the simulation time is effectively a cummulative value up to the current point.</p> <p>The <em>cpu</em> keyword is elapsed CPU seconds since the beginning of this run. The <em>tpcpu</em> and <em>spcpu</em> keywords are measures of how fast your simulation is currently running. The <em>tpcpu</em> keyword is simulation time per CPU second, where simulation time is in time <a class="reference internal" href="units.html"><span class="doc">units</span></a>. E.g. for metal units, the <em>tpcpu</em> value would be picoseconds per CPU second. The <em>spcpu</em> keyword is the number of timesteps per CPU second. Both quantities are on-the-fly metrics, measured relative to the last time they were invoked. Thus if you are printing out thermodyamic output every 100 timesteps, the two keywords will continually output the time and timestep rate for the last 100 steps. The <em>tpcpu</em> keyword does not attempt to track any changes in timestep size, e.g. due to using the <a class="reference internal" href="fix_dt_reset.html"><span class="doc">fix dt/reset</span></a> command.</p> <p>The <em>cpuremain</em> keyword estimates the CPU time remaining in the current run, based on the time elapsed thus far. It will only be a good estimate if the CPU time/timestep for the rest of the run is similar to the preceding timesteps. On the initial timestep the value will be 0.0 since there is no history to estimate from. For a minimization run performed by the “minimize” command, the estimate is based on the <em>maxiter</em> parameter, assuming the minimization will proceed for the maximum number of allowed iterations.</p> <p>The <em>part</em> keyword is useful for multi-replica or multi-partition simulations to indicate which partition this output and this file corresponds to, or for use in a <a class="reference internal" href="variable.html"><span class="doc">variable</span></a> to append to a filename for output specific to this partition. See <a class="reference internal" href="Section_start.html#start-7"><span class="std std-ref">Section_start 7</span></a> of the manual for details on running in multi-partition mode.</p> <p>The <em>timeremain</em> keyword returns the remaining seconds when a timeout has been configured via the <a class="reference internal" href="timer.html"><span class="doc">timer timeout</span></a> command. If the timeout timer is inactive, the value of this keyword is 0.0 and if the timer is expired, it is negative. This allows for example to exit loops cleanly, if the timeout is expired with:</p> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="s2">"$(timeremain) < 0.0"</span> <span class="n">then</span> <span class="s2">"quit 0"</span> </pre></div> </div> <p>The <em>fmax</em> and <em>fnorm</em> keywords are useful for monitoring the progress of an <a class="reference internal" href="minimize.html"><span class="doc">energy minimization</span></a>. The <em>fmax</em> keyword calculates the maximum force in any dimension on any atom in the system, or the infinity-norm of the force vector for the system. The <em>fnorm</em> keyword calculates the 2-norm or length of the force vector.</p> <p>The <em>nbuild</em> and <em>ndanger</em> keywords are useful for monitoring neighbor list builds during a run. Note that both these values are also printed with the end-of-run statistics. The <em>nbuild</em> keyword is the number of re-builds during the current run. The <em>ndanger</em> keyword is the number of re-builds that LAMMPS considered potentially “dangerous”. If atom movement triggered neighbor list rebuilding (see the <a class="reference internal" href="neigh_modify.html"><span class="doc">neigh_modify</span></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>The keywords <em>cella</em>, <em>cellb</em>, <em>cellc</em>, <em>cellalpha</em>, <em>cellbeta</em>, <em>cellgamma</em>, correspond to the usual crystallographic quantities that define the periodic unit cell of a crystal. See <a class="reference internal" href="Section_howto.html#howto-12"><span class="std std-ref">this section</span></a> of the doc pages for a geometric description of triclinic periodic cells, including a precise defintion of these quantities in terms of the internal LAMMPS cell dimensions <em>lx</em>, <em>ly</em>, <em>lz</em>, <em>yz</em>, <em>xz</em>, <em>xy</em>.</p> <hr class="docutils" /> <p>The <em>c_ID</em> and <em>c_ID[I]</em> and <em>c_ID[I][J]</em> keywords allow global values calculated by a compute to be output. As discussed on the <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> doc page, computes can calculate global, per-atom, or local values. Only global values can be referenced by -this command. However, per-atom compute values can be referenced in a -<a class="reference internal" href="variable.html"><span class="doc">variable</span></a> and the variable referenced by thermo_style -custom, as discussed below.</p> +this command. However, per-atom compute values for an individual atom +can be referenced in a <a class="reference internal" href="variable.html"><span class="doc">variable</span></a> and the variable +referenced by thermo_style custom, as discussed below. See the +discussion above for how the I in <em>c_ID[I]</em> can be specified with a +wildcard asterisk to effectively specify multiple values from a global +compute vector.</p> <p>The ID in the keyword should be replaced by the actual ID of a compute that has been defined elsewhere in the input script. See the <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> command for details. If the compute calculates a global scalar, vector, or array, then the keyword formats with 0, 1, or 2 brackets will reference a scalar value from the compute.</p> <p>Note that some computes calculate “intensive” global quantities like temperature; others calculate “extensive” global quantities like kinetic energy that are summed over all atoms in the compute group. Intensive quantities are printed directly without normalization by thermo_style custom. Extensive quantities may be normalized by the total number of atoms in the simulation (NOT the number of atoms in the compute group) when output, depending on the <a class="reference internal" href="thermo_modify.html"><span class="doc">thermo_modify norm</span></a> option being used.</p> <p>The <em>f_ID</em> and <em>f_ID[I]</em> and <em>f_ID[I][J]</em> keywords allow global values calculated by a fix to be output. As discussed on the <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> doc page, fixes can calculate global, per-atom, or local values. Only global values can be referenced by this command. -However, per-atom fix values can be referenced in a -<a class="reference internal" href="variable.html"><span class="doc">variable</span></a> and the variable referenced by thermo_style -custom, as discussed below.</p> +However, per-atom fix values can be referenced for an individual atom +in a <a class="reference internal" href="variable.html"><span class="doc">variable</span></a> and the variable referenced by +thermo_style custom, as discussed below. See the discussion above for +how the I in <em>f_ID[I]</em> can be specified with a wildcard asterisk to +effectively specify multiple values from a global fix vector.</p> <p>The ID in the keyword should be replaced by the actual ID of a fix that has been defined elsewhere in the input script. See the <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> command for details. If the fix calculates a global scalar, vector, or array, then the keyword formats with 0, 1, or 2 brackets will reference a scalar value from the fix.</p> <p>Note that some fixes calculate “intensive” global quantities like timestep size; others calculate “extensive” global quantities like energy that are summed over all atoms in the fix group. Intensive quantities are printed directly without normalization by thermo_style custom. Extensive quantities may be normalized by the total number of atoms in the simulation (NOT the number of atoms in the fix group) when output, depending on the <a class="reference internal" href="thermo_modify.html"><span class="doc">thermo_modify norm</span></a> option being used.</p> <p>The <em>v_name</em> keyword allow the current value of a variable to be output. The name in the keyword should be replaced by the variable name that has been defined elsewhere in the input script. Only equal-style and vector-style variables can be referenced; the latter requires a bracketed term to specify the Ith element of the vector -calculated by the variable. See the <a class="reference internal" href="variable.html"><span class="doc">variable</span></a> command -for details. Variables of style <em>equal</em> and <em>vector</em> define a formula -which can reference per-atom properties or thermodynamic keywords, or -they can invoke other computes, fixes, or variables when evaluated, so -this is a very general means of creating thermodynamic output.</p> +calculated by the variable. However, an atom-style variable can be +referenced for an individual atom by an equal-style variable and that +variable referenced. See the <a class="reference internal" href="variable.html"><span class="doc">variable</span></a> command for +details. Variables of style <em>equal</em> and <em>vector</em> and <em>atom</em> define a +formula which can reference per-atom properties or thermodynamic +keywords, or they can invoke other computes, fixes, or variables when +evaluated, so this is a very general means of creating thermodynamic +output.</p> <p>Note that equal-style and vector-style variables are assumed to produce “intensive” global quantities, which are thus printed as-is, without normalization by thermo_style custom. You can include a division by “natoms” in the variable formula if this is not the case.</p> </div> <hr class="docutils" /> <div class="section" id="restrictions"> <h2>Restrictions</h2> <p>This command must come after the simulation box is defined by a <a class="reference internal" href="read_data.html"><span class="doc">read_data</span></a>, <a class="reference internal" href="read_restart.html"><span class="doc">read_restart</span></a>, or <a class="reference internal" href="create_box.html"><span class="doc">create_box</span></a> command.</p> </div> <div class="section" id="related-commands"> <h2>Related commands</h2> <p><a class="reference internal" href="thermo.html"><span class="doc">thermo</span></a>, <a class="reference internal" href="thermo_modify.html"><span class="doc">thermo_modify</span></a>, <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></a>, <a class="reference internal" href="compute_temp.html"><span class="doc">compute temp</span></a>, <a class="reference internal" href="compute_pressure.html"><span class="doc">compute pressure</span></a></p> </div> <div class="section" id="default"> <h2>Default</h2> <div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">thermo_style</span> <span class="n">one</span> </pre></div> </div> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright 2013 Sandia Corporation. </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt index ae09f79b4..999f8cd00 100644 --- a/doc/src/Manual.txt +++ b/doc/src/Manual.txt @@ -1,318 +1,318 @@ <!-- HTML_ONLY --> <HEAD> <TITLE>LAMMPS-ICMS Users Manual</TITLE> -<META NAME="docnumber" CONTENT="30 Jul 2016 version"> +<META NAME="docnumber" CONTENT="1 Aug 2016 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-ICMS 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 -30 Jul 2016 version :c,h4 +1 Aug 2016 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: 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` * :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 "GPU package"_accelerate_gpu.html :ulb,b 5.3.2 "USER-INTEL package"_accelerate_intel.html :b 5.3.3 "KOKKOS package"_accelerate_kokkos.html :b 5.3.4 "USER-OMP package"_accelerate_omp.html :b 5.3.5 "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/src/compute_reduce.txt b/doc/src/compute_reduce.txt index d3783f6ae..4ff1bd304 100644 --- a/doc/src/compute_reduce.txt +++ b/doc/src/compute_reduce.txt @@ -1,185 +1,212 @@ "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) :link(lc,Section_commands.html#comm) :line compute reduce command :h3 compute reduce/region command :h3 [Syntax:] compute ID group-ID style arg mode input1 input2 ... keyword args ... :pre ID, group-ID are documented in "compute"_compute.html command :ulb,l style = {reduce} or {reduce/region} :l {reduce} arg = none {reduce/region} arg = region-ID region-ID = ID of region to use for choosing atoms :pre mode = {sum} or {min} or {max} or {ave} or {sumsq} or {avesq} :l one or more inputs can be listed :l input = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :l x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component) c_ID = per-atom or local vector calculated by a compute with ID - c_ID\[I\] = Ith column of per-atom or local array calculated by a compute with ID + c_ID\[I\] = Ith column of per-atom or local array calculated by a compute with ID, I can include wildcard (see below) f_ID = per-atom or local vector calculated by a fix with ID - f_ID\[I\] = Ith column of per-atom or local array calculated by a fix with ID + f_ID\[I\] = Ith column of per-atom or local array calculated by a fix with ID, I can include wildcard (see below) v_name = per-atom vector calculated by an atom-style variable with name :pre zero or more keyword/args pairs may be appended :l keyword = {replace} :l {replace} args = vec1 vec2 vec1 = reduced value from this input vector will be replaced vec2 = replace it with vec1\[N\] where N is index of max/min value from vec2 :pre :ule [Examples:] compute 1 all reduce sum c_force compute 1 all reduce/region subbox sum c_force compute 2 all reduce min c_press\[2\] f_ave v_myKE +compute 2 all reduce min c_press\[*\] f_ave v_myKE compute 3 fluid reduce max c_index\[1\] c_index\[2\] c_dist replace 1 3 replace 2 3 :pre [Description:] Define a calculation that "reduces" one or more vector inputs into scalar values, one per listed input. The inputs can be per-atom or local quantities; they cannot be global quantities. Atom attributes are per-atom quantities, "computes"_compute.html and "fixes"_fix.html may generate any of the three kinds of quantities, and "atom-style variables"_variable.html generate per-atom quantities. See the "variable"_variable.html command and its special functions which can perform the same operations as the compute reduce command on global vectors. The reduction operation is specified by the {mode} setting. The {sum} option adds the values in the vector into a global total. The {min} or {max} options find the minimum or maximum value across all vector values. The {ave} setting adds the vector values into a global total, then divides by the number of values in the vector. The {sumsq} option sums the square of the values in the vector into a global total. The {avesq} setting does the same as {sumsq}, then divdes the sum of squares by the number of values. The last two options can be useful for calculating the variance of some quantity, e.g. variance = sumsq - ave^2. Each listed input is operated on independently. For per-atom inputs, the group specified with this command means only atoms within the group contribute to the result. For per-atom inputs, if the compute reduce/region command is used, the atoms must also currently be within the region. Note that an input that produces per-atom quantities may define its own group which affects the quantities it returns. For example, if a compute is used as an input which generates a per-atom vector, it will generate values of 0.0 for atoms that are not in the group specified for that compute. Each listed input can be an atom attribute (position, velocity, force component) or can be the result of a "compute"_compute.html or "fix"_fix.html or the evaluation of an atom-style "variable"_variable.html. +Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form "*" or "*n" or "n*" or +"m*n". If N = the size of the vector (for {mode} = scalar) or the +number of columns in the array (for {mode} = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive). + +Using a wildcard is the same as if the individual columns of the array +had been listed one by one. E.g. these 2 compute reduce commands are +equivalent, since the "compute stress/atom"_compute_stress/atom.html +command creates a per-atom array with 6 columns: + +compute myPress all stress/atom NULL +compute 2 all reduce min myPress\[*\] +compute 2 all reduce min myPress\[1\] myPress\[2\] myPress\[3\] & + myPress\[4\] myPress\[5\] myPress\[6\] :pre + +:line + The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are self-explanatory. Note that other atom attributes can be used as inputs to this fix by using the "compute property/atom"_compute_property_atom.html command and then specifying an input value from that compute. If a value begins with "c_", a compute ID must follow which has been previously defined in the input script. Computes can generate per-atom or local quantities. See the individual "compute"_compute.html doc page for details. If no bracketed integer is appended, the vector calculated by the compute is used. If a bracketed integer is appended, the Ith column of the array calculated by the compute is used. Users can also write code for their own -compute styles and "add them to LAMMPS"_Section_modify.html. +compute styles and "add them to LAMMPS"_Section_modify.html. See the +discussion above for how I can be specified with a wildcard asterisk +to effectively specify multiple values. If a value begins with "f_", a fix ID must follow which has been previously defined in the input script. Fixes can generate per-atom or local quantities. See the individual "fix"_fix.html doc page for details. Note that some fixes only produce their values on certain timesteps, which must be compatible with when compute reduce references the values, else an error results. If no bracketed integer is appended, the vector calculated by the fix is used. If a bracketed integer is appended, the Ith column of the array calculated by the fix is used. Users can also write code for their own fix style and "add -them to LAMMPS"_Section_modify.html. +them to LAMMPS"_Section_modify.html. See the discussion above for how +I can be specified with a wildcard asterisk to effectively specify +multiple values. If a value begins with "v_", a variable name must follow which has been previously defined in the input script. It must be an "atom-style variable"_variable.html. Atom-style variables can reference thermodynamic keywords and various per-atom attributes, or invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of generating per-atom quantities to reduce. :line If the {replace} keyword is used, two indices {vec1} and {vec2} are specified, where each index ranges from 1 to the # of input values. The replace keyword can only be used if the {mode} is {min} or {max}. It works as follows. A min/max is computed as usual on the {vec2} input vector. The index N of that value within {vec2} is also stored. Then, instead of performing a min/max on the {vec1} input vector, the stored index is used to select the Nth element of the {vec1} vector. Thus, for example, if you wish to use this compute to find the bond with maximum stretch, you can do it as follows: compute 1 all property/local batom1 batom2 compute 2 all bond/local dist compute 3 all reduce max c_1\[1\] c_1\[2\] c_2 replace 1 3 replace 2 3 thermo_style custom step temp c_3\[1\] c_3\[2\] c_3\[3\] :pre The first two input values in the compute reduce command are vectors with the IDs of the 2 atoms in each bond, using the "compute property/local"_compute_property_local.html command. The last input value is bond distance, using the "compute bond/local"_compute_bond_local.html command. Instead of taking the max of the two atom ID vectors, which does not yield useful information in this context, the {replace} keywords will extract the atom IDs for the two atoms in the bond of maximum stretch. These atom IDs and the bond stretch will be printed with thermodynamic output. :line If a single input is specified this compute produces a global scalar value. If multiple inputs are specified, this compute produces a global vector of values, the length of which is equal to the number of inputs specified. As discussed below, for the {sum} and {sumsq} modes, the value(s) produced by this compute are all "extensive", meaning their value scales linearly with the number of atoms involved. If normalized values are desired, this compute can be accessed by the "thermo_style custom"_thermo_style.html command with "thermo_modify norm yes"_thermo_modify.html set as an option. Or it can be accessed by a "variable"_variable.html that divides by the appropriate atom count. :line [Output info:] This compute calculates a global scalar if a single input value is specified or a global vector of length N where N is the number of inputs, and which can be accessed by indices 1 to N. These values can be used by any command that uses global scalar or vector values from a compute as input. See "Section_howto 15"_Section_howto.html#howto_15 for an overview of LAMMPS output options. All the scalar or vector values calculated by this compute are "intensive", except when the {sum} or {sumsq} modes are used on per-atom or local vectors, in which case the calculated values are "extensive". The scalar or vector values will be in whatever "units"_units.html the quantities being reduced are in. [Restrictions:] none [Related commands:] "compute"_compute.html, "fix"_fix.html, "variable"_variable.html [Default:] none diff --git a/doc/src/dump.txt b/doc/src/dump.txt index a84e5aa53..32ac4120f 100644 --- a/doc/src/dump.txt +++ b/doc/src/dump.txt @@ -1,637 +1,670 @@ "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) :link(lc,Section_commands.html#comm) :line dump command :h3 "dump custom/vtk"_dump_custom_vtk.html command :h3 "dump h5md"_dump_h5md.html command :h3 "dump image"_dump_image.html command :h3 "dump movie"_dump_image.html command :h3 "dump molfile"_dump_molfile.html command :h3 [Syntax:] dump ID group-ID style N file args :pre ID = user-assigned name for the dump :ulb,l group-ID = ID of the group of atoms to be dumped :l style = {atom} or {atom/gz} or {atom/mpiio} or {cfg} or {cfg/gz} or {cfg/mpiio} or {dcd} or {xtc} or {xyz} or {xyz/gz} or {xyz/mpiio} or {h5md} or {image} or {movie} or {molfile} or {local} or {custom} or {custom/gz} or {custom/mpiio} :l N = dump every this many timesteps :l file = name of file to write dump info to :l args = list of arguments for a particular style :l {atom} args = none {atom/gz} args = none {atom/mpiio} args = none {cfg} args = same as {custom} args, see below {cfg/gz} args = same as {custom} args, see below {cfg/mpiio} args = same as {custom} args, see below {dcd} args = none {xtc} args = none {xyz} args = none :pre {xyz/gz} args = none :pre {xyz/mpiio} args = none :pre {custom/vtk} args = similar to custom args below, discussed on "dump custom/vtk"_dump_custom_vtk.html doc page :pre {h5md} args = discussed on "dump h5md"_dump_h5md.html doc page :pre {image} args = discussed on "dump image"_dump_image.html doc page :pre {movie} args = discussed on "dump image"_dump_image.html doc page :pre {molfile} args = discussed on "dump molfile"_dump_molfile.html doc page :pre {local} args = list of local attributes - possible attributes = index, c_ID, c_ID\[N\], f_ID, f_ID\[N\] + possible attributes = index, c_ID, c_ID\[I\], f_ID, f_ID\[I\] index = enumeration of local values c_ID = local vector calculated by a compute with ID - c_ID\[N\] = Nth column of local array calculated by a compute with ID + c_ID\[I\] = Ith column of local array calculated by a compute with ID, I can include wildcard (see below) f_ID = local vector calculated by a fix with ID - f_ID\[N\] = Nth column of local array calculated by a fix with ID :pre + f_ID\[I\] = Ith column of local array calculated by a fix with ID, I can include wildcard (see below) :pre {custom} or {custom/gz} or {custom/mpiio} args = list of atom attributes possible attributes = id, mol, proc, procp1, type, element, mass, x, y, z, xs, ys, zs, xu, yu, zu, xsu, ysu, zsu, ix, iy, iz, vx, vy, vz, fx, fy, fz, q, mux, muy, muz, mu, radius, diameter, omegax, omegay, omegaz, angmomx, angmomy, angmomz, tqx, tqy, tqz, c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :pre id = atom ID mol = molecule ID proc = ID of processor that owns atom procp1 = ID+1 of processor that owns atom type = atom type element = name of atom element, as defined by "dump_modify"_dump_modify.html command mass = atom mass x,y,z = unscaled atom coordinates xs,ys,zs = scaled atom coordinates xu,yu,zu = unwrapped atom coordinates xsu,ysu,zsu = scaled unwrapped atom coordinates ix,iy,iz = box image that the atom is in vx,vy,vz = atom velocities fx,fy,fz = forces on atoms q = atom charge mux,muy,muz = orientation of dipole moment of atom mu = magnitude of dipole moment of atom radius,diameter = radius,diameter of spherical particle omegax,omegay,omegaz = angular velocity of spherical particle angmomx,angmomy,angmomz = angular momentum of aspherical particle tqx,tqy,tqz = torque on finite-size particles c_ID = per-atom vector calculated by a compute with ID - c_ID\[N\] = Nth column of per-atom array calculated by a compute with ID + c_ID\[I\] = Ith column of per-atom array calculated by a compute with ID, I can include wildcard (see below) f_ID = per-atom vector calculated by a fix with ID - f_ID\[N\] = Nth column of per-atom array calculated by a fix with ID + f_ID\[I\] = Ith column of per-atom array calculated by a fix with ID, I can include wildcard (see below) v_name = per-atom vector calculated by an atom-style variable with name d_name = per-atom floating point vector with name, managed by fix property/atom i_name = per-atom integer vector with name, managed by fix property/atom :pre :ule [Examples:] dump myDump all atom 100 dump.atom dump myDump all atom/mpiio 100 dump.atom.mpiio dump myDump all atom/gz 100 dump.atom.gz dump 2 subgroup atom 50 dump.run.bin dump 2 subgroup atom 50 dump.run.mpiio.bin dump 4a all custom 100 dump.myforce.* id type x y vx fx dump 4b flow custom 100 dump.%.myforce id type c_myF\[3\] v_ke +dump 4b flow custom 100 dump.%.myforce id type c_myF\[*\] v_ke dump 2 inner cfg 10 dump.snap.*.cfg mass type xs ys zs vx vy vz dump snap all cfg 100 dump.config.*.cfg mass type xs ys zs id type c_Stress\[2\] dump 1 all xtc 1000 file.xtc :pre [Description:] Dump a snapshot of atom quantities to one or more files every N timesteps in one of several styles. The {image} and {movie} styles are the exception: the {image} style renders a JPG, PNG, or PPM image file of the atom configuration every N timesteps while the {movie} style combines and compresses them into a movie file; both are discussed in detail on the "dump image"_dump_image.html doc page. The timesteps on which dump output is written can also be controlled by a variable. See the "dump_modify every"_dump_modify.html command. Only information for atoms in the specified group is dumped. The "dump_modify thresh and region"_dump_modify.html commands can also alter what atoms are included. Not all styles support all these options; see details below. As described below, the filename determines the kind of output (text or binary or gzipped, one big file or one per timestep, one big file or multiple smaller files). NOTE: Because periodic boundary conditions are enforced only on timesteps when neighbor lists are rebuilt, the coordinates of an atom written to a dump file may be slightly outside the simulation box. NOTE: Unless the "dump_modify sort"_dump_modify.html option is invoked, the lines of atom information written to dump files (typically one line per atom) will be in an indeterminate order for each snapshot. This is even true when running on a single processor, if the "atom_modify sort"_atom_modify.html option is on, which it is by default. In this case atoms are re-ordered periodically during a simulation, due to spatial sorting. It is also true when running in parallel, because data for a single snapshot is collected from multiple processors, each of which owns a subset of the atoms. For the {atom}, {custom}, {cfg}, and {local} styles, sorting is off by default. For the {dcd}, {xtc}, {xyz}, and {molfile} styles, sorting by atom ID is on by default. See the "dump_modify"_dump_modify.html doc page for details. The {atom/gz}, {cfg/gz}, {custom/gz}, and {xyz/gz} styles are identical in command syntax to the corresponding styles without "gz", however, they generate compressed files using the zlib library. Thus the filename suffix ".gz" is mandatory. This is an alternative approach to writing compressed files via a pipe, as done by the regular dump styles, which may be required on clusters where the interface to the high-speed network disallows using the fork() library call (which is needed for a pipe). For the remainder of this doc page, you should thus consider the {atom} and {atom/gz} styles (etc) to be inter-changeable, with the exception of the required filename suffix. As explained below, the {atom/mpiio}, {cfg/mpiio}, {custom/mpiio}, and {xyz/mpiio} styles are identical in command syntax and in the format of the dump files they create, to the corresponding styles without "mpiio", except the single dump file they produce is written in parallel via the MPI-IO library. For the remainder of this doc page, you should thus consider the {atom} and {atom/mpiio} styles (etc) to be inter-changeable. The one exception is how the filename is specified for the MPI-IO styles, as explained below. :line The {style} keyword determines what atom quantities are written to the file and in what format. Settings made via the "dump_modify"_dump_modify.html command can also alter the format of individual values and the file itself. The {atom}, {local}, and {custom} styles create files in a simple text format that is self-explanatory when viewing a dump file. Many of the LAMMPS "post-processing tools"_Section_tools.html, including "Pizza.py"_http://www.sandia.gov/~sjplimp/pizza.html, work with this format, as does the "rerun"_rerun.html command. For post-processing purposes the {atom}, {local}, and {custom} text files are self-describing in the following sense. The dimensions of the simulation box are included in each snapshot. For an orthogonal simulation box this information is is formatted as: ITEM: BOX BOUNDS xx yy zz xlo xhi ylo yhi zlo zhi :pre where xlo,xhi are the maximum extents of the simulation box in the x-dimension, and similarly for y and z. The "xx yy zz" represent 6 characters that encode the style of boundary for each of the 6 simulation box boundaries (xlo,xhi and ylo,yhi and zlo,zhi). Each of the 6 characters is either p = periodic, f = fixed, s = shrink wrap, or m = shrink wrapped with a minimum value. See the "boundary"_boundary.html command for details. For triclinic simulation boxes (non-orthogonal), an orthogonal bounding box which encloses the triclinic simulation box is output, along with the 3 tilt factors (xy, xz, yz) of the triclinic box, formatted as follows: ITEM: BOX BOUNDS xy xz yz xx yy zz xlo_bound xhi_bound xy ylo_bound yhi_bound xz zlo_bound zhi_bound yz :pre The presence of the text "xy xz yz" in the ITEM line indicates that the 3 tilt factors will be included on each of the 3 following lines. This bounding box is convenient for many visualization programs. The meaning of the 6 character flags for "xx yy zz" is the same as above. Note that the first two numbers on each line are now xlo_bound instead of xlo, etc, since they repesent a bounding box. See "this section"_Section_howto.html#howto_12 of the doc pages for a geometric description of triclinic boxes, as defined by LAMMPS, simple formulas for how the 6 bounding box extents (xlo_bound,xhi_bound,etc) are calculated from the triclinic parameters, and how to transform those parameters to and from other commonly used triclinic representations. The "ITEM: ATOMS" line in each snapshot lists column descriptors for the per-atom lines that follow. For example, the descriptors would be "id type xs ys zs" for the default {atom} style, and would be the atom attributes you specify in the dump command for the {custom} style. For style {atom}, atom coordinates are written to the file, along with the atom ID and atom type. By default, atom coords are written in a scaled format (from 0 to 1). I.e. an x value of 0.25 means the atom is at a location 1/4 of the distance from xlo to xhi of the box boundaries. The format can be changed to unscaled coords via the "dump_modify"_dump_modify.html settings. Image flags can also be added for each atom via dump_modify. Style {custom} allows you to specify a list of atom attributes to be written to the dump file for each atom. Possible attributes are listed above and will appear in the order specified. You cannot specify a quantity that is not defined for a particular simulation - such as {q} for atom style {bond}, since that atom style doesn't assign charges. Dumps occur at the very end of a timestep, so atom attributes will include effects due to fixes that are applied during the timestep. An explanation of the possible dump custom attributes is given below. For style {local}, local output generated by "computes"_compute.html and "fixes"_fix.html is used to generate lines of output that is written to the dump file. This local data is typically calculated by each processor based on the atoms it owns, but there may be zero or more entities per atom, e.g. a list of bond distances. An explanation of the possible dump local attributes is given below. Note that by using input from the "compute property/local"_compute_property_local.html command with dump local, it is possible to generate information on bonds, angles, etc that can be cut and pasted directly into a data file read by the "read_data"_read_data.html command. Style {cfg} has the same command syntax as style {custom} and writes extended CFG format files, as used by the "AtomEye"_http://mt.seas.upenn.edu/Archive/Graphics/A visualization package. Since the extended CFG format uses a single snapshot of the system per file, a wildcard "*" must be included in the filename, as discussed below. The list of atom attributes for style {cfg} must begin with either "mass type xs ys zs" or "mass type xsu ysu zsu" since these quantities are needed to write the CFG files in the appropriate format (though the "mass" and "type" fields do not appear explicitly in the file). Any remaining attributes will be stored as "auxiliary properties" in the CFG files. Note that you will typically want to use the "dump_modify element"_dump_modify.html command with CFG-formatted files, to associate element names with atom types, so that AtomEye can render atoms appropriately. When unwrapped coordinates {xsu}, {ysu}, and {zsu} are requested, the nominal AtomEye periodic cell dimensions are expanded by a large factor UNWRAPEXPAND = 10.0, which ensures atoms that are displayed correctly for up to UNWRAPEXPAND/2 periodic boundary crossings in any direction. Beyond this, AtomEye will rewrap the unwrapped coordinates. The expansion causes the atoms to be drawn farther away from the viewer, but it is easy to zoom the atoms closer, and the interatomic distances are unaffected. The {dcd} style writes DCD files, a standard atomic trajectory format used by the CHARMM, NAMD, and XPlor molecular dynamics packages. DCD files are binary and thus may not be portable to different machines. The number of atoms per snapshot cannot change with the {dcd} style. The {unwrap} option of the "dump_modify"_dump_modify.html command allows DCD coordinates to be written "unwrapped" by the image flags for each atom. Unwrapped means that if the atom has passed through a periodic boundary one or more times, the value is printed for what the coordinate would be if it had not been wrapped back into the periodic box. Note that these coordinates may thus be far outside the box size stored with the snapshot. The {xtc} style writes XTC files, a compressed trajectory format used by the GROMACS molecular dynamics package, and described "here"_http://manual.gromacs.org/current/online/xtc.html. The precision used in XTC files can be adjusted via the "dump_modify"_dump_modify.html command. The default value of 1000 means that coordinates are stored to 1/1000 nanometer accuracy. XTC files are portable binary files written in the NFS XDR data format, so that any machine which supports XDR should be able to read them. The number of atoms per snapshot cannot change with the {xtc} style. The {unwrap} option of the "dump_modify"_dump_modify.html command allows XTC coordinates to be written "unwrapped" by the image flags for each atom. Unwrapped means that if the atom has passed thru a periodic boundary one or more times, the value is printed for what the coordinate would be if it had not been wrapped back into the periodic box. Note that these coordinates may thus be far outside the box size stored with the snapshot. The {xyz} style writes XYZ files, which is a simple text-based coordinate format that many codes can read. Specifically it has a line with the number of atoms, then a comment line that is usually ignored followed by one line per atom with the atom type and the x-, y-, and z-coordinate of that atom. You can use the "dump_modify element"_dump_modify.html option to change the output from using the (numerical) atom type to an element name (or some other label). This will help many visualization programs to guess bonds and colors. Note that {atom}, {custom}, {dcd}, {xtc}, and {xyz} style dump files can be read directly by "VMD"_http://www.ks.uiuc.edu/Research/vmd, a popular molecular viewing program. See "Section tools"_Section_tools.html#vmd of the manual and the tools/lmp2vmd/README.txt file for more information about support in VMD for reading and visualizing LAMMPS dump files. :line Dumps are performed on timesteps that are a multiple of N (including timestep 0) and on the last timestep of a minimization if the minimization converges. Note that this means a dump will not be performed on the initial timestep after the dump command is invoked, if the current timestep is not a multiple of N. This behavior can be changed via the "dump_modify first"_dump_modify.html command, which can also be useful if the dump command is invoked after a minimization ended on an arbitrary timestep. N can be changed between runs by using the "dump_modify every"_dump_modify.html command (not allowed for {dcd} style). The "dump_modify every"_dump_modify.html command also allows a variable to be used to determine the sequence of timesteps on which dump files are written. In this mode a dump on the first timestep of a run will also not be written unless the "dump_modify first"_dump_modify.html command is used. The specified filename determines how the dump file(s) is written. The default is to write one large text file, which is opened when the dump command is invoked and closed when an "undump"_undump.html command is used or when LAMMPS exits. For the {dcd} and {xtc} styles, this is a single large binary file. Dump filenames can contain two wildcard characters. If a "*" character appears in the filename, then one file per snapshot is written and the "*" character is replaced with the timestep value. For example, tmp.dump.* becomes tmp.dump.0, tmp.dump.10000, tmp.dump.20000, etc. This option is not available for the {dcd} and {xtc} styles. Note that the "dump_modify pad"_dump_modify.html command can be used to insure all timestep numbers are the same length (e.g. 00010), which can make it easier to read a series of dump files in order with some post-processing tools. If a "%" character appears in the filename, then each of P processors writes a portion of the dump file, and the "%" character is replaced with the processor ID from 0 to P-1. For example, tmp.dump.% becomes tmp.dump.0, tmp.dump.1, ... tmp.dump.P-1, etc. This creates smaller files and can be a fast mode of output on parallel machines that support parallel I/O for output. This option is not available for the {dcd}, {xtc}, and {xyz} styles. By default, P = the number of processors meaning one file per processor, but P can be set to a smaller value via the {nfile} or {fileper} keywords of the "dump_modify"_dump_modify.html command. These options can be the most efficient way of writing out dump files when running on large numbers of processors. Note that using the "*" and "%" characters together can produce a large number of small dump files! For the {atom/mpiio}, {cfg/mpiio}, {custom/mpiio}, and {xyz/mpiio} styles, a single dump file is written in parallel via the MPI-IO library, which is part of the MPI standard for versions 2.0 and above. Using MPI-IO requires two steps. First, build LAMMPS with its MPIIO package installed, e.g. make yes-mpiio # installs the MPIIO package make g++ # build LAMMPS for your platform :pre Second, use a dump filename which contains ".mpiio". Note that it does not have to end in ".mpiio", just contain those characters. Unlike MPI-IO restart files, which must be both written and read using MPI-IO, the dump files produced by these MPI-IO styles are identical in format to the files produced by their non-MPI-IO style counterparts. This means you can write a dump file using MPI-IO and use the "read_dump"_read_dump.html command or perform other post-processing, just as if the dump file was not written using MPI-IO. Note that MPI-IO dump files are one large file which all processors write to. You thus cannot use the "%" wildcard character described above in the filename since that specifies generation of multiple files. You can use the ".bin" suffix described below in an MPI-IO dump file; again this file will be written in parallel and have the same binary format as if it were written without MPI-IO. If the filename ends with ".bin", the dump file (or files, if "*" or "%" is also used) is written in binary format. A binary dump file will be about the same size as a text version, but will typically write out much faster. Of course, when post-processing, you will need to convert it back to text format (see the "binary2txt tool"_Section_tools.html#binary) or write your own code to read the binary file. The format of the binary file can be understood by looking at the tools/binary2txt.cpp file. This option is only available for the {atom} and {custom} styles. If the filename ends with ".gz", the dump file (or files, if "*" or "%" is also used) is written in gzipped format. A gzipped dump file will be about 3x smaller than the text version, but will also take longer to write. This option is not available for the {dcd} and {xtc} styles. :line +Note that in the discussion which follows, for styles which can +reference values from a compute or fix, like the {custom}, {cfg}, or +{local} styles, the bracketed index I can be specified using a +wildcard asterisk with the index to effectively specify multiple +values. This takes the form "*" or "*n" or "n*" or "m*n". If N = the +size of the vector (for {mode} = scalar) or the number of columns in +the array (for {mode} = vector), then an asterisk with no numeric +values means all indices from 1 to N. A leading asterisk means all +indices from 1 to n (inclusive). A trailing asterisk means all +indices from n to N (inclusive). A middle asterisk means all indices +from m to n (inclusive). + +Using a wildcard is the same as if the individual columns of the array +had been listed one by one. E.g. these 2 dump commands are +equivalent, since the "compute stress/atom"_compute_stress/atom.html +command creates a per-atom array with 6 columns: + +compute myPress all stress/atom NULL +dump 2 all custom 100 tmp.dump id myPress\[*\] +dump 2 all custom 100 tmp.dump id myPress\[1\] myPress\[2\] myPress\[3\] & + myPress\[4\] myPress\[5\] myPress\[6\] :pre + +:line + This section explains the local attributes that can be specified as part of the {local} style. The {index} attribute can be used to generate an index number from 1 to N for each line written into the dump file, where N is the total number of local datums from all processors, or lines of output that will appear in the snapshot. Note that because data from different processors depend on what atoms they currently own, and atoms migrate between processor, there is no guarantee that the same index will be used for the same info (e.g. a particular bond) in successive snapshots. -The {c_ID} and {c_ID\[N\]} attributes allow local vectors or arrays +The {c_ID} and {c_ID\[I\]} attributes allow local vectors or arrays calculated by a "compute"_compute.html to be output. The ID in the attribute should be replaced by the actual ID of the compute that has been defined previously in the input script. See the "compute"_compute.html command for details. There are computes for calculating local information such as indices, types, and energies for bonds and angles. Note that computes which calculate global or per-atom quantities, as opposed to local quantities, cannot be output in a dump local command. Instead, global quantities can be output by the "thermo_style custom"_thermo_style.html command, and per-atom quantities can be output by the dump custom command. If {c_ID} is used as a attribute, then the local vector calculated by -the compute is printed. If {c_ID\[N\]} is used, then N must be in the -range from 1-M, which will print the Nth column of the M-length local -array calculated by the compute. +the compute is printed. If {c_ID\[I\]} is used, then I must be in the +range from 1-M, which will print the Ith column of the local array +with M columns calculated by the compute. See the discussion above +for how I can be specified with a wildcard asterisk to effectively +specify multiple values. -The {f_ID} and {f_ID\[N\]} attributes allow local vectors or arrays +The {f_ID} and {f_ID\[I\]} attributes allow local vectors or arrays calculated by a "fix"_fix.html to be output. The ID in the attribute should be replaced by the actual ID of the fix that has been defined previously in the input script. If {f_ID} is used as a attribute, then the local vector calculated by -the fix is printed. If {f_ID\[N\]} is used, then N must be in the -range from 1-M, which will print the Nth column of the M-length local -array calculated by the fix. +the fix is printed. If {f_ID\[I\]} is used, then I must be in the +range from 1-M, which will print the Ith column of the local with M +columns calculated by the fix. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values. -Here is an example of how to dump bond info for a system, -including the distance and energy of each bond: +Here is an example of how to dump bond info for a system, including +the distance and energy of each bond: compute 1 all property/local batom1 batom2 btype compute 2 all bond/local dist eng dump 1 all local 1000 tmp.dump index c_1\[1\] c_1\[2\] c_1\[3\] c_2\[1\] c_2\[2\] :pre :line This section explains the atom attributes that can be specified as part of the {custom} and {cfg} styles. The {id}, {mol}, {proc}, {procp1}, {type}, {element}, {mass}, {vx}, {vy}, {vz}, {fx}, {fy}, {fz}, {q} attributes are self-explanatory. {Id} is the atom ID. {Mol} is the molecule ID, included in the data file for molecular systems. {Proc} is the ID of the processor (0 to Nprocs-1) that currently owns the atom. {Procp1} is the proc ID+1, which can be convenient in place of a {type} attribute (1 to Ntypes) for coloring atoms in a visualization program. {Type} is the atom type (1 to Ntypes). {Element} is typically the chemical name of an element, which you must assign to each type via the "dump_modify element"_dump_modify.html command. More generally, it can be any string you wish to associated with an atom type. {Mass} is the atom mass. {Vx}, {vy}, {vz}, {fx}, {fy}, {fz}, and {q} are components of atom velocity and force and atomic charge. There are several options for outputting atom coordinates. The {x}, {y}, {z} attributes write atom coordinates "unscaled", in the appropriate distance "units"_units.html (Angstroms, sigma, etc). Use {xs}, {ys}, {zs} if you want the coordinates "scaled" to the box size, so that each value is 0.0 to 1.0. If the simulation box is triclinic (tilted), then all atom coords will still be between 0.0 and 1.0. I.e. actual unscaled (x,y,z) = xs*A + ys*B + zs*C, where (A,B,C) are the non-orthogonal vectors of the simulation box edges, as discussed in "Section howto 6.12"_Section_howto.html#howto_12. Use {xu}, {yu}, {zu} if you want the coordinates "unwrapped" by the image flags for each atom. Unwrapped means that if the atom has passed thru a periodic boundary one or more times, the value is printed for what the coordinate would be if it had not been wrapped back into the periodic box. Note that using {xu}, {yu}, {zu} means that the coordinate values may be far outside the box bounds printed with the snapshot. Using {xsu}, {ysu}, {zsu} is similar to using {xu}, {yu}, {zu}, except that the unwrapped coordinates are scaled by the box size. Atoms that have passed through a periodic boundary will have the corresponding cooordinate increased or decreased by 1.0. The image flags can be printed directly using the {ix}, {iy}, {iz} attributes. For periodic dimensions, they specify which image of the simulation box the atom is considered to be in. An image of 0 means it is inside the box as defined. A value of 2 means add 2 box lengths to get the true value. A value of -1 means subtract 1 box length to get the true value. LAMMPS updates these flags as atoms cross periodic boundaries during the simulation. The {mux}, {muy}, {muz} attributes are specific to dipolar systems defined with an atom style of {dipole}. They give the orientation of the atom's point dipole moment. The {mu} attribute gives the magnitude of the atom's dipole moment. The {radius} and {diameter} attributes are specific to spherical particles that have a finite size, such as those defined with an atom style of {sphere}. The {omegax}, {omegay}, and {omegaz} attributes are specific to finite-size spherical particles that have an angular velocity. Only certain atom styles, such as {sphere} define this quantity. The {angmomx}, {angmomy}, and {angmomz} attributes are specific to finite-size aspherical particles that have an angular momentum. Only the {ellipsoid} atom style defines this quantity. The {tqx}, {tqy}, {tqz} attributes are for finite-size particles that can sustain a rotational torque due to interactions with other particles. -The {c_ID} and {c_ID\[N\]} attributes allow per-atom vectors or arrays +The {c_ID} and {c_ID\[I\]} attributes allow per-atom vectors or arrays calculated by a "compute"_compute.html to be output. The ID in the attribute should be replaced by the actual ID of the compute that has been defined previously in the input script. See the "compute"_compute.html command for details. There are computes for calculating the per-atom energy, stress, centro-symmetry parameter, and coordination number of individual atoms. Note that computes which calculate global or local quantities, as opposed to per-atom quantities, cannot be output in a dump custom command. Instead, global quantities can be output by the "thermo_style custom"_thermo_style.html command, and local quantities can be output by the dump local command. If {c_ID} is used as a attribute, then the per-atom vector calculated -by the compute is printed. If {c_ID\[N\]} is used, then N must be in -the range from 1-M, which will print the Nth column of the M-length -per-atom array calculated by the compute. +by the compute is printed. If {c_ID\[I\]} is used, then I must be in +the range from 1-M, which will print the Ith column of the per-atom +array with M columns calculated by the compute. See the discussion +above for how I can be specified with a wildcard asterisk to +effectively specify multiple values. -The {f_ID} and {f_ID\[N\]} attributes allow vector or array per-atom +The {f_ID} and {f_ID\[I\]} attributes allow vector or array per-atom quantities calculated by a "fix"_fix.html to be output. The ID in the attribute should be replaced by the actual ID of the fix that has been defined previously in the input script. The "fix ave/atom"_fix_ave_atom.html command is one that calculates per-atom quantities. Since it can time-average per-atom quantities produced by any "compute"_compute.html, "fix"_fix.html, or atom-style "variable"_variable.html, this allows those time-averaged results to be written to a dump file. If {f_ID} is used as a attribute, then the per-atom vector calculated -by the fix is printed. If {f_ID\[N\]} is used, then N must be in the -range from 1-M, which will print the Nth column of the M-length -per-atom array calculated by the fix. +by the fix is printed. If {f_ID\[I\]} is used, then I must be in the +range from 1-M, which will print the Ith column of the per-atom array +with M columns calculated by the fix. See the discussion above for +how I can be specified with a wildcard asterisk to effectively specify +multiple values. The {v_name} attribute allows per-atom vectors calculated by a "variable"_variable.html to be output. The name in the attribute should be replaced by the actual name of the variable that has been defined previously in the input script. Only an atom-style variable can be referenced, since it is the only style that generates per-atom values. Variables of style {atom} can reference individual atom attributes, per-atom atom attributes, thermodynamic keywords, or invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of creating quantities to output to a dump file. The {d_name} and {i_name} attributes allow to output custom per atom floating point or integer properties that are managed by "fix property/atom"_fix_property_atom.html. See "Section_modify"_Section_modify.html of the manual for information on how to add new compute and fix styles to LAMMPS to calculate per-atom quantities which could then be output into dump files. :line [Restrictions:] To write gzipped dump files, you must either compile LAMMPS with the -DLAMMPS_GZIP option or use the styles from the COMPRESS package - see the "Making LAMMPS"_Section_start.html#start_2 section of the documentation. The {atom/gz}, {cfg/gz}, {custom/gz}, and {xyz/gz} styles are part of the COMPRESS package. They are only enabled if LAMMPS was built with that package. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. The {atom/mpiio}, {cfg/mpiio}, {custom/mpiio}, and {xyz/mpiio} styles are part of the MPIIO package. They are only enabled if LAMMPS was built with that package. See the "Making LAMMPS"_Section_start.html#start_3 section for more info. The {xtc} style is part of the 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. This is because some machines may not support the low-level XDR data format that XTC files are written with, which will result in a compile-time error when a low-level include file is not found. Putting this style in a package makes it easy to exclude from a LAMMPS build for those machines. However, the MISC package also includes two compatibility header files and associated functions, which should be a suitable substitute on machines that do not have the appropriate native header files. This option can be invoked at build time by adding -DLAMMPS_XDR to the CCFLAGS variable in the appropriate low-level Makefile, e.g. src/MAKE/Makefile.foo. This compatibility mode has been tested successfully on Cray XT3/XT4/XT5 and IBM BlueGene/L machines and should also work on IBM BG/P, and Windows XP/Vista/7 machines. [Related commands:] "dump h5md"_dump_h5md.html, "dump image"_dump_image.html, "dump molfile"_dump_molfile.html, "dump_modify"_dump_modify.html, "undump"_undump.html [Default:] The defaults for the {image} and {movie} styles are listed on the "dump image"_dump_image.html doc page. diff --git a/doc/src/fix_ave_atom.txt b/doc/src/fix_ave_atom.txt index 7f74b98dd..a2c42e52d 100644 --- a/doc/src/fix_ave_atom.txt +++ b/doc/src/fix_ave_atom.txt @@ -1,153 +1,179 @@ "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) :link(lc,Section_commands.html#comm) :line fix ave/atom command :h3 [Syntax:] fix ID group-ID ave/atom Nevery Nrepeat Nfreq value1 value2 ... :pre ID, group-ID are documented in "fix"_fix.html command :ulb,l ave/atom = style name of this fix command :l Nevery = use input values every this many timesteps :l Nrepeat = # of times to use input values for calculating averages :l Nfreq = calculate averages every this many timesteps one or more input values can be listed :l value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID\[i\], f_ID, f_ID\[i\], v_name :l x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component) c_ID = per-atom vector calculated by a compute with ID - c_ID\[I\] = Ith column of per-atom array calculated by a compute with ID + c_ID\[I\] = Ith column of per-atom array calculated by a compute with ID, I can include wildcard (see below) f_ID = per-atom vector calculated by a fix with ID - f_ID\[I\] = Ith column of per-atom array calculated by a fix with ID + f_ID\[I\] = Ith column of per-atom array calculated by a fix with ID, I can include wildcard (see below) v_name = per-atom vector calculated by an atom-style variable with name :pre :ule [Examples:] fix 1 all ave/atom 1 100 100 vx vy vz -fix 1 all ave/atom 10 20 1000 c_my_stress\[1\] :pre +fix 1 all ave/atom 10 20 1000 c_my_stress\[1\] +fix 1 all ave/atom 10 20 1000 c_my_stress\[*\] :pre [Description:] Use one or more per-atom vectors as inputs every few timesteps, and average them atom by atom over longer timescales. The resulting per-atom averages can be used by other "output commands"_Section_howto.html#howto_15 such as the "fix ave/chunk"_fix_ave_chunk.html or "dump custom"_dump.html commands. The group specified with the command means only atoms within the group have their averages computed. Results are set to 0.0 for atoms not in the group. Each input value can be an atom attribute (position, velocity, force component) or can be the result of a "compute"_compute.html or "fix"_fix.html or the evaluation of an atom-style "variable"_variable.html. In the latter cases, the compute, fix, or variable must produce a per-atom vector, not a global quantity or local quantity. If you wish to time-average global quantities from a compute, fix, or variable, then see the "fix ave/time"_fix_ave_time.html command. +Each per-atom value of each input vector is averaged independently. + "Computes"_compute.html that produce per-atom vectors or arrays are those which have the word {atom} in their style name. See the doc pages for individual "fixes"_fix.html to determine which ones produce per-atom vectors or arrays. "Variables"_variable.html of style {atom} are the only ones that can be used with this fix since they produce per-atom vectors. -Each per-atom value of each input vector is averaged independently. +Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form "*" or "*n" or "n*" or +"m*n". If N = the size of the vector (for {mode} = scalar) or the +number of columns in the array (for {mode} = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive). + +Using a wildcard is the same as if the individual columns of the array +had been listed one by one. E.g. these 2 fix ave/atom commands are +equivalent, since the "compute stress/atom"_compute_stress/atom.html +command creates a per-atom array with 6 columns: + +compute my_stress all stress/atom NULL +fix 1 all ave/atom 10 20 1000 c_my_stress\[*\] +fix 1 all ave/atom 10 20 1000 c_my_stress\[1\] c_my_stress\[1\] & + c_my_stress\[3\] c_my_stress\[4\] & + c_my_stress\[5\] c_my_stress\[6\] :pre :line The {Nevery}, {Nrepeat}, and {Nfreq} arguments specify on what timesteps the input values will be used in order to contribute to the average. The final averaged quantities are generated on timesteps that are a multiple of {Nfreq}. The average is over {Nrepeat} quantities, computed in the preceding portion of the simulation every {Nevery} timesteps. {Nfreq} must be a multiple of {Nevery} and {Nevery} must be non-zero even if {Nrepeat} is 1. Also, the timesteps contributing to the average value cannot overlap, i.e. Nrepeat*Nevery can not exceed Nfreq. For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on timesteps 90,92,94,96,98,100 will be used to compute the final average on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on timestep 200, etc. :line The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are self-explanatory. Note that other atom attributes can be used as inputs to this fix by using the "compute property/atom"_compute_property_atom.html command and then specifying an input value from that compute. NOTE: The x,y,z attributes are values that are re-wrapped inside the periodic box whenever an atom crosses a periodic boundary. Thus if you time average an atom that spends half its time on either side of the periodic box, you will get a value in the middle of the box. If this is not what you want, consider averaging unwrapped coordinates, which can be provided by the "compute property/atom"_compute_property_atom.html command via its xu,yu,zu attributes. If a value begins with "c_", a compute ID must follow which has been previously defined in the input script. If no bracketed term is appended, the per-atom vector calculated by the compute is used. If a bracketed term containing an index I is appended, the Ith column of the per-atom array calculated by the compute is used. Users can also write code for their own compute styles and "add them to -LAMMPS"_Section_modify.html. +LAMMPS"_Section_modify.html. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values. If a value begins with "f_", a fix ID must follow which has been previously defined in the input script. If no bracketed term is appended, the per-atom vector calculated by the fix is used. If a bracketed term containing an index I is appended, the Ith column of the per-atom array calculated by the fix is used. Note that some fixes only produce their values on certain timesteps, which must be compatible with {Nevery}, else an error will result. Users can also write code for their own fix styles and "add them to -LAMMPS"_Section_modify.html. +LAMMPS"_Section_modify.html. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values. If a value begins with "v_", a variable name must follow which has been previously defined in the input script as an "atom-style variable"_variable.html Variables of style {atom} can reference thermodynamic keywords, or invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of generating per-atom quantities to time average. :line [Restart, fix_modify, output, run start/stop, minimize info:] No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. No global scalar or vector quantities are stored by this fix for access by various "output commands"_Section_howto.html#howto_15. This fix produces a per-atom vector or array which can be accessed by various "output commands"_Section_howto.html#howto_15. A vector is produced if only a single quantity is averaged by this fix. If two or more quantities are averaged, then an array of values is produced. The per-atom values can only be accessed on timesteps that are multiples of {Nfreq} since that is when averaging is performed. No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] none [Related commands:] "compute"_compute.html, "fix ave/histo"_fix_ave_histo.html, "fix ave/chunk"_fix_ave_chunk.html, "fix ave/time"_fix_ave_time.html, "variable"_variable.html, [Default:] none diff --git a/doc/src/fix_ave_chunk.txt b/doc/src/fix_ave_chunk.txt index 41e9cbd9f..2ce8c727c 100644 --- a/doc/src/fix_ave_chunk.txt +++ b/doc/src/fix_ave_chunk.txt @@ -1,454 +1,478 @@ "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/chunk command :h3 [Syntax:] fix ID group-ID ave/chunk Nevery Nrepeat Nfreq chunkID value1 value2 ... keyword args ... :pre ID, group-ID are documented in "fix"_fix.html command :ulb,l ave/chunk = style name of this fix command :l Nevery = use input values every this many timesteps :l Nrepeat = # of times to use input values for calculating averages :l Nfreq = calculate averages every this many timesteps :l chunkID = ID of "compute chunk/atom"_compute_chunk_atom.html command :l one or more input values can be listed :l value = vx, vy, vz, fx, fy, fz, density/mass, density/number, temp, c_ID, c_ID\[I\], f_ID, f_ID\[I\], v_name :l vx,vy,vz,fx,fy,fz = atom attribute (velocity, force component) density/number, density/mass = number or mass density temp = temperature c_ID = per-atom vector calculated by a compute with ID - c_ID\[I\] = Ith column of per-atom array calculated by a compute with ID + c_ID\[I\] = Ith column of per-atom array calculated by a compute with ID, I can include wildcard (see below) f_ID = per-atom vector calculated by a fix with ID - f_ID\[I\] = Ith column of per-atom array calculated by a fix with ID + f_ID\[I\] = Ith column of per-atom array calculated by a fix with ID, I can include wildcard (see below) v_name = per-atom vector calculated by an atom-style variable with name :pre zero or more keyword/arg pairs may be appended :l keyword = {norm} or {ave} or {bias} or {adof} or {cdof} or {file} or {overwrite} or {title1} or {title2} or {title3} :l {norm} arg = {all} or {sample} or {none} = how output on {Nfreq} steps is normalized all = output is sum of atoms across all {Nrepeat} samples, divided by atom count sample = output is sum of {Nrepeat} sample averages, divided by {Nrepeat} none = output is sum of {Nrepeat} sample sums, divided by {Nrepeat} {ave} args = {one} or {running} or {window M} one = output new average value every Nfreq steps running = output cumulative average of all previous Nfreq steps window M = output average of M most recent Nfreq steps {bias} arg = bias-ID bias-ID = ID of a temperature compute that removes a velocity bias for temperature calculation {adof} value = dof_per_atom dof_per_atom = define this many degrees-of-freedom per atom for temperature calculation {cdof} value = dof_per_chunk dof_per_chunk = define this many degrees-of-freedom per chunk for temperature calculation {file} arg = filename filename = file to write results to {overwrite} arg = none = overwrite output file with only latest output {format} arg = string string = C-style format string {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/chunk 10000 1 10000 binchunk c_myCentro title1 "My output values" fix 1 flow ave/chunk 100 10 1000 molchunk vx vz norm sample file vel.profile fix 1 flow ave/chunk 100 5 1000 binchunk density/mass ave running fix 1 flow ave/chunk 100 5 1000 binchunk density/mass ave running :pre [NOTE:] If you are trying to replace a deprectated fix ave/spatial command with the newer, more flexible fix ave/chunk and "compute chunk/atom"_compute_chunk_atom.html commands, you simply need to split the fix ave/spatial arguments across the two new commands. For example, this command: fix 1 flow ave/spatial 100 10 1000 y 0.0 1.0 vx vz norm sample file vel.profile :pre could be replaced by: compute cc1 flow chunk/atom bin/1d y 0.0 1.0 fix 1 flow ave/chunk 100 10 1000 cc1 vx vz norm sample file vel.profile :pre [Description:] Use one or more per-atom vectors as inputs every few timesteps, sum the values over the atoms in each chunk at each timestep, then average the per-chunk values over longer timescales. The resulting chunk averages can be 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. In LAMMPS, chunks are collections of atoms defined by a "compute chunk/atom"_compute_chunk_atom.html command, which assigns each atom to a single chunk (or no chunk). The ID for this command is specified as chunkID. For example, a single chunk could be the atoms in a molecule or atoms in a spatial bin. See the "compute chunk/atom"_compute_chunk_atom.html doc page and ""Section_howto 23"_Section_howto.html#howto_23 for details of how chunks can be defined and examples of how they can be used to measure properties of a system. Note that only atoms in the specified group contribute to the summing and averaging calculations. The "compute chunk/atom"_compute_chunk_atom.html command defines its own group as well as an optional region. Atoms will have a chunk ID = 0, meaning they belong to no chunk, if they are not in that group or region. Thus you can specify the "all" group for this command if you simply want to use the chunk definitions provided by chunkID. Each specified per-atom value can be an atom attribute (position, velocity, force component), a mass or number density, or the result of a "compute"_compute.html or "fix"_fix.html or the evaluation of an atom-style "variable"_variable.html. In the latter cases, the compute, fix, or variable must produce a per-atom quantity, not a global quantity. Note that the "compute property/atom"_compute_property_atom.html command provides access to any attribute defined and stored by atoms. If you wish to time-average global quantities from a compute, fix, or variable, then see the "fix ave/time"_fix_ave_time.html command. +The per-atom values of each input vector are summed and averaged +independently of the per-atom values in other input vectors. + "Computes"_compute.html that produce per-atom quantities are those which have the word {atom} in their style name. See the doc pages for individual "fixes"_fix.html to determine which ones produce per-atom quantities. "Variables"_variable.html of style {atom} are the only ones that can be used with this fix since all other styles of variable produce global quantities. -The per-atom values of each input vector are summed and averaged -independently of the per-atom values in other input vectors. +Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form "*" or "*n" or "n*" or +"m*n". If N = the size of the vector (for {mode} = scalar) or the +number of columns in the array (for {mode} = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive). + +Using a wildcard is the same as if the individual columns of the array +had been listed one by one. E.g. these 2 fix ave/chunk commands are +equivalent, since the "compute +property/atom"_compute_property/atom.html command creates, in this +case, a per-atom array with 3 columns: + +compute myAng all property/atom angmomx angmomy angmomz +fix 1 all ave/chunk 100 1 100 cc1 c_myAng\[*\] file tmp.angmom +fix 2 all ave/chunk 100 1 100 cc1 c_myAng\[1\] c_myAng\[2\] c_myAng\[3\] file tmp.angmom :pre NOTE: This fix works by creating an array of size {Nchunk} by Nvalues on each processor. {Nchunk} is the number of chunks which is defined by the "compute chunk/atom"_doc/compute_chunk_atom.html command. Nvalues is the number of input values specified. Each processor loops over its atoms, tallying its values to the appropriate chunk. Then the entire array is summed across all processors. This means that using a large number of chunks will incur an overhead in memory and computational cost (summing across processors), so be careful to define a reasonable number of chunks. :line The {Nevery}, {Nrepeat}, and {Nfreq} arguments specify on what timesteps the input values will be accessed and contribute to the average. The final averaged quantities are generated on timesteps that are a multiples of {Nfreq}. The average is over {Nrepeat} quantities, computed in the preceding portion of the simulation every {Nevery} timesteps. {Nfreq} must be a multiple of {Nevery} and {Nevery} must be non-zero even if {Nrepeat} is 1. Also, the timesteps contributing to the average value cannot overlap, i.e. Nrepeat*Nevery can not exceed Nfreq. For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on timesteps 90,92,94,96,98,100 will be used to compute the final average on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time averaging is done; values are simply generated on timesteps 100,200,etc. Each input value can also be averaged over the atoms in each chunk. The way the averaging is done across the {Nrepeat} timesteps to produce output on the {Nfreq} timesteps, and across multiple {Nfreq} outputs, is determined by the {norm} and {ave} keyword settings, as discussed below. NOTE: To perform per-chunk averaging within a {Nfreq} time window, the number of chunks {Nchunk} defined by the "compute chunk/atom"_compute_chunk_atom.html command must remain constant. If the {ave} keyword is set to {running} or {window} then {Nchunk} must remain constant for the duration of the simulation. This fix forces the chunk/atom compute specified by chunkID to hold {Nchunk} constant for the appropriate time windows, by not allowing it to re-calcualte {Nchunk}, which can also affect how it assigns chunk IDs to atoms. More details are given on the "compute chunk/atom"_compute_chunk_atom.html doc page. :line The atom attribute values (vx,vy,vz,fx,fy,fz) are self-explanatory. As noted above, any other atom attributes can be used as input values to this fix by using the "compute property/atom"_compute_property_atom.html command and then specifying an input value from that compute. The {density/number} value means the number density is computed for each chunk, i.e. number/volume. The {density/mass} value means the mass density is computed for each chunk, i.e. total-mass/volume. The output values are in units of 1/volume or density (mass/volume). See the "units"_units.html command doc page for the definition of density for each choice of units, e.g. gram/cm^3. If the chunks defined by the "compute chunk/atom"_compute_chunk_atom.html command are spatial bins, the volume is the bin volume. Otherwise it is the volume of the entire simulation box. The {temp} value means the temperature is computed for each chunk, by the formula KE = DOF/2 k T, where KE = total kinetic energy of the chunk of atoms (sum of 1/2 m v^2), DOF = the total number of degrees of freedom for all atoms in the chunk, k = Boltzmann constant, and T = temperature. The DOF is calculated as N*adof + cdof, where N = number of atoms in the chunk, adof = degrees of freedom per atom, and cdof = degrees of freedom per chunk. By default adof = 2 or 3 = dimensionality of system, as set via the "dimension"_dimension.html command, and cdof = 0.0. This gives the usual formula for temperature. Note that currently this temperature only includes translational degrees of freedom for each atom. No rotational degrees of freedom are included for finite-size particles. Also no degrees of freedom are subtracted for any velocity bias or constraints that are applied, such as "compute temp/partial"_compute_temp_partial.html, or "fix shake"_fix_shake.html or "fix rigid"_fix_rigid.html. This is because those degrees of freedom (e.g. a constrained bond) could apply to sets of atoms that are both included and excluded from a specific chunk, and hence the concept is somewhat ill-defined. In some cases, you can use the {adof} and {cdof} keywords to adjust the calculated degress of freedom appropriately, as explained below. Also note that a bias can be subtracted from atom velocities before they are used in the above formula for KE, by using the {bias} keyword. This allows, for example, a thermal temperature to be computed after removal of a flow velocity profile. Note that the per-chunk temperature calculated by this fix and the "compute temp/chunk"_compute_temp_chunk.html command can be different. The compute calculates the temperature for each chunk for a single snapshot. This fix can do that but can also time average those values over many snapshots, or it can compute a temperature as if the atoms in the chunk on different timesteps were collected together as one set of atoms to calculate their temperature. The compute allows the center-of-mass velocity of each chunk to be subtracted before calculating the temperature; this fix does not. If a value begins with "c_", a compute ID must follow which has been previously defined in the input script. If no bracketed integer is appended, the per-atom vector calculated by the compute is used. If a bracketed integer is appended, the Ith column of the per-atom array calculated by the compute is used. Users can also write code for their own compute styles and "add them to LAMMPS"_Section_modify.html. +See the discussion above for how I can be specified with a wildcard +asterisk to effectively specify multiple values. If a value begins with "f_", a fix ID must follow which has been previously defined in the input script. If no bracketed integer is appended, the per-atom vector calculated by the fix is used. If a bracketed integer is appended, the Ith column of the per-atom array calculated by the fix is used. Note that some fixes only produce their values on certain timesteps, which must be compatible with {Nevery}, else an error results. Users can also write code for their -own fix styles and "add them to LAMMPS"_Section_modify.html. +own fix styles and "add them to LAMMPS"_Section_modify.html. See the +discussion above for how I can be specified with a wildcard asterisk +to effectively specify multiple values. If a value begins with "v_", a variable name must follow which has been previously defined in the input script. Variables of style {atom} can reference thermodynamic keywords and various per-atom attributes, or invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of generating per-atom quantities to average within chunks. :line Additional optional keywords also affect the operation of this fix and its outputs. The {norm} keyword affects how averaging is done for the per-chunk values that are output every {Nfreq} timesteps. It the {norm} setting is {all}, which is the default, a chunk value is summed over all atoms in all {Nrepeat} samples, as is the count of atoms in the chunk. The averaged output value for the chunk on the {Nfreq} timesteps is Total-sum / Total-count. In other words it is an average over atoms across the entire {Nfreq} timescale. If the {norm} setting is {sample}, the chunk value is summed over atoms for each sample, as is the count, and an "average sample value" is computed for each sample, i.e. Sample-sum / Sample-count. The output value for the chunk on the {Nfreq} timesteps is the average of the {Nrepeat} "average sample values", i.e. the sum of {Nrepeat} "average sample values" divided by {Nrepeat}. In other words it is an average of an average. If the {norm} setting is {none}, a similar computation as for the {sample} seting is done, except the individual "average sample values" are "summed sample values". A summed sample value is simply the chunk value summed over atoms in the sample, without dividing by the number of atoms in the sample. The output value for the chunk on the {Nfreq} timesteps is the average of the {Nrepeat} "summed sample values", i.e. the sum of {Nrepeat} "summed sample values" divided by {Nrepeat}. The {ave} keyword determines how the per-chunk values produced every {Nfreq} steps are averaged with values produced on previous steps that were multiples of {Nfreq}, before they are accessed by another output command or written to a file. If the {ave} setting is {one}, which is the default, then the chunk values produced on timesteps that are multiples of {Nfreq} are independent of each other; they are output as-is without further averaging. If the {ave} setting is {running}, then the chunk values produced on timesteps that are multiples of {Nfreq} are summed and averaged in a cumulative sense before being output. Each output chunk value is thus the average of the chunk value produced on that timestep with all preceding values for the same chunk. This running average begins when the fix is defined; it can only be restarted by deleting the fix via the "unfix"_unfix.html command, or re-defining the fix by re-specifying it. If the {ave} setting is {window}, then the chunk values produced on timesteps that are multiples of {Nfreq} are summed and averaged within a moving "window" of time, so that the last M values for the same chunk are used to produce the output. E.g. if M = 3 and Nfreq = 1000, then the output on step 10000 will be the average of the individual chunk values on steps 8000,9000,10000. Outputs on early steps will average over less than M values if they are not available. The {bias} keyword specifies the ID of a temperature compute that removes a "bias" velocity from each atom, specified as {bias-ID}. It is only used when the {temp} value is calculated, to compute the thermal temperature of each chunk after the translational kinetic energy components have been altered in a prescribed way, e.g. to remove a flow velocity profile. See the doc pages for individual computes that calculate a temperature to see which ones implement a bias. The {adof} and {cdof} keywords define the values used in the degree of freedom (DOF) formula described above for for temperature calculation for each chunk. They are only used when the {temp} value is calculated. They can be used to calculate a more appropriate temperature for some kinds of chunks. Here are 3 examples: If spatially binned chunks contain some number of water molecules and "fix shake"_fix_shake.html is used to make each molecule rigid, then you could calculate a temperature with 6 degrees of freedom (DOF) (3 translational, 3 rotational) per molecule by setting {adof} to 2.0. If "compute temp/partial"_compute_temp_partial.html is used with the {bias} keyword to only allow the x component of velocity to contribute to the temperature, then {adof} = 1.0 would be appropriate. If each chunk consists of a large molecule, with some number of its bonds constrained by "fix shake"_fix_shake.html or the entire molecule by "fix rigid/small"_fix_rigid.html, {adof} = 0.0 and {cdof} could be set to the remaining degrees of freedom for the entire molecule (entire chunk in this case), e.g. 6 for 3d, or 3 for 2d, for a rigid molecule. The {file} keyword allows a filename to be specified. Every {Nfreq} timesteps, a section of chunk info will be written to a text file in the following format. A line with the timestep and number of chunks is written. Then one line per chunk is written, containing the chunk ID (1-Nchunk), an optional original ID value, optional coordinate values for chunks that represent spatial bins, the number of atoms in the chunk, and one or more calculated values. More explanation of the optional values is given below. The number of values in each line corresponds to the number of values specified in the fix ave/chunk command. The number of atoms and the value(s) are summed or average quantities, as explained above. 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 {format} keyword sets the numeric format of each value when it is printed to a file via the {file} keyword. Note that all values are floating point quantities. The default format is %g. You can specify a higher precision if desired, e.g. %20.16g. 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: # Chunk-averaged data for fix ID and group name # Timestep Number-of-chunks # Chunk (OrigID) (Coord1) (Coord2) (Coord3) Ncount value1 value2 ... :pre In the first line, ID and name are replaced with the fix-ID and group name. The second line describes the two values that are printed at the first of each section of output. In the third line the values are replaced with the appropriate value names, e.g. fx or c_myCompute[2]. The words in parenthesis only appear with corresponding columns if the chunk style specified for the "compute chunk/atom"_compute_chunk_atom.html command supports them. The OrigID column is only used if the {compress} keyword was set to {yes} for the "compute chunk/atom"_compute_chunk_atom.html command. This means that the original chunk IDs (e.g. molecule IDs) will have been compressed to remove chunk IDs with no atoms assigned to them. Thus a compresed chunk ID of 3 may correspond to an original chunk ID or molecule ID of 415. The OrigID column will list 415 for the 3rd chunk. The CoordN columns only appear if a {binning} style was used in the "compute chunk/atom"_compute_chunk_atom.html command. For {bin/1d}, {bin/2d}, and {bin/3d} styles the column values are the center point of the bin in the corresponding dimension. Just Coord1 is used for {bin/1d}, Coord2 is added for {bin/2d}, Coord3 is added for {bin/3d}. For {bin/sphere}, just Coord1 is used, and it is the radial coordinate. For {bin/cylinder}, Coord1 and Coord2 are used. Coord1 is the radial coordinate (away from the cylinder axis), and coord2 is the coordinate along the cylinder axis. Note that if the value of the {units} keyword used in the "compute chunk/atom command"_compute_chunk_atom.html is {box} or {lattice}, the coordinate values will be in distance "units"_units.html. If the value of the {units} keyword is {reduced}, the coordinate values will be in unitless reduced units (0-1). This is not true for the Coord1 value of style {bin/sphere} or {bin/cylinder} which both represent radial dimensions. Those values are always in distance "units"_units.html. :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 = the number of chunks {Nchunk} as calculated by the specified "compute chunk/atom"_compute_chunk_atom.html command. The # of columns = M+1+Nvalues, where M = 1 to 4, depending on whether the optional columns for OrigID and CoordN are used, as explained above. Following the optional columns, the next column contains the count of atoms in the chunk, and the remaining columns are the Nvalue quantities. When the array is accessed with a row I that exceeds the current number of chunks, than a 0.0 is returned by the fix instead of an error, since the number of chunks can vary as a simulation runs depending on how that value is computed by the compute chunk/atom command. The array values calculated by this fix are treated as "intensive", since they are typically already normalized by the count of atoms in each chunk. No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] none [Related commands:] "compute"_compute.html, "fix ave/atom"_fix_ave_atom.html, "fix ave/histo"_fix_ave_histo.html, "fix ave/time"_fix_ave_time.html, "variable"_variable.html, "fix ave/correlate"_fix_ave_correlate.html [Default:] The option defaults are norm = all, ave = one, bias = none, no file output, and title 1,2,3 = strings as described above. diff --git a/doc/src/fix_ave_correlate.txt b/doc/src/fix_ave_correlate.txt index 79133c732..f50c2d340 100644 --- a/doc/src/fix_ave_correlate.txt +++ b/doc/src/fix_ave_correlate.txt @@ -1,341 +1,368 @@ "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) :link(lc,Section_commands.html#comm) :line 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 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 + c_ID\[I\] = Ith component of global vector calculated by a compute with ID, I can include wildcard (see below) f_ID = global scalar calculated by a fix with ID - f_ID\[I\] = Ith component of global vector calculated by a fix with ID + f_ID\[I\] = Ith component of global vector calculated by a fix with ID, I can include wildcard (see below) v_name = global value calculated by an equal-style variable with name v_name\[I\] = Ith component of a vector-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 +fix 1 all ave/correlate 1 50 10000 c_thermo_press\[*\] [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. 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 or vector-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/chunk"_fix_ave_chunk.html, "fix ave/atom"_fix_ave_atom.html, or "fix ave/histo"_fix_ave_histo.html commands. If you wish to convert a per-atom quantity into a single global value, see the "compute reduce"_compute_reduce.html command. +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. + "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} and {vector} 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. +Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form "*" or "*n" or "n*" or +"m*n". If N = the size of the vector (for {mode} = scalar) or the +number of columns in the array (for {mode} = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive). + +Using a wildcard is the same as if the individual elements of the +vector had been listed one by one. E.g. these 2 fix ave/correlate +commands are equivalent, since the "compute +pressure"_compute_pressure.html command creates a global vector with 6 +values. + +compute myPress all pressure NULL +fix 1 all ave/correlate 1 50 10000 c_myPress\[*\] +fix 1 all ave/correlate 1 50 10000 & + c_myPress\[1\] c_myPress\[2\] c_myPress\[3\] & + c_myPress\[4\] c_myPress\[5\] c_myPress\[6\] :pre :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. +calculated by the compute is used. See the discussion above for how I +can be specified with a wildcard asterisk to effectively specify +multiple values. 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. +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. +calculated by the fix is used. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values. 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 or vector-style variables can be referenced; the latter requires a bracketed term to specify the Ith element of the vector calculated by the variable. See the "variable"_variable.html command for details. Note that variables of style {equal} or {vector} 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/chunk"_fix_ave_chunk.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/src/fix_ave_histo.txt b/doc/src/fix_ave_histo.txt index f55b68059..a364e45a6 100644 --- a/doc/src/fix_ave_histo.txt +++ b/doc/src/fix_ave_histo.txt @@ -1,340 +1,359 @@ "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) :link(lc,Section_commands.html#comm) :line fix ave/histo command :h3 fix ave/histo/weight command :h3 [Syntax:] fix ID group-ID style Nevery Nrepeat Nfreq lo hi Nbin value1 value2 ... keyword args ... :pre ID, group-ID are documented in "fix"_fix.html command :ulb,l style = {ave/histo} or {ave/histo/weight} = style name of this fix command :l Nevery = use input values every this many timesteps :l Nrepeat = # of times to use input values for calculating histogram :l Nfreq = calculate histogram every this many timesteps :l lo,hi = lo/hi bounds within which to histogram :l Nbin = # of histogram bins :l one or more input values can be listed :l value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :l x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component) c_ID = scalar or vector calculated by a compute with ID - c_ID\[I\] = Ith component of vector or Ith column of array calculated by a compute with ID + c_ID\[I\] = Ith component of vector or Ith column of array calculated by a compute with ID, I can include wildcard (see below) f_ID = scalar or vector calculated by a fix with ID - f_ID\[I\] = Ith component of vector or Ith column of array calculated by a fix with ID + f_ID\[I\] = Ith component of vector or Ith column of array calculated by a fix with ID, I can include wildcard (see below) v_name = value(s) calculated by an equal-style or vector-style or atom-style variable with name v_name\[I\] = value calculated by a vector-style variable with name :pre zero or more keyword/arg pairs may be appended :l keyword = {mode} or {file} or {ave} or {start} or {beyond} or {overwrite} or {title1} or {title2} or {title3} :l {mode} arg = {scalar} or {vector} scalar = all input values are scalars vector = all input values are vectors {file} arg = filename filename = name of file to output histogram(s) to {ave} args = {one} or {running} or {window} one = output a new average value every Nfreq steps running = output cumulative average of all previous Nfreq steps window M = output average of M most recent Nfreq steps {start} args = Nstart Nstart = start averaging on this timestep {beyond} arg = {ignore} or {end} or {extra} ignore = ignore values outside histogram lo/hi bounds end = count values outside histogram lo/hi bounds in end bins extra = create 2 extra bins for value outside histogram lo/hi bounds {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, only for vector mode :pre :ule [Examples:] fix 1 all ave/histo 100 5 1000 0.5 1.5 50 c_myTemp file temp.histo ave running fix 1 all ave/histo 100 5 1000 -5 5 100 c_thermo_press\[2\] c_thermo_press\[3\] title1 "My output values" +fix 1 all ave/histo 100 5 1000 -5 5 100 c_thermo_press\[*\] fix 1 all ave/histo 1 100 1000 -2.0 2.0 18 vx vy vz mode vector ave running beyond extra fix 1 all ave/histo/weight 1 1 1 10 100 2000 c_XRD\[1\] c_XRD\[2\] :pre [Description:] -Use one or more values as inputs every few timesteps, histogram them, -and average the histogram over longer timescales. The resulting -histogram can be used by other "output +Use one or more values as inputs every few timesteps to create a +single histogram. The histogram can then be averaged over longer +timescales. The resulting histogram can be used by other "output commands"_Section_howto.html#howto_15, and can also be written to a file. The fix ave/histo/weight command has identical syntax to fix ave/histo, except that exactly two values must be specified. See details below. The group specified with this command is ignored for global and local input values. For per-atom input values, only atoms in the group contribute to the histogram. Note that regardless of the specified group, specified values may represent calculations performed by computes and fixes which store their own "group" definition. A histogram is simply a count of the number of values that fall within a histogram bin. {Nbins} are defined, with even spacing between {lo} and {hi}. Values that fall outside the lo/hi bounds can be treated in different ways; see the discussion of the {beyond} keyword below. Each input value can be an atom attribute (position, velocity, force component) or can be the result of a "compute"_compute.html or "fix"_fix.html or the evaluation of an equal-style or vector-style or atom-style "variable"_variable.html. The set of input values can be either all global, all per-atom, or all local quantities. Inputs of different kinds (e.g. global and per-atom) cannot be mixed. Atom attributes are per-atom vector values. See the doc page for individual "compute" and "fix" commands to see what kinds of quantities they generate. -The input values must either be all scalars or all vectors (or -arrays), depending on the setting of the {mode} keyword. - Note that the output of this command is a single histogram for all input values combined together, not one histogram per input value. See below for details on the format of the output of this fix. -If {mode} = vector, then the input values may either be vectors or -arrays. If a global array is listed, then it is the same as if the -individual columns of the array had been listed one by one. -E.g. these 2 fix ave/histo commands are equivalent, since the "compute -com/chunk"_compute_com_chunk.html command creates a global array -with 3 columns: +The input values must either be all scalars or all vectors (or +arrays), depending on the setting of the {mode} keyword. + +If {mode} = scalar, then the input values must be scalars, or vectors +with a bracketed term appended, indicating the Ith value of the vector +is used. + +If {mode} = vector, then the input values must be vectors, or arrays +with a bracketed term appended, indicating the Ith column of the array +is used. All vectors must be the same length, which is the length of +the vector or number of rows in the array. + +Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form "*" or "*n" or "n*" or +"m*n". If N = the size of the vector (for {mode} = scalar) or the +number of columns in the array (for {mode} = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive). + +Using a wildcard is the same as if the individual elements of the +vector or columns of the array had been listed one by one. E.g. these +2 fix ave/histo commands are equivalent, since the "compute +com/chunk"_compute_com_chunk.html command creates a global array with +3 columns: compute myCOM all com/chunk -fix 1 all ave/histo 100 1 100 c_myCOM file tmp1.com mode vector +fix 1 all ave/histo 100 1 100 c_myCOM\[*\] file tmp1.com mode vector fix 2 all ave/histo 100 1 100 c_myCOM\[1\] c_myCOM\[2\] c_myCOM\[3\] file tmp2.com mode vector :pre If the fix ave/histo/weight command is used, exactly two values must be specified. If the values are vectors, they must be the same length. The first value (a scalar or vector) is what is histogrammed into bins, in the same manner the fix ave/histo command operates. The second value (a scalar or vector) is used as a "weight". This means that instead of each value tallying a "1" to its bin, the corresponding weight is tallied. E.g. the Nth entry in the first vector tallies the Nth entry (weight) in the second vector. :line The {Nevery}, {Nrepeat}, and {Nfreq} arguments specify on what timesteps the input values will be used in order to contribute to the histogram. The final histogram is generated on timesteps that are multiple of {Nfreq}. It is averaged over {Nrepeat} histograms, computed in the preceding portion of the simulation every {Nevery} timesteps. {Nfreq} must be a multiple of {Nevery} and {Nevery} must be non-zero even if {Nrepeat} is 1. Also, the timesteps contributing to the histogram value cannot overlap, i.e. Nrepeat*Nevery can not exceed Nfreq. For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then input values on timesteps 90,92,94,96,98,100 will be used to compute the final histogram on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time averaging of the histogram is done; a histogram is simply generated on timesteps 100,200,etc. :line The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are self-explanatory. Note that other atom attributes can be used as inputs to this fix by using the "compute property/atom"_compute_property_atom.html command and then specifying an input value from that compute. If a value begins with "c_", a compute ID must follow which has been previously defined in the input script. If {mode} = scalar, then if no bracketed term is appended, the global scalar calculated by the compute is used. If a bracketed term is appended, the Ith element of the global vector calculated by the compute is used. If {mode} = vector, then if no bracketed term is appended, the global or per-atom -or local vector calculated by the compute is used. Or if the compute -calculates an array, all of the columns of the array are used as if -they had been specified as individual vectors (see description above). -If a bracketed term is appended, the Ith column of the global or -per-atom or local array calculated by the compute is used. +or local vector calculated by the compute is used. If a bracketed +term is appended, the Ith column of the global or per-atom or local +array calculated by the compute is used. See the discussion above for +how I can be specified with a wildcard asterisk to effectively specify +multiple values. Note that there is a "compute reduce"_compute_reduce.html command which can sum per-atom quantities into a global scalar or vector which can thus be accessed by fix ave/histo. Or it can be a compute defined not in your input script, but by "thermodynamic output"_thermo_style.html or other fixes such as "fix nvt"_fix_nh.html or "fix temp/rescale"_fix_temp_rescale.html. See the doc pages for these commands which give the IDs of these computes. Users can also write code for their own compute styles and "add them to LAMMPS"_Section_modify.html. If a value begins with "f_", a fix ID must follow which has been previously defined in the input script. If {mode} = scalar, then if no bracketed term is appended, the global scalar calculated by the fix is used. If a bracketed term is appended, the Ith element of the global vector calculated by the fix is used. If {mode} = vector, then if no bracketed term is appended, the global or per-atom or local -vector calculated by the fix is used. Or if the fix calculates an -array, all of the columns of the array are used as if they had been -specified as individual vectors (see description above). If a -bracketed term is appended, the Ith column of the global or per-atom -or local array calculated by the fix is used. +vector calculated by the fix is used. If a bracketed term is +appended, the Ith column of the global or per-atom or local array +calculated by the fix is used. See the discussion above for how I can +be specified with a wildcard asterisk to effectively specify multiple +values. Note that some fixes only produce their values on certain timesteps, which must be compatible with {Nevery}, else an error will result. Users can also write code for their own fix styles and "add them to LAMMPS"_Section_modify.html. If a value begins with "v_", a variable name must follow which has been previously defined in the input script. If {mode} = scalar, then only equal-style or vector-style variables can be used, which both produce global values. In this mode, a vector-style variable requires a bracketed term to specify the Ith element of the vector calculated by the variable. If {mode} = vector, then only vector-style or atom-style variables can be used, which produce a global or per-atom vector respectively. The vector-style variable must be used without a bracketed term. See the "variable"_variable.html command for details. Note that variables of style {equal}, {vector}, and {atom} define a formula which can reference individual atom properties or thermodynamic keywords, or they can invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of specifying quantities to histogram. :line Additional optional keywords also affect the operation of this fix. If the {mode} keyword is set to {scalar}, then all input values must be global scalars, or elements of global vectors. If the {mode} keyword is set to {vector}, then all input values must be global or per-atom or local vectors, or columns of global or per-atom or local arrays. The {beyond} keyword determines how input values that fall outside the {lo} to {hi} bounds are treated. Values such that {lo} <= value <= {hi} are assigned to one bin. Values on a bin boundary are assigned to the lower of the 2 bins. If {beyond} is set to {ignore} then values < {lo} and values > {hi} are ignored, i.e. they are not binned. If {beyond} is set to {end} then values < {lo} are counted in the first bin and values > {hi} are counted in the last bin. If {beyond} is set to {extend} then two extra bins are created, so that there are Nbins+2 total bins. Values < {lo} are counted in the first bin and values > {hi} are counted in the last bin (Nbins+1). Values between {lo} and {hi} (inclusive) are counted in bins 2 thru Nbins+1. The "coordinate" stored and printed for these two extra bins is {lo} and {hi}. The {ave} keyword determines how the histogram produced every {Nfreq} steps are averaged with histograms produced on previous steps that were multiples of {Nfreq}, before they are accessed by another output command or written to a file. If the {ave} setting is {one}, then the histograms produced on timesteps that are multiples of {Nfreq} are independent of each other; they are output as-is without further averaging. If the {ave} setting is {running}, then the histograms produced on timesteps that are multiples of {Nfreq} are summed and averaged in a cumulative sense before being output. Each bin value in the histogram is thus the average of the bin value produced on that timestep with all preceding values for the same bin. This running average begins when the fix is defined; it can only be restarted by deleting the fix via the "unfix"_unfix.html command, or by re-defining the fix by re-specifying it. If the {ave} setting is {window}, then the histograms produced on timesteps that are multiples of {Nfreq} are summed within a moving "window" of time, so that the last M histograms are used to produce the output. E.g. if M = 3 and Nfreq = 1000, then the output on step 10000 will be the combined histogram of the individual histograms on steps 8000,9000,10000. Outputs on early steps will be sums over less than M histograms if they are not available. The {start} keyword specifies what timestep histogramming will begin on. The default is step 0. Often input values can be 0.0 at time 0, so setting {start} to a larger value can avoid including a 0.0 in a running or windowed histogram. The {file} keyword allows a filename to be specified. Every {Nfreq} steps, one histogram is written to the file. This includes a leading line that contains the timestep, number of bins, the total count of values contributing to the histogram, the count of values that were not histogrammed (see the {beyond} keyword), the minimum value encountered, and the maximum value encountered. The min/max values include values that were not histogrammed. Following the leading line, one line per bin is written into the file. Each line contains the bin #, the coordinate for the center of the bin (between {lo} and {hi}), the count of values in the bin, and the normalized count. The normalized count is the bin count divided by the total count (not including values not histogrammed), so that the normalized values sum to 1.0 across all bins. The {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: # Histogram for fix ID # TimeStep Number-of-bins Total-counts Missing-counts Min-value Max-value # Bin Coord Count Count/Total :pre In the first line, ID is replaced with the fix-ID. The second line describes the six values that are printed at the first of each section of output. The third describes the 4 values printed for each bin in the histogram. :line [Restart, fix_modify, output, run start/stop, minimize info:] No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix produces a global vector and global array which can be accessed by various "output commands"_Section_howto.html#howto_15. The values can only be accessed on timesteps that are multiples of {Nfreq} since that is when a histogram is generated. The global vector has 4 values: 1 = total counts in the histogram 2 = values that were not histogrammed (see {beyond} keyword) 3 = min value of all input values, including ones not histogrammed 4 = max value of all input values, including ones not histogrammed :ul The global array has # of rows = Nbins and # of columns = 3. The first column has the bin coordinate, the 2nd column has the count of values in that histogram bin, and the 3rd column has the bin count divided by the total count (not including missing counts), so that the values in the 3rd column sum to 1.0. The vector and array values calculated by this fix are all treated as intensive. If this is not the case, e.g. due to histogramming per-atom input values, then you will need to account for that when interpreting the values produced by this fix. No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] none [Related commands:] "compute"_compute.html, "fix ave/atom"_fix_ave_atom.html, "fix ave/chunk"_fix_ave_chunk.html, "fix ave/time"_fix_ave_time.html, "variable"_variable.html, "fix ave/correlate"_fix_ave_correlate.html, [Default:] none The option defaults are mode = scalar, ave = one, start = 0, no file output, beyond = ignore, and title 1,2,3 = strings as described above. diff --git a/doc/src/fix_ave_time.txt b/doc/src/fix_ave_time.txt index f2d21e306..569cdc96c 100644 --- a/doc/src/fix_ave_time.txt +++ b/doc/src/fix_ave_time.txt @@ -1,332 +1,349 @@ "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) :link(lc,Section_commands.html#comm) :line fix ave/time command :h3 [Syntax:] fix ID group-ID ave/time Nevery Nrepeat Nfreq value1 value2 ... keyword args ... :pre ID, group-ID are documented in "fix"_fix.html command :ulb,l ave/time = style name of this fix command :l Nevery = use input values every this many timesteps :l Nrepeat = # of times to use input values for calculating averages :l Nfreq = calculate averages every this many timesteps :l one or more input values can be listed :l value = c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :l - c_ID = global scalar, vector, or array calculated by a compute with ID - c_ID\[I\] = Ith component of global vector or Ith column of global array calculated by a compute with ID - f_ID = global scalar, vector, or array calculated by a fix with ID - f_ID\[I\] = Ith component of global vector or Ith column of global array calculated by a fix with ID + c_ID = global scalar or vector calculated by a compute with ID + c_ID\[I\] = Ith component of global vector or Ith column of global array calculated by a compute with ID, I can include wildcard (see below) + f_ID = global scalar or vector calculated by a fix with ID + f_ID\[I\] = Ith component of global vector or Ith column of global array calculated by a fix with ID, I can include wildcard (see below) v_name = value(s) calculated by an equal-style or vector-style variable with name v_name\[I\] = value calculated by a vector-style variable with name :pre zero or more keyword/arg pairs may be appended :l keyword = {mode} or {file} or {ave} or {start} or {off} or {overwrite} or {title1} or {title2} or {title3} :l {mode} arg = {scalar} or {vector} scalar = all input values are global scalars vector = all input values are global vectors or global arrays {ave} args = {one} or {running} or {window M} one = output a new average value every Nfreq steps running = output cummulative average of all previous Nfreq steps window M = output average of M most recent Nfreq steps {start} args = Nstart Nstart = start averaging on this timestep {off} arg = M = do not average this value M = value # from 1 to Nvalues {file} arg = filename filename = name of file to output time averages to {overwrite} arg = none = overwrite output file with only latest output {format} arg = string string = C-style format string {title1} arg = string string = text to print as 1st line of output file {title2} arg = string string = text to print as 2nd line of output file {title3} arg = string string = text to print as 3rd line of output file, only for vector mode :pre :ule [Examples:] fix 1 all ave/time 100 5 1000 c_myTemp c_thermo_temp file temp.profile fix 1 all ave/time 100 5 1000 c_thermo_press\[2\] ave window 20 & title1 "My output values" +fix 1 all ave/time 100 5 1000 c_thermo_press\[*\] fix 1 all ave/time 1 100 1000 f_indent f_indent\[1\] file temp.indent off 1 :pre [Description:] Use one or more global values as inputs every few timesteps, and average them over longer timescales. The resulting averages can be used by other "output commands"_Section_howto.html#howto_15 such as "thermo_style custom"_thermo_style.html, and can also be written to a file. Note that if no time averaging is done, this command can be used as a convenient way to simply output one or more global values to a file. The group specified with this command is ignored. However, note that specified values may represent calculations performed by computes and fixes which store their own "group" definitions. Each listed value can be the result of a "compute"_compute.html or "fix"_fix.html or the evaluation of an equal-style or vector-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/chunk"_fix_ave_chunk.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} and {vector} are the only ones that can be used with this fix. Variables of style {atom} cannot be used, since they produce per-atom values. -The input values must either be all scalars or all vectors (or -arrays), depending on the setting of the {mode} keyword. In both -cases, the averaging is performed independently on each input value. -I.e. each input scalar is averaged independently and each element of -each input vector (or array) is averaged independently. - -If {mode} = vector, then the input values may either be vectors or -arrays and all must be the same "length", which is the length of the -vector or number of rows in the array. If a global array is listed, -then it is the same as if the individual columns of the array had been -listed one by one. E.g. these 2 fix ave/time commands are equivalent, -since the "compute rdf"_compute_rdf.html command creates, in this -case, a global array with 3 columns, each of length 50: +The input values must either be all scalars or all vectors depending +on the setting of the {mode} keyword. In both cases, the averaging is +performed independently on each input value. I.e. each input scalar +is averaged independently or each element of each input vector is +averaged independently. + +If {mode} = scalar, then the input values must be scalars, or vectors +with a bracketed term appended, indicating the Ith value of the vector +is used. + +If {mode} = vector, then the input values must be vectors, or arrays +with a bracketed term appended, indicating the Ith column of the array +is used. All vectors must be the same length, which is the length of +the vector or number of rows in the array. + +Note that for values from a compute or fix, the bracketed index I can +be specified using a wildcard asterisk with the index to effectively +specify multiple values. This takes the form "*" or "*n" or "n*" or +"m*n". If N = the size of the vector (for {mode} = scalar) or the +number of columns in the array (for {mode} = vector), then an asterisk +with no numeric values means all indices from 1 to N. A leading +asterisk means all indices from 1 to n (inclusive). A trailing +asterisk means all indices from n to N (inclusive). A middle asterisk +means all indices from m to n (inclusive). + +Using a wildcard is the same as if the individual elements of the +vector or columns of the array had been listed one by one. E.g. these +2 fix ave/time commands are equivalent, since the "compute +rdf"_compute_rdf.html command creates, in this case, a global array +with 3 columns, each of length 50: compute myRDF all rdf 50 1 2 -fix 1 all ave/time 100 1 100 c_myRDF file tmp1.rdf mode vector +fix 1 all ave/time 100 1 100 c_myRDF\[*\] file tmp1.rdf mode vector fix 2 all ave/time 100 1 100 c_myRDF\[1\] c_myRDF\[2\] c_myRDF\[3\] file tmp2.rdf mode vector :pre :line The {Nevery}, {Nrepeat}, and {Nfreq} arguments specify on what timesteps the input values will be used in order to contribute to the average. The final averaged quantities are generated on timesteps that are a mlutiple of {Nfreq}. The average is over {Nrepeat} quantities, computed in the preceding portion of the simulation every {Nevery} timesteps. {Nfreq} must be a multiple of {Nevery} and {Nevery} must be non-zero even if {Nrepeat} is 1. Also, the timesteps contributing to the average value cannot overlap, i.e. Nrepeat*Nevery can not exceed Nfreq. For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on timesteps 90,92,94,96,98,100 will be used to compute the final average on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time averaging is done; values are simply generated on timesteps 100,200,etc. :line If a value begins with "c_", a compute ID must follow which has been previously defined in the input script. If {mode} = scalar, then if no bracketed term is appended, the global scalar calculated by the compute is used. If a bracketed term is appended, the Ith element of the global vector calculated by the compute is used. If {mode} = vector, then if no bracketed term is appended, the global vector -calculated by the compute is used. Or if the compute calculates an -array, all of the columns of the global array are used as if they had -been specified as individual vectors (see description above). If a -bracketed term is appended, the Ith column of the global array -calculated by the compute is used. +calculated by the compute is used. If a bracketed term is appended, +the Ith column of the global array calculated by the compute is used. +See the discussion above for how I can be specified with a wildcard +asterisk to effectively specify multiple values. Note that there is a "compute reduce"_compute_reduce.html command which can sum per-atom quantities into a global scalar or vector which can thus be accessed by fix ave/time. Or it can be a compute defined not in your input script, but by "thermodynamic output"_thermo_style.html or other fixes such as "fix nvt"_fix_nh.html or "fix temp/rescale"_fix_temp_rescale.html. See the doc pages for these commands which give the IDs of these computes. Users can also write code for their own compute styles and "add them to LAMMPS"_Section_modify.html. If a value begins with "f_", a fix ID must follow which has been previously defined in the input script. If {mode} = scalar, then if no bracketed term is appended, the global scalar calculated by the fix is used. If a bracketed term is appended, the Ith element of the global vector calculated by the fix is used. If {mode} = vector, then if no bracketed term is appended, the global vector calculated by the -fix is used. Or if the fix calculates an array, all of the columns of -the global array are used as if they had been specified as individual -vectors (see description above). If a bracketed term is appended, the -Ith column of the global array calculated by the fix is used. +fix is used. If a bracketed term is appended, the Ith column of the +global array calculated by the fix is used. See the discussion above +for how I can be specified with a wildcard asterisk to effectively +specify multiple values. Note that some fixes only produce their values on certain timesteps, which must be compatible with {Nevery}, else an error will result. Users can also write code for their own fix styles and "add them to LAMMPS"_Section_modify.html. If a value begins with "v_", a variable name must follow which has been previously defined in the input script. If {mode} = scalar, then only equal-style or vector-style variables can be used, which both produce global values. In this mode, a vector-style variable requires a bracketed term to specify the Ith element of the vector calculated by the variable. If {mode} = vector, then only a vector-style variable can be used, without a bracketed term. See the "variable"_variable.html command for details. Note that variables of style {equal} and {vector} define a formula which can reference individual atom properties or thermodynamic keywords, or they can invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of specifying quantities to time average. :line Additional optional keywords also affect the operation of this fix. If the {mode} keyword is set to {scalar}, then all input values must be global scalars, or elements of global vectors. If the {mode} keyword is set to {vector}, then all input values must be global vectors, or columns of global arrays. They can also be global arrays, which are converted into a series of global vectors (one per column), as explained above. The {ave} keyword determines how the values produced every {Nfreq} steps are averaged with values produced on previous steps that were multiples of {Nfreq}, before they are accessed by another output command or written to a file. If the {ave} setting is {one}, then the values produced on timesteps that are multiples of {Nfreq} are independent of each other; they are output as-is without further averaging. If the {ave} setting is {running}, then the values produced on timesteps that are multiples of {Nfreq} are summed and averaged in a cummulative sense before being output. Each output value is thus the average of the value produced on that timestep with all preceding values. This running average begins when the fix is defined; it can only be restarted by deleting the fix via the "unfix"_unfix.html command, or by re-defining the fix by re-specifying it. If the {ave} setting is {window}, then the values produced on timesteps that are multiples of {Nfreq} are summed and averaged within a moving "window" of time, so that the last M values are used to produce the output. E.g. if M = 3 and Nfreq = 1000, then the output on step 10000 will be the average of the individual values on steps 8000,9000,10000. Outputs on early steps will average over less than M values if they are not available. The {start} keyword specifies what timestep averaging will begin on. The default is step 0. Often input values can be 0.0 at time 0, so setting {start} to a larger value can avoid including a 0.0 in a running or windowed average. The {off} keyword can be used to flag any of the input values. If a value is flagged, it will not be time averaged. Instead the most recent input value will always be stored and output. This is useful if one of more of the inputs produced by a compute or fix or variable are effectively constant or are simply current values. E.g. they are being written to a file with other time-averaged values for purposes of creating well-formatted output. The {file} keyword allows a filename to be specified. Every {Nfreq} steps, one quantity or vector of quantities is written to the file for each input value specified in the fix ave/time command. For {mode} = scalar, this means a single line is written each time output is performed. Thus the file ends up to be a series of lines, i.e. one column of numbers for each input value. For {mode} = vector, an array of numbers is written each time output is performed. The number of rows is the length of the input vectors, and the number of columns is the number of values. Thus the file ends up to be a series of these array sections. The {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 {format} keyword sets the numeric format of each value when it is printed to a file via the {file} keyword. Note that all values are floating point quantities. The default format is %g. You can specify a higher precision if desired, e.g. %20.16g. The {title1} and {title2} and {title3} keywords allow specification of the strings that will be printed as the first 2 or 3 lines of the output file, assuming the {file} keyword was used. LAMMPS uses default values for each of these, so they do not need to be specified. By default, these header lines are as follows for {mode} = scalar: # Time-averaged data for fix ID # TimeStep value1 value2 ... :pre In the first line, ID is replaced with the fix-ID. In the second line the values are replaced with the appropriate fields from the fix ave/time command. There is no third line in the header of the file, so the {title3} setting is ignored when {mode} = scalar. By default, these header lines are as follows for {mode} = vector: # Time-averaged data for fix ID # TimeStep Number-of-rows # Row value1 value2 ... :pre In the first line, ID is replaced with the fix-ID. The second line describes the two values that are printed at the first of each section of output. In the third line the values are replaced with the appropriate fields from the fix ave/time command. :line [Restart, fix_modify, output, run start/stop, minimize info:] No information about this fix is written to "binary restart files"_restart.html. None of the "fix_modify"_fix_modify.html options are relevant to this fix. This fix produces a global scalar or global vector or global array which can be accessed by various "output commands"_Section_howto.html#howto_15. The values can only be accessed on timesteps that are multiples of {Nfreq} since that is when averaging is performed. A scalar is produced if only a single input value is averaged and {mode} = scalar. A vector is produced if multiple input values are averaged for {mode} = scalar, or a single input value for {mode} = vector. In the first case, the length of the vector is the number of inputs. In the second case, the length of the vector is the same as the length of the input vector. An array is produced if multiple input values are averaged and {mode} = vector. The global array has # of rows = length of the input vectors and # of columns = number of inputs. If the fix prouduces a scalar or vector, then the scalar and each element of the vector can be either "intensive" or "extensive", depending on whether the values contributing to the scalar or vector element are "intensive" or "extensive". If the fix produces an array, then all elements in the array must be the same, either "intensive" or "extensive". If a compute or fix provides the value being time averaged, then the compute or fix determines whether the value is intensive or extensive; see the doc page for that compute or fix for further info. Values produced by a variable are treated as intensive. No parameter of this fix can be used with the {start/stop} keywords of the "run"_run.html command. This fix is not invoked during "energy minimization"_minimize.html. [Restrictions:] none [Related commands:] "compute"_compute.html, "fix ave/atom"_fix_ave_atom.html, "fix ave/chunk"_fix_ave_chunk.html, "fix ave/histo"_fix_ave_histo.html, "variable"_variable.html, "fix ave/correlate"_fix_ave_correlate.html, [Default:] The option defaults are mode = scalar, ave = one, start = 0, no file output, format = %g, title 1,2,3 = strings as described above, and no off settings for any input values. diff --git a/doc/src/thermo_style.txt b/doc/src/thermo_style.txt index 2d69f9f89..5be20b6c2 100644 --- a/doc/src/thermo_style.txt +++ b/doc/src/thermo_style.txt @@ -1,375 +1,408 @@ "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) :link(lc,Section_commands.html#comm) :line thermo_style command :h3 [Syntax:] thermo_style style args :pre style = {one} or {multi} or {custom} :ulb,l args = list of arguments for a particular style :l {one} args = none {multi} args = none {custom} args = list of keywords possible keywords = step, elapsed, elaplong, dt, time, cpu, tpcpu, spcpu, cpuremain, part, timeremain, atoms, temp, press, pe, ke, etotal, enthalpy, evdwl, ecoul, epair, ebond, eangle, edihed, eimp, emol, elong, etail, vol, density, lx, ly, lz, xlo, xhi, ylo, yhi, zlo, zhi, xy, xz, yz, xlat, ylat, zlat, bonds, angles, dihedrals, impropers, pxx, pyy, pzz, pxy, pxz, pyz, fmax, fnorm, nbuild, ndanger, cella, cellb, cellc, cellalpha, cellbeta, cellgamma, c_ID, c_ID\[I\], c_ID\[I\]\[J\], f_ID, f_ID\[I\], f_ID\[I\]\[J\], v_name, v_name\[I\] step = timestep elapsed = timesteps since start of this run elaplong = timesteps since start of initial run in a series of runs dt = timestep size time = simulation time cpu = elapsed CPU time in seconds tpcpu = time per CPU second spcpu = timesteps per CPU second cpuremain = estimated CPU time remaining in run part = which partition (0 to Npartition-1) this is timeremain = remaining time in seconds on timer timeout. atoms = # of atoms temp = temperature press = pressure pe = total potential energy ke = kinetic energy etotal = total energy (pe + ke) enthalpy = enthalpy (etotal + press*vol) evdwl = VanderWaal pairwise energy (includes etail) ecoul = Coulombic pairwise energy epair = pairwise energy (evdwl + ecoul + elong) ebond = bond energy eangle = angle energy edihed = dihedral energy eimp = improper energy emol = molecular energy (ebond + eangle + edihed + eimp) elong = long-range kspace energy etail = VanderWaal energy long-range tail correction vol = volume density = mass density of system lx,ly,lz = box lengths in x,y,z xlo,xhi,ylo,yhi,zlo,zhi = box boundaries xy,xz,yz = box tilt for triclinic (non-orthogonal) simulation boxes xlat,ylat,zlat = lattice spacings as calculated by "lattice"_lattice.html command bonds,angles,dihedrals,impropers = # of these interactions defined pxx,pyy,pzz,pxy,pxz,pyz = 6 components of pressure tensor fmax = max component of force on any atom in any dimension fnorm = length of force vector for all atoms nbuild = # of neighbor list builds ndanger = # of dangerous neighbor list builds cella,cellb,cellc = periodic cell lattice constants a,b,c cellalpha, cellbeta, cellgamma = periodic cell angles alpha,beta,gamma c_ID = global scalar value calculated by a compute with ID - c_ID\[I\] = Ith component of global vector calculated by a compute with ID + c_ID\[I\] = Ith component of global vector calculated by a compute with ID, I can include wildcard (see below) c_ID\[I\]\[J\] = I,J component of global array calculated by a compute with ID f_ID = global scalar value calculated by a fix with ID - f_ID\[I\] = Ith component of global vector calculated by a fix with ID + f_ID\[I\] = Ith component of global vector calculated by a fix with ID, I can include wildcard (see below) f_ID\[I\]\[J\] = I,J component of global array calculated by a fix with ID v_name = value calculated by an equal-style variable with name v_name\[I\] = value calculated by a vector-style variable with name :pre :ule [Examples:] thermo_style multi thermo_style custom step temp pe etotal press vol -thermo_style custom step temp etotal c_myTemp v_abc :pre +thermo_style custom step temp etotal c_myTemp v_abc +thermo_style custom step temp etotal c_myTemp\[*\] v_abc :pre [Description:] Set the style and content for printing thermodynamic data to the screen and log file. Style {one} prints a one-line summary of thermodynamic info that is the equivalent of "thermo_style custom step temp epair emol etotal press". The line contains only numeric values. Style {multi} prints a multiple-line listing of thermodynamic info that is the equivalent of "thermo_style custom etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press". The listing contains numeric values and a string ID for each quantity. Style {custom} is the most general setting and allows you to specify which of the keywords listed above you want printed on each thermodynamic timestep. Note that the keywords c_ID, f_ID, v_name are references to "computes"_compute.html, "fixes"_fix.html, and equal-style "variables"_variable.html" that have been defined elsewhere in the input script or can even be new styles which users have added to LAMMPS (see the "Section_modify"_Section_modify.html section of the documentation). Thus the {custom} style provides a flexible means of outputting essentially any desired quantity as a simulation proceeds. All styles except {custom} have {vol} appended to their list of outputs if the simulation box volume changes during the simulation. The values printed by the various keywords are instantaneous values, calculated on the current timestep. Time-averaged quantities, which include values from previous timesteps, can be output by using the f_ID keyword and accessing a fix that does time-averaging such as the "fix ave/time"_fix_ave_time.html command. Options invoked by the "thermo_modify"_thermo_modify.html command can be used to set the one- or multi-line format of the print-out, the normalization of thermodynamic output (total values versus per-atom values for extensive quantities (ones which scale with the number of atoms in the system), and the numeric precision of each printed value. NOTE: When you use a "thermo_style" command, all thermodynamic settings are restored to their default values, including those previously set by a "thermo_modify"_thermo_modify.html command. Thus if your input script specifies a thermo_style command, you should use the thermo_modify command after it. :line +Note that for values from a compute or fix, the bracketed index I used +to index a vector, as in {c_ID\[I\]} or {f_ID\[I\]}, can be specified +using a wildcard asterisk with the index to effectively specify +multiple values. This takes the form "*" or "*n" or "n*" or "m*n". +If N = the size of the vector (for {mode} = scalar) or the number of +columns in the array (for {mode} = vector), then an asterisk with no +numeric values means all indices from 1 to N. A leading asterisk +means all indices from 1 to n (inclusive). A trailing asterisk means +all indices from n to N (inclusive). A middle asterisk means all +indices from m to n (inclusive). + +Using a wildcard is the same as if the individual elements of the +vector had been listed one by one. E.g. these 2 thermo_style commands +are equivalent, since the "compute temp"_compute_temp.html command +creates a global vector with 6 values. + +compute myTemp all temp +thermo_style custom step temp etotal c_myTemp\[*\] +thermo_style custom step temp etotal & + c_myTemp\[1\] c_myTemp\[2\] c_myTemp\[3\] & + c_myTemp\[4\] c_myTemp\[5\] c_myTemp\[6\] :pre + +:line + Several of the thermodynamic quantities require a temperature to be computed: "temp", "press", "ke", "etotal", "enthalpy", "pxx", etc. By default this is done by using a {temperature} compute which is created when LAMMPS starts up, as if this command had been issued: compute thermo_temp all temp :pre See the "compute temp"_compute_temp.html command for details. Note that the ID of this compute is {thermo_temp} and the group is {all}. You can change the attributes of this temperature (e.g. its degrees-of-freedom) via the "compute_modify"_compute_modify.html command. Alternatively, you can directly assign a new compute (that calculates temperature) which you have defined, to be used for calculating any thermodynamic quantity that requires a temperature. This is done via the "thermo_modify"_thermo_modify.html command. Several of the thermodynamic quantities require a pressure to be computed: "press", "enthalpy", "pxx", etc. By default this is done by using a {pressure} compute which is created when LAMMPS starts up, as if this command had been issued: compute thermo_press all pressure thermo_temp :pre See the "compute pressure"_compute_pressure.html command for details. Note that the ID of this compute is {thermo_press} and the group is {all}. You can change the attributes of this pressure via the "compute_modify"_compute_modify.html command. Alternatively, you can directly assign a new compute (that calculates pressure) which you have defined, to be used for calculating any thermodynamic quantity that requires a pressure. This is done via the "thermo_modify"_thermo_modify.html command. Several of the thermodynamic quantities require a potential energy to be computed: "pe", "etotal", "ebond", etc. This is done by using a {pe} compute which is created when LAMMPS starts up, as if this command had been issued: compute thermo_pe all pe :pre See the "compute pe"_compute_pe.html command for details. Note that the ID of this compute is {thermo_pe} and the group is {all}. You can change the attributes of this potential energy via the "compute_modify"_compute_modify.html command. :line The kinetic energy of the system {ke} is inferred from the temperature of the system with 1/2 Kb T of energy for each degree of freedom. Thus, using different "compute commands"_compute.html for calculating temperature, via the "thermo_modify temp"_thermo_modify.html command, may yield different kinetic energies, since different computes that calculate temperature can subtract out different non-thermal components of velocity and/or include different degrees of freedom (translational, rotational, etc). The potential energy of the system {pe} will include contributions from fixes if the "fix_modify thermo"_fix_modify.html option is set for a fix that calculates such a contribution. For example, the "fix wall/lj93"_fix_wall.html fix calculates the energy of atoms interacting with the wall. See the doc pages for "individual fixes" to see which ones contribute. A long-range tail correction {etail} for the VanderWaal pairwise energy will be non-zero only if the "pair_modify tail"_pair_modify.html option is turned on. The {etail} contribution is included in {evdwl}, {epair}, {pe}, and {etotal}, and the corresponding tail correction to the pressure is included in {press} and {pxx}, {pyy}, etc. :line The {step}, {elapsed}, and {elaplong} keywords refer to timestep count. {Step} is the current timestep, or iteration count when a "minimization"_minimize.html is being performed. {Elapsed} is the number of timesteps elapsed since the beginning of this run. {Elaplong} is the number of timesteps elapsed since the beginning of an initial run in a series of runs. See the {start} and {stop} keywords for the "run"_run.html for info on how to invoke a series of runs that keep track of an initial starting time. If these keywords are not used, then {elapsed} and {elaplong} are the same value. The {dt} keyword is the current timestep size in time "units"_units.html. The {time} keyword is the current elapsed simulation time, also in time "units"_units.html, which is simply (step*dt) if the timestep size has not changed and the timestep has not been reset. If the timestep has changed (e.g. via "fix dt/reset"_fix_dt_reset.html) or the timestep has been reset (e.g. via the "reset_timestep" command), then the simulation time is effectively a cummulative value up to the current point. The {cpu} keyword is elapsed CPU seconds since the beginning of this run. The {tpcpu} and {spcpu} keywords are measures of how fast your simulation is currently running. The {tpcpu} keyword is simulation time per CPU second, where simulation time is in time "units"_units.html. E.g. for metal units, the {tpcpu} value would be picoseconds per CPU second. The {spcpu} keyword is the number of timesteps per CPU second. Both quantities are on-the-fly metrics, measured relative to the last time they were invoked. Thus if you are printing out thermodyamic output every 100 timesteps, the two keywords will continually output the time and timestep rate for the last 100 steps. The {tpcpu} keyword does not attempt to track any changes in timestep size, e.g. due to using the "fix dt/reset"_fix_dt_reset.html command. The {cpuremain} keyword estimates the CPU time remaining in the current run, based on the time elapsed thus far. It will only be a good estimate if the CPU time/timestep for the rest of the run is similar to the preceding timesteps. On the initial timestep the value will be 0.0 since there is no history to estimate from. For a minimization run performed by the "minimize" command, the estimate is based on the {maxiter} parameter, assuming the minimization will proceed for the maximum number of allowed iterations. The {part} keyword is useful for multi-replica or multi-partition simulations to indicate which partition this output and this file corresponds to, or for use in a "variable"_variable.html to append to a filename for output specific to this partition. See "Section_start 7"_Section_start.html#start_7 of the manual for details on running in multi-partition mode. The {timeremain} keyword returns the remaining seconds when a timeout has been configured via the "timer timeout"_timer.html command. If the timeout timer is inactive, the value of this keyword is 0.0 and if the timer is expired, it is negative. This allows for example to exit loops cleanly, if the timeout is expired with: if "$(timeremain) < 0.0" then "quit 0" :pre The {fmax} and {fnorm} keywords are useful for monitoring the progress of an "energy minimization"_minimize.html. The {fmax} keyword calculates the maximum force in any dimension on any atom in the system, or the infinity-norm of the force vector for the system. The {fnorm} keyword calculates the 2-norm or length of the force vector. The {nbuild} and {ndanger} keywords are useful for monitoring neighbor list builds during a run. Note that both these values are also printed with the end-of-run statistics. The {nbuild} keyword is the number of re-builds during the current run. The {ndanger} keyword is the number of re-builds that LAMMPS considered potentially "dangerous". 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. The keywords {cella}, {cellb}, {cellc}, {cellalpha}, {cellbeta}, {cellgamma}, correspond to the usual crystallographic quantities that define the periodic unit cell of a crystal. See "this section"_Section_howto.html#howto_12 of the doc pages for a geometric description of triclinic periodic cells, including a precise defintion of these quantities in terms of the internal LAMMPS cell dimensions {lx}, {ly}, {lz}, {yz}, {xz}, {xy}. :line The {c_ID} and {c_ID\[I\]} and {c_ID\[I\]\[J\]} keywords allow global values calculated by a compute to be output. As discussed on the "compute"_compute.html doc page, computes can calculate global, per-atom, or local values. Only global values can be referenced by -this command. However, per-atom compute values can be referenced in a -"variable"_variable.html and the variable referenced by thermo_style -custom, as discussed below. +this command. However, per-atom compute values for an individual atom +can be referenced in a "variable"_variable.html and the variable +referenced by thermo_style custom, as discussed below. See the +discussion above for how the I in {c_ID\[I\]} can be specified with a +wildcard asterisk to effectively specify multiple values from a global +compute vector. The ID in the keyword should be replaced by the actual ID of a compute that has been defined elsewhere in the input script. See the "compute"_compute.html command for details. If the compute calculates a global scalar, vector, or array, then the keyword formats with 0, 1, or 2 brackets will reference a scalar value from the compute. Note that some computes calculate "intensive" global quantities like temperature; others calculate "extensive" global quantities like kinetic energy that are summed over all atoms in the compute group. Intensive quantities are printed directly without normalization by thermo_style custom. Extensive quantities may be normalized by the total number of atoms in the simulation (NOT the number of atoms in the compute group) when output, depending on the "thermo_modify norm"_thermo_modify.html option being used. The {f_ID} and {f_ID\[I\]} and {f_ID\[I\]\[J\]} keywords allow global values calculated by a fix to be output. As discussed on the "fix"_fix.html doc page, fixes can calculate global, per-atom, or local values. Only global values can be referenced by this command. -However, per-atom fix values can be referenced in a -"variable"_variable.html and the variable referenced by thermo_style -custom, as discussed below. +However, per-atom fix values can be referenced for an individual atom +in a "variable"_variable.html and the variable referenced by +thermo_style custom, as discussed below. See the discussion above for +how the I in {f_ID\[I\]} can be specified with a wildcard asterisk to +effectively specify multiple values from a global fix vector. The ID in the keyword should be replaced by the actual ID of a fix that has been defined elsewhere in the input script. See the "fix"_fix.html command for details. If the fix calculates a global scalar, vector, or array, then the keyword formats with 0, 1, or 2 brackets will reference a scalar value from the fix. Note that some fixes calculate "intensive" global quantities like timestep size; others calculate "extensive" global quantities like energy that are summed over all atoms in the fix group. Intensive quantities are printed directly without normalization by thermo_style custom. Extensive quantities may be normalized by the total number of atoms in the simulation (NOT the number of atoms in the fix group) when output, depending on the "thermo_modify norm"_thermo_modify.html option being used. The {v_name} keyword allow the current value of a variable to be output. The name in the keyword should be replaced by the variable name that has been defined elsewhere in the input script. Only equal-style and vector-style variables can be referenced; the latter requires a bracketed term to specify the Ith element of the vector -calculated by the variable. See the "variable"_variable.html command -for details. Variables of style {equal} and {vector} define a formula -which can reference per-atom properties or thermodynamic keywords, or -they can invoke other computes, fixes, or variables when evaluated, so -this is a very general means of creating thermodynamic output. +calculated by the variable. However, an atom-style variable can be +referenced for an individual atom by an equal-style variable and that +variable referenced. See the "variable"_variable.html command for +details. Variables of style {equal} and {vector} and {atom} define a +formula which can reference per-atom properties or thermodynamic +keywords, or they can invoke other computes, fixes, or variables when +evaluated, so this is a very general means of creating thermodynamic +output. Note that equal-style and vector-style variables are assumed to produce "intensive" global quantities, which are thus printed as-is, without normalization by thermo_style custom. You can include a division by "natoms" in the variable formula if this is not the case. :line [Restrictions:] This command must come after the simulation box is defined by a "read_data"_read_data.html, "read_restart"_read_restart.html, or "create_box"_create_box.html command. [Related commands:] "thermo"_thermo.html, "thermo_modify"_thermo_modify.html, "fix_modify"_fix_modify.html, "compute temp"_compute_temp.html, "compute pressure"_compute_pressure.html [Default:] thermo_style one :pre diff --git a/src/compute_reduce.cpp b/src/compute_reduce.cpp index a56770569..baaf2f7b0 100644 --- a/src/compute_reduce.cpp +++ b/src/compute_reduce.cpp @@ -1,658 +1,677 @@ /* ---------------------------------------------------------------------- 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 "compute_reduce.h" #include "atom.h" #include "update.h" #include "domain.h" #include "modify.h" #include "fix.h" #include "force.h" #include "comm.h" #include "group.h" #include "input.h" #include "variable.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; enum{SUM,SUMSQ,MINN,MAXX,AVE,AVESQ}; // also in ReduceRegion enum{X,V,F,COMPUTE,FIX,VARIABLE}; enum{PERATOM,LOCAL}; #define INVOKED_VECTOR 2 #define INVOKED_ARRAY 4 #define INVOKED_PERATOM 8 #define INVOKED_LOCAL 16 #define BIG 1.0e20 /* ---------------------------------------------------------------------- */ ComputeReduce::ComputeReduce(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { int iarg = 0; if (strcmp(style,"reduce") == 0) { if (narg < 5) error->all(FLERR,"Illegal compute reduce command"); idregion = NULL; iarg = 3; } else if (strcmp(style,"reduce/region") == 0) { if (narg < 6) error->all(FLERR,"Illegal compute reduce/region command"); iregion = domain->find_region(arg[3]); if (iregion == -1) error->all(FLERR,"Region ID for compute reduce/region does not exist"); int n = strlen(arg[3]) + 1; idregion = new char[n]; strcpy(idregion,arg[3]); iarg = 4; } if (strcmp(arg[iarg],"sum") == 0) mode = SUM; else if (strcmp(arg[iarg],"sumsq") == 0) mode = SUMSQ; else if (strcmp(arg[iarg],"min") == 0) mode = MINN; else if (strcmp(arg[iarg],"max") == 0) mode = MAXX; else if (strcmp(arg[iarg],"ave") == 0) mode = AVE; else if (strcmp(arg[iarg],"avesq") == 0) mode = AVESQ; else error->all(FLERR,"Illegal compute reduce command"); iarg++; MPI_Comm_rank(world,&me); - // parse remaining values until one isn't recognized + // expand args if any have wildcard character "*" - which = new int[narg-4]; - argindex = new int[narg-4]; - flavor = new int[narg-4]; - ids = new char*[narg-4]; - value2index = new int[narg-4]; + int expand = 0; + char **earg,**arghold; + int nargnew = input->expand_args(narg-iarg,&arg[iarg],1,earg); + + if (earg != &arg[iarg]) expand = 1; + arghold = arg; + arg = earg; + + // parse values until one isn't recognized + + which = new int[nargnew]; + argindex = new int[nargnew]; + flavor = new int[nargnew]; + ids = new char*[nargnew]; + value2index = new int[nargnew]; nvalues = 0; - while (iarg < narg) { + iarg = 0; + while (iarg < nargnew) { ids[nvalues] = NULL; if (strcmp(arg[iarg],"x") == 0) { which[nvalues] = X; argindex[nvalues++] = 0; } else if (strcmp(arg[iarg],"y") == 0) { which[nvalues] = X; argindex[nvalues++] = 1; } else if (strcmp(arg[iarg],"z") == 0) { which[nvalues] = X; argindex[nvalues++] = 2; } else if (strcmp(arg[iarg],"vx") == 0) { which[nvalues] = V; argindex[nvalues++] = 0; } else if (strcmp(arg[iarg],"vy") == 0) { which[nvalues] = V; argindex[nvalues++] = 1; } else if (strcmp(arg[iarg],"vz") == 0) { which[nvalues] = V; argindex[nvalues++] = 2; } else if (strcmp(arg[iarg],"fx") == 0) { which[nvalues] = F; argindex[nvalues++] = 0; } else if (strcmp(arg[iarg],"fy") == 0) { which[nvalues] = F; argindex[nvalues++] = 1; } else if (strcmp(arg[iarg],"fz") == 0) { which[nvalues] = F; argindex[nvalues++] = 2; } else 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 compute reduce 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); nvalues++; delete [] suffix; } else break; iarg++; } // optional args replace = new int[nvalues]; for (int i = 0; i < nvalues; i++) replace[i] = -1; - while (iarg < narg) { + while (iarg < nargnew) { if (strcmp(arg[iarg],"replace") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal compute reduce command"); if (mode != MINN && mode != MAXX) error->all(FLERR,"Compute reduce replace requires min or max mode"); int col1 = atoi(arg[iarg+1]) - 1; int col2 = atoi(arg[iarg+2]) - 1; if (col1 < 0 || col1 >= nvalues || col2 < 0 || col2 >= nvalues) error->all(FLERR,"Illegal compute reduce command"); if (col1 == col2) error->all(FLERR,"Illegal compute reduce command"); if (replace[col1] >= 0 || replace[col2] >= 0) error->all(FLERR,"Invalid replace values in compute reduce"); replace[col1] = col2; iarg += 3; } else error->all(FLERR,"Illegal compute reduce command"); } // delete replace if not set int flag = 0; for (int i = 0; i < nvalues; i++) if (replace[i] >= 0) flag = 1; if (!flag) { delete [] replace; replace = NULL; } + // if wildcard expansion occurred, free earg memory from expand_args() + + if (expand) { + for (int i = 0; i < nvalues; i++) delete [] earg[i]; + memory->sfree(earg); + arg = arghold; + } + // setup and error check for (int i = 0; i < nvalues; i++) { if (which[i] == X || which[i] == V || which[i] == F) flavor[i] = PERATOM; else if (which[i] == COMPUTE) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) error->all(FLERR,"Compute ID for compute reduce does not exist"); if (modify->compute[icompute]->peratom_flag) { flavor[i] = PERATOM; if (argindex[i] == 0 && modify->compute[icompute]->size_peratom_cols != 0) error->all(FLERR,"Compute reduce compute does not " "calculate a per-atom vector"); if (argindex[i] && modify->compute[icompute]->size_peratom_cols == 0) error->all(FLERR,"Compute reduce compute does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_peratom_cols) error->all(FLERR, "Compute reduce compute array is accessed out-of-range"); } else if (modify->compute[icompute]->local_flag) { flavor[i] = LOCAL; if (argindex[i] == 0 && modify->compute[icompute]->size_local_cols != 0) error->all(FLERR,"Compute reduce compute does not " "calculate a local vector"); if (argindex[i] && modify->compute[icompute]->size_local_cols == 0) error->all(FLERR,"Compute reduce compute does not " "calculate a local array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_local_cols) error->all(FLERR, "Compute reduce compute array is accessed out-of-range"); } else error->all(FLERR, "Compute reduce compute calculates global values"); } else if (which[i] == FIX) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) error->all(FLERR,"Fix ID for compute reduce does not exist"); if (modify->fix[ifix]->peratom_flag) { flavor[i] = PERATOM; if (argindex[i] == 0 && modify->fix[ifix]->size_peratom_cols != 0) error->all(FLERR,"Compute reduce fix does not " "calculate a per-atom vector"); if (argindex[i] && modify->fix[ifix]->size_peratom_cols == 0) error->all(FLERR,"Compute reduce fix does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_peratom_cols) error->all(FLERR,"Compute reduce fix array is accessed out-of-range"); } else if (modify->fix[ifix]->local_flag) { flavor[i] = LOCAL; if (argindex[i] == 0 && modify->fix[ifix]->size_local_cols != 0) error->all(FLERR,"Compute reduce fix does not " "calculate a local vector"); if (argindex[i] && modify->fix[ifix]->size_local_cols == 0) error->all(FLERR,"Compute reduce fix does not " "calculate a local array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_local_cols) error->all(FLERR,"Compute reduce fix array is accessed out-of-range"); } else error->all(FLERR,"Compute reduce fix calculates global values"); } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) error->all(FLERR,"Variable name for compute reduce does not exist"); if (input->variable->atomstyle(ivariable) == 0) error->all(FLERR,"Compute reduce variable is not atom-style variable"); flavor[i] = PERATOM; } } // this compute produces either a scalar or vector if (nvalues == 1) { scalar_flag = 1; if (mode == SUM || mode == SUMSQ) extscalar = 1; else extscalar = 0; vector = onevec = NULL; indices = owner = NULL; } else { vector_flag = 1; size_vector = nvalues; if (mode == SUM || mode == SUMSQ) extvector = 1; else extvector = 0; vector = new double[size_vector]; onevec = new double[size_vector]; indices = new int[size_vector]; owner = new int[size_vector]; } maxatom = 0; varatom = NULL; } /* ---------------------------------------------------------------------- */ ComputeReduce::~ComputeReduce() { delete [] which; delete [] argindex; delete [] flavor; for (int m = 0; m < nvalues; m++) delete [] ids[m]; delete [] ids; delete [] value2index; delete [] replace; delete [] idregion; delete [] vector; delete [] onevec; delete [] indices; delete [] owner; memory->destroy(varatom); } /* ---------------------------------------------------------------------- */ void ComputeReduce::init() { // set indices of all computes,fixes,variables for (int m = 0; m < nvalues; m++) { if (which[m] == COMPUTE) { int icompute = modify->find_compute(ids[m]); if (icompute < 0) error->all(FLERR,"Compute ID for compute reduce does not exist"); value2index[m] = icompute; } else if (which[m] == FIX) { int ifix = modify->find_fix(ids[m]); if (ifix < 0) error->all(FLERR,"Fix ID for compute reduce does not exist"); value2index[m] = ifix; } else if (which[m] == VARIABLE) { int ivariable = input->variable->find(ids[m]); if (ivariable < 0) error->all(FLERR,"Variable name for compute reduce does not exist"); value2index[m] = ivariable; } else value2index[m] = -1; } // set index and check validity of region if (idregion) { iregion = domain->find_region(idregion); if (iregion == -1) error->all(FLERR,"Region ID for compute reduce/region does not exist"); } } /* ---------------------------------------------------------------------- */ double ComputeReduce::compute_scalar() { invoked_scalar = update->ntimestep; double one = compute_one(0,-1); if (mode == SUM || mode == SUMSQ) { MPI_Allreduce(&one,&scalar,1,MPI_DOUBLE,MPI_SUM,world); } else if (mode == MINN) { MPI_Allreduce(&one,&scalar,1,MPI_DOUBLE,MPI_MIN,world); } else if (mode == MAXX) { MPI_Allreduce(&one,&scalar,1,MPI_DOUBLE,MPI_MAX,world); } else if (mode == AVE || mode == AVESQ) { MPI_Allreduce(&one,&scalar,1,MPI_DOUBLE,MPI_SUM,world); bigint n = count(0); if (n) scalar /= n; } return scalar; } /* ---------------------------------------------------------------------- */ void ComputeReduce::compute_vector() { invoked_vector = update->ntimestep; for (int m = 0; m < nvalues; m++) if (!replace || replace[m] < 0) { onevec[m] = compute_one(m,-1); indices[m] = index; } if (mode == SUM || mode == SUMSQ) { for (int m = 0; m < nvalues; m++) MPI_Allreduce(&onevec[m],&vector[m],1,MPI_DOUBLE,MPI_SUM,world); } else if (mode == MINN) { if (!replace) { for (int m = 0; m < nvalues; m++) MPI_Allreduce(&onevec[m],&vector[m],1,MPI_DOUBLE,MPI_MIN,world); } else { for (int m = 0; m < nvalues; m++) if (replace[m] < 0) { pairme.value = onevec[m]; pairme.proc = me; MPI_Allreduce(&pairme,&pairall,1,MPI_DOUBLE_INT,MPI_MINLOC,world); vector[m] = pairall.value; owner[m] = pairall.proc; } for (int m = 0; m < nvalues; m++) if (replace[m] >= 0) { if (me == owner[replace[m]]) vector[m] = compute_one(m,indices[replace[m]]); MPI_Bcast(&vector[m],1,MPI_DOUBLE,owner[replace[m]],world); } } } else if (mode == MAXX) { if (!replace) { for (int m = 0; m < nvalues; m++) MPI_Allreduce(&onevec[m],&vector[m],1,MPI_DOUBLE,MPI_MAX,world); } else { for (int m = 0; m < nvalues; m++) if (replace[m] < 0) { pairme.value = onevec[m]; pairme.proc = me; MPI_Allreduce(&pairme,&pairall,1,MPI_DOUBLE_INT,MPI_MAXLOC,world); vector[m] = pairall.value; owner[m] = pairall.proc; } for (int m = 0; m < nvalues; m++) if (replace[m] >= 0) { if (me == owner[replace[m]]) vector[m] = compute_one(m,indices[replace[m]]); MPI_Bcast(&vector[m],1,MPI_DOUBLE,owner[replace[m]],world); } } } else if (mode == AVE || mode == AVESQ) { for (int m = 0; m < nvalues; m++) { MPI_Allreduce(&onevec[m],&vector[m],1,MPI_DOUBLE,MPI_SUM,world); bigint n = count(m); if (n) vector[m] /= n; } } } /* ---------------------------------------------------------------------- calculate reduced value for one input M and return it if flag = -1: sum/min/max/ave all values in vector for per-atom quantities, limit to atoms in group if mode = MIN or MAX, also set index to which vector value wins if flag >= 0: simply return vector[flag] ------------------------------------------------------------------------- */ double ComputeReduce::compute_one(int m, int flag) { int i; // invoke the appropriate attribute,compute,fix,variable // for flag = -1, compute scalar quantity by scanning over atom properties // only include atoms in group for atom properties and per-atom quantities index = -1; int vidx = value2index[m]; int aidx = argindex[m]; int *mask = atom->mask; int nlocal = atom->nlocal; double one = 0.0; if (mode == MINN) one = BIG; if (mode == MAXX) one = -BIG; if (which[m] == X) { double **x = atom->x; if (flag < 0) { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) combine(one,x[i][aidx],i); } else one = x[flag][aidx]; } else if (which[m] == V) { double **v = atom->v; if (flag < 0) { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) combine(one,v[i][aidx],i); } else one = v[flag][aidx]; } else if (which[m] == F) { double **f = atom->f; if (flag < 0) { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) combine(one,f[i][aidx],i); } else one = f[flag][aidx]; // invoke compute if not previously invoked } else if (which[m] == COMPUTE) { Compute *compute = modify->compute[vidx]; if (flavor[m] == PERATOM) { if (!(compute->invoked_flag & INVOKED_PERATOM)) { compute->compute_peratom(); compute->invoked_flag |= INVOKED_PERATOM; } if (aidx == 0) { double *comp_vec = compute->vector_atom; int n = nlocal; if (flag < 0) { for (i = 0; i < n; i++) if (mask[i] & groupbit) combine(one,comp_vec[i],i); } else one = comp_vec[flag]; } else { double **carray_atom = compute->array_atom; int n = nlocal; int aidxm1 = aidx - 1; if (flag < 0) { for (i = 0; i < n; i++) if (mask[i] & groupbit) combine(one,carray_atom[i][aidxm1],i); } else one = carray_atom[flag][aidxm1]; } } else if (flavor[m] == LOCAL) { if (!(compute->invoked_flag & INVOKED_LOCAL)) { compute->compute_local(); compute->invoked_flag |= INVOKED_LOCAL; } if (aidx == 0) { double *comp_vec = compute->vector_local; int n = compute->size_local_rows; if (flag < 0) for (i = 0; i < n; i++) combine(one,comp_vec[i],i); else one = comp_vec[flag]; } else { double **carray_local = compute->array_local; int n = compute->size_local_rows; int aidxm1 = aidx - 1; if (flag < 0) for (i = 0; i < n; i++) combine(one,carray_local[i][aidxm1],i); else one = carray_local[flag][aidxm1]; } } // access fix fields, check if fix frequency is a match } else if (which[m] == FIX) { if (update->ntimestep % modify->fix[vidx]->peratom_freq) error->all(FLERR,"Fix used in compute reduce not " "computed at compatible time"); Fix *fix = modify->fix[vidx]; if (flavor[m] == PERATOM) { if (aidx == 0) { double *fix_vector = fix->vector_atom; int n = nlocal; if (flag < 0) { for (i = 0; i < n; i++) if (mask[i] & groupbit) combine(one,fix_vector[i],i); } else one = fix_vector[flag]; } else { double **fix_array = fix->array_atom; int aidxm1 = aidx - 1; if (flag < 0) { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) combine(one,fix_array[i][aidxm1],i); } else one = fix_array[flag][aidxm1]; } } else if (flavor[m] == LOCAL) { if (aidx == 0) { double *fix_vector = fix->vector_local; int n = fix->size_local_rows; if (flag < 0) for (i = 0; i < n; i++) combine(one,fix_vector[i],i); else one = fix_vector[flag]; } else { double **fix_array = fix->array_local; int n = fix->size_local_rows; int aidxm1 = aidx - 1; if (flag < 0) for (i = 0; i < n; i++) combine(one,fix_array[i][aidxm1],i); else one = fix_array[flag][aidxm1]; } } // evaluate atom-style variable } else if (which[m] == VARIABLE) { if (atom->nmax > maxatom) { maxatom = atom->nmax; memory->destroy(varatom); memory->create(varatom,maxatom,"reduce:varatom"); } input->variable->compute_atom(vidx,igroup,varatom,1,0); if (flag < 0) { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) combine(one,varatom[i],i); } else one = varatom[flag]; } return one; } /* ---------------------------------------------------------------------- */ bigint ComputeReduce::count(int m) { int vidx = value2index[m]; if (which[m] == X || which[m] == V || which[m] == F) return group->count(igroup); else if (which[m] == COMPUTE) { Compute *compute = modify->compute[vidx]; if (flavor[m] == PERATOM) { return group->count(igroup); } else if (flavor[m] == LOCAL) { bigint ncount = compute->size_local_rows; bigint ncountall; MPI_Allreduce(&ncount,&ncountall,1,MPI_LMP_BIGINT,MPI_SUM,world); return ncountall; } } else if (which[m] == FIX) { Fix *fix = modify->fix[vidx]; if (flavor[m] == PERATOM) { return group->count(igroup); } else if (flavor[m] == LOCAL) { bigint ncount = fix->size_local_rows; bigint ncountall; MPI_Allreduce(&ncount,&ncountall,1,MPI_LMP_BIGINT,MPI_SUM,world); return ncountall; } } else if (which[m] == VARIABLE) return group->count(igroup); bigint dummy = 0; return dummy; } /* ---------------------------------------------------------------------- combine two values according to reduction mode for MIN/MAX, also update index with winner ------------------------------------------------------------------------- */ void ComputeReduce::combine(double &one, double two, int i) { if (mode == SUM || mode == AVE) one += two; else if (mode == SUMSQ || mode == AVESQ) one += two*two; else if (mode == MINN) { if (two < one) { one = two; index = i; } } else if (mode == MAXX) { if (two > one) { one = two; index = i; } } } /* ---------------------------------------------------------------------- memory usage of varatom ------------------------------------------------------------------------- */ double ComputeReduce::memory_usage() { double bytes = maxatom * sizeof(double); return bytes; } diff --git a/src/dump_cfg.cpp b/src/dump_cfg.cpp index 9005c3924..a9ecafb7c 100644 --- a/src/dump_cfg.cpp +++ b/src/dump_cfg.cpp @@ -1,316 +1,309 @@ /* ---------------------------------------------------------------------- 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: Liang Wan (Chinese Academy of Sciences) Memory efficiency improved by Ray Shan (Sandia) ------------------------------------------------------------------------- */ #include <math.h> #include <stdlib.h> #include <string.h> #include "dump_cfg.h" #include "atom.h" #include "domain.h" #include "comm.h" #include "modify.h" #include "compute.h" #include "input.h" #include "fix.h" #include "variable.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; enum{INT,DOUBLE,STRING,BIGINT}; // same as in DumpCustom #define UNWRAPEXPAND 10.0 #define ONEFIELD 32 #define DELTA 1048576 /* ---------------------------------------------------------------------- */ DumpCFG::DumpCFG(LAMMPS *lmp, int narg, char **arg) : DumpCustom(lmp, narg, arg) { multifile_override = 0; - if (narg < 10 || - strcmp(arg[5],"mass") != 0 || strcmp(arg[6],"type") != 0 || - (strcmp(arg[7],"xs") != 0 && strcmp(arg[7],"xsu") != 0) || - (strcmp(arg[8],"ys") != 0 && strcmp(arg[8],"ysu") != 0) || - (strcmp(arg[9],"zs") != 0 && strcmp(arg[9],"zsu") != 0)) + // use earg instead of original arg since it includes expanded wildcards + // earg was created by parent DumpCustom + + if (nfield < 5 || + strcmp(earg[0],"mass") != 0 || strcmp(earg[1],"type") != 0 || + (strcmp(earg[2],"xs") != 0 && strcmp(earg[2],"xsu") != 0) || + (strcmp(earg[3],"ys") != 0 && strcmp(earg[3],"ysu") != 0) || + (strcmp(earg[4],"zs") != 0 && strcmp(earg[4],"zsu") != 0)) error->all(FLERR,"Dump cfg arguments must start with " "'mass type xs ys zs' or 'mass type xsu ysu zsu'"); - if (strcmp(arg[7],"xs") == 0) - if (strcmp(arg[8],"ysu") == 0 || strcmp(arg[9],"zsu") == 0) + if (strcmp(earg[2],"xs") == 0) { + if (strcmp(earg[3],"ysu") == 0 || strcmp(earg[4],"zsu") == 0) error->all(FLERR, "Dump cfg arguments can not mix xs|ys|zs with xsu|ysu|zsu"); - else unwrapflag = 0; - else if (strcmp(arg[8],"ys") == 0 || strcmp(arg[9],"zs") == 0) - error->all(FLERR, - "Dump cfg arguments can not mix xs|ys|zs with xsu|ysu|zsu"); - else unwrapflag = 1; + unwrapflag = 0; + } else { + if (strcmp(earg[3],"ys") == 0 || strcmp(earg[4],"zs") == 0) + error->all(FLERR, + "Dump cfg arguments can not mix xs|ys|zs with xsu|ysu|zsu"); + unwrapflag = 1; + } // setup auxiliary property name strings - // convert 'X_ID[m]' (X=c,f,v) to 'ID_m' + // convert 'X_ID[m]' (X=c,f,v) to 'X_ID_m' - if (narg > 10) auxname = new char*[narg-10]; + if (nfield > 5) auxname = new char*[nfield]; else auxname = NULL; int i = 0; - for (int iarg = 10; iarg < narg; iarg++, i++) { - if (strncmp(arg[iarg],"c_",2) == 0 || - strncmp(arg[iarg],"f_",2) == 0 || - strncmp(arg[iarg],"v_",2) == 0) { - 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,"Invalid keyword in dump cfg command"); - *ptr = '\0'; - *(ptr+2) = '\0'; - auxname[i] = new char[strlen(suffix) + 3]; - strcpy(auxname[i],suffix); - strcat(auxname[i],"_"); - strcat(auxname[i],ptr+1); - } else { - auxname[i] = new char[strlen(suffix) + 1]; - strcpy(auxname[i],suffix); - } - - delete [] suffix; + for (int iarg = 5; iarg < nfield; iarg++, i++) { + if ((strncmp(earg[iarg],"c_",2) == 0 || + strncmp(earg[iarg],"f_",2) == 0 || + strncmp(earg[iarg],"v_",2) == 0) && strchr(earg[iarg],'[')) { + char *ptr = strchr(earg[iarg],'['); + char *ptr2 = strchr(ptr,']'); + auxname[i] = new char[strlen(earg[iarg])]; + *ptr = '\0'; + *ptr2 = '\0'; + strcpy(auxname[i],earg[iarg]); + strcat(auxname[i],"_"); + strcat(auxname[i],ptr+1); } else { - auxname[i] = new char[strlen(arg[iarg]) + 1]; - strcpy(auxname[i],arg[iarg]); + auxname[i] = new char[strlen(earg[iarg]) + 1]; + strcpy(auxname[i],earg[iarg]); } } } /* ---------------------------------------------------------------------- */ DumpCFG::~DumpCFG() { if (auxname) { for (int i = 0; i < nfield-5; i++) delete [] auxname[i]; delete [] auxname; } } /* ---------------------------------------------------------------------- */ void DumpCFG::init_style() { if (multifile == 0 && !multifile_override) error->all(FLERR,"Dump cfg requires one snapshot per file"); DumpCustom::init_style(); // setup function ptrs if (buffer_flag == 1) write_choice = &DumpCFG::write_string; else write_choice = &DumpCFG::write_lines; } /* ---------------------------------------------------------------------- */ void DumpCFG::write_header(bigint n) { // set scale factor used by AtomEye for CFG viz // default = 1.0 // for peridynamics, set to pre-computed PD scale factor // so PD particles mimic C atoms // for unwrapped coords, set to UNWRAPEXPAND (10.0) // so molecules are not split across periodic box boundaries double scale = 1.0; if (atom->peri_flag) scale = atom->pdscale; else if (unwrapflag == 1) scale = UNWRAPEXPAND; char str[64]; sprintf(str,"Number of particles = %s\n",BIGINT_FORMAT); fprintf(fp,str,n); fprintf(fp,"A = %g Angstrom (basic length-scale)\n",scale); fprintf(fp,"H0(1,1) = %g A\n",domain->xprd); fprintf(fp,"H0(1,2) = 0 A \n"); fprintf(fp,"H0(1,3) = 0 A \n"); fprintf(fp,"H0(2,1) = %g A \n",domain->xy); fprintf(fp,"H0(2,2) = %g A\n",domain->yprd); fprintf(fp,"H0(2,3) = 0 A \n"); fprintf(fp,"H0(3,1) = %g A \n",domain->xz); fprintf(fp,"H0(3,2) = %g A \n",domain->yz); fprintf(fp,"H0(3,3) = %g A\n",domain->zprd); fprintf(fp,".NO_VELOCITY.\n"); fprintf(fp,"entry_count = %d\n",nfield-2); for (int i = 0; i < nfield-5; i++) fprintf(fp,"auxiliary[%d] = %s\n",i,auxname[i]); } /* ---------------------------------------------------------------------- convert mybuf of doubles to one big formatted string in sbuf return -1 if strlen exceeds an int, since used as arg in MPI calls in Dump ------------------------------------------------------------------------- */ int DumpCFG::convert_string(int n, double *mybuf) { int i,j; int offset = 0; int m = 0; if (unwrapflag == 0) { for (i = 0; i < n; i++) { if (offset + size_one*ONEFIELD > maxsbuf) { if ((bigint) maxsbuf + DELTA > MAXSMALLINT) return -1; maxsbuf += DELTA; memory->grow(sbuf,maxsbuf,"dump:sbuf"); } for (j = 0; j < size_one; j++) { if (j == 0) { offset += sprintf(&sbuf[offset],"%f \n",mybuf[m]); } else if (j == 1) { offset += sprintf(&sbuf[offset],"%s \n",typenames[(int) mybuf[m]]); } else if (j >= 2) { if (vtype[j] == INT) offset += sprintf(&sbuf[offset],vformat[j],static_cast<int> (mybuf[m])); else if (vtype[j] == DOUBLE) offset += sprintf(&sbuf[offset],vformat[j],mybuf[m]); else if (vtype[j] == STRING) offset += sprintf(&sbuf[offset],vformat[j],typenames[(int) mybuf[m]]); else if (vtype[j] == BIGINT) offset += sprintf(&sbuf[offset],vformat[j],static_cast<bigint> (mybuf[m])); } m++; } offset += sprintf(&sbuf[offset],"\n"); } } else if (unwrapflag == 1) { double unwrap_coord; for (i = 0; i < n; i++) { if (offset + size_one*ONEFIELD > maxsbuf) { if ((bigint) maxsbuf + DELTA > MAXSMALLINT) return -1; maxsbuf += DELTA; memory->grow(sbuf,maxsbuf,"dump:sbuf"); } for (j = 0; j < size_one; j++) { if (j == 0) { offset += sprintf(&sbuf[offset],"%f \n",mybuf[m]); } else if (j == 1) { offset += sprintf(&sbuf[offset],"%s \n",typenames[(int) mybuf[m]]); } else if (j >= 2 && j <= 4) { unwrap_coord = (mybuf[m] - 0.5)/UNWRAPEXPAND + 0.5; offset += sprintf(&sbuf[offset],vformat[j],unwrap_coord); } else if (j >= 5 ) { if (vtype[j] == INT) offset += sprintf(&sbuf[offset],vformat[j],static_cast<int> (mybuf[m])); else if (vtype[j] == DOUBLE) offset += sprintf(&sbuf[offset],vformat[j],mybuf[m]); else if (vtype[j] == STRING) offset += sprintf(&sbuf[offset],vformat[j],typenames[(int) mybuf[m]]); else if (vtype[j] == BIGINT) offset += sprintf(&sbuf[offset],vformat[j],static_cast<bigint> (mybuf[m])); } m++; } offset += sprintf(&sbuf[offset],"\n"); } } return offset; } /* ---------------------------------------------------------------------- */ void DumpCFG::write_data(int n, double *mybuf) { (this->*write_choice)(n,mybuf); } /* ---------------------------------------------------------------------- */ void DumpCFG::write_string(int n, double *mybuf) { fwrite(mybuf,sizeof(char),n,fp); } /* ---------------------------------------------------------------------- */ void DumpCFG::write_lines(int n, double *mybuf) { int i,j,m; if (unwrapflag == 0) { m = 0; for (i = 0; i < n; i++) { for (j = 0; j < size_one; j++) { if (j == 0) { fprintf(fp,"%f \n",mybuf[m]); } else if (j == 1) { fprintf(fp,"%s \n",typenames[(int) mybuf[m]]); } else if (j >= 2) { if (vtype[j] == INT) fprintf(fp,vformat[j],static_cast<int> (mybuf[m])); else if (vtype[j] == DOUBLE) fprintf(fp,vformat[j],mybuf[m]); else if (vtype[j] == STRING) fprintf(fp,vformat[j],typenames[(int) mybuf[m]]); else if (vtype[j] == BIGINT) fprintf(fp,vformat[j],static_cast<bigint> (mybuf[m])); } m++; } fprintf(fp,"\n"); } } else if (unwrapflag == 1) { m = 0; double unwrap_coord; for (i = 0; i < n; i++) { for (j = 0; j < size_one; j++) { if (j == 0) { fprintf(fp,"%f \n",mybuf[m]); } else if (j == 1) { fprintf(fp,"%s \n",typenames[(int) mybuf[m]]); } else if (j >= 2 && j <= 4) { unwrap_coord = (mybuf[m] - 0.5)/UNWRAPEXPAND + 0.5; fprintf(fp,vformat[j],unwrap_coord); } else if (j >= 5 ) { if (vtype[j] == INT) fprintf(fp,vformat[j],static_cast<int> (mybuf[m])); else if (vtype[j] == DOUBLE) fprintf(fp,vformat[j],mybuf[m]); else if (vtype[j] == STRING) fprintf(fp,vformat[j],typenames[(int) mybuf[m]]); else if (vtype[j] == BIGINT) fprintf(fp,vformat[j],static_cast<bigint> (mybuf[m])); } m++; } fprintf(fp,"\n"); } } } diff --git a/src/dump_custom.cpp b/src/dump_custom.cpp index 1e7356d0a..d48e6270e 100644 --- a/src/dump_custom.cpp +++ b/src/dump_custom.cpp @@ -1,2590 +1,2615 @@ /* ---------------------------------------------------------------------- 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 "dump_custom.h" #include "atom.h" #include "force.h" #include "domain.h" #include "region.h" #include "group.h" #include "input.h" #include "variable.h" #include "update.h" #include "modify.h" #include "compute.h" #include "fix.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; // customize by adding keyword // also customize compute_atom_property.cpp enum{ID,MOL,PROC,PROCP1,TYPE,ELEMENT,MASS, X,Y,Z,XS,YS,ZS,XSTRI,YSTRI,ZSTRI,XU,YU,ZU,XUTRI,YUTRI,ZUTRI, XSU,YSU,ZSU,XSUTRI,YSUTRI,ZSUTRI, IX,IY,IZ, VX,VY,VZ,FX,FY,FZ, Q,MUX,MUY,MUZ,MU,RADIUS,DIAMETER, OMEGAX,OMEGAY,OMEGAZ,ANGMOMX,ANGMOMY,ANGMOMZ, TQX,TQY,TQZ, COMPUTE,FIX,VARIABLE,INAME,DNAME}; enum{LT,LE,GT,GE,EQ,NEQ}; enum{INT,DOUBLE,STRING,BIGINT}; // same as in DumpCFG #define INVOKED_PERATOM 8 #define ONEFIELD 32 #define DELTA 1048576 /* ---------------------------------------------------------------------- */ DumpCustom::DumpCustom(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg) { if (narg == 5) error->all(FLERR,"No dump custom arguments specified"); clearstep = 1; nevery = force->inumeric(FLERR,arg[3]); if (nevery <= 0) error->all(FLERR,"Illegal dump custom command"); - // size_one may be shrunk below if additional optional args exist + // expand args if any have wildcard character "*" + // ok to include trailing optional args, + // so long as they do not have "*" between square brackets + // nfield may be shrunk below if extra optional args exist + + expand = 0; + nfield = input->expand_args(narg-5,&arg[5],1,earg); + if (earg != &arg[5]) expand = 1; + + // allocate field vectors - size_one = nfield = narg - 5; pack_choice = new FnPtrPack[nfield]; vtype = new int[nfield]; buffer_allow = 1; buffer_flag = 1; iregion = -1; idregion = NULL; nthresh = 0; thresh_array = NULL; thresh_op = NULL; thresh_value = NULL; // computes, fixes, variables which the dump accesses memory->create(field2index,nfield,"dump:field2index"); memory->create(argindex,nfield,"dump:argindex"); ncompute = 0; id_compute = NULL; compute = NULL; nfix = 0; id_fix = NULL; fix = NULL; nvariable = 0; id_variable = NULL; variable = NULL; vbuf = NULL; ncustom = 0; id_custom = NULL; flag_custom = NULL; // process attributes - // ioptional = start of additional optional args - // only dump image and dump movie styles process optional args + // ioptional = start of additional optional args in expanded args - ioptional = parse_fields(narg,arg); + ioptional = parse_fields(nfield,earg); - if (ioptional < narg && + if (ioptional < nfield && strcmp(style,"image") != 0 && strcmp(style,"movie") != 0) error->all(FLERR,"Invalid attribute in dump custom command"); - size_one = nfield = ioptional - 5; + + // noptional = # of optional args + // reset nfield to subtract off optional args + // reset ioptional to what it would be in original arg list + // only dump image and dump movie styles process optional args, + // they do not use expanded earg list + + int noptional = nfield - ioptional; + nfield -= noptional; + size_one = nfield; + ioptional = narg - noptional; // atom selection arrays maxlocal = 0; choose = NULL; dchoose = NULL; clist = NULL; // element names ntypes = atom->ntypes; typenames = NULL; // setup format strings vformat = new char*[size_one]; format_default = new char[4*size_one+1]; format_default[0] = '\0'; for (int i = 0; i < size_one; i++) { if (vtype[i] == INT) strcat(format_default,"%d "); else if (vtype[i] == DOUBLE) strcat(format_default,"%g "); else if (vtype[i] == STRING) strcat(format_default,"%s "); else if (vtype[i] == BIGINT) strcat(format_default,BIGINT_FORMAT " "); vformat[i] = NULL; } // setup column string int n = 0; - for (int iarg = 5; iarg < narg; iarg++) n += strlen(arg[iarg]) + 2; + for (int iarg = 0; iarg < nfield; iarg++) n += strlen(earg[iarg]) + 2; columns = new char[n]; columns[0] = '\0'; - for (int iarg = 5; iarg < narg; iarg++) { - strcat(columns,arg[iarg]); + for (int iarg = 0; iarg < nfield; iarg++) { + strcat(columns,earg[iarg]); strcat(columns," "); } } /* ---------------------------------------------------------------------- */ DumpCustom::~DumpCustom() { + // if wildcard expansion occurred, free earg memory from expand_args() + // could not do in constructor, b/c some derived classes process earg + + if (expand) { + for (int i = 0; i < nfield; i++) delete [] earg[i]; + memory->sfree(earg); + } + delete [] pack_choice; delete [] vtype; memory->destroy(field2index); memory->destroy(argindex); delete [] idregion; memory->destroy(thresh_array); memory->destroy(thresh_op); memory->destroy(thresh_value); for (int i = 0; i < ncompute; i++) delete [] id_compute[i]; memory->sfree(id_compute); delete [] compute; for (int i = 0; i < nfix; i++) delete [] id_fix[i]; memory->sfree(id_fix); delete [] fix; for (int i = 0; i < nvariable; i++) delete [] id_variable[i]; memory->sfree(id_variable); delete [] variable; for (int i = 0; i < nvariable; i++) memory->destroy(vbuf[i]); delete [] vbuf; for (int i = 0; i < ncustom; i++) delete [] id_custom[i]; memory->sfree(id_custom); delete [] flag_custom; memory->destroy(choose); memory->destroy(dchoose); memory->destroy(clist); if (typenames) { for (int i = 1; i <= ntypes; i++) delete [] typenames[i]; delete [] typenames; } for (int i = 0; i < size_one; i++) delete [] vformat[i]; delete [] vformat; delete [] columns; } /* ---------------------------------------------------------------------- */ void DumpCustom::init_style() { delete [] format; char *str; if (format_user) str = format_user; else str = format_default; int n = strlen(str) + 1; format = new char[n]; strcpy(format,str); // default for element names = C if (typenames == NULL) { typenames = new char*[ntypes+1]; for (int itype = 1; itype <= ntypes; itype++) { typenames[itype] = new char[2]; strcpy(typenames[itype],"C"); } } // tokenize the format string and add space at end of each format element char *ptr; for (int i = 0; i < size_one; i++) { if (i == 0) ptr = strtok(format," \0"); else ptr = strtok(NULL," \0"); if (ptr == NULL) error->all(FLERR,"Dump_modify format string is too short"); delete [] vformat[i]; vformat[i] = new char[strlen(ptr) + 2]; strcpy(vformat[i],ptr); vformat[i] = strcat(vformat[i]," "); } // setup boundary string domain->boundary_string(boundstr); // setup function ptrs if (binary && domain->triclinic == 0) header_choice = &DumpCustom::header_binary; else if (binary && domain->triclinic == 1) header_choice = &DumpCustom::header_binary_triclinic; else if (!binary && domain->triclinic == 0) header_choice = &DumpCustom::header_item; else if (!binary && domain->triclinic == 1) header_choice = &DumpCustom::header_item_triclinic; if (binary) write_choice = &DumpCustom::write_binary; else if (buffer_flag == 1) write_choice = &DumpCustom::write_string; else write_choice = &DumpCustom::write_lines; // find current ptr for each compute,fix,variable // check that fix frequency is acceptable int icompute; for (int i = 0; i < ncompute; i++) { icompute = modify->find_compute(id_compute[i]); if (icompute < 0) error->all(FLERR,"Could not find dump custom compute ID"); compute[i] = modify->compute[icompute]; } int ifix; for (int i = 0; i < nfix; i++) { ifix = modify->find_fix(id_fix[i]); if (ifix < 0) error->all(FLERR,"Could not find dump custom fix ID"); fix[i] = modify->fix[ifix]; if (nevery % modify->fix[ifix]->peratom_freq) error->all(FLERR,"Dump custom and fix not computed at compatible times"); } int ivariable; for (int i = 0; i < nvariable; i++) { ivariable = input->variable->find(id_variable[i]); if (ivariable < 0) error->all(FLERR,"Could not find dump custom variable name"); variable[i] = ivariable; } int icustom; for (int i = 0; i < ncustom; i++) { icustom = atom->find_custom(id_custom[i],flag_custom[i]); if (icustom < 0) error->all(FLERR,"Could not find custom per-atom property ID"); } // set index and check validity of region if (iregion >= 0) { iregion = domain->find_region(idregion); if (iregion == -1) error->all(FLERR,"Region ID for dump custom does not exist"); } // open single file, one time only if (multifile == 0) openfile(); } /* ---------------------------------------------------------------------- */ void DumpCustom::write_header(bigint ndump) { if (multiproc) (this->*header_choice)(ndump); else if (me == 0) (this->*header_choice)(ndump); } /* ---------------------------------------------------------------------- */ void DumpCustom::header_binary(bigint ndump) { fwrite(&update->ntimestep,sizeof(bigint),1,fp); fwrite(&ndump,sizeof(bigint),1,fp); fwrite(&domain->triclinic,sizeof(int),1,fp); fwrite(&domain->boundary[0][0],6*sizeof(int),1,fp); fwrite(&boxxlo,sizeof(double),1,fp); fwrite(&boxxhi,sizeof(double),1,fp); fwrite(&boxylo,sizeof(double),1,fp); fwrite(&boxyhi,sizeof(double),1,fp); fwrite(&boxzlo,sizeof(double),1,fp); fwrite(&boxzhi,sizeof(double),1,fp); fwrite(&size_one,sizeof(int),1,fp); if (multiproc) fwrite(&nclusterprocs,sizeof(int),1,fp); else fwrite(&nprocs,sizeof(int),1,fp); } /* ---------------------------------------------------------------------- */ void DumpCustom::header_binary_triclinic(bigint ndump) { fwrite(&update->ntimestep,sizeof(bigint),1,fp); fwrite(&ndump,sizeof(bigint),1,fp); fwrite(&domain->triclinic,sizeof(int),1,fp); fwrite(&domain->boundary[0][0],6*sizeof(int),1,fp); fwrite(&boxxlo,sizeof(double),1,fp); fwrite(&boxxhi,sizeof(double),1,fp); fwrite(&boxylo,sizeof(double),1,fp); fwrite(&boxyhi,sizeof(double),1,fp); fwrite(&boxzlo,sizeof(double),1,fp); fwrite(&boxzhi,sizeof(double),1,fp); fwrite(&boxxy,sizeof(double),1,fp); fwrite(&boxxz,sizeof(double),1,fp); fwrite(&boxyz,sizeof(double),1,fp); fwrite(&size_one,sizeof(int),1,fp); if (multiproc) fwrite(&nclusterprocs,sizeof(int),1,fp); else fwrite(&nprocs,sizeof(int),1,fp); } /* ---------------------------------------------------------------------- */ void DumpCustom::header_item(bigint ndump) { fprintf(fp,"ITEM: TIMESTEP\n"); fprintf(fp,BIGINT_FORMAT "\n",update->ntimestep); fprintf(fp,"ITEM: NUMBER OF ATOMS\n"); fprintf(fp,BIGINT_FORMAT "\n",ndump); fprintf(fp,"ITEM: BOX BOUNDS %s\n",boundstr); fprintf(fp,"%g %g\n",boxxlo,boxxhi); fprintf(fp,"%g %g\n",boxylo,boxyhi); fprintf(fp,"%g %g\n",boxzlo,boxzhi); fprintf(fp,"ITEM: ATOMS %s\n",columns); } /* ---------------------------------------------------------------------- */ void DumpCustom::header_item_triclinic(bigint ndump) { fprintf(fp,"ITEM: TIMESTEP\n"); fprintf(fp,BIGINT_FORMAT "\n",update->ntimestep); fprintf(fp,"ITEM: NUMBER OF ATOMS\n"); fprintf(fp,BIGINT_FORMAT "\n",ndump); fprintf(fp,"ITEM: BOX BOUNDS xy xz yz %s\n",boundstr); fprintf(fp,"%g %g %g\n",boxxlo,boxxhi,boxxy); fprintf(fp,"%g %g %g\n",boxylo,boxyhi,boxxz); fprintf(fp,"%g %g %g\n",boxzlo,boxzhi,boxyz); fprintf(fp,"ITEM: ATOMS %s\n",columns); } /* ---------------------------------------------------------------------- */ int DumpCustom::count() { int i; // grow choose and variable vbuf arrays if needed int nlocal = atom->nlocal; if (atom->nmax > maxlocal) { maxlocal = atom->nmax; memory->destroy(choose); memory->destroy(dchoose); memory->destroy(clist); memory->create(choose,maxlocal,"dump:choose"); memory->create(dchoose,maxlocal,"dump:dchoose"); memory->create(clist,maxlocal,"dump:clist"); for (i = 0; i < nvariable; i++) { memory->destroy(vbuf[i]); memory->create(vbuf[i],maxlocal,"dump:vbuf"); } } // invoke Computes for per-atom quantities // only if within a run or minimize // else require that computes are current // this prevents a compute from being invoked by the WriteDump class if (ncompute) { if (update->whichflag == 0) { for (i = 0; i < ncompute; i++) if (compute[i]->invoked_peratom != update->ntimestep) error->all(FLERR,"Compute used in dump between runs is not current"); } else { for (i = 0; i < ncompute; i++) { if (!(compute[i]->invoked_flag & INVOKED_PERATOM)) { compute[i]->compute_peratom(); compute[i]->invoked_flag |= INVOKED_PERATOM; } } } } // evaluate atom-style Variables for per-atom quantities if (nvariable) for (i = 0; i < nvariable; i++) input->variable->compute_atom(variable[i],igroup,vbuf[i],1,0); // choose all local atoms for output for (i = 0; i < nlocal; i++) choose[i] = 1; // un-choose if not in group if (igroup) { int *mask = atom->mask; for (i = 0; i < nlocal; i++) if (!(mask[i] & groupbit)) choose[i] = 0; } // un-choose if not in region if (iregion >= 0) { Region *region = domain->regions[iregion]; region->prematch(); double **x = atom->x; for (i = 0; i < nlocal; i++) if (choose[i] && region->match(x[i][0],x[i][1],x[i][2]) == 0) choose[i] = 0; } // un-choose if any threshold criterion isn't met if (nthresh) { double *ptr; double value; int nstride; int nlocal = atom->nlocal; for (int ithresh = 0; ithresh < nthresh; ithresh++) { // customize by adding to if statement if (thresh_array[ithresh] == ID) { tagint *tag = atom->tag; for (i = 0; i < nlocal; i++) dchoose[i] = tag[i]; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == MOL) { if (!atom->molecule_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); tagint *molecule = atom->molecule; for (i = 0; i < nlocal; i++) dchoose[i] = molecule[i]; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == PROC) { for (i = 0; i < nlocal; i++) dchoose[i] = me; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == PROCP1) { for (i = 0; i < nlocal; i++) dchoose[i] = me; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == TYPE) { int *type = atom->type; for (i = 0; i < nlocal; i++) dchoose[i] = type[i]; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == ELEMENT) { int *type = atom->type; for (i = 0; i < nlocal; i++) dchoose[i] = type[i]; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == MASS) { if (atom->rmass) { ptr = atom->rmass; nstride = 1; } else { double *mass = atom->mass; int *type = atom->type; for (i = 0; i < nlocal; i++) dchoose[i] = mass[type[i]]; ptr = dchoose; nstride = 1; } } else if (thresh_array[ithresh] == X) { ptr = &atom->x[0][0]; nstride = 3; } else if (thresh_array[ithresh] == Y) { ptr = &atom->x[0][1]; nstride = 3; } else if (thresh_array[ithresh] == Z) { ptr = &atom->x[0][2]; nstride = 3; } else if (thresh_array[ithresh] == XS) { double **x = atom->x; double boxxlo = domain->boxlo[0]; double invxprd = 1.0/domain->xprd; for (i = 0; i < nlocal; i++) dchoose[i] = (x[i][0] - boxxlo) * invxprd; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == YS) { double **x = atom->x; double boxylo = domain->boxlo[1]; double invyprd = 1.0/domain->yprd; for (i = 0; i < nlocal; i++) dchoose[i] = (x[i][1] - boxylo) * invyprd; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == ZS) { double **x = atom->x; double boxzlo = domain->boxlo[2]; double invzprd = 1.0/domain->zprd; for (i = 0; i < nlocal; i++) dchoose[i] = (x[i][2] - boxzlo) * invzprd; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == XSTRI) { double **x = atom->x; double *boxlo = domain->boxlo; double *h_inv = domain->h_inv; for (i = 0; i < nlocal; i++) dchoose[i] = h_inv[0]*(x[i][0]-boxlo[0]) + h_inv[5]*(x[i][1]-boxlo[1]) + h_inv[4]*(x[i][2]-boxlo[2]); ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == YSTRI) { double **x = atom->x; double *boxlo = domain->boxlo; double *h_inv = domain->h_inv; for (i = 0; i < nlocal; i++) dchoose[i] = h_inv[1]*(x[i][1]-boxlo[1]) + h_inv[3]*(x[i][2]-boxlo[2]); ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == ZSTRI) { double **x = atom->x; double *boxlo = domain->boxlo; double *h_inv = domain->h_inv; for (i = 0; i < nlocal; i++) dchoose[i] = h_inv[2]*(x[i][2]-boxlo[2]); ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == XU) { double **x = atom->x; imageint *image = atom->image; double xprd = domain->xprd; for (i = 0; i < nlocal; i++) dchoose[i] = x[i][0] + ((image[i] & IMGMASK) - IMGMAX) * xprd; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == YU) { double **x = atom->x; imageint *image = atom->image; double yprd = domain->yprd; for (i = 0; i < nlocal; i++) dchoose[i] = x[i][1] + ((image[i] >> IMGBITS & IMGMASK) - IMGMAX) * yprd; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == ZU) { double **x = atom->x; imageint *image = atom->image; double zprd = domain->zprd; for (i = 0; i < nlocal; i++) dchoose[i] = x[i][2] + ((image[i] >> IMG2BITS) - IMGMAX) * zprd; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == XUTRI) { double **x = atom->x; imageint *image = atom->image; double *h = domain->h; int xbox,ybox,zbox; for (i = 0; i < nlocal; i++) { xbox = (image[i] & IMGMASK) - IMGMAX; ybox = (image[i] >> IMGBITS & IMGMASK) - IMGMAX; zbox = (image[i] >> IMG2BITS) - IMGMAX; dchoose[i] = x[i][0] + h[0]*xbox + h[5]*ybox + h[4]*zbox; } ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == YUTRI) { double **x = atom->x; imageint *image = atom->image; double *h = domain->h; int ybox,zbox; for (i = 0; i < nlocal; i++) { ybox = (image[i] >> IMGBITS & IMGMASK) - IMGMAX; zbox = (image[i] >> IMG2BITS) - IMGMAX; dchoose[i] = x[i][1] + h[1]*ybox + h[3]*zbox; } ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == ZUTRI) { double **x = atom->x; imageint *image = atom->image; double *h = domain->h; int zbox; for (i = 0; i < nlocal; i++) { zbox = (image[i] >> IMG2BITS) - IMGMAX; dchoose[i] = x[i][2] + h[2]*zbox; } ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == XSU) { double **x = atom->x; imageint *image = atom->image; double boxxlo = domain->boxlo[0]; double invxprd = 1.0/domain->xprd; for (i = 0; i < nlocal; i++) dchoose[i] = (x[i][0] - boxxlo) * invxprd + (image[i] & IMGMASK) - IMGMAX; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == YSU) { double **x = atom->x; imageint *image = atom->image; double boxylo = domain->boxlo[1]; double invyprd = 1.0/domain->yprd; for (i = 0; i < nlocal; i++) dchoose[i] = (x[i][1] - boxylo) * invyprd + (image[i] >> IMGBITS & IMGMASK) - IMGMAX; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == ZSU) { double **x = atom->x; imageint *image = atom->image; double boxzlo = domain->boxlo[2]; double invzprd = 1.0/domain->zprd; for (i = 0; i < nlocal; i++) dchoose[i] = (x[i][2] - boxzlo) * invzprd + (image[i] >> IMG2BITS) - IMGMAX; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == XSUTRI) { double **x = atom->x; imageint *image = atom->image; double *boxlo = domain->boxlo; double *h_inv = domain->h_inv; for (i = 0; i < nlocal; i++) dchoose[i] = h_inv[0]*(x[i][0]-boxlo[0]) + h_inv[5]*(x[i][1]-boxlo[1]) + h_inv[4]*(x[i][2]-boxlo[2]) + (image[i] & IMGMASK) - IMGMAX; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == YSUTRI) { double **x = atom->x; imageint *image = atom->image; double *boxlo = domain->boxlo; double *h_inv = domain->h_inv; for (i = 0; i < nlocal; i++) dchoose[i] = h_inv[1]*(x[i][1]-boxlo[1]) + h_inv[3]*(x[i][2]-boxlo[2]) + (image[i] >> IMGBITS & IMGMASK) - IMGMAX; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == ZSUTRI) { double **x = atom->x; imageint *image = atom->image; double *boxlo = domain->boxlo; double *h_inv = domain->h_inv; for (i = 0; i < nlocal; i++) dchoose[i] = h_inv[2]*(x[i][2]-boxlo[2]) + (image[i] >> IMG2BITS) - IMGMAX; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == IX) { imageint *image = atom->image; for (i = 0; i < nlocal; i++) dchoose[i] = (image[i] & IMGMASK) - IMGMAX; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == IY) { imageint *image = atom->image; for (i = 0; i < nlocal; i++) dchoose[i] = (image[i] >> IMGBITS & IMGMASK) - IMGMAX; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == IZ) { imageint *image = atom->image; for (i = 0; i < nlocal; i++) dchoose[i] = (image[i] >> IMG2BITS) - IMGMAX; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == VX) { ptr = &atom->v[0][0]; nstride = 3; } else if (thresh_array[ithresh] == VY) { ptr = &atom->v[0][1]; nstride = 3; } else if (thresh_array[ithresh] == VZ) { ptr = &atom->v[0][2]; nstride = 3; } else if (thresh_array[ithresh] == FX) { ptr = &atom->f[0][0]; nstride = 3; } else if (thresh_array[ithresh] == FY) { ptr = &atom->f[0][1]; nstride = 3; } else if (thresh_array[ithresh] == FZ) { ptr = &atom->f[0][2]; nstride = 3; } else if (thresh_array[ithresh] == Q) { if (!atom->q_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = atom->q; nstride = 1; } else if (thresh_array[ithresh] == MUX) { if (!atom->mu_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = &atom->mu[0][0]; nstride = 4; } else if (thresh_array[ithresh] == MUY) { if (!atom->mu_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = &atom->mu[0][1]; nstride = 4; } else if (thresh_array[ithresh] == MUZ) { if (!atom->mu_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = &atom->mu[0][2]; nstride = 4; } else if (thresh_array[ithresh] == MU) { if (!atom->mu_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = &atom->mu[0][3]; nstride = 4; } else if (thresh_array[ithresh] == RADIUS) { if (!atom->radius_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = atom->radius; nstride = 1; } else if (thresh_array[ithresh] == DIAMETER) { if (!atom->radius_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); double *radius = atom->radius; for (i = 0; i < nlocal; i++) dchoose[i] = 2.0*radius[i]; ptr = dchoose; nstride = 1; } else if (thresh_array[ithresh] == OMEGAX) { if (!atom->omega_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = &atom->omega[0][0]; nstride = 3; } else if (thresh_array[ithresh] == OMEGAY) { if (!atom->omega_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = &atom->omega[0][1]; nstride = 3; } else if (thresh_array[ithresh] == OMEGAZ) { if (!atom->omega_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = &atom->omega[0][2]; nstride = 3; } else if (thresh_array[ithresh] == ANGMOMX) { if (!atom->angmom_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = &atom->angmom[0][0]; nstride = 3; } else if (thresh_array[ithresh] == ANGMOMY) { if (!atom->angmom_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = &atom->angmom[0][1]; nstride = 3; } else if (thresh_array[ithresh] == ANGMOMZ) { if (!atom->angmom_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = &atom->angmom[0][2]; nstride = 3; } else if (thresh_array[ithresh] == TQX) { if (!atom->torque_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = &atom->torque[0][0]; nstride = 3; } else if (thresh_array[ithresh] == TQY) { if (!atom->torque_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = &atom->torque[0][1]; nstride = 3; } else if (thresh_array[ithresh] == TQZ) { if (!atom->torque_flag) error->all(FLERR, "Threshold for an atom property that isn't allocated"); ptr = &atom->torque[0][2]; nstride = 3; } else if (thresh_array[ithresh] == COMPUTE) { i = nfield + ithresh; if (argindex[i] == 0) { ptr = compute[field2index[i]]->vector_atom; nstride = 1; } else { ptr = &compute[field2index[i]]->array_atom[0][argindex[i]-1]; nstride = compute[field2index[i]]->size_peratom_cols; } } else if (thresh_array[ithresh] == FIX) { i = nfield + ithresh; if (argindex[i] == 0) { ptr = fix[field2index[i]]->vector_atom; nstride = 1; } else { ptr = &fix[field2index[i]]->array_atom[0][argindex[i]-1]; nstride = fix[field2index[i]]->size_peratom_cols; } } else if (thresh_array[ithresh] == VARIABLE) { i = nfield + ithresh; ptr = vbuf[field2index[i]]; nstride = 1; } else if (thresh_array[ithresh] == DNAME) { int iwhich,tmp; i = nfield + ithresh; iwhich = atom->find_custom(id_custom[field2index[i]],tmp); ptr = atom->dvector[iwhich]; nstride = 1; } else if (thresh_array[ithresh] == INAME) { int iwhich,tmp; i = nfield + ithresh; iwhich = atom->find_custom(id_custom[field2index[i]],tmp); int *ivector = atom->ivector[iwhich]; for (i = 0; i < nlocal; i++) dchoose[i] = ivector[i]; ptr = dchoose; nstride = 1; } // unselect atoms that don't meet threshold criterion value = thresh_value[ithresh]; if (thresh_op[ithresh] == LT) { for (i = 0; i < nlocal; i++, ptr += nstride) if (choose[i] && *ptr >= value) choose[i] = 0; } else if (thresh_op[ithresh] == LE) { for (i = 0; i < nlocal; i++, ptr += nstride) if (choose[i] && *ptr > value) choose[i] = 0; } else if (thresh_op[ithresh] == GT) { for (i = 0; i < nlocal; i++, ptr += nstride) if (choose[i] && *ptr <= value) choose[i] = 0; } else if (thresh_op[ithresh] == GE) { for (i = 0; i < nlocal; i++, ptr += nstride) if (choose[i] && *ptr < value) choose[i] = 0; } else if (thresh_op[ithresh] == EQ) { for (i = 0; i < nlocal; i++, ptr += nstride) if (choose[i] && *ptr != value) choose[i] = 0; } else if (thresh_op[ithresh] == NEQ) { for (i = 0; i < nlocal; i++, ptr += nstride) if (choose[i] && *ptr == value) choose[i] = 0; } } } // compress choose flags into clist // nchoose = # of selected atoms // clist[i] = local index of each selected atom nchoose = 0; for (i = 0; i < nlocal; i++) if (choose[i]) clist[nchoose++] = i; return nchoose; } /* ---------------------------------------------------------------------- */ void DumpCustom::pack(tagint *ids) { for (int n = 0; n < size_one; n++) (this->*pack_choice[n])(n); if (ids) { tagint *tag = atom->tag; for (int i = 0; i < nchoose; i++) ids[i] = tag[clist[i]]; } } /* ---------------------------------------------------------------------- convert mybuf of doubles to one big formatted string in sbuf return -1 if strlen exceeds an int, since used as arg in MPI calls in Dump ------------------------------------------------------------------------- */ int DumpCustom::convert_string(int n, double *mybuf) { int i,j; int offset = 0; int m = 0; for (i = 0; i < n; i++) { if (offset + size_one*ONEFIELD > maxsbuf) { if ((bigint) maxsbuf + DELTA > MAXSMALLINT) return -1; maxsbuf += DELTA; memory->grow(sbuf,maxsbuf,"dump:sbuf"); } for (j = 0; j < size_one; j++) { if (vtype[j] == INT) offset += sprintf(&sbuf[offset],vformat[j],static_cast<int> (mybuf[m])); else if (vtype[j] == DOUBLE) offset += sprintf(&sbuf[offset],vformat[j],mybuf[m]); else if (vtype[j] == STRING) offset += sprintf(&sbuf[offset],vformat[j],typenames[(int) mybuf[m]]); else if (vtype[j] == BIGINT) offset += sprintf(&sbuf[offset],vformat[j], static_cast<bigint> (mybuf[m])); m++; } offset += sprintf(&sbuf[offset],"\n"); } return offset; } /* ---------------------------------------------------------------------- */ void DumpCustom::write_data(int n, double *mybuf) { (this->*write_choice)(n,mybuf); } /* ---------------------------------------------------------------------- */ void DumpCustom::write_binary(int n, double *mybuf) { n *= size_one; fwrite(&n,sizeof(int),1,fp); fwrite(mybuf,sizeof(double),n,fp); } /* ---------------------------------------------------------------------- */ void DumpCustom::write_string(int n, double *mybuf) { fwrite(mybuf,sizeof(char),n,fp); } /* ---------------------------------------------------------------------- */ void DumpCustom::write_lines(int n, double *mybuf) { int i,j; int m = 0; for (i = 0; i < n; i++) { for (j = 0; j < size_one; j++) { if (vtype[j] == INT) fprintf(fp,vformat[j],static_cast<int> (mybuf[m])); else if (vtype[j] == DOUBLE) fprintf(fp,vformat[j],mybuf[m]); else if (vtype[j] == STRING) fprintf(fp,vformat[j],typenames[(int) mybuf[m]]); else if (vtype[j] == BIGINT) fprintf(fp,vformat[j],static_cast<bigint> (mybuf[m])); m++; } fprintf(fp,"\n"); } } /* ---------------------------------------------------------------------- */ int DumpCustom::parse_fields(int narg, char **arg) { // customize by adding to if statement int i; - for (int iarg = 5; iarg < narg; iarg++) { - i = iarg-5; + for (int iarg = 0; iarg < narg; iarg++) { + i = iarg; if (strcmp(arg[iarg],"id") == 0) { pack_choice[i] = &DumpCustom::pack_id; if (sizeof(tagint) == sizeof(smallint)) vtype[i] = INT; else vtype[i] = BIGINT; } else if (strcmp(arg[iarg],"mol") == 0) { if (!atom->molecule_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_molecule; vtype[i] = INT; } else if (strcmp(arg[iarg],"proc") == 0) { pack_choice[i] = &DumpCustom::pack_proc; vtype[i] = INT; } else if (strcmp(arg[iarg],"procp1") == 0) { pack_choice[i] = &DumpCustom::pack_procp1; vtype[i] = INT; } else if (strcmp(arg[iarg],"type") == 0) { pack_choice[i] = &DumpCustom::pack_type; vtype[i] = INT; } else if (strcmp(arg[iarg],"element") == 0) { pack_choice[i] = &DumpCustom::pack_type; vtype[i] = STRING; } else if (strcmp(arg[iarg],"mass") == 0) { pack_choice[i] = &DumpCustom::pack_mass; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"x") == 0) { pack_choice[i] = &DumpCustom::pack_x; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"y") == 0) { pack_choice[i] = &DumpCustom::pack_y; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"z") == 0) { pack_choice[i] = &DumpCustom::pack_z; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"xs") == 0) { if (domain->triclinic) pack_choice[i] = &DumpCustom::pack_xs_triclinic; else pack_choice[i] = &DumpCustom::pack_xs; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"ys") == 0) { if (domain->triclinic) pack_choice[i] = &DumpCustom::pack_ys_triclinic; else pack_choice[i] = &DumpCustom::pack_ys; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"zs") == 0) { if (domain->triclinic) pack_choice[i] = &DumpCustom::pack_zs_triclinic; else pack_choice[i] = &DumpCustom::pack_zs; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"xu") == 0) { if (domain->triclinic) pack_choice[i] = &DumpCustom::pack_xu_triclinic; else pack_choice[i] = &DumpCustom::pack_xu; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"yu") == 0) { if (domain->triclinic) pack_choice[i] = &DumpCustom::pack_yu_triclinic; else pack_choice[i] = &DumpCustom::pack_yu; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"zu") == 0) { if (domain->triclinic) pack_choice[i] = &DumpCustom::pack_zu_triclinic; else pack_choice[i] = &DumpCustom::pack_zu; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"xsu") == 0) { if (domain->triclinic) pack_choice[i] = &DumpCustom::pack_xsu_triclinic; else pack_choice[i] = &DumpCustom::pack_xsu; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"ysu") == 0) { if (domain->triclinic) pack_choice[i] = &DumpCustom::pack_ysu_triclinic; else pack_choice[i] = &DumpCustom::pack_ysu; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"zsu") == 0) { if (domain->triclinic) pack_choice[i] = &DumpCustom::pack_zsu_triclinic; else pack_choice[i] = &DumpCustom::pack_zsu; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"ix") == 0) { pack_choice[i] = &DumpCustom::pack_ix; vtype[i] = INT; } else if (strcmp(arg[iarg],"iy") == 0) { pack_choice[i] = &DumpCustom::pack_iy; vtype[i] = INT; } else if (strcmp(arg[iarg],"iz") == 0) { pack_choice[i] = &DumpCustom::pack_iz; vtype[i] = INT; } else if (strcmp(arg[iarg],"vx") == 0) { pack_choice[i] = &DumpCustom::pack_vx; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"vy") == 0) { pack_choice[i] = &DumpCustom::pack_vy; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"vz") == 0) { pack_choice[i] = &DumpCustom::pack_vz; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"fx") == 0) { pack_choice[i] = &DumpCustom::pack_fx; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"fy") == 0) { pack_choice[i] = &DumpCustom::pack_fy; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"fz") == 0) { pack_choice[i] = &DumpCustom::pack_fz; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"q") == 0) { if (!atom->q_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_q; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"mux") == 0) { if (!atom->mu_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_mux; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"muy") == 0) { if (!atom->mu_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_muy; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"muz") == 0) { if (!atom->mu_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_muz; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"mu") == 0) { if (!atom->mu_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_mu; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"radius") == 0) { if (!atom->radius_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_radius; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"diameter") == 0) { if (!atom->radius_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_diameter; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"omegax") == 0) { if (!atom->omega_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_omegax; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"omegay") == 0) { if (!atom->omega_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_omegay; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"omegaz") == 0) { if (!atom->omega_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_omegaz; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"angmomx") == 0) { if (!atom->angmom_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_angmomx; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"angmomy") == 0) { if (!atom->angmom_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_angmomy; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"angmomz") == 0) { if (!atom->angmom_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_angmomz; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"tqx") == 0) { if (!atom->torque_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_tqx; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"tqy") == 0) { if (!atom->torque_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_tqy; vtype[i] = DOUBLE; } else if (strcmp(arg[iarg],"tqz") == 0) { if (!atom->torque_flag) error->all(FLERR,"Dumping an atom property that isn't allocated"); pack_choice[i] = &DumpCustom::pack_tqz; vtype[i] = DOUBLE; // compute value = c_ID // if no trailing [], then arg is set to 0, else arg is int between [] } else if (strncmp(arg[iarg],"c_",2) == 0) { pack_choice[i] = &DumpCustom::pack_compute; vtype[i] = DOUBLE; 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,"Invalid attribute in dump custom command"); argindex[i] = atoi(ptr+1); *ptr = '\0'; } else argindex[i] = 0; n = modify->find_compute(suffix); if (n < 0) error->all(FLERR,"Could not find dump custom compute ID"); if (modify->compute[n]->peratom_flag == 0) error->all(FLERR,"Dump custom compute does not compute per-atom info"); if (argindex[i] == 0 && modify->compute[n]->size_peratom_cols > 0) error->all(FLERR, "Dump custom compute does not calculate per-atom vector"); if (argindex[i] > 0 && modify->compute[n]->size_peratom_cols == 0) error->all(FLERR, "Dump custom compute does not calculate per-atom array"); if (argindex[i] > 0 && argindex[i] > modify->compute[n]->size_peratom_cols) error->all(FLERR,"Dump custom compute vector is accessed out-of-range"); field2index[i] = add_compute(suffix); delete [] suffix; // fix value = f_ID // if no trailing [], then arg is set to 0, else arg is between [] } else if (strncmp(arg[iarg],"f_",2) == 0) { pack_choice[i] = &DumpCustom::pack_fix; vtype[i] = DOUBLE; 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,"Invalid attribute in dump custom command"); argindex[i] = atoi(ptr+1); *ptr = '\0'; } else argindex[i] = 0; n = modify->find_fix(suffix); if (n < 0) error->all(FLERR,"Could not find dump custom fix ID"); if (modify->fix[n]->peratom_flag == 0) error->all(FLERR,"Dump custom fix does not compute per-atom info"); if (argindex[i] == 0 && modify->fix[n]->size_peratom_cols > 0) error->all(FLERR,"Dump custom fix does not compute per-atom vector"); if (argindex[i] > 0 && modify->fix[n]->size_peratom_cols == 0) error->all(FLERR,"Dump custom fix does not compute per-atom array"); if (argindex[i] > 0 && argindex[i] > modify->fix[n]->size_peratom_cols) error->all(FLERR,"Dump custom fix vector is accessed out-of-range"); field2index[i] = add_fix(suffix); delete [] suffix; // variable value = v_name } else if (strncmp(arg[iarg],"v_",2) == 0) { pack_choice[i] = &DumpCustom::pack_variable; vtype[i] = DOUBLE; int n = strlen(arg[iarg]); char *suffix = new char[n]; strcpy(suffix,&arg[iarg][2]); argindex[i] = 0; n = input->variable->find(suffix); if (n < 0) error->all(FLERR,"Could not find dump custom variable name"); if (input->variable->atomstyle(n) == 0) error->all(FLERR,"Dump custom variable is not atom-style variable"); field2index[i] = add_variable(suffix); delete [] suffix; // custom per-atom floating point value = d_ID } else if (strncmp(arg[iarg],"d_",2) == 0) { pack_choice[i] = &DumpCustom::pack_custom; vtype[i] = DOUBLE; int n = strlen(arg[iarg]); char *suffix = new char[n]; strcpy(suffix,&arg[iarg][2]); argindex[i] = 0; int tmp = -1; n = atom->find_custom(suffix,tmp); if (n < 0) error->all(FLERR,"Could not find custom per-atom property ID"); if (tmp != 1) error->all(FLERR,"Custom per-atom property ID is not floating point"); field2index[i] = add_custom(suffix,1); delete [] suffix; // custom per-atom integer value = i_ID } else if (strncmp(arg[iarg],"i_",2) == 0) { pack_choice[i] = &DumpCustom::pack_custom; vtype[i] = INT; int n = strlen(arg[iarg]); char *suffix = new char[n]; strcpy(suffix,&arg[iarg][2]); argindex[i] = 0; int tmp = -1; n = atom->find_custom(suffix,tmp); if (n < 0) error->all(FLERR,"Could not find custom per-atom property ID"); if (tmp != 0) error->all(FLERR,"Custom per-atom property ID is not integer"); field2index[i] = add_custom(suffix,0); delete [] suffix; } else return iarg; } return narg; } /* ---------------------------------------------------------------------- add Compute to list of Compute objects used by dump return index of where this Compute is in list if already in list, do not add, just return index, else add to list ------------------------------------------------------------------------- */ int DumpCustom::add_compute(char *id) { int icompute; for (icompute = 0; icompute < ncompute; icompute++) if (strcmp(id,id_compute[icompute]) == 0) break; if (icompute < ncompute) return icompute; id_compute = (char **) memory->srealloc(id_compute,(ncompute+1)*sizeof(char *),"dump:id_compute"); delete [] compute; compute = new Compute*[ncompute+1]; int n = strlen(id) + 1; id_compute[ncompute] = new char[n]; strcpy(id_compute[ncompute],id); ncompute++; return ncompute-1; } /* ---------------------------------------------------------------------- add Fix to list of Fix objects used by dump return index of where this Fix is in list if already in list, do not add, just return index, else add to list ------------------------------------------------------------------------- */ int DumpCustom::add_fix(char *id) { int ifix; for (ifix = 0; ifix < nfix; ifix++) if (strcmp(id,id_fix[ifix]) == 0) break; if (ifix < nfix) return ifix; id_fix = (char **) memory->srealloc(id_fix,(nfix+1)*sizeof(char *),"dump:id_fix"); delete [] fix; fix = new Fix*[nfix+1]; int n = strlen(id) + 1; id_fix[nfix] = new char[n]; strcpy(id_fix[nfix],id); nfix++; return nfix-1; } /* ---------------------------------------------------------------------- add Variable to list of Variables used by dump return index of where this Variable is in list if already in list, do not add, just return index, else add to list ------------------------------------------------------------------------- */ int DumpCustom::add_variable(char *id) { int ivariable; for (ivariable = 0; ivariable < nvariable; ivariable++) if (strcmp(id,id_variable[ivariable]) == 0) break; if (ivariable < nvariable) return ivariable; id_variable = (char **) memory->srealloc(id_variable,(nvariable+1)*sizeof(char *), "dump:id_variable"); delete [] variable; variable = new int[nvariable+1]; delete [] vbuf; vbuf = new double*[nvariable+1]; for (int i = 0; i <= nvariable; i++) vbuf[i] = NULL; int n = strlen(id) + 1; id_variable[nvariable] = new char[n]; strcpy(id_variable[nvariable],id); nvariable++; return nvariable-1; } /* ---------------------------------------------------------------------- add custom atom property to list used by dump return index of where this property is in list if already in list, do not add, just return index, else add to list ------------------------------------------------------------------------- */ int DumpCustom::add_custom(char *id, int flag) { int icustom; for (icustom = 0; icustom < ncustom; icustom++) if ((strcmp(id,id_custom[icustom]) == 0) && (flag == flag_custom[icustom])) break; if (icustom < ncustom) return icustom; id_custom = (char **) memory->srealloc(id_custom,(ncustom+1)*sizeof(char *),"dump:id_custom"); flag_custom = (int *) memory->srealloc(flag_custom,(ncustom+1)*sizeof(int),"dump:flag_custom"); int n = strlen(id) + 1; id_custom[ncustom] = new char[n]; strcpy(id_custom[ncustom],id); flag_custom[ncustom] = flag; ncustom++; return ncustom-1; } /* ---------------------------------------------------------------------- */ int DumpCustom::modify_param(int narg, char **arg) { if (strcmp(arg[0],"region") == 0) { if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); if (strcmp(arg[1],"none") == 0) iregion = -1; else { iregion = domain->find_region(arg[1]); if (iregion == -1) error->all(FLERR,"Dump_modify region ID does not exist"); delete [] idregion; int n = strlen(arg[1]) + 1; idregion = new char[n]; strcpy(idregion,arg[1]); } return 2; } if (strcmp(arg[0],"element") == 0) { if (narg < ntypes+1) error->all(FLERR,"Dump modify element names do not match atom types"); if (typenames) { for (int i = 1; i <= ntypes; i++) delete [] typenames[i]; delete [] typenames; typenames = NULL; } typenames = new char*[ntypes+1]; for (int itype = 1; itype <= ntypes; itype++) { int n = strlen(arg[itype]) + 1; typenames[itype] = new char[n]; strcpy(typenames[itype],arg[itype]); } return ntypes+1; } if (strcmp(arg[0],"thresh") == 0) { if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); if (strcmp(arg[1],"none") == 0) { if (nthresh) { memory->destroy(thresh_array); memory->destroy(thresh_op); memory->destroy(thresh_value); thresh_array = NULL; thresh_op = NULL; thresh_value = NULL; } nthresh = 0; return 2; } if (narg < 4) error->all(FLERR,"Illegal dump_modify command"); // grow threshold arrays memory->grow(thresh_array,nthresh+1,"dump:thresh_array"); memory->grow(thresh_op,(nthresh+1),"dump:thresh_op"); memory->grow(thresh_value,(nthresh+1),"dump:thresh_value"); // set attribute type of threshold // customize by adding to if statement if (strcmp(arg[1],"id") == 0) thresh_array[nthresh] = ID; else if (strcmp(arg[1],"mol") == 0) thresh_array[nthresh] = MOL; else if (strcmp(arg[1],"proc") == 0) thresh_array[nthresh] = PROC; else if (strcmp(arg[1],"procp1") == 0) thresh_array[nthresh] = PROCP1; else if (strcmp(arg[1],"type") == 0) thresh_array[nthresh] = TYPE; else if (strcmp(arg[1],"mass") == 0) thresh_array[nthresh] = MASS; else if (strcmp(arg[1],"x") == 0) thresh_array[nthresh] = X; else if (strcmp(arg[1],"y") == 0) thresh_array[nthresh] = Y; else if (strcmp(arg[1],"z") == 0) thresh_array[nthresh] = Z; else if (strcmp(arg[1],"xs") == 0 && domain->triclinic == 0) thresh_array[nthresh] = XS; else if (strcmp(arg[1],"xs") == 0 && domain->triclinic == 1) thresh_array[nthresh] = XSTRI; else if (strcmp(arg[1],"ys") == 0 && domain->triclinic == 0) thresh_array[nthresh] = YS; else if (strcmp(arg[1],"ys") == 0 && domain->triclinic == 1) thresh_array[nthresh] = YSTRI; else if (strcmp(arg[1],"zs") == 0 && domain->triclinic == 0) thresh_array[nthresh] = ZS; else if (strcmp(arg[1],"zs") == 0 && domain->triclinic == 1) thresh_array[nthresh] = ZSTRI; else if (strcmp(arg[1],"xu") == 0 && domain->triclinic == 0) thresh_array[nthresh] = XU; else if (strcmp(arg[1],"xu") == 0 && domain->triclinic == 1) thresh_array[nthresh] = XUTRI; else if (strcmp(arg[1],"yu") == 0 && domain->triclinic == 0) thresh_array[nthresh] = YU; else if (strcmp(arg[1],"yu") == 0 && domain->triclinic == 1) thresh_array[nthresh] = YUTRI; else if (strcmp(arg[1],"zu") == 0 && domain->triclinic == 0) thresh_array[nthresh] = ZU; else if (strcmp(arg[1],"zu") == 0 && domain->triclinic == 1) thresh_array[nthresh] = ZUTRI; else if (strcmp(arg[1],"xsu") == 0 && domain->triclinic == 0) thresh_array[nthresh] = XSU; else if (strcmp(arg[1],"xsu") == 0 && domain->triclinic == 1) thresh_array[nthresh] = XSUTRI; else if (strcmp(arg[1],"ysu") == 0 && domain->triclinic == 0) thresh_array[nthresh] = YSU; else if (strcmp(arg[1],"ysu") == 0 && domain->triclinic == 1) thresh_array[nthresh] = YSUTRI; else if (strcmp(arg[1],"zsu") == 0 && domain->triclinic == 0) thresh_array[nthresh] = ZSU; else if (strcmp(arg[1],"zsu") == 0 && domain->triclinic == 1) thresh_array[nthresh] = ZSUTRI; else if (strcmp(arg[1],"ix") == 0) thresh_array[nthresh] = IX; else if (strcmp(arg[1],"iy") == 0) thresh_array[nthresh] = IY; else if (strcmp(arg[1],"iz") == 0) thresh_array[nthresh] = IZ; else if (strcmp(arg[1],"vx") == 0) thresh_array[nthresh] = VX; else if (strcmp(arg[1],"vy") == 0) thresh_array[nthresh] = VY; else if (strcmp(arg[1],"vz") == 0) thresh_array[nthresh] = VZ; else if (strcmp(arg[1],"fx") == 0) thresh_array[nthresh] = FX; else if (strcmp(arg[1],"fy") == 0) thresh_array[nthresh] = FY; else if (strcmp(arg[1],"fz") == 0) thresh_array[nthresh] = FZ; else if (strcmp(arg[1],"q") == 0) thresh_array[nthresh] = Q; else if (strcmp(arg[1],"mux") == 0) thresh_array[nthresh] = MUX; else if (strcmp(arg[1],"muy") == 0) thresh_array[nthresh] = MUY; else if (strcmp(arg[1],"muz") == 0) thresh_array[nthresh] = MUZ; else if (strcmp(arg[1],"mu") == 0) thresh_array[nthresh] = MU; else if (strcmp(arg[1],"radius") == 0) thresh_array[nthresh] = RADIUS; else if (strcmp(arg[1],"diameter") == 0) thresh_array[nthresh] = DIAMETER; else if (strcmp(arg[1],"omegax") == 0) thresh_array[nthresh] = OMEGAX; else if (strcmp(arg[1],"omegay") == 0) thresh_array[nthresh] = OMEGAY; else if (strcmp(arg[1],"omegaz") == 0) thresh_array[nthresh] = OMEGAZ; else if (strcmp(arg[1],"angmomx") == 0) thresh_array[nthresh] = ANGMOMX; else if (strcmp(arg[1],"angmomy") == 0) thresh_array[nthresh] = ANGMOMY; else if (strcmp(arg[1],"angmomz") == 0) thresh_array[nthresh] = ANGMOMZ; else if (strcmp(arg[1],"tqx") == 0) thresh_array[nthresh] = TQX; else if (strcmp(arg[1],"tqy") == 0) thresh_array[nthresh] = TQY; else if (strcmp(arg[1],"tqz") == 0) thresh_array[nthresh] = TQZ; // compute value = c_ID // if no trailing [], then arg is set to 0, else arg is between [] // must grow field2index and argindex arrays, since access is beyond nfield else if (strncmp(arg[1],"c_",2) == 0) { thresh_array[nthresh] = COMPUTE; memory->grow(field2index,nfield+nthresh+1,"dump:field2index"); memory->grow(argindex,nfield+nthresh+1,"dump:argindex"); int n = strlen(arg[1]); char *suffix = new char[n]; strcpy(suffix,&arg[1][2]); char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') error->all(FLERR,"Invalid attribute in dump modify command"); argindex[nfield+nthresh] = atoi(ptr+1); *ptr = '\0'; } else argindex[nfield+nthresh] = 0; n = modify->find_compute(suffix); if (n < 0) error->all(FLERR,"Could not find dump modify compute ID"); if (modify->compute[n]->peratom_flag == 0) error->all(FLERR, "Dump modify compute ID does not compute per-atom info"); if (argindex[nfield+nthresh] == 0 && modify->compute[n]->size_peratom_cols > 0) error->all(FLERR, "Dump modify compute ID does not compute per-atom vector"); if (argindex[nfield+nthresh] > 0 && modify->compute[n]->size_peratom_cols == 0) error->all(FLERR, "Dump modify compute ID does not compute per-atom array"); if (argindex[nfield+nthresh] > 0 && argindex[nfield+nthresh] > modify->compute[n]->size_peratom_cols) error->all(FLERR,"Dump modify compute ID vector is not large enough"); field2index[nfield+nthresh] = add_compute(suffix); delete [] suffix; // fix value = f_ID // if no trailing [], then arg is set to 0, else arg is between [] // must grow field2index and argindex arrays, since access is beyond nfield } else if (strncmp(arg[1],"f_",2) == 0) { thresh_array[nthresh] = FIX; memory->grow(field2index,nfield+nthresh+1,"dump:field2index"); memory->grow(argindex,nfield+nthresh+1,"dump:argindex"); int n = strlen(arg[1]); char *suffix = new char[n]; strcpy(suffix,&arg[1][2]); char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') error->all(FLERR,"Invalid attribute in dump modify command"); argindex[nfield+nthresh] = atoi(ptr+1); *ptr = '\0'; } else argindex[nfield+nthresh] = 0; n = modify->find_fix(suffix); if (n < 0) error->all(FLERR,"Could not find dump modify fix ID"); if (modify->fix[n]->peratom_flag == 0) error->all(FLERR,"Dump modify fix ID does not compute per-atom info"); if (argindex[nfield+nthresh] == 0 && modify->fix[n]->size_peratom_cols > 0) error->all(FLERR,"Dump modify fix ID does not compute per-atom vector"); if (argindex[nfield+nthresh] > 0 && modify->fix[n]->size_peratom_cols == 0) error->all(FLERR,"Dump modify fix ID does not compute per-atom array"); if (argindex[nfield+nthresh] > 0 && argindex[nfield+nthresh] > modify->fix[n]->size_peratom_cols) error->all(FLERR,"Dump modify fix ID vector is not large enough"); field2index[nfield+nthresh] = add_fix(suffix); delete [] suffix; // variable value = v_ID // must grow field2index and argindex arrays, since access is beyond nfield } else if (strncmp(arg[1],"v_",2) == 0) { thresh_array[nthresh] = VARIABLE; memory->grow(field2index,nfield+nthresh+1,"dump:field2index"); memory->grow(argindex,nfield+nthresh+1,"dump:argindex"); int n = strlen(arg[1]); char *suffix = new char[n]; strcpy(suffix,&arg[1][2]); argindex[nfield+nthresh] = 0; n = input->variable->find(suffix); if (n < 0) error->all(FLERR,"Could not find dump modify variable name"); if (input->variable->atomstyle(n) == 0) error->all(FLERR,"Dump modify variable is not atom-style variable"); field2index[nfield+nthresh] = add_variable(suffix); delete [] suffix; // custom per atom floating point value = d_ID // must grow field2index and argindex arrays, since access is beyond nfield } else if (strncmp(arg[1],"d_",2) == 0) { thresh_array[nthresh] = DNAME; memory->grow(field2index,nfield+nthresh+1,"dump:field2index"); memory->grow(argindex,nfield+nthresh+1,"dump:argindex"); int n = strlen(arg[1]); char *suffix = new char[n]; strcpy(suffix,&arg[1][2]); argindex[nfield+nthresh] = 0; int tmp = -1; n = atom->find_custom(suffix,tmp); if ((n < 0) || (tmp != 1)) error->all(FLERR,"Could not find dump modify " "custom atom floating point property ID"); field2index[nfield+nthresh] = add_custom(suffix,1); delete [] suffix; // custom per atom integer value = i_ID // must grow field2index and argindex arrays, since access is beyond nfield } else if (strncmp(arg[1],"i_",2) == 0) { thresh_array[nthresh] = INAME; memory->grow(field2index,nfield+nthresh+1,"dump:field2index"); memory->grow(argindex,nfield+nthresh+1,"dump:argindex"); int n = strlen(arg[1]); char *suffix = new char[n]; strcpy(suffix,&arg[1][2]); argindex[nfield+nthresh] = 0; int tmp = -1; n = atom->find_custom(suffix,tmp); if ((n < 0) || (tmp != 0)) error->all(FLERR,"Could not find dump modify " "custom atom integer property ID"); field2index[nfield+nthresh] = add_custom(suffix,0); delete [] suffix; } else error->all(FLERR,"Invalid dump_modify threshhold operator"); // set operation type of threshold if (strcmp(arg[2],"<") == 0) thresh_op[nthresh] = LT; else if (strcmp(arg[2],"<=") == 0) thresh_op[nthresh] = LE; else if (strcmp(arg[2],">") == 0) thresh_op[nthresh] = GT; else if (strcmp(arg[2],">=") == 0) thresh_op[nthresh] = GE; else if (strcmp(arg[2],"==") == 0) thresh_op[nthresh] = EQ; else if (strcmp(arg[2],"!=") == 0) thresh_op[nthresh] = NEQ; else error->all(FLERR,"Invalid dump_modify threshold operator"); // set threshold value thresh_value[nthresh] = force->numeric(FLERR,arg[3]); nthresh++; return 4; } return 0; } /* ---------------------------------------------------------------------- return # of bytes of allocated memory in buf, choose, variable arrays ------------------------------------------------------------------------- */ bigint DumpCustom::memory_usage() { bigint bytes = Dump::memory_usage(); bytes += memory->usage(choose,maxlocal); bytes += memory->usage(dchoose,maxlocal); bytes += memory->usage(clist,maxlocal); bytes += memory->usage(vbuf,nvariable,maxlocal); return bytes; } /* ---------------------------------------------------------------------- extraction of Compute, Fix, Variable results ------------------------------------------------------------------------- */ void DumpCustom::pack_compute(int n) { double *vector = compute[field2index[n]]->vector_atom; double **array = compute[field2index[n]]->array_atom; int index = argindex[n]; if (index == 0) { for (int i = 0; i < nchoose; i++) { buf[n] = vector[clist[i]]; n += size_one; } } else { index--; for (int i = 0; i < nchoose; i++) { buf[n] = array[clist[i]][index]; n += size_one; } } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_fix(int n) { double *vector = fix[field2index[n]]->vector_atom; double **array = fix[field2index[n]]->array_atom; int index = argindex[n]; if (index == 0) { for (int i = 0; i < nchoose; i++) { buf[n] = vector[clist[i]]; n += size_one; } } else { index--; for (int i = 0; i < nchoose; i++) { buf[n] = array[clist[i]][index]; n += size_one; } } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_variable(int n) { double *vector = vbuf[field2index[n]]; for (int i = 0; i < nchoose; i++) { buf[n] = vector[clist[i]]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_custom(int n) { int index = field2index[n]; if (flag_custom[index] == 0) { // integer int iwhich,tmp; iwhich = atom->find_custom(id_custom[index],tmp); int *ivector = atom->ivector[iwhich]; for (int i = 0; i < nchoose; i++) { buf[n] = ivector[clist[i]]; n += size_one; } } else if (flag_custom[index] == 1) { // double int iwhich,tmp; iwhich = atom->find_custom(id_custom[index],tmp); double *dvector = atom->dvector[iwhich]; for (int i = 0; i < nchoose; i++) { buf[n] = dvector[clist[i]]; n += size_one; } } } /* ---------------------------------------------------------------------- one method for every attribute dump custom can output the atom property is packed into buf starting at n with stride size_one customize a new attribute by adding a method ------------------------------------------------------------------------- */ void DumpCustom::pack_id(int n) { tagint *tag = atom->tag; for (int i = 0; i < nchoose; i++) { buf[n] = tag[clist[i]]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_molecule(int n) { tagint *molecule = atom->molecule; for (int i = 0; i < nchoose; i++) { buf[n] = molecule[clist[i]]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_proc(int n) { for (int i = 0; i < nchoose; i++) { buf[n] = me; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_procp1(int n) { for (int i = 0; i < nchoose; i++) { buf[n] = me+1; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_type(int n) { int *type = atom->type; for (int i = 0; i < nchoose; i++) { buf[n] = type[clist[i]]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_mass(int n) { int *type = atom->type; double *mass = atom->mass; double *rmass = atom->rmass; if (rmass) { for (int i = 0; i < nchoose; i++) { buf[n] = rmass[clist[i]]; n += size_one; } } else { for (int i = 0; i < nchoose; i++) { buf[n] = mass[type[clist[i]]]; n += size_one; } } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_x(int n) { double **x = atom->x; for (int i = 0; i < nchoose; i++) { buf[n] = x[clist[i]][0]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_y(int n) { double **x = atom->x; for (int i = 0; i < nchoose; i++) { buf[n] = x[clist[i]][1]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_z(int n) { double **x = atom->x; for (int i = 0; i < nchoose; i++) { buf[n] = x[clist[i]][2]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_xs(int n) { double **x = atom->x; double boxxlo = domain->boxlo[0]; double invxprd = 1.0/domain->xprd; for (int i = 0; i < nchoose; i++) { buf[n] = (x[clist[i]][0] - boxxlo) * invxprd; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_ys(int n) { double **x = atom->x; double boxylo = domain->boxlo[1]; double invyprd = 1.0/domain->yprd; for (int i = 0; i < nchoose; i++) { buf[n] = (x[clist[i]][1] - boxylo) * invyprd; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_zs(int n) { double **x = atom->x; double boxzlo = domain->boxlo[2]; double invzprd = 1.0/domain->zprd; for (int i = 0; i < nchoose; i++) { buf[n] = (x[clist[i]][2] - boxzlo) * invzprd; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_xs_triclinic(int n) { int j; double **x = atom->x; double *boxlo = domain->boxlo; double *h_inv = domain->h_inv; for (int i = 0; i < nchoose; i++) { j = clist[i]; buf[n] = h_inv[0]*(x[j][0]-boxlo[0]) + h_inv[5]*(x[j][1]-boxlo[1]) + h_inv[4]*(x[j][2]-boxlo[2]); n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_ys_triclinic(int n) { int j; double **x = atom->x; double *boxlo = domain->boxlo; double *h_inv = domain->h_inv; for (int i = 0; i < nchoose; i++) { j = clist[i]; buf[n] = h_inv[1]*(x[j][1]-boxlo[1]) + h_inv[3]*(x[j][2]-boxlo[2]); n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_zs_triclinic(int n) { double **x = atom->x; double *boxlo = domain->boxlo; double *h_inv = domain->h_inv; for (int i = 0; i < nchoose; i++) { buf[n] = h_inv[2]*(x[clist[i]][2]-boxlo[2]); n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_xu(int n) { int j; double **x = atom->x; imageint *image = atom->image; double xprd = domain->xprd; for (int i = 0; i < nchoose; i++) { j = clist[i]; buf[n] = x[j][0] + ((image[j] & IMGMASK) - IMGMAX) * xprd; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_yu(int n) { int j; double **x = atom->x; imageint *image = atom->image; double yprd = domain->yprd; for (int i = 0; i < nchoose; i++) { j = clist[i]; buf[n] = x[j][1] + ((image[j] >> IMGBITS & IMGMASK) - IMGMAX) * yprd; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_zu(int n) { int j; double **x = atom->x; imageint *image = atom->image; double zprd = domain->zprd; for (int i = 0; i < nchoose; i++) { j = clist[i]; buf[n] = x[j][2] + ((image[j] >> IMG2BITS) - IMGMAX) * zprd; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_xu_triclinic(int n) { int j; double **x = atom->x; imageint *image = atom->image; double *h = domain->h; int xbox,ybox,zbox; for (int i = 0; i < nchoose; i++) { j = clist[i]; xbox = (image[j] & IMGMASK) - IMGMAX; ybox = (image[j] >> IMGBITS & IMGMASK) - IMGMAX; zbox = (image[j] >> IMG2BITS) - IMGMAX; buf[n] = x[j][0] + h[0]*xbox + h[5]*ybox + h[4]*zbox; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_yu_triclinic(int n) { int j; double **x = atom->x; imageint *image = atom->image; double *h = domain->h; int ybox,zbox; for (int i = 0; i < nchoose; i++) { j = clist[i]; ybox = (image[j] >> IMGBITS & IMGMASK) - IMGMAX; zbox = (image[j] >> IMG2BITS) - IMGMAX; buf[n] = x[j][1] + h[1]*ybox + h[3]*zbox; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_zu_triclinic(int n) { int j; double **x = atom->x; imageint *image = atom->image; double *h = domain->h; int zbox; for (int i = 0; i < nchoose; i++) { j = clist[i]; zbox = (image[j] >> IMG2BITS) - IMGMAX; buf[n] = x[j][2] + h[2]*zbox; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_xsu(int n) { int j; double **x = atom->x; imageint *image = atom->image; double boxxlo = domain->boxlo[0]; double invxprd = 1.0/domain->xprd; for (int i = 0; i < nchoose; i++) { j = clist[i]; buf[n] = (x[j][0] - boxxlo) * invxprd + (image[j] & IMGMASK) - IMGMAX; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_ysu(int n) { int j; double **x = atom->x; imageint *image = atom->image; double boxylo = domain->boxlo[1]; double invyprd = 1.0/domain->yprd; for (int i = 0; i < nchoose; i++) { j = clist[i]; buf[n] = (x[j][1] - boxylo) * invyprd + (image[j] >> IMGBITS & IMGMASK) - IMGMAX; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_zsu(int n) { int j; double **x = atom->x; imageint *image = atom->image; double boxzlo = domain->boxlo[2]; double invzprd = 1.0/domain->zprd; for (int i = 0; i < nchoose; i++) { j = clist[i]; buf[n] = (x[j][2] - boxzlo) * invzprd + (image[j] >> IMG2BITS) - IMGMAX; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_xsu_triclinic(int n) { int j; double **x = atom->x; imageint *image = atom->image; double *boxlo = domain->boxlo; double *h_inv = domain->h_inv; for (int i = 0; i < nchoose; i++) { j = clist[i]; buf[n] = h_inv[0]*(x[j][0]-boxlo[0]) + h_inv[5]*(x[j][1]-boxlo[1]) + h_inv[4]*(x[j][2]-boxlo[2]) + (image[j] & IMGMASK) - IMGMAX; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_ysu_triclinic(int n) { int j; double **x = atom->x; imageint *image = atom->image; double *boxlo = domain->boxlo; double *h_inv = domain->h_inv; for (int i = 0; i < nchoose; i++) { j = clist[i]; buf[n] = h_inv[1]*(x[j][1]-boxlo[1]) + h_inv[3]*(x[j][2]-boxlo[2]) + (image[j] >> IMGBITS & IMGMASK) - IMGMAX; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_zsu_triclinic(int n) { int j; double **x = atom->x; imageint *image = atom->image; double *boxlo = domain->boxlo; double *h_inv = domain->h_inv; for (int i = 0; i < nchoose; i++) { j = clist[i]; buf[n] = h_inv[2]*(x[j][2]-boxlo[2]) + (image[j] >> IMG2BITS) - IMGMAX; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_ix(int n) { imageint *image = atom->image; for (int i = 0; i < nchoose; i++) { buf[n] = (image[clist[i]] & IMGMASK) - IMGMAX; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_iy(int n) { imageint *image = atom->image; for (int i = 0; i < nchoose; i++) { buf[n] = (image[clist[i]] >> IMGBITS & IMGMASK) - IMGMAX; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_iz(int n) { imageint *image = atom->image; for (int i = 0; i < nchoose; i++) { buf[n] = (image[clist[i]] >> IMG2BITS) - IMGMAX; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_vx(int n) { double **v = atom->v; for (int i = 0; i < nchoose; i++) { buf[n] = v[clist[i]][0]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_vy(int n) { double **v = atom->v; for (int i = 0; i < nchoose; i++) { buf[n] = v[clist[i]][1]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_vz(int n) { double **v = atom->v; for (int i = 0; i < nchoose; i++) { buf[n] = v[clist[i]][2]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_fx(int n) { double **f = atom->f; for (int i = 0; i < nchoose; i++) { buf[n] = f[clist[i]][0]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_fy(int n) { double **f = atom->f; for (int i = 0; i < nchoose; i++) { buf[n] = f[clist[i]][1]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_fz(int n) { double **f = atom->f; for (int i = 0; i < nchoose; i++) { buf[n] = f[clist[i]][2]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_q(int n) { double *q = atom->q; for (int i = 0; i < nchoose; i++) { buf[n] = q[clist[i]]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_mux(int n) { double **mu = atom->mu; for (int i = 0; i < nchoose; i++) { buf[n] = mu[clist[i]][0]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_muy(int n) { double **mu = atom->mu; for (int i = 0; i < nchoose; i++) { buf[n] = mu[clist[i]][1]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_muz(int n) { double **mu = atom->mu; for (int i = 0; i < nchoose; i++) { buf[n] = mu[clist[i]][2]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_mu(int n) { double **mu = atom->mu; for (int i = 0; i < nchoose; i++) { buf[n] = mu[clist[i]][3]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_radius(int n) { double *radius = atom->radius; for (int i = 0; i < nchoose; i++) { buf[n] = radius[clist[i]]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_diameter(int n) { double *radius = atom->radius; for (int i = 0; i < nchoose; i++) { buf[n] = 2.0*radius[clist[i]]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_omegax(int n) { double **omega = atom->omega; for (int i = 0; i < nchoose; i++) { buf[n] = omega[clist[i]][0]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_omegay(int n) { double **omega = atom->omega; for (int i = 0; i < nchoose; i++) { buf[n] = omega[clist[i]][1]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_omegaz(int n) { double **omega = atom->omega; for (int i = 0; i < nchoose; i++) { buf[n] = omega[clist[i]][2]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_angmomx(int n) { double **angmom = atom->angmom; for (int i = 0; i < nchoose; i++) { buf[n] = angmom[clist[i]][0]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_angmomy(int n) { double **angmom = atom->angmom; for (int i = 0; i < nchoose; i++) { buf[n] = angmom[clist[i]][1]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_angmomz(int n) { double **angmom = atom->angmom; for (int i = 0; i < nchoose; i++) { buf[n] = angmom[clist[i]][2]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_tqx(int n) { double **torque = atom->torque; for (int i = 0; i < nchoose; i++) { buf[n] = torque[clist[i]][0]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_tqy(int n) { double **torque = atom->torque; for (int i = 0; i < nchoose; i++) { buf[n] = torque[clist[i]][1]; n += size_one; } } /* ---------------------------------------------------------------------- */ void DumpCustom::pack_tqz(int n) { double **torque = atom->torque; for (int i = 0; i < nchoose; i++) { buf[n] = torque[clist[i]][2]; n += size_one; } } diff --git a/src/dump_custom.h b/src/dump_custom.h index 79e90c1d8..3239a3283 100644 --- a/src/dump_custom.h +++ b/src/dump_custom.h @@ -1,365 +1,368 @@ /* -*- 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 DUMP_CLASS DumpStyle(custom,DumpCustom) #else #ifndef LMP_DUMP_CUSTOM_H #define LMP_DUMP_CUSTOM_H #include "dump.h" namespace LAMMPS_NS { class DumpCustom : public Dump { public: DumpCustom(class LAMMPS *, int, char **); virtual ~DumpCustom(); protected: int nevery; // dump frequency for output int iregion; // -1 if no region, else which region char *idregion; // region ID int nthresh; // # of defined threshholds int *thresh_array; // array to threshhhold on for each nthresh int *thresh_op; // threshhold operation for each nthresh double *thresh_value; // threshhold value for each nthresh + int expand; // flag for whether field args were expanded + char **earg; // field names with wildcard expansion + int *vtype; // type of each vector (INT, DOUBLE) char **vformat; // format string for each vector element char *columns; // column labels int nchoose; // # of selected atoms int maxlocal; // size of atom selection and variable arrays int *choose; // local indices of selected atoms double *dchoose; // value for each atom to threshhold against int *clist; // compressed list of indices of selected atoms int nfield; // # of keywords listed by user int ioptional; // index of start of optional args int *field2index; // which compute,fix,variable calcs this field int *argindex; // index into compute,fix scalar_atom,vector_atom // 0 for scalar_atom, 1-N for vector_atom values int ncompute; // # of Compute objects used by dump char **id_compute; // their IDs class Compute **compute; // list of ptrs to the Compute objects int nfix; // # of Fix objects used by dump char **id_fix; // their IDs class Fix **fix; // list of ptrs to the Fix objects int nvariable; // # of Variables used by dump char **id_variable; // their names int *variable; // list of indices for the Variables double **vbuf; // local storage for variable evaluation int ncustom; // # of custom atom properties char **id_custom; // their names int *flag_custom; // their data type int ntypes; // # of atom types char **typenames; // array of element names for each type // private methods virtual void init_style(); virtual void write_header(bigint); int count(); void pack(tagint *); virtual int convert_string(int, double *); virtual void write_data(int, double *); bigint memory_usage(); int parse_fields(int, char **); int add_compute(char *); int add_fix(char *); int add_variable(char *); int add_custom(char *, int); virtual int modify_param(int, char **); typedef void (DumpCustom::*FnPtrHeader)(bigint); FnPtrHeader header_choice; // ptr to write header functions void header_binary(bigint); void header_binary_triclinic(bigint); void header_item(bigint); void header_item_triclinic(bigint); typedef int (DumpCustom::*FnPtrConvert)(int, double *); FnPtrConvert convert_choice; // ptr to convert data functions int convert_image(int, double *); int convert_noimage(int, double *); typedef void (DumpCustom::*FnPtrWrite)(int, double *); FnPtrWrite write_choice; // ptr to write data functions void write_binary(int, double *); void write_string(int, double *); void write_lines(int, double *); // customize by adding a method prototype typedef void (DumpCustom::*FnPtrPack)(int); FnPtrPack *pack_choice; // ptrs to pack functions void pack_compute(int); void pack_fix(int); void pack_variable(int); void pack_custom(int); void pack_id(int); void pack_molecule(int); void pack_proc(int); void pack_procp1(int); void pack_type(int); void pack_mass(int); void pack_x(int); void pack_y(int); void pack_z(int); void pack_xs(int); void pack_ys(int); void pack_zs(int); void pack_xs_triclinic(int); void pack_ys_triclinic(int); void pack_zs_triclinic(int); void pack_xu(int); void pack_yu(int); void pack_zu(int); void pack_xu_triclinic(int); void pack_yu_triclinic(int); void pack_zu_triclinic(int); void pack_xsu(int); void pack_ysu(int); void pack_zsu(int); void pack_xsu_triclinic(int); void pack_ysu_triclinic(int); void pack_zsu_triclinic(int); void pack_ix(int); void pack_iy(int); void pack_iz(int); void pack_vx(int); void pack_vy(int); void pack_vz(int); void pack_fx(int); void pack_fy(int); void pack_fz(int); void pack_q(int); void pack_mux(int); void pack_muy(int); void pack_muz(int); void pack_mu(int); void pack_radius(int); void pack_diameter(int); void pack_omegax(int); void pack_omegay(int); void pack_omegaz(int); void pack_angmomx(int); void pack_angmomy(int); void pack_angmomz(int); void pack_tqx(int); void pack_tqy(int); void pack_tqz(int); }; } #endif #endif /* ERROR/WARNING messages: E: No dump custom arguments specified The dump custom command requires that atom quantities be specified to output to dump file. E: Invalid attribute in dump custom command Self-explantory. E: Dump_modify format string is too short There are more fields to be dumped in a line of output than your format string specifies. E: Could not find dump custom compute ID Self-explanatory. E: Could not find dump custom fix ID Self-explanatory. E: Dump custom and fix not computed at compatible times The fix must produce per-atom quantities on timesteps that dump custom needs them. E: Could not find dump custom variable name Self-explanatory. E: Could not find custom per-atom property ID Self-explanatory. E: Region ID for dump custom does not exist Self-explanatory. E: Compute used in dump between runs is not current The compute was not invoked on the current timestep, therefore it cannot be used in a dump between runs. E: Threshhold for an atom property that isn't allocated A dump threshhold has been requested on a quantity that is not defined by the atom style used in this simulation. E: Dumping an atom property that isn't allocated The chosen atom style does not define the per-atom quantity being dumped. E: Dump custom compute does not compute per-atom info Self-explanatory. E: Dump custom compute does not calculate per-atom vector Self-explanatory. E: Dump custom compute does not calculate per-atom array Self-explanatory. E: Dump custom compute vector is accessed out-of-range Self-explanatory. E: Dump custom fix does not compute per-atom info Self-explanatory. E: Dump custom fix does not compute per-atom vector Self-explanatory. E: Dump custom fix does not compute per-atom array Self-explanatory. E: Dump custom fix vector is accessed out-of-range Self-explanatory. E: Dump custom variable is not atom-style variable Only atom-style variables generate per-atom quantities, needed for dump output. E: Custom per-atom property ID is not floating point Self-explanatory. E: Custom per-atom property ID is not integer Self-explanatory. 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: Dump_modify region ID does not exist Self-explanatory. E: Dump modify element names do not match atom types Number of element names must equal number of atom types. E: Invalid attribute in dump modify command Self-explantory. E: Could not find dump modify compute ID Self-explanatory. E: Dump modify compute ID does not compute per-atom info Self-explanatory. E: Dump modify compute ID does not compute per-atom vector Self-explanatory. E: Dump modify compute ID does not compute per-atom array Self-explanatory. E: Dump modify compute ID vector is not large enough Self-explanatory. E: Could not find dump modify fix ID Self-explanatory. E: Dump modify fix ID does not compute per-atom info Self-explanatory. E: Dump modify fix ID does not compute per-atom vector Self-explanatory. E: Dump modify fix ID does not compute per-atom array Self-explanatory. E: Dump modify fix ID vector is not large enough Self-explanatory. E: Could not find dump modify variable name Self-explanatory. E: Dump modify variable is not atom-style variable Self-explanatory. E: Could not find dump modify custom atom floating point property ID Self-explanatory. E: Could not find dump modify custom atom integer property ID Self-explanatory. E: Invalid dump_modify threshhold operator Operator keyword used for threshold specification in not recognized. */ diff --git a/src/fix_ave_atom.cpp b/src/fix_ave_atom.cpp index 96169b708..9b0375bae 100644 --- a/src/fix_ave_atom.cpp +++ b/src/fix_ave_atom.cpp @@ -1,461 +1,477 @@ /* ---------------------------------------------------------------------- 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 "fix_ave_atom.h" #include "atom.h" #include "domain.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{X,V,F,COMPUTE,FIX,VARIABLE}; #define INVOKED_PERATOM 8 /* ---------------------------------------------------------------------- */ FixAveAtom::FixAveAtom(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (narg < 7) error->all(FLERR,"Illegal fix ave/atom command"); nevery = force->inumeric(FLERR,arg[3]); nrepeat = force->inumeric(FLERR,arg[4]); peratom_freq = force->inumeric(FLERR,arg[5]); - // parse remaining values - - which = new int[narg-6]; - argindex = new int[narg-6]; - ids = new char*[narg-6]; - value2index = new int[narg-6]; - nvalues = 0; - - int iarg = 6; - while (iarg < narg) { - ids[nvalues] = NULL; - - if (strcmp(arg[iarg],"x") == 0) { - which[nvalues] = X; - argindex[nvalues++] = 0; - } else if (strcmp(arg[iarg],"y") == 0) { - which[nvalues] = X; - argindex[nvalues++] = 1; - } else if (strcmp(arg[iarg],"z") == 0) { - which[nvalues] = X; - argindex[nvalues++] = 2; - - } else if (strcmp(arg[iarg],"vx") == 0) { - which[nvalues] = V; - argindex[nvalues++] = 0; - } else if (strcmp(arg[iarg],"vy") == 0) { - which[nvalues] = V; - argindex[nvalues++] = 1; - } else if (strcmp(arg[iarg],"vz") == 0) { - which[nvalues] = V; - argindex[nvalues++] = 2; - - } else if (strcmp(arg[iarg],"fx") == 0) { - which[nvalues] = F; - argindex[nvalues++] = 0; - } else if (strcmp(arg[iarg],"fy") == 0) { - which[nvalues] = F; - argindex[nvalues++] = 1; - } else if (strcmp(arg[iarg],"fz") == 0) { - which[nvalues] = F; - argindex[nvalues++] = 2; - - } else 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]); + nvalues = narg - 6; + + // expand args if any have wildcard character "*" + // this can reset nvalues + + int expand = 0; + char **earg,**arghold; + nvalues = input->expand_args(nvalues,&arg[6],1,earg); + + if (earg != &arg[6]) expand = 1; + arghold = arg; + arg = earg; + + // parse values + + which = new int[nvalues]; + argindex = new int[nvalues]; + ids = new char*[nvalues]; + value2index = new int[nvalues]; + + for (int i = 0; i < nvalues; i++) { + ids[i] = NULL; + + if (strcmp(arg[i],"x") == 0) { + which[i] = X; + argindex[i++] = 0; + } else if (strcmp(arg[i],"y") == 0) { + which[i] = X; + argindex[i++] = 1; + } else if (strcmp(arg[i],"z") == 0) { + which[i] = X; + argindex[i++] = 2; + + } else if (strcmp(arg[i],"vx") == 0) { + which[i] = V; + argindex[i++] = 0; + } else if (strcmp(arg[i],"vy") == 0) { + which[i] = V; + argindex[i++] = 1; + } else if (strcmp(arg[i],"vz") == 0) { + which[i] = V; + argindex[i++] = 2; + + } else if (strcmp(arg[i],"fx") == 0) { + which[i] = F; + argindex[i++] = 0; + } else if (strcmp(arg[i],"fy") == 0) { + which[i] = F; + argindex[i++] = 1; + } else if (strcmp(arg[i],"fz") == 0) { + which[i] = F; + argindex[i++] = 2; + + } else if (strncmp(arg[i],"c_",2) == 0 || + strncmp(arg[i],"f_",2) == 0 || + strncmp(arg[i],"v_",2) == 0) { + if (arg[i][0] == 'c') which[i] = COMPUTE; + else if (arg[i][0] == 'f') which[i] = FIX; + else if (arg[i][0] == 'v') which[i] = VARIABLE; + + int n = strlen(arg[i]); char *suffix = new char[n]; - strcpy(suffix,&arg[iarg][2]); + strcpy(suffix,&arg[i][2]); char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') error->all(FLERR,"Illegal fix ave/atom command"); - argindex[nvalues] = atoi(ptr+1); + argindex[i] = atoi(ptr+1); *ptr = '\0'; - } else argindex[nvalues] = 0; + } else argindex[i] = 0; n = strlen(suffix) + 1; - ids[nvalues] = new char[n]; - strcpy(ids[nvalues],suffix); - nvalues++; + ids[i] = new char[n]; + strcpy(ids[i],suffix); delete [] suffix; } else error->all(FLERR,"Illegal fix ave/atom command"); + } + + // if wildcard expansion occurred, free earg memory from exapnd_args() - iarg++; + if (expand) { + for (int i = 0; i < nvalues; i++) delete [] earg[i]; + memory->sfree(earg); + arg = arghold; } // setup and error check // for fix inputs, check that fix frequency is acceptable if (nevery <= 0 || nrepeat <= 0 || peratom_freq <= 0) error->all(FLERR,"Illegal fix ave/atom command"); if (peratom_freq % nevery || nrepeat*nevery > peratom_freq) error->all(FLERR,"Illegal fix ave/atom 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/atom does not exist"); if (modify->compute[icompute]->peratom_flag == 0) error->all(FLERR, "Fix ave/atom compute does not calculate per-atom values"); if (argindex[i] == 0 && modify->compute[icompute]->size_peratom_cols != 0) error->all(FLERR,"Fix ave/atom compute does not " "calculate a per-atom vector"); if (argindex[i] && modify->compute[icompute]->size_peratom_cols == 0) error->all(FLERR,"Fix ave/atom compute does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_peratom_cols) error->all(FLERR,"Fix ave/atom compute array 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/atom does not exist"); if (modify->fix[ifix]->peratom_flag == 0) error->all(FLERR,"Fix ave/atom fix does not calculate per-atom values"); if (argindex[i] == 0 && modify->fix[ifix]->size_peratom_cols != 0) error->all(FLERR, "Fix ave/atom fix does not calculate a per-atom vector"); if (argindex[i] && modify->fix[ifix]->size_peratom_cols == 0) error->all(FLERR, "Fix ave/atom fix does not calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_peratom_cols) error->all(FLERR,"Fix ave/atom fix array is accessed out-of-range"); if (nevery % modify->fix[ifix]->peratom_freq) error->all(FLERR, "Fix for fix ave/atom 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/atom does not exist"); if (input->variable->atomstyle(ivariable) == 0) error->all(FLERR,"Fix ave/atom variable is not atom-style variable"); } } // this fix produces either a per-atom vector or array peratom_flag = 1; if (nvalues == 1) size_peratom_cols = 0; else size_peratom_cols = nvalues; // perform initial allocation of atom-based array // register with Atom class array = NULL; grow_arrays(atom->nmax); atom->add_callback(0); // zero the array since dump may access it on timestep 0 // zero the array since a variable may access it before first run int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) for (int m = 0; m < nvalues; m++) array[i][m] = 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 irepeat = 0; nvalid_last = -1; nvalid = nextvalid(); modify->addstep_compute_all(nvalid); } /* ---------------------------------------------------------------------- */ FixAveAtom::~FixAveAtom() { // unregister callback to this fix from Atom class atom->delete_callback(id,0); delete [] which; delete [] argindex; for (int m = 0; m < nvalues; m++) delete [] ids[m]; delete [] ids; delete [] value2index; memory->destroy(array); } /* ---------------------------------------------------------------------- */ int FixAveAtom::setmask() { int mask = 0; mask |= END_OF_STEP; return mask; } /* ---------------------------------------------------------------------- */ void FixAveAtom::init() { // set indices and check validity of all computes,fixes,variables for (int m = 0; m < nvalues; m++) { if (which[m] == COMPUTE) { int icompute = modify->find_compute(ids[m]); if (icompute < 0) error->all(FLERR,"Compute ID for fix ave/atom does not exist"); value2index[m] = icompute; } else if (which[m] == FIX) { int ifix = modify->find_fix(ids[m]); if (ifix < 0) error->all(FLERR,"Fix ID for fix ave/atom does not exist"); value2index[m] = ifix; } else if (which[m] == VARIABLE) { int ivariable = input->variable->find(ids[m]); if (ivariable < 0) error->all(FLERR,"Variable name for fix ave/atom does not exist"); value2index[m] = ivariable; } else value2index[m] = -1; } // need to reset nvalid if nvalid < ntimestep b/c minimize was performed if (nvalid < update->ntimestep) { irepeat = 0; nvalid = nextvalid(); modify->addstep_compute_all(nvalid); } } /* ---------------------------------------------------------------------- only does something if nvalid = current timestep ------------------------------------------------------------------------- */ void FixAveAtom::setup(int vflag) { end_of_step(); } /* ---------------------------------------------------------------------- */ void FixAveAtom::end_of_step() { int i,j,m,n; // 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/atom"); if (ntimestep != nvalid) return; nvalid_last = nvalid; // zero if first step int nlocal = atom->nlocal; if (irepeat == 0) for (i = 0; i < nlocal; i++) for (m = 0; m < nvalues; m++) array[i][m] = 0.0; // accumulate results of attributes,computes,fixes,variables to local copy // compute/fix/variable may invoke computes so wrap with clear/add modify->clearstep_compute(); int *mask = atom->mask; for (m = 0; m < nvalues; m++) { n = value2index[m]; j = argindex[m]; if (which[m] == X) { double **x = atom->x; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) array[i][m] += x[i][j]; } else if (which[m] == V) { double **v = atom->v; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) array[i][m] += v[i][j]; } else if (which[m] == F) { double **f = atom->f; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) array[i][m] += f[i][j]; // invoke compute if not previously invoked } else if (which[m] == COMPUTE) { Compute *compute = modify->compute[n]; if (!(compute->invoked_flag & INVOKED_PERATOM)) { compute->compute_peratom(); compute->invoked_flag |= INVOKED_PERATOM; } if (j == 0) { double *compute_vector = compute->vector_atom; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) array[i][m] += compute_vector[i]; } else { int jm1 = j - 1; double **compute_array = compute->array_atom; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) array[i][m] += compute_array[i][jm1]; } // access fix fields, guaranteed to be ready } else if (which[m] == FIX) { if (j == 0) { double *fix_vector = modify->fix[n]->vector_atom; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) array[i][m] += fix_vector[i]; } else { int jm1 = j - 1; double **fix_array = modify->fix[n]->array_atom; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) array[i][m] += fix_array[i][jm1]; } // evaluate atom-style variable // final argument = 1 sums result to array } else if (which[m] == VARIABLE) { if (array) input->variable->compute_atom(n,igroup,&array[0][m],nvalues,1); else input->variable->compute_atom(n,igroup,NULL,nvalues,1); } } // done if irepeat < nrepeat // else reset irepeat and nvalid irepeat++; if (irepeat < nrepeat) { nvalid += nevery; modify->addstep_compute(nvalid); return; } irepeat = 0; nvalid = ntimestep+peratom_freq - (nrepeat-1)*nevery; modify->addstep_compute(nvalid); if (array == NULL) return; // average the final result for the Nfreq timestep double repeat = nrepeat; for (i = 0; i < nlocal; i++) for (m = 0; m < nvalues; m++) array[i][m] /= repeat; } /* ---------------------------------------------------------------------- memory usage of local atom-based array ------------------------------------------------------------------------- */ double FixAveAtom::memory_usage() { double bytes; bytes = atom->nmax*nvalues * sizeof(double); return bytes; } /* ---------------------------------------------------------------------- allocate atom-based array ------------------------------------------------------------------------- */ void FixAveAtom::grow_arrays(int nmax) { memory->grow(array,nmax,nvalues,"fix_ave/atom:array"); array_atom = array; if (array) vector_atom = array[0]; else vector_atom = NULL; } /* ---------------------------------------------------------------------- copy values within local atom-based array ------------------------------------------------------------------------- */ void FixAveAtom::copy_arrays(int i, int j, int delflag) { for (int m = 0; m < nvalues; m++) array[j][m] = array[i][m]; } /* ---------------------------------------------------------------------- pack values in local atom-based array for exchange with another proc ------------------------------------------------------------------------- */ int FixAveAtom::pack_exchange(int i, double *buf) { for (int m = 0; m < nvalues; m++) buf[m] = array[i][m]; return nvalues; } /* ---------------------------------------------------------------------- unpack values in local atom-based array from exchange with another proc ------------------------------------------------------------------------- */ int FixAveAtom::unpack_exchange(int nlocal, double *buf) { for (int m = 0; m < nvalues; m++) array[nlocal][m] = buf[m]; return nvalues; } /* ---------------------------------------------------------------------- calculate nvalid = next step on which end_of_step does something can be this timestep if multiple of nfreq and nrepeat = 1 else backup from next multiple of nfreq ------------------------------------------------------------------------- */ bigint FixAveAtom::nextvalid() { bigint nvalid = (update->ntimestep/peratom_freq)*peratom_freq + peratom_freq; if (nvalid-peratom_freq == update->ntimestep && nrepeat == 1) nvalid = update->ntimestep; else nvalid -= (nrepeat-1)*nevery; if (nvalid < update->ntimestep) nvalid += peratom_freq; return nvalid; } diff --git a/src/fix_ave_chunk.cpp b/src/fix_ave_chunk.cpp index 8390e8bba..123e1f8d2 100644 --- a/src/fix_ave_chunk.cpp +++ b/src/fix_ave_chunk.cpp @@ -1,1079 +1,1098 @@ /* ---------------------------------------------------------------------- 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 <unistd.h> #include "fix_ave_chunk.h" #include "atom.h" #include "update.h" #include "force.h" #include "domain.h" #include "modify.h" #include "compute.h" #include "compute_chunk_atom.h" #include "input.h" #include "variable.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; using namespace FixConst; enum{V,F,DENSITY_NUMBER,DENSITY_MASS,MASS,TEMPERATURE,COMPUTE,FIX,VARIABLE}; enum{SAMPLE,ALL}; enum{NOSCALE,ATOM}; enum{ONE,RUNNING,WINDOW}; #define INVOKED_PERATOM 8 /* ---------------------------------------------------------------------- */ FixAveChunk::FixAveChunk(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (narg < 7) error->all(FLERR,"Illegal fix ave/chunk command"); MPI_Comm_rank(world,&me); nevery = force->inumeric(FLERR,arg[3]); nrepeat = force->inumeric(FLERR,arg[4]); nfreq = force->inumeric(FLERR,arg[5]); int n = strlen(arg[6]) + 1; idchunk = new char[n]; strcpy(idchunk,arg[6]); global_freq = nfreq; no_change_box = 1; + // expand args if any have wildcard character "*" + + int expand = 0; + char **earg,**arghold; + int nargnew = input->expand_args(narg-7,&arg[7],1,earg); + + if (earg != &arg[7]) expand = 1; + arghold = arg; + arg = earg; + // parse values until one isn't recognized - int iarg = 7; - which = new int[narg-iarg]; - argindex = new int[narg-iarg]; - ids = new char*[narg-iarg]; - value2index = new int[narg-iarg]; + which = new int[nargnew]; + argindex = new int[nargnew]; + ids = new char*[nargnew]; + value2index = new int[nargnew]; nvalues = 0; + int iarg = 7; while (iarg < narg) { ids[nvalues] = NULL; if (strcmp(arg[iarg],"vx") == 0) { which[nvalues] = V; argindex[nvalues++] = 0; } else if (strcmp(arg[iarg],"vy") == 0) { which[nvalues] = V; argindex[nvalues++] = 1; } else if (strcmp(arg[iarg],"vz") == 0) { which[nvalues] = V; argindex[nvalues++] = 2; } else if (strcmp(arg[iarg],"fx") == 0) { which[nvalues] = F; argindex[nvalues++] = 0; } else if (strcmp(arg[iarg],"fy") == 0) { which[nvalues] = F; argindex[nvalues++] = 1; } else if (strcmp(arg[iarg],"fz") == 0) { which[nvalues] = F; argindex[nvalues++] = 2; } else if (strcmp(arg[iarg],"density/number") == 0) { which[nvalues] = DENSITY_NUMBER; argindex[nvalues++] = 0; } else if (strcmp(arg[iarg],"density/mass") == 0) { which[nvalues] = DENSITY_MASS; argindex[nvalues++] = 0; } else if (strcmp(arg[iarg],"mass") == 0) { which[nvalues] = MASS; argindex[nvalues++] = 0; } else if (strcmp(arg[iarg],"temp") == 0) { which[nvalues] = TEMPERATURE; argindex[nvalues++] = 0; } else 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/chunk 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); nvalues++; delete [] suffix; } else break; iarg++; } if (nvalues == 0) error->all(FLERR,"No values in fix ave/chunk command"); // optional args normflag = ALL; scaleflag = ATOM; ave = ONE; fp = NULL; nwindow = 0; biasflag = 0; id_bias = NULL; adof = domain->dimension; cdof = 0.0; overwrite = 0; format_user = NULL; format = (char *) " %g"; char *title1 = NULL; char *title2 = NULL; char *title3 = NULL; - while (iarg < narg) { + while (iarg < nargnew) { if (strcmp(arg[iarg],"norm") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command"); if (strcmp(arg[iarg+1],"all") == 0) { normflag = ALL; scaleflag = ATOM; } else if (strcmp(arg[iarg+1],"sample") == 0) { normflag = SAMPLE; scaleflag = ATOM; } else if (strcmp(arg[iarg+1],"none") == 0) { normflag = SAMPLE; scaleflag = NOSCALE; } else error->all(FLERR,"Illegal fix ave/chunk command"); iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command"); if (strcmp(arg[iarg+1],"one") == 0) ave = ONE; else if (strcmp(arg[iarg+1],"running") == 0) ave = RUNNING; else if (strcmp(arg[iarg+1],"window") == 0) ave = WINDOW; else error->all(FLERR,"Illegal fix ave/chunk command"); if (ave == WINDOW) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix ave/chunk command"); nwindow = force->inumeric(FLERR,arg[iarg+2]); if (nwindow <= 0) error->all(FLERR,"Illegal fix ave/chunk command"); } iarg += 2; if (ave == WINDOW) iarg++; } else if (strcmp(arg[iarg],"bias") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command"); biasflag = 1; int n = strlen(arg[iarg+1]) + 1; id_bias = new char[n]; strcpy(id_bias,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"adof") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command"); adof = force->numeric(FLERR,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"cdof") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command"); cdof = force->numeric(FLERR,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"file") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command"); if (me == 0) { fp = fopen(arg[iarg+1],"w"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix ave/chunk 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],"format") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command"); delete [] format_user; int n = strlen(arg[iarg+1]) + 2; format_user = new char[n]; sprintf(format_user," %s",arg[iarg+1]); format = format_user; iarg += 2; } else if (strcmp(arg[iarg],"title1") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk 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/chunk command"); delete [] title2; int n = strlen(arg[iarg+1]) + 1; title2 = new char[n]; strcpy(title2,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title3") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/chunk command"); delete [] title3; int n = strlen(arg[iarg+1]) + 1; title3 = new char[n]; strcpy(title3,arg[iarg+1]); iarg += 2; } else error->all(FLERR,"Illegal fix ave/chunk command"); } // setup and error check if (nevery <= 0 || nrepeat <= 0 || nfreq <= 0) error->all(FLERR,"Illegal fix ave/chunk command"); if (nfreq % nevery || nrepeat*nevery > nfreq) error->all(FLERR,"Illegal fix ave/chunk command"); if (ave != RUNNING && overwrite) error->all(FLERR,"Illegal fix ave/chunk command"); if (biasflag) { int i = modify->find_compute(id_bias); if (i < 0) error->all(FLERR,"Could not find compute ID for temperature bias"); tbias = modify->compute[i]; if (tbias->tempflag == 0) error->all(FLERR,"Bias compute does not calculate temperature"); if (tbias->tempbias == 0) error->all(FLERR,"Bias compute does not calculate a velocity bias"); } 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/chunk does not exist"); if (modify->compute[icompute]->peratom_flag == 0) error->all(FLERR,"Fix ave/chunk compute does not " "calculate per-atom values"); if (argindex[i] == 0 && modify->compute[icompute]->size_peratom_cols != 0) error->all(FLERR,"Fix ave/chunk compute does not " "calculate a per-atom vector"); if (argindex[i] && modify->compute[icompute]->size_peratom_cols == 0) error->all(FLERR,"Fix ave/chunk compute does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_peratom_cols) error->all(FLERR, "Fix ave/chunk 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/chunk does not exist"); if (modify->fix[ifix]->peratom_flag == 0) error->all(FLERR, "Fix ave/chunk fix does not calculate per-atom values"); if (argindex[i] == 0 && modify->fix[ifix]->size_peratom_cols != 0) error->all(FLERR, "Fix ave/chunk fix does not calculate a per-atom vector"); if (argindex[i] && modify->fix[ifix]->size_peratom_cols == 0) error->all(FLERR, "Fix ave/chunk fix does not calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_peratom_cols) error->all(FLERR,"Fix ave/chunk fix vector is accessed out-of-range"); } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) error->all(FLERR,"Variable name for fix ave/chunk does not exist"); if (input->variable->atomstyle(ivariable) == 0) error->all(FLERR,"Fix ave/chunk variable is not atom-style variable"); } } // increment lock counter in compute chunk/atom // only if nrepeat > 1 or ave = RUNNING/WINDOW, // so that locking spans multiple timesteps int icompute = modify->find_compute(idchunk); if (icompute < 0) error->all(FLERR,"Chunk/atom compute does not exist for fix ave/chunk"); cchunk = (ComputeChunkAtom *) modify->compute[icompute]; if (strcmp(cchunk->style,"chunk/atom") != 0) error->all(FLERR,"Fix ave/chunk does not use chunk/atom compute"); if (nrepeat > 1 || ave == RUNNING || ave == WINDOW) cchunk->lockcount++; lockforever = 0; // print file comment lines if (fp && me == 0) { clearerr(fp); if (title1) fprintf(fp,"%s\n",title1); else fprintf(fp,"# Chunk-averaged data for fix %s and group %s\n", id,arg[1]); if (title2) fprintf(fp,"%s\n",title2); else fprintf(fp,"# Timestep Number-of-chunks Total-count\n"); if (title3) fprintf(fp,"%s\n",title3); else { int compress = cchunk->compress; int ncoord = cchunk->ncoord; if (!compress) { if (ncoord == 0) fprintf(fp,"# Chunk Ncount"); else if (ncoord == 1) fprintf(fp,"# Chunk Coord1 Ncount"); else if (ncoord == 2) fprintf(fp,"# Chunk Coord1 Coord2 Ncount"); else if (ncoord == 3) fprintf(fp,"# Chunk Coord1 Coord2 Coord3 Ncount"); } else { if (ncoord == 0) fprintf(fp,"# Chunk OrigID Ncount"); else if (ncoord == 1) fprintf(fp,"# Chunk OrigID Coord1 Ncount"); else if (ncoord == 2) fprintf(fp,"# Chunk OrigID Coord1 Coord2 Ncount"); else if (ncoord == 3) fprintf(fp,"# Chunk OrigID Coord1 Coord2 Coord3 Ncount"); } - for (int i = 0; i < nvalues; i++) fprintf(fp," %s",arg[7+i]); + for (int i = 0; i < nvalues; i++) fprintf(fp," %s",earg[i]); fprintf(fp,"\n"); } if (ferror(fp)) error->one(FLERR,"Error writing file header"); filepos = ftell(fp); } delete [] title1; delete [] title2; delete [] title3; + // if wildcard expansion occurred, free earg memory from expand_args() + // wait to do this until after file comment lines are printed + + if (expand) { + for (int i = 0; i < nvalues; i++) delete [] earg[i]; + memory->sfree(earg); + arg = arghold; + } + // this fix produces a global array // size_array_rows is variable and set by allocate() int compress = cchunk->compress; int ncoord = cchunk->ncoord; colextra = compress + ncoord; array_flag = 1; size_array_cols = colextra + 1 + nvalues; size_array_rows_variable = 1; extarray = 0; // initializations irepeat = 0; iwindow = window_limit = 0; normcount = 0; maxvar = 0; varatom = NULL; count_one = count_many = count_sum = count_total = NULL; count_list = NULL; values_one = values_many = values_sum = values_total = NULL; values_list = NULL; maxchunk = 0; nchunk = 1; allocate(); // 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); } /* ---------------------------------------------------------------------- */ FixAveChunk::~FixAveChunk() { delete [] which; delete [] argindex; for (int i = 0; i < nvalues; i++) delete [] ids[i]; delete [] ids; delete [] value2index; if (fp && me == 0) fclose(fp); memory->destroy(varatom); memory->destroy(count_one); memory->destroy(count_many); memory->destroy(count_sum); memory->destroy(count_total); memory->destroy(count_list); memory->destroy(values_one); memory->destroy(values_many); memory->destroy(values_sum); memory->destroy(values_total); memory->destroy(values_list); // decrement lock counter in compute chunk/atom, it if still exists if (nrepeat > 1 || ave == RUNNING || ave == WINDOW) { int icompute = modify->find_compute(idchunk); if (icompute >= 0) { cchunk = (ComputeChunkAtom *) modify->compute[icompute]; if (ave == RUNNING || ave == WINDOW) cchunk->unlock(this); cchunk->lockcount--; } } delete [] idchunk; } /* ---------------------------------------------------------------------- */ int FixAveChunk::setmask() { int mask = 0; mask |= END_OF_STEP; return mask; } /* ---------------------------------------------------------------------- */ void FixAveChunk::init() { // set indices and check validity of all computes,fixes,variables // check that fix frequency is acceptable int icompute = modify->find_compute(idchunk); if (icompute < 0) error->all(FLERR,"Chunk/atom compute does not exist for fix ave/chunk"); cchunk = (ComputeChunkAtom *) modify->compute[icompute]; if (biasflag) { int i = modify->find_compute(id_bias); if (i < 0) error->all(FLERR,"Could not find compute ID for temperature bias"); tbias = modify->compute[i]; } for (int m = 0; m < nvalues; m++) { if (which[m] == COMPUTE) { int icompute = modify->find_compute(ids[m]); if (icompute < 0) error->all(FLERR,"Compute ID for fix ave/chunk does not exist"); value2index[m] = icompute; } else if (which[m] == FIX) { int ifix = modify->find_fix(ids[m]); if (ifix < 0) error->all(FLERR,"Fix ID for fix ave/chunk does not exist"); value2index[m] = ifix; if (nevery % modify->fix[ifix]->peratom_freq) error->all(FLERR, "Fix for fix ave/chunk not computed at compatible time"); } else if (which[m] == VARIABLE) { int ivariable = input->variable->find(ids[m]); if (ivariable < 0) error->all(FLERR,"Variable name for fix ave/chunk does not exist"); value2index[m] = ivariable; } else value2index[m] = -1; } // need to reset nvalid if nvalid < ntimestep b/c minimize was performed if (nvalid < update->ntimestep) { irepeat = 0; nvalid = nextvalid(); modify->addstep_compute_all(nvalid); } } /* ---------------------------------------------------------------------- only does averaging if nvalid = current timestep do not call setup_chunks(), even though fix ave/spatial called setup_bins() b/c could cause nchunk to change if Nfreq epoch crosses 2 runs does mean that if change_box is used between runs to change box size, that nchunk may not track it ------------------------------------------------------------------------- */ void FixAveChunk::setup(int vflag) { end_of_step(); } /* ---------------------------------------------------------------------- */ void FixAveChunk::end_of_step() { int i,j,m,n,index; // 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/chunk"); if (ntimestep != nvalid) return; nvalid_last = nvalid; // first sample within single Nfreq epoch // zero out arrays that accumulate over many samples, but not across epochs // invoke setup_chunks() to determine current nchunk // re-allocate per-chunk arrays if needed // invoke lock() in two cases: // if nrepeat > 1: so nchunk cannot change until Nfreq epoch is over, // will be unlocked on last repeat of this Nfreq // if ave = RUNNING/WINDOW and not yet locked: // set forever, will be unlocked in fix destructor // wrap setup_chunks in clearstep/addstep b/c it may invoke computes // both nevery and nfreq are future steps, // since call below to cchunk->ichunk() // does not re-invoke internal cchunk compute on this same step if (irepeat == 0) { if (cchunk->computeflag) modify->clearstep_compute(); nchunk = cchunk->setup_chunks(); if (cchunk->computeflag) { modify->addstep_compute(ntimestep+nevery); modify->addstep_compute(ntimestep+nfreq); } allocate(); if (nrepeat > 1 && ave == ONE) cchunk->lock(this,ntimestep,ntimestep+(nrepeat-1)*nevery); else if ((ave == RUNNING || ave == WINDOW) && !lockforever) { cchunk->lock(this,update->ntimestep,-1); lockforever = 1; } for (m = 0; m < nchunk; m++) { count_many[m] = count_sum[m] = 0.0; for (i = 0; i < nvalues; i++) values_many[m][i] = 0.0; } } // zero out arrays for one sample for (m = 0; m < nchunk; m++) { count_one[m] = 0.0; for (i = 0; i < nvalues; i++) values_one[m][i] = 0.0; } // 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 // wrap compute_ichunk in clearstep/addstep b/c it may invoke computes if (cchunk->computeflag) modify->clearstep_compute(); cchunk->compute_ichunk(); int *ichunk = cchunk->ichunk; if (cchunk->computeflag) modify->addstep_compute(ntimestep+nevery); // perform the computation for one sample // count # of atoms in each bin // accumulate results of attributes,computes,fixes,variables to local copy // sum within each chunk, only include atoms in fix group // compute/fix/variable may invoke computes so wrap with clear/add int *mask = atom->mask; int nlocal = atom->nlocal; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit && ichunk[i] > 0) count_one[ichunk[i]-1]++; modify->clearstep_compute(); for (m = 0; m < nvalues; m++) { n = value2index[m]; j = argindex[m]; // V,F adds velocities,forces to values if (which[m] == V || which[m] == F) { double **attribute; if (which[m] == V) attribute = atom->v; else attribute = atom->f; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit && ichunk[i] > 0) { index = ichunk[i]-1; values_one[index][m] += attribute[i][j]; } // DENSITY_NUMBER adds 1 to values } else if (which[m] == DENSITY_NUMBER) { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit && ichunk[i] > 0) { index = ichunk[i]-1; values_one[index][m] += 1.0; } // DENSITY_MASS or MASS adds mass to values } else if (which[m] == DENSITY_MASS || which[m] == MASS) { int *type = atom->type; double *mass = atom->mass; double *rmass = atom->rmass; if (rmass) { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit && ichunk[i] > 0) { index = ichunk[i]-1; values_one[index][m] += rmass[i]; } } else { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit && ichunk[i] > 0) { index = ichunk[i]-1; values_one[index][m] += mass[type[i]]; } } // TEMPERATURE adds KE to values // subtract and restore velocity bias if requested } else if (which[m] == TEMPERATURE) { if (biasflag) { if (tbias->invoked_scalar != ntimestep) tbias->compute_scalar(); tbias->remove_bias_all(); } double **v = atom->v; int *type = atom->type; double *mass = atom->mass; double *rmass = atom->rmass; if (rmass) { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit && ichunk[i] > 0) { index = ichunk[i]-1; values_one[index][m] += (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]) * rmass[i]; } } else { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit && ichunk[i] > 0) { index = ichunk[i]-1; values_one[index][m] += (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]) * mass[type[i]]; } } if (biasflag) tbias->restore_bias_all(); // COMPUTE adds its scalar or vector component to values // invoke compute if not previously invoked } else if (which[m] == COMPUTE) { Compute *compute = modify->compute[n]; if (!(compute->invoked_flag & INVOKED_PERATOM)) { compute->compute_peratom(); compute->invoked_flag |= INVOKED_PERATOM; } double *vector = compute->vector_atom; double **array = compute->array_atom; int jm1 = j - 1; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit && ichunk[i] > 0) { index = ichunk[i]-1; if (j == 0) values_one[index][m] += vector[i]; else values_one[index][m] += array[i][jm1]; } // FIX adds its scalar or vector component to values // access fix fields, guaranteed to be ready } else if (which[m] == FIX) { double *vector = modify->fix[n]->vector_atom; double **array = modify->fix[n]->array_atom; int jm1 = j - 1; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit && ichunk[i] > 0) { index = ichunk[i]-1; if (j == 0) values_one[index][m] += vector[i]; else values_one[index][m] += array[i][jm1]; } // VARIABLE adds its per-atom quantities to values // evaluate atom-style variable } else if (which[m] == VARIABLE) { if (atom->nmax > maxvar) { maxvar = atom->nmax; memory->destroy(varatom); memory->create(varatom,maxvar,"ave/chunk:varatom"); } input->variable->compute_atom(n,igroup,varatom,1,0); for (i = 0; i < nlocal; i++) if (mask[i] & groupbit && ichunk[i] > 0) { index = ichunk[i]-1; values_one[index][m] += varatom[i]; } } } // process the current sample // if normflag = ALL, accumulate values,count separately to many // if normflag = SAMPLE, one = value/count, accumulate one to many // count is MPI summed here, value is MPI summed below across samples // exception is TEMPERATURE: normalize by DOF // exception is DENSITYs: no normalize by atom count // exception is scaleflag = NOSCALE : no normalize by atom count // check last so other options can take precedence double mvv2e = force->mvv2e; double boltz = force->boltz; if (normflag == ALL) { for (m = 0; m < nchunk; m++) { count_many[m] += count_one[m]; for (j = 0; j < nvalues; j++) values_many[m][j] += values_one[m][j]; } } else if (normflag == SAMPLE) { MPI_Allreduce(count_one,count_many,nchunk,MPI_DOUBLE,MPI_SUM,world); for (m = 0; m < nchunk; m++) { if (count_many[m] > 0.0) for (j = 0; j < nvalues; j++) { if (which[j] == TEMPERATURE) values_many[m][j] += mvv2e*values_one[m][j] / ((cdof + adof*count_many[m]) * boltz); else if (which[j] == DENSITY_NUMBER || which[j] == DENSITY_MASS || scaleflag == NOSCALE) values_many[m][j] += values_one[m][j]; else values_many[m][j] += values_one[m][j]/count_many[m]; } count_sum[m] += count_many[m]; } } // done if irepeat < nrepeat // else reset irepeat and nvalid irepeat++; if (irepeat < nrepeat) { nvalid += nevery; modify->addstep_compute(nvalid); return; } irepeat = 0; nvalid = ntimestep+nfreq - (nrepeat-1)*nevery; modify->addstep_compute(nvalid); // unlock compute chunk/atom at end of Nfreq epoch // do not unlock if ave = RUNNING or WINDOW if (nrepeat > 1 && ave == ONE) cchunk->unlock(this); // time average across samples // if normflag = ALL, final is total value / total count // exception is TEMPERATURE: normalize by DOF for total count // exception is DENSITYs: normalize by repeat, not total count // exception is scaleflag == NOSCALE: normalize by repeat, not total count // check last so other options can take precedence // if normflag = SAMPLE, final is sum of ave / repeat double repeat = nrepeat; double mv2d = force->mv2d; if (normflag == ALL) { MPI_Allreduce(count_many,count_sum,nchunk,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&values_many[0][0],&values_sum[0][0],nchunk*nvalues, MPI_DOUBLE,MPI_SUM,world); for (m = 0; m < nchunk; m++) { if (count_sum[m] > 0.0) for (j = 0; j < nvalues; j++) { if (which[j] == TEMPERATURE) values_sum[m][j] *= mvv2e / ((cdof + adof*count_sum[m]) * boltz); else if (which[j] == DENSITY_MASS) values_sum[m][j] *= mv2d/repeat; else if (which[j] == DENSITY_NUMBER || scaleflag == NOSCALE) values_sum[m][j] /= repeat; else values_sum[m][j] /= count_sum[m]; } count_sum[m] /= repeat; } } else if (normflag == SAMPLE) { MPI_Allreduce(&values_many[0][0],&values_sum[0][0],nchunk*nvalues, MPI_DOUBLE,MPI_SUM,world); for (m = 0; m < nchunk; m++) { for (j = 0; j < nvalues; j++) values_sum[m][j] /= repeat; count_sum[m] /= repeat; } } // DENSITYs are additionally normalized by chunk volume // use scalar or vector values for volume(s) // if chunks are not spatial bins, chunk_volume_scalar = 1.0 for (j = 0; j < nvalues; j++) if (which[j] == DENSITY_NUMBER || which[j] == DENSITY_MASS) { if (cchunk->chunk_volume_vec) { double *chunk_volume_vec = cchunk->chunk_volume_vec; for (m = 0; m < nchunk; m++) values_sum[m][j] /= chunk_volume_vec[m]; } else { double chunk_volume_scalar = cchunk->chunk_volume_scalar; for (m = 0; m < nchunk; m++) values_sum[m][j] /= chunk_volume_scalar; } } // if ave = ONE, only single Nfreq timestep value is needed // if ave = RUNNING, combine with all previous Nfreq timestep values // if ave = WINDOW, comine with nwindow most recent Nfreq timestep values if (ave == ONE) { for (m = 0; m < nchunk; m++) { for (i = 0; i < nvalues; i++) values_total[m][i] = values_sum[m][i]; count_total[m] = count_sum[m]; } normcount = 1; } else if (ave == RUNNING) { for (m = 0; m < nchunk; m++) { for (i = 0; i < nvalues; i++) values_total[m][i] += values_sum[m][i]; count_total[m] += count_sum[m]; } normcount++; } else if (ave == WINDOW) { for (m = 0; m < nchunk; m++) { for (i = 0; i < nvalues; i++) { values_total[m][i] += values_sum[m][i]; if (window_limit) values_total[m][i] -= values_list[iwindow][m][i]; values_list[iwindow][m][i] = values_sum[m][i]; } count_total[m] += count_sum[m]; if (window_limit) count_total[m] -= count_list[iwindow][m]; count_list[iwindow][m] = count_sum[m]; } iwindow++; if (iwindow == nwindow) { iwindow = 0; window_limit = 1; } if (window_limit) normcount = nwindow; else normcount = iwindow; } // output result to file if (fp && me == 0) { clearerr(fp); if (overwrite) fseek(fp,filepos,SEEK_SET); double count = 0.0; for (m = 0; m < nchunk; m++) count += count_total[m]; fprintf(fp,BIGINT_FORMAT " %d %g\n",ntimestep,nchunk,count); int compress = cchunk->compress; int *chunkID = cchunk->chunkID; int ncoord = cchunk->ncoord; double **coord = cchunk->coord; if (!compress) { if (ncoord == 0) { for (m = 0; m < nchunk; m++) { fprintf(fp," %d %g",m+1,count_total[m]/normcount); for (i = 0; i < nvalues; i++) fprintf(fp,format,values_total[m][i]/normcount); fprintf(fp,"\n"); } } else if (ncoord == 1) { for (m = 0; m < nchunk; m++) { fprintf(fp," %d %g %g",m+1,coord[m][0], count_total[m]/normcount); for (i = 0; i < nvalues; i++) fprintf(fp,format,values_total[m][i]/normcount); fprintf(fp,"\n"); } } else if (ncoord == 2) { for (m = 0; m < nchunk; m++) { fprintf(fp," %d %g %g %g",m+1,coord[m][0],coord[m][1], count_total[m]/normcount); for (i = 0; i < nvalues; i++) fprintf(fp,format,values_total[m][i]/normcount); fprintf(fp,"\n"); } } else if (ncoord == 3) { for (m = 0; m < nchunk; m++) { fprintf(fp," %d %g %g %g %g",m+1, coord[m][0],coord[m][1],coord[m][2],count_total[m]/normcount); for (i = 0; i < nvalues; i++) fprintf(fp,format,values_total[m][i]/normcount); fprintf(fp,"\n"); } } } else { int j; if (ncoord == 0) { for (m = 0; m < nchunk; m++) { fprintf(fp," %d %d %g",m+1,chunkID[m],count_total[m]/normcount); for (i = 0; i < nvalues; i++) fprintf(fp,format,values_total[m][i]/normcount); fprintf(fp,"\n"); } } else if (ncoord == 1) { for (m = 0; m < nchunk; m++) { j = chunkID[m]; fprintf(fp," %d %d %g %g",m+1,j,coord[j-1][0], count_total[m]/normcount); for (i = 0; i < nvalues; i++) fprintf(fp,format,values_total[m][i]/normcount); fprintf(fp,"\n"); } } else if (ncoord == 2) { for (m = 0; m < nchunk; m++) { j = chunkID[m]; fprintf(fp," %d %d %g %g %g",m+1,j,coord[j-1][0],coord[j-1][1], count_total[m]/normcount); for (i = 0; i < nvalues; i++) fprintf(fp,format,values_total[m][i]/normcount); fprintf(fp,"\n"); } } else if (ncoord == 3) { for (m = 0; m < nchunk; m++) { j = chunkID[m]; fprintf(fp," %d %d %g %g %g %g",m+1,j,coord[j-1][0], coord[j-1][1],coord[j-1][2],count_total[m]/normcount); for (i = 0; i < nvalues; i++) fprintf(fp,format,values_total[m][i]/normcount); fprintf(fp,"\n"); } } } if (ferror(fp)) error->one(FLERR,"Error writing averaged chunk data"); fflush(fp); if (overwrite) { long fileend = ftell(fp); if (fileend > 0) ftruncate(fileno(fp),fileend); } } } /* ---------------------------------------------------------------------- allocate all per-chunk vectors ------------------------------------------------------------------------- */ void FixAveChunk::allocate() { size_array_rows = nchunk; // reallocate chunk arrays if needed if (nchunk > maxchunk) { maxchunk = nchunk; memory->grow(count_one,nchunk,"ave/chunk:count_one"); memory->grow(count_many,nchunk,"ave/chunk:count_many"); memory->grow(count_sum,nchunk,"ave/chunk:count_sum"); memory->grow(count_total,nchunk,"ave/chunk:count_total"); memory->grow(values_one,nchunk,nvalues,"ave/chunk:values_one"); memory->grow(values_many,nchunk,nvalues,"ave/chunk:values_many"); memory->grow(values_sum,nchunk,nvalues,"ave/chunk:values_sum"); memory->grow(values_total,nchunk,nvalues,"ave/chunk:values_total"); // only allocate count and values list for ave = WINDOW if (ave == WINDOW) { memory->create(count_list,nwindow,nchunk,"ave/chunk:count_list"); memory->create(values_list,nwindow,nchunk,nvalues, "ave/chunk:values_list"); } // reinitialize regrown count/values total since they accumulate int i,m; for (m = 0; m < nchunk; m++) { for (i = 0; i < nvalues; i++) values_total[m][i] = 0.0; count_total[m] = 0.0; } } } /* ---------------------------------------------------------------------- return I,J array value if I exceeds current nchunks, return 0.0 instead of generating an error columns 1 to colextra = chunkID + ncoord next column = count, remaining columns = Nvalues ------------------------------------------------------------------------- */ double FixAveChunk::compute_array(int i, int j) { if (values_total == NULL) return 0.0; if (i >= nchunk) return 0.0; if (j < colextra) { if (cchunk->compress) { if (j == 0) return (double) cchunk->chunkID[i]; return cchunk->coord[i][j-1]; } else return cchunk->coord[i][j]; } j -= colextra + 1; if (!normcount) return 0.0; if (j < 0) return count_total[i]/normcount; return values_total[i][j]/normcount; } /* ---------------------------------------------------------------------- calculate nvalid = next step on which end_of_step does something can be this timestep if multiple of nfreq and nrepeat = 1 else backup from next multiple of nfreq ------------------------------------------------------------------------- */ bigint FixAveChunk::nextvalid() { bigint nvalid = (update->ntimestep/nfreq)*nfreq + nfreq; if (nvalid-nfreq == update->ntimestep && nrepeat == 1) nvalid = update->ntimestep; else nvalid -= (nrepeat-1)*nevery; if (nvalid < update->ntimestep) nvalid += nfreq; return nvalid; } /* ---------------------------------------------------------------------- memory usage of varatom and bins ------------------------------------------------------------------------- */ double FixAveChunk::memory_usage() { double bytes = maxvar * sizeof(double); // varatom bytes += 4*maxchunk * sizeof(double); // count one,many,sum,total bytes += nvalues*maxchunk * sizeof(double); // values one,many,sum,total bytes += nwindow*maxchunk * sizeof(double); // count_list bytes += nwindow*maxchunk*nvalues * sizeof(double); // values_list return bytes; } diff --git a/src/fix_ave_correlate.cpp b/src/fix_ave_correlate.cpp index f2dac0ac4..0e2ad9d0f 100644 --- a/src/fix_ave_correlate.cpp +++ b/src/fix_ave_correlate.cpp @@ -1,633 +1,652 @@ /* ---------------------------------------------------------------------- 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: Benoit Leblanc, Dave Rigby, Paul Saxe (Materials Design) Reese Jones (Sandia) ------------------------------------------------------------------------- */ #include <stdlib.h> #include <string.h> #include <unistd.h> #include "fix_ave_correlate.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{ONE,RUNNING}; enum{AUTO,UPPER,LOWER,AUTOUPPER,AUTOLOWER,FULL}; #define INVOKED_SCALAR 1 #define INVOKED_VECTOR 2 #define INVOKED_ARRAY 4 /* ---------------------------------------------------------------------- */ FixAveCorrelate::FixAveCorrelate(LAMMPS * lmp, int narg, char **arg): Fix (lmp, narg, arg) { if (narg < 7) error->all(FLERR,"Illegal fix ave/correlate command"); MPI_Comm_rank(world,&me); nevery = force->inumeric(FLERR,arg[3]); nrepeat = force->inumeric(FLERR,arg[4]); nfreq = force->inumeric(FLERR,arg[5]); global_freq = nfreq; + // expand args if any have wildcard character "*" + + int expand = 0; + char **earg,**arghold; + int nargnew = input->expand_args(narg-6,&arg[6],0,earg); + + if (earg != &arg[6]) expand = 1; + arghold = arg; + arg = earg; + // parse values until one isn't recognized - which = new int[narg-6]; - argindex = new int[narg-6]; - ids = new char*[narg-6]; - value2index = new int[narg-6]; + which = new int[nargnew]; + argindex = new int[nargnew]; + ids = new char*[nargnew]; + value2index = new int[nargnew]; nvalues = 0; - int iarg = 6; - while (iarg < narg) { + int iarg = 0; + while (iarg < nargnew) { 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 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; ave = ONE; startstep = 0; prefactor = 1.0; fp = NULL; overwrite = 0; char *title1 = NULL; char *title2 = NULL; char *title3 = NULL; - while (iarg < narg) { + while (iarg < nargnew) { if (strcmp(arg[iarg],"type") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate 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 command"); iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); if (strcmp(arg[iarg+1],"one") == 0) ave = ONE; else if (strcmp(arg[iarg+1],"running") == 0) ave = RUNNING; else error->all(FLERR,"Illegal fix ave/correlate command"); iarg += 2; } else if (strcmp(arg[iarg],"start") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); startstep = force->inumeric(FLERR,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"prefactor") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); prefactor = force->numeric(FLERR,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"file") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); if (me == 0) { fp = fopen(arg[iarg+1],"w"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix ave/correlate 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 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 command"); delete [] title2; int n = strlen(arg[iarg+1]) + 1; title2 = new char[n]; strcpy(title2,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title3") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/correlate command"); delete [] title3; int n = strlen(arg[iarg+1]) + 1; title3 = new char[n]; strcpy(title3,arg[iarg+1]); iarg += 2; } else error->all(FLERR,"Illegal fix ave/correlate command"); } // setup and error check // for fix inputs, check that fix frequency is acceptable if (nevery <= 0 || nrepeat <= 0 || nfreq <= 0) error->all(FLERR,"Illegal fix ave/correlate command"); if (nfreq % nevery) error->all(FLERR,"Illegal fix ave/correlate command"); if (ave == ONE && nfreq < (nrepeat-1)*nevery) error->all(FLERR,"Illegal fix ave/correlate command"); if (ave != RUNNING && overwrite) error->all(FLERR,"Illegal fix ave/correlate 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 does not exist"); if (argindex[i] == 0 && modify->compute[icompute]->scalar_flag == 0) error->all(FLERR, "Fix ave/correlate compute does not calculate a scalar"); if (argindex[i] && modify->compute[icompute]->vector_flag == 0) error->all(FLERR, "Fix ave/correlate compute does not calculate a vector"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_vector) error->all(FLERR,"Fix ave/correlate 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 does not exist"); if (argindex[i] == 0 && modify->fix[ifix]->scalar_flag == 0) error->all(FLERR,"Fix ave/correlate fix does not calculate a scalar"); if (argindex[i] && modify->fix[ifix]->vector_flag == 0) error->all(FLERR,"Fix ave/correlate fix does not calculate a vector"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_vector) error->all(FLERR, "Fix ave/correlate fix vector is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) error->all(FLERR,"Fix for fix ave/correlate " "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 does not exist"); if (argindex[i] == 0 && input->variable->equalstyle(ivariable) == 0) error->all(FLERR, "Fix ave/correlate variable is not equal-style variable"); if (argindex[i] && input->variable->vectorstyle(ivariable) == 0) error->all(FLERR, "Fix ave/correlate variable is not vector-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) { clearerr(fp); 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,"# Timestep Number-of-time-windows\n"); if (title3) fprintf(fp,"%s\n",title3); else { fprintf(fp,"# Index TimeDelta Ncount"); if (type == AUTO) for (int i = 0; i < nvalues; i++) - fprintf(fp," %s*%s",arg[6+i],arg[6+i]); + fprintf(fp," %s*%s",earg[i],earg[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[6+i],arg[6+j]); + fprintf(fp," %s*%s",earg[i],earg[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[6+i],arg[6+j]); + fprintf(fp," %s*%s",earg[i],earg[j]); else if (type == AUTOUPPER) for (int i = 0; i < nvalues; i++) for (int j = i; j < nvalues; j++) - fprintf(fp," %s*%s",arg[6+i],arg[6+j]); + fprintf(fp," %s*%s",earg[i],earg[j]); else if (type == AUTOLOWER) for (int i = 0; i < nvalues; i++) for (int j = 0; j < i; j++) - fprintf(fp," %s*%s",arg[6+i],arg[6+j]); + fprintf(fp," %s*%s",earg[i],earg[j]); else if (type == FULL) for (int i = 0; i < nvalues; i++) for (int j = 0; j < nvalues; j++) - fprintf(fp," %s*%s",arg[6+i],arg[6+j]); + fprintf(fp," %s*%s",earg[i],earg[j]); fprintf(fp,"\n"); } if (ferror(fp)) error->one(FLERR,"Error writing file header"); filepos = ftell(fp); } delete [] title1; delete [] title2; delete [] title3; + // if wildcard expansion occurred, free earg memory from expand_args() + // wait to do this until after file comment lines are printed + + if (expand) { + for (int i = 0; i < nvalues; i++) delete [] earg[i]; + memory->sfree(earg); + arg = arghold; + } + // allocate and initialize memory for averaging // set count and corr to zero since they accumulate // also set save versions to zero in case accessed via compute_array() memory->create(values,nrepeat,nvalues,"ave/correlate:values"); memory->create(count,nrepeat,"ave/correlate:count"); memory->create(save_count,nrepeat,"ave/correlate:save_count"); memory->create(corr,nrepeat,npair,"ave/correlate:corr"); memory->create(save_corr,nrepeat,npair,"ave/correlate:save_corr"); int i,j; for (i = 0; i < nrepeat; i++) { save_count[i] = count[i] = 0; for (j = 0; j < npair; j++) save_corr[i][j] = corr[i][j] = 0.0; } // this fix produces a global array array_flag = 1; size_array_rows = nrepeat; size_array_cols = npair+2; extarray = 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 lastindex = -1; firstindex = 0; nsample = 0; nvalid_last = -1; nvalid = nextvalid(); modify->addstep_compute_all(nvalid); } /* ---------------------------------------------------------------------- */ FixAveCorrelate::~FixAveCorrelate() { delete [] which; delete [] argindex; delete [] value2index; for (int i = 0; i < nvalues; i++) delete [] ids[i]; delete [] ids; memory->destroy(values); memory->destroy(count); memory->destroy(save_count); memory->destroy(corr); memory->destroy(save_corr); if (fp && me == 0) fclose(fp); } /* ---------------------------------------------------------------------- */ int FixAveCorrelate::setmask() { int mask = 0; mask |= END_OF_STEP; return mask; } /* ---------------------------------------------------------------------- */ void FixAveCorrelate::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 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 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 does not exist"); value2index[i] = ivariable; } } // need to reset nvalid if nvalid < ntimestep b/c minimize was performed if (nvalid < update->ntimestep) { lastindex = -1; firstindex = 0; nsample = 0; nvalid = nextvalid(); modify->addstep_compute_all(nvalid); } } /* ---------------------------------------------------------------------- only does something if nvalid = current timestep ------------------------------------------------------------------------- */ void FixAveCorrelate::setup(int vflag) { end_of_step(); } /* ---------------------------------------------------------------------- */ void FixAveCorrelate::end_of_step() { int i,j,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"); 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(); // lastindex = index in values ring of latest time sample lastindex++; if (lastindex == nrepeat) lastindex = 0; 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 or vector-style variable } else if (which[i] == VARIABLE) { if (argindex[i] == 0) scalar = input->variable->compute_equal(m); else { double *varvec; int nvec = input->variable->compute_vector(m,&varvec); int index = argindex[i]; if (nvec < index) scalar = 0.0; else scalar = varvec[index-1]; } } values[lastindex][i] = scalar; } // fistindex = index in values ring of earliest time sample // nsample = number of time samples in values ring if (nsample < nrepeat) nsample++; else { firstindex++; if (firstindex == nrepeat) firstindex = 0; } nvalid += nevery; modify->addstep_compute(nvalid); // calculate all Cij() enabled by latest values accumulate(); if (ntimestep % nfreq) return; // save results in save_count and save_corr for (i = 0; i < nrepeat; i++) { save_count[i] = count[i]; if (count[i]) for (j = 0; j < npair; j++) save_corr[i][j] = prefactor*corr[i][j]/count[i]; else for (j = 0; j < npair; j++) save_corr[i][j] = 0.0; } // output result to file if (fp && me == 0) { clearerr(fp); if (overwrite) fseek(fp,filepos,SEEK_SET); fprintf(fp,BIGINT_FORMAT " %d\n",ntimestep,nrepeat); for (i = 0; i < nrepeat; i++) { fprintf(fp,"%d %d %d",i+1,i*nevery,count[i]); if (count[i]) for (j = 0; j < npair; j++) fprintf(fp," %g",prefactor*corr[i][j]/count[i]); else for (j = 0; j < npair; j++) fprintf(fp," 0.0"); fprintf(fp,"\n"); } if (ferror(fp)) error->one(FLERR,"Error writing out correlation data"); fflush(fp); if (overwrite) { long fileend = ftell(fp); if (fileend > 0) ftruncate(fileno(fp),fileend); } } // zero accumulation if requested // recalculate Cij(0) if (ave == ONE) { for (i = 0; i < nrepeat; i++) { count[i] = 0; for (j = 0; j < npair; j++) corr[i][j] = 0.0; } nsample = 1; accumulate(); } } /* ---------------------------------------------------------------------- accumulate correlation data using more recently added values ------------------------------------------------------------------------- */ void FixAveCorrelate::accumulate() { int i,j,k,m,n,ipair; for (k = 0; k < nsample; k++) count[k]++; if (type == AUTO) { m = n = lastindex; for (k = 0; k < nsample; k++) { ipair = 0; for (i = 0; i < nvalues; i++) { corr[k][ipair++] += values[m][i]*values[n][i]; } m--; if (m < 0) m = nrepeat-1; } } else if (type == UPPER) { m = n = lastindex; for (k = 0; k < nsample; k++) { ipair = 0; for (i = 0; i < nvalues; i++) for (j = i+1; j < nvalues; j++) corr[k][ipair++] += values[m][i]*values[n][j]; m--; if (m < 0) m = nrepeat-1; } } else if (type == LOWER) { m = n = lastindex; for (k = 0; k < nsample; k++) { ipair = 0; for (i = 0; i < nvalues; i++) for (j = 0; j < i; j++) corr[k][ipair++] += values[m][i]*values[n][j]; m--; if (m < 0) m = nrepeat-1; } } else if (type == AUTOUPPER) { m = n = lastindex; for (k = 0; k < nsample; k++) { ipair = 0; for (i = 0; i < nvalues; i++) for (j = i; j < nvalues; j++) corr[k][ipair++] += values[m][i]*values[n][j]; m--; if (m < 0) m = nrepeat-1; } } else if (type == AUTOLOWER) { m = n = lastindex; for (k = 0; k < nsample; k++) { ipair = 0; for (i = 0; i < nvalues; i++) for (j = 0; j <= i; j++) corr[k][ipair++] += values[m][i]*values[n][j]; m--; if (m < 0) m = nrepeat-1; } } else if (type == FULL) { m = n = lastindex; for (k = 0; k < nsample; k++) { ipair = 0; for (i = 0; i < nvalues; i++) for (j = 0; j < nvalues; j++) corr[k][ipair++] += values[m][i]*values[n][j]; m--; if (m < 0) m = nrepeat-1; } } } /* ---------------------------------------------------------------------- return I,J array value ------------------------------------------------------------------------- */ double FixAveCorrelate::compute_array(int i, int j) { if (j == 0) return 1.0*i*nevery; else if (j == 1) return 1.0*save_count[i]; else if (save_count[i]) return save_corr[i][j-2]; return 0.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 FixAveCorrelate::nextvalid() { bigint nvalid = update->ntimestep; if (startstep > nvalid) nvalid = startstep; if (nvalid % nevery) nvalid = (nvalid/nevery)*nevery + nevery; return nvalid; } diff --git a/src/fix_ave_histo.cpp b/src/fix_ave_histo.cpp index 1255aade3..cc0eb9532 100644 --- a/src/fix_ave_histo.cpp +++ b/src/fix_ave_histo.cpp @@ -1,1074 +1,1035 @@ /* ---------------------------------------------------------------------- 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 <unistd.h> #include "fix_ave_histo.h" #include "atom.h" #include "update.h" #include "modify.h" #include "compute.h" #include "group.h" #include "input.h" #include "variable.h" #include "memory.h" #include "error.h" #include "force.h" using namespace LAMMPS_NS; using namespace FixConst; enum{X,V,F,COMPUTE,FIX,VARIABLE}; enum{ONE,RUNNING}; enum{SCALAR,VECTOR,WINDOW}; enum{GLOBAL,PERATOM,LOCAL}; enum{IGNORE,END,EXTRA}; #define INVOKED_SCALAR 1 #define INVOKED_VECTOR 2 #define INVOKED_ARRAY 4 #define INVOKED_PERATOM 8 #define INVOKED_LOCAL 16 #define BIG 1.0e20 /* ---------------------------------------------------------------------- */ FixAveHisto::FixAveHisto(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (narg < 10) error->all(FLERR,"Illegal fix ave/histo command"); MPI_Comm_rank(world,&me); nevery = force->inumeric(FLERR,arg[3]); nrepeat = force->inumeric(FLERR,arg[4]); nfreq = force->inumeric(FLERR,arg[5]); global_freq = nfreq; vector_flag = 1; size_vector = 4; extvector = 0; array_flag = 1; size_array_cols = 3; extarray = 0; dynamic_group_allow = 1; lo = force->numeric(FLERR,arg[6]); hi = force->numeric(FLERR,arg[7]); nbins = force->inumeric(FLERR,arg[8]); // scan values to count them // then read options so know mode = SCALAR/VECTOR before re-reading values nvalues = 0; int iarg = 9; while (iarg < narg) { if (strcmp(arg[iarg],"x") == 0 || strcmp(arg[iarg],"y") == 0 || strcmp(arg[iarg],"z") == 0 || strcmp(arg[iarg],"vx") == 0 || strcmp(arg[iarg],"vy") == 0 || strcmp(arg[iarg],"vz") == 0 || strcmp(arg[iarg],"fx") == 0 || strcmp(arg[iarg],"fy") == 0 || strcmp(arg[iarg],"fz") == 0 || strncmp(arg[iarg],"c_",2) == 0 || strncmp(arg[iarg],"f_",2) == 0 || strncmp(arg[iarg],"v_",2) == 0) { nvalues++; iarg++; } else break; } - options(narg,arg); + if (nvalues == 0) error->all(FLERR,"No values in fix ave/histo command"); - // parse values until one isn't recognized - // if mode = VECTOR and value is a global array: - // expand it as if columns listed one by one - // adjust nvalues accordingly via maxvalues + options(iarg,narg,arg); + + // expand args if any have wildcard character "*" + // this can reset nvalues + + int expand = 0; + char **earg,**arghold; + nvalues = input->expand_args(nvalues,&arg[9],mode,earg); + + if (earg != &arg[9]) expand = 1; + arghold = arg; + arg = earg; + + // parse values which = argindex = value2index = NULL; ids = NULL; - int maxvalues = nvalues; - allocate_values(maxvalues); - nvalues = 0; + allocate_values(nvalues); - iarg = 9; - while (iarg < narg) { - if (strcmp(arg[iarg],"x") == 0) { - which[nvalues] = X; - argindex[nvalues] = 0; - ids[nvalues] = NULL; - nvalues++; + for (int i = 0; i < nvalues; i++) { + if (strcmp(arg[i],"x") == 0) { + which[i] = X; + argindex[i] = 0; + ids[i] = NULL; iarg++; - } else if (strcmp(arg[iarg],"y") == 0) { - which[nvalues] = X; - argindex[nvalues] = 1; - ids[nvalues] = NULL; - nvalues++; + } else if (strcmp(arg[i],"y") == 0) { + which[i] = X; + argindex[i] = 1; + ids[i] = NULL; iarg++; - } else if (strcmp(arg[iarg],"z") == 0) { - which[nvalues] = X; - argindex[nvalues] = 2; - ids[nvalues] = NULL; - nvalues++; + } else if (strcmp(arg[i],"z") == 0) { + which[i] = X; + argindex[i] = 2; + ids[i] = NULL; iarg++; - } else if (strcmp(arg[iarg],"vx") == 0) { - which[nvalues] = V; - argindex[nvalues] = 0; - ids[nvalues] = NULL; - nvalues++; + } else if (strcmp(arg[i],"vx") == 0) { + which[i] = V; + argindex[i] = 0; + ids[i] = NULL; iarg++; - } else if (strcmp(arg[iarg],"vy") == 0) { - which[nvalues] = V; - argindex[nvalues] = 1; - ids[nvalues] = NULL; - nvalues++; + } else if (strcmp(arg[i],"vy") == 0) { + which[i] = V; + argindex[i] = 1; + ids[i] = NULL; iarg++; - } else if (strcmp(arg[iarg],"vz") == 0) { - which[nvalues] = V; - argindex[nvalues] = 2; - ids[nvalues] = NULL; - nvalues++; + } else if (strcmp(arg[i],"vz") == 0) { + which[i] = V; + argindex[i] = 2; + ids[i] = NULL; iarg++; - } else if (strcmp(arg[iarg],"fx") == 0) { - which[nvalues] = F; - argindex[nvalues] = 0; - ids[nvalues] = NULL; - nvalues++; + } else if (strcmp(arg[i],"fx") == 0) { + which[i] = F; + argindex[i] = 0; + ids[i] = NULL; iarg++; - } else if (strcmp(arg[iarg],"fy") == 0) { - which[nvalues] = F; - argindex[nvalues] = 1; - ids[nvalues] = NULL; - nvalues++; + } else if (strcmp(arg[i],"fy") == 0) { + which[i] = F; + argindex[i] = 1; + ids[i] = NULL; iarg++; - } else if (strcmp(arg[iarg],"fz") == 0) { - which[nvalues] = F; - argindex[nvalues] = 2; - ids[nvalues] = NULL; - nvalues++; + } else if (strcmp(arg[i],"fz") == 0) { + which[i] = F; + argindex[i] = 2; + ids[i] = NULL; iarg++; - } else 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; + } else if ((strncmp(arg[i],"c_",2) == 0) || + (strncmp(arg[i],"f_",2) == 0) || + (strncmp(arg[i],"v_",2) == 0)) { + if (arg[i][0] == 'c') which[i] = COMPUTE; + else if (arg[i][0] == 'f') which[i] = FIX; + else if (arg[i][0] == 'v') which[i] = VARIABLE; - int n = strlen(arg[iarg]); + int n = strlen(arg[i]); char *suffix = new char[n]; - strcpy(suffix,&arg[iarg][2]); + strcpy(suffix,&arg[i][2]); char *ptr = strchr(suffix,'['); if (ptr) { if (suffix[strlen(suffix)-1] != ']') error->all(FLERR,"Illegal fix ave/histo command"); - argindex[nvalues] = atoi(ptr+1); + argindex[i] = atoi(ptr+1); *ptr = '\0'; - } else argindex[nvalues] = 0; + } else argindex[i] = 0; n = strlen(suffix) + 1; - ids[nvalues] = new char[n]; - strcpy(ids[nvalues],suffix); + ids[i] = new char[n]; + strcpy(ids[i],suffix); delete [] suffix; + } + } - if (mode == VECTOR && which[nvalues] == COMPUTE && - argindex[nvalues] == 0) { - int icompute = modify->find_compute(ids[nvalues]); - if (icompute < 0) - error->all(FLERR,"Compute ID for fix ave/histo does not exist"); - if (modify->compute[icompute]->array_flag) { - int ncols = modify->compute[icompute]->size_array_cols; - maxvalues += ncols-1; - allocate_values(maxvalues); - argindex[nvalues] = 1; - for (int icol = 1; icol < ncols; icol++) { - which[nvalues+icol] = which[nvalues]; - argindex[nvalues+icol] = icol+1; - n = strlen(ids[nvalues]) + 1; - ids[nvalues+icol] = new char[n]; - strcpy(ids[nvalues+icol],ids[nvalues]); - } - nvalues += ncols-1; - } + // if wildcard expansion occurred, free earg memory from expand_args() - } else if (mode == VECTOR && which[nvalues] == FIX && - argindex[nvalues] == 0) { - int ifix = modify->find_fix(ids[nvalues]); - if (ifix < 0) - error->all(FLERR,"Fix ID for fix ave/histo does not exist"); - if (modify->fix[ifix]->array_flag) { - int ncols = modify->fix[ifix]->size_array_cols; - maxvalues += ncols-1; - allocate_values(maxvalues); - argindex[nvalues] = 1; - for (int icol = 1; icol < ncols; icol++) { - which[nvalues+icol] = which[nvalues]; - argindex[nvalues+icol] = icol+1; - n = strlen(ids[nvalues]) + 1; - ids[nvalues+icol] = new char[n]; - strcpy(ids[nvalues+icol],ids[nvalues]); - } - nvalues += ncols-1; - } - } - - nvalues++; - iarg++; - } else break; + if (expand) { + for (int i = 0; i < nvalues; i++) delete [] earg[i]; + memory->sfree(earg); + arg = arghold; } // setup and error check // kind = inputs are all global, or all per-atom, or all local // for fix inputs, check that fix frequency is acceptable if (nevery <= 0 || nrepeat <= 0 || nfreq <= 0) error->all(FLERR,"Illegal fix ave/histo command"); if (nfreq % nevery || nrepeat*nevery > nfreq) error->all(FLERR,"Illegal fix ave/histo command"); if (lo >= hi) error->all(FLERR,"Illegal fix ave/histo command"); if (nbins <= 0) error->all(FLERR,"Illegal fix ave/histo command"); if (ave != RUNNING && overwrite) error->all(FLERR,"Illegal fix ave/histo command"); int kindflag; for (int i = 0; i < nvalues; i++) { if (which[i] == X || which[i] == V || which[i] == F) kindflag = PERATOM; else if (which[i] == COMPUTE) { Compute *compute = modify->compute[modify->find_compute(ids[0])]; if (compute->scalar_flag || compute->vector_flag || compute->array_flag) kindflag = GLOBAL; else if (compute->peratom_flag) kindflag = PERATOM; else if (compute->local_flag) kindflag = LOCAL; else error->all(FLERR,"Fix ave/histo input is invalid compute"); } else if (which[i] == FIX) { Fix *fix = modify->fix[modify->find_fix(ids[0])]; if (fix->scalar_flag || fix->vector_flag || fix->array_flag) kindflag = GLOBAL; else if (fix->peratom_flag) kindflag = PERATOM; else if (fix->local_flag) kindflag = LOCAL; else error->all(FLERR,"Fix ave/histo input is invalid fix"); } else if (which[i] == VARIABLE) { int ivariable = input->variable->find(ids[i]); if (input->variable->equalstyle(ivariable)) kindflag = GLOBAL; else if (input->variable->atomstyle(ivariable)) kindflag = PERATOM; else error->all(FLERR,"Fix ave/histo input is invalid variable"); } if (i == 0) kind = kindflag; else if (kindflag != kind) error->all(FLERR, "Fix ave/histo inputs are not all global, peratom, or local"); } if (kind == PERATOM && mode == SCALAR) error->all(FLERR, "Fix ave/histo cannot input per-atom values in scalar mode"); if (kind == LOCAL && mode == SCALAR) error->all(FLERR,"Fix ave/histo cannot input local values in scalar mode"); for (int i = 0; i < nvalues; i++) { if (which[i] == COMPUTE && kind == GLOBAL && mode == SCALAR) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) error->all(FLERR,"Compute ID for fix ave/histo does not exist"); if (argindex[i] == 0 && modify->compute[icompute]->scalar_flag == 0) error->all(FLERR, "Fix ave/histo compute does not calculate a global scalar"); if (argindex[i] && modify->compute[icompute]->vector_flag == 0) error->all(FLERR, "Fix ave/histo compute does not calculate a global vector"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_vector) error->all(FLERR, "Fix ave/histo compute vector is accessed out-of-range"); } else if (which[i] == COMPUTE && kind == GLOBAL && mode == VECTOR) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) error->all(FLERR,"Compute ID for fix ave/histo does not exist"); if (argindex[i] == 0 && modify->compute[icompute]->vector_flag == 0) error->all(FLERR, "Fix ave/histo compute does not calculate a global vector"); if (argindex[i] && modify->compute[icompute]->array_flag == 0) error->all(FLERR, "Fix ave/histo compute does not calculate a global array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_array_cols) error->all(FLERR, "Fix ave/histo compute array is accessed out-of-range"); } else if (which[i] == COMPUTE && kind == PERATOM) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) error->all(FLERR,"Compute ID for fix ave/histo does not exist"); if (modify->compute[icompute]->peratom_flag == 0) error->all(FLERR, "Fix ave/histo compute does not calculate per-atom values"); if (argindex[i] == 0 && modify->compute[icompute]->size_peratom_cols != 0) error->all(FLERR,"Fix ave/histo compute does not " "calculate a per-atom vector"); if (argindex[i] && modify->compute[icompute]->size_peratom_cols == 0) error->all(FLERR,"Fix ave/histo compute does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_peratom_cols) error->all(FLERR, "Fix ave/histo compute array is accessed out-of-range"); } else if (which[i] == COMPUTE && kind == LOCAL) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) error->all(FLERR,"Compute ID for fix ave/histo does not exist"); if (modify->compute[icompute]->local_flag == 0) error->all(FLERR, "Fix ave/histo compute does not calculate local values"); if (argindex[i] == 0 && modify->compute[icompute]->size_local_cols != 0) error->all(FLERR,"Fix ave/histo compute does not " "calculate a local vector"); if (argindex[i] && modify->compute[icompute]->size_local_cols == 0) error->all(FLERR,"Fix ave/histo compute does not " "calculate a local array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_local_cols) error->all(FLERR, "Fix ave/histo compute array is accessed out-of-range"); } else if (which[i] == FIX && kind == GLOBAL && mode == SCALAR) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) error->all(FLERR,"Fix ID for fix ave/histo does not exist"); if (argindex[i] == 0 && modify->fix[ifix]->scalar_flag == 0) error->all(FLERR, "Fix ave/histo fix does not calculate a global scalar"); if (argindex[i] && modify->fix[ifix]->vector_flag == 0) error->all(FLERR, "Fix ave/histo fix does not calculate a global vector"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_vector) error->all(FLERR,"Fix ave/histo fix vector is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) error->all(FLERR, "Fix for fix ave/histo not computed at compatible time"); } else if (which[i] == FIX && kind == GLOBAL && mode == VECTOR) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) error->all(FLERR,"Fix ID for fix ave/histo does not exist"); if (argindex[i] == 0 && modify->fix[ifix]->vector_flag == 0) error->all(FLERR, "Fix ave/histo fix does not calculate a global vector"); if (argindex[i] && modify->fix[ifix]->array_flag == 0) error->all(FLERR,"Fix ave/histo fix does not calculate a global array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_array_cols) error->all(FLERR,"Fix ave/histo fix array is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) error->all(FLERR, "Fix for fix ave/histo not computed at compatible time"); } else if (which[i] == FIX && kind == PERATOM) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) error->all(FLERR,"Fix ID for fix ave/histo does not exist"); if (modify->fix[ifix]->peratom_flag == 0) error->all(FLERR, "Fix ave/histo fix does not calculate per-atom values"); if (argindex[i] == 0 && modify->fix[ifix]->size_peratom_cols != 0) error->all(FLERR,"Fix ave/histo fix does not " "calculate a per-atom vector"); if (argindex[i] && modify->fix[ifix]->size_peratom_cols == 0) error->all(FLERR,"Fix ave/histo fix does not " "calculate a per-atom array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_peratom_cols) error->all(FLERR,"Fix ave/histo fix array is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) error->all(FLERR, "Fix for fix ave/histo not computed at compatible time"); } else if (which[i] == FIX && kind == LOCAL) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) error->all(FLERR,"Fix ID for fix ave/histo does not exist"); if (modify->fix[ifix]->local_flag == 0) error->all(FLERR,"Fix ave/histo fix does not calculate local values"); if (argindex[i] == 0 && modify->fix[ifix]->size_local_cols != 0) error->all(FLERR,"Fix ave/histo fix does not " "calculate a local vector"); if (argindex[i] && modify->fix[ifix]->size_local_cols == 0) error->all(FLERR,"Fix ave/histo fix does not " "calculate a local array"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_local_cols) error->all(FLERR,"Fix ave/histo fix array is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) error->all(FLERR, "Fix for fix ave/histo not computed at compatible time"); } else if (which[i] == VARIABLE && kind == GLOBAL && mode == SCALAR) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) error->all(FLERR,"Variable name for fix ave/histo does not exist"); if (argindex[i] == 0 && input->variable->equalstyle(ivariable) == 0) error->all(FLERR,"Fix ave/histo variable is not equal-style variable"); if (argindex[i] && input->variable->vectorstyle(ivariable) == 0) error->all(FLERR,"Fix ave/histo variable is not vector-style variable"); } else if (which[i] == VARIABLE && kind == GLOBAL && mode == VECTOR) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) error->all(FLERR,"Variable name for fix ave/histo does not exist"); if (argindex[i] == 0 && input->variable->vectorstyle(ivariable) == 0) error->all(FLERR,"Fix ave/histo variable is not vector-style variable"); if (argindex[i]) error->all(FLERR,"Fix ave/histo variable cannot be indexed"); } else if (which[i] == VARIABLE && kind == PERATOM) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) error->all(FLERR,"Variable name for fix ave/histo does not exist"); if (argindex[i] == 0 && input->variable->atomstyle(ivariable) == 0) error->all(FLERR,"Fix ave/histo variable is not atom-style variable"); if (argindex[i]) error->all(FLERR,"Fix ave/histo variable cannot be indexed"); } } // print file comment lines if (fp && me == 0) { clearerr(fp); if (title1) fprintf(fp,"%s\n",title1); else fprintf(fp,"# Histogrammed data for fix %s\n",id); if (title2) fprintf(fp,"%s\n",title2); else fprintf(fp,"# TimeStep Number-of-bins " "Total-counts Missing-counts Min-value Max-value\n"); if (title3) fprintf(fp,"%s\n",title3); else fprintf(fp,"# Bin Coord Count Count/Total\n"); if (ferror(fp)) error->one(FLERR,"Error writing file header"); filepos = ftell(fp); } delete [] title1; delete [] title2; delete [] title3; // allocate and initialize memory for averaging if (beyond == EXTRA) nbins += 2; size_array_rows = nbins; bin = new double[nbins]; bin_total = new double[nbins]; bin_all = new double[nbins]; coord = new double[nbins]; stats_list = NULL; bin_list = NULL; vector = NULL; maxatom = 0; if (ave == WINDOW) { memory->create(stats_list,nwindow,4,"ave/histo:stats_list"); memory->create(bin_list,nwindow,nbins,"ave/histo:bin_list"); } // initializations // set coord to bin centers if (beyond == EXTRA) { binsize = (hi-lo)/(nbins-2); bininv = 1.0/binsize; } else { binsize = (hi-lo)/nbins; bininv = 1.0/binsize; } if (beyond == EXTRA) { coord[0] = lo; coord[nbins-1] = hi; for (int i = 1; i < nbins-1; i++) coord[i] = lo + (i-1+0.5)*binsize; } else { for (int i = 0; i < nbins; i++) coord[i] = lo + (i+0.5)*binsize; } irepeat = 0; iwindow = window_limit = 0; stats_total[0] = stats_total[1] = stats_total[2] = stats_total[3] = 0.0; for (int i = 0; i < nbins; i++) bin_total[i] = 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); } /* ---------------------------------------------------------------------- */ FixAveHisto::~FixAveHisto() { memory->destroy(which); memory->destroy(argindex); memory->destroy(value2index); for (int i = 0; i < nvalues; i++) delete [] ids[i]; memory->sfree(ids); if (fp && me == 0) fclose(fp); delete [] bin; delete [] bin_total; delete [] bin_all; delete [] coord; memory->destroy(stats_list); memory->destroy(bin_list); memory->destroy(vector); } /* ---------------------------------------------------------------------- */ int FixAveHisto::setmask() { int mask = 0; mask |= END_OF_STEP; return mask; } /* ---------------------------------------------------------------------- */ void FixAveHisto::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/histo 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/histo 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/histo does not exist"); value2index[i] = ivariable; } } // need to reset nvalid if nvalid < ntimestep b/c minimize was performed if (nvalid < update->ntimestep) { irepeat = 0; nvalid = nextvalid(); modify->addstep_compute_all(nvalid); } } /* ---------------------------------------------------------------------- only does something if nvalid = current timestep ------------------------------------------------------------------------- */ void FixAveHisto::setup(int vflag) { end_of_step(); } /* ---------------------------------------------------------------------- */ void FixAveHisto::end_of_step() { int i,j,m; // 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/histo"); if (ntimestep != nvalid) return; nvalid_last = nvalid; // zero if first step if (irepeat == 0) { stats[0] = stats[1] = 0.0; stats[2] = BIG; stats[3] = -BIG; for (i = 0; i < nbins; i++) bin[i] = 0.0; } // accumulate results of computes,fixes,variables to local copy // compute/fix/variable may invoke computes so wrap with clear/add modify->clearstep_compute(); for (i = 0; i < nvalues; i++) { m = value2index[i]; j = argindex[i]; // atom attributes if (which[i] == X) bin_atoms(&atom->x[0][j],3); else if (which[i] == V) bin_atoms(&atom->v[0][j],3); else if (which[i] == F) bin_atoms(&atom->f[0][j],3); // invoke compute if not previously invoked if (which[i] == COMPUTE) { Compute *compute = modify->compute[m]; if (kind == GLOBAL && mode == SCALAR) { if (j == 0) { if (!(compute->invoked_flag & INVOKED_SCALAR)) { compute->compute_scalar(); compute->invoked_flag |= INVOKED_SCALAR; } bin_one(compute->scalar); } else { if (!(compute->invoked_flag & INVOKED_VECTOR)) { compute->compute_vector(); compute->invoked_flag |= INVOKED_VECTOR; } bin_one(compute->vector[j-1]); } } else if (kind == GLOBAL && mode == VECTOR) { if (j == 0) { if (!(compute->invoked_flag & INVOKED_VECTOR)) { compute->compute_vector(); compute->invoked_flag |= INVOKED_VECTOR; } bin_vector(compute->size_vector,compute->vector,1); } else { if (!(compute->invoked_flag & INVOKED_ARRAY)) { compute->compute_array(); compute->invoked_flag |= INVOKED_ARRAY; } if (compute->array) bin_vector(compute->size_array_rows,&compute->array[0][j-1], compute->size_array_cols); } } else if (kind == PERATOM) { if (!(compute->invoked_flag & INVOKED_PERATOM)) { compute->compute_peratom(); compute->invoked_flag |= INVOKED_PERATOM; } if (j == 0) bin_atoms(compute->vector_atom,1); else if (compute->array_atom) bin_atoms(&compute->array_atom[0][j-1],compute->size_peratom_cols); } else if (kind == LOCAL) { if (!(compute->invoked_flag & INVOKED_LOCAL)) { compute->compute_local(); compute->invoked_flag |= INVOKED_LOCAL; } if (j == 0) bin_vector(compute->size_local_rows,compute->vector_local,1); else if (compute->array_local) bin_vector(compute->size_local_rows,&compute->array_local[0][j-1], compute->size_local_cols); } // access fix fields, guaranteed to be ready } else if (which[i] == FIX) { Fix *fix = modify->fix[m]; if (kind == GLOBAL && mode == SCALAR) { if (j == 0) bin_one(fix->compute_scalar()); else bin_one(fix->compute_vector(j-1)); } else if (kind == GLOBAL && mode == VECTOR) { if (j == 0) { int n = fix->size_vector; for (i = 0; i < n; i++) bin_one(fix->compute_vector(i)); } else { int n = fix->size_vector; for (i = 0; i < n; i++) bin_one(fix->compute_array(i,j-1)); } } else if (kind == PERATOM) { if (j == 0) bin_atoms(fix->vector_atom,1); else if (fix->array_atom) bin_atoms(fix->array_atom[j-1],fix->size_peratom_cols); } else if (kind == LOCAL) { if (j == 0) bin_vector(fix->size_local_rows,fix->vector_local,1); else if (fix->array_local) bin_vector(fix->size_local_rows,&fix->array_local[0][j-1], fix->size_local_cols); } // evaluate equal-style or vector-style or atom-style variable } else if (which[i] == VARIABLE) { if (kind == GLOBAL && mode == SCALAR) { if (j == 0) bin_one(input->variable->compute_equal(m)); else { double *varvec; int nvec = input->variable->compute_vector(m,&varvec); if (nvec < j) bin_one(0.0); else bin_one(varvec[j-1]); } } else if (kind == GLOBAL && mode == VECTOR) { double *varvec; int nvec = input->variable->compute_vector(m,&varvec); bin_vector(nvec,varvec,1); } else if (which[i] == VARIABLE && kind == PERATOM) { if (atom->nmax > maxatom) { memory->destroy(vector); maxatom = atom->nmax; memory->create(vector,maxatom,"ave/histo:vector"); } input->variable->compute_atom(m,igroup,vector,1,0); bin_atoms(vector,1); } } } // done if irepeat < nrepeat // else reset irepeat and nvalid irepeat++; if (irepeat < nrepeat) { nvalid += nevery; modify->addstep_compute(nvalid); return; } irepeat = 0; nvalid = ntimestep + nfreq - (nrepeat-1)*nevery; modify->addstep_compute(nvalid); // merge histogram stats across procs if necessary if (kind == PERATOM || kind == LOCAL) { MPI_Allreduce(stats,stats_all,2,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&stats[2],&stats_all[2],1,MPI_DOUBLE,MPI_MIN,world); MPI_Allreduce(&stats[3],&stats_all[3],1,MPI_DOUBLE,MPI_MAX,world); MPI_Allreduce(bin,bin_all,nbins,MPI_DOUBLE,MPI_SUM,world); stats[0] = stats_all[0]; stats[1] = stats_all[1]; stats[2] = stats_all[2]; stats[3] = stats_all[3]; for (i = 0; i < nbins; i++) bin[i] = bin_all[i]; } // if ave = ONE, only single Nfreq timestep value is needed // if ave = RUNNING, combine with all previous Nfreq timestep values // if ave = WINDOW, combine with nwindow most recent Nfreq timestep values if (ave == ONE) { stats_total[0] = stats[0]; stats_total[1] = stats[1]; stats_total[2] = stats[2]; stats_total[3] = stats[3]; for (i = 0; i < nbins; i++) bin_total[i] = bin[i]; } else if (ave == RUNNING) { stats_total[0] += stats[0]; stats_total[1] += stats[1]; stats_total[2] = MIN(stats_total[2],stats[2]); stats_total[3] = MAX(stats_total[3],stats[3]); for (i = 0; i < nbins; i++) bin_total[i] += bin[i]; } else if (ave == WINDOW) { stats_total[0] += stats[0]; if (window_limit) stats_total[0] -= stats_list[iwindow][0]; stats_list[iwindow][0] = stats[0]; stats_total[1] += stats[1]; if (window_limit) stats_total[1] -= stats_list[iwindow][1]; stats_list[iwindow][1] = stats[1]; if (window_limit) m = nwindow; else m = iwindow+1; stats_list[iwindow][2] = stats[2]; stats_total[2] = stats_list[0][2]; for (i = 1; i < m; i++) stats_total[2] = MIN(stats_total[2],stats_list[i][2]); stats_list[iwindow][3] = stats[3]; stats_total[3] = stats_list[0][3]; for (i = 1; i < m; i++) stats_total[3] = MAX(stats_total[3],stats_list[i][3]); for (i = 0; i < nbins; i++) { bin_total[i] += bin[i]; if (window_limit) bin_total[i] -= bin_list[iwindow][i]; bin_list[iwindow][i] = bin[i]; } iwindow++; if (iwindow == nwindow) { iwindow = 0; window_limit = 1; } } // output result to file if (fp && me == 0) { clearerr(fp); if (overwrite) fseek(fp,filepos,SEEK_SET); fprintf(fp,BIGINT_FORMAT " %d %g %g %g %g\n",ntimestep,nbins, stats_total[0],stats_total[1],stats_total[2],stats_total[3]); if (stats_total[0] != 0.0) for (i = 0; i < nbins; i++) fprintf(fp,"%d %g %g %g\n", i+1,coord[i],bin_total[i],bin_total[i]/stats_total[0]); else for (i = 0; i < nbins; i++) fprintf(fp,"%d %g %g %g\n",i+1,coord[i],0.0,0.0); if (ferror(fp)) error->one(FLERR,"Error writing out histogram data"); fflush(fp); if (overwrite) { long fileend = ftell(fp); if (fileend > 0) ftruncate(fileno(fp),fileend); } } } /* ---------------------------------------------------------------------- return Ith vector value ------------------------------------------------------------------------- */ double FixAveHisto::compute_vector(int i) { return stats_total[i]; } /* ---------------------------------------------------------------------- return I,J array value ------------------------------------------------------------------------- */ double FixAveHisto::compute_array(int i, int j) { if (j == 0) return coord[i]; else if (j == 1) return bin_total[i]; else if (stats_total[0] != 0.0) return bin_total[i]/stats_total[0]; return 0.0; } /* ---------------------------------------------------------------------- bin a single value ------------------------------------------------------------------------- */ void FixAveHisto::bin_one(double value) { stats[2] = MIN(stats[2],value); stats[3] = MAX(stats[3],value); if (value < lo) { if (beyond == IGNORE) { stats[1] += 1.0; return; } else bin[0] += 1.0; } else if (value > hi) { if (beyond == IGNORE) { stats[1] += 1.0; return; } else bin[nbins-1] += 1.0; } else { int ibin = static_cast<int> ((value-lo)*bininv); ibin = MIN(ibin,nbins-1); if (beyond == EXTRA) ibin++; bin[ibin] += 1.0; } stats[0] += 1.0; } /* ---------------------------------------------------------------------- bin a vector of values with stride ------------------------------------------------------------------------- */ void FixAveHisto::bin_vector(int n, double *values, int stride) { int m = 0; for (int i = 0; i < n; i++) { bin_one(values[m]); m += stride; } } /* ---------------------------------------------------------------------- bin a per-atom vector of values with stride only bin if atom is in group ------------------------------------------------------------------------- */ void FixAveHisto::bin_atoms(double *values, int stride) { int *mask = atom->mask; int nlocal = atom->nlocal; int m = 0; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) bin_one(values[m]); m += stride; } } /* ---------------------------------------------------------------------- parse optional args ------------------------------------------------------------------------- */ -void FixAveHisto::options(int narg, char **arg) +void FixAveHisto::options(int iarg, int narg, char **arg) { // option defaults fp = NULL; ave = ONE; startstep = 0; mode = SCALAR; beyond = IGNORE; overwrite = 0; title1 = NULL; title2 = NULL; title3 = NULL; // optional args - int iarg = 9 + nvalues; while (iarg < narg) { if (strcmp(arg[iarg],"file") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); if (me == 0) { fp = fopen(arg[iarg+1],"w"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix ave/histo file %s",arg[iarg+1]); error->one(FLERR,str); } } iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); if (strcmp(arg[iarg+1],"one") == 0) ave = ONE; else if (strcmp(arg[iarg+1],"running") == 0) ave = RUNNING; else if (strcmp(arg[iarg+1],"window") == 0) ave = WINDOW; else error->all(FLERR,"Illegal fix ave/histo command"); if (ave == WINDOW) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix ave/histo command"); nwindow = force->inumeric(FLERR,arg[iarg+2]); if (nwindow <= 0) error->all(FLERR,"Illegal fix ave/histo command"); } iarg += 2; if (ave == WINDOW) iarg++; } else if (strcmp(arg[iarg],"start") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); startstep = force->inumeric(FLERR,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"mode") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); if (strcmp(arg[iarg+1],"scalar") == 0) mode = SCALAR; else if (strcmp(arg[iarg+1],"vector") == 0) mode = VECTOR; else error->all(FLERR,"Illegal fix ave/histo command"); iarg += 2; } else if (strcmp(arg[iarg],"beyond") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); if (strcmp(arg[iarg+1],"ignore") == 0) beyond = IGNORE; else if (strcmp(arg[iarg+1],"end") == 0) beyond = END; else if (strcmp(arg[iarg+1],"extra") == 0) beyond = EXTRA; else error->all(FLERR,"Illegal fix ave/histo command"); 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/histo 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/histo command"); delete [] title2; int n = strlen(arg[iarg+1]) + 1; title2 = new char[n]; strcpy(title2,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title3") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/histo command"); delete [] title3; int n = strlen(arg[iarg+1]) + 1; title3 = new char[n]; strcpy(title3,arg[iarg+1]); iarg += 2; } else error->all(FLERR,"Illegal fix ave/histo command"); } } /* ---------------------------------------------------------------------- reallocate vectors for each input value, of length N ------------------------------------------------------------------------- */ void FixAveHisto::allocate_values(int n) { memory->grow(which,n,"ave/hsito:which"); memory->grow(argindex,n,"ave/histo:argindex"); memory->grow(value2index,n,"ave/histo:value2index"); ids = (char **) memory->srealloc(ids,n*sizeof(char *),"ave/histo:ids"); } /* ---------------------------------------------------------------------- calculate nvalid = next step on which end_of_step does something can be this timestep if multiple of nfreq and nrepeat = 1 else backup from next multiple of nfreq startstep is lower bound on nfreq multiple ------------------------------------------------------------------------- */ bigint FixAveHisto::nextvalid() { bigint nvalid = (update->ntimestep/nfreq)*nfreq + nfreq; while (nvalid < startstep) nvalid += nfreq; if (nvalid-nfreq == update->ntimestep && nrepeat == 1) nvalid = update->ntimestep; else nvalid -= (nrepeat-1)*nevery; if (nvalid < update->ntimestep) nvalid += nfreq; return nvalid; } diff --git a/src/fix_ave_histo.h b/src/fix_ave_histo.h index 44109b8f1..6fcfd27e3 100644 --- a/src/fix_ave_histo.h +++ b/src/fix_ave_histo.h @@ -1,234 +1,234 @@ /* -*- 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/histo,FixAveHisto) #else #ifndef LMP_FIX_AVE_HISTO_H #define LMP_FIX_AVE_HISTO_H #include <stdio.h> #include "fix.h" namespace LAMMPS_NS { class FixAveHisto : public Fix { public: FixAveHisto(class LAMMPS *, int, char **); virtual ~FixAveHisto(); int setmask(); void init(); void setup(int); virtual void end_of_step(); double compute_vector(int); double compute_array(int,int); protected: int me,nvalues; int nrepeat,nfreq,irepeat; bigint nvalid,nvalid_last; int *which,*argindex,*value2index; char **ids; FILE *fp; double lo,hi,binsize,bininv; int kind,beyond,overwrite; long filepos; double stats[4],stats_total[4],stats_all[4]; double **stats_list; int nbins; double *bin,*bin_total,*bin_all; double **bin_list; double *coord; double *vector; int maxatom; int ave,nwindow,startstep,mode; char *title1,*title2,*title3; int iwindow,window_limit; void bin_one(double); void bin_vector(int, double *, int); void bin_atoms(double *, int); - void options(int, char **); + void options(int, int, char **); void allocate_values(int); bigint nextvalid(); }; } #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: Compute ID for fix ave/histo does not exist Self-explanatory. E: Fix ID for fix ave/histo does not exist Self-explanatory. E: Fix ave/histo input is invalid compute Self-explanatory. E: Fix ave/histo input is invalid fix Self-explanatory. E: Fix ave/histo input is invalid variable Self-explanatory. E: Fix ave/histo inputs are not all global, peratom, or local All inputs in a single fix ave/histo command must be of the same style. E: Fix ave/histo cannot input per-atom values in scalar mode Self-explanatory. E: Fix ave/histo cannot input local values in scalar mode Self-explanatory. E: Fix ave/histo compute does not calculate a global scalar Self-explanatory. E: Fix ave/histo compute does not calculate a global vector Self-explanatory. E: Fix ave/histo compute vector is accessed out-of-range Self-explanatory. E: Fix ave/histo compute does not calculate a global array Self-explanatory. E: Fix ave/histo compute array is accessed out-of-range Self-explanatory. E: Fix ave/histo compute does not calculate per-atom values Self-explanatory. E: Fix ave/histo compute does not calculate a per-atom vector Self-explanatory. E: Fix ave/histo compute does not calculate a per-atom array Self-explanatory. E: Fix ave/histo compute does not calculate local values Self-explanatory. E: Fix ave/histo compute does not calculate a local vector Self-explanatory. E: Fix ave/histo compute does not calculate a local array Self-explanatory. E: Fix ave/histo fix does not calculate a global scalar Self-explanatory. E: Fix ave/histo fix does not calculate a global vector Self-explanatory. E: Fix ave/histo fix vector is accessed out-of-range Self-explanatory. E: Fix for fix ave/histo not computed at compatible time Fixes generate their values on specific timesteps. Fix ave/histo is requesting a value on a non-allowed timestep. E: Fix ave/histo fix does not calculate a global array Self-explanatory. E: Fix ave/histo fix array is accessed out-of-range Self-explanatory. E: Fix ave/histo fix does not calculate per-atom values Self-explanatory. E: Fix ave/histo fix does not calculate a per-atom vector Self-explanatory. E: Fix ave/histo fix does not calculate a per-atom array Self-explanatory. E: Fix ave/histo fix does not calculate local values Self-explanatory. E: Fix ave/histo fix does not calculate a local vector Self-explanatory. E: Fix ave/histo fix does not calculate a local array Self-explanatory. E: Variable name for fix ave/histo does not exist Self-explanatory. E: Error writing file header Something in the output to the file triggered an error. E: Invalid timestep reset for fix ave/histo Resetting the timestep has invalidated the sequence of timesteps this fix needs to process. E: Error writing out histogram data Something in the output to the file triggered an error. E: Cannot open fix ave/histo file %s The specified file cannot be opened. Check that the path and name are correct. */ diff --git a/src/fix_ave_time.cpp b/src/fix_ave_time.cpp index 588aca473..bbcef78f9 100644 --- a/src/fix_ave_time.cpp +++ b/src/fix_ave_time.cpp @@ -1,1200 +1,1160 @@ /* ---------------------------------------------------------------------- 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: Pieter in 't Veld (SNL) ------------------------------------------------------------------------- */ #include <stdlib.h> #include <string.h> #include <unistd.h> #include "fix_ave_time.h" #include "update.h" #include "force.h" #include "modify.h" #include "compute.h" #include "input.h" #include "variable.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; using namespace FixConst; enum{COMPUTE,FIX,VARIABLE}; enum{ONE,RUNNING,WINDOW}; enum{SCALAR,VECTOR}; #define INVOKED_SCALAR 1 #define INVOKED_VECTOR 2 #define INVOKED_ARRAY 4 /* ---------------------------------------------------------------------- */ FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (narg < 7) error->all(FLERR,"Illegal fix ave/time command"); MPI_Comm_rank(world,&me); nevery = force->inumeric(FLERR,arg[3]); nrepeat = force->inumeric(FLERR,arg[4]); nfreq = force->inumeric(FLERR,arg[5]); global_freq = nfreq; dynamic_group_allow = 1; // scan values to count them // then read options so know mode = SCALAR/VECTOR before re-reading values nvalues = 0; int iarg = 6; while (iarg < narg) { if ((strncmp(arg[iarg],"c_",2) == 0) || (strncmp(arg[iarg],"f_",2) == 0) || (strncmp(arg[iarg],"v_",2) == 0)) { nvalues++; iarg++; } else break; } if (nvalues == 0) error->all(FLERR,"No values in fix ave/time command"); - options(narg,arg); + options(iarg,narg,arg); - // parse values until one isn't recognized - // if mode = VECTOR and value is a global array: - // expand it as if columns listed one by one - // adjust nvalues accordingly via maxvalues + // expand args if any have wildcard character "*" + // this can reset nvalues - which = argindex = value2index = offcol = varlen = NULL; - ids = NULL; - int maxvalues = nvalues; - allocate_values(maxvalues); - nvalues = 0; + int expand = 0; + char **earg,**arghold; + nvalues = input->expand_args(nvalues,&arg[6],mode,earg); - iarg = 6; - 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/time 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; - - if (mode == VECTOR && which[nvalues] == COMPUTE && - argindex[nvalues] == 0) { - int icompute = modify->find_compute(ids[nvalues]); - if (icompute < 0) - error->all(FLERR,"Compute ID for fix ave/time does not exist"); - if (modify->compute[icompute]->array_flag) { - int ncols = modify->compute[icompute]->size_array_cols; - maxvalues += ncols-1; - allocate_values(maxvalues); - argindex[nvalues] = 1; - for (int icol = 1; icol < ncols; icol++) { - which[nvalues+icol] = which[nvalues]; - argindex[nvalues+icol] = icol+1; - n = strlen(ids[nvalues]) + 1; - ids[nvalues+icol] = new char[n]; - strcpy(ids[nvalues+icol],ids[nvalues]); - } - nvalues += ncols-1; - } + if (earg != &arg[6]) expand = 1; + arghold = arg; + arg = earg; - } else if (mode == VECTOR && which[nvalues] == FIX && - argindex[nvalues] == 0) { - int ifix = modify->find_fix(ids[nvalues]); - if (ifix < 0) - error->all(FLERR,"Fix ID for fix ave/time does not exist"); - if (modify->fix[ifix]->array_flag) { - int ncols = modify->fix[ifix]->size_array_cols; - maxvalues += ncols-1; - allocate_values(maxvalues); - argindex[nvalues] = 1; - for (int icol = 1; icol < ncols; icol++) { - which[nvalues+icol] = which[nvalues]; - argindex[nvalues+icol] = icol+1; - n = strlen(ids[nvalues]) + 1; - ids[nvalues+icol] = new char[n]; - strcpy(ids[nvalues+icol],ids[nvalues]); - } - nvalues += ncols-1; - } - } + // parse values - nvalues++; - iarg++; - } else break; + which = argindex = value2index = offcol = varlen = NULL; + ids = NULL; + allocate_values(nvalues); + + for (int i = 0; i < nvalues; i++) { + if (arg[i][0] == 'c') which[i] = COMPUTE; + else if (arg[i][0] == 'f') which[i] = FIX; + else if (arg[i][0] == 'v') which[i] = VARIABLE; + + int n = strlen(arg[i]); + char *suffix = new char[n]; + strcpy(suffix,&arg[i][2]); + + char *ptr = strchr(suffix,'['); + if (ptr) { + if (suffix[strlen(suffix)-1] != ']') + error->all(FLERR,"Illegal fix ave/time command"); + argindex[i] = atoi(ptr+1); + *ptr = '\0'; + } else argindex[i] = 0; + + n = strlen(suffix) + 1; + ids[i] = new char[n]; + strcpy(ids[i],suffix); + delete [] suffix; } // set off columns now that nvalues is finalized for (int i = 0; i < nvalues; i++) offcol[i] = 0; for (int i = 0; i < noff; i++) { if (offlist[i] < 1 || offlist[i] > nvalues) error->all(FLERR,"Invalid fix ave/time off column"); offcol[offlist[i]-1] = 1; } // setup and error check // for fix inputs, check that fix frequency is acceptable // set variable_length if any compute is variable length if (nevery <= 0 || nrepeat <= 0 || nfreq <= 0) error->all(FLERR,"Illegal fix ave/time command"); if (nfreq % nevery || nrepeat*nevery > nfreq) error->all(FLERR,"Illegal fix ave/time command"); if (ave != RUNNING && overwrite) error->all(FLERR,"Illegal fix ave/time command"); for (int i = 0; i < nvalues; i++) { varlen[i] = 0; if (which[i] == COMPUTE && mode == SCALAR) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) error->all(FLERR,"Compute ID for fix ave/time does not exist"); if (argindex[i] == 0 && modify->compute[icompute]->scalar_flag == 0) error->all(FLERR,"Fix ave/time compute does not calculate a scalar"); if (argindex[i] && modify->compute[icompute]->vector_flag == 0) error->all(FLERR,"Fix ave/time compute does not calculate a vector"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_vector && modify->compute[icompute]->size_vector_variable == 0) error->all(FLERR, "Fix ave/time compute vector is accessed out-of-range"); if (argindex[i] && modify->compute[icompute]->size_vector_variable) varlen[i] = 1; } else if (which[i] == COMPUTE && mode == VECTOR) { int icompute = modify->find_compute(ids[i]); if (icompute < 0) error->all(FLERR,"Compute ID for fix ave/time does not exist"); if (argindex[i] == 0 && modify->compute[icompute]->vector_flag == 0) error->all(FLERR,"Fix ave/time compute does not calculate a vector"); if (argindex[i] && modify->compute[icompute]->array_flag == 0) error->all(FLERR,"Fix ave/time compute does not calculate an array"); if (argindex[i] && argindex[i] > modify->compute[icompute]->size_array_cols) error->all(FLERR,"Fix ave/time compute array is accessed out-of-range"); if (argindex[i] == 0 && modify->compute[icompute]->size_vector_variable) varlen[i] = 1; if (argindex[i] && modify->compute[icompute]->size_array_rows_variable) varlen[i] = 1; } else if (which[i] == FIX && mode == SCALAR) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) error->all(FLERR,"Fix ID for fix ave/time does not exist"); if (argindex[i] == 0 && modify->fix[ifix]->scalar_flag == 0) error->all(FLERR,"Fix ave/time fix does not calculate a scalar"); if (argindex[i] && modify->fix[ifix]->vector_flag == 0) error->all(FLERR,"Fix ave/time fix does not calculate a vector"); if (argindex[i] && modify->fix[ifix]->size_vector_variable) error->all(FLERR,"Fix ave/time fix vector cannot be variable length"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_vector) error->all(FLERR,"Fix ave/time fix vector is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) error->all(FLERR, "Fix for fix ave/time not computed at compatible time"); } else if (which[i] == FIX && mode == VECTOR) { int ifix = modify->find_fix(ids[i]); if (ifix < 0) error->all(FLERR,"Fix ID for fix ave/time does not exist"); if (argindex[i] == 0 && modify->fix[ifix]->vector_flag == 0) error->all(FLERR,"Fix ave/time fix does not calculate a vector"); if (argindex[i] && modify->fix[ifix]->array_flag == 0) error->all(FLERR,"Fix ave/time fix does not calculate an array"); if (argindex[i] && modify->fix[ifix]->size_array_rows_variable) error->all(FLERR,"Fix ave/time fix array cannot be variable length"); if (argindex[i] && argindex[i] > modify->fix[ifix]->size_array_cols) error->all(FLERR,"Fix ave/time fix array is accessed out-of-range"); if (nevery % modify->fix[ifix]->global_freq) error->all(FLERR, "Fix for fix ave/time not computed at compatible time"); } else if (which[i] == VARIABLE && mode == SCALAR) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) error->all(FLERR,"Variable name for fix ave/time does not exist"); if (argindex[i] == 0 && input->variable->equalstyle(ivariable) == 0) error->all(FLERR,"Fix ave/time variable is not equal-style variable"); if (argindex[i] && input->variable->vectorstyle(ivariable) == 0) error->all(FLERR,"Fix ave/time variable is not vector-style variable"); } else if (which[i] == VARIABLE && mode == VECTOR) { int ivariable = input->variable->find(ids[i]); if (ivariable < 0) error->all(FLERR,"Variable name for fix ave/time does not exist"); if (argindex[i] == 0 && input->variable->vectorstyle(ivariable) == 0) error->all(FLERR,"Fix ave/time variable is not vector-style variable"); if (argindex[i]) error->all(FLERR,"Fix ave/time mode vector variable cannot be indexed"); varlen[i] = 1; } } // all_variable_length = 1 if all values are variable length // any_variable_length = 1 if any values are variable length all_variable_length = 1; any_variable_length = 0; for (int i = 0; i < nvalues; i++) { if (varlen[i] == 0) all_variable_length = 0; if (varlen[i]) any_variable_length = 1; } // if VECTOR mode, check that all columns are same length // nrows = # of rows in output array // if all columns are variable length, just set nrows = 1 for now column = NULL; if (mode == VECTOR) { if (all_variable_length == 0) nrows = column_length(0); else nrows = 1; memory->create(column,nrows,"ave/time:column"); } // enable locking of row count by this fix for computes of variable length // only if nrepeat > 1 or ave = RUNNING/WINDOW, // so that locking spans multiple timesteps if (any_variable_length && (nrepeat > 1 || ave == RUNNING || ave == WINDOW)) { for (int i = 0; i < nvalues; i++) if (varlen[i] && which[i] == COMPUTE) { int icompute = modify->find_compute(ids[i]); modify->compute[icompute]->lock_enable(); } lockforever = 0; } // print file comment lines // for mode = VECTOR, cannot use arg to print // since array args may have been expanded to multiple vectors if (fp && me == 0) { clearerr(fp); if (title1) fprintf(fp,"%s\n",title1); else fprintf(fp,"# Time-averaged data for fix %s\n",id); if (title2) fprintf(fp,"%s\n",title2); else if (mode == SCALAR) { fprintf(fp,"# TimeStep"); - for (int i = 0; i < nvalues; i++) fprintf(fp," %s",arg[6+i]); + for (int i = 0; i < nvalues; i++) fprintf(fp," %s",earg[i]); fprintf(fp,"\n"); } else fprintf(fp,"# TimeStep Number-of-rows\n"); if (title3 && mode == VECTOR) fprintf(fp,"%s\n",title3); else if (mode == VECTOR) { fprintf(fp,"# Row"); - for (int i = 0; i < nvalues; i++) { - if (which[i] == COMPUTE) fprintf(fp," c_%s",ids[i]); - else if (which[i] == FIX) fprintf(fp," f_%s",ids[i]); - else if (which[i] == VARIABLE) fprintf(fp," v_%s",ids[i]); - if (argindex[i]) fprintf(fp,"[%d]",argindex[i]); - } + for (int i = 0; i < nvalues; i++) fprintf(fp," %s",earg[i]); fprintf(fp,"\n"); } if (ferror(fp)) error->one(FLERR,"Error writing file header"); filepos = ftell(fp); } delete [] title1; delete [] title2; delete [] title3; + // if wildcard expansion occurred, free earg memory from expand_args() + // wait to do this until after file comment lines are printed + + if (expand) { + for (int i = 0; i < nvalues; i++) delete [] earg[i]; + memory->sfree(earg); + arg = arghold; + } + // allocate memory for averaging vector = vector_total = NULL; vector_list = NULL; array = array_total = NULL; array_list = NULL; if (mode == SCALAR) { vector = new double[nvalues]; vector_total = new double[nvalues]; if (ave == WINDOW) memory->create(vector_list,nwindow,nvalues,"ave/time:vector_list"); } else allocate_arrays(); // this fix produces either a global scalar or vector or array // SCALAR mode produces either a scalar or vector // VECTOR mode produces either a vector or array // intensive/extensive flags set by compute,fix,variable that produces value extlist = NULL; if (mode == SCALAR) { if (nvalues == 1) { scalar_flag = 1; if (which[0] == COMPUTE) { Compute *compute = modify->compute[modify->find_compute(ids[0])]; if (argindex[0] == 0) extscalar = compute->extscalar; else if (compute->extvector >= 0) extscalar = compute->extvector; else extscalar = compute->extlist[argindex[0]-1]; } else if (which[0] == FIX) { Fix *fix = modify->fix[modify->find_fix(ids[0])]; if (argindex[0] == 0) extscalar = fix->extscalar; else if (fix->extvector >= 0) extscalar = fix->extvector; else extscalar = fix->extlist[argindex[0]-1]; } else if (which[0] == VARIABLE) { extscalar = 0; } } else { vector_flag = 1; size_vector = nrows = nvalues; extvector = -1; extlist = new int[nvalues]; for (int i = 0; i < nvalues; i++) { if (which[i] == COMPUTE) { Compute *compute = modify->compute[modify->find_compute(ids[i])]; if (argindex[i] == 0) extlist[i] = compute->extscalar; else if (compute->extvector >= 0) extlist[i] = compute->extvector; else extlist[i] = compute->extlist[argindex[i]-1]; } else if (which[i] == FIX) { Fix *fix = modify->fix[modify->find_fix(ids[i])]; if (argindex[i] == 0) extlist[i] = fix->extscalar; else if (fix->extvector >= 0) extlist[i] = fix->extvector; else extlist[i] = fix->extlist[argindex[i]-1]; } else if (which[i] == VARIABLE) { extlist[i] = 0; } } } } else { if (nvalues == 1) { vector_flag = 1; size_vector = nrows; if (all_variable_length) size_vector_variable = 1; if (which[0] == COMPUTE) { Compute *compute = modify->compute[modify->find_compute(ids[0])]; if (argindex[0] == 0) { extvector = compute->extvector; if (extvector == -1) { extlist = new int[nrows]; for (int i = 0; i < nrows; i++) extlist[i] = compute->extlist[i]; } } else extvector = compute->extarray; } else if (which[0] == FIX) { Fix *fix = modify->fix[modify->find_fix(ids[0])]; if (argindex[0] == 0) { extvector = fix->extvector; if (extvector == -1) { extlist = new int[nrows]; for (int i = 0; i < nrows; i++) extlist[i] = fix->extlist[i]; } } else extvector = fix->extarray; } else if (which[0] == VARIABLE) { extlist = new int[nrows]; for (int i = 0; i < nrows; i++) extlist[i] = 0; } } else { array_flag = 1; size_array_rows = nrows; size_array_cols = nvalues; if (all_variable_length) size_array_rows_variable = 1; int value; for (int i = 0; i < nvalues; i++) { if (which[i] == COMPUTE) { Compute *compute = modify->compute[modify->find_compute(ids[i])]; if (argindex[i] == 0) value = compute->extvector; else value = compute->extarray; } else if (which[i] == FIX) { Fix *fix = modify->fix[modify->find_fix(ids[i])]; if (argindex[i] == 0) value = fix->extvector; else value = fix->extarray; } else if (which[i] == VARIABLE) { value = 0; } if (value == -1) error->all(FLERR,"Fix ave/time cannot set output array " "intensive/extensive from these inputs"); if (i == 0) extarray = value; else if (value != extarray) error->all(FLERR,"Fix ave/time cannot set output array " "intensive/extensive from these inputs"); } } } // initializations // set vector_total to zero since it accumulates // array_total already zeroed in allocate_arrays irepeat = 0; iwindow = window_limit = 0; norm = 0; if (mode == SCALAR) for (int i = 0; i < nvalues; i++) vector_total[i] = 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); } /* ---------------------------------------------------------------------- */ FixAveTime::~FixAveTime() { // decrement lock counter in compute chunk/atom, it if still exists if (any_variable_length && (nrepeat > 1 || ave == RUNNING || ave == WINDOW)) { for (int i = 0; i < nvalues; i++) if (varlen[i]) { int icompute = modify->find_compute(ids[i]); if (icompute >= 0) { if (ave == RUNNING || ave == WINDOW) modify->compute[icompute]->unlock(this); modify->compute[icompute]->lock_disable(); } } } delete [] format_user; memory->destroy(which); memory->destroy(argindex); memory->destroy(value2index); memory->destroy(offcol); memory->destroy(varlen); for (int i = 0; i < nvalues; i++) delete [] ids[i]; memory->sfree(ids); delete [] extlist; if (fp && me == 0) fclose(fp); memory->destroy(column); delete [] vector; delete [] vector_total; memory->destroy(array); memory->destroy(array_total); memory->destroy(array_list); } /* ---------------------------------------------------------------------- */ int FixAveTime::setmask() { int mask = 0; mask |= END_OF_STEP; return mask; } /* ---------------------------------------------------------------------- */ void FixAveTime::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/time 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/time 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/time does not exist"); value2index[i] = ivariable; } } // need to reset nvalid if nvalid < ntimestep b/c minimize was performed if (nvalid < update->ntimestep) { irepeat = 0; nvalid = nextvalid(); modify->addstep_compute_all(nvalid); } } /* ---------------------------------------------------------------------- only does something if nvalid = current timestep ------------------------------------------------------------------------- */ void FixAveTime::setup(int vflag) { end_of_step(); } /* ---------------------------------------------------------------------- */ void FixAveTime::end_of_step() { // 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/time"); if (ntimestep != nvalid) return; nvalid_last = nvalid; if (mode == SCALAR) invoke_scalar(ntimestep); else invoke_vector(ntimestep); } /* ---------------------------------------------------------------------- */ void FixAveTime::invoke_scalar(bigint ntimestep) { int i,m; double scalar; // zero if first sample within single Nfreq epoch // if any input is variable length, initialize current length // check for exceeding length is done below if (irepeat == 0) { if (any_variable_length) { modify->clearstep_compute(); column_length(1); modify->addstep_compute(ntimestep+nevery); modify->addstep_compute(ntimestep+nfreq); } for (i = 0; i < nvalues; i++) vector[i] = 0.0; } // accumulate results of computes,fixes,variables to local copy // 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 // insure no out-of-range access to variable-length compute vector 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; } if (varlen[i] && compute->size_vector < argindex[i]) scalar = 0.0; else 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 or vector-style variable // insure no out-of-range access to vector-style variable } else if (which[i] == VARIABLE) { if (argindex[i] == 0) scalar = input->variable->compute_equal(m); else { double *varvec; int nvec = input->variable->compute_vector(m,&varvec); if (nvec < argindex[i]) scalar = 0.0; else scalar = varvec[argindex[i]-1]; } } // add value to vector or just set directly if offcol is set if (offcol[i]) vector[i] = scalar; else vector[i] += scalar; } // done if irepeat < nrepeat // else reset irepeat and nvalid irepeat++; if (irepeat < nrepeat) { nvalid += nevery; modify->addstep_compute(nvalid); return; } irepeat = 0; nvalid = ntimestep + nfreq - (nrepeat-1)*nevery; modify->addstep_compute(nvalid); // average the final result for the Nfreq timestep double repeat = nrepeat; for (i = 0; i < nvalues; i++) if (offcol[i] == 0) vector[i] /= repeat; // if ave = ONE, only single Nfreq timestep value is needed // if ave = RUNNING, combine with all previous Nfreq timestep values // if ave = WINDOW, combine with nwindow most recent Nfreq timestep values if (ave == ONE) { for (i = 0; i < nvalues; i++) vector_total[i] = vector[i]; norm = 1; } else if (ave == RUNNING) { for (i = 0; i < nvalues; i++) vector_total[i] += vector[i]; norm++; } else if (ave == WINDOW) { for (i = 0; i < nvalues; i++) { vector_total[i] += vector[i]; if (window_limit) vector_total[i] -= vector_list[iwindow][i]; vector_list[iwindow][i] = vector[i]; } iwindow++; if (iwindow == nwindow) { iwindow = 0; window_limit = 1; } if (window_limit) norm = nwindow; else norm = iwindow; } // insure any columns with offcol set are effectively set to last value for (i = 0; i < nvalues; i++) if (offcol[i]) vector_total[i] = norm*vector[i]; // output result to file if (fp && me == 0) { clearerr(fp); if (overwrite) fseek(fp,filepos,SEEK_SET); fprintf(fp,BIGINT_FORMAT,ntimestep); for (i = 0; i < nvalues; i++) fprintf(fp,format,vector_total[i]/norm); fprintf(fp,"\n"); if (ferror(fp)) error->one(FLERR,"Error writing out time averaged data"); fflush(fp); if (overwrite) { long fileend = ftell(fp); if (fileend > 0) ftruncate(fileno(fp),fileend); } } } /* ---------------------------------------------------------------------- */ void FixAveTime::invoke_vector(bigint ntimestep) { int i,j,m; // first sample within single Nfreq epoch // zero out arrays that accumulate over many samples, but not across epochs // invoke setup_chunks() to determine current nchunk // re-allocate per-chunk arrays if needed // invoke lock() in two cases: // if nrepeat > 1: so nchunk cannot change until Nfreq epoch is over, // will be unlocked on last repeat of this Nfreq // if ave = RUNNING/WINDOW and not yet locked: // set forever, will be unlocked in fix destructor // wrap setup_chunks in clearstep/addstep b/c it may invoke computes // both nevery and nfreq are future steps, // since call below to cchunk->ichunk() // does not re-invoke internal cchunk compute on this same step if (irepeat == 0) { if (any_variable_length) { modify->clearstep_compute(); int nrows_new = column_length(1); modify->addstep_compute(ntimestep+nevery); modify->addstep_compute(ntimestep+nfreq); if (all_variable_length && nrows_new != nrows) { nrows = nrows_new; memory->destroy(column); memory->create(column,nrows,"ave/time:column"); allocate_arrays(); } bigint ntimestep = update->ntimestep; int lockforever_flag = 0; for (i = 0; i < nvalues; i++) { if (!varlen[i] || which[i] != COMPUTE) continue; if (nrepeat > 1 && ave == ONE) { Compute *compute = modify->compute[value2index[i]]; compute->lock(this,ntimestep,ntimestep+(nrepeat-1)*nevery); } else if ((ave == RUNNING || ave == WINDOW) && !lockforever) { Compute *compute = modify->compute[value2index[i]]; compute->lock(this,update->ntimestep,-1); lockforever_flag = 1; } } if (lockforever_flag) lockforever = 1; } for (i = 0; i < nrows; i++) for (j = 0; j < nvalues; j++) array[i][j] = 0.0; } // accumulate results of computes,fixes,variables to local copy // compute/fix/variable may invoke computes so wrap with clear/add modify->clearstep_compute(); for (j = 0; j < nvalues; j++) { m = value2index[j]; // invoke compute if not previously invoked if (which[j] == COMPUTE) { Compute *compute = modify->compute[m]; if (argindex[j] == 0) { if (!(compute->invoked_flag & INVOKED_VECTOR)) { compute->compute_vector(); compute->invoked_flag |= INVOKED_VECTOR; } double *cvector = compute->vector; for (i = 0; i < nrows; i++) column[i] = cvector[i]; } else { if (!(compute->invoked_flag & INVOKED_ARRAY)) { compute->compute_array(); compute->invoked_flag |= INVOKED_ARRAY; } double **carray = compute->array; int icol = argindex[j]-1; for (i = 0; i < nrows; i++) column[i] = carray[i][icol]; } // access fix fields, guaranteed to be ready } else if (which[j] == FIX) { Fix *fix = modify->fix[m]; if (argindex[j] == 0) for (i = 0; i < nrows; i++) column[i] = fix->compute_vector(i); else { int icol = argindex[j]-1; for (i = 0; i < nrows; i++) column[i] = fix->compute_array(i,icol); } // evaluate vector-style variable // insure nvec = nrows, else error // could be different on this timestep than when column_length(1) set nrows } else if (which[j] == VARIABLE) { double *varvec; int nvec = input->variable->compute_vector(m,&varvec); if (nvec != nrows) error->all(FLERR,"Fix ave/time vector-style variable changed length"); for (i = 0; i < nrows; i++) column[i] = varvec[i]; } // add columns of values to array or just set directly if offcol is set if (offcol[j]) { for (i = 0; i < nrows; i++) array[i][j] = column[i]; } else { for (i = 0; i < nrows; i++) array[i][j] += column[i]; } } // done if irepeat < nrepeat // else reset irepeat and nvalid irepeat++; if (irepeat < nrepeat) { nvalid += nevery; modify->addstep_compute(nvalid); return; } irepeat = 0; nvalid = ntimestep+nfreq - (nrepeat-1)*nevery; modify->addstep_compute(nvalid); // unlock any variable length computes at end of Nfreq epoch // do not unlock if ave = RUNNING or WINDOW if (any_variable_length && nrepeat > 1 && ave == ONE) { for (i = 0; i < nvalues; i++) { if (!varlen[i]) continue; Compute *compute = modify->compute[value2index[i]]; compute->unlock(this); } } // average the final result for the Nfreq timestep double repeat = nrepeat; for (i = 0; i < nrows; i++) for (j = 0; j < nvalues; j++) if (offcol[j] == 0) array[i][j] /= repeat; // if ave = ONE, only single Nfreq timestep value is needed // if ave = RUNNING, combine with all previous Nfreq timestep values // if ave = WINDOW, combine with nwindow most recent Nfreq timestep values if (ave == ONE) { for (i = 0; i < nrows; i++) for (j = 0; j < nvalues; j++) array_total[i][j] = array[i][j]; norm = 1; } else if (ave == RUNNING) { for (i = 0; i < nrows; i++) for (j = 0; j < nvalues; j++) array_total[i][j] += array[i][j]; norm++; } else if (ave == WINDOW) { for (i = 0; i < nrows; i++) for (j = 0; j < nvalues; j++) { array_total[i][j] += array[i][j]; if (window_limit) array_total[i][j] -= array_list[iwindow][i][j]; array_list[iwindow][i][j] = array[i][j]; } iwindow++; if (iwindow == nwindow) { iwindow = 0; window_limit = 1; } if (window_limit) norm = nwindow; else norm = iwindow; } // insure any columns with offcol set are effectively set to last value for (i = 0; i < nrows; i++) for (j = 0; j < nvalues; j++) if (offcol[j]) array_total[i][j] = norm*array[i][j]; // output result to file if (fp && me == 0) { if (overwrite) fseek(fp,filepos,SEEK_SET); fprintf(fp,BIGINT_FORMAT " %d\n",ntimestep,nrows); for (i = 0; i < nrows; i++) { fprintf(fp,"%d",i+1); for (j = 0; j < nvalues; j++) fprintf(fp,format,array_total[i][j]/norm); fprintf(fp,"\n"); } fflush(fp); if (overwrite) { long fileend = ftell(fp); if (fileend > 0) ftruncate(fileno(fp),fileend); } } } /* ---------------------------------------------------------------------- return scalar value ------------------------------------------------------------------------- */ int FixAveTime::column_length(int dynamic) { int m,length,lengthone; // determine nrows for static values if (!dynamic) { length = 0; for (int i = 0; i < nvalues; i++) { if (varlen[i]) continue; if (which[i] == COMPUTE) { int icompute = modify->find_compute(ids[i]); if (argindex[i] == 0) lengthone = modify->compute[icompute]->size_vector; else lengthone = modify->compute[icompute]->size_array_rows; } else if (which[i] == FIX) { int ifix = modify->find_fix(ids[i]); if (argindex[i] == 0) lengthone = modify->fix[ifix]->size_vector; else lengthone = modify->fix[ifix]->size_array_rows; } else if (which[i] == VARIABLE) { // variables are always varlen = 1, so dynamic } if (length == 0) length = lengthone; else if (lengthone != length) error->all(FLERR,"Fix ave/time columns are inconsistent lengths"); } } // determine new nrows for dynamic values // either all must be the same // or must match other static values // don't need to check if not MODE = VECTOR, just invoke lock_length() if (dynamic) { length = 0; for (int i = 0; i < nvalues; i++) { if (varlen[i] == 0) continue; m = value2index[i]; if (which[i] == COMPUTE) { Compute *compute = modify->compute[m]; lengthone = compute->lock_length(); } else if (which[i] == VARIABLE) { double *varvec; lengthone = input->variable->compute_vector(m,&varvec); } if (mode == SCALAR) continue; if (all_variable_length) { if (length == 0) length = lengthone; else if (lengthone != length) error->all(FLERR,"Fix ave/time columns are inconsistent lengths"); } else { if (lengthone != nrows) error->all(FLERR,"Fix ave/time columns are inconsistent lengths"); } } } return length; } /* ---------------------------------------------------------------------- return scalar value ------------------------------------------------------------------------- */ double FixAveTime::compute_scalar() { if (norm) return vector_total[0]/norm; return 0.0; } /* ---------------------------------------------------------------------- return Ith vector value ------------------------------------------------------------------------- */ double FixAveTime::compute_vector(int i) { if (i >= nrows) return 0.0; if (norm) { if (mode == SCALAR) return vector_total[i]/norm; if (mode == VECTOR) return array_total[i][0]/norm; } return 0.0; } /* ---------------------------------------------------------------------- return I,J array value ------------------------------------------------------------------------- */ double FixAveTime::compute_array(int i, int j) { if (i >= nrows) return 0.0; if (norm) return array_total[i][j]/norm; return 0.0; } /* ---------------------------------------------------------------------- parse optional args ------------------------------------------------------------------------- */ -void FixAveTime::options(int narg, char **arg) +void FixAveTime::options(int iarg, int narg, char **arg) { // option defaults fp = NULL; ave = ONE; startstep = 0; mode = SCALAR; noff = 0; offlist = NULL; overwrite = 0; format_user = NULL; format = (char *) " %g"; title1 = NULL; title2 = NULL; title3 = NULL; // optional args - int iarg = 6 + nvalues; while (iarg < narg) { if (strcmp(arg[iarg],"file") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); if (me == 0) { fp = fopen(arg[iarg+1],"w"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open fix ave/time file %s",arg[iarg+1]); error->one(FLERR,str); } } iarg += 2; } else if (strcmp(arg[iarg],"ave") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); if (strcmp(arg[iarg+1],"one") == 0) ave = ONE; else if (strcmp(arg[iarg+1],"running") == 0) ave = RUNNING; else if (strcmp(arg[iarg+1],"window") == 0) ave = WINDOW; else error->all(FLERR,"Illegal fix ave/time command"); if (ave == WINDOW) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix ave/time command"); nwindow = force->inumeric(FLERR,arg[iarg+2]); if (nwindow <= 0) error->all(FLERR,"Illegal fix ave/time command"); } iarg += 2; if (ave == WINDOW) iarg++; } else if (strcmp(arg[iarg],"start") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); startstep = force->inumeric(FLERR,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"mode") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); if (strcmp(arg[iarg+1],"scalar") == 0) mode = SCALAR; else if (strcmp(arg[iarg+1],"vector") == 0) mode = VECTOR; else error->all(FLERR,"Illegal fix ave/time command"); iarg += 2; } else if (strcmp(arg[iarg],"off") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); memory->grow(offlist,noff+1,"ave/time:offlist"); offlist[noff++] = force->inumeric(FLERR,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"overwrite") == 0) { overwrite = 1; iarg += 1; } else if (strcmp(arg[iarg],"format") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command"); delete [] format_user; int n = strlen(arg[iarg+1]) + 2; format_user = new char[n]; sprintf(format_user," %s",arg[iarg+1]); format = format_user; iarg += 2; } else if (strcmp(arg[iarg],"title1") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial 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/spatial command"); delete [] title2; int n = strlen(arg[iarg+1]) + 1; title2 = new char[n]; strcpy(title2,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"title3") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command"); delete [] title3; int n = strlen(arg[iarg+1]) + 1; title3 = new char[n]; strcpy(title3,arg[iarg+1]); iarg += 2; } else error->all(FLERR,"Illegal fix ave/time command"); } } /* ---------------------------------------------------------------------- reallocate vectors for N input values ------------------------------------------------------------------------- */ void FixAveTime::allocate_values(int n) { memory->grow(which,n,"ave/time:which"); memory->grow(argindex,n,"ave/time:argindex"); memory->grow(value2index,n,"ave/time:value2index"); memory->grow(offcol,n,"ave/time:offcol"); memory->grow(varlen,n,"ave/time:varlen"); ids = (char **) memory->srealloc(ids,n*sizeof(char *),"ave/time:ids"); } /* ---------------------------------------------------------------------- reallocate arrays for mode = VECTOR of size Nrows x Nvalues ------------------------------------------------------------------------- */ void FixAveTime::allocate_arrays() { memory->destroy(array); memory->destroy(array_total); memory->create(array,nrows,nvalues,"ave/time:array"); memory->create(array_total,nrows,nvalues,"ave/time:array_total"); if (ave == WINDOW) { memory->destroy(array_list); memory->create(array_list,nwindow,nrows,nvalues,"ave/time:array_list"); } // reinitialize regrown array_total since it accumulates for (int i = 0; i < nrows; i++) for (int j = 0; j < nvalues; j++) array_total[i][j] = 0.0; } /* ---------------------------------------------------------------------- calculate nvalid = next step on which end_of_step does something can be this timestep if multiple of nfreq and nrepeat = 1 else backup from next multiple of nfreq startstep is lower bound on nfreq multiple ------------------------------------------------------------------------- */ bigint FixAveTime::nextvalid() { bigint nvalid = (update->ntimestep/nfreq)*nfreq + nfreq; while (nvalid < startstep) nvalid += nfreq; if (nvalid-nfreq == update->ntimestep && nrepeat == 1) nvalid = update->ntimestep; else nvalid -= (nrepeat-1)*nevery; if (nvalid < update->ntimestep) nvalid += nfreq; return nvalid; } diff --git a/src/fix_ave_time.h b/src/fix_ave_time.h index 98b665140..f2f79f127 100644 --- a/src/fix_ave_time.h +++ b/src/fix_ave_time.h @@ -1,200 +1,200 @@ /* -*- 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/time,FixAveTime) #else #ifndef LMP_FIX_AVE_TIME_H #define LMP_FIX_AVE_TIME_H #include <stdio.h> #include "fix.h" namespace LAMMPS_NS { class FixAveTime : public Fix { public: FixAveTime(class LAMMPS *, int, char **); ~FixAveTime(); int setmask(); void init(); void setup(int); void end_of_step(); double compute_scalar(); double compute_vector(int); double compute_array(int,int); private: int me,nvalues; int nrepeat,nfreq,irepeat; bigint nvalid,nvalid_last; int *which,*argindex,*value2index,*offcol; int *varlen; // 1 if value is from variable-length compute char **ids; FILE *fp; int nrows; int any_variable_length; int all_variable_length; int lockforever; int ave,nwindow,startstep,mode; int noff,overwrite; int *offlist; char *format,*format_user; char *title1,*title2,*title3; long filepos; int norm,iwindow,window_limit; double *vector; double *vector_total; double **vector_list; double *column; double **array; double **array_total; double ***array_list; int column_length(int); void invoke_scalar(bigint); void invoke_vector(bigint); - void options(int, char **); + void options(int, int, char **); void allocate_values(int); void allocate_arrays(); bigint nextvalid(); }; } #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: No values in fix ave/time command Self-explanatory. E: Compute ID for fix ave/time does not exist Self-explanatory. E: Fix ID for fix ave/time does not exist Self-explanatory. E: Invalid fix ave/time off column Self-explantory. E: Fix ave/time compute does not calculate a scalar Self-explantory. E: Fix ave/time compute does not calculate a vector Self-explantory. E: Fix ave/time compute vector is accessed out-of-range The index for the vector is out of bounds. E: Fix ave/time compute does not calculate an array Self-explanatory. E: Fix ave/time compute array is accessed out-of-range An index for the array is out of bounds. E: Fix ave/time fix does not calculate a scalar Self-explanatory. E: Fix ave/time fix does not calculate a vector Self-explanatory. E: Fix ave/time fix vector cannot be variable length Self-explanatory. E: Fix ave/time fix vector is accessed out-of-range The index for the vector is out of bounds. E: Fix for fix ave/time not computed at compatible time Fixes generate their values on specific timesteps. Fix ave/time is requesting a value on a non-allowed timestep. E: Fix ave/time fix does not calculate an array Self-explanatory. E: Fix ave/time fix array cannot be variable length Self-explanatory. E: Fix ave/time fix array is accessed out-of-range An index for the array is out of bounds. E: Variable name for fix ave/time does not exist Self-explanatory. E: Fix ave/time variable is not equal-style variable Self-explanatory. E: Fix ave/time cannot use variable with vector mode Variables produce scalar values. E: Error writing file header Something in the output to the file triggered an error. E: Fix ave/time cannot set output array intensive/extensive from these inputs One of more of the vector inputs has individual elements which are flagged as intensive or extensive. Such an input cannot be flagged as all intensive/extensive when turned into an array by fix ave/time. E: Invalid timestep reset for fix ave/time Resetting the timestep has invalidated the sequence of timesteps this fix needs to process. E: Error writing out time averaged data Something in the output to the file triggered an error. E: Fix ave/time columns are inconsistent lengths Self-explanatory. E: Cannot open fix ave/time file %s The specified file cannot be opened. Check that the path and name are correct. */ diff --git a/src/input.cpp b/src/input.cpp index 7983f8153..dda64856d 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -1,1846 +1,1982 @@ /* ---------------------------------------------------------------------- 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 <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <ctype.h> #include <unistd.h> #include "sys/stat.h" #include "input.h" #include "style_command.h" #include "universe.h" #include "atom.h" #include "atom_vec.h" #include "comm.h" #include "comm_brick.h" #include "comm_tiled.h" #include "group.h" #include "domain.h" #include "output.h" #include "thermo.h" #include "force.h" #include "pair.h" #include "min.h" #include "modify.h" #include "compute.h" +#include "fix.h" #include "bond.h" #include "angle.h" #include "dihedral.h" #include "improper.h" #include "kspace.h" #include "update.h" #include "neighbor.h" #include "special.h" #include "timer.h" #include "variable.h" #include "accelerator_kokkos.h" #include "error.h" #include "memory.h" #ifdef _OPENMP #include <omp.h> #endif #ifdef _WIN32 #include <direct.h> #endif using namespace LAMMPS_NS; #define DELTALINE 256 #define DELTA 4 /* ---------------------------------------------------------------------- */ Input::Input(LAMMPS *lmp, int argc, char **argv) : Pointers(lmp) { MPI_Comm_rank(world,&me); maxline = maxcopy = maxwork = 0; line = copy = work = NULL; narg = maxarg = 0; arg = NULL; echo_screen = 0; echo_log = 1; label_active = 0; labelstr = NULL; jump_skip = 0; ifthenelse_flag = 0; if (me == 0) { nfile = maxfile = 1; infiles = (FILE **) memory->smalloc(sizeof(FILE *),"input:infiles"); infiles[0] = infile; } else infiles = NULL; variable = new Variable(lmp); // fill map with commands listed in style_command.h command_map = new std::map<std::string,CommandCreator>(); #define COMMAND_CLASS #define CommandStyle(key,Class) \ (*command_map)[#key] = &command_creator<Class>; #include "style_command.h" #undef CommandStyle #undef COMMAND_CLASS // process command-line args // check for args "-var" and "-echo" // caller has already checked that sufficient arguments exist int iarg = 1; while (iarg < argc) { if (strcmp(argv[iarg],"-var") == 0 || strcmp(argv[iarg],"-v") == 0) { int jarg = iarg+3; while (jarg < argc && argv[jarg][0] != '-') jarg++; variable->set(argv[iarg+1],jarg-iarg-2,&argv[iarg+2]); iarg = jarg; } else if (strcmp(argv[iarg],"-echo") == 0 || strcmp(argv[iarg],"-e") == 0) { narg = 1; char **tmp = arg; // trick echo() into using argv instead of arg arg = &argv[iarg+1]; echo(); arg = tmp; iarg += 2; } else iarg++; } } /* ---------------------------------------------------------------------- */ Input::~Input() { // don't free command and arg strings // they just point to other allocated memory memory->sfree(line); memory->sfree(copy); memory->sfree(work); if (labelstr) delete [] labelstr; memory->sfree(arg); memory->sfree(infiles); delete variable; delete command_map; } /* ---------------------------------------------------------------------- process all input from infile infile = stdin or file if command-line arg "-in" was used ------------------------------------------------------------------------- */ void Input::file() { int m,n; while (1) { // read a line from input script // n = length of line including str terminator, 0 if end of file // if line ends in continuation char '&', concatenate next line if (me == 0) { m = 0; while (1) { if (maxline-m < 2) reallocate(line,maxline,0); // end of file reached, so break // n == 0 if nothing read, else n = line with str terminator if (fgets(&line[m],maxline-m,infile) == NULL) { if (m) n = strlen(line) + 1; else n = 0; break; } // continue if last char read was not a newline // could happen if line is very long m = strlen(line); if (line[m-1] != '\n') continue; // continue reading if final printable char is & char // or if odd number of triple quotes // else break with n = line with str terminator m--; while (m >= 0 && isspace(line[m])) m--; if (m < 0 || line[m] != '&') { if (numtriple(line) % 2) { m += 2; continue; } line[m+1] = '\0'; n = m+2; break; } } } // bcast the line // if n = 0, end-of-file // error if label_active is set, since label wasn't encountered // if original input file, code is done // else go back to previous input file MPI_Bcast(&n,1,MPI_INT,0,world); if (n == 0) { if (label_active) error->all(FLERR,"Label wasn't found in input script"); if (me == 0) { if (infile != stdin) { fclose(infile); infile = NULL; } nfile--; } MPI_Bcast(&nfile,1,MPI_INT,0,world); if (nfile == 0) break; if (me == 0) infile = infiles[nfile-1]; continue; } if (n > maxline) reallocate(line,maxline,n); MPI_Bcast(line,n,MPI_CHAR,0,world); // echo the command unless scanning for label if (me == 0 && label_active == 0) { if (echo_screen && screen) fprintf(screen,"%s\n",line); if (echo_log && logfile) fprintf(logfile,"%s\n",line); } // parse the line // if no command, skip to next line in input script parse(); if (command == NULL) continue; // if scanning for label, skip command unless it's a label command if (label_active && strcmp(command,"label") != 0) continue; // execute the command if (execute_command()) { char *str = new char[maxline+32]; sprintf(str,"Unknown command: %s",line); error->all(FLERR,str); } } } /* ---------------------------------------------------------------------- process all input from filename called from library interface ------------------------------------------------------------------------- */ void Input::file(const char *filename) { // error if another nested file still open, should not be possible // open new filename and set infile, infiles[0], nfile // call to file() will close filename and decrement nfile if (me == 0) { if (nfile > 1) error->one(FLERR,"Invalid use of library file() function"); if (infile && infile != stdin) fclose(infile); infile = fopen(filename,"r"); if (infile == NULL) { char str[128]; sprintf(str,"Cannot open input script %s",filename); error->one(FLERR,str); } infiles[0] = infile; nfile = 1; } file(); } /* ---------------------------------------------------------------------- copy command in single to line, parse and execute it return command name to caller ------------------------------------------------------------------------- */ char *Input::one(const char *single) { int n = strlen(single) + 1; if (n > maxline) reallocate(line,maxline,n); strcpy(line,single); // echo the command unless scanning for label if (me == 0 && label_active == 0) { if (echo_screen && screen) fprintf(screen,"%s\n",line); if (echo_log && logfile) fprintf(logfile,"%s\n",line); } // parse the line // if no command, just return NULL parse(); if (command == NULL) return NULL; // if scanning for label, skip command unless it's a label command if (label_active && strcmp(command,"label") != 0) return NULL; // execute the command and return its name if (execute_command()) { char *str = new char[maxline+32]; sprintf(str,"Unknown command: %s",line); error->all(FLERR,str); } return command; } /* ---------------------------------------------------------------------- parse copy of command line by inserting string terminators strip comment = all chars from # on replace all $ via variable substitution except within quotes command = first word narg = # of args arg[] = individual args treat text between single/double/triple quotes as one arg via nextword() ------------------------------------------------------------------------- */ void Input::parse() { // duplicate line into copy string to break into words int n = strlen(line) + 1; if (n > maxcopy) reallocate(copy,maxcopy,n); strcpy(copy,line); // strip any # comment by replacing it with 0 // do not strip from a # inside single/double/triple quotes // quoteflag = 1,2,3 when encounter first single/double,triple quote // quoteflag = 0 when encounter matching single/double,triple quote int quoteflag = 0; char *ptr = copy; while (*ptr) { if (*ptr == '#' && !quoteflag) { *ptr = '\0'; break; } if (quoteflag == 0) { if (strstr(ptr,"\"\"\"") == ptr) { quoteflag = 3; ptr += 2; } else if (*ptr == '"') quoteflag = 2; else if (*ptr == '\'') quoteflag = 1; } else { if (quoteflag == 3 && strstr(ptr,"\"\"\"") == ptr) { quoteflag = 0; ptr += 2; } else if (quoteflag == 2 && *ptr == '"') quoteflag = 0; else if (quoteflag == 1 && *ptr == '\'') quoteflag = 0; } ptr++; } // perform $ variable substitution (print changes) // except if searching for a label since earlier variable may not be defined if (!label_active) substitute(copy,work,maxcopy,maxwork,1); // command = 1st arg in copy string char *next; command = nextword(copy,&next); if (command == NULL) return; // point arg[] at each subsequent arg in copy string // nextword() inserts string terminators into copy string to delimit args // nextword() treats text between single/double/triple quotes as one arg narg = 0; ptr = next; while (ptr) { if (narg == maxarg) { maxarg += DELTA; arg = (char **) memory->srealloc(arg,maxarg*sizeof(char *),"input:arg"); } arg[narg] = nextword(ptr,&next); if (!arg[narg]) break; narg++; ptr = next; } } /* ---------------------------------------------------------------------- find next word in str insert 0 at end of word ignore leading whitespace treat text between single/double/triple quotes as one arg matching quote must be followed by whitespace char if not end of string strip quotes from returned word return ptr to start of word or NULL if no word in string also return next = ptr after word ------------------------------------------------------------------------- */ char *Input::nextword(char *str, char **next) { char *start,*stop; // start = first non-whitespace char start = &str[strspn(str," \t\n\v\f\r")]; if (*start == '\0') return NULL; // if start is single/double/triple quote: // start = first char beyond quote // stop = first char of matching quote // next = first char beyond matching quote // next must be NULL or whitespace // if start is not single/double/triple quote: // stop = first whitespace char after start // next = char after stop, or stop itself if stop is NULL if (strstr(start,"\"\"\"") == start) { stop = strstr(&start[3],"\"\"\""); if (!stop) error->all(FLERR,"Unbalanced quotes in input line"); start += 3; *next = stop+3; if (**next && !isspace(**next)) error->all(FLERR,"Input line quote not followed by whitespace"); } else if (*start == '"' || *start == '\'') { stop = strchr(&start[1],*start); if (!stop) error->all(FLERR,"Unbalanced quotes in input line"); start++; *next = stop+1; if (**next && !isspace(**next)) error->all(FLERR,"Input line quote not followed by whitespace"); } else { stop = &start[strcspn(start," \t\n\v\f\r")]; if (*stop == '\0') *next = stop; else *next = stop+1; } // set stop to NULL to terminate word *stop = '\0'; return start; } /* ---------------------------------------------------------------------- substitute for $ variables in str using work str2 and return it reallocate str/str2 to hold expanded version if necessary & reset max/max2 print updated string if flag is set and not searching for label label_active will be 0 if called from external class ------------------------------------------------------------------------- */ void Input::substitute(char *&str, char *&str2, int &max, int &max2, int flag) { // use str2 as scratch space to expand str, then copy back to str // reallocate str and str2 as necessary // do not replace $ inside single/double/triple quotes // var = pts at variable name, ended by NULL // if $ is followed by '{', trailing '}' becomes NULL // else $x becomes x followed by NULL // beyond = points to text following variable int i,n,paren_count; char immediate[256]; char *var,*value,*beyond; int quoteflag = 0; char *ptr = str; n = strlen(str) + 1; if (n > max2) reallocate(str2,max2,n); *str2 = '\0'; char *ptr2 = str2; while (*ptr) { // variable substitution if (*ptr == '$' && !quoteflag) { // value = ptr to expanded variable // variable name between curly braces, e.g. ${a} if (*(ptr+1) == '{') { var = ptr+2; i = 0; while (var[i] != '\0' && var[i] != '}') i++; if (var[i] == '\0') error->one(FLERR,"Invalid variable name"); var[i] = '\0'; beyond = ptr + strlen(var) + 3; value = variable->retrieve(var); // immediate variable between parenthesis, e.g. $(1/2) } else if (*(ptr+1) == '(') { var = ptr+2; paren_count = 0; i = 0; while (var[i] != '\0' && !(var[i] == ')' && paren_count == 0)) { switch (var[i]) { case '(': paren_count++; break; case ')': paren_count--; break; default: ; } i++; } if (var[i] == '\0') error->one(FLERR,"Invalid immediate variable"); var[i] = '\0'; beyond = ptr + strlen(var) + 3; sprintf(immediate,"%.20g",variable->compute_equal(var)); value = immediate; // single character variable name, e.g. $a } else { var = ptr; var[0] = var[1]; var[1] = '\0'; beyond = ptr + 2; value = variable->retrieve(var); } if (value == NULL) error->one(FLERR,"Substitution for illegal variable"); // check if storage in str2 needs to be expanded // re-initialize ptr and ptr2 to the point beyond the variable. n = strlen(str2) + strlen(value) + strlen(beyond) + 1; if (n > max2) reallocate(str2,max2,n); strcat(str2,value); ptr2 = str2 + strlen(str2); ptr = beyond; // output substitution progress if requested if (flag && me == 0 && label_active == 0) { if (echo_screen && screen) fprintf(screen,"%s%s\n",str2,beyond); if (echo_log && logfile) fprintf(logfile,"%s%s\n",str2,beyond); } continue; } // quoteflag = 1,2,3 when encounter first single/double,triple quote // quoteflag = 0 when encounter matching single/double,triple quote // copy 2 extra triple quote chars into str2 if (quoteflag == 0) { if (strstr(ptr,"\"\"\"") == ptr) { quoteflag = 3; *ptr2++ = *ptr++; *ptr2++ = *ptr++; } else if (*ptr == '"') quoteflag = 2; else if (*ptr == '\'') quoteflag = 1; } else { if (quoteflag == 3 && strstr(ptr,"\"\"\"") == ptr) { quoteflag = 0; *ptr2++ = *ptr++; *ptr2++ = *ptr++; } else if (quoteflag == 2 && *ptr == '"') quoteflag = 0; else if (quoteflag == 1 && *ptr == '\'') quoteflag = 0; } // copy current character into str2 *ptr2++ = *ptr++; *ptr2 = '\0'; } // set length of input str to length of work str2 // copy work string back to input str if (max2 > max) reallocate(str,max,max2); strcpy(str,str2); } +/* ---------------------------------------------------------------------- + expand arg to earg, for arguments with syntax c_ID[*] or f_ID[*] + fields to consider in input arg range from iarg to narg + return new expanded # of values, and copy them w/out "*" into earg + if any expansion occurs, earg is new allocation, must be freed by caller + if no expansion occurs, earg just points to arg, caller need not free +------------------------------------------------------------------------- */ + +int Input::expand_args(int narg, char **arg, int mode, char **&earg) +{ + int n,iarg,index,nlo,nhi,nmax,which,expandflag,icompute,ifix; + char *ptr1,*ptr2,*str; + + ptr1 = NULL; + for (iarg = 0; iarg < narg; iarg++) { + ptr1 = strchr(arg[iarg],'*'); + if (ptr1) break; + } + + if (!ptr1) { + earg = arg; + return narg; + } + + // maxarg should always end up equal to newarg, so caller can free earg + + int maxarg = narg-iarg; + earg = (char **) memory->smalloc(maxarg*sizeof(char *),"input:earg"); + + int newarg = 0; + for (iarg = 0; iarg < narg; iarg++) { + expandflag = 0; + + if (strncmp(arg[iarg],"c_",2) == 0 || + strncmp(arg[iarg],"f_",2) == 0) { + + ptr1 = strchr(&arg[iarg][2],'['); + if (ptr1) { + ptr2 = strchr(ptr1,']'); + if (ptr2) { + *ptr2 = '\0'; + if (strchr(ptr1,'*')) { + if (arg[iarg][0] == 'c') { + *ptr1 = '\0'; + icompute = modify->find_compute(&arg[iarg][2]); + *ptr1 = '['; + + // check for global vector/array, peratom array, local array + + if (icompute >= 0) { + if (mode == 0 && modify->compute[icompute]->vector_flag) { + nmax = modify->compute[icompute]->size_vector; + expandflag = 1; + } else if (mode == 1 && modify->compute[icompute]->array_flag) { + nmax = modify->compute[icompute]->size_array_cols; + expandflag = 1; + } else if (modify->compute[icompute]->peratom_flag && + modify->compute[icompute]->size_peratom_cols) { + nmax = modify->compute[icompute]->size_peratom_cols; + expandflag = 1; + } else if (modify->compute[icompute]->local_flag && + modify->compute[icompute]->size_local_cols) { + nmax = modify->compute[icompute]->size_local_cols; + expandflag = 1; + } + } + } else if (arg[iarg][0] == 'f') { + *ptr1 = '\0'; + ifix = modify->find_fix(&arg[iarg][2]); + *ptr1 = '['; + + // check for global vector/array, peratom array, local array + + if (ifix >= 0) { + if (mode == 0 && modify->fix[ifix]->vector_flag) { + nmax = modify->fix[ifix]->size_vector; + expandflag = 1; + } else if (mode == 1 && modify->fix[ifix]->array_flag) { + nmax = modify->fix[ifix]->size_array_cols; + expandflag = 1; + } else if (modify->fix[ifix]->peratom_flag && + modify->fix[ifix]->size_peratom_cols) { + nmax = modify->fix[ifix]->size_peratom_cols; + expandflag = 1; + } else if (modify->fix[ifix]->local_flag && + modify->fix[ifix]->size_local_cols) { + nmax = modify->fix[ifix]->size_local_cols; + expandflag = 1; + } + } + } + } + *ptr2 = ']'; + } + } + } + + if (expandflag) { + *ptr2 = '\0'; + force->bounds(ptr1+1,nmax,nlo,nhi); + *ptr2 = ']'; + if (newarg+nhi-nlo+1 > maxarg) { + maxarg += nhi-nlo+1; + earg = (char **) + memory->srealloc(earg,maxarg*sizeof(char *),"input:earg"); + } + for (index = nlo; index <= nhi; index++) { + n = strlen(arg[iarg]) + 16; // 16 = space for large inserted integer + str = earg[newarg] = new char[n]; + strncpy(str,arg[iarg],ptr1+1-arg[iarg]); + sprintf(&str[ptr1+1-arg[iarg]],"%d",index); + strcat(str,ptr2); + newarg++; + } + + } else { + if (newarg == maxarg) { + maxarg++; + earg = (char **) + memory->srealloc(earg,maxarg*sizeof(char *),"input:earg"); + } + n = strlen(arg[iarg]) + 1; + earg[newarg] = new char[n]; + strcpy(earg[newarg],arg[iarg]); + newarg++; + } + } + + //printf("NEWARG %d\n",newarg); + //for (int i = 0; i < newarg; i++) + // printf(" arg %d: %s\n",i,earg[i]); + + return newarg; +} + /* ---------------------------------------------------------------------- return number of triple quotes in line ------------------------------------------------------------------------- */ int Input::numtriple(char *line) { int count = 0; char *ptr = line; while ((ptr = strstr(ptr,"\"\"\""))) { ptr += 3; count++; } return count; } /* ---------------------------------------------------------------------- rellocate a string if n > 0: set max >= n in increments of DELTALINE if n = 0: just increment max by DELTALINE ------------------------------------------------------------------------- */ void Input::reallocate(char *&str, int &max, int n) { if (n) { while (n > max) max += DELTALINE; } else max += DELTALINE; str = (char *) memory->srealloc(str,max*sizeof(char),"input:str"); } /* ---------------------------------------------------------------------- process a single parsed command return 0 if successful, -1 if did not recognize command ------------------------------------------------------------------------- */ int Input::execute_command() { int flag = 1; if (!strcmp(command,"clear")) clear(); else if (!strcmp(command,"echo")) echo(); else if (!strcmp(command,"if")) ifthenelse(); else if (!strcmp(command,"include")) include(); else if (!strcmp(command,"jump")) jump(); else if (!strcmp(command,"label")) label(); else if (!strcmp(command,"log")) log(); else if (!strcmp(command,"next")) next_command(); else if (!strcmp(command,"partition")) partition(); else if (!strcmp(command,"print")) print(); else if (!strcmp(command,"python")) python(); else if (!strcmp(command,"quit")) quit(); else if (!strcmp(command,"shell")) shell(); else if (!strcmp(command,"variable")) variable_command(); else if (!strcmp(command,"angle_coeff")) angle_coeff(); else if (!strcmp(command,"angle_style")) angle_style(); else if (!strcmp(command,"atom_modify")) atom_modify(); else if (!strcmp(command,"atom_style")) atom_style(); else if (!strcmp(command,"bond_coeff")) bond_coeff(); else if (!strcmp(command,"bond_style")) bond_style(); else if (!strcmp(command,"bond_write")) bond_write(); else if (!strcmp(command,"boundary")) boundary(); else if (!strcmp(command,"box")) box(); else if (!strcmp(command,"comm_modify")) comm_modify(); else if (!strcmp(command,"comm_style")) comm_style(); else if (!strcmp(command,"compute")) compute(); else if (!strcmp(command,"compute_modify")) compute_modify(); else if (!strcmp(command,"dielectric")) dielectric(); else if (!strcmp(command,"dihedral_coeff")) dihedral_coeff(); else if (!strcmp(command,"dihedral_style")) dihedral_style(); else if (!strcmp(command,"dimension")) dimension(); else if (!strcmp(command,"dump")) dump(); else if (!strcmp(command,"dump_modify")) dump_modify(); else if (!strcmp(command,"fix")) fix(); else if (!strcmp(command,"fix_modify")) fix_modify(); else if (!strcmp(command,"group")) group_command(); else if (!strcmp(command,"improper_coeff")) improper_coeff(); else if (!strcmp(command,"improper_style")) improper_style(); else if (!strcmp(command,"kspace_modify")) kspace_modify(); else if (!strcmp(command,"kspace_style")) kspace_style(); else if (!strcmp(command,"lattice")) lattice(); else if (!strcmp(command,"mass")) mass(); else if (!strcmp(command,"min_modify")) min_modify(); else if (!strcmp(command,"min_style")) min_style(); else if (!strcmp(command,"molecule")) molecule(); else if (!strcmp(command,"neigh_modify")) neigh_modify(); else if (!strcmp(command,"neighbor")) neighbor_command(); else if (!strcmp(command,"newton")) newton(); else if (!strcmp(command,"package")) package(); else if (!strcmp(command,"pair_coeff")) pair_coeff(); else if (!strcmp(command,"pair_modify")) pair_modify(); else if (!strcmp(command,"pair_style")) pair_style(); else if (!strcmp(command,"pair_write")) pair_write(); else if (!strcmp(command,"processors")) processors(); else if (!strcmp(command,"region")) region(); else if (!strcmp(command,"reset_timestep")) reset_timestep(); else if (!strcmp(command,"restart")) restart(); else if (!strcmp(command,"run_style")) run_style(); else if (!strcmp(command,"special_bonds")) special_bonds(); else if (!strcmp(command,"suffix")) suffix(); else if (!strcmp(command,"thermo")) thermo(); else if (!strcmp(command,"thermo_modify")) thermo_modify(); else if (!strcmp(command,"thermo_style")) thermo_style(); else if (!strcmp(command,"timestep")) timestep(); else if (!strcmp(command,"timer")) timer_command(); else if (!strcmp(command,"uncompute")) uncompute(); else if (!strcmp(command,"undump")) undump(); else if (!strcmp(command,"unfix")) unfix(); else if (!strcmp(command,"units")) units(); else flag = 0; // return if command was listed above if (flag) return 0; // invoke commands added via style_command.h if (command_map->find(command) != command_map->end()) { CommandCreator command_creator = (*command_map)[command]; command_creator(lmp,narg,arg); return 0; } // unrecognized command return -1; } /* ---------------------------------------------------------------------- one instance per command in style_command.h ------------------------------------------------------------------------- */ template <typename T> void Input::command_creator(LAMMPS *lmp, int narg, char **arg) { T cmd(lmp); cmd.command(narg,arg); } /* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */ void Input::clear() { if (narg > 0) error->all(FLERR,"Illegal clear command"); lmp->destroy(); lmp->create(); lmp->post_create(); } /* ---------------------------------------------------------------------- */ void Input::echo() { if (narg != 1) error->all(FLERR,"Illegal echo command"); if (strcmp(arg[0],"none") == 0) { echo_screen = 0; echo_log = 0; } else if (strcmp(arg[0],"screen") == 0) { echo_screen = 1; echo_log = 0; } else if (strcmp(arg[0],"log") == 0) { echo_screen = 0; echo_log = 1; } else if (strcmp(arg[0],"both") == 0) { echo_screen = 1; echo_log = 1; } else error->all(FLERR,"Illegal echo command"); } /* ---------------------------------------------------------------------- */ void Input::ifthenelse() { if (narg < 3) error->all(FLERR,"Illegal if command"); // substitute for variables in Boolean expression for "if" // in case expression was enclosed in quotes // must substitute on copy of arg else will step on subsequent args int n = strlen(arg[0]) + 1; if (n > maxline) reallocate(line,maxline,n); strcpy(line,arg[0]); substitute(line,work,maxline,maxwork,0); // evaluate Boolean expression for "if" double btest = variable->evaluate_boolean(line); // bound "then" commands if (strcmp(arg[1],"then") != 0) error->all(FLERR,"Illegal if command"); int first = 2; int iarg = first; while (iarg < narg && (strcmp(arg[iarg],"elif") != 0 && strcmp(arg[iarg],"else") != 0)) iarg++; int last = iarg-1; // execute "then" commands // make copies of all arg string commands // required because re-parsing a command via one() will wipe out args if (btest != 0.0) { int ncommands = last-first + 1; if (ncommands <= 0) error->all(FLERR,"Illegal if command"); char **commands = new char*[ncommands]; ncommands = 0; for (int i = first; i <= last; i++) { int n = strlen(arg[i]) + 1; if (n == 1) error->all(FLERR,"Illegal if command"); commands[ncommands] = new char[n]; strcpy(commands[ncommands],arg[i]); ncommands++; } ifthenelse_flag = 1; for (int i = 0; i < ncommands; i++) one(commands[i]); ifthenelse_flag = 0; for (int i = 0; i < ncommands; i++) delete [] commands[i]; delete [] commands; return; } // done if no "elif" or "else" if (iarg == narg) return; // check "elif" or "else" until find commands to execute // substitute for variables and evaluate Boolean expression for "elif" // must substitute on copy of arg else will step on subsequent args // bound and execute "elif" or "else" commands while (iarg != narg) { if (iarg+2 > narg) error->all(FLERR,"Illegal if command"); if (strcmp(arg[iarg],"elif") == 0) { n = strlen(arg[iarg+1]) + 1; if (n > maxline) reallocate(line,maxline,n); strcpy(line,arg[iarg+1]); substitute(line,work,maxline,maxwork,0); btest = variable->evaluate_boolean(line); first = iarg+2; } else { btest = 1.0; first = iarg+1; } iarg = first; while (iarg < narg && (strcmp(arg[iarg],"elif") != 0 && strcmp(arg[iarg],"else") != 0)) iarg++; last = iarg-1; if (btest == 0.0) continue; int ncommands = last-first + 1; if (ncommands <= 0) error->all(FLERR,"Illegal if command"); char **commands = new char*[ncommands]; ncommands = 0; for (int i = first; i <= last; i++) { int n = strlen(arg[i]) + 1; if (n == 1) error->all(FLERR,"Illegal if command"); commands[ncommands] = new char[n]; strcpy(commands[ncommands],arg[i]); ncommands++; } // execute the list of commands ifthenelse_flag = 1; for (int i = 0; i < ncommands; i++) one(commands[i]); ifthenelse_flag = 0; // clean up for (int i = 0; i < ncommands; i++) delete [] commands[i]; delete [] commands; return; } } /* ---------------------------------------------------------------------- */ void Input::include() { if (narg != 1) error->all(FLERR,"Illegal include command"); // do not allow include inside an if command // NOTE: this check will fail if a 2nd if command was inside the if command // and came before the include if (ifthenelse_flag) error->all(FLERR,"Cannot use include command within an if command"); if (me == 0) { if (nfile == maxfile) { maxfile++; infiles = (FILE **) memory->srealloc(infiles,maxfile*sizeof(FILE *),"input:infiles"); } infile = fopen(arg[0],"r"); if (infile == NULL) { char str[128]; sprintf(str,"Cannot open input script %s",arg[0]); error->one(FLERR,str); } infiles[nfile++] = infile; } } /* ---------------------------------------------------------------------- */ void Input::jump() { if (narg < 1 || narg > 2) error->all(FLERR,"Illegal jump command"); if (jump_skip) { jump_skip = 0; return; } if (me == 0) { if (strcmp(arg[0],"SELF") == 0) rewind(infile); else { if (infile && infile != stdin) fclose(infile); infile = fopen(arg[0],"r"); if (infile == NULL) { char str[128]; sprintf(str,"Cannot open input script %s",arg[0]); error->one(FLERR,str); } infiles[nfile-1] = infile; } } if (narg == 2) { label_active = 1; if (labelstr) delete [] labelstr; int n = strlen(arg[1]) + 1; labelstr = new char[n]; strcpy(labelstr,arg[1]); } } /* ---------------------------------------------------------------------- */ void Input::label() { if (narg != 1) error->all(FLERR,"Illegal label command"); if (label_active && strcmp(labelstr,arg[0]) == 0) label_active = 0; } /* ---------------------------------------------------------------------- */ void Input::log() { if (narg > 2) error->all(FLERR,"Illegal log command"); int appendflag = 0; if (narg == 2) { if (strcmp(arg[1],"append") == 0) appendflag = 1; else error->all(FLERR,"Illegal log command"); } if (me == 0) { if (logfile) fclose(logfile); if (strcmp(arg[0],"none") == 0) logfile = NULL; else { if (appendflag) logfile = fopen(arg[0],"a"); else logfile = fopen(arg[0],"w"); if (logfile == NULL) { char str[128]; sprintf(str,"Cannot open logfile %s",arg[0]); error->one(FLERR,str); } } if (universe->nworlds == 1) universe->ulogfile = logfile; } } /* ---------------------------------------------------------------------- */ void Input::next_command() { if (variable->next(narg,arg)) jump_skip = 1; } /* ---------------------------------------------------------------------- */ void Input::partition() { if (narg < 3) error->all(FLERR,"Illegal partition command"); int yesflag; if (strcmp(arg[0],"yes") == 0) yesflag = 1; else if (strcmp(arg[0],"no") == 0) yesflag = 0; else error->all(FLERR,"Illegal partition command"); int ilo,ihi; force->bounds(arg[1],universe->nworlds,ilo,ihi); // copy original line to copy, since will use strtok() on it // ptr = start of 4th word strcpy(copy,line); char *ptr = strtok(copy," \t\n\r\f"); ptr = strtok(NULL," \t\n\r\f"); ptr = strtok(NULL," \t\n\r\f"); ptr += strlen(ptr) + 1; ptr += strspn(ptr," \t\n\r\f"); // execute the remaining command line on requested partitions if (yesflag) { if (universe->iworld+1 >= ilo && universe->iworld+1 <= ihi) one(ptr); } else { if (universe->iworld+1 < ilo || universe->iworld+1 > ihi) one(ptr); } } /* ---------------------------------------------------------------------- */ void Input::print() { if (narg < 1) error->all(FLERR,"Illegal print command"); // copy 1st arg back into line (copy is being used) // check maxline since arg[0] could have been exanded by variables // substitute for $ variables (no printing) and print arg int n = strlen(arg[0]) + 1; if (n > maxline) reallocate(line,maxline,n); strcpy(line,arg[0]); substitute(line,work,maxline,maxwork,0); // parse optional args FILE *fp = NULL; int screenflag = 1; int iarg = 1; while (iarg < narg) { if (strcmp(arg[iarg],"file") == 0 || strcmp(arg[iarg],"append") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal print command"); if (me == 0) { if (fp != NULL) fclose(fp); if (strcmp(arg[iarg],"file") == 0) fp = fopen(arg[iarg+1],"w"); else fp = fopen(arg[iarg+1],"a"); if (fp == NULL) { char str[128]; sprintf(str,"Cannot open print file %s",arg[iarg+1]); error->one(FLERR,str); } } iarg += 2; } else if (strcmp(arg[iarg],"screen") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal print command"); if (strcmp(arg[iarg+1],"yes") == 0) screenflag = 1; else if (strcmp(arg[iarg+1],"no") == 0) screenflag = 0; else error->all(FLERR,"Illegal print command"); iarg += 2; } else error->all(FLERR,"Illegal print command"); } if (me == 0) { if (screenflag && screen) fprintf(screen,"%s\n",line); if (screenflag && logfile) fprintf(logfile,"%s\n",line); if (fp) { fprintf(fp,"%s\n",line); fclose(fp); } } } /* ---------------------------------------------------------------------- */ void Input::python() { variable->python_command(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::quit() { if (narg == 0) error->done(0); // 1 would be fully backwards compatible if (narg == 1) error->done(force->inumeric(FLERR,arg[0])); error->all(FLERR,"Illegal quit command"); } /* ---------------------------------------------------------------------- */ char *shell_failed_message(const char* cmd, int errnum) { const char *errmsg = strerror(errnum); int len = strlen(cmd)+strlen(errmsg)+64; char *msg = new char[len]; sprintf(msg,"Shell command '%s' failed with error '%s'", cmd, errmsg); return msg; } void Input::shell() { int rv,err; if (narg < 1) error->all(FLERR,"Illegal shell command"); if (strcmp(arg[0],"cd") == 0) { if (narg != 2) error->all(FLERR,"Illegal shell cd command"); rv = (chdir(arg[1]) < 0) ? errno : 0; MPI_Reduce(&rv,&err,1,MPI_INT,MPI_MAX,0,world); if (me == 0 && err != 0) { char *message = shell_failed_message("cd",err); error->warning(FLERR,message); delete [] message; } } else if (strcmp(arg[0],"mkdir") == 0) { if (narg < 2) error->all(FLERR,"Illegal shell mkdir command"); if (me == 0) for (int i = 1; i < narg; i++) { #if defined(_WIN32) rv = _mkdir(arg[i]); #else rv = mkdir(arg[i], S_IRWXU | S_IRGRP | S_IXGRP); #endif if (rv < 0) { char *message = shell_failed_message("mkdir",errno); error->warning(FLERR,message); delete [] message; } } } else if (strcmp(arg[0],"mv") == 0) { if (narg != 3) error->all(FLERR,"Illegal shell mv command"); rv = (rename(arg[1],arg[2]) < 0) ? errno : 0; MPI_Reduce(&rv,&err,1,MPI_INT,MPI_MAX,0,world); if (me == 0 && err != 0) { char *message = shell_failed_message("mv",err); error->warning(FLERR,message); delete [] message; } } else if (strcmp(arg[0],"rm") == 0) { if (narg < 2) error->all(FLERR,"Illegal shell rm command"); if (me == 0) for (int i = 1; i < narg; i++) { if (unlink(arg[i]) < 0) { char *message = shell_failed_message("rm",errno); error->warning(FLERR,message); delete [] message; } } } else if (strcmp(arg[0],"rmdir") == 0) { if (narg < 2) error->all(FLERR,"Illegal shell rmdir command"); if (me == 0) for (int i = 1; i < narg; i++) { if (rmdir(arg[i]) < 0) { char *message = shell_failed_message("rmdir",errno); error->warning(FLERR,message); delete [] message; } } } else if (strcmp(arg[0],"putenv") == 0) { if (narg < 2) error->all(FLERR,"Illegal shell putenv command"); for (int i = 1; i < narg; i++) { char *ptr = strdup(arg[i]); rv = 0; #ifdef _WIN32 if (ptr != NULL) rv = _putenv(ptr); #else if (ptr != NULL) rv = putenv(ptr); #endif rv = (rv < 0) ? errno : 0; MPI_Reduce(&rv,&err,1,MPI_INT,MPI_MAX,0,world); if (me == 0 && err != 0) { char *message = shell_failed_message("putenv",err); error->warning(FLERR,message); delete [] message; } } // use work string to concat args back into one string separated by spaces // invoke string in shell via system() } else { int n = 0; for (int i = 0; i < narg; i++) n += strlen(arg[i]) + 1; if (n > maxwork) reallocate(work,maxwork,n); strcpy(work,arg[0]); for (int i = 1; i < narg; i++) { strcat(work," "); strcat(work,arg[i]); } if (me == 0) if (system(work) != 0) error->warning(FLERR,"Shell command returned with non-zero status"); } } /* ---------------------------------------------------------------------- */ void Input::variable_command() { variable->set(narg,arg); } /* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- one function for each LAMMPS-specific input script command ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */ void Input::angle_coeff() { if (domain->box_exist == 0) error->all(FLERR,"Angle_coeff command before simulation box is defined"); if (force->angle == NULL) error->all(FLERR,"Angle_coeff command before angle_style is defined"); if (atom->avec->angles_allow == 0) error->all(FLERR,"Angle_coeff command when no angles allowed"); force->angle->coeff(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::angle_style() { if (narg < 1) error->all(FLERR,"Illegal angle_style command"); if (atom->avec->angles_allow == 0) error->all(FLERR,"Angle_style command when no angles allowed"); force->create_angle(arg[0],1); if (force->angle) force->angle->settings(narg-1,&arg[1]); } /* ---------------------------------------------------------------------- */ void Input::atom_modify() { atom->modify_params(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::atom_style() { if (narg < 1) error->all(FLERR,"Illegal atom_style command"); if (domain->box_exist) error->all(FLERR,"Atom_style command after simulation box is defined"); atom->create_avec(arg[0],narg-1,&arg[1],1); } /* ---------------------------------------------------------------------- */ void Input::bond_coeff() { if (domain->box_exist == 0) error->all(FLERR,"Bond_coeff command before simulation box is defined"); if (force->bond == NULL) error->all(FLERR,"Bond_coeff command before bond_style is defined"); if (atom->avec->bonds_allow == 0) error->all(FLERR,"Bond_coeff command when no bonds allowed"); force->bond->coeff(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::bond_style() { if (narg < 1) error->all(FLERR,"Illegal bond_style command"); if (atom->avec->bonds_allow == 0) error->all(FLERR,"Bond_style command when no bonds allowed"); force->create_bond(arg[0],1); if (force->bond) force->bond->settings(narg-1,&arg[1]); } /* ---------------------------------------------------------------------- */ void Input::bond_write() { if (atom->avec->bonds_allow == 0) error->all(FLERR,"Bond_write command when no bonds allowed"); if (force->bond == NULL) error->all(FLERR,"Bond_write command before bond_style is defined"); else force->bond->write_file(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::boundary() { if (domain->box_exist) error->all(FLERR,"Boundary command after simulation box is defined"); domain->set_boundary(narg,arg,0); } /* ---------------------------------------------------------------------- */ void Input::box() { if (domain->box_exist) error->all(FLERR,"Box command after simulation box is defined"); domain->set_box(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::comm_modify() { comm->modify_params(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::comm_style() { if (narg < 1) error->all(FLERR,"Illegal comm_style command"); if (strcmp(arg[0],"brick") == 0) { if (comm->style == 0) return; Comm *oldcomm = comm; comm = new CommBrick(lmp,oldcomm); delete oldcomm; } else if (strcmp(arg[0],"tiled") == 0) { if (comm->style == 1) return; Comm *oldcomm = comm; comm = new CommTiled(lmp,oldcomm); delete oldcomm; } else error->all(FLERR,"Illegal comm_style command"); } /* ---------------------------------------------------------------------- */ void Input::compute() { modify->add_compute(narg,arg,1); } /* ---------------------------------------------------------------------- */ void Input::compute_modify() { modify->modify_compute(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::dielectric() { if (narg != 1) error->all(FLERR,"Illegal dielectric command"); force->dielectric = force->numeric(FLERR,arg[0]); } /* ---------------------------------------------------------------------- */ void Input::dihedral_coeff() { if (domain->box_exist == 0) error->all(FLERR,"Dihedral_coeff command before simulation box is defined"); if (force->dihedral == NULL) error->all(FLERR,"Dihedral_coeff command before dihedral_style is defined"); if (atom->avec->dihedrals_allow == 0) error->all(FLERR,"Dihedral_coeff command when no dihedrals allowed"); force->dihedral->coeff(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::dihedral_style() { if (narg < 1) error->all(FLERR,"Illegal dihedral_style command"); if (atom->avec->dihedrals_allow == 0) error->all(FLERR,"Dihedral_style command when no dihedrals allowed"); force->create_dihedral(arg[0],1); if (force->dihedral) force->dihedral->settings(narg-1,&arg[1]); } /* ---------------------------------------------------------------------- */ void Input::dimension() { if (narg != 1) error->all(FLERR,"Illegal dimension command"); if (domain->box_exist) error->all(FLERR,"Dimension command after simulation box is defined"); domain->dimension = force->inumeric(FLERR,arg[0]); if (domain->dimension != 2 && domain->dimension != 3) error->all(FLERR,"Illegal dimension command"); // must reset default extra_dof of all computes // since some were created before dimension command is encountered for (int i = 0; i < modify->ncompute; i++) modify->compute[i]->reset_extra_dof(); } /* ---------------------------------------------------------------------- */ void Input::dump() { output->add_dump(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::dump_modify() { output->modify_dump(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::fix() { modify->add_fix(narg,arg,1); } /* ---------------------------------------------------------------------- */ void Input::fix_modify() { modify->modify_fix(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::group_command() { group->assign(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::improper_coeff() { if (domain->box_exist == 0) error->all(FLERR,"Improper_coeff command before simulation box is defined"); if (force->improper == NULL) error->all(FLERR,"Improper_coeff command before improper_style is defined"); if (atom->avec->impropers_allow == 0) error->all(FLERR,"Improper_coeff command when no impropers allowed"); force->improper->coeff(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::improper_style() { if (narg < 1) error->all(FLERR,"Illegal improper_style command"); if (atom->avec->impropers_allow == 0) error->all(FLERR,"Improper_style command when no impropers allowed"); force->create_improper(arg[0],1); if (force->improper) force->improper->settings(narg-1,&arg[1]); } /* ---------------------------------------------------------------------- */ void Input::kspace_modify() { if (force->kspace == NULL) error->all(FLERR,"KSpace style has not yet been set"); force->kspace->modify_params(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::kspace_style() { force->create_kspace(narg,arg,1); } /* ---------------------------------------------------------------------- */ void Input::lattice() { domain->set_lattice(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::mass() { if (narg != 2) error->all(FLERR,"Illegal mass command"); if (domain->box_exist == 0) error->all(FLERR,"Mass command before simulation box is defined"); atom->set_mass(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::min_modify() { update->minimize->modify_params(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::min_style() { if (domain->box_exist == 0) error->all(FLERR,"Min_style command before simulation box is defined"); update->create_minimize(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::molecule() { atom->add_molecule(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::neigh_modify() { neighbor->modify_params(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::neighbor_command() { neighbor->set(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::newton() { int newton_pair=1,newton_bond=1; if (narg == 1) { if (strcmp(arg[0],"off") == 0) newton_pair = newton_bond = 0; else if (strcmp(arg[0],"on") == 0) newton_pair = newton_bond = 1; else error->all(FLERR,"Illegal newton command"); } else if (narg == 2) { if (strcmp(arg[0],"off") == 0) newton_pair = 0; else if (strcmp(arg[0],"on") == 0) newton_pair= 1; else error->all(FLERR,"Illegal newton command"); if (strcmp(arg[1],"off") == 0) newton_bond = 0; else if (strcmp(arg[1],"on") == 0) newton_bond = 1; else error->all(FLERR,"Illegal newton command"); } else error->all(FLERR,"Illegal newton command"); force->newton_pair = newton_pair; if (domain->box_exist && (newton_bond != force->newton_bond)) error->all(FLERR,"Newton bond change after simulation box is defined"); force->newton_bond = newton_bond; if (newton_pair || newton_bond) force->newton = 1; else force->newton = 0; } /* ---------------------------------------------------------------------- */ void Input::package() { if (domain->box_exist) error->all(FLERR,"Package command after simulation box is defined"); if (narg < 1) error->all(FLERR,"Illegal package command"); // same checks for packages existing as in LAMMPS::post_create() // since can be invoked here by package command in input script if (strcmp(arg[0],"gpu") == 0) { if (!modify->check_package("GPU")) error->all(FLERR,"Package gpu command without GPU package installed"); char **fixarg = new char*[2+narg]; fixarg[0] = (char *) "package_gpu"; fixarg[1] = (char *) "all"; fixarg[2] = (char *) "GPU"; for (int i = 1; i < narg; i++) fixarg[i+2] = arg[i]; modify->add_fix(2+narg,fixarg); delete [] fixarg; } else if (strcmp(arg[0],"kokkos") == 0) { if (lmp->kokkos == NULL || lmp->kokkos->kokkos_exists == 0) error->all(FLERR, "Package kokkos command without KOKKOS package enabled"); lmp->kokkos->accelerator(narg-1,&arg[1]); } else if (strcmp(arg[0],"omp") == 0) { if (!modify->check_package("OMP")) error->all(FLERR, "Package omp command without USER-OMP package installed"); char **fixarg = new char*[2+narg]; fixarg[0] = (char *) "package_omp"; fixarg[1] = (char *) "all"; fixarg[2] = (char *) "OMP"; for (int i = 1; i < narg; i++) fixarg[i+2] = arg[i]; modify->add_fix(2+narg,fixarg); delete [] fixarg; } else if (strcmp(arg[0],"intel") == 0) { if (!modify->check_package("INTEL")) error->all(FLERR, "Package intel command without USER-INTEL package installed"); char **fixarg = new char*[2+narg]; fixarg[0] = (char *) "package_intel"; fixarg[1] = (char *) "all"; fixarg[2] = (char *) "INTEL"; for (int i = 1; i < narg; i++) fixarg[i+2] = arg[i]; modify->add_fix(2+narg,fixarg); delete [] fixarg; } else error->all(FLERR,"Illegal package command"); } /* ---------------------------------------------------------------------- */ void Input::pair_coeff() { if (domain->box_exist == 0) error->all(FLERR,"Pair_coeff command before simulation box is defined"); if (force->pair == NULL) error->all(FLERR,"Pair_coeff command before pair_style is defined"); force->pair->coeff(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::pair_modify() { if (force->pair == NULL) error->all(FLERR,"Pair_modify command before pair_style is defined"); force->pair->modify_params(narg,arg); } /* ---------------------------------------------------------------------- if old pair style exists and new style is same, just change settings else create new pair class ------------------------------------------------------------------------- */ void Input::pair_style() { if (narg < 1) error->all(FLERR,"Illegal pair_style command"); if (force->pair) { int match = 0; if (strcmp(arg[0],force->pair_style) == 0) match = 1; if (!match && lmp->suffix_enable) { char estyle[256]; if (lmp->suffix) { sprintf(estyle,"%s/%s",arg[0],lmp->suffix); if (strcmp(estyle,force->pair_style) == 0) match = 1; } if (lmp->suffix2) { sprintf(estyle,"%s/%s",arg[0],lmp->suffix2); if (strcmp(estyle,force->pair_style) == 0) match = 1; } } if (match) { force->pair->settings(narg-1,&arg[1]); return; } } force->create_pair(arg[0],1); if (force->pair) force->pair->settings(narg-1,&arg[1]); } /* ---------------------------------------------------------------------- */ void Input::pair_write() { if (force->pair == NULL) error->all(FLERR,"Pair_write command before pair_style is defined"); force->pair->write_file(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::processors() { if (domain->box_exist) error->all(FLERR,"Processors command after simulation box is defined"); comm->set_processors(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::region() { domain->add_region(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::reset_timestep() { update->reset_timestep(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::restart() { output->create_restart(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::run_style() { if (domain->box_exist == 0) error->all(FLERR,"Run_style command before simulation box is defined"); update->create_integrate(narg,arg,1); } /* ---------------------------------------------------------------------- */ void Input::special_bonds() { // store 1-3,1-4 and dihedral/extra flag values before change // change in 1-2 coeffs will not change the special list double lj2 = force->special_lj[2]; double lj3 = force->special_lj[3]; double coul2 = force->special_coul[2]; double coul3 = force->special_coul[3]; int angle = force->special_angle; int dihedral = force->special_dihedral; int extra = force->special_extra; force->set_special(narg,arg); // if simulation box defined and saved values changed, redo special list if (domain->box_exist && atom->molecular == 1) { if (lj2 != force->special_lj[2] || lj3 != force->special_lj[3] || coul2 != force->special_coul[2] || coul3 != force->special_coul[3] || angle != force->special_angle || dihedral != force->special_dihedral || extra != force->special_extra) { Special special(lmp); special.build(); } } } /* ---------------------------------------------------------------------- */ void Input::suffix() { if (narg < 1) error->all(FLERR,"Illegal suffix command"); if (strcmp(arg[0],"off") == 0) lmp->suffix_enable = 0; else if (strcmp(arg[0],"on") == 0) lmp->suffix_enable = 1; else { lmp->suffix_enable = 1; delete [] lmp->suffix; delete [] lmp->suffix2; if (strcmp(arg[0],"hybrid") == 0) { if (narg != 3) error->all(FLERR,"Illegal suffix command"); int n = strlen(arg[1]) + 1; lmp->suffix = new char[n]; strcpy(lmp->suffix,arg[1]); n = strlen(arg[2]) + 1; lmp->suffix2 = new char[n]; strcpy(lmp->suffix2,arg[2]); } else { if (narg != 1) error->all(FLERR,"Illegal suffix command"); int n = strlen(arg[0]) + 1; lmp->suffix = new char[n]; strcpy(lmp->suffix,arg[0]); } } } /* ---------------------------------------------------------------------- */ void Input::thermo() { output->set_thermo(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::thermo_modify() { output->thermo->modify_params(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::thermo_style() { output->create_thermo(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::timer_command() { timer->modify_params(narg,arg); } /* ---------------------------------------------------------------------- */ void Input::timestep() { if (narg != 1) error->all(FLERR,"Illegal timestep command"); update->dt = force->numeric(FLERR,arg[0]); } /* ---------------------------------------------------------------------- */ void Input::uncompute() { if (narg != 1) error->all(FLERR,"Illegal uncompute command"); modify->delete_compute(arg[0]); } /* ---------------------------------------------------------------------- */ void Input::undump() { if (narg != 1) error->all(FLERR,"Illegal undump command"); output->delete_dump(arg[0]); } /* ---------------------------------------------------------------------- */ void Input::unfix() { if (narg != 1) error->all(FLERR,"Illegal unfix command"); modify->delete_fix(arg[0]); } /* ---------------------------------------------------------------------- */ void Input::units() { if (narg != 1) error->all(FLERR,"Illegal units command"); if (domain->box_exist) error->all(FLERR,"Units command after simulation box is defined"); update->set_units(arg[0]); } diff --git a/src/input.h b/src/input.h index ccda3f49b..c1947fee0 100644 --- a/src/input.h +++ b/src/input.h @@ -1,386 +1,387 @@ /* -*- 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_INPUT_H #define LMP_INPUT_H #include <stdio.h> #include "pointers.h" #include <map> #include <string> namespace LAMMPS_NS { class Input : protected Pointers { friend class Info; public: int narg; // # of command args char **arg; // parsed args for command class Variable *variable; // defined variables Input(class LAMMPS *, int, char **); ~Input(); void file(); // process all input void file(const char *); // process an input script char *one(const char *); // process a single command void substitute(char *&, char *&, int &, int &, int); // substitute for variables in a string + int expand_args(int, char **, int, char **&); // expand args due to wildcard private: int me; // proc ID char *command; // ptr to current command int maxarg; // max # of args in arg char *line,*copy,*work; // input line & copy and work string int maxline,maxcopy,maxwork; // max lengths of char strings int echo_screen; // 0 = no, 1 = yes int echo_log; // 0 = no, 1 = yes int nfile,maxfile; // current # and max # of open input files int label_active; // 0 = no label, 1 = looking for label char *labelstr; // label string being looked for int jump_skip; // 1 if skipping next jump, 0 otherwise int ifthenelse_flag; // 1 if executing commands inside an if-then-else FILE **infiles; // list of open input files protected: typedef void (*CommandCreator)(LAMMPS *, int, char **); std::map<std::string,CommandCreator> *command_map; template <typename T> static void command_creator(LAMMPS *, int, char **); private: void parse(); // parse an input text line char *nextword(char *, char **); // find next word in string with quotes int numtriple(char *); // count number of triple quotes void reallocate(char *&, int &, int); // reallocate a char string int execute_command(); // execute a single command void clear(); // input script commands void echo(); void ifthenelse(); void include(); void jump(); void label(); void log(); void next_command(); void partition(); void print(); void python(); void quit(); void shell(); void variable_command(); void angle_coeff(); // LAMMPS commands void angle_style(); void atom_modify(); void atom_style(); void bond_coeff(); void bond_style(); void bond_write(); void boundary(); void box(); void comm_modify(); void comm_style(); void compute(); void compute_modify(); void dielectric(); void dihedral_coeff(); void dihedral_style(); void dimension(); void dump(); void dump_modify(); void fix(); void fix_modify(); void group_command(); void improper_coeff(); void improper_style(); void kspace_modify(); void kspace_style(); void lattice(); void mass(); void min_modify(); void min_style(); void molecule(); void neigh_modify(); void neighbor_command(); void newton(); void package(); void pair_coeff(); void pair_modify(); void pair_style(); void pair_write(); void processors(); void region(); void reset_timestep(); void restart(); void run_style(); void special_bonds(); void suffix(); void thermo(); void thermo_modify(); void thermo_style(); void timestep(); void timer_command(); void uncompute(); void undump(); void unfix(); void units(); }; } #endif /* ERROR/WARNING messages: E: Label wasn't found in input script Self-explanatory. E: Unknown command: %s The command is not known to LAMMPS. Check the input script. E: Invalid use of library file() function This function is called thru the library interface. This error should not occur. Contact the developers if it does. E: Cannot open input script %s Self-explanatory. E: Unbalanced quotes in input line No matching end double quote was found following a leading double quote. E: Input line quote not followed by whitespace An end quote must be followed by whitespace. E: Invalid variable name Variable name used in an input script line is invalid. E: Invalid immediate variable Syntax of immediate value is incorrect. E: Substitution for illegal variable Input script line contained a variable that could not be substituted for. 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 use include command within an if command Self-explanatory. E: Cannot open logfile %s The LAMMPS log file specified in the input script cannot be opened. Check that the path and name are correct. E: Cannot open print file %s Self-explanatory. W: Shell command '%s' failed with error '%s' Self-explanatory. W: Shell command returned with non-zero status This may indicate the shell command did not operate as expected. E: Angle_coeff command before simulation box is defined The angle_coeff command cannot be used before a read_data, read_restart, or create_box command. E: Angle_coeff command before angle_style is defined Coefficients cannot be set in the data file or via the angle_coeff command until an angle_style has been assigned. E: Angle_coeff command when no angles allowed The chosen atom style does not allow for angles to be defined. E: Angle_style command when no angles allowed The chosen atom style does not allow for angles to be defined. E: Atom_style command after simulation box is defined The atom_style command cannot be used after a read_data, read_restart, or create_box command. E: Bond_coeff command before simulation box is defined The bond_coeff command cannot be used before a read_data, read_restart, or create_box command. E: Bond_coeff command before bond_style is defined Coefficients cannot be set in the data file or via the bond_coeff command until an bond_style has been assigned. E: Bond_coeff command when no bonds allowed The chosen atom style does not allow for bonds to be defined. E: Bond_style command when no bonds allowed The chosen atom style does not allow for bonds to be defined. E: Boundary command after simulation box is defined The boundary command cannot be used after a read_data, read_restart, or create_box command. E: Box command after simulation box is defined The box command cannot be used after a read_data, read_restart, or create_box command. E: Dihedral_coeff command before simulation box is defined The dihedral_coeff command cannot be used before a read_data, read_restart, or create_box command. E: Dihedral_coeff command before dihedral_style is defined Coefficients cannot be set in the data file or via the dihedral_coeff command until an dihedral_style has been assigned. E: Dihedral_coeff command when no dihedrals allowed The chosen atom style does not allow for dihedrals to be defined. E: Dihedral_style command when no dihedrals allowed The chosen atom style does not allow for dihedrals to be defined. E: Dimension command after simulation box is defined The dimension command cannot be used after a read_data, read_restart, or create_box command. E: Improper_coeff command before simulation box is defined The improper_coeff command cannot be used before a read_data, read_restart, or create_box command. E: Improper_coeff command before improper_style is defined Coefficients cannot be set in the data file or via the improper_coeff command until an improper_style has been assigned. E: Improper_coeff command when no impropers allowed The chosen atom style does not allow for impropers to be defined. E: Improper_style command when no impropers allowed The chosen atom style does not allow for impropers to be defined. E: KSpace style has not yet been set Cannot use kspace_modify command until a kspace style is set. E: Mass command before simulation box is defined The mass command cannot be used before a read_data, read_restart, or create_box command. E: Min_style command before simulation box is defined The min_style command cannot be used before a read_data, read_restart, or create_box command. E: Newton bond change after simulation box is defined The newton command cannot be used to change the newton bond value after a read_data, read_restart, or create_box command. E: Package command after simulation box is defined The package command cannot be used afer a read_data, read_restart, or create_box command. E: Package cuda command without USER-CUDA package enabled The USER-CUDA package must be installed via "make yes-user-cuda" before LAMMPS is built, and the "-c on" must be used to enable the package. E: Package gpu command without GPU package installed The GPU package must be installed via "make yes-gpu" before LAMMPS is built. E: Package kokkos command without KOKKOS package enabled The KOKKOS package must be installed via "make yes-kokkos" before LAMMPS is built, and the "-k on" must be used to enable the package. E: Package omp command without USER-OMP package installed The USER-OMP package must be installed via "make yes-user-omp" before LAMMPS is built. E: Package intel command without USER-INTEL package installed The USER-INTEL package must be installed via "make yes-user-intel" before LAMMPS is built. E: Pair_coeff command before simulation box is defined The pair_coeff command cannot be used before a read_data, read_restart, or create_box command. E: Pair_coeff command before pair_style is defined Self-explanatory. E: Pair_modify command before pair_style is defined Self-explanatory. E: Pair_write command before pair_style is defined Self-explanatory. E: Processors command after simulation box is defined The processors command cannot be used after a read_data, read_restart, or create_box command. E: Run_style command before simulation box is defined The run_style command cannot be used before a read_data, read_restart, or create_box command. E: Units command after simulation box is defined The units command cannot be used after a read_data, read_restart, or create_box command. */ diff --git a/src/thermo.cpp b/src/thermo.cpp index 5ecc161c8..8ee8974e1 100644 --- a/src/thermo.cpp +++ b/src/thermo.cpp @@ -1,2121 +1,2134 @@ /* ---------------------------------------------------------------------- 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. ------------------------------------------------------------------------- */ // lmptype.h must be first b/c this file uses MAXBIGINT and includes mpi.h // due to OpenMPI bug which sets INT64_MAX via its mpi.h // before lmptype.h can set flags to insure it is done correctly #include "lmptype.h" #include <mpi.h> #include <math.h> #include <stdlib.h> #include <string.h> #include "thermo.h" #include "atom.h" #include "update.h" #include "comm.h" #include "domain.h" #include "universe.h" #include "lattice.h" #include "group.h" #include "modify.h" #include "fix.h" #include "compute.h" #include "input.h" #include "variable.h" #include "neighbor.h" #include "force.h" #include "pair.h" #include "bond.h" #include "angle.h" #include "dihedral.h" #include "improper.h" #include "kspace.h" #include "output.h" #include "timer.h" #include "math_const.h" #include "memory.h" #include "error.h" #include "universe.h" #include "math_const.h" using namespace LAMMPS_NS; using namespace MathConst; // customize a new keyword by adding to this list: // step, elapsed, elaplong, dt, time, cpu, tpcpu, spcpu, cpuremain, part, timeremain // atoms, temp, press, pe, ke, etotal, enthalpy // evdwl, ecoul, epair, ebond, eangle, edihed, eimp, emol, elong, etail // vol, density, lx, ly, lz, xlo, xhi, ylo, yhi, zlo, zhi, xy, xz, yz, // xlat, ylat, zlat // bonds, angles, dihedrals, impropers, // pxx, pyy, pzz, pxy, pxz, pyz // fmax, fnorm, nbuild, ndanger, // cella, cellb, cellc, cellalpha, cellbeta, cellgamma // customize a new thermo style by adding a DEFINE to this list // also insure allocation of line string is correct in constructor #define ONE "step temp epair emol etotal press" #define MULTI "etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press" enum{IGNORE,WARN,ERROR}; // same as several files enum{ONELINE,MULTILINE}; enum{INT,FLOAT,BIGINT}; enum{SCALAR,VECTOR,ARRAY}; #define INVOKED_SCALAR 1 #define INVOKED_VECTOR 2 #define INVOKED_ARRAY 4 #define DELTA 8 /* ---------------------------------------------------------------------- */ Thermo::Thermo(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp) { MPI_Comm_rank(world,&me); int n = strlen(arg[0]) + 1; style = new char[n]; strcpy(style,arg[0]); // set thermo_modify defaults modified = 0; normuserflag = 0; lineflag = ONELINE; lostflag = lostbond = ERROR; lostbefore = 0; flushflag = 0; // set style and corresponding lineflag - // custom style builds its own line of keywords + // custom style builds its own line of keywords, including wildcard expansion // customize a new thermo style by adding to if statement // allocate line string used for 3 tasks // concat of custom style args // one-time thermo output of header line // each line of numeric thermo output // 256 = extra for ONE or MULTI string or multi formatting // 64 = max per-arg chars in header or numeric output if (strcmp(style,"one") == 0) { line = new char[256+6*64]; strcpy(line,ONE); } else if (strcmp(style,"multi") == 0) { line = new char[256+12*64]; strcpy(line,MULTI); lineflag = MULTILINE; } else if (strcmp(style,"custom") == 0) { if (narg == 1) error->all(FLERR,"Illegal thermo style custom command"); - line = new char[256+narg*64]; + + // expand args if any have wildcard character "*" + + int expand = 0; + char **earg; + int nvalues = input->expand_args(narg-1,&arg[1],0,earg); + if (earg != &arg[1]) expand = 1; + + line = new char[256+nvalues*64]; line[0] = '\0'; - for (int iarg = 1; iarg < narg; iarg++) { - strcat(line,arg[iarg]); + for (int iarg = 0; iarg < nvalues; iarg++) { + strcat(line,earg[iarg]); strcat(line," "); } line[strlen(line)-1] = '\0'; + // if wildcard expansion occurred, free earg memory from exapnd_args() + + if (expand) { + for (int i = 0; i < nvalues; i++) delete [] earg[i]; + memory->sfree(earg); + } + } else error->all(FLERR,"Illegal thermo style command"); // ptrs, flags, IDs for compute objects thermo may use or create temperature = NULL; pressure = NULL; pe = NULL; index_temp = index_press_scalar = index_press_vector = index_pe = -1; id_temp = (char *) "thermo_temp"; id_press = (char *) "thermo_press"; id_pe = (char *) "thermo_pe"; // count fields in line // allocate per-field memory // process line of keywords nfield_initial = atom->count_words(line); allocate(); parse_fields(line); // format strings char *bigint_format = (char *) BIGINT_FORMAT; char *fformat_multi = (char *) "---------------- Step %%8%s ----- " "CPU = %%11.4f (sec) ----------------"; sprintf(format_multi,fformat_multi,&bigint_format[1]); format_float_one_def = (char *) "%12.8g"; format_float_multi_def = (char *) "%14.4f"; format_int_one_def = (char *) "%8d"; format_int_multi_def = (char *) "%14d"; sprintf(format_bigint_one_def,"%%8%s",&bigint_format[1]); sprintf(format_bigint_multi_def,"%%14%s",&bigint_format[1]); format_float_user = NULL; format_int_user = NULL; format_bigint_user = NULL; } /* ---------------------------------------------------------------------- */ Thermo::~Thermo() { delete [] style; delete [] line; deallocate(); // format strings delete [] format_float_user; delete [] format_int_user; delete [] format_bigint_user; } /* ---------------------------------------------------------------------- */ void Thermo::init() { int i,n; // set normvalue to default setting unless user has specified it if (normuserflag) normvalue = normuser; else if (strcmp(update->unit_style,"lj") == 0) normvalue = 1; else normvalue = 0; // add Volume field if volume changes and not style = custom // this check must come after domain init, so box_change is set nfield = nfield_initial; if (domain->box_change && strcmp(style,"custom") != 0) addfield("Volume",&Thermo::compute_vol,FLOAT); // set format string for each field // include keyword if lineflag = MULTILINE // add '/n' every 3 values if lineflag = MULTILINE // add trailing '/n' to last value char *ptr; for (i = 0; i < nfield; i++) { format[i][0] = '\0'; if (lineflag == MULTILINE && i % 3 == 0) strcat(format[i],"\n"); if (format_user[i]) ptr = format_user[i]; else if (vtype[i] == FLOAT) { if (format_float_user) ptr = format_float_user; else if (lineflag == ONELINE) ptr = format_float_one_def; else if (lineflag == MULTILINE) ptr = format_float_multi_def; } else if (vtype[i] == INT) { if (format_int_user) ptr = format_int_user; else if (lineflag == ONELINE) ptr = format_int_one_def; else if (lineflag == MULTILINE) ptr = format_int_multi_def; } else if (vtype[i] == BIGINT) { if (format_bigint_user) ptr = format_bigint_user; else if (lineflag == ONELINE) ptr = format_bigint_one_def; else if (lineflag == MULTILINE) ptr = format_bigint_multi_def; } n = strlen(format[i]); if (lineflag == ONELINE) sprintf(&format[i][n],"%s ",ptr); else sprintf(&format[i][n],"%-8s = %s ",keyword[i],ptr); if (i == nfield-1) strcat(format[i],"\n"); } // find current ptr for each Compute ID int icompute; for (i = 0; i < ncompute; i++) { icompute = modify->find_compute(id_compute[i]); if (icompute < 0) error->all(FLERR,"Could not find thermo compute ID"); computes[i] = modify->compute[icompute]; } // find current ptr for each Fix ID // check that fix frequency is acceptable with thermo output frequency int ifix; for (i = 0; i < nfix; i++) { ifix = modify->find_fix(id_fix[i]); if (ifix < 0) error->all(FLERR,"Could not find thermo fix ID"); fixes[i] = modify->fix[ifix]; if (output->thermo_every % fixes[i]->global_freq) error->all(FLERR,"Thermo and fix not computed at compatible times"); } // find current ptr for each Variable ID int ivariable; for (i = 0; i < nvariable; i++) { ivariable = input->variable->find(id_variable[i]); if (ivariable < 0) error->all(FLERR,"Could not find thermo variable name"); variables[i] = ivariable; } // set ptrs to keyword-specific Compute objects if (index_temp >= 0) temperature = computes[index_temp]; if (index_press_scalar >= 0) pressure = computes[index_press_scalar]; if (index_press_vector >= 0) pressure = computes[index_press_vector]; if (index_pe >= 0) pe = computes[index_pe]; } /* ---------------------------------------------------------------------- */ void Thermo::header() { if (lineflag == MULTILINE) return; int loc = 0; for (int i = 0; i < nfield; i++) loc += sprintf(&line[loc],"%s ",keyword[i]); sprintf(&line[loc],"\n"); if (me == 0) { if (screen) fprintf(screen,"%s",line); if (logfile) fprintf(logfile,"%s",line); } } /* ---------------------------------------------------------------------- */ void Thermo::compute(int flag) { int i; firststep = flag; bigint ntimestep = update->ntimestep; // check for lost atoms // turn off normflag if natoms = 0 to avoid divide by 0 natoms = atom->natoms = lost_check(); if (natoms == 0) normflag = 0; else normflag = normvalue; // invoke Compute methods needed for thermo keywords for (i = 0; i < ncompute; i++) if (compute_which[i] == SCALAR) { if (!(computes[i]->invoked_flag & INVOKED_SCALAR)) { computes[i]->compute_scalar(); computes[i]->invoked_flag |= INVOKED_SCALAR; } } else if (compute_which[i] == VECTOR) { if (!(computes[i]->invoked_flag & INVOKED_VECTOR)) { computes[i]->compute_vector(); computes[i]->invoked_flag |= INVOKED_VECTOR; } } else if (compute_which[i] == ARRAY) { if (!(computes[i]->invoked_flag & INVOKED_ARRAY)) { computes[i]->compute_array(); computes[i]->invoked_flag |= INVOKED_ARRAY; } } // if lineflag = MULTILINE, prepend step/cpu header line int loc = 0; if (lineflag == MULTILINE) { double cpu; if (flag) cpu = timer->elapsed(Timer::TOTAL); else cpu = 0.0; loc = sprintf(&line[loc],format_multi,ntimestep,cpu); } // add each thermo value to line with its specific format for (ifield = 0; ifield < nfield; ifield++) { (this->*vfunc[ifield])(); if (vtype[ifield] == FLOAT) loc += sprintf(&line[loc],format[ifield],dvalue); else if (vtype[ifield] == INT) loc += sprintf(&line[loc],format[ifield],ivalue); else if (vtype[ifield] == BIGINT) { loc += sprintf(&line[loc],format[ifield],bivalue); } } // print line to screen and logfile if (me == 0) { if (screen) fprintf(screen,"%s",line); if (logfile) { fprintf(logfile,"%s",line); if (flushflag) fflush(logfile); } } } /* ---------------------------------------------------------------------- check for lost atoms, return current number of atoms ------------------------------------------------------------------------- */ bigint Thermo::lost_check() { // ntotal = current # of atoms bigint ntotal; bigint nblocal = atom->nlocal; MPI_Allreduce(&nblocal,&ntotal,1,MPI_LMP_BIGINT,MPI_SUM,world); if (ntotal < 0) error->all(FLERR,"Too many total atoms"); if (ntotal == atom->natoms) return ntotal; // if not checking or already warned, just return if (lostflag == IGNORE) return ntotal; if (lostflag == WARN && lostbefore == 1) { return ntotal; } // error message if (lostflag == ERROR) { char str[64]; sprintf(str, "Lost atoms: original " BIGINT_FORMAT " current " BIGINT_FORMAT, atom->natoms,ntotal); error->all(FLERR,str); } // warning message char str[64]; sprintf(str, "Lost atoms: original " BIGINT_FORMAT " current " BIGINT_FORMAT, atom->natoms,ntotal); if (me == 0) error->warning(FLERR,str,0); // reset total atom count atom->natoms = ntotal; lostbefore = 1; return ntotal; } /* ---------------------------------------------------------------------- modify thermo parameters ------------------------------------------------------------------------- */ void Thermo::modify_params(int narg, char **arg) { if (narg == 0) error->all(FLERR,"Illegal thermo_modify command"); modified = 1; int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"temp") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); if (index_temp < 0) error->all(FLERR,"Thermo style does not use temp"); delete [] id_compute[index_temp]; int n = strlen(arg[iarg+1]) + 1; id_compute[index_temp] = new char[n]; strcpy(id_compute[index_temp],arg[iarg+1]); int icompute = modify->find_compute(arg[iarg+1]); if (icompute < 0) error->all(FLERR,"Could not find thermo_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) error->all(FLERR,"Thermo_modify temperature ID does not " "compute temperature"); if (temperature->igroup != 0 && comm->me == 0) error->warning(FLERR, "Temperature for thermo pressure is not for group all"); // reset id_temp of pressure to new temperature ID // either pressure currently being used by thermo or "thermo_press" if (index_press_scalar >= 0) { icompute = modify->find_compute(id_compute[index_press_scalar]); if (icompute < 0) error->all(FLERR, "Pressure ID for thermo does not exist"); } else if (index_press_vector >= 0) { icompute = modify->find_compute(id_compute[index_press_vector]); if (icompute < 0) error->all(FLERR, "Pressure ID for thermo does not exist"); } else icompute = modify->find_compute((char *) "thermo_press"); modify->compute[icompute]->reset_extra_compute_fix(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"press") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); if (index_press_scalar < 0 && index_press_vector < 0) error->all(FLERR,"Thermo style does not use press"); if (index_press_scalar >= 0) { delete [] id_compute[index_press_scalar]; int n = strlen(arg[iarg+1]) + 1; id_compute[index_press_scalar] = new char[n]; strcpy(id_compute[index_press_scalar],arg[iarg+1]); } if (index_press_vector >= 0) { delete [] id_compute[index_press_vector]; int n = strlen(arg[iarg+1]) + 1; id_compute[index_press_vector] = new char[n]; strcpy(id_compute[index_press_vector],arg[iarg+1]); } int icompute = modify->find_compute(arg[iarg+1]); if (icompute < 0) error->all(FLERR, "Could not find thermo_modify pressure ID"); pressure = modify->compute[icompute]; if (pressure->pressflag == 0) error->all(FLERR,"Thermo_modify pressure ID does not compute pressure"); iarg += 2; } else if (strcmp(arg[iarg],"lost") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); if (strcmp(arg[iarg+1],"ignore") == 0) lostflag = IGNORE; else if (strcmp(arg[iarg+1],"warn") == 0) lostflag = WARN; else if (strcmp(arg[iarg+1],"error") == 0) lostflag = ERROR; else error->all(FLERR,"Illegal thermo_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"lost/bond") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); if (strcmp(arg[iarg+1],"ignore") == 0) lostbond = IGNORE; else if (strcmp(arg[iarg+1],"warn") == 0) lostbond = WARN; else if (strcmp(arg[iarg+1],"error") == 0) lostbond = ERROR; else error->all(FLERR,"Illegal thermo_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"norm") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); normuserflag = 1; if (strcmp(arg[iarg+1],"no") == 0) normuser = 0; else if (strcmp(arg[iarg+1],"yes") == 0) normuser = 1; else error->all(FLERR,"Illegal thermo_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"flush") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); if (strcmp(arg[iarg+1],"no") == 0) flushflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) flushflag = 1; else error->all(FLERR,"Illegal thermo_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"line") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal thermo_modify command"); if (strcmp(arg[iarg+1],"one") == 0) lineflag = ONELINE; else if (strcmp(arg[iarg+1],"multi") == 0) lineflag = MULTILINE; else error->all(FLERR,"Illegal thermo_modify command"); iarg += 2; } else if (strcmp(arg[iarg],"format") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal thermo_modify command"); if (strcmp(arg[iarg+1],"int") == 0) { if (format_int_user) delete [] format_int_user; int n = strlen(arg[iarg+2]) + 1; format_int_user = new char[n]; strcpy(format_int_user,arg[iarg+2]); if (format_bigint_user) delete [] format_bigint_user; n = strlen(format_int_user) + 3; format_bigint_user = new char[n]; char *ptr = strchr(format_int_user,'d'); if (ptr == NULL) error->all(FLERR, "Thermo_modify int format does not contain d character"); *ptr = '\0'; sprintf(format_bigint_user,"%s%s%s",format_int_user, BIGINT_FORMAT,ptr+1); *ptr = 'd'; } else if (strcmp(arg[iarg+1],"float") == 0) { if (format_float_user) delete [] format_float_user; int n = strlen(arg[iarg+2]) + 1; format_float_user = new char[n]; strcpy(format_float_user,arg[iarg+2]); } else { int i = force->inumeric(FLERR,arg[iarg+1]) - 1; if (i < 0 || i >= nfield_initial) error->all(FLERR,"Illegal thermo_modify command"); if (format_user[i]) delete [] format_user[i]; int n = strlen(arg[iarg+2]) + 1; format_user[i] = new char[n]; strcpy(format_user[i],arg[iarg+2]); } iarg += 3; } else error->all(FLERR,"Illegal thermo_modify command"); } } /* ---------------------------------------------------------------------- allocate all per-field memory ------------------------------------------------------------------------- */ void Thermo::allocate() { // n = specified fields + Volume field (added at run time) int n = nfield_initial + 1; keyword = new char*[n]; - for (int i = 0; i < n; i++) keyword[i] = new char[32]; + for (int i = 0; i < n; i++) keyword[i] = NULL; vfunc = new FnPtr[n]; vtype = new int[n]; format = new char*[n]; for (int i = 0; i < n; i++) format[i] = new char[32]; format_user = new char*[n]; for (int i = 0; i < n; i++) format_user[i] = NULL; field2index = new int[n]; argindex1 = new int[n]; argindex2 = new int[n]; // factor of 3 is max number of computes a single field can add ncompute = 0; id_compute = new char*[3*n]; compute_which = new int[3*n]; computes = new Compute*[3*n]; nfix = 0; id_fix = new char*[n]; fixes = new Fix*[n]; nvariable = 0; id_variable = new char*[n]; variables = new int[n]; } /* ---------------------------------------------------------------------- deallocate all per-field memory ------------------------------------------------------------------------- */ void Thermo::deallocate() { int n = nfield_initial + 1; for (int i = 0; i < n; i++) delete [] keyword[i]; delete [] keyword; delete [] vfunc; delete [] vtype; for (int i = 0; i < n; i++) delete [] format[i]; delete [] format; for (int i = 0; i < n; i++) delete [] format_user[i]; delete [] format_user; delete [] field2index; delete [] argindex1; delete [] argindex2; for (int i = 0; i < ncompute; i++) delete [] id_compute[i]; delete [] id_compute; delete [] compute_which; delete [] computes; for (int i = 0; i < nfix; i++) delete [] id_fix[i]; delete [] id_fix; delete [] fixes; for (int i = 0; i < nvariable; i++) delete [] id_variable[i]; delete [] id_variable; delete [] variables; } /* ---------------------------------------------------------------------- parse list of thermo keywords from str set compute flags (temp, press, pe, etc) ------------------------------------------------------------------------- */ void Thermo::parse_fields(char *str) { nfield = 0; // customize a new keyword by adding to if statement char *word = strtok(str," \0"); while (word) { if (strcmp(word,"step") == 0) { addfield("Step",&Thermo::compute_step,BIGINT); } else if (strcmp(word,"elapsed") == 0) { addfield("Elapsed",&Thermo::compute_elapsed,BIGINT); } else if (strcmp(word,"elaplong") == 0) { addfield("Elaplong",&Thermo::compute_elapsed_long,BIGINT); } else if (strcmp(word,"dt") == 0) { addfield("Dt",&Thermo::compute_dt,FLOAT); } else if (strcmp(word,"time") == 0) { addfield("Time",&Thermo::compute_time,FLOAT); } else if (strcmp(word,"cpu") == 0) { addfield("CPU",&Thermo::compute_cpu,FLOAT); } else if (strcmp(word,"tpcpu") == 0) { addfield("T/CPU",&Thermo::compute_tpcpu,FLOAT); } else if (strcmp(word,"spcpu") == 0) { addfield("S/CPU",&Thermo::compute_spcpu,FLOAT); } else if (strcmp(word,"cpuremain") == 0) { addfield("CPULeft",&Thermo::compute_cpuremain,FLOAT); } else if (strcmp(word,"part") == 0) { addfield("Part",&Thermo::compute_part,INT); } else if (strcmp(word,"timeremain") == 0) { addfield("TimeoutLeft",&Thermo::compute_timeremain,FLOAT); } else if (strcmp(word,"atoms") == 0) { addfield("Atoms",&Thermo::compute_atoms,BIGINT); } else if (strcmp(word,"temp") == 0) { addfield("Temp",&Thermo::compute_temp,FLOAT); index_temp = add_compute(id_temp,SCALAR); } else if (strcmp(word,"press") == 0) { addfield("Press",&Thermo::compute_press,FLOAT); index_press_scalar = add_compute(id_press,SCALAR); } else if (strcmp(word,"pe") == 0) { addfield("PotEng",&Thermo::compute_pe,FLOAT); index_pe = add_compute(id_pe,SCALAR); } else if (strcmp(word,"ke") == 0) { addfield("KinEng",&Thermo::compute_ke,FLOAT); index_temp = add_compute(id_temp,SCALAR); } else if (strcmp(word,"etotal") == 0) { addfield("TotEng",&Thermo::compute_etotal,FLOAT); index_temp = add_compute(id_temp,SCALAR); index_pe = add_compute(id_pe,SCALAR); } else if (strcmp(word,"enthalpy") == 0) { addfield("Enthalpy",&Thermo::compute_enthalpy,FLOAT); index_temp = add_compute(id_temp,SCALAR); index_press_scalar = add_compute(id_press,SCALAR); index_pe = add_compute(id_pe,SCALAR); } else if (strcmp(word,"evdwl") == 0) { addfield("E_vdwl",&Thermo::compute_evdwl,FLOAT); index_pe = add_compute(id_pe,SCALAR); } else if (strcmp(word,"ecoul") == 0) { addfield("E_coul",&Thermo::compute_ecoul,FLOAT); index_pe = add_compute(id_pe,SCALAR); } else if (strcmp(word,"epair") == 0) { addfield("E_pair",&Thermo::compute_epair,FLOAT); index_pe = add_compute(id_pe,SCALAR); } else if (strcmp(word,"ebond") == 0) { addfield("E_bond",&Thermo::compute_ebond,FLOAT); index_pe = add_compute(id_pe,SCALAR); } else if (strcmp(word,"eangle") == 0) { addfield("E_angle",&Thermo::compute_eangle,FLOAT); index_pe = add_compute(id_pe,SCALAR); } else if (strcmp(word,"edihed") == 0) { addfield("E_dihed",&Thermo::compute_edihed,FLOAT); index_pe = add_compute(id_pe,SCALAR); } else if (strcmp(word,"eimp") == 0) { addfield("E_impro",&Thermo::compute_eimp,FLOAT); index_pe = add_compute(id_pe,SCALAR); } else if (strcmp(word,"emol") == 0) { addfield("E_mol",&Thermo::compute_emol,FLOAT); index_pe = add_compute(id_pe,SCALAR); } else if (strcmp(word,"elong") == 0) { addfield("E_long",&Thermo::compute_elong,FLOAT); index_pe = add_compute(id_pe,SCALAR); } else if (strcmp(word,"etail") == 0) { addfield("E_tail",&Thermo::compute_etail,FLOAT); index_pe = add_compute(id_pe,SCALAR); } else if (strcmp(word,"vol") == 0) { addfield("Volume",&Thermo::compute_vol,FLOAT); } else if (strcmp(word,"density") == 0) { addfield("Density",&Thermo::compute_density,FLOAT); } else if (strcmp(word,"lx") == 0) { addfield("Lx",&Thermo::compute_lx,FLOAT); } else if (strcmp(word,"ly") == 0) { addfield("Ly",&Thermo::compute_ly,FLOAT); } else if (strcmp(word,"lz") == 0) { addfield("Lz",&Thermo::compute_lz,FLOAT); } else if (strcmp(word,"xlo") == 0) { addfield("Xlo",&Thermo::compute_xlo,FLOAT); } else if (strcmp(word,"xhi") == 0) { addfield("Xhi",&Thermo::compute_xhi,FLOAT); } else if (strcmp(word,"ylo") == 0) { addfield("Ylo",&Thermo::compute_ylo,FLOAT); } else if (strcmp(word,"yhi") == 0) { addfield("Yhi",&Thermo::compute_yhi,FLOAT); } else if (strcmp(word,"zlo") == 0) { addfield("Zlo",&Thermo::compute_zlo,FLOAT); } else if (strcmp(word,"zhi") == 0) { addfield("Zhi",&Thermo::compute_zhi,FLOAT); } else if (strcmp(word,"xy") == 0) { addfield("Xy",&Thermo::compute_xy,FLOAT); } else if (strcmp(word,"xz") == 0) { addfield("Xz",&Thermo::compute_xz,FLOAT); } else if (strcmp(word,"yz") == 0) { addfield("Yz",&Thermo::compute_yz,FLOAT); } else if (strcmp(word,"xlat") == 0) { addfield("Xlat",&Thermo::compute_xlat,FLOAT); } else if (strcmp(word,"ylat") == 0) { addfield("Ylat",&Thermo::compute_ylat,FLOAT); } else if (strcmp(word,"zlat") == 0) { addfield("Zlat",&Thermo::compute_zlat,FLOAT); } else if (strcmp(word,"bonds") == 0) { addfield("Bonds",&Thermo::compute_bonds,BIGINT); } else if (strcmp(word,"angles") == 0) { addfield("Angles",&Thermo::compute_angles,BIGINT); } else if (strcmp(word,"dihedrals") == 0) { addfield("Diheds",&Thermo::compute_dihedrals,BIGINT); } else if (strcmp(word,"impropers") == 0) { addfield("Impros",&Thermo::compute_impropers,BIGINT); } else if (strcmp(word,"pxx") == 0) { addfield("Pxx",&Thermo::compute_pxx,FLOAT); index_press_vector = add_compute(id_press,VECTOR); } else if (strcmp(word,"pyy") == 0) { addfield("Pyy",&Thermo::compute_pyy,FLOAT); index_press_vector = add_compute(id_press,VECTOR); } else if (strcmp(word,"pzz") == 0) { addfield("Pzz",&Thermo::compute_pzz,FLOAT); index_press_vector = add_compute(id_press,VECTOR); } else if (strcmp(word,"pxy") == 0) { addfield("Pxy",&Thermo::compute_pxy,FLOAT); index_press_vector = add_compute(id_press,VECTOR); } else if (strcmp(word,"pxz") == 0) { addfield("Pxz",&Thermo::compute_pxz,FLOAT); index_press_vector = add_compute(id_press,VECTOR); } else if (strcmp(word,"pyz") == 0) { addfield("Pyz",&Thermo::compute_pyz,FLOAT); index_press_vector = add_compute(id_press,VECTOR); } else if (strcmp(word,"fmax") == 0) { addfield("Fmax",&Thermo::compute_fmax,FLOAT); } else if (strcmp(word,"fnorm") == 0) { addfield("Fnorm",&Thermo::compute_fnorm,FLOAT); } else if (strcmp(word,"nbuild") == 0) { addfield("Nbuild",&Thermo::compute_nbuild,BIGINT); } else if (strcmp(word,"ndanger") == 0) { addfield("Ndanger",&Thermo::compute_ndanger,BIGINT); } else if (strcmp(word,"cella") == 0) { addfield("Cella",&Thermo::compute_cella,FLOAT); } else if (strcmp(word,"cellb") == 0) { addfield("Cellb",&Thermo::compute_cellb,FLOAT); } else if (strcmp(word,"cellc") == 0) { addfield("Cellc",&Thermo::compute_cellc,FLOAT); } else if (strcmp(word,"cellalpha") == 0) { addfield("CellAlpha",&Thermo::compute_cellalpha,FLOAT); } else if (strcmp(word,"cellbeta") == 0) { addfield("CellBeta",&Thermo::compute_cellbeta,FLOAT); } else if (strcmp(word,"cellgamma") == 0) { addfield("CellGamma",&Thermo::compute_cellgamma,FLOAT); // compute value = c_ID, fix value = f_ID, variable value = v_ID // count trailing [] and store int arguments - // copy = at most 8 chars of ID to pass to addfield } else if ((strncmp(word,"c_",2) == 0) || (strncmp(word,"f_",2) == 0) || (strncmp(word,"v_",2) == 0)) { int n = strlen(word); char *id = new char[n]; strcpy(id,&word[2]); - char copy[9]; - strncpy(copy,id,8); - copy[8] = '\0'; // parse zero or one or two trailing brackets from ID // argindex1,argindex2 = int inside each bracket pair, 0 if no bracket char *ptr = strchr(id,'['); if (ptr == NULL) argindex1[nfield] = argindex2[nfield] = 0; else { *ptr = '\0'; argindex1[nfield] = (int) input->variable->int_between_brackets(ptr,0); ptr++; if (*ptr == '[') { argindex2[nfield] = (int) input->variable->int_between_brackets(ptr,0); ptr++; } else argindex2[nfield] = 0; } if (word[0] == 'c') { n = modify->find_compute(id); if (n < 0) error->all(FLERR,"Could not find thermo custom compute ID"); if (argindex1[nfield] == 0 && modify->compute[n]->scalar_flag == 0) error->all(FLERR,"Thermo compute does not compute scalar"); if (argindex1[nfield] > 0 && argindex2[nfield] == 0) { if (modify->compute[n]->vector_flag == 0) error->all(FLERR,"Thermo compute does not compute vector"); if (argindex1[nfield] > modify->compute[n]->size_vector && modify->compute[n]->size_vector_variable == 0) error->all(FLERR,"Thermo compute vector is accessed out-of-range"); } if (argindex1[nfield] > 0 && argindex2[nfield] > 0) { if (modify->compute[n]->array_flag == 0) error->all(FLERR,"Thermo compute does not compute array"); if (argindex1[nfield] > modify->compute[n]->size_array_rows && modify->compute[n]->size_array_rows_variable == 0) error->all(FLERR,"Thermo compute array is accessed out-of-range"); if (argindex2[nfield] > modify->compute[n]->size_array_cols) error->all(FLERR,"Thermo compute array is accessed out-of-range"); } if (argindex1[nfield] == 0) field2index[nfield] = add_compute(id,SCALAR); else if (argindex2[nfield] == 0) field2index[nfield] = add_compute(id,VECTOR); else field2index[nfield] = add_compute(id,ARRAY); - addfield(copy,&Thermo::compute_compute,FLOAT); + addfield(word,&Thermo::compute_compute,FLOAT); } else if (word[0] == 'f') { n = modify->find_fix(id); if (n < 0) error->all(FLERR,"Could not find thermo custom fix ID"); if (argindex1[nfield] == 0 && modify->fix[n]->scalar_flag == 0) error->all(FLERR,"Thermo fix does not compute scalar"); if (argindex1[nfield] > 0 && argindex2[nfield] == 0) { if (modify->fix[n]->vector_flag == 0) error->all(FLERR,"Thermo fix does not compute vector"); if (argindex1[nfield] > modify->fix[n]->size_vector && modify->fix[n]->size_vector_variable == 0) error->all(FLERR,"Thermo fix vector is accessed out-of-range"); } if (argindex1[nfield] > 0 && argindex2[nfield] > 0) { if (modify->fix[n]->array_flag == 0) error->all(FLERR,"Thermo fix does not compute array"); if (argindex1[nfield] > modify->fix[n]->size_array_rows && modify->fix[n]->size_array_rows_variable == 0) error->all(FLERR,"Thermo fix array is accessed out-of-range"); if (argindex2[nfield] > modify->fix[n]->size_array_cols) error->all(FLERR,"Thermo fix array is accessed out-of-range"); } field2index[nfield] = add_fix(id); - addfield(copy,&Thermo::compute_fix,FLOAT); + addfield(word,&Thermo::compute_fix,FLOAT); } else if (word[0] == 'v') { n = input->variable->find(id); if (n < 0) error->all(FLERR,"Could not find thermo custom variable name"); if (argindex1[nfield] == 0 && input->variable->equalstyle(n) == 0) error->all(FLERR, "Thermo custom variable is not equal-style variable"); if (argindex1[nfield] && input->variable->vectorstyle(n) == 0) error->all(FLERR, "Thermo custom variable is not vector-style variable"); if (argindex2[nfield]) error->all(FLERR,"Thermo custom variable cannot have two indices"); field2index[nfield] = add_variable(id); - addfield(copy,&Thermo::compute_variable,FLOAT); + addfield(word,&Thermo::compute_variable,FLOAT); } delete [] id; } else error->all(FLERR,"Unknown keyword in thermo_style custom command"); word = strtok(NULL," \0"); } } /* ---------------------------------------------------------------------- add field to list of quantities to print ------------------------------------------------------------------------- */ void Thermo::addfield(const char *key, FnPtr func, int typeflag) { + int n = strlen(key) + 1; + keyword[nfield] = new char[n]; strcpy(keyword[nfield],key); vfunc[nfield] = func; vtype[nfield] = typeflag; nfield++; } /* ---------------------------------------------------------------------- add compute ID to list of Compute objects to call return location of where this Compute is in list if already in list with same which, do not add, just return index ------------------------------------------------------------------------- */ int Thermo::add_compute(const char *id, int which) { int icompute; for (icompute = 0; icompute < ncompute; icompute++) if ((strcmp(id,id_compute[icompute]) == 0) && which == compute_which[icompute]) break; if (icompute < ncompute) return icompute; int n = strlen(id) + 1; id_compute[ncompute] = new char[n]; strcpy(id_compute[ncompute],id); compute_which[ncompute] = which; ncompute++; return ncompute-1; } /* ---------------------------------------------------------------------- add fix ID to list of Fix objects to call ------------------------------------------------------------------------- */ int Thermo::add_fix(const char *id) { int n = strlen(id) + 1; id_fix[nfix] = new char[n]; strcpy(id_fix[nfix],id); nfix++; return nfix-1; } /* ---------------------------------------------------------------------- add variable ID to list of Variables to evaluate ------------------------------------------------------------------------- */ int Thermo::add_variable(const char *id) { int n = strlen(id) + 1; id_variable[nvariable] = new char[n]; strcpy(id_variable[nvariable],id); nvariable++; return nvariable-1; } /* ---------------------------------------------------------------------- compute a single thermodynamic value, word is any keyword in custom list called when a variable is evaluated by Variable class return value as double in answer return 0 if str is recoginzed keyword, 1 if unrecognized customize a new keyword by adding to if statement ------------------------------------------------------------------------- */ int Thermo::evaluate_keyword(char *word, double *answer) { // turn off normflag if natoms = 0 to avoid divide by 0 // normflag must be set for lo-level thermo routines that may be invoked natoms = atom->natoms; if (natoms == 0) normflag = 0; else normflag = normvalue; // invoke a lo-level thermo routine to compute the variable value // if keyword requires a compute, error if thermo doesn't use the compute // if inbetween runs and needed compute is not current, error // if in middle of run and needed compute is not current, invoke it // for keywords that use energy (evdwl, ebond, etc): // check if energy was tallied on this timestep and set pe->invoked_flag // this will trigger next timestep for energy tallying via addstep() // this means keywords that use pe (pe, etotal, enthalpy) // need to always invoke it even if invoked_flag is set, // because evdwl/etc may have set invoked_flag w/out // actually invoking pe->compute_scalar() if (strcmp(word,"step") == 0) { compute_step(); dvalue = bivalue; } else if (strcmp(word,"elapsed") == 0) { if (update->whichflag == 0) error->all(FLERR, "This variable thermo keyword cannot be used between runs"); compute_elapsed(); dvalue = bivalue; } else if (strcmp(word,"elaplong") == 0) { if (update->whichflag == 0) error->all(FLERR, "This variable thermo keyword cannot be used between runs"); compute_elapsed_long(); dvalue = bivalue; } else if (strcmp(word,"dt") == 0) { compute_dt(); } else if (strcmp(word,"time") == 0) { compute_time(); } else if (strcmp(word,"cpu") == 0) { if (update->whichflag == 0) error->all(FLERR, "This variable thermo keyword cannot be used between runs"); compute_cpu(); } else if (strcmp(word,"tpcpu") == 0) { if (update->whichflag == 0) error->all(FLERR, "This variable thermo keyword cannot be used between runs"); compute_tpcpu(); } else if (strcmp(word,"spcpu") == 0) { if (update->whichflag == 0) error->all(FLERR, "This variable thermo keyword cannot be used between runs"); compute_spcpu(); } else if (strcmp(word,"cpuremain") == 0) { if (update->whichflag == 0) error->all(FLERR, "This variable thermo keyword cannot be used between runs"); compute_cpuremain(); } else if (strcmp(word,"part") == 0) { compute_part(); dvalue = ivalue; } else if (strcmp(word,"timeremain") == 0) { compute_timeremain(); } else if (strcmp(word,"atoms") == 0) { compute_atoms(); dvalue = bivalue; } else if (strcmp(word,"temp") == 0) { if (!temperature) error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init temp"); if (update->whichflag == 0) { if (temperature->invoked_scalar != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(temperature->invoked_flag & INVOKED_SCALAR)) { temperature->compute_scalar(); temperature->invoked_flag |= INVOKED_SCALAR; } compute_temp(); } else if (strcmp(word,"press") == 0) { if (!pressure) error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_scalar != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_SCALAR)) { pressure->compute_scalar(); pressure->invoked_flag |= INVOKED_SCALAR; } compute_press(); } else if (strcmp(word,"pe") == 0) { if (!pe) error->all(FLERR, "Thermo keyword in variable requires thermo to use/init pe"); if (update->whichflag == 0) { if (pe->invoked_scalar != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else { pe->compute_scalar(); pe->invoked_flag |= INVOKED_SCALAR; } compute_pe(); } else if (strcmp(word,"ke") == 0) { if (!temperature) error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init temp"); if (update->whichflag == 0) { if (temperature->invoked_scalar != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(temperature->invoked_flag & INVOKED_SCALAR)) { temperature->compute_scalar(); temperature->invoked_flag |= INVOKED_SCALAR; } compute_ke(); } else if (strcmp(word,"etotal") == 0) { if (!pe) error->all(FLERR, "Thermo keyword in variable requires thermo to use/init pe"); if (update->whichflag == 0) { if (pe->invoked_scalar != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else { pe->compute_scalar(); pe->invoked_flag |= INVOKED_SCALAR; } if (!temperature) error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init temp"); if (update->whichflag == 0) { if (temperature->invoked_scalar != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(temperature->invoked_flag & INVOKED_SCALAR)) { temperature->compute_scalar(); temperature->invoked_flag |= INVOKED_SCALAR; } compute_etotal(); } else if (strcmp(word,"enthalpy") == 0) { if (!pe) error->all(FLERR, "Thermo keyword in variable requires thermo to use/init pe"); if (update->whichflag == 0) { if (pe->invoked_scalar != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else { pe->compute_scalar(); pe->invoked_flag |= INVOKED_SCALAR; } if (!temperature) error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init temp"); if (update->whichflag == 0) { if (temperature->invoked_scalar != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(temperature->invoked_flag & INVOKED_SCALAR)) { temperature->compute_scalar(); temperature->invoked_flag |= INVOKED_SCALAR; } if (!pressure) error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_scalar != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_SCALAR)) { pressure->compute_scalar(); pressure->invoked_flag |= INVOKED_SCALAR; } compute_enthalpy(); } else if (strcmp(word,"evdwl") == 0) { if (update->eflag_global != update->ntimestep) error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) error->all(FLERR, "Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_evdwl(); } else if (strcmp(word,"ecoul") == 0) { if (update->eflag_global != update->ntimestep) error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) error->all(FLERR, "Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_ecoul(); } else if (strcmp(word,"epair") == 0) { if (update->eflag_global != update->ntimestep) error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) error->all(FLERR, "Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_epair(); } else if (strcmp(word,"ebond") == 0) { if (update->eflag_global != update->ntimestep) error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) error->all(FLERR, "Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_ebond(); } else if (strcmp(word,"eangle") == 0) { if (update->eflag_global != update->ntimestep) error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) error->all(FLERR, "Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_eangle(); } else if (strcmp(word,"edihed") == 0) { if (update->eflag_global != update->ntimestep) error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) error->all(FLERR, "Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_edihed(); } else if (strcmp(word,"eimp") == 0) { if (update->eflag_global != update->ntimestep) error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) error->all(FLERR, "Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_eimp(); } else if (strcmp(word,"emol") == 0) { if (update->eflag_global != update->ntimestep) error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) error->all(FLERR, "Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_emol(); } else if (strcmp(word,"elong") == 0) { if (update->eflag_global != update->ntimestep) error->all(FLERR,"Energy was not tallied on needed timestep"); if (!pe) error->all(FLERR, "Thermo keyword in variable requires thermo to use/init pe"); pe->invoked_flag |= INVOKED_SCALAR; compute_elong(); } else if (strcmp(word,"etail") == 0) { if (update->eflag_global != update->ntimestep) error->all(FLERR,"Energy was not tallied on needed timestep"); compute_etail(); } else if (strcmp(word,"vol") == 0) compute_vol(); else if (strcmp(word,"density") == 0) compute_density(); else if (strcmp(word,"lx") == 0) compute_lx(); else if (strcmp(word,"ly") == 0) compute_ly(); else if (strcmp(word,"lz") == 0) compute_lz(); else if (strcmp(word,"xlo") == 0) compute_xlo(); else if (strcmp(word,"xhi") == 0) compute_xhi(); else if (strcmp(word,"ylo") == 0) compute_ylo(); else if (strcmp(word,"yhi") == 0) compute_yhi(); else if (strcmp(word,"zlo") == 0) compute_zlo(); else if (strcmp(word,"zhi") == 0) compute_zhi(); else if (strcmp(word,"xy") == 0) compute_xy(); else if (strcmp(word,"xz") == 0) compute_xz(); else if (strcmp(word,"yz") == 0) compute_yz(); else if (strcmp(word,"xlat") == 0) compute_xlat(); else if (strcmp(word,"ylat") == 0) compute_ylat(); else if (strcmp(word,"zlat") == 0) compute_zlat(); else if (strcmp(word,"bonds") == 0) compute_bonds(); else if (strcmp(word,"angles") == 0) compute_angles(); else if (strcmp(word,"dihedrals") == 0) compute_dihedrals(); else if (strcmp(word,"impropers") == 0) compute_impropers(); else if (strcmp(word,"pxx") == 0) { if (!pressure) error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_vector != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_VECTOR)) { pressure->compute_vector(); pressure->invoked_flag |= INVOKED_VECTOR; } compute_pxx(); } else if (strcmp(word,"pyy") == 0) { if (!pressure) error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_vector != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_VECTOR)) { pressure->compute_vector(); pressure->invoked_flag |= INVOKED_VECTOR; } compute_pyy(); } else if (strcmp(word,"pzz") == 0) { if (!pressure) error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_vector != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_VECTOR)) { pressure->compute_vector(); pressure->invoked_flag |= INVOKED_VECTOR; } compute_pzz(); } else if (strcmp(word,"pxy") == 0) { if (!pressure) error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_vector != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_VECTOR)) { pressure->compute_vector(); pressure->invoked_flag |= INVOKED_VECTOR; } compute_pxy(); } else if (strcmp(word,"pxz") == 0) { if (!pressure) error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_vector != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_VECTOR)) { pressure->compute_vector(); pressure->invoked_flag |= INVOKED_VECTOR; } compute_pxz(); } else if (strcmp(word,"pyz") == 0) { if (!pressure) error->all(FLERR,"Thermo keyword in variable requires " "thermo to use/init press"); if (update->whichflag == 0) { if (pressure->invoked_vector != update->ntimestep) error->all(FLERR,"Compute used in variable thermo keyword between runs " "is not current"); } else if (!(pressure->invoked_flag & INVOKED_VECTOR)) { pressure->compute_vector(); pressure->invoked_flag |= INVOKED_VECTOR; } compute_pyz(); } else if (strcmp(word,"fmax") == 0) compute_fmax(); else if (strcmp(word,"fnorm") == 0) compute_fnorm(); else if (strcmp(word,"nbuild") == 0) { compute_nbuild(); dvalue = bivalue; } else if (strcmp(word,"ndanger") == 0) { compute_ndanger(); dvalue = bivalue; } else if (strcmp(word,"cella") == 0) compute_cella(); else if (strcmp(word,"cellb") == 0) compute_cellb(); else if (strcmp(word,"cellc") == 0) compute_cellc(); else if (strcmp(word,"cellalpha") == 0) compute_cellalpha(); else if (strcmp(word,"cellbeta") == 0) compute_cellbeta(); else if (strcmp(word,"cellgamma") == 0) compute_cellgamma(); else return 1; *answer = dvalue; return 0; } /* ---------------------------------------------------------------------- extraction of Compute, Fix, Variable results compute/fix are normalized by atoms if returning extensive value variable value is not normalized (formula should normalize if desired) ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */ void Thermo::compute_compute() { int m = field2index[ifield]; Compute *compute = computes[m]; // check for out-of-range access if vector/array is variable length if (compute_which[m] == SCALAR) { dvalue = compute->scalar; if (normflag && compute->extscalar) dvalue /= natoms; } else if (compute_which[m] == VECTOR) { if (compute->size_vector_variable && argindex1[ifield] > compute->size_vector) dvalue = 0.0; else dvalue = compute->vector[argindex1[ifield]-1]; if (normflag) { if (compute->extvector == 0) return; else if (compute->extvector == 1) dvalue /= natoms; else if (compute->extlist[argindex1[ifield]-1]) dvalue /= natoms; } } else { if (compute->size_array_rows_variable && argindex1[ifield] > compute->size_array_rows) dvalue = 0.0; else dvalue = compute->array[argindex1[ifield]-1][argindex2[ifield]-1]; if (normflag && compute->extarray) dvalue /= natoms; } } /* ---------------------------------------------------------------------- */ void Thermo::compute_fix() { int m = field2index[ifield]; Fix *fix = fixes[m]; if (argindex1[ifield] == 0) { dvalue = fix->compute_scalar(); if (normflag && fix->extscalar) dvalue /= natoms; } else if (argindex2[ifield] == 0) { dvalue = fix->compute_vector(argindex1[ifield]-1); if (normflag) { if (fix->extvector == 0) return; else if (fix->extvector == 1) dvalue /= natoms; else if (fix->extlist[argindex1[ifield]-1]) dvalue /= natoms; } } else { dvalue = fix->compute_array(argindex1[ifield]-1,argindex2[ifield]-1); if (normflag && fix->extarray) dvalue /= natoms; } } /* ---------------------------------------------------------------------- */ void Thermo::compute_variable() { int iarg = argindex1[ifield]; if (iarg == 0) dvalue = input->variable->compute_equal(variables[field2index[ifield]]); else { double *varvec; int nvec = input->variable->compute_vector(variables[field2index[ifield]],&varvec); if (nvec < iarg) dvalue = 0.0; else dvalue = varvec[iarg-1]; } } /* ---------------------------------------------------------------------- one method for every keyword thermo can output called by compute() or evaluate_keyword() compute will have already been called set ivalue/dvalue/bivalue if value is int/double/bigint customize a new keyword by adding a method ------------------------------------------------------------------------- */ void Thermo::compute_step() { bivalue = update->ntimestep; } /* ---------------------------------------------------------------------- */ void Thermo::compute_elapsed() { bivalue = update->ntimestep - update->firststep; } /* ---------------------------------------------------------------------- */ void Thermo::compute_elapsed_long() { bivalue = update->ntimestep - update->beginstep; } /* ---------------------------------------------------------------------- */ void Thermo::compute_dt() { dvalue = update->dt; } /* ---------------------------------------------------------------------- */ void Thermo::compute_time() { dvalue = update->atime + (update->ntimestep-update->atimestep)*update->dt; } /* ---------------------------------------------------------------------- */ void Thermo::compute_cpu() { if (firststep == 0) dvalue = 0.0; else dvalue = timer->elapsed(Timer::TOTAL); } /* ---------------------------------------------------------------------- */ void Thermo::compute_tpcpu() { double new_cpu; double new_time = update->ntimestep * update->dt; if (firststep == 0) { new_cpu = 0.0; dvalue = 0.0; } else { new_cpu = timer->elapsed(Timer::TOTAL); double cpu_diff = new_cpu - last_tpcpu; double time_diff = new_time - last_time; if (time_diff > 0.0 && cpu_diff > 0.0) dvalue = time_diff/cpu_diff; else dvalue = 0.0; } last_time = new_time; last_tpcpu = new_cpu; } /* ---------------------------------------------------------------------- */ void Thermo::compute_spcpu() { double new_cpu; int new_step = update->ntimestep; if (firststep == 0) { new_cpu = 0.0; dvalue = 0.0; } else { new_cpu = timer->elapsed(Timer::TOTAL); double cpu_diff = new_cpu - last_spcpu; int step_diff = new_step - last_step; if (cpu_diff > 0.0) dvalue = step_diff/cpu_diff; else dvalue = 0.0; } last_step = new_step; last_spcpu = new_cpu; } /* ---------------------------------------------------------------------- */ void Thermo::compute_cpuremain() { if (firststep == 0) dvalue = 0.0; else dvalue = timer->elapsed(Timer::TOTAL) * (update->laststep - update->ntimestep) / (update->ntimestep - update->firststep); } /* ---------------------------------------------------------------------- */ void Thermo::compute_part() { ivalue = universe->iworld; } /* ---------------------------------------------------------------------- */ void Thermo::compute_timeremain() { dvalue = timer->get_timeout_remain(); } /* ---------------------------------------------------------------------- */ void Thermo::compute_atoms() { bivalue = atom->natoms; } /* ---------------------------------------------------------------------- */ void Thermo::compute_temp() { dvalue = temperature->scalar; } /* ---------------------------------------------------------------------- */ void Thermo::compute_press() { dvalue = pressure->scalar; } /* ---------------------------------------------------------------------- */ void Thermo::compute_pe() { dvalue = pe->scalar; if (normflag) dvalue /= natoms; } /* ---------------------------------------------------------------------- */ void Thermo::compute_ke() { dvalue = temperature->scalar; dvalue *= 0.5 * temperature->dof * force->boltz; if (normflag) dvalue /= natoms; } /* ---------------------------------------------------------------------- */ void Thermo::compute_etotal() { compute_pe(); double ke = temperature->scalar; ke *= 0.5 * temperature->dof * force->boltz; if (normflag) ke /= natoms; dvalue += ke; } /* ---------------------------------------------------------------------- */ void Thermo::compute_enthalpy() { compute_etotal(); double etmp = dvalue; compute_vol(); double vtmp = dvalue; if (normflag) vtmp /= natoms; compute_press(); double ptmp = dvalue; dvalue = etmp + ptmp*vtmp/(force->nktv2p); } /* ---------------------------------------------------------------------- */ void Thermo::compute_evdwl() { double tmp = 0.0; if (force->pair) tmp += force->pair->eng_vdwl; MPI_Allreduce(&tmp,&dvalue,1,MPI_DOUBLE,MPI_SUM,world); if (force->pair && force->pair->tail_flag) { double volume = domain->xprd * domain->yprd * domain->zprd; dvalue += force->pair->etail / volume; } if (normflag) dvalue /= natoms; } /* ---------------------------------------------------------------------- */ void Thermo::compute_ecoul() { double tmp = 0.0; if (force->pair) tmp += force->pair->eng_coul; MPI_Allreduce(&tmp,&dvalue,1,MPI_DOUBLE,MPI_SUM,world); if (normflag) dvalue /= natoms; } /* ---------------------------------------------------------------------- */ void Thermo::compute_epair() { double tmp = 0.0; if (force->pair) tmp += force->pair->eng_vdwl + force->pair->eng_coul; MPI_Allreduce(&tmp,&dvalue,1,MPI_DOUBLE,MPI_SUM,world); if (force->kspace) dvalue += force->kspace->energy; if (force->pair && force->pair->tail_flag) { double volume = domain->xprd * domain->yprd * domain->zprd; dvalue += force->pair->etail / volume; } if (normflag) dvalue /= natoms; } /* ---------------------------------------------------------------------- */ void Thermo::compute_ebond() { if (force->bond) { double tmp = force->bond->energy; MPI_Allreduce(&tmp,&dvalue,1,MPI_DOUBLE,MPI_SUM,world); if (normflag) dvalue /= natoms; } else dvalue = 0.0; } /* ---------------------------------------------------------------------- */ void Thermo::compute_eangle() { if (force->angle) { double tmp = force->angle->energy; MPI_Allreduce(&tmp,&dvalue,1,MPI_DOUBLE,MPI_SUM,world); if (normflag) dvalue /= natoms; } else dvalue = 0.0; } /* ---------------------------------------------------------------------- */ void Thermo::compute_edihed() { if (force->dihedral) { double tmp = force->dihedral->energy; MPI_Allreduce(&tmp,&dvalue,1,MPI_DOUBLE,MPI_SUM,world); if (normflag) dvalue /= natoms; } else dvalue = 0.0; } /* ---------------------------------------------------------------------- */ void Thermo::compute_eimp() { if (force->improper) { double tmp = force->improper->energy; MPI_Allreduce(&tmp,&dvalue,1,MPI_DOUBLE,MPI_SUM,world); if (normflag) dvalue /= natoms; } else dvalue = 0.0; } /* ---------------------------------------------------------------------- */ void Thermo::compute_emol() { double tmp = 0.0; if (atom->molecular) { if (force->bond) tmp += force->bond->energy; if (force->angle) tmp += force->angle->energy; if (force->dihedral) tmp += force->dihedral->energy; if (force->improper) tmp += force->improper->energy; MPI_Allreduce(&tmp,&dvalue,1,MPI_DOUBLE,MPI_SUM,world); if (normflag) dvalue /= natoms; } else dvalue = 0.0; } /* ---------------------------------------------------------------------- */ void Thermo::compute_elong() { if (force->kspace) { dvalue = force->kspace->energy; if (normflag) dvalue /= natoms; } else dvalue = 0.0; } /* ---------------------------------------------------------------------- */ void Thermo::compute_etail() { if (force->pair && force->pair->tail_flag) { double volume = domain->xprd * domain->yprd * domain->zprd; dvalue = force->pair->etail / volume; if (normflag) dvalue /= natoms; } else dvalue = 0.0; } /* ---------------------------------------------------------------------- */ void Thermo::compute_vol() { if (domain->dimension == 3) dvalue = domain->xprd * domain->yprd * domain->zprd; else dvalue = domain->xprd * domain->yprd; } /* ---------------------------------------------------------------------- */ void Thermo::compute_density() { double mass = group->mass(0); compute_vol(); dvalue = force->mv2d * mass/dvalue; } /* ---------------------------------------------------------------------- */ void Thermo::compute_lx() { dvalue = domain->xprd; } /* ---------------------------------------------------------------------- */ void Thermo::compute_ly() { dvalue = domain->yprd; } /* ---------------------------------------------------------------------- */ void Thermo::compute_lz() { dvalue = domain->zprd; } /* ---------------------------------------------------------------------- */ void Thermo::compute_xlo() { dvalue = domain->boxlo[0]; } /* ---------------------------------------------------------------------- */ void Thermo::compute_xhi() { dvalue = domain->boxhi[0]; } /* ---------------------------------------------------------------------- */ void Thermo::compute_ylo() { dvalue = domain->boxlo[1]; } /* ---------------------------------------------------------------------- */ void Thermo::compute_yhi() { dvalue = domain->boxhi[1]; } /* ---------------------------------------------------------------------- */ void Thermo::compute_zlo() { dvalue = domain->boxlo[2]; } /* ---------------------------------------------------------------------- */ void Thermo::compute_zhi() { dvalue = domain->boxhi[2]; } /* ---------------------------------------------------------------------- */ void Thermo::compute_xy() { dvalue = domain->xy; } /* ---------------------------------------------------------------------- */ void Thermo::compute_xz() { dvalue = domain->xz; } /* ---------------------------------------------------------------------- */ void Thermo::compute_yz() { dvalue = domain->yz; } /* ---------------------------------------------------------------------- */ void Thermo::compute_xlat() { dvalue = domain->lattice->xlattice; } /* ---------------------------------------------------------------------- */ void Thermo::compute_ylat() { dvalue = domain->lattice->ylattice; } /* ---------------------------------------------------------------------- */ void Thermo::compute_zlat() { dvalue = domain->lattice->zlattice; } /* ---------------------------------------------------------------------- */ void Thermo::compute_bonds() { bivalue = atom->nbonds; } /* ---------------------------------------------------------------------- */ void Thermo::compute_angles() { bivalue = atom->nangles; } /* ---------------------------------------------------------------------- */ void Thermo::compute_dihedrals() { bivalue = atom->ndihedrals; } /* ---------------------------------------------------------------------- */ void Thermo::compute_impropers() { bivalue = atom->nimpropers; } /* ---------------------------------------------------------------------- */ void Thermo::compute_pxx() { dvalue = pressure->vector[0]; } /* ---------------------------------------------------------------------- */ void Thermo::compute_pyy() { dvalue = pressure->vector[1]; } /* ---------------------------------------------------------------------- */ void Thermo::compute_pzz() { dvalue = pressure->vector[2]; } /* ---------------------------------------------------------------------- */ void Thermo::compute_pxy() { dvalue = pressure->vector[3]; } /* ---------------------------------------------------------------------- */ void Thermo::compute_pxz() { dvalue = pressure->vector[4]; } /* ---------------------------------------------------------------------- */ void Thermo::compute_pyz() { dvalue = pressure->vector[5]; } /* ---------------------------------------------------------------------- */ void Thermo::compute_fmax() { double **f = atom->f; int nlocal = atom->nlocal; double max = 0.0; for (int i = 0; i < nlocal; i++) { max = MAX(max,fabs(f[i][0])); max = MAX(max,fabs(f[i][1])); max = MAX(max,fabs(f[i][2])); } double maxall; MPI_Allreduce(&max,&maxall,1,MPI_DOUBLE,MPI_MAX,world); dvalue = maxall; } /* ---------------------------------------------------------------------- */ void Thermo::compute_fnorm() { double **f = atom->f; int nlocal = atom->nlocal; double dot = 0.0; for (int i = 0; i < nlocal; i++) dot += f[i][0]*f[i][0] + f[i][1]*f[i][1] + f[i][2]*f[i][2]; double dotall; MPI_Allreduce(&dot,&dotall,1,MPI_DOUBLE,MPI_SUM,world); dvalue = sqrt(dotall); } /* ---------------------------------------------------------------------- */ void Thermo::compute_nbuild() { bivalue = neighbor->ncalls; } /* ---------------------------------------------------------------------- */ void Thermo::compute_ndanger() { bivalue = neighbor->ndanger; } /* ---------------------------------------------------------------------- */ void Thermo::compute_cella() { dvalue = domain->xprd; } /* ---------------------------------------------------------------------- */ void Thermo::compute_cellb() { if (!domain->triclinic) dvalue = domain->yprd; else { double* h = domain->h; dvalue = sqrt(h[1]*h[1]+h[5]*h[5]); } } /* ---------------------------------------------------------------------- */ void Thermo::compute_cellc() { if (!domain->triclinic) dvalue = domain->zprd; else { double* h = domain->h; dvalue = sqrt(h[2]*h[2]+h[3]*h[3]+h[4]*h[4]); } } /* ---------------------------------------------------------------------- */ void Thermo::compute_cellalpha() { if (!domain->triclinic) dvalue = 90.0; else { // Cos(alpha) = (xy.xz + ly.yz)/(b.c) double* h = domain->h; double cosalpha = (h[5]*h[4]+h[1]*h[3])/ sqrt((h[1]*h[1]+h[5]*h[5])*(h[2]*h[2]+h[3]*h[3]+h[4]*h[4])); dvalue = acos(cosalpha)*180.0/MY_PI; } } /* ---------------------------------------------------------------------- */ void Thermo::compute_cellbeta() { if (!domain->triclinic) dvalue = 90.0; else { // Cos(beta) = xz/c double* h = domain->h; double cosbeta = h[4]/sqrt(h[2]*h[2]+h[3]*h[3]+h[4]*h[4]); dvalue = acos(cosbeta)*180.0/MY_PI; } } /* ---------------------------------------------------------------------- */ void Thermo::compute_cellgamma() { if (!domain->triclinic) dvalue = 90.0; else { // Cos(gamma) = xy/b double* h = domain->h; double cosgamma = h[5]/sqrt(h[1]*h[1]+h[5]*h[5]); dvalue = acos(cosgamma)*180.0/MY_PI; } } diff --git a/src/version.h b/src/version.h index bcce3d4e3..748f90ca2 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define LAMMPS_VERSION "30 Jul 2016" +#define LAMMPS_VERSION "1 Aug 2016"