diff --git a/doc/Makefile b/doc/Makefile
index 198fffda2..8ee8379c5 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -1,85 +1,85 @@
 # Makefile for LAMMPS documentation
-SHA1          = $(shell echo $USER-$PWD | sha1sum | cut -f1 -d" ")
+SHA1          = $(shell echo $USER-$PWD | python utils/sha1sum.py)
 BUILDDIR      = /tmp/lammps-docs-$(SHA1)
 RSTDIR        = $(BUILDDIR)/rst
 VENV          = $(BUILDDIR)/docenv
 TXT2RST       = $(VENV)/bin/txt2rst
 
 PYTHON        = $(shell which python3)
 
 ifeq ($(shell which python3 >/dev/null 2>&1; echo $$?), 1)
 $(error Python3 was not found! Please check README.md for further instructions)
 endif
 
 ifeq ($(shell which virtualenv >/dev/null 2>&1; echo $$?), 1)
 $(error virtualenv was not found! Please check README.md for further instructions)
 endif
 
 SOURCES=$(wildcard src/*.txt)
 OBJECTS=$(SOURCES:src/%.txt=$(RSTDIR)/%.rst)
 
 .PHONY: help clean-all clean html pdf venv
 
 help:
 	@echo "Please use \`make <target>' where <target> is one of"
 	@echo "  html       to make HTML version of documentation using Sphinx"
 	@echo "  pdf        to make Manual.pdf"
 	@echo "  txt2html   to build txt2html tool"
 	@echo "  clean      to remove all generated RST files"
 	@echo "  clean-all  to reset the entire build environment"
 
 clean-all:
 	rm -rf $(BUILDDIR)/* utils/txt2html/txt2html.exe
 
 clean:
 	rm -rf $(RSTDIR)
 
 txt2html: utils/txt2html/txt2html.exe
 
 html: $(OBJECTS)
 	@(\
 		. $(VENV)/bin/activate ;\
 		cp -r src/* $(RSTDIR)/ ;\
 		sphinx-build -j 8 -b html -c utils/sphinx-config -d $(BUILDDIR)/doctrees $(RSTDIR) html ;\
 		deactivate ;\
 	)	
 	@echo "Build finished. The HTML pages are in doc/html."
 
 pdf: utils/txt2html/txt2html.exe
 	@(\
 		cd src; \
 		../utils/txt2html/txt2html.exe -b *.txt; \
 		htmldoc --batch ../lammps.book;          \
 		for s in `echo *.txt | sed -e 's,\.txt,\.html,g'` ; \
 			do grep -q $$s ../lammps.book || \
 			echo doc file $$s missing in lammps.book; done; \
 		rm *.html; \
 	)
 
 utils/txt2html/txt2html.exe: utils/txt2html/txt2html.cpp
 	g++ -O -Wall -o $@ $<
 
 $(RSTDIR)/%.rst : src/%.txt $(TXT2RST)
 	@(\
 		mkdir -p $(RSTDIR) ; \
 		. $(VENV)/bin/activate ;\
 		txt2rst $< > $@ ;\
 		deactivate ;\
 	)
 
 $(VENV):
 	@( \
 		virtualenv -p $(PYTHON) $(VENV); \
 		. $(VENV)/bin/activate; \
 		pip install Sphinx; \
 		pip install sphinxcontrib-images; \
 		deactivate;\
 	)
 
 $(TXT2RST): $(VENV)
 	@( \
 		. $(VENV)/bin/activate; \
 		(cd utils/converters;\
 		python setup.py develop);\
 		deactivate;\
 	)
diff --git a/doc/README.md b/doc/README.md
index fb130b35b..26a51c13a 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -1,32 +1,42 @@
 # Generation of LAMMPS Documentation
 
 The generation of all the documentation is managed by the Makefile inside the
 `doc/` folder.
 
 ## Usage:
 
 ```bash
 make html         # generate HTML using Sphinx
 make pdf          # generate PDF using htmldoc
 make clean        # remove generated RST files
 make clean-all    # remove entire build folder and any cached data
 ```
 
 ## Installing prerequisites
 
 To run the documention build toolchain Python 3 and virtualenv have to be
-installed. The following are instructions for common Linux distributions:
+installed. Here are instructions for common setups:
 
-### virtualenv
-
-#### Ubuntu
+### Ubuntu
 
 ```bash
 sudo apt-get install python-virtualenv
 ```
 
-#### Fedora
+### Fedora
 
 ```
 sudo yum install python-virtualenv
 ```
+
+### MacOS X
+
+## Python 3
+
+Download the latest Python 3 MacOS X package from https://www.python.org and install it.
+This will install both Python 3 and pip3.
+
+## virtualenv
+
+Once Python 3 is installed, open a Terminal and type `pip3 install virtualenv`. This will
+install virtualenv from the Python Package Index.
diff --git a/doc/html/Manual.html b/doc/html/Manual.html
index 963ee9cac..5c7ec2f31 100644
--- a/doc/html/Manual.html
+++ b/doc/html/Manual.html
@@ -1,426 +1,426 @@
 
 
 <!DOCTYPE html>
 <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>LAMMPS Documentation &mdash; 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 &amp; 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 &amp; 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>
       &nbsp;
     </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> &raquo;</li>
       
     <li>LAMMPS Documentation</li>
       <li class="wy-breadcrumbs-aside">
         
           
             <a href="http://lammps.sandia.gov">Website</a>
             <a href="Section_commands.html#comm">Commands</a>
         
       </li>
   </ul>
   <hr/>
   
     <div class="rst-footer-buttons" style="margin-bottom: 1em" role="navigation" aria-label="footer navigation">
       
         <a href="Section_intro.html" class="btn btn-neutral float-right" title="1. Introduction" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
     </div>
   
 </div>
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
   <H1></H1><div class="section" id="lammps-documentation">
 <h1>LAMMPS Documentation</h1>
 <div class="section" id="aug-2016-version">
-<h2>23 Aug 2016 version</h2>
+<h2>27 Aug 2016 version</h2>
 </div>
 <div class="section" id="version-info">
 <h2>Version info:</h2>
 <p>The LAMMPS &#8220;version&#8221; 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>
 <ul class="simple">
 <li>If you browse the HTML doc pages on the LAMMPS WWW site, they always
 describe the most current version of LAMMPS.</li>
 <li>If you browse the HTML doc pages included in your tarball, they
 describe the version you have.</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&#8217;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&#8217;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 &amp; 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 &amp; 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 &amp; 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>
         &copy; 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_flow_gauss.html b/doc/html/fix_flow_gauss.html
index 64869110c..ca10c2d38 100644
--- a/doc/html/fix_flow_gauss.html
+++ b/doc/html/fix_flow_gauss.html
@@ -1,321 +1,321 @@
 
 
 <!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 flow/gauss command &mdash; 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 &amp; 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 &amp; 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>
       &nbsp;
     </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> &raquo;</li>
       
     <li>fix flow/gauss 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-flow-gauss-command">
 <span id="index-0"></span><h1>fix flow/gauss 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">flow</span><span class="o">/</span><span class="n">gauss</span> <span class="n">xflag</span> <span class="n">yflag</span> <span class="n">zflag</span> <span class="n">keyword</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>flow/gauss = style name of this fix command</li>
 <li>xflag,yflag,zflag = 0 or 1</li>
 </ul>
 <div class="highlight-default"><div class="highlight"><pre><span></span><span class="mi">0</span> <span class="o">=</span> <span class="n">do</span> <span class="ow">not</span> <span class="n">conserve</span> <span class="n">current</span> <span class="ow">in</span> <span class="n">this</span> <span class="n">dimension</span>
 <span class="mi">1</span> <span class="o">=</span> <span class="n">conserve</span> <span class="n">current</span> <span class="ow">in</span> <span class="n">this</span> <span class="n">dimension</span>
 </pre></div>
 </div>
 <ul class="simple">
 <li>zero or more keyword/value pairs may be appended</li>
 <li>keyword = <em>energy</em></li>
 </ul>
 <pre class="literal-block">
 <em>energy</em> value = no or yes
   no = do not compute work done by this fix
   yes = compute work done by this fix
 </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="n">GD</span> <span class="n">fluid</span> <span class="n">flow</span><span class="o">/</span><span class="n">gauss</span> <span class="mi">1</span> <span class="mi">0</span> <span class="mi">0</span>
 <span class="n">fix</span> <span class="n">GD</span> <span class="n">fluid</span> <span class="n">flow</span><span class="o">/</span><span class="n">gauss</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">1</span> <span class="n">energy</span> <span class="n">yes</span>
 </pre></div>
 </div>
 </div>
 <div class="section" id="description">
 <h2>Description</h2>
-<p>This fix implements the Gaussian dynamics (GD) method to simulate a system at
-constant mass flux <a class="reference internal" href="#strong"><span class="std std-ref">(Strong)</span></a>. GD is a nonequilibrium molecular
-dynamics simulation method that can be used to study fluid flows through
-pores, pipes, and channels. In its original implementation GD was used to
-compute the pressure required to achieve a fixed mass flux through an opening.
-The flux can be conserved in any combination of the directions, x, y, or z,
-using xflag,yflag,zflag. This fix does not initialize a net flux through
-a system, it only conserves the center-of-mass momentum that is present
-when the fix is declared in the input script. Use the <a class="reference internal" href="velocity.html"><span class="doc">velocity</span></a>
-command to generate an initial center-of-mass momentum.</p>
-<p>GD applies an external fluctuating gravitational field that acts as a driving
-force to keep the system away from equilibrium. To maintain steady state, a
-profile-unbiased thermostat must be implemented to dissipate the heat that is
-added by the driving force. <a class="reference internal" href="compute_temp_profile.html"><span class="doc">Compute temp/profile</span></a>
-can be used to implement a profile-unbiased thermostat.</p>
-<p>A common use of this fix is to compute a pressure drop across a pipe, pore, or
-membrane. The pressure profile can be computed in LAMMPS with <a class="reference internal" href="compute_stress_atom.html"><span class="doc">compute  stress/atom</span></a> and <a class="reference internal" href="fix_ave_chunk.html"><span class="doc">fix ave/chunk</span></a>,
-or with the hardy method in <a class="reference internal" href="fix_atc.html"><span class="doc">fix atc</span></a>. Note that the simple
-<a class="reference internal" href="compute_stress_atom.html"><span class="doc">compute stress/atom</span></a> method is only accurate away
-from inhomogeneities in the fluid, such as fixed wall atoms. Further, the
-computed pressure profile must be corrected for the acceleration applied by
-GD before computing a pressure drop or comparing it to other methods, such as
-the pump method <a class="reference internal" href="#zhu"><span class="std std-ref">(Zhu)</span></a>. The pressure correction is discussed and
-described in <a class="reference internal" href="#strong"><span class="std std-ref">(Strong)</span></a>.</p>
+<p>This fix implements the Gaussian dynamics (GD) method to simulate a
+system at constant mass flux <a class="reference internal" href="#strong"><span class="std std-ref">(Strong)</span></a>. GD is a
+nonequilibrium molecular dynamics simulation method that can be used
+to study fluid flows through pores, pipes, and channels. In its
+original implementation GD was used to compute the pressure required
+to achieve a fixed mass flux through an opening.  The flux can be
+conserved in any combination of the directions, x, y, or z, using
+xflag,yflag,zflag. This fix does not initialize a net flux through a
+system, it only conserves the center-of-mass momentum that is present
+when the fix is declared in the input script. Use the
+<a class="reference internal" href="velocity.html"><span class="doc">velocity</span></a> command to generate an initial center-of-mass
+momentum.</p>
+<p>GD applies an external fluctuating gravitational field that acts as a
+driving force to keep the system away from equilibrium. To maintain
+steady state, a profile-unbiased thermostat must be implemented to
+dissipate the heat that is added by the driving force. <a class="reference internal" href="compute_temp_profile.html"><span class="doc">Compute temp/profile</span></a> can be used to implement a
+profile-unbiased thermostat.</p>
+<p>A common use of this fix is to compute a pressure drop across a pipe,
+pore, or membrane. The pressure profile can be computed in LAMMPS with
+<a class="reference internal" href="compute_stress_atom.html"><span class="doc">compute stress/atom</span></a> and <a class="reference internal" href="fix_ave_chunk.html"><span class="doc">fix ave/chunk</span></a>, or with the hardy method in <a class="reference internal" href="fix_atc.html"><span class="doc">fix atc</span></a>. Note that the simple <a class="reference internal" href="compute_stress_atom.html"><span class="doc">compute stress/atom</span></a> method is only accurate away
+from inhomogeneities in the fluid, such as fixed wall atoms. Further,
+the computed pressure profile must be corrected for the acceleration
+applied by GD before computing a pressure drop or comparing it to
+other methods, such as the pump method <a class="reference internal" href="#zhu"><span class="std std-ref">(Zhu)</span></a>. The pressure
+correction is discussed and described in <a class="reference internal" href="#strong"><span class="std std-ref">(Strong)</span></a>.</p>
 <div class="admonition note">
 <p class="first admonition-title">Note</p>
-<p class="last">For a complete example including the considerations discussed above, see
-the examples/USER/flow_gauss directory.</p>
+<p class="last">For a complete example including the considerations discussed
+above, see the examples/USER/flow_gauss directory.</p>
 </div>
 <div class="admonition note">
 <p class="first admonition-title">Note</p>
 <p class="last">Only the flux of the atoms in group-ID will be conserved. If the
-velocities of the group-ID atoms are coupled to the velocities of other atoms
-in the simulation, the flux will not be conserved. For example, in a
-simulation with fluid atoms and harmonically constrained wall atoms, if a
-single thermostat is applied to group <em>all</em>, the fluid atom velocities will be
-coupled to the wall atom velocities, and the flux will not be conserved. This
-issue can be avoided by thermostatting the fluid and wall groups separately.</p>
+velocities of the group-ID atoms are coupled to the velocities of
+other atoms in the simulation, the flux will not be conserved. For
+example, in a simulation with fluid atoms and harmonically constrained
+wall atoms, if a single thermostat is applied to group <em>all</em>, the
+fluid atom velocities will be coupled to the wall atom velocities, and
+the flux will not be conserved. This issue can be avoided by
+thermostatting the fluid and wall groups separately.</p>
 </div>
-<dl class="docutils">
-<dt>Adding an acceleration to atoms does work on the system. This added energy</dt>
-<dd>can be optionally subtracted from the potential energy for the thermodynamic</dd>
-</dl>
-<p>output (see below) to check that the timestep is small enough to conserve
-energy. Since the applied acceleration is fluctuating in time, the work cannot
-be computed from a potential. As a result, computing the work is slightly more
-computationally expensive than usual, so it is not performed by default. To
-invoke the work calculation, use the <em>energy</em> keyword. The
+<p>Adding an acceleration to atoms does work on the system. This added
+energy can be optionally subtracted from the potential energy for the
+thermodynamic output (see below) to check that the timestep is small
+enough to conserve energy. Since the applied acceleration is
+fluctuating in time, the work cannot be computed from a potential. As
+a result, computing the work is slightly more computationally
+expensive than usual, so it is not performed by default. To invoke the
+work calculation, use the <em>energy</em> keyword. The
 <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></a> <em>energy</em> option also invokes the work
-calculation, and overrides an <em>energy no</em> setting here. If neither <em>energy yes</em>
-or <em>fix_modify energy yes</em> are set, the global scalar computed by the fix
-will return zero.</p>
+calculation, and overrides an <em>energy no</em> setting here. If neither
+<em>energy yes</em> or <em>fix_modify energy yes</em> are set, the global scalar
+computed by the fix will return zero.</p>
 <div class="admonition note">
 <p class="first admonition-title">Note</p>
-<p class="last">In order to check energy conservation, any other fixes that do work on
-the system must have <em>fix_modify energy yes</em> set as well. This includes
-thermostat fixes and any constraints that hold the positions of wall atoms
-fixed, such as <a class="reference internal" href="fix_spring_self.html"><span class="doc">fix spring/self</span></a>.</p>
+<p class="last">In order to check energy conservation, any other fixes that do
+work on the system must have <em>fix_modify energy yes</em> set as well. This
+includes thermostat fixes and any constraints that hold the positions
+of wall atoms fixed, such as <a class="reference internal" href="fix_spring_self.html"><span class="doc">fix spring/self</span></a>.</p>
 </div>
 </div>
 <hr class="docutils" />
 <div class="section" id="restart-fix-modify-output-run-start-stop-minimize-info">
 <h2>Restart, fix_modify, output, run start/stop, minimize info</h2>
 <p>This fix is part of the USER-MISC package.  It is only enabled if
 LAMMPS was built with that package.  See the <a class="reference internal" href="Section_start.html#start-3"><span class="std std-ref">Making LAMMPS</span></a> section for more info.</p>
 <p>No information about this fix is written to <a class="reference internal" href="restart.html"><span class="doc">binary restart files</span></a>.</p>
 <p>The <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></a> <em>energy</em> option is supported by this
 fix to subtract the work done from the
 system&#8217;s potential energy as part of <a class="reference internal" href="thermo_style.html"><span class="doc">thermodynamic output</span></a>.</p>
 <p>This fix computes a global scalar and a global 3-vector of forces,
 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 scalar is the negative of the
 work done on the system, see above discussion.  The vector is the total force
 that this fix applied to the group of atoms on the current timestep.
 The scalar and vector values calculated by this fix are &#8220;extensive&#8221;.</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.</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_addforce.html"><span class="doc">fix addforce</span></a>, <a class="reference internal" href="compute_temp_profile.html"><span class="doc">compute temp/profile</span></a>, <a class="reference internal" href="velocity.html"><span class="doc">velocity</span></a></p>
 </div>
 <div class="section" id="default">
 <h2>Default</h2>
 <p>The option default for the <em>energy</em> keyword is energy = no.</p>
 <hr class="docutils" />
 <p id="strong"><strong>(Strong)</strong> Strong and Eaves, J. Phys. Chem. Lett. 7, 1907 (2016).</p>
 <p id="evans"><strong>(Evans)</strong> Evans and Morriss, Phys. Rev. Lett. 56, 2172 (1986).</p>
 <p id="zhu"><strong>(Zhu)</strong> Zhu, Tajkhorshid, and Schulten, Biophys. J. 83, 154 (2002).</p>
-<hr class="docutils" />
 </div>
 </div>
 
 
            </div>
           </div>
           <footer>
   
 
   <hr/>
 
   <div role="contentinfo">
     <p>
         &copy; 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/genindex.html b/doc/html/genindex.html
index 2a8af4533..a4ece0112 100644
--- a/doc/html/genindex.html
+++ b/doc/html/genindex.html
@@ -1,2392 +1,2396 @@
 
 
 
 <!DOCTYPE html>
 <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 <head>
   <meta charset="utf-8">
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
   <title>Index &mdash; 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 &amp; 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 &amp; 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>
       &nbsp;
     </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> &raquo;</li>
       
     <li></li>
       <li class="wy-breadcrumbs-aside">
         
           
             <a href="http://lammps.sandia.gov">Website</a>
             <a href="Section_commands.html#comm">Commands</a>
         
       </li>
   </ul>
   <hr/>
   
 </div>
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
 
 <h1 id="index">Index</h1>
 
 <div class="genindex-jumpbox">
  <a href="#A"><strong>A</strong></a>
  | <a href="#B"><strong>B</strong></a>
  | <a href="#C"><strong>C</strong></a>
  | <a href="#D"><strong>D</strong></a>
  | <a href="#E"><strong>E</strong></a>
  | <a href="#F"><strong>F</strong></a>
  | <a href="#G"><strong>G</strong></a>
  | <a href="#I"><strong>I</strong></a>
  | <a href="#J"><strong>J</strong></a>
  | <a href="#K"><strong>K</strong></a>
  | <a href="#L"><strong>L</strong></a>
  | <a href="#M"><strong>M</strong></a>
  | <a href="#N"><strong>N</strong></a>
  | <a href="#P"><strong>P</strong></a>
  | <a href="#Q"><strong>Q</strong></a>
  | <a href="#R"><strong>R</strong></a>
  | <a href="#S"><strong>S</strong></a>
  | <a href="#T"><strong>T</strong></a>
  | <a href="#U"><strong>U</strong></a>
  | <a href="#V"><strong>V</strong></a>
  | <a href="#W"><strong>W</strong></a>
  
 </div>
 <h2 id="A">A</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="angle_coeff.html#index-0">angle_coeff</a>
   </dt>
 
       
   <dt><a href="angle_style.html#index-0">angle_style</a>
   </dt>
 
       
   <dt><a href="angle_charmm.html#index-0">angle_style charmm</a>
   </dt>
 
       
   <dt><a href="angle_class2.html#index-0">angle_style class2</a>
   </dt>
 
       
   <dt><a href="angle_cosine.html#index-0">angle_style cosine</a>
   </dt>
 
       
   <dt><a href="angle_cosine_delta.html#index-0">angle_style cosine/delta</a>
   </dt>
 
       
   <dt><a href="angle_cosine_periodic.html#index-0">angle_style cosine/periodic</a>
   </dt>
 
       
   <dt><a href="angle_cosine_shift.html#index-0">angle_style cosine/shift</a>
   </dt>
 
       
   <dt><a href="angle_cosine_shift_exp.html#index-0">angle_style cosine/shift/exp</a>
   </dt>
 
       
   <dt><a href="angle_cosine_squared.html#index-0">angle_style cosine/squared</a>
   </dt>
 
       
   <dt><a href="angle_dipole.html#index-0">angle_style dipole</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="angle_fourier.html#index-0">angle_style fourier</a>
   </dt>
 
       
   <dt><a href="angle_fourier_simple.html#index-0">angle_style fourier/simple</a>
   </dt>
 
       
   <dt><a href="angle_harmonic.html#index-0">angle_style harmonic</a>
   </dt>
 
       
   <dt><a href="angle_hybrid.html#index-0">angle_style hybrid</a>
   </dt>
 
       
   <dt><a href="angle_none.html#index-0">angle_style none</a>
   </dt>
 
       
   <dt><a href="angle_quartic.html#index-0">angle_style quartic</a>
   </dt>
 
       
   <dt><a href="angle_sdk.html#index-0">angle_style sdk</a>
   </dt>
 
       
   <dt><a href="angle_table.html#index-0">angle_style table</a>
   </dt>
 
       
   <dt><a href="angle_zero.html#index-0">angle_style zero</a>
   </dt>
 
       
   <dt><a href="atom_modify.html#index-0">atom_modify</a>
   </dt>
 
       
   <dt><a href="atom_style.html#index-0">atom_style</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="B">B</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="balance.html#index-0">balance</a>
   </dt>
 
       
   <dt><a href="bond_coeff.html#index-0">bond_coeff</a>
   </dt>
 
       
   <dt><a href="bond_style.html#index-0">bond_style</a>
   </dt>
 
       
   <dt><a href="bond_class2.html#index-0">bond_style class2</a>
   </dt>
 
       
   <dt><a href="bond_fene.html#index-0">bond_style fene</a>
   </dt>
 
       
   <dt><a href="bond_fene_expand.html#index-0">bond_style fene/expand</a>
   </dt>
 
       
   <dt><a href="bond_harmonic.html#index-0">bond_style harmonic</a>
   </dt>
 
       
   <dt><a href="bond_harmonic_shift.html#index-0">bond_style harmonic/shift</a>
   </dt>
 
       
   <dt><a href="bond_harmonic_shift_cut.html#index-0">bond_style harmonic/shift/cut</a>
   </dt>
 
       
   <dt><a href="bond_hybrid.html#index-0">bond_style hybrid</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="bond_morse.html#index-0">bond_style morse</a>
   </dt>
 
       
   <dt><a href="bond_none.html#index-0">bond_style none</a>
   </dt>
 
       
   <dt><a href="bond_nonlinear.html#index-0">bond_style nonlinear</a>
   </dt>
 
       
   <dt><a href="bond_quartic.html#index-0">bond_style quartic</a>
   </dt>
 
       
   <dt><a href="bond_table.html#index-0">bond_style table</a>
   </dt>
 
       
   <dt><a href="bond_zero.html#index-0">bond_style zero</a>
   </dt>
 
       
   <dt><a href="bond_write.html#index-0">bond_write</a>
   </dt>
 
       
   <dt><a href="boundary.html#index-0">boundary</a>
   </dt>
 
       
   <dt><a href="box.html#index-0">box</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="C">C</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="change_box.html#index-0">change_box</a>
   </dt>
 
       
   <dt><a href="clear.html#index-0">clear</a>
   </dt>
 
       
   <dt><a href="comm_modify.html#index-0">comm_modify</a>
   </dt>
 
       
   <dt><a href="comm_style.html#index-0">comm_style</a>
   </dt>
 
       
   <dt><a href="compute.html#index-0">compute</a>
   </dt>
 
       
   <dt><a href="compute_ackland_atom.html#index-0">compute ackland/atom</a>
   </dt>
 
       
   <dt><a href="compute_angle.html#index-0">compute angle</a>
   </dt>
 
       
   <dt><a href="compute_angle_local.html#index-0">compute angle/local</a>
   </dt>
 
       
   <dt><a href="compute_angmom_chunk.html#index-0">compute angmom/chunk</a>
   </dt>
 
       
   <dt><a href="compute_basal_atom.html#index-0">compute basal/atom</a>
   </dt>
 
       
   <dt><a href="compute_body_local.html#index-0">compute body/local</a>
   </dt>
 
       
   <dt><a href="compute_bond.html#index-0">compute bond</a>
   </dt>
 
       
   <dt><a href="compute_bond_local.html#index-0">compute bond/local</a>
   </dt>
 
       
   <dt><a href="compute_centro_atom.html#index-0">compute centro/atom</a>
   </dt>
 
       
   <dt><a href="compute_chunk_atom.html#index-0">compute chunk/atom</a>
   </dt>
 
       
   <dt><a href="compute_cluster_atom.html#index-0">compute cluster/atom</a>
   </dt>
 
       
   <dt><a href="compute_cna_atom.html#index-0">compute cna/atom</a>
   </dt>
 
       
   <dt><a href="compute_com.html#index-0">compute com</a>
   </dt>
 
       
   <dt><a href="compute_com_chunk.html#index-0">compute com/chunk</a>
   </dt>
 
       
   <dt><a href="compute_contact_atom.html#index-0">compute contact/atom</a>
   </dt>
 
       
   <dt><a href="compute_coord_atom.html#index-0">compute coord/atom</a>
   </dt>
 
       
   <dt><a href="compute_damage_atom.html#index-0">compute damage/atom</a>
   </dt>
 
       
   <dt><a href="compute_dihedral.html#index-0">compute dihedral</a>
   </dt>
 
       
   <dt><a href="compute_dihedral_local.html#index-0">compute dihedral/local</a>
   </dt>
 
       
   <dt><a href="compute_dilatation_atom.html#index-0">compute dilatation/atom</a>
   </dt>
 
       
   <dt><a href="compute_dipole_chunk.html#index-0">compute dipole/chunk</a>
   </dt>
 
       
   <dt><a href="compute_displace_atom.html#index-0">compute displace/atom</a>
   </dt>
 
       
   <dt><a href="compute_dpd.html#index-0">compute dpd</a>
   </dt>
 
       
   <dt><a href="compute_dpd_atom.html#index-0">compute dpd/atom</a>
   </dt>
 
       
   <dt><a href="compute_erotate_asphere.html#index-0">compute erotate/asphere</a>
   </dt>
 
       
   <dt><a href="compute_erotate_rigid.html#index-0">compute erotate/rigid</a>
   </dt>
 
       
   <dt><a href="compute_erotate_sphere.html#index-0">compute erotate/sphere</a>
   </dt>
 
       
   <dt><a href="compute_erotate_sphere_atom.html#index-0">compute erotate/sphere/atom</a>
   </dt>
 
       
   <dt><a href="compute_event_displace.html#index-0">compute event/displace</a>
   </dt>
 
       
   <dt><a href="compute_fep.html#index-0">compute fep</a>
   </dt>
 
       
   <dt><a href="compute_tally.html#index-0">compute force/tally</a>
   </dt>
 
       
   <dt><a href="compute_group_group.html#index-0">compute group/group</a>
   </dt>
 
       
   <dt><a href="compute_gyration.html#index-0">compute gyration</a>
   </dt>
 
       
   <dt><a href="compute_gyration_chunk.html#index-0">compute gyration/chunk</a>
   </dt>
 
       
   <dt><a href="compute_heat_flux.html#index-0">compute heat/flux</a>
   </dt>
 
       
   <dt><a href="compute_hexorder_atom.html#index-0">compute hexorder/atom</a>
   </dt>
 
       
   <dt><a href="compute_improper.html#index-0">compute improper</a>
   </dt>
 
       
   <dt><a href="compute_improper_local.html#index-0">compute improper/local</a>
   </dt>
 
       
   <dt><a href="compute_inertia_chunk.html#index-0">compute inertia/chunk</a>
   </dt>
 
       
   <dt><a href="compute_ke.html#index-0">compute ke</a>
   </dt>
 
       
   <dt><a href="compute_ke_atom.html#index-0">compute ke/atom</a>
   </dt>
 
       
   <dt><a href="compute_ke_atom_eff.html#index-0">compute ke/atom/eff</a>
   </dt>
 
       
   <dt><a href="compute_ke_eff.html#index-0">compute ke/eff</a>
   </dt>
 
       
   <dt><a href="compute_ke_rigid.html#index-0">compute ke/rigid</a>
   </dt>
 
       
   <dt><a href="compute_meso_e_atom.html#index-0">compute meso/e/atom</a>
   </dt>
 
       
   <dt><a href="compute_meso_rho_atom.html#index-0">compute meso/rho/atom</a>
   </dt>
 
       
   <dt><a href="compute_meso_t_atom.html#index-0">compute meso/t/atom</a>
   </dt>
 
       
   <dt><a href="compute_msd.html#index-0">compute msd</a>
   </dt>
 
       
   <dt><a href="compute_msd_chunk.html#index-0">compute msd/chunk</a>
   </dt>
 
       
   <dt><a href="compute_msd_nongauss.html#index-0">compute msd/nongauss</a>
   </dt>
 
       
   <dt><a href="compute_omega_chunk.html#index-0">compute omega/chunk</a>
   </dt>
 
       
   <dt><a href="compute_orientorder_atom.html#index-0">compute orientorder/atom</a>
   </dt>
 
       
   <dt><a href="compute_pair.html#index-0">compute pair</a>
   </dt>
 
       
   <dt><a href="compute_pair_local.html#index-0">compute pair/local</a>
   </dt>
 
       
   <dt><a href="compute_pe.html#index-0">compute pe</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="compute_pe_atom.html#index-0">compute pe/atom</a>
   </dt>
 
       
   <dt><a href="compute_plasticity_atom.html#index-0">compute plasticity/atom</a>
   </dt>
 
       
   <dt><a href="compute_pressure.html#index-0">compute pressure</a>
   </dt>
 
       
   <dt><a href="compute_property_atom.html#index-0">compute property/atom</a>
   </dt>
 
       
   <dt><a href="compute_property_chunk.html#index-0">compute property/chunk</a>
   </dt>
 
       
   <dt><a href="compute_property_local.html#index-0">compute property/local</a>
   </dt>
 
       
   <dt><a href="compute_rdf.html#index-0">compute rdf</a>
   </dt>
 
       
   <dt><a href="compute_reduce.html#index-0">compute reduce</a>
   </dt>
 
       
   <dt><a href="compute_rigid_local.html#index-0">compute rigid/local</a>
   </dt>
 
       
   <dt><a href="compute_saed.html#index-0">compute saed</a>
   </dt>
 
       
   <dt><a href="compute_slice.html#index-0">compute slice</a>
   </dt>
 
       
   <dt><a href="compute_smd_contact_radius.html#index-0">compute smd/contact/radius</a>
   </dt>
 
       
   <dt><a href="compute_smd_damage.html#index-0">compute smd/damage</a>
   </dt>
 
       
   <dt><a href="compute_smd_hourglass_error.html#index-0">compute smd/hourglass/error</a>
   </dt>
 
       
   <dt><a href="compute_smd_internal_energy.html#index-0">compute smd/internal/energy</a>
   </dt>
 
       
   <dt><a href="compute_smd_plastic_strain.html#index-0">compute smd/plastic/strain</a>
   </dt>
 
       
   <dt><a href="compute_smd_plastic_strain_rate.html#index-0">compute smd/plastic/strain/rate</a>
   </dt>
 
       
   <dt><a href="compute_smd_rho.html#index-0">compute smd/rho</a>
   </dt>
 
       
   <dt><a href="compute_smd_tlsph_defgrad.html#index-0">compute smd/tlsph/defgrad</a>
   </dt>
 
       
   <dt><a href="compute_smd_tlsph_dt.html#index-0">compute smd/tlsph/dt</a>
   </dt>
 
       
   <dt><a href="compute_smd_tlsph_num_neighs.html#index-0">compute smd/tlsph/num/neighs</a>
   </dt>
 
       
   <dt><a href="compute_smd_tlsph_shape.html#index-0">compute smd/tlsph/shape</a>
   </dt>
 
       
   <dt><a href="compute_smd_tlsph_strain.html#index-0">compute smd/tlsph/strain</a>
   </dt>
 
       
   <dt><a href="compute_smd_tlsph_strain_rate.html#index-0">compute smd/tlsph/strain/rate</a>
   </dt>
 
       
   <dt><a href="compute_smd_tlsph_stress.html#index-0">compute smd/tlsph/stress</a>
   </dt>
 
       
   <dt><a href="compute_smd_ulsph_num_neighs.html#index-0">compute smd/ulsph/num/neighs</a>
   </dt>
 
       
   <dt><a href="compute_smd_ulsph_strain.html#index-0">compute smd/ulsph/strain</a>
   </dt>
 
       
   <dt><a href="compute_smd_ulsph_strain_rate.html#index-0">compute smd/ulsph/strain/rate</a>
   </dt>
 
       
   <dt><a href="compute_smd_ulsph_stress.html#index-0">compute smd/ulsph/stress</a>
   </dt>
 
       
   <dt><a href="compute_smd_vol.html#index-0">compute smd/vol</a>
   </dt>
 
       
   <dt><a href="compute_sna_atom.html#index-0">compute sna/atom</a>
   </dt>
 
       
   <dt><a href="compute_stress_atom.html#index-0">compute stress/atom</a>
   </dt>
 
       
   <dt><a href="compute_temp.html#index-0">compute temp</a>
   </dt>
 
       
   <dt><a href="compute_temp_asphere.html#index-0">compute temp/asphere</a>
   </dt>
 
       
   <dt><a href="compute_temp_body.html#index-0">compute temp/body</a>
   </dt>
 
       
   <dt><a href="compute_temp_chunk.html#index-0">compute temp/chunk</a>
   </dt>
 
       
   <dt><a href="compute_temp_com.html#index-0">compute temp/com</a>
   </dt>
 
       
   <dt><a href="compute_temp_cs.html#index-0">compute temp/cs</a>
   </dt>
 
       
   <dt><a href="compute_temp_deform.html#index-0">compute temp/deform</a>
   </dt>
 
       
   <dt><a href="compute_temp_deform_eff.html#index-0">compute temp/deform/eff</a>
   </dt>
 
       
   <dt><a href="compute_temp_drude.html#index-0">compute temp/drude</a>
   </dt>
 
       
   <dt><a href="compute_temp_eff.html#index-0">compute temp/eff</a>
   </dt>
 
       
   <dt><a href="compute_temp_partial.html#index-0">compute temp/partial</a>
   </dt>
 
       
   <dt><a href="compute_temp_profile.html#index-0">compute temp/profile</a>
   </dt>
 
       
   <dt><a href="compute_temp_ramp.html#index-0">compute temp/ramp</a>
   </dt>
 
       
   <dt><a href="compute_temp_region.html#index-0">compute temp/region</a>
   </dt>
 
       
   <dt><a href="compute_temp_region_eff.html#index-0">compute temp/region/eff</a>
   </dt>
 
       
   <dt><a href="compute_temp_rotate.html#index-0">compute temp/rotate</a>
   </dt>
 
       
   <dt><a href="compute_temp_sphere.html#index-0">compute temp/sphere</a>
   </dt>
 
       
   <dt><a href="compute_ti.html#index-0">compute ti</a>
   </dt>
 
       
   <dt><a href="compute_torque_chunk.html#index-0">compute torque/chunk</a>
   </dt>
 
       
   <dt><a href="compute_vacf.html#index-0">compute vacf</a>
   </dt>
 
       
   <dt><a href="compute_vcm_chunk.html#index-0">compute vcm/chunk</a>
   </dt>
 
       
   <dt><a href="compute_voronoi_atom.html#index-0">compute voronoi/atom</a>
   </dt>
 
       
   <dt><a href="compute_xrd.html#index-0">compute xrd</a>
   </dt>
 
       
   <dt><a href="compute_modify.html#index-0">compute_modify</a>
   </dt>
 
       
   <dt><a href="create_atoms.html#index-0">create_atoms</a>
   </dt>
 
       
   <dt><a href="create_bonds.html#index-0">create_bonds</a>
   </dt>
 
       
   <dt><a href="create_box.html#index-0">create_box</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="D">D</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="delete_atoms.html#index-0">delete_atoms</a>
   </dt>
 
       
   <dt><a href="delete_bonds.html#index-0">delete_bonds</a>
   </dt>
 
       
   <dt><a href="dielectric.html#index-0">dielectric</a>
   </dt>
 
       
   <dt><a href="dihedral_coeff.html#index-0">dihedral_coeff</a>
   </dt>
 
       
   <dt><a href="dihedral_style.html#index-0">dihedral_style</a>
   </dt>
 
       
   <dt><a href="dihedral_charmm.html#index-0">dihedral_style charmm</a>
   </dt>
 
       
   <dt><a href="dihedral_class2.html#index-0">dihedral_style class2</a>
   </dt>
 
       
   <dt><a href="dihedral_cosine_shift_exp.html#index-0">dihedral_style cosine/shift/exp</a>
   </dt>
 
       
   <dt><a href="dihedral_fourier.html#index-0">dihedral_style fourier</a>
   </dt>
 
       
   <dt><a href="dihedral_harmonic.html#index-0">dihedral_style harmonic</a>
   </dt>
 
       
   <dt><a href="dihedral_helix.html#index-0">dihedral_style helix</a>
   </dt>
 
       
   <dt><a href="dihedral_hybrid.html#index-0">dihedral_style hybrid</a>
   </dt>
 
       
   <dt><a href="dihedral_multi_harmonic.html#index-0">dihedral_style multi/harmonic</a>
   </dt>
 
       
   <dt><a href="dihedral_nharmonic.html#index-0">dihedral_style nharmonic</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="dihedral_none.html#index-0">dihedral_style none</a>
   </dt>
 
       
   <dt><a href="dihedral_opls.html#index-0">dihedral_style opls</a>
   </dt>
 
       
   <dt><a href="dihedral_quadratic.html#index-0">dihedral_style quadratic</a>
   </dt>
 
       
   <dt><a href="dihedral_spherical.html#index-0">dihedral_style spherical</a>
   </dt>
 
       
   <dt><a href="dihedral_table.html#index-0">dihedral_style table</a>
   </dt>
 
       
   <dt><a href="dihedral_zero.html#index-0">dihedral_style zero</a>
   </dt>
 
       
   <dt><a href="dimension.html#index-0">dimension</a>
   </dt>
 
       
   <dt><a href="displace_atoms.html#index-0">displace_atoms</a>
   </dt>
 
       
   <dt><a href="dump.html#index-0">dump</a>
   </dt>
 
       
   <dt><a href="dump_custom_vtk.html#index-0">dump custom/vtk</a>
   </dt>
 
       
   <dt><a href="dump_h5md.html#index-0">dump h5md</a>
   </dt>
 
       
   <dt><a href="dump_image.html#index-0">dump image</a>
   </dt>
 
       
   <dt><a href="dump_molfile.html#index-0">dump molfile</a>
   </dt>
 
       
   <dt><a href="dump_modify.html#index-0">dump_modify</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="E">E</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="echo.html#index-0">echo</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="F">F</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="fix.html#index-0">fix</a>
   </dt>
 
       
   <dt><a href="fix_adapt.html#index-0">fix adapt</a>
   </dt>
 
       
   <dt><a href="fix_adapt_fep.html#index-0">fix adapt/fep</a>
   </dt>
 
       
   <dt><a href="fix_addforce.html#index-0">fix addforce</a>
   </dt>
 
       
   <dt><a href="fix_addtorque.html#index-0">fix addtorque</a>
   </dt>
 
       
   <dt><a href="fix_append_atoms.html#index-0">fix append/atoms</a>
   </dt>
 
       
   <dt><a href="fix_atc.html#index-0">fix atc</a>
   </dt>
 
       
   <dt><a href="fix_atom_swap.html#index-0">fix atom/swap</a>
   </dt>
 
       
   <dt><a href="fix_ave_atom.html#index-0">fix ave/atom</a>
   </dt>
 
       
   <dt><a href="fix_ave_chunk.html#index-0">fix ave/chunk</a>
   </dt>
 
       
   <dt><a href="fix_ave_correlate.html#index-0">fix ave/correlate</a>
   </dt>
 
       
   <dt><a href="fix_ave_correlate_long.html#index-0">fix ave/correlate/long</a>
   </dt>
 
       
   <dt><a href="fix_ave_histo.html#index-0">fix ave/histo</a>
   </dt>
 
       
   <dt><a href="fix_ave_time.html#index-0">fix ave/time</a>
   </dt>
 
       
   <dt><a href="fix_aveforce.html#index-0">fix aveforce</a>
   </dt>
 
       
   <dt><a href="fix_balance.html#index-0">fix balance</a>
   </dt>
 
       
   <dt><a href="fix_bond_break.html#index-0">fix bond/break</a>
   </dt>
 
       
   <dt><a href="fix_bond_create.html#index-0">fix bond/create</a>
   </dt>
 
       
   <dt><a href="fix_bond_swap.html#index-0">fix bond/swap</a>
   </dt>
 
       
   <dt><a href="fix_box_relax.html#index-0">fix box/relax</a>
   </dt>
 
       
   <dt><a href="fix_colvars.html#index-0">fix colvars</a>
   </dt>
 
       
   <dt><a href="fix_controller.html#index-0">fix controller</a>
   </dt>
 
       
   <dt><a href="fix_deform.html#index-0">fix deform</a>
   </dt>
 
       
   <dt><a href="fix_deposit.html#index-0">fix deposit</a>
   </dt>
 
       
   <dt><a href="fix_drag.html#index-0">fix drag</a>
   </dt>
 
       
   <dt><a href="fix_drude.html#index-0">fix drude</a>
   </dt>
 
       
   <dt><a href="fix_drude_transform.html#index-0">fix drude/transform/direct</a>
   </dt>
 
       
   <dt><a href="fix_dt_reset.html#index-0">fix dt/reset</a>
   </dt>
 
       
   <dt><a href="fix_efield.html#index-0">fix efield</a>
   </dt>
 
       
   <dt><a href="fix_ehex.html#index-0">fix ehex</a>
   </dt>
 
       
   <dt><a href="fix_enforce2d.html#index-0">fix enforce2d</a>
   </dt>
 
       
   <dt><a href="fix_eos_cv.html#index-0">fix eos/cv</a>
   </dt>
 
       
   <dt><a href="fix_eos_table.html#index-0">fix eos/table</a>
   </dt>
 
       
   <dt><a href="fix_eos_table_rx.html#index-0">fix eos/table/rx</a>
   </dt>
 
       
   <dt><a href="fix_evaporate.html#index-0">fix evaporate</a>
   </dt>
 
       
   <dt><a href="fix_external.html#index-0">fix external</a>
   </dt>
 
       
+  <dt><a href="fix_flow_gauss.html#index-0">fix flow/gauss</a>
+  </dt>
+
+      
   <dt><a href="fix_freeze.html#index-0">fix freeze</a>
   </dt>
 
       
   <dt><a href="fix_gcmc.html#index-0">fix gcmc</a>
   </dt>
 
       
   <dt><a href="fix_gld.html#index-0">fix gld</a>
   </dt>
 
       
   <dt><a href="fix_gle.html#index-0">fix gle</a>
   </dt>
 
       
   <dt><a href="fix_gravity.html#index-0">fix gravity</a>
   </dt>
 
       
   <dt><a href="fix_heat.html#index-0">fix heat</a>
   </dt>
 
       
   <dt><a href="fix_imd.html#index-0">fix imd</a>
   </dt>
 
       
   <dt><a href="fix_indent.html#index-0">fix indent</a>
   </dt>
 
       
   <dt><a href="fix_ipi.html#index-0">fix ipi</a>
   </dt>
 
       
   <dt><a href="fix_langevin.html#index-0">fix langevin</a>
   </dt>
 
       
   <dt><a href="fix_langevin_drude.html#index-0">fix langevin/drude</a>
   </dt>
 
       
   <dt><a href="fix_langevin_eff.html#index-0">fix langevin/eff</a>
   </dt>
 
       
   <dt><a href="fix_lb_fluid.html#index-0">fix lb/fluid</a>
   </dt>
 
       
   <dt><a href="fix_lb_momentum.html#index-0">fix lb/momentum</a>
   </dt>
 
       
   <dt><a href="fix_lb_pc.html#index-0">fix lb/pc</a>
   </dt>
 
       
   <dt><a href="fix_lb_rigid_pc_sphere.html#index-0">fix lb/rigid/pc/sphere</a>
   </dt>
 
       
   <dt><a href="fix_lb_viscous.html#index-0">fix lb/viscous</a>
   </dt>
 
       
   <dt><a href="fix_lineforce.html#index-0">fix lineforce</a>
   </dt>
 
       
   <dt><a href="fix_manifoldforce.html#index-0">fix manifoldforce</a>
   </dt>
 
       
   <dt><a href="fix_meso.html#index-0">fix meso</a>
   </dt>
 
       
   <dt><a href="fix_meso_stationary.html#index-0">fix meso/stationary</a>
   </dt>
 
       
   <dt><a href="fix_momentum.html#index-0">fix momentum</a>
   </dt>
 
       
   <dt><a href="fix_move.html#index-0">fix move</a>
   </dt>
 
       
   <dt><a href="fix_msst.html#index-0">fix msst</a>
   </dt>
 
       
   <dt><a href="fix_neb.html#index-0">fix neb</a>
   </dt>
 
       
   <dt><a href="fix_nph_asphere.html#index-0">fix nph/asphere</a>
   </dt>
 
       
   <dt><a href="fix_nph_body.html#index-0">fix nph/body</a>
   </dt>
 
       
   <dt><a href="fix_nph_sphere.html#index-0">fix nph/sphere</a>
   </dt>
 
       
   <dt><a href="fix_nphug.html#index-0">fix nphug</a>
   </dt>
 
       
   <dt><a href="fix_npt_asphere.html#index-0">fix npt/asphere</a>
   </dt>
 
       
   <dt><a href="fix_npt_body.html#index-0">fix npt/body</a>
   </dt>
 
       
   <dt><a href="fix_npt_sphere.html#index-0">fix npt/sphere</a>
   </dt>
 
       
   <dt><a href="fix_nve.html#index-0">fix nve</a>, <a href="foo.html#index-0">[1]</a>
   </dt>
 
       
   <dt><a href="fix_nve_asphere.html#index-0">fix nve/asphere</a>
   </dt>
 
       
   <dt><a href="fix_nve_asphere_noforce.html#index-0">fix nve/asphere/noforce</a>
   </dt>
 
       
   <dt><a href="fix_nve_body.html#index-0">fix nve/body</a>
   </dt>
 
       
   <dt><a href="fix_nve_eff.html#index-0">fix nve/eff</a>
   </dt>
 
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="fix_nve_limit.html#index-0">fix nve/limit</a>
   </dt>
 
-  </dl></td>
-  <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="fix_nve_line.html#index-0">fix nve/line</a>
   </dt>
 
       
   <dt><a href="fix_nve_manifold_rattle.html#index-0">fix nve/manifold/rattle</a>
   </dt>
 
       
   <dt><a href="fix_nve_noforce.html#index-0">fix nve/noforce</a>
   </dt>
 
       
   <dt><a href="fix_nve_sphere.html#index-0">fix nve/sphere</a>
   </dt>
 
       
   <dt><a href="fix_nve_tri.html#index-0">fix nve/tri</a>
   </dt>
 
       
   <dt><a href="fix_nh.html#index-0">fix nvt</a>
   </dt>
 
       
   <dt><a href="fix_nvt_asphere.html#index-0">fix nvt/asphere</a>
   </dt>
 
       
   <dt><a href="fix_nvt_body.html#index-0">fix nvt/body</a>
   </dt>
 
       
   <dt><a href="fix_nh_eff.html#index-0">fix nvt/eff</a>
   </dt>
 
       
   <dt><a href="fix_nvt_manifold_rattle.html#index-0">fix nvt/manifold/rattle</a>
   </dt>
 
       
   <dt><a href="fix_nvt_sllod.html#index-0">fix nvt/sllod</a>
   </dt>
 
       
   <dt><a href="fix_nvt_sllod_eff.html#index-0">fix nvt/sllod/eff</a>
   </dt>
 
       
   <dt><a href="fix_nvt_sphere.html#index-0">fix nvt/sphere</a>
   </dt>
 
       
   <dt><a href="fix_oneway.html#index-0">fix oneway</a>
   </dt>
 
       
   <dt><a href="fix_orient.html#index-0">fix orient/fcc</a>
   </dt>
 
       
   <dt><a href="fix_phonon.html#index-0">fix phonon</a>
   </dt>
 
       
   <dt><a href="fix_pimd.html#index-0">fix pimd</a>
   </dt>
 
       
   <dt><a href="fix_planeforce.html#index-0">fix planeforce</a>
   </dt>
 
       
   <dt><a href="fix_pour.html#index-0">fix pour</a>
   </dt>
 
       
   <dt><a href="fix_press_berendsen.html#index-0">fix press/berendsen</a>
   </dt>
 
       
   <dt><a href="fix_print.html#index-0">fix print</a>
   </dt>
 
       
   <dt><a href="fix_property_atom.html#index-0">fix property/atom</a>
   </dt>
 
       
   <dt><a href="fix_qbmsst.html#index-0">fix qbmsst</a>
   </dt>
 
       
   <dt><a href="fix_qeq_comb.html#index-0">fix qeq/comb</a>
   </dt>
 
       
   <dt><a href="fix_qeq.html#index-0">fix qeq/point</a>
   </dt>
 
       
   <dt><a href="fix_qeq_reax.html#index-0">fix qeq/reax</a>
   </dt>
 
       
   <dt><a href="fix_qmmm.html#index-0">fix qmmm</a>
   </dt>
 
       
   <dt><a href="fix_qtb.html#index-0">fix qtb</a>
   </dt>
 
       
   <dt><a href="fix_reax_bonds.html#index-0">fix reax/bonds</a>
   </dt>
 
       
   <dt><a href="fix_reaxc_species.html#index-0">fix reax/c/species</a>
   </dt>
 
       
   <dt><a href="fix_recenter.html#index-0">fix recenter</a>
   </dt>
 
       
   <dt><a href="fix_restrain.html#index-0">fix restrain</a>
   </dt>
 
       
   <dt><a href="fix_rigid.html#index-0">fix rigid</a>
   </dt>
 
       
   <dt><a href="fix_rx.html#index-0">fix rx</a>
   </dt>
 
       
   <dt><a href="fix_saed_vtk.html#index-0">fix saed/vtk</a>
   </dt>
 
       
   <dt><a href="fix_setforce.html#index-0">fix setforce</a>
   </dt>
 
       
   <dt><a href="fix_shake.html#index-0">fix shake</a>
   </dt>
 
       
   <dt><a href="fix_shardlow.html#index-0">fix shardlow</a>
   </dt>
 
       
   <dt><a href="fix_smd.html#index-0">fix smd</a>
   </dt>
 
       
   <dt><a href="fix_smd_adjust_dt.html#index-0">fix smd/adjust_dt</a>
   </dt>
 
       
   <dt><a href="fix_smd_integrate_tlsph.html#index-0">fix smd/integrate_tlsph</a>
   </dt>
 
       
   <dt><a href="fix_smd_integrate_ulsph.html#index-0">fix smd/integrate_ulsph</a>
   </dt>
 
       
   <dt><a href="fix_smd_move_triangulated_surface.html#index-0">fix smd/move_tri_surf</a>
   </dt>
 
       
   <dt><a href="fix_smd_setvel.html#index-0">fix smd/setvel</a>
   </dt>
 
       
   <dt><a href="fix_smd_wall_surface.html#index-0">fix smd/wall_surface</a>
   </dt>
 
       
   <dt><a href="fix_spring.html#index-0">fix spring</a>
   </dt>
 
       
   <dt><a href="fix_spring_chunk.html#index-0">fix spring/chunk</a>
   </dt>
 
       
   <dt><a href="fix_spring_rg.html#index-0">fix spring/rg</a>
   </dt>
 
       
   <dt><a href="fix_spring_self.html#index-0">fix spring/self</a>
   </dt>
 
       
   <dt><a href="fix_srd.html#index-0">fix srd</a>
   </dt>
 
       
   <dt><a href="fix_store_force.html#index-0">fix store/force</a>
   </dt>
 
       
   <dt><a href="fix_store_state.html#index-0">fix store/state</a>
   </dt>
 
       
   <dt><a href="fix_temp_berendsen.html#index-0">fix temp/berendsen</a>
   </dt>
 
       
   <dt><a href="fix_temp_csvr.html#index-0">fix temp/csvr</a>
   </dt>
 
       
   <dt><a href="fix_temp_rescale.html#index-0">fix temp/rescale</a>
   </dt>
 
       
   <dt><a href="fix_temp_rescale_eff.html#index-0">fix temp/rescale/eff</a>
   </dt>
 
       
   <dt><a href="fix_tfmc.html#index-0">fix tfmc</a>
   </dt>
 
       
   <dt><a href="fix_thermal_conductivity.html#index-0">fix thermal/conductivity</a>
   </dt>
 
       
   <dt><a href="fix_ti_rs.html#index-0">fix ti/rs</a>
   </dt>
 
       
   <dt><a href="fix_ti_spring.html#index-0">fix ti/spring</a>
   </dt>
 
       
   <dt><a href="fix_tmd.html#index-0">fix tmd</a>
   </dt>
 
       
   <dt><a href="fix_ttm.html#index-0">fix ttm</a>
   </dt>
 
       
   <dt><a href="fix_tune_kspace.html#index-0">fix tune/kspace</a>
   </dt>
 
       
   <dt><a href="fix_vector.html#index-0">fix vector</a>
   </dt>
 
       
   <dt><a href="fix_viscosity.html#index-0">fix viscosity</a>
   </dt>
 
       
   <dt><a href="fix_viscous.html#index-0">fix viscous</a>
   </dt>
 
       
   <dt><a href="fix_wall_gran.html#index-0">fix wall/gran</a>
   </dt>
 
       
   <dt><a href="fix_wall.html#index-0">fix wall/lj93</a>
   </dt>
 
       
   <dt><a href="fix_wall_piston.html#index-0">fix wall/piston</a>
   </dt>
 
       
   <dt><a href="fix_wall_reflect.html#index-0">fix wall/reflect</a>
   </dt>
 
       
   <dt><a href="fix_wall_region.html#index-0">fix wall/region</a>
   </dt>
 
       
   <dt><a href="fix_wall_srd.html#index-0">fix wall/srd</a>
   </dt>
 
       
   <dt><a href="fix_modify.html#index-0">fix_modify</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="G">G</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="group.html#index-0">group</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="group2ndx.html#index-0">group2ndx</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="I">I</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="if.html#index-0">if</a>
   </dt>
 
       
   <dt><a href="improper_coeff.html#index-0">improper_coeff</a>
   </dt>
 
       
   <dt><a href="improper_style.html#index-0">improper_style</a>
   </dt>
 
       
   <dt><a href="improper_class2.html#index-0">improper_style class2</a>
   </dt>
 
       
   <dt><a href="improper_cossq.html#index-0">improper_style cossq</a>
   </dt>
 
       
   <dt><a href="improper_cvff.html#index-0">improper_style cvff</a>
   </dt>
 
       
   <dt><a href="improper_distance.html#index-0">improper_style distance</a>
   </dt>
 
       
   <dt><a href="improper_fourier.html#index-0">improper_style fourier</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="improper_harmonic.html#index-0">improper_style harmonic</a>
   </dt>
 
       
   <dt><a href="improper_hybrid.html#index-0">improper_style hybrid</a>
   </dt>
 
       
   <dt><a href="improper_none.html#index-0">improper_style none</a>
   </dt>
 
       
   <dt><a href="improper_ring.html#index-0">improper_style ring</a>
   </dt>
 
       
   <dt><a href="improper_umbrella.html#index-0">improper_style umbrella</a>
   </dt>
 
       
   <dt><a href="improper_zero.html#index-0">improper_style zero</a>
   </dt>
 
       
   <dt><a href="include.html#index-0">include</a>
   </dt>
 
       
   <dt><a href="info.html#index-0">info</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="J">J</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="jump.html#index-0">jump</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="K">K</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="kspace_modify.html#index-0">kspace_modify</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="kspace_style.html#index-0">kspace_style</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="L">L</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="label.html#index-0">label</a>
   </dt>
 
       
   <dt><a href="lattice.html#index-0">lattice</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="log.html#index-0">log</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="M">M</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="mass.html#index-0">mass</a>
   </dt>
 
       
   <dt><a href="min_modify.html#index-0">min_modify</a>
   </dt>
 
       
   <dt><a href="min_style.html#index-0">min_style</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="minimize.html#index-0">minimize</a>
   </dt>
 
       
   <dt><a href="molecule.html#index-0">molecule</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="N">N</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="neb.html#index-0">neb</a>
   </dt>
 
       
   <dt><a href="neigh_modify.html#index-0">neigh_modify</a>
   </dt>
 
       
   <dt><a href="neighbor.html#index-0">neighbor</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="newton.html#index-0">newton</a>
   </dt>
 
       
   <dt><a href="next.html#index-0">next</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="P">P</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="package.html#index-0">package</a>
   </dt>
 
       
   <dt><a href="pair_coeff.html#index-0">pair_coeff</a>
   </dt>
 
       
   <dt><a href="pair_modify.html#index-0">pair_modify</a>
   </dt>
 
       
   <dt><a href="pair_style.html#index-0">pair_style</a>
   </dt>
 
       
   <dt><a href="pair_adp.html#index-0">pair_style adp</a>
   </dt>
 
       
   <dt><a href="pair_airebo.html#index-0">pair_style airebo</a>
   </dt>
 
       
   <dt><a href="pair_awpmd.html#index-0">pair_style awpmd/cut</a>
   </dt>
 
       
   <dt><a href="pair_beck.html#index-0">pair_style beck</a>
   </dt>
 
       
   <dt><a href="pair_body.html#index-0">pair_style body</a>
   </dt>
 
       
   <dt><a href="pair_bop.html#index-0">pair_style bop</a>
   </dt>
 
       
   <dt><a href="pair_born.html#index-0">pair_style born</a>
   </dt>
 
       
   <dt><a href="pair_cs.html#index-0">pair_style born/coul/long/cs</a>
   </dt>
 
       
   <dt><a href="pair_brownian.html#index-0">pair_style brownian</a>
   </dt>
 
       
   <dt><a href="pair_buck.html#index-0">pair_style buck</a>
   </dt>
 
       
   <dt><a href="pair_buck_long.html#index-0">pair_style buck/long/coul/long</a>
   </dt>
 
       
   <dt><a href="pair_colloid.html#index-0">pair_style colloid</a>
   </dt>
 
       
   <dt><a href="pair_comb.html#index-0">pair_style comb</a>
   </dt>
 
       
   <dt><a href="pair_coul.html#index-0">pair_style coul/cut</a>
   </dt>
 
       
   <dt><a href="pair_coul_diel.html#index-0">pair_style coul/diel</a>
   </dt>
 
       
   <dt><a href="pair_dpd.html#index-0">pair_style dpd</a>
   </dt>
 
       
   <dt><a href="pair_dpd_fdt.html#index-0">pair_style dpd/fdt</a>
   </dt>
 
       
   <dt><a href="pair_dsmc.html#index-0">pair_style dsmc</a>
   </dt>
 
       
   <dt><a href="pair_eam.html#index-0">pair_style eam</a>
   </dt>
 
       
   <dt><a href="pair_edip.html#index-0">pair_style edip</a>
   </dt>
 
       
   <dt><a href="pair_eff.html#index-0">pair_style eff/cut</a>
   </dt>
 
       
   <dt><a href="pair_eim.html#index-0">pair_style eim</a>
   </dt>
 
       
   <dt><a href="pair_exp6_rx.html#index-0">pair_style exp6/rx</a>
   </dt>
 
       
   <dt><a href="pair_gauss.html#index-0">pair_style gauss</a>
   </dt>
 
       
   <dt><a href="pair_gayberne.html#index-0">pair_style gayberne</a>
   </dt>
 
       
   <dt><a href="pair_gran.html#index-0">pair_style gran/hooke</a>
   </dt>
 
       
   <dt><a href="pair_hbond_dreiding.html#index-0">pair_style hbond/dreiding/lj</a>
   </dt>
 
       
   <dt><a href="pair_hybrid.html#index-0">pair_style hybrid</a>
   </dt>
 
       
   <dt><a href="pair_kim.html#index-0">pair_style kim</a>
   </dt>
 
       
   <dt><a href="pair_lcbop.html#index-0">pair_style lcbop</a>
   </dt>
 
       
   <dt><a href="pair_line_lj.html#index-0">pair_style line/lj</a>
   </dt>
 
       
   <dt><a href="pair_list.html#index-0">pair_style list</a>
   </dt>
 
       
   <dt><a href="pair_charmm.html#index-0">pair_style lj/charmm/coul/charmm</a>
   </dt>
 
       
   <dt><a href="pair_class2.html#index-0">pair_style lj/class2</a>
   </dt>
 
       
   <dt><a href="pair_lj_cubic.html#index-0">pair_style lj/cubic</a>
   </dt>
 
       
   <dt><a href="pair_lj.html#index-0">pair_style lj/cut</a>
   </dt>
 
       
   <dt><a href="pair_dipole.html#index-0">pair_style lj/cut/dipole/cut</a>
   </dt>
 
       
   <dt><a href="pair_lj_soft.html#index-0">pair_style lj/cut/soft</a>
   </dt>
 
       
   <dt><a href="pair_lj_expand.html#index-0">pair_style lj/expand</a>
   </dt>
 
       
   <dt><a href="pair_gromacs.html#index-0">pair_style lj/gromacs</a>
   </dt>
 
       
   <dt><a href="pair_lj_long.html#index-0">pair_style lj/long/coul/long</a>
   </dt>
 
       
   <dt><a href="pair_mdf.html#index-0">pair_style lj/mdf</a>
   </dt>
 
       
   <dt><a href="pair_sdk.html#index-0">pair_style lj/sdk</a>
   </dt>
 
       
   <dt><a href="pair_lj_sf.html#index-0">pair_style lj/sf</a>
   </dt>
 
       
   <dt><a href="pair_lj_smooth.html#index-0">pair_style lj/smooth</a>
   </dt>
 
       
   <dt><a href="pair_lj_smooth_linear.html#index-0">pair_style lj/smooth/linear</a>
   </dt>
 
       
   <dt><a href="pair_lj96.html#index-0">pair_style lj96/cut</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="pair_lubricate.html#index-0">pair_style lubricate</a>
   </dt>
 
       
   <dt><a href="pair_lubricateU.html#index-0">pair_style lubricateU</a>
   </dt>
 
       
   <dt><a href="pair_meam.html#index-0">pair_style meam</a>
   </dt>
 
       
   <dt><a href="pair_mgpt.html#index-0">pair_style mgpt</a>
   </dt>
 
       
   <dt><a href="pair_mie.html#index-0">pair_style mie/cut</a>
   </dt>
 
       
   <dt><a href="pair_morse.html#index-0">pair_style morse</a>
   </dt>
 
       
   <dt><a href="pair_multi_lucy.html#index-0">pair_style multi/lucy</a>
   </dt>
 
       
   <dt><a href="pair_multi_lucy_rx.html#index-0">pair_style multi/lucy/rx</a>
   </dt>
 
       
   <dt><a href="pair_nb3b_harmonic.html#index-0">pair_style nb3b/harmonic</a>
   </dt>
 
       
   <dt><a href="pair_nm.html#index-0">pair_style nm/cut</a>
   </dt>
 
       
   <dt><a href="pair_none.html#index-0">pair_style none</a>
   </dt>
 
       
   <dt><a href="pair_peri.html#index-0">pair_style peri/pmb</a>
   </dt>
 
       
   <dt><a href="pair_polymorphic.html#index-0">pair_style polymorphic</a>
   </dt>
 
       
   <dt><a href="pair_quip.html#index-0">pair_style quip</a>
   </dt>
 
       
   <dt><a href="pair_reax.html#index-0">pair_style reax</a>
   </dt>
 
       
   <dt><a href="pair_reax_c.html#index-0">pair_style reax/c</a>
   </dt>
 
       
   <dt><a href="pair_resquared.html#index-0">pair_style resquared</a>
   </dt>
 
       
   <dt><a href="pair_smd_hertz.html#index-0">pair_style smd/hertz</a>
   </dt>
 
       
   <dt><a href="pair_smd_tlsph.html#index-0">pair_style smd/tlsph</a>
   </dt>
 
       
   <dt><a href="pair_smd_triangulated_surface.html#index-0">pair_style smd/tri_surface</a>
   </dt>
 
       
   <dt><a href="pair_smd_ulsph.html#index-0">pair_style smd/ulsph</a>
   </dt>
 
       
   <dt><a href="pair_smtbq.html#index-0">pair_style smtbq</a>
   </dt>
 
       
   <dt><a href="pair_snap.html#index-0">pair_style snap</a>
   </dt>
 
       
   <dt><a href="pair_soft.html#index-0">pair_style soft</a>
   </dt>
 
       
   <dt><a href="pair_sph_heatconduction.html#index-0">pair_style sph/heatconduction</a>
   </dt>
 
       
   <dt><a href="pair_sph_idealgas.html#index-0">pair_style sph/idealgas</a>
   </dt>
 
       
   <dt><a href="pair_sph_lj.html#index-0">pair_style sph/lj</a>
   </dt>
 
       
   <dt><a href="pair_sph_rhosum.html#index-0">pair_style sph/rhosum</a>
   </dt>
 
       
   <dt><a href="pair_sph_taitwater.html#index-0">pair_style sph/taitwater</a>
   </dt>
 
       
   <dt><a href="pair_sph_taitwater_morris.html#index-0">pair_style sph/taitwater/morris</a>
   </dt>
 
       
   <dt><a href="pair_srp.html#index-0">pair_style srp</a>
   </dt>
 
       
   <dt><a href="pair_sw.html#index-0">pair_style sw</a>
   </dt>
 
       
   <dt><a href="pair_table.html#index-0">pair_style table</a>
   </dt>
 
       
   <dt><a href="pair_table_rx.html#index-0">pair_style table/rx</a>
   </dt>
 
       
   <dt><a href="pair_tersoff.html#index-0">pair_style tersoff</a>
   </dt>
 
       
   <dt><a href="pair_tersoff_mod.html#index-0">pair_style tersoff/mod</a>
   </dt>
 
       
   <dt><a href="pair_tersoff_zbl.html#index-0">pair_style tersoff/zbl</a>
   </dt>
 
       
   <dt><a href="pair_thole.html#index-0">pair_style thole</a>
   </dt>
 
       
   <dt><a href="pair_tri_lj.html#index-0">pair_style tri/lj</a>
   </dt>
 
       
   <dt><a href="pair_vashishta.html#index-0">pair_style vashishta</a>
   </dt>
 
       
   <dt><a href="pair_yukawa.html#index-0">pair_style yukawa</a>
   </dt>
 
       
   <dt><a href="pair_yukawa_colloid.html#index-0">pair_style yukawa/colloid</a>
   </dt>
 
       
   <dt><a href="pair_zbl.html#index-0">pair_style zbl</a>
   </dt>
 
       
   <dt><a href="pair_zero.html#index-0">pair_style zero</a>
   </dt>
 
       
   <dt><a href="pair_write.html#index-0">pair_write</a>
   </dt>
 
       
   <dt><a href="partition.html#index-0">partition</a>
   </dt>
 
       
   <dt><a href="prd.html#index-0">prd</a>
   </dt>
 
       
   <dt><a href="print.html#index-0">print</a>
   </dt>
 
       
   <dt><a href="processors.html#index-0">processors</a>
   </dt>
 
       
   <dt><a href="python.html#index-0">python</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="Q">Q</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="quit.html#index-0">quit</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="R">R</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="read_data.html#index-0">read_data</a>
   </dt>
 
       
   <dt><a href="read_dump.html#index-0">read_dump</a>
   </dt>
 
       
   <dt><a href="read_restart.html#index-0">read_restart</a>
   </dt>
 
       
   <dt><a href="region.html#index-0">region</a>
   </dt>
 
       
   <dt><a href="replicate.html#index-0">replicate</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="rerun.html#index-0">rerun</a>
   </dt>
 
       
   <dt><a href="reset_timestep.html#index-0">reset_timestep</a>
   </dt>
 
       
   <dt><a href="restart.html#index-0">restart</a>
   </dt>
 
       
   <dt><a href="run.html#index-0">run</a>
   </dt>
 
       
   <dt><a href="run_style.html#index-0">run_style</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="S">S</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="set.html#index-0">set</a>
   </dt>
 
       
   <dt><a href="shell.html#index-0">shell</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="special_bonds.html#index-0">special_bonds</a>
   </dt>
 
       
   <dt><a href="suffix.html#index-0">suffix</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="T">T</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="tad.html#index-0">tad</a>
   </dt>
 
       
   <dt><a href="temper.html#index-0">temper</a>
   </dt>
 
       
   <dt><a href="thermo.html#index-0">thermo</a>
   </dt>
 
       
   <dt><a href="thermo_modify.html#index-0">thermo_modify</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="thermo_style.html#index-0">thermo_style</a>
   </dt>
 
       
   <dt><a href="timer.html#index-0">timer</a>
   </dt>
 
       
   <dt><a href="timestep.html#index-0">timestep</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="U">U</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="uncompute.html#index-0">uncompute</a>
   </dt>
 
       
   <dt><a href="undump.html#index-0">undump</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="unfix.html#index-0">unfix</a>
   </dt>
 
       
   <dt><a href="units.html#index-0">units</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="V">V</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="variable.html#index-0">variable</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="velocity.html#index-0">velocity</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 <h2 id="W">W</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="write_coeff.html#index-0">write_coeff</a>
   </dt>
 
       
   <dt><a href="write_data.html#index-0">write_data</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
   <dt><a href="write_dump.html#index-0">write_dump</a>
   </dt>
 
       
   <dt><a href="write_restart.html#index-0">write_restart</a>
   </dt>
 
   </dl></td>
 </tr></table>
 
 
 
            </div>
           </div>
           <footer>
   
 
   <hr/>
 
   <div role="contentinfo">
     <p>
         &copy; 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 622bf39e1..655458bf7 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_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_controller","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","foo","improper_class2","improper_cossq","improper_cvff","improper_distance","improper_fourier","improper_harmonic","improper_ring","improper_umbrella","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_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":57,"100k":1,"1024x1024":57,"10e":107,"10x":[91,92,97],"12th":74,"16e":74,"16x":1,"18986e":91,"1_prop":2,"1fluid":[115,141],"1st":[2,5,32,45,65,68,74,93,94,97,104,111,113,114,115,128,129,134,135,136,140,141,142,144,148,154,155,156,157,158],"2000k":57,"20x":97,"23899e":91,"2400k":57,"2697v2":4,"2697v4":4,"298k":106,"2k_ss":113,"2nd":[2,3,21,22,61,65,68,83,91,92,94,104,113,120,134,140,141,148,154,155,156,157,158],"2theta":43,"2x5":113,"36x":4,"3806504e":[2,35],"3n_k":66,"3nk":72,"3rd":[5,37,65,104,113,115,120,140,141,148,154,155,156,157,158],"3x3":35,"4857990943e":113,"49e":74,"4_94":3,"4th":[2,45,74,93,94,97,111,114,115,118,134,140,141,142,144,148,154,155,157,158],"50k":1,"512k":4,"524k":4,"5_1":97,"5th":[91,115],"66e":74,"6x6":2,"7120p":4,"8706e":147,"8706q":147,"8730m":147,"8730n":147,"8x1":2,"8x2":2,"948q":147,"9jan09":118,"9th":92,"break":[28,113],"case":[1,2,3,4,19,21,22,29,30,44,45,57,59,61,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,140,141,142,144,149,153,155,157,161,162],"catch":1,"char":[2,147],"class":[1,2,3,56,102,158],"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,57],"final":[2,3,19,32,42,59,61,68,69,72,74,77,79,91,92,93,94,97,111,114,115,130,134,142,144,154,155,157,158,162],"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,41,45,46,47,48,49,50,51,52,53,54,55,58,61,65,66,67,68,69,71,73,74,75,77,78,79,80,82,83,84,85,87,88,89,90,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,149,150,151,152,154,155,156,157,158,159,160,161],"import":[1,2,3,37,44,49,61,68,79,130,137],"int":[2,3,79],"long":[1,2,4,18,32,39,42,45,50,57,58,63,68,75,79,91,92,95],"new":[0,2,3,19,32,44,57,59,60,61,63,68,69,71,75,91,92,111,134,137,140,141,162],"null":[2,35,36,38,39,42,44,74,76,93,94,104,111,114,118,134,135,136,142,144,148,154,155,156,157,158],"public":[0,114,140,141,147],"return":[2,3,4,19,44,68,118],"short":[1,2,4,68,94,97,98,99,100,101,104,105,107,113,122,126,130,133,134,139,143,146,147,162],"static":[2,19,57,59,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,41,43,45,46,47,48,49,50,51,52,53,54,57,67,68,69,75,77,78,82,83,84,85,87,88,89,90,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,139,142,143,145,146,149,154,155,156,157,158,159,160,161,162],"true":[2,59,68,70,71,113,118,147,154],"try":[1,67,77,78,162],"var":[3,44],"void":[2,19,59],"while":[1,3,29,37,41,49,61,62,66,67,68,72,74,91,97,106,111,155,157,158],_j1m1m1:41,_j2m2m2:41,_manifold_rattl:162,_wirnsberg:63,a12:145,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:157,a_ij:97,a_pi:97,a_sigma:97,a_ss:103,aat:46,aberdeen:[31,64],abil:[61,68,113],abl:[3,60],ablat:79,about:[0,1,2,3,4,19,40,44,57,58,59,60,61,62,63,67,69,70,73,75,76,77,78,79,80,81,82,91,92,96,101,105,160,162],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,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57,59,60,61,62,68,69,71,73,74,83,84,85,86,87,88,89,90,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,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],abscissa:[140,141],absolut:[74,91,118,122],absorb:79,abstol:74,ac3:43,acceler:0,accelri:2,accept:[32,44,60,74,100,126,162],acceptor:120,access:[0,2,3,4,29,30,31,33,34,35,36,37,38,39,40,41,42,43,58,59,60,61,62,63,66,67,68,69,70,72,73,75,76,77,78,79,80,81,82,94,116,118,120,134,149],accident:162,accidenti:89,accomod:68,accomplish:4,accord:[2,31,57,65,67,68,72,77,78,79,80,81,113,118,125,128,144,147,149,150,151,152,153],accordingli:[3,131,132,153],account:[2,32,40,43,56,63,68,70,75,76,79,87,105,110,118,122,126,131,132,134,137,147,162],accumul:[2,31],accur:[1,2,19,59,74,75,81,97,113,117,118,145,155,157],accuraci:[1,2,19,59,63,68,75,94,113,140,141],achiev:[1,2,4,13,19,59,63,68,71,72],ackland1:111,ackland2:111,ackland:111,acknowledg:0,acolor:57,acquir:[2,61,68],across:[1,2,19,59,74,79,81,92],act:[2,67,77,78,79,81,91,108,117,118,120,145,153],acta:[40,43,93],actinid:137,action:[2,3,66,78],activ:[3,4,32,66,74,130],actual:[1,2,62,70,117,119,125,131,132,153],adapt:[2,32,62,74,130,131,149],adapti:70,adaptiv:94,add:[0,1,2,3,4,32,35,44,57,58,62,63,67,68,69,70,73,75,78,79,80,81,94,98,99,102,105,113,122,134,139,143,146,162],add_molecul:58,add_speci:58,add_to_nodeset:58,added:162,addforc:91,adding:[73,162],addit:[1,2,4,5,13,19,44,55,56,57,59,61,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,140,141,142,143,144,146,147,148,154,155,156,157,158,161,162],addition:[0,2,3,4,57,79,92,117,145,162],address:[3,57,162],addtorqu:91,adequ:92,adher:13,adhikari:67,adiabat:0,adiam:57,adjac:[44,63,92,155],adjiman:138,adjust:[2,4,19,40,43,57,59,61,62,68,69,70,72,74,80,91,92,94,131,132,147,157],admiss:69,adopt:73,advanc:[4,97],advantag:[1,2,3,19,59,62,112],advect:2,advis:[74,92],affect:[1,2,42,57,60,61,63,76,79,89,91,92,113,131,132],affin:[4,104],afshar:109,after:[2,3,6,19,46,55,57,58,59,60,61,62,67,68,72,74,75,77,78,80,83,91,93,94,97,104,111,112,113,114,115,130,131,132,134,135,136,137,140,141,142,144,147,148,154,155,156,157,158,162],afterword:19,ag1:43,ag2:43,again:[2,3,41,63,83,92,131,132],against:[3,92],aggreg:[2,76],aggress:63,agre:[91,94],ahd:120,aidan:0,aim:2,aka:57,al2o3:147,al2o3_001:40,al3:43,ala:[67,147],alat:[70,134],albe:[144,155,157],albeit:73,alchem:32,alcu:[93,97],alcu_eam:144,alderton:108,alejandr:68,algebra:137,algorithm:[0,1,2,19,58,59,60,63,67,71,75,79,91,110,113,132,137],alia:4,alias:1,align:[2,13,19,59],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,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,87,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,160,161,162],allen:[13,32,108,117],allentildeslei:32,alloc:[2,3],alloi:[93,97,105],allow:[1,2,3,4,19,36,38,43,44,56,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,144,145,147,153,160,162],almost:[4,72,79,153],alo:105,alon:[2,60],along:[2,13,29,32,40,43,44,57,60,63,67,72,75,76,79,81,91,92,105,108,118,122,126,134],alonso:[135,136],alpha:[2,26,62,67,72,91,93,95,98,105,109,110,111,112,114,115,120,121,122,134,139,156],alpha_c:130,alpha_i:148,alpha_lj:130,alphabet:56,alreadi:[44,59,72,92,109,119,124,132,153,161],also:[0,1,2,3,4,13,18,19,28,29,30,31,32,33,34,36,37,38,39,41,42,44,45,56,57,59,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,142,144,145,146,150,151,152,154,155,156,157,158,162],alter:[2,3,19,44,57,60,61,62,68,92],altern:[1,2,3,4,35,44,64,68,74,84,88,91,93,94,105,110,111,112,114,122,130,134,135,136,142,144,148,154,155,157,158],alternat:91,although:[4,13,68],aluminum:161,alwai:[0,2,3,4,28,80,81,83,91,99,102,111,125,137,140,141,147,149,155,157,161],amaz:3,amber2lmp:0,amber:0,ambient:57,amd:137,among:[4,42,67],amorph:[44,156],amount:[1,2,57,61,68,70,74,109],amplitud:89,amzallag:147,analag:2,analalog:2,analog:[2,38,41,62,118],analysi:[30,137,148],analyt:[1,40,43,75,97,124,137,144],analyz:[2,92,137],andersen:75,anderson:109,andzelm:153,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,40,41,42,43,44,46,47,48,50,52,54,55,56,57,60,68,73,75,83,84,85,87,88,89,90,91,94,97,105,112,120,122,126,130,135,136,142,158],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,47],angle_cutof:120,angle_cutoff:120,angle_hybrid:13,angle_styl:[0,2],angleangl:83,angleangletors:46,angletors:46,angmom:2,angstrom:[2,40,43,44,57,80,93,94,101,111,130,134,142,157,161],angular:[2,13,41,44,75,93,97,104,118,131,132,134,137,144,155,156],anharmon:[11,27,47],ani:[1,2,3,4,13,19,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,55,57,59,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,140,141,144,145,148,154,155,156,157,158,162],anihil:[130,139],anim:[3,57,92],animat:57,anion:[114,147],aniso:[61,68,69],anisotrop:[117,145],ann:138,annoi:162,annot:[154,155,156,157,158],anoth:[2,3,4,13,57,60,63,66,68,69,79,91,92,105,109,113,114,117,120,121,122,130,145,149,153,155,156,157,162],another:[1,2,32],ansi:4,anthoni:78,antisymmetri:113,antonelli:[77,78],any:[1,2,57,153],anymor:78,anyth:[3,44,154,155,157,162],anywher:[44,134,148],aparam:32,apart:[96,149],api:3,appear:[2,3,19,32,36,38,41,44,57,59,61,83,91,92,103,111,134,140,141,147,158],append:[1,3,4,19,29,32,34,35,36,37,38,39,40,41,42,43,44,57,59,60,61,62,63,66,67,68,69,71,72,73,75,78,80,97,113,153],appendix:[13,108,147],appl:[61,68,158],appli:[2,13,19,32,37,41,42,43,44,45,56,57,58,59,61,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,141,143,146,153,160],applic:[1,2,4,60,62,70,73,157],applicat:58,appling:61,apply:[32,61,75,76],approach:[2,4,55,58,66,71,78,79,97,105,107,110,117,137,145,153],appropri:[1,2,3,30,35,56,60,61,67,68,69,71,72,80,81,92,94,97,100,103,104,105,112,118,126,130,137,154,155,156,157,158],approxim:[2,40,43,67,71,75,91,107,113,115,117,131,132,137,141,145,147,160],april:3,apu:[131,132],aqua:57,ar_thermal:58,ar_ttm:58,arbitrari:[2,57,68,71,74,154],arbitrarili:[3,41,61,68,105],arch:1,architectur:137,archiv:2,archive:3,area:[2,19,35,39,59,67,118],arg:[3,19,32,44,59,63,73,78,80,92,98,99,101,102,107,108,110,113,119,122,126,130,131,132,133,139,143,146],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,41,42,44,45,46,47,48,49,50,51,52,53,54,59,61,65,68,69,74,75,79,82,83,84,85,87,88,89,90,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,154,155,156,157,158,159,160,161],aris:160,arithmet:[2,101,103,125],arl:[31,64],army:[31,64],around:[1,2,29,30,41,44,45,55,57,61,68,80,81,147],arrang:41,arrheniu:74,arriv:4,articl:[2,147],artifici:[72,150,151],arxiv:[41,148],ascend:19,ascii:[92,111,114,134],ash:[131,132],aside:[44,134],ask:[3,162],asoci:57,aspect:[2,117,145],aspher:0,asphere:[117,145],asq:[131,132],assign:[1,2,3,19,34,40,41,42,43,44,57,59,60,61,62,67,68,69,71,92,97,111,114,117,120,140,141,145,161],assignemnt:2,associ:[2,32,33,34,56,57,61,66,67,68,73,74,76,91,92,105,109,110,111,113,120,122,126,140,141,153],assum:[2,3,44,61,67,70,79,80,86,92,97,100,103,113,120,121,126,131,132,162],assume:92,assumpt:93,astar:134,astart:149,asterisk:[32,120,153],astop:[91,149],asu:111,asub:134,asymmetr:[63,97,111],asynchron:4,atc_fe_output:58,athomp:0,atm2pa:2,atom1:73,atom2:73,atom3:73,atom4:73,atom:[0,1],atom_element_map:58,atom_modifi:[3,92],atom_styl:[2,31,44,57,64,65,68,74,92,96,103,108,110,113,114,117,118,132,145,160],atom_weight:58,atomey:[2,3,57],atomfil:2,atomic:[0,147],atomic_charg:58,atomic_numb:144,atomist:[2,58,137],attach:[2,71],attatch:78,attempt:[2,19,59,60,92],attend:58,attrac:134,attract:[0,21,22,94,100,103,126,134,138,147,160],attribut:[2,3,32,57,60,61,62,68,69,97,113],atw:[131,132],atwater:156,atwt:134,atyp:[105,122,126,130],au1:43,au3:43,augment:[61,134],augt1:134,author:[111,112],auto:[2,3,35],autocorrel:35,autom:57,automat:[2,4,18,67,104,111,134,137,161,162],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,41,45,46,47,48,49,50,51,52,53,54,57,61,66,68,69,74,75,78,82,83,84,85,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,142,143,144,145,146,148,149,154,155,156,157,158,159,160,161],availabl:4,avalo:110,ave_chunk:2,aveforc:2,avendano:138,averag:[2,19,31,32,35,36,37,40,43,58,59,61,62,68,69,72,74,83,94,110,113,115,134,141],avi:57,avoid:[1,2,18,44,57,70,71,81,97,113,130,134,139],avx2:4,avx512:4,avx:4,awai:[2,57,60,70,80,105,122,126],awar:112,axel:162,axi:[2,19,29,36,40,43,44,57,59,79,87,90],axial:69,azimuth:57,b_k:148,ba2:43,babadi:145,back:[1,2,3,44,68,77,78,92,118],backbon:[60,75,89],background:[32,39,42,59,79,92,103,131,132,134],backtrack:91,backward:92,baczewski:66,bad:92,badli:[61,68],balanc:[1,2,4],ball:[41,131,132],bammann:58,band:[2,41,92,97,137,147],bandwidth:1,bandwith:57,bar:[32,57],barashev:111,barostat:[0,1],barostt:2,barr:104,barrier:[2,90,92,104,116],bartok2010:148,bartok2013:148,bartok:[41,148],base:[2,3,4,5,32,35,40,43,44,57,58,59,62,71,74,94,95,97,109,113,117,120,122,131,135,136,143,144,147,154,156,157,158,162],bashford:[2,5,45,101],basi:[2,41,44,80],basic:[2,19,42,57,58,59,62,68,70,81,93,137],basin:92,bask:[111,134,144],bath:72,bayli:[2,45],bb13:46,bcc:[29,30],bcolor:57,bdiam:57,be2:43,bead:[21,22,60,71,153],bear:[2,66],becaus:[0,1,2,4,19,36,38,41,44,57,59,60,61,62,66,68,72,79,81,85,91,92,101,105,107,109,113,114,117,118,119,120,121,130,131,132,134,140,141,145,153,162],becker:[93,111],becom:[1,2,4,19,28,44,57,59,60,63,67,68,80,81,92,94,103,105,111,113,117,122,144,145,154,158,160,162],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,45,46,47,48,49,50,51,52,53,54,57,59,60,61,62,67,68,69,72,75,79,80,82,83,84,85,87,88,89,90,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,139,142,143,145,146,149,153,154,155,156,157,158,159,160,161],befor:[1,2,13,19,33,34,37,44,59,61,67,68,72,80,91,92,114,115,118,130,134,137,141,162],begin:[58,59,62,65,74,92,111,115,137,140,141,144,147,149,153,161],begun:74,behav:[11,47,91],behavior:[57,60,61,62,66,68,72,79,97,113,134,161],behaviour:2,behind:72,believ:3,bellott:[2,5,45,101],bellow:87,below:[1,2,3,4,19,28,35,39,40,41,42,43,44,45,56,57,58,59,60,61,62,65,68,69,70,72,73,74,75,77,78,79,80,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,140,141,145,146,148,149,153,158,159,160,161,162],bench:[1,2,3],benchmark:[1,3,4,19,59],benedict:137,benefit:[1,4,66],bennet:32,berardi:[117,145],beraun:79,berendsen:[2,68,69,75],bern:[71,104,117,147],bernendsen:2,beryllium:113,best:[1,2,4,62,68,73,97,105,122,126],beta:[2,72,93,95,111,112,114,134,155,156,157],beta_:97,beta_k:148,beta_pi:97,beta_sigma:97,beta_t:156,better:[2,4,11,41,47,59,67,68,92,155,162],betwe:96,between:1,beutler:130,beyond:[2,32,68,116,128],bflag1:57,bflag2:57,bgq:137,bi3:43,bi5:43,bia:[2,39,42,68],bias:2,biersack:[134,157,161],big:[72,103,162],bin:[2,3,34,72],binari:[2,4,56,57,58,59,60,61,62,63,66,67,68,69,70,72,73,75,76,77,78,79,80,81,82,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,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],binary2txt:0,bind:[97,147],binsiz:4,biolog:2,biologi:50,biomolecul:101,bios:4,bisect:[19,59],bisector:[2,105,122,126],bispectrum:[41,148],bit:[3,162],bitrat:57,bkgd_dyn:134,bks:72,blank:[57,65,74,92,97,112,115,134,140,141,142,148,154,155,156,157,158],blast:79,blend:134,block:[2,35,41,44,81,97,113,144,148,162],blow:[80,81,149],blue:[57,60],bluegen:137,board:108,bodi:0,body:96,bodyforc:67,bodyforcei:67,bodyforcex:67,bodyforcez:67,bogu:61,bohr:[111,113,137,157],boltzmann:[2,32,35,39,60,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,41,42,44,45,46,55,56,57],bond_coeff:[2,20,21,22,23,24,25,26,27,28],bond_harmon:[24,25],bond_harmonic_shift:25,bond_interact:58,bond_styl:[0,2],bondangl:6,bondbond13:46,bondbond:6,bonet:110,book:[160,162],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,44,47,56,57,60,61,63,67,68,72,75,77,78,79,80,81,83,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,143,145,146,154,155,156,157,158],bottleneck:1,bottom:67,bound:[2,10,11,19,47,59,68,80,81,91,113],boundari:[2,33,34,35,37,39,40,42,43,44,57,58,61,67,68,70,72,76,79,80,81,119,131,132,137],boundary_dynam:58,boundary_faceset:58,boundary_integr:58,bounds:[2,19,59],bount:3,box:[0,1],boxcolor:57,boxxlo:3,bptype:153,br1:43,bracket:[2,19,59,62],bragg:[40,43],branch:[3,162],branicio2009:158,branicio:[30,158],breakdown:[1,94],brennan:[31,64,110,140,141,153],brenner:94,brick:[19,59],brief:[1,2,68,94,97],briefli:[2,71,104,147,162],brilliantov:118,broadwel:4,broken:[28,29,68,97],brook:2,brown:[4,40,42],brownian:[2,37,131,132],brows:0,browser:57,bryantsev:120,btype:[105,122,126,130,153],buc:99,buck:[2,4,32,98],buckingham:[98,99,100,107,133],buckplusattr:147,buffer:57,bufi:57,bug:0,bui:57,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,43,45,46,47,48,49,50,51,52,53,54,55,56,60,63,64,65,66,67,68,69,70,71,72,74,75,77,78,79,82,83,84,85,86,87,88,89,90,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,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],bulatov:[135,136],bulk:[2,29,67,70,106,134,137,147],bundl:[57,162],button:162,bypass:2,c11:134,c_0:[79,94,151,152],c_1:[40,43,66],c_2:[40,43],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,62],c_ij:2,c_ijkl:2,c_k:66,c_mychunk:[2,34],c_n_k:66,c_p:42,c_peratom:42,c_pi:97,c_prop:2,c_sigma:97,c_size:2,c_thermo_temp:62,ca2:43,cach:4,cacul:75,calcforc:67,calclat:35,calcluat:[37,39,42,105],calcualt:35,calcul:[0,1],caldwel:[2,45],calhoun:71,call:[1,2,3,4,71,94,103,160,162],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,90,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],cannot:[1,2,3,4,19,28,57,59,60,61,66,68,72,79,80,81,91,92,99,100,102,111,117,119,122,126,128,130,143,145,146,153],canon:[68,71,78,137],cao1:71,cao2:71,cao:71,capabl:[3,4,94,102],capac:[64,79,150],capolungo:[40,43],captur:[2,94,100,113,118,126,134],carbid:105,carbon:[57,89,94,104,134],card:[4,32,120],care:[2,44,55,67,68,96],carefulli:[3,28],carlo:[2,60],caro:111,carri:[4,79,118],carrillo:4,cartesian:[2,93],cascad:79,cat:[4,57],cate:67,categori:[0,94],cation:[114,147],caus:[1,2,4,44,61,68,70,74,75,80,81,91,92,120,122,128,131,132],caution:1,cautious:94,caveat:94,cbecker:[93,111],cc1:[2,34],ccc:[112,154,155,157,158],ccflag:4,ccflags:4,ccm6:111,ccsi:[112,154,155,157,158],ccu:97,cd2:43,cdeam:111,cdll:3,cdof:2,cdte:97,cdte_bop:97,cdtese:97,cdzn:97,cdznte:97,ce3:43,ce4:43,cell:[2,40,43,44,61,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,44,57,61,66,68,76,78,80,81,83,96,112,113,117,118,131,132,134,135,136,154,155,156,157,158],centr:63,central:[29,36,38,41,70,75,76,86,137,142,158],centro:2,centroid:71,centrosymmetri:29,certain:[1,2,57,60,62],cfg:[2,57],cg_type:146,ch2:75,ch2lmp:[0,2],ch3:75,chain:[0,2,13,28,60,68,69,71,75,78,89,108,109,153],challeng:2,champaign:131,chan:137,chandler:[93,111],chandrasekhar:[2,122],chang:[1,2,3,4,19,22,32,44,57,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,147,153,162],change_box:2,chapter:71,charact:[2,19,57,59,65,74,113,115,121,140,141,144,147],character:[2,29,38,41,148],characterist:77,charg:[1,2,3,32,40,43,44,98,99,104,105,107,108,111,113,114,122,126,130,143,147,157,158,160,161],charl:62,charmm:0,cheaper:[117,145],check:[2,3,19,35,59,73,75,78,91,92,121],checkout:162,chem:[2,5,6,9,20,21,22,32,38,39,42,45,46,53,63,66,67,68,71,72,77,78,80,83,89,90,92,94,98,101,102,104,105,106,108,109,110,113,116,117,119,120,122,126,127,130,134,138,140,141,143,147,153],chemic:[31,40,43,58,115,141],chemistri:[72,94,97,113],chen:79,cheng:104,chi:[70,114,117],chiral:89,chmod:3,cho:134,choic:[2,4,19,28,29,32,42,55,59,60,67,68,71,92,130],choos:[1,2,13,28,32,57,60,61,62,67,68,69],chose:[155,157],chosen:[2,41,44,50,57,61,62,66,67,68,69,71,110,113,118,121,124,146,155],chunk:0,chunkid:34,ciccotti:75,cieplak:[2,45],circular:2,circumv:[36,38],citat:[0,67],cite:147,cl1:43,clarendon:[13,108],clarifi:[155,157],clark:143,classic:[0,2,4,71,72,79,90,113],classifi:158,clean:2,clear:[2,3,62],clebsch:41,click:[3,44,56,57,92,162],climb:92,clockwis:45,clone:162,close:[2,3,19,42,60,61,67,68,75,81,92,94,97,105,106,134,140,141,157,162],closer:[19,59,61,77,92],closest:[70,117,145,153],cloud:147,cluster:[2,4,42,63,75],cmax:134,cmd:[3,71],cmdarg:3,cmin:134,cmm:[18,146],cna:29,co2:[43,74,75,115],coars:[13,18,28,50,65,74,115,119,141,146],coarsest:41,code:[0,1],coeff:[6,45,46,55,83,121,149],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:[40,43],collect:[2,34,44,103],colliex:43,collis:[67,118,161],colloid:2,color:[19,57,59,66,72],column:[2,29,34,36,38,41,42,43,72,79,94,116,120],colvar:0,com:[2,37,63,96,162],comand:60,combiant:106,combin:[2,3,18,32,55,57,58,63,68,71,81,83,103,105,106,110,113,114,115,129,130,148,154,155,157,158,160],come:[0,2,13,61,62,68,77,78,154,155,157,158,162],comit:162,comm:[0,3,30,92,109],comm_modifi:[2,97,103,109,113,118],comm_styl:[19,59],comm_world:3,command:[0,1],comment:[3,45,65,74,79,92,93,111,112,114,115,121,134,140,141,142,147,148,154,155,156,157,158,162],commit:162,commmand:2,common:[0,1,2,3,4,30,61,71,81,83,118,120,154,155,157],commonli:[2,9,37,38,57,90,119,124,148,155,157],commun:[1,2,3,4,19,57,59,61,67,68,79,110],comp:[75,92,113,145,152,156],compar:[1,2,4,40,43,56,91,92,134,147],comparison:0,compass:[6,20,46,56,83,102],compat:[3,19,49,59,62,63,80,137],compens:[2,113],compil:[4,57,137],complain:3,complement:134,complementari:[105,122],complet:[2,3,19,59,71,92,114],complex:[2,3,9,36,38,41,44,67,81,92,113,137],complic:2,compon:[2,29,30,33,34,35,36,37,38,39,41,42,57,60,61,62,63,67,68,69,71,75,81,91,92,109,113,118,131,132,147,148],componenet:2,composit:[2,67,111],compound:[104,113,114,158],compress:[2,57,69,72],compris:[81,115,145],compton:[40,43],comput:[0,1],computation:[2,79,97],compute_modifi:[60,61,68,69],compute_sa:40,compute_xrd:43,concav:81,concentr:[65,74,111,115,141],concept:2,conceptu:[2,61,92,105,134],concern:[2,30,32,66],concis:3,concurr:4,conden:[79,155,157],condens:[2,79,94,107,111,122,158],condit:[2,39,40,42,43,57,58,67,69,70,72,75,76,79,110,113,119],conducit:2,conduct:0,confer:[4,137],configur:[1,2,4,57,61,71,91,92,94,97,112,134,137,154,155,157,158,162],conflict:162,conform:[2,60,61,73,89,92,113],confus:158,conjuct:109,conjug:113,conjunct:[2,32,44,67,92,98,99,105,109,113,120,122,143,146],connect:[2,32,60,75,92,106,118,153,157],conner:94,connor:94,consecut:[3,44,105,122,126],consequ:[1,2,79,121],conserv:[13,60,66,67,68,74,75,92,108,109,110,118,128,147],consid:[2,29,32,59,60,79,113,145,147,153],consider:2,consist:[2,3,39,44,50,62,66,68,69,72,73,74,82,92,94,97,103,105,113,117,131,132,134,137,140,141,145,147],consistent_fe_initi:58,constant:0,constantli:63,constitu:[2,80,81,103,145],constrain:[2,63,66,75,76,91,113],constraint:[19,39,42,59,63,75,76,80,91,132],construct:[2,28,29,30,36,38,40,41,43,61,68,73,74,81,108,137,153,154],constructor:3,consult:4,consum:1,contact:[0,106,112,114,117,118,145],contain:[0,1,2,3,19,32,35,40,41,43,44,45,56,57,58,59,62,65,67,70,72,74,79,81,92,93,94,97,104,105,108,111,112,113,115,134,137,140,141,142,144,148,154,155,156,157,158,162],context:[2,4,160],contibut:29,contin:4,continu:[0,2,19,59,60,61,62,63,66,68,69,72,77,78,79,81,97,109,124,127,145,156],continuum:[2,58,79],contour_integr:58,contract:[61,68],contrain:75,contrast:[1,2,160],contrib:79,contribut:[2,29,32,33,34,35,39,41,42,61,67,75,91,92,109,111,113,131,132,137,147,162],control:[2,3,4,11,13,19,32,35,41,47,57,58,59,61],control_typ:58,convect:35,conveni:[2,13,148,162],convent:[13,49,54,56,73,111,113],converg:[2,19,57,59,60,61,69,72,73,75,91,92,104,105,122,147],convers:[41,57,105,106,107,113,122,126,130,143],convert:[2,5,6,8,12,16,17,18,35,44,46,57,83,84,88,89,92,93,111,137,155,157,161],convex:81,cool:63,coord:[2,3,36,38,70,80,92],coordb:147,coordbb:147,coordiat:91,coordin:[1,2,3,19,32,33,34,41,44,57,59,60,61,63,68,70,75,76,78,79,91,92,93,94,96,112,147],coords:147,copi:[0,3,57,79,92,162],copper:161,coprocessor:[1,4],core:[0,1],coreshel:2,coreshell:[2,99,105,107],cornel:[2,45],corner:[2,57,81,162],corpor:4,corr:104,correct:[2,3,32,45,57,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,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],correction_max_iter:58,correctli:[3,68,75,81,92,107,132,137,162],correl:[2,35,36,41,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,43,45,46,47,48,49,50,51,52,53,54,55,57,61,62,63,65,67,68,69,70,71,74,75,80,81,82,83,84,85,87,88,89,90,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,141,142,143,144,145,146,147,148,149,154,155,156,157,158,159,160,161],correspondingli:[131,132],cosin:2,cosineshift:11,cost:[1,2,3,19,40,42,43,57,59,68,74,79,105,122,126,137,154],costheta0:[154,155,157,158],costheta:144,costli:[3,4],coul:[2,4,18,21,22,32,45,91],could:[2,3,19,32,34,35,39,57,59,62,72,79,80,81,91,94,116,120],coulomb:[2,42,91,98,99,100,101,102,104,105,106,107,108,113,118,119,122,126,130,133,143,146,147,157,158,160],coulommb:2,count:[1,2,3,19,35,45,59,61,68,75,81,91,92,116,120],counteract:62,counterbal:63,counterbalanc:13,counterclockwis:45,coupl:0,couple:[2,3],cours:[4,66,73,80,131,149],cov:147,coval:[2,13,113,134,147],cover:[2,58,67,113],cpp:[1,2,3,32,75],cpu:[1,4],cpuinfo:4,cr2:43,cr3:43,creat:[0,1,2,3,19,35,39,40,44,57,58,59,60,61,65,68,69,70,71,73,79,82,92,94,97,104,111,112,130,139,140,141,144,147,154,155,156,157,158,162],create_atom:[2,19,35],create_box:[2,19,35,44,61,68,153],create_elementset:58,create_faceset:58,create_nodeset:58,createatom:0,creation:44,criteria:[57,60,91],criterion:[19,44,59,60,91,92,104,113,118,147],critic:[2,24,25,79,91],cross:[4,33,57,92,101,109,111,119,120,122,124,126,144,146,155,157,161],crossov:1,crozier:0,crucial:72,crystal:[2,4,29,30,38,70,78],crystallin:[2,156],crystallogr:[40,43],crystallographi:[40,43],cs1:43,cs_chunk:2,csanyi:[41,148],cscl:134,csequ:2,csh:[3,4],cshrc:3,csic:[112,154,155,157,158],csinfo:2,csisi:[112,154,155,157,158],cst:111,cstherm:2,csvr:2,ctcm:[93,111],ctype:3,cu1:43,cu2:43,cu3au:134,cube:[2,81],cubes:[19,59],cubic:[38,67,70,111],cuda:1,cuh:97,cummul:[2,60,120],cumul:[2,68,69,92],currenlti:62,current:[0,1,2,3,4,19,30,32,42,57,58,59,60,61,62,63,68,73,74,75,76,79,80,91,92,97,104,108,111,113,114,118,121,131,132,134,135,136,144,149,155,157,162],curv:[2,44],curvatur:[117,145,161],custom:[0,2,3,33,34,35,42,57,60,61,68,69,72,91,94,116,120],cut:[1,2,4,19],cuthi:70,cutinn:[131,132],cutlo:70,cutmax:144,cutoff1:[102,108,122,126,130,133,143,146],cutoff2:[98,99,100,102,107,108,122,126,130,133,143,146],cutoff:[2,4,21,22,28,29,30,32,36,38,41,60,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],cutoffa:112,cutoffc:112,cuu3:111,cval:43,cvar:62,cvff:4,cwiggl:80,cyan:57,cycl:[68,69],cyclic:45,cylind:[57,81],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,143,146],dampflag:118,danger:109,darden:108,darken:57,dash:118,dat:[2,35,58],data2xmovi:0,data:1,databas:0,date:[0,2],datum:2,davenport:133,davi:80,david:[155,157],daw:[111,144],dcd:[2,57,71],deactiv:130,debug:[2,3,40,43,44,71],decai:[36,105,161],decid:[2,4,162],decod:57,decompos:[32,148],decomposit:[58,71],decoupl:2,decreas:[4,60,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,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,148,149,150,151,152,153,154,155,156,157,158,159,160,161],definit:[2,41,62,64,69,80,97,103,110,113,144,148],deform:[2,42,61,68,131,132],deg2theta:43,degre:[2,5,6,8,12,13,16,17,18,36,38,39,43,44,45,46,48,49,54,55,57,60,68,69,71,73,75,78,83,84,88,89,90,91,108,111,120],delai:2,delet:[28,60,68,153,162],delete_atom:44,delete_bond:[20,21,22,23,24,25,26,27,28],delete_el:58,delimit:74,dellago:[2,63],deloc:[113,147],delr:134,delta_1:97,delta_3:97,delta_7:97,delta_ij:[134,144],delta_pi:97,delta_r:144,delta_sigma:97,deltah_f:65,demo:3,demonstr:[72,134],dendrim:120,denniston:67,denot:[40,63,105,119],dens:[60,74,113],densiti:[2,19,41,44,58,59,67,79,80,93,94,97,111,134,135,136,140,141,144,145,147,150,151,152],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,41,44,45,46,47,48,49,50,51,52,53,54,56,57,59,61,65,67,68,69,70,74,75,77,79,80,81,82,83,84,85,87,88,89,90,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,139,140,141,142,143,144,145,146,147,148,149,154,155,156,157,158,159,160,161],dependend:2,deposit:[68,75],depth:[26,57,79,115,117,145],der:[32,103,104,130,160],deriv:[2,32,41,61,62,63,68,69,70,77,78,79,80,81,94,97,103,108,113,114,119,124,128,129,134,137,160],derjagin:160,derlet:70,descib:57,describ:[0,1,2,3,4,19,29,30,40,41,42,43,44,50,53,59,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,140,141,144,145,146,147,148,149,153,154,155,156,157,158,159,160,161,162],descript:[2,3],descriptor:41,design:[0,2,3,40,43,58,60,68,70,79,95,96,101,105,107,113,130,131,132,135,136,144],desir:[2,3,4,35,39,42,44,61,62,66,68,75,91,92,109,111,120,131,132,154,155,157],desktop:[2,57],destabil:97,destre:89,destroi:3,detail:[1,2,3,4,19,34,35,39,41,42,44,56,57,58,59,60,61,62,63,66,67,68,69,72,75,78,79,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,140,141,145,147,148,149,159,160,162],detect:[36,92,104,120,121],determin:[1,2,4,26,32,39,40,42,43,44,57,59,61,65,68,70,71,72,73,74,80,81,94,100,104,108,111,115,116,118,126,134,137,141,145,147,153,160],devan:146,devanathan:157,develop:[0,2,3,4,62,69,72,94,97,113,136,137,147,158],deviat:[69,70,116],devic:1,devin:104,devis:136,dfactor:57,dft:137,dhug:72,dhugoniot:72,dia:134,diag:74,diagnost:[4,60,74],diagon:[2,41,42,61,68],diagonalstyl:148,diagram:[19,40,43,56,59,71],diallo:120,diam:57,diamet:[2,44,57,103,117,118,124,145,160],diamond:[113,134],dick:2,dicken:62,did:[91,109,111,118,155,157],dielectr:[101,105,106,107,122,126,130,143],diff:[2,4],differ:[1,2,3,4,19,28,29,32,36,41,44,56,57,59,60,61,62,63,66,67,68,70,71,72,75,76,77,78,79,80,81,83,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,144,145,146,147,148,149,154,155,157,158,160],differenti:[1,2,13,74,105,144,156],difficult:[61,62,71,120],difficulti:[36,38,75],diffract:[40,43],diffraction:[40,43],diffus:0,diffuse:2,digit:137,dihedr:[0,4,28,36,38,39,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,60,73,84,85,86,88,91,94,97,101],dihedral_coeff:[45,46,47,48,49,50,51,52,53,54,55,56],dihedral_cosine_shift_exp:11,dihedral_styl:[0,2,42],dihydrid:113,dij:75,dilat:[61,68,69],dim:[44,134],dimens:[1,2,19,35,42,44,57,59,61,67,68,69,72,80,92],dimension:[36,39,40,41,43,79,92,144],dimensionless:[37,41,62,79,148,160],dimer:[2,134],dimstr:[19,59],dintel_offload_noaffinity:4,dipol:0,dipolar:13,dipole:108,dir:[1,3,70,72,144],dirac:41,direc:144,direct:[2,4,13,29,38,40,41,43,44,45,57,67,69,70,72,77,78,79,80,81,91,92,109,110,118,132],directli:[2,3,32,41,44,57,62,67,74,81,93,94,98,99,100,105,108,111,113,122,126,143,146,153],directori:[0,1,2,3,4,62,77,78,92,93,94,97,104,105,111,112,114,130,134,135,136,137,142,144,147,148,154,155,156,157,158],disabl:[4,79,121],disadvantag:[2,59],disallow:68,discard:[19,59,81],discontinu:[91,128],discourag:134,discret:[2,57,62,67],discuss:[0,1],disk:[2,36],disloc:[29,137],disord:[29,137],disp:0,dispar:145,disperion:[108,126],dispers:[2,100,108,126,131,158],displac:[2,37,61,68,70,118],displai:[3,56,57],disregard:137,dissip:[2,31,64,66,77,78,109,110,118,131,132],dist:[2,35,71,73,153],distanc:[2,5,6,20,21,22,23,24,25,26,27,28,30,33,34,36,37,38,40,41,44,46,57,60,61,63,67,68,69,70,72,73,75,76,78,79,80,81,83],distinct:[2,145],distinguish:[2,41,113],distort:93,distrbut:93,distribut:[0,2,3,19,32,41,56,59,66,67,68,93,97,105,111,112,114,134,135,136,142,144,145,154,155,156,157,158],distro:144,ditto:161,div:4,diverg:[78,94],divid:[2,4,19,35,39,42,56,59,70,91,92,114,147,158],divis:[2,55,67,97,130],dl_poly:2,dlammps_ffmpeg:57,dlammps_gzip:57,dlammps_jpeg:57,dlammps_memalign:4,dlammps_png:57,dlm:68,dlmp_intel_offload:4,dlopen:2,dlvo:[103,160],dm_lb:67,doc:[0,1,2,3,32,34,37,39,42,44,56,57,62,68,81,91,92,93,94,96,104,105,111,112,114,120,134,135,136,142,144,148,154,155,157,158,162],docuement:145,doe:[0,1,2,3,19,28,29,32,35,40,43,44,45,56,57,58,59,60,61,62,63,65,66,67,68,79,80,81,84,85,86,88,89,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,140,141,144,145,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],doesn:[44,94,104,112,154,155,156,157,158],dof:39,doi:[2,70],domain:[2,19,40,43,57,59,61,67,68,71,79,80,92],domin:[1,113],don:[0,4,81,134,147,162],done:[1,2,19,44,55,57,58,59,60,61,62,65,68,71,75,77,78,91,92,94,100,111,126,132,133,134,140,141,153,162],donor:120,dot:42,doti:[97,144],doubl:[1,2,3,4,32,45,61,81,97,114,119,137],dover:58,down:[2,3,61,113,147],download:3,downsid:2,dpd:2,dpdtheta:[31,110],dpdtheta_i:[64,65],dr_ewald:40,drag:[2,35,68,69,76],dragforc:67,drai:[57,72],drain:91,dramat:[60,61,68,147],drautz:97,draw:57,drawn:[57,66],drayleigh:72,dreid:2,dreiding:0,drfourth:37,drho:[93,111,140,141],drift:[2,37,63,66],drive:[3,61,68,70,92],driven:[2,50],driver:2,drop:109,drsquar:37,drude:0,dt_collis:67,dt_lb:67,dt_md:67,dtqm:72,dudarev:43,due:[1,2,4,28,29,33,34,37,40,41,42,43,44,57,60,61,66,67,68,69,70,73,77,78,79,80,81,91,92,106,109,110,111,116,117,131,132,144,145,146,153,155,157,160,161],duffi:79,dullweb:68,dummi:[13,156],dump:[0,1],dump_modifi:[2,57],dunbrack:[2,5,45,101],duplic:[19,59,70],durat:[56,79,118],dure:[2,4,19,32,45,58,59,60,61,62,63,65,66,67,68,69,70,71,72,73,75,76,77,78,79,80,81,82,91,92,109,130,137,139,140,141],dvlo:160,dvx:2,dx_lb:67,dy3:43,dyanam:2,dynam:[0,2,3,4,19,31,37,44,57,58,59,60,62,64,66,68,69,71,72,73,77,78,79,91,92,109,110,113,131,132,152],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:[62,97],e_ne:113,e_nn:113,e_pr:113,e_rebo:94,e_torsion:94,e_tot:137,e_vol:137,eaa:83,eaat:46,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,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,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,157,158,159,160,161],eacn:[19,59],eam:[0,93,105],earli:[19,59],earlier:[92,118,134],earth:113,easi:[2,3,32,42,80],easier:[4,57],easili:[3,57,92],eat:46,eaxmpl:2,eba:6,ebb13:46,ebb:6,ebt:46,ec_ii:134,ec_ij:134,ec_jj:134,echo:[3,40,43],ecp:113,edg:[2,19,40,43,57,80,81],edge:80,edit:[4,162],edition:4,edu:[3,111,131],eebt:46,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,42,45,46,47,48,49,50,51,52,53,54,56,57,58,60,61,63,66,68,69,70,71,72,73,75,78,79,80,81,82,83,84,85,87,88,89,90,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,145,146,147,149,154,155,156,157,158,159,160,161],effici:[0,1,2,4,39,55,57,61,68,71,75,97,103,105,122,126,137,140,141,145],efficienc:4,efield:[75,91],eggebrecht:[105,147],ehex:2,eigenvalu:71,einstein:[2,78],either:[1,2,3,4,19,29,40,41,42,43,44,57,59,60,61,62,63,67,68,69,70,74,75,81,91,97,103,111,115,118,131,132,134,137,141,144,153,155,157],ejtehadi:[103,117,145],elaps:[80,149],elast:[2,21,22,92,118,156],elastic:0,elba:13,electr:[2,58,114,161],electric:4,electrolyt:160,electron:[2,40,58,79,93,104,108,111,113,114,134,137,144,147,157,158,161],electron_integr:58,electron_temperatur:58,electron_unit:113,electroneg:[2,104,114,147],electroneg_compon:147,electrostat:[2,4,103,108,113,122,130,132,147,160],elem1:[114,134,148],elem2:[114,134,148],elem:147,element1:[93,111,147],element2:[93,111,147],element:[2,33,37,39,41,42,57,58,93,94,97,104,111,112,113,114,134,135,136,137,142,144,147,148,154,155,156,157,158],elementn:[93,111],elementset:58,elif:41,elig:120,elimin:[2,66,75,77,78],elj:108,ellips:2,ellipsoid:[2,44,91,117,132,145],els:[57,62,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,144],embt:46,emin:61,emphas:118,empir:[58,113],empiric:94,emploi:[63,156],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,43,45,46,47,48,49,50,51,52,53,54,56,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,85,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,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],enclos:[2,134,147],encod:57,encompass:2,encount:38,encourag:[74,76],end:[1,2,3,4,19,46,57,60,61,63,66,68,73,74,79,92,109,111,117,133,137,145,148,149],endbondtors:46,energet:[60,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,42,44,45,46,47,48,49,50,51,52,53,54,55,56,58,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,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109],energy_compon:147,enforc:[2,57,60,68,75,122],enforce2d:[2,91],eng:[3,104,136],engineer:[58,77,111],enginer:135,enhanc:[58,63],enlarg:57,enough:[44,59,72,80,81,105],enpub:111,ensembl:[2,32,35,68,71,72,82,109,147],ensight:2,ensur:[2,41,61,66,68,97,130,154,158],enter:[114,137,158],enthalpi:[74,111],entir:[0,2,3,19,31,39,40,42,43,44,59,60,63,66,68,69,70,71,74,76,79,108,126],entiti:2,entri:[40,65,72,97,112,134,140,141,142,148,154,155,156,157,158],entry1:[140,141],enumuer:2,environ:[1,2,3,4,57,70,93,97,104,112,113,144,155],eos:65,epair:[94,116,120],epp:108,epq:108,eps0:160,eps14:130,epsilon0:157,epsilon:[2,18,21,22,27,28,32,45,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,143,145,146,154,159,160],epsilon_0:161,epsilon_14:101,epsilon_:145,epsilon_d:106,epsilon_i:[117,145],epsilon_i_:145,epsilon_i_a:[117,145],epsilon_i_b:[117,145],epsilon_i_c:[117,145],epsilon_j:[117,145],epsilon_j_:145,epsilon_j_a:[117,145],epsilon_j_b:[117,145],epsilon_j_c:[117,145],epsilon_lj:145,eqp:108,eqq:108,equal:[2,3,19,28,32,35,42,44,57,59,61,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,144,145,147,148,149,158,161],equat:[2,35,38,39,40,43,56,61,62,63,64,65,67,68,69,70,71,72,74,75,79,80,103,108,109,110,113,114,115,118,131,132,134,141,145,150,151,152,161],equation:[70,89],equilibr:[2,35,44,60,61,68,72,77,78,104,105],equilibrium:[1,2,6,8,10,11,12,13,16,17,18,20,23,24,25,26,27,46,47,61,66,67,68,69,72,73,75,78,83,84,88,89,104,134,142,147],equilibrium_start:58,equival:[2,13,61,68,73,94,109,113,147,155,157],equlibrium:2,er3:43,eradiu:113,eras:77,erat:132,erc:105,erfc:[105,122],erhart:[111,155,157],eros:134,erose_form:134,erot:2,errata:[155,157],erratum:80,error:[0,1,2,3,11,47,57,61,62,63,65,68,74,79,80,81,91,105,122,145,153,155,157],erta:118,especi:[4,44,59,72,73],essenti:[3,11,47,94,105,122,157],essential:69,essex:13,establish:32,estim:[1,2,19,29,35,42,58,59,74],esub:134,eta:[2,67,68,72,112,114,117,144,156,158],eta_dot:68,eta_ij:144,eta_ji:114,etap:68,etap_dot:68,etc:[1,2,3,4,28,33,34,35,42,44,57,58,66,68,79,81,91,92,111,112,130,132,137,154,155,157,158],etol:[91,92],etot0:72,etot:[2,42,72],eu2:43,eu3:43,euler:[74,91,92],eulerian:58,europhi:67,evalu:[3,32,35,41,44,45,57,58,62,66,74,80,91,137,140,141,144,147],evanseck:[2,5,45,101],evaul:91,even:[2,4,19,29,55,59,61,63,68,79,80,81,91,92,96,113,114,118,145,158],evenli:[19,42,59,67],event:[2,68,79],eventu:2,ever:28,everaer:[103,117,145],everi:[0,1,2,3,4,19,35,57,58,59,60,61,62,63,67,68,69,70,72,74,75,79,92,109,130,147,162],everyth:162,everywher:124,eviri:113,evolut:[63,67,71],evolv:[67,71],ewald:[2,40,42,91,98,99,100,105,108,113,122,126,143,146],ewald_disp:108,exact:[19,59,60,66,79],exactli:[2,19,35,44,59,66,72,109,111,118,131,140,141],examin:[2,60,74],exampl:[0,1],exce:[2,4,19,59,61,68,91],exceed:[19,59,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,42,44,45,46,47,48,49,50,51,52,53,54,56,59,61,68,69,71,75,79,82,83,84,85,87,88,89,90,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,139,142,143,145,146,149,154,155,156,157,158,159,160,161],excess:113,exchang:[2,58,63,79,113],excit:113,excite:113,exclud:[2,4,39,41,91,118,131,132,153],exclus:[1,4,32,45,104,137],excurs:68,execut:[1,2,3,57],exempl:147,exemplari:66,exemplifi:113,exert:[2,81],exhaust:58,exhibit:[36,63,68,113],exist:[2,3,29,44,56,57,61,83,84,85,86,88,110,153,162],exit:[3,19,59],expans:[41,55],expect:[1,4,19,59,70,72,134,137],expens:[2,70,79],experi:[2,73,92,109],experienc:[2,4],explain:[1,2,3,19,30,57,59,61,68,70,92,96,111,147,149,162],explan:[2,41,70],explic:138,explicit:[2,3,32,74,94,97,101,111,113,121,131,162],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,44,45,46,47,48,49,50,51,52,53,54,61,66,68,69,72,75,79,82,83,84,85,87,88,89,90,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,145,146,149,150,151,152,154,155,156,157,158,159,160,161,162],explictli:4,exploit:71,explor:[40,43],expon:[74,111,115,117,120,130,138,146],exponenti:[32,74,115,144,154,158,161],expos:3,exposit:[58,109],express:[2,41,44,61,70,74,79,97,111,113,124,134,147,148],expressiont:97,extend:[0,2],extens:[2,4,21,22,27,32,35,62,63,68,69,70,73,77,78,79,80,81,117,134,137,145,148],extent:[1,19,21,59,94],exterior:[2,81],extern:[32,57,61,66,67,68,69,79,91,135,136],extra:[2,3,4,19,22,39,40,42,43,44,59,68,72,91,108,118,134],extract:[2,3,18,32,92,105,114,134,148],extract_atom:3,extract_comput:3,extract_fix:3,extract_glob:3,extract_vari:3,extrapol:1,extrem:[1,2,57,61,68,78,113,156],extrema:130,extreme:113,extrins:58,f_1:[2,61],f_a:[155,156,157],f_c:156,f_f:157,f_fix_id:72,f_harm:78,f_i:[13,144],f_id:[2,62],f_ij:144,f_int:77,f_j:13,f_jj:35,f_k:144,f_langevin:79,f_max:72,f_r:[155,156,157],f_sigma:97,f_solid:78,f_ss:2,face:[2,80,81,117,134,145],facil:0,facilit:2,fact:[2,4,78,118,147],factor:[1,2,8,12,16,17,18,19,22,23,32,35,40,41,43,45,53,57,59,61,63,67,68,69,71,73,74,75,80,81,88,94,97,98,99,101,105,106,107,109,110,113,118,121,122,134,137,140,141,142,143,146,149,154],fail:[3,61,91,92,107],fairli:[3,162],faken:30,fall:2,fals:147,famili:158,familiar:[0,3,162],fan:144,far:[2,59,61,68,70,73,80,84,88,92],farrel:[155,157],fashion:[2,19,44,59,62,68,69,72,78,79,80,92,131],fast:[2,4,62,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,45,46,47,48,49,50,51,52,53,54,59,68,69,75,77,79,82,83,84,85,87,88,89,90,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,139,142,143,145,146,149,154,155,156,157,158,159,160,161],fastest:[1,2,79],fault:29,fava:117,favor:60,fcc:[2,29,30,35,38],fcold:63,fdt:[64,65,74],fdti:32,fe2:43,fe3:43,fe_md_boundari:58,featur:[0,2,3,41,57,60,66,71,81,91,162],fecr:111,feedback:62,feel:[70,81,92],fehlberg:74,felling:136,felt:81,fene:[2,4],fennel:[105,122],fep:0,ferguson:[2,45],fermi:[1,157],fermion:113,fernando:133,few:[1,2,3,63,68,75,91,92,94,147],fewer:[1,3,4],feynman:71,ffield:[104,114,147],fflag1:57,fflag2:57,ffmpeg:57,ffplai:57,fft:[1,3,42],fhot:63,ficiti:153,fictiti:[2,71,73,105,122,126,153],field:0,fifth:[2,115,142],figshar:70,figur:[1,4,72,162],fij:108,file0:70,file1:[3,65,70],file2:[3,65],file:[0,1],filenam:[4,19,57,58,59,65,70,74,79,92,93,94,97,105,111,112,114,115,134,135,136,140,141,142,144,147,148,154,155,156,157,158],fill:[44,57,79,97,137,162],filter:58,finchham:[2,107],find:[0,2,3,4,30,32,60,61,62,65,70,73,91,92,105,122,126,134,140,141,147,162],fine:[4,78,162],finer:[41,44],finger:44,finish:[2,3,19,59],finit:0,finni:111,fire:[91,92],first:[0,1,2,3,4,6,19,21,22,28,29,35,37,38,39,42,43,46,57,59,60,62,65,66,67,68,70,71,72,75,76,77,78,79,83,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,140,141,142,144,147,148,153,154,155,156,157,158,161,162],fischer:[2,5,45,101],fit:[2,73,94,97,134,140,141,156,162],five:[30,72,97,135],fix:[0,1],fix_flux:58,fix_heat:63,fix_id:[61,68,69,72],fix_manifoldforc:162,fix_modifi:2,fix_nv:162,fix_rattl:75,fix_shak:75,fixedpoint:[61,68],fixid:[57,58],fji:108,flag:[3,4,33,34,40,43,57,60,94,120,121,134,137,153,162],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,57,113,156],flip:[2,68],fluctuat:[2,32,61,66,67,68,69,70,78,79,89,110],fluid:[2,61],flux:2,flv:57,fly:[19,57,58,75,97,137],fmass:71,fmax:91,fmsec:68,fno:4,fnorm:91,fnve:63,focu:75,foil:[41,70,148],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,41,42,44,45,47,48,49,50,51,52,53,54,55,57,58,59,62,64,65,66,67,68,69,71,72,73,74,75,77,78,79,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,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],foo:[3,57,74],foo_species:74,foot:2,forc:[0,1],forcefield:[73,120],forcegroup:67,ford:108,forgiv:68,fork:162,form:[2,28,32,33,34,36,41,42,62,66,73,74,79,80,81,83,86,89,92,94,97,110,111,113,116,120,121,133,134,136,137,140,141,142,143,144,145,147,148,149,155,156,157,160],formal:[2,35,66,68,71,147],format:[2,19,57,59,65,74,79,92,93,94,97,111,114,115,121,134,136,140,141,146,148,158],formation:65,former:[2,19,59,79,97],formul:[1,2,42,68,73,75,94,97,111,113,117,134],formula:[2,6,28,29,30,32,33,34,35,39,40,42,43,46,56,62,70,76,80,83,85,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,145,146,149,154,155,156,157,158,159,160],forth:[1,2,3],fortran:[2,3,111,134],forward:[32,92],foster:[97,144],found:[2,30,60,63,67,105,108],four:[2,3,28,41,62,79,89,92,137],fourier:2,fourth:[2,4,37,73,101,115,142,147],fox:[2,40,45,152],fqq:108,fraction:[1,2,4,19,42,57,60,61,72,74,92,97,115,118,131,132],frame:[41,58,72,117],framer:57,framework:[93,148],frattl:63,free:[2,13,29,32,70,77,78,79,92,113,130,137,139,144,160],freedom:[2,39,60,68,69,71,75,78,91,108],freeli:[0,2,57],freez:2,frenkel:[2,63,78],frequenc:[2,4,71,72,74,109,113,147],frequent:[29,30,36,38,41,63],fri:72,friction:[2,72,79,118],from:[0,1],front:72,frontend:57,frozen:[2,39,66,116],fs2:[2,35],ftol:[91,92],fuction:105,fudg:75,fulfil:2,full:[1,2,4,35,57,63,67,70,74,97,111,113,114,117],fuller:91,fulli:[2,70,91,92,105,144,162],fulton:111,fumi:98,funcfl:111,fund:0,funrol:137,further:[2,37,57,67,71,79,91,92,93,96,104,137,147],furthermor:[11,47,63,74,110,113],futur:[0,2,59,66,92,135,136],g_jik:144,g_p:79,ga3:43,gaa:97,gai:117,gain:[4,62],galindo:138,gamma0:13,gamma:[2,13,67,72,109,110,112,117,134,138,150,151,152,154,155,157,158],gamma_:79,gamma_ijk:155,gamma_n:118,gamma_p:79,gamma_t:118,gammaa:138,gammafactor:67,gammar:138,gan:[144,154,155,157,158],gan_sw:144,gan_tersoff:144,gao:[2,5,45,101],gap:[131,132,148],gather:3,gather_atom:3,gathert_atom:3,gauch:50,gauss:106,gaussian:[2,35,37,66,71,73,109,113,116],gavhan:4,gaybern:[2,4,91],gd3:43,gdot:132,ge4:43,gec:[155,157],gen:68,gener:0,gentler:80,gentli:112,geom:2,geometr:[2,44,59,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,141,145,149,159,160],geometri:[2,9,19,44,59,61],gerber:130,germann:[69,124],germano:117,get:[0,1,2,3,4,19,35,41,44,57,59,61,81,92,105,158,162],get_natom:3,get_rank:3,get_siz:3,gewald:2,gezelt:[105,122],ghost:[2,4,30,61,68,109,110,113,118,121],gif:57,gifsicl:57,gillan:148,gingold:[150,151],git:162,give:[0,1,2,3,4,28,36,38,44,61,68,70,91,94,97,113,120,134,137,145,155,156,157],given:[2,3,4,11,38,41,42,47,56,61,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,161],glosli:137,glotzer:109,glue:3,gnu:0,gnuplot:3,goal:62,goddard:[2,9,90,113,120],goe:[28,41,44,63,91,108,112,119,124,127,149,161],gold:29,goldman:72,good:[1,2,4,19,30,40,43,59,62,68,75,92,93,103,111,137,158,162],gordan:41,gordon:2,got:162,gould:[2,45],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,45,46,47,48,49,50,51,52,53,54,68,69,75,82,83,84,85,87,88,89,90,93,94],grab:2,grad:2,gradient:[2,61,63,79,92,132,140,141],graft:60,grain:[2,13,18,28,44,50,65,70,74,115,119,137,141,146],gram:111,gran:[2,80,81],granular:0,graph:3,graphic:3,graviti:2,grdient:58,great:[72,162],greater:[1,61,66,68,70,96,98,99,100],greatli:[40,63],green:[2,35,57,71,97,162],green_kubo:2,grest:[21,22,60,100,118,126],grid:[19,40,43,59,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,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,92,147,158],group_id:3,grow:[2,68,70,74,118],growth:2,gsmooth_factor:134,guarante:44,guess:162,gui:[3,162],guid:[1,150,151,152],guidelin:1,gullet:134,gulp:2,gunnel:137,gunsteren:130,guo:[2,5,45,50,101],gyrat:2,gzip:[57,92],h12:117,h2o:[115,141],had:[2,3,60,61,66,68,69,79,109,118,153],hafskjold:[2,63],half:[1,2,4,19,57,59,68,79,80,81,97,103,113,137],halfwai:[19,57,162],halperin:36,halsei:118,halt:[19,59,63],halv:57,hamak:[80,81,103,145],hamilton:29,hamiltonian:[68,113],han:111,hand:[2,28,29,44,54,57,67,74,105,113],handl:[4,57,113,131,158],happen:2,hara:156,hard:[1,73,147],harden:149,harder:[80,81],hardi:58,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,45,46,47,48,49,50,51,52,53,54,68,69,75,82,83,84,85,87,88,89,90,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,139,142,143,145,146,149,154,155,156,157,158,159,160,161],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,41,42,44,45,46,47,48,49,50,51,52,53,54,57,59,60,61,62,66,67,68,69,70,71,72,75,79,80,81,82,83,84,85,87,88,89,90,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,149,154,155,156,157,158,159,160,161,162],hbond:2,hcn:74,hcp:[29,30,134],he1:43,head:[2,6,46,83,94,116,120,162],header:[2,57,72,79,93,97,111,153],heat:2,heavili:[19,59],heavisid:79,hebenstreit:4,height:[57,92,116],held:[2,74,92,118],helic:50,helium:95,help:[4,61,70,97,139,155,157,162],henc:[1,5,6,10,16,17,18,29,46,68,80,81,83,84,88,89,105,116,130,144],henderson:27,henkelman1:92,henkelman2:92,henkelman:92,here:[1,2,3,4,19,29,40,43,49,56,57,59,60,62,66,67,70,72,79,80,91,92,94,97,114,117,120,121,133,144,145,147,161,162],hertzian:[2,118],hertzsch:118,heterogen:37,hex:[44,63],hexagon:[36,134],hexat:36,hey:42,hf4:43,hfo:104,hftn:[91,92],hg1:43,hg2:43,hibb:71,hierarchi:[100,101,122,123,126,133,138],higdon:[131,132],high:[1,2,4,19,38,57,59,61,79,91,94,97,113,117,137,140,141,145,161],higher:[1,4,41,63,91,94,113,147],highest:[63,92],highli:[2,4,44,57,68,72,91,113],highlight:2,hight:116,hill:71,histo:[2,43],histogram:[1,2],histor:114,histori:[0,2],ho3:43,hoc:89,hoh:[2,105,122,126],hold:[2,73,91,92,118,130,160],holdem:73,holian:[69,124],holm:70,home:3,homepag:57,hone:71,hood:137,hook:[2,3],hookean:118,hoover:[2,68,69,71,78,109],hop:[60,92,97,147],hope:[19,59],hopefulli:91,horn:2,host:4,hot:2,hove:134,how:[0,1],howev:[1,2,3,4,18,19,35,40,41,43,57,59,60,61,62,66,67,68,70,71,72,79,92,102,103,111,112,118,134,137,140,141,144,154,157,162],howto:[2,68,105,120,122,126],hoyt:58,hpc:1,htm:111,html:[0,3,116,132],htmldoc:0,http:[0,2,3,70,93,111,131,162],https:162,htype:[105,122,126,130],hubbard:106,huge:162,huggin:[98,99],hugh:58,hugoniostat:69,hugoniot:[69,72],hundr:63,hura:2,hybrid:[1,2,4,32,56,68,93,94,104,105,109,111,114,117,118,120,121,130,134,135,136,137,142,144,145,147,148,153,154,155,156,157,158,161],hydrat:116,hydrocarbon:[94,104,113],hydrodynam:[67,131,132],hydrogen:[2,94,97,105,113,120,122,126,130],hydrostat:[61,68,69],hynninen:[106,116],hyoungki:136,hyper:[4,71],hyperbol:106,hyperspher:41,i_0:79,i_1:144,i_csid:2,i_mpi_pin_domain:4,i_mpi_shm_lmt:4,i_n:144,ialloi:134,ibar:134,ibead:71,ibm:137,icc:137,ice:2,icm:162,icms:162,icosohedr:30,id1:[92,121],id2:[92,121],id_press:[61,68,69],id_temp:[60,61,68,69],idea:[1,2,3,19,42,57,59,62,70,162],ideal:[2,30,70,131,150,162],idealiz:2,ident:[1,4,41,61,66,68,70,71,92,98,99,105,107,111,122,124,130,142,147,148,158,161],identifi:[1,2,29,44,65,120,121,134,140,141],idn:92,ielement:134,ignor:[2,3,4,19,32,57,59,61,62,68,69,73,79,80,81,92,93,102,103,111,112,114,117,121,134,140,141,142,144,145,154,155,156,157,158],iii:[2,9,90,120],ijj:158,ijk:[87,89,90,97,144,158],ijl:89,ikeshoji:[2,63],ikj:158,illinoi:131,illustr:[1,2,3,4,70,71,92],imag:[2,3,33,34,40,44],image2pip:57,image:57,imagemagick:57,imagin:[97,112,135,136,142,144,154,155,156,157,158],imaginari:[2,36,71],imbal:[1,19,59,74],imbalanc:[19,59],img:57,immedi:[0,44,74,75],immers:67,impact:[1,2,94],impart:2,impei:[2,122],implement:[1,2,11,31,32,38,40,43,44,47,56,62,63,64,67,68,71,72,74,75,79,89,91,92,93,97,104,105,107,109,110,111,112,113,122,126,130,134,145,155,157],impli:[2,32,42,57,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,42,44,60,83,84,85,86,87,88,89,90,91],improper:[4,89],improper_coeff:[83,84,85,86,87,88,89,90],improper_styl:[0,2],improv:[0,1,4,19,59,63,68,120,122,137,154,156],in3:43,inaccur:[1,2],inaccuraci:81,inact:120,inappropri:44,incid:[40,43],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,45,46,47,48,49,50,51,52,53,54,56,57,58,60,61,66,67,68,69,70,71,72,73,74,75,78,79,80,81,82,83,84,85,87,88,89,90,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,142,143,144,145,146,148,149,154,155,156,157,158,159,160,161,162],inclus:[0,32],incompat:3,incomplet:3,incompress:113,inconsist:60,incorpor:[55,72,97,106,162],incorrect:134,incorrectli:118,increas:[1,2,4,40,42,57,60,62,63,65,73,74,92,94,113,117,140,141,156],increasingli:113,increment:[3,59,68,147],incur:79,indefinit:77,indent:91,independ:[2,3,19,35,44,59,60,61,66,67,68,78,79,118,137],index:[0,2,3,65,71,79,140,141],indic:[2,3,4,6,28,31,33,35,37,39,42,46,57,61,62,68,79,83,89,104,114,134,137,142,147,155,157,162],indirectli:[2,62],indium:148,individu:[0,1,2,3,4,32,39,42,44,56,57,61,62,63,67,68,75,91,98,99,101,102,105,111,113,119,121,122,126,143,146],induc:0,ineffici:[2,29,30,36,38,41,57,68],inerti:132,inertia:[2,132],infer:[59,114],infin:91,infininti:57,infinit:[67,79,113],infinitesim:2,inflect:[106,124],influenc:[19,155,156,157],inform:[0,1,2,3,4,19,40,43,44,45,57,58,59,60,61,62,63,67,70,73,75,76,77,80,81,82,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,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],infrequ:[2,68,109],infti:[106,131,132],ingtegr:97,inher:91,inherit:2,inhomogen:79,inidividu:91,init:147,init_fil:79,initi:[2,3,19,32,44,57,58,59,60,61,62,65,66,67,68,69,71,72,73,74,77,78,79,80,91,92,94,108,109,137,140,141,147],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,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],inner_distance_cutoff:120,innner:128,inorgan:[2,158],inp:[148,158],input:[0,1],insert:[44,148,153],insid:[2,3,44,63,67,80,81],inside:[67,124],insight:2,instabl:[67,108],instal:[1,2,3,4,57,92,100,101,122,126,130,137,162],install:0,instanc:[2,3,116,144],instantan:[2,60,61,62,66,68,69,72],instanti:[2,3,58],instead:[1,2,3,4,19,29,34,45,59,61,67,99,100,111,121,123,130,134,137,139],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,45,46,47,48,49,50,51,52,53,54,57,68,69,75,82,83,84,85,87,88,89,90,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,139,142,143,145,146,149,154,155,156,157,158,159,160,161],instruction:3,insuffici:2,insult:68,insur:[2,3,30,44,57,79,80,81,103,117,145],integ:[2,3,29,38,41,44,45,48,49,52,55,57,60,62,66,67,72,74,79,87,109,110,134,148],integral:[71,140,141],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,40,43,59,60,68,69,79],inter:[60,92,97],interact:[1,2,3,13,28,32,36,38,39,41,42,45,50,55,56,60,70,71,73,74,79,80,81,84,85,86,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,141,143,144,145,146,147,148,149,153,154,155,156,157,158,159,160,161],interatom:[44,77,78,93,97,111,113,134,137,147,156],intercept:40,interchang:[2,62],interconvert:113,interesect:81,interest:[1,3,43,71,78,112,132],interf:162,interfac:0,interfer:[68,94],interg:2,interi:132,interior:[2,19,81],interlac:134,interleav:[2,44],intermedi:[2,57,70,89,92],intermolecular:94,intern:[0,2,3,4,5,6,8,12,16,17,18,31,32,42,44,46,57,58,62,64,65,68,69,74,83,84,88,89,91,110,115,140,141,150],internal:57,internal_element_set:58,internal_quadratur:58,internat:[4,40,43,58],interpenetr:134,interpentr:[150,151],interpol:[2,57,58,65,67,70,92,97,140,141,155],interpret:[2,3,55,57,118,149],interrupt:72,intersect:[2,40,81],intersert:81,interspers:91,interstiti:137,interv:[2,35,62,68,72,147],intestieti:40,intial:[2,94],intiial:19,intramolecular:13,introduc:[2,36,38,57,63,68,72,89,93,105,113,122,126,130,154],introduct:0,inv:[40,43],invalid:[33,92,131,132],invari:[38,41,62],invent:75,invers:[2,26,40,43,72,89,90,98,105,122,159,160],invert:[1,2],invis:81,invoc:60,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,44,45,46,47,48,49,50,51,52,53,54,57,58,59,60,61,62,63,66,67,68,69,70,75,76,77,78,79,80,81,82,83,84,85,87,88,89,90,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,142,143,145,146,148,149,154,155,156,157,158,159,160,161],involv:[2,67,91,92,96,117,154,155,157],ion:[2,79,97,106,114,116,134,137,147,157,161],ionic:[2,98,99,106,113,114,143,147],ioniz:[104,113],ipp:0,ir3:43,ir4:43,irregular:[2,19,59,61,68],irrelev:142,irrespect:[131,132],irrevers:74,isbn:160,isenthalp:68,ismail:[100,126],isn:[3,63],iso:[61,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,45,46,47,48,49,50,51,52,53,54,57,60,61,63,68,69,71,75,78,82,83,84,85,87,88,89,90,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,139,142,143,145,146,149,153,154,155,156,157,158,159,160,161],issue:58,item:[2,19,59],iter:[2,19,59,61,75,91,92,147],iterat:91,ith:62,itself:[2,3,35,57,79,92,105,114,117,140,141],ityp:44,izumi:156,j0jt:35,j_m:41,jackson:138,jacs:[2,45],janssen:70,januari:134,jaramillo:113,jcp:80,jeffer:4,jello:68,jeremi:136,jik:97,jmm:41,job:75,jochim:68,join:[2,29,118],joint:120,jon:29,jone:[1,2,21,22,32,45,58,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,144,145,146],jonsson:[30,92,147],jorgensen:[2,53,105,122,126],journal:[50,58,111,137,150,151],jpeg:57,jpg:57,judici:2,jump:[2,18,69],jun:4,just:[2,3,13,35,42,57,62,79,92,94,96,144,162],justo:112,jusufi:[106,116],jut:81,k11:35,k22:35,k33:35,k_2:86,k_4:86,k_sigma:97,k_ub:5,kalia:158,kapfer:38,kappa:[2,35,105,110,122,159,160],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,147],keef:40,keep:[54,62,74,78,91,105,130,148,162],kei:[2,158],kelchner:29,kemper:104,kepler:1,kept:[2,69,77,78],kernel:[4,58,66,137,150,151,152],keword:57,keyword:[2,4,19,29,32,34,36,37,38,39,40,41,42,43,44,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,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,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],keywrod:113,khersonskii:41,khvostov:4,kim:[134,135,136],kind:[1,2,3,19,30,57,59,60,75,92,97,113],kinemat:[131,132],kinet:[2,32,35,39,42,61,63,68,69,72,74,91,113,115,141],kjl:89,klein:[2,58,68,122,146],kmax:40,kmp_affinity:4,knight:4,knl:4,knock:79,know:[3,19,91,112,162],knowledg:57,known:[41,57,62,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,45,46,47,48,49,50,51,52,53,54,68,69,75,82,83,84,85,87,88,89,90,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,139,142,143,145,146,149,154,155,156,157,158,159,160,161],kollman:[2,45],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,42,91,98,99,100,101,105,108,122,126,130,132,146],kspace_modifi:[2,4],kspace_styl:0,kstart:73,kstop:73,kth:[66,71],kub:5,kubo:[2,35],kumagai:156,kumar:[131,132],kuronen:144,kutta:74,l12:134,l_box:113,l_skin:79,la3:43,label:[63,71,92],laboratori:[0,31,64,72],lack:[4,113],lackmann:97,ladd:78,lafitt:138,lag:[62,79],lagrangian:[2,58,72],lagrangian_posit:72,lagrangian_spe:72,lambda1:[155,156,157,158],lambda2:[155,156,157],lambda3:[155,157],lambda4:158,lambda:[32,40,43,67,77,78,79,93,112,130,139,154],lambda_fin:77,lambda_initi:77,lamda:[27,139],laminar:152,lammp:[0,3,92,134,137,162],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:147,lane:1,langevin:[2,66,68,69,72,73,78,79,92,108,109],languag:[2,3,62],larentzo:[31,64],larg:[0,1,2,4,19,29,42,44,50,57,59,60,61,62,63,67,68,72,73,75,79,80,81,89,91,103,109,113,117,118,121,137,140,141,145],larger:[1,2,3,19,29,44,57,63,67,68,73,79,80,81,91,92,97,103,105,106,113,118,122,126,132,153],largest:[2,44,91,140,141,153],laser:79,last:[1,2,3,42,55,57,59,74,91,92,95,96,97,98,103,104,109,110,111,116,117,118,119,120,123,125,127,128,129,132,138,139,145,147,149,153,159,160],lat:134,later:[2,3,69,91,94,97,162],latitud:41,lattc:134,latter:[2,3,4,19,32,59,61,68,74,81,97,99,100,101,102,108,122,126,130,137,143,146,147],lattic:[2,19,29,30,35,36,40,43,44,59,67,70,80,81,93,111,134],launch:[1,2,3,4],laupretr:89,law:2,layer:[2,79],layout:1,lb_fluid:67,lbtype:67,ld_library_path:3,lead:[2,9,19,32,59,67,69,72,74,75,89,92,105,122,126,128,137,162],least:[2,40,43,63],leav:[3,6,19,42,46,59,61,62,68,75,83],lee2:134,lee:[58,134],left:[2,3,19,56,57,60,70,74,162],leftmost:[19,59],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,43,46,57,59,60,61,65,67,68,69,70,75,79,80,81,91,92,94,97,98,99,105,106,113,116,120,122,134,140,141,155,159,160],lennard:[1,2,21,22,32,45,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,59,60,61,63,68,70,91,97,101,117,118,131,132,145,154,157,160],let:[1,49,65,75,103,140,141],lett:[41,67,77,78,97,111,113,117,130,140,141,148],letter:[19,59,71],level:[3,57,68,70,73,76,80,81,97,100,101,122,123,126,133,137,138],lever:153,levin:118,lgr_po:72,lgr_vel:72,li1:43,liang:104,lib:[1,3,4,104],libdir:3,liblammp:3,liblammps_foo:3,liblammps_g:3,libmpi:3,librari:[0,1],licens:[0,57],lie:[2,29],like:[2,3,4,28,57,61,68,70,72,74,80,81,92,97,103,108,109,110,113,114,118,120,127,128,134,148,157,159,160,162],likelihood:[40,43,60],likewis:[1,2,19,58,59,68,69,92,93,96,97,105,111,114,137],limit:[2,4,11,40,41,43,44,47,57,61,63,66,68,72,91,106,113,118,132,146,149],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,41,42,45,46,47,48,49,50,51,52,53,54,57,59,61,65,68,69,70,72,74,75,79,82,83,84,85,87,88,89,90,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,139,140,141,142,143,144,145,146,147,148,149,154,155,156,157,158,159,160,161,162],linear:[2,9,11,41,47,58,60,61,65,68,73,75,79,80,84,85,86,88,92,118,128],linearli:[2,80,92],lineflag:2,lineforc:91,lingo:3,link:[2,3,56,57,134],linkflags:4,linux:[3,4,57],liouvil:68,lipid:13,liquid:[2,4,13,19,32,36,42,59,61,68,72,108,137,143,156],lisal:[110,153],list:[0,1,2,3,4,6,19,29,30,32,36,38,39,41,42,46,56,57,58,59,60,65,68,70,74,75,83,84,85,86,88,89,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,147,154],lithium:113,littl:[1,4,63,68],littmark:[134,157,161],liu:120,lj126:2,lj12_4:146,lj12_6:146,lj93:2,lj9_6:146,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,57,59,72,74,104],loadabl:3,localized_lambda:58,localtemp:74,locat:[2,3,11,40,43,47,55,63,67,78,81,105,114,115,116,122,124,126],lockstep:[61,68],log:[1,2,4,72,75,92,94,116,120,131,132],logfil:[0,2],logic:[3,4,19,44,59],lomdahl:[69,124],longer:[1,2,28,68,70,72,74,75,80,81,94,118,147],longest:[19,59],look:[1,2,3,28,57,148,162],lookup:[140,141],loop:[2,3,42,57,62,91,92,137,147],loopmax:147,lopez:68,lorentz:43,lose:[2,61,68,118],loss:2,lossi:57,lossless:57,low:[1,2,19,57,59,137,140,141,160],lower:[2,3,4,19,57,59,61,67,68,72,80,106,134],lowercas:[0,57],lowest:41,lrt:4,lsurfac:79,ltbbmalloc:4,lu3:43,lubric:2,lubricateu:[80,131],luci:74,lumped_lambda_solv:58,lyulin:89,m4v:57,m_eff:118,m_i:76,m_u:67,m_v:67,machin:[1,2,3,4,57,68,91,137,162],mackai:67,mackerel:[2,5,45,101],macos:57,made:[2,3,19,57,59,62,78,117,118,145,149,162],madura:[2,122],magazin:111,magda:80,magic:3,magnitud:[2,29,37,44,62,91,108,118],mai:[0,1,2,3,4,13,19,29,32,33,34,36,37,38,39,40,41,42,43,44,56,57,59,61,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,140,141,146,148,153,158,161,162],mail:162,main:[2,3,67,77,78,111,147],mainboard:1,mainli:143,maintain:[4,93,111,162],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,43,45,46,47,48,49,50,51,52,53,54,55,56,57,59,60,61,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,90,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],makefil:[3,4,137],maks:118,manag:71,manbi:148,mandadapu:58,manh:97,mani:[1,2,4,19,35,44,57,59,60,61,62,63,65,66,67,68,69,70,74,75,79,91,92,104,113,116,120,140,141,147,148,155,157],manifold:162,manipul:[19,59,105,144],manner:[2,3,19,42,57,59,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,40,43,45,46,47,48,49,50,51,52,53,54,57,68,69,75,82,83,84,85,87,88,89,90,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,139,142,143,145,146,149,154,155,156,157,158,159,160,161],manybodi:[42,91],manybody:[93,94,97,104,111,114,142,144,154,155,156,157,158],map:[3,40,41,43,44,57,58,63,73,92,93,94,97,104,111,112,114,134,135,136,142,144,147,148,153,154,155,156,157,158],mara:147,march:134,mark:[119,130,147],maroonmpi:3,marrink:119,marsaglia:66,martin:134,martyna:68,mask:70,mask_direct:58,mass:[2,32,33,34,35,37,44,58,63,66,67,68,71,72,75,76,78,79,93,96,97,111,113,114,118,131,132,135,136,137,144,147,150,151,152],mass_matrix:58,massdelta:75,massiv:[0,57,67,71],massless:[2,105,122,126,130],master:92,mat:[58,104,156],match:[2,3,19,59,60,65,68,97,120,128,134,140,141],mater:[30,93,136,144,147],materi:[2,29,58,70,79,105,111,112,113,118,134,135,137],material_fil:58,math:[4,68],mathemat:[40,41,43,44,61,66,80,148],mathrm:162,matlab:0,matric:[41,117],matrix:[2,35,61,74,137],matter:[2,79,94,107,111,113,134,146,147,155,157,158,161],mattson:[31,39,42,64],max2theta:43,max:[2,59,61,74,75,91,92,147],max_step:74,maxev:91,maxim:92,maximum:[2,9,19,21,27,28,36,38,40,43,59,63,70,74,75,92,97,116,131,132,147],maxit:91,maxstep:74,maxx:144,mayer:[98,99,147],mayo:[2,9,90,120],mbt:46,mcdram:4,mcgraw:71,mclachlan:68,mdregion:58,mdump:[19,59],meam:105,meam_sw_splin:136,meamf:134,mean:[2,3,4,19,28,32,35,36,37,38,39,41,42,44,45,56,57,59,60,61,62,63,66,68,69,70,71,74,75,79,80,81,84,85,86,88,91,92,98,99,100,101,105,109,111,113,117,118,120,122,123,126,133,134,138,140,141,143,144,145,146,153,154,155,156,157,160],meant:2,measur:0,mechan:[2,3,31,58,62,63,64,71,74,97,113,124,137],meck:38,media:57,medium:160,meet:[57,60],mehl:93,mei:133,melros:[131,132],melt:[60,62,97,137,156],member:[45,97],membran:[13,160],memori:[2,4,66,79,97],mendelev:111,mention:[1,2,3,67,69,80,92,94],menu:57,mep:92,mer:60,mercuri:162,meremianin:41,merg:162,merz:[2,45],mesh:[1,2,19,40,43,58,59,67,137],mesoparticl:[64,65,110],messag:[0,2,3,57,63,131,132,162],met:[19,59,91,92],metal:[44,58,72,80,93,94,97,104,111,112,113,114,134,135,136,137,144,147,154,155,156,157,158],methan:72,methin:89,method:[1,2,3,4,19,32,35,42,58,59,65,67,68,71,72,74,75,77,78,91,92,93,97,104,105,111,113,114,134,135,136,140,141,144,147,158],methodolog:[2,30,42,71],mezei:32,mg2:43,mgoh:142,mgptfast:137,micel:76,micelle2d:0,michael:136,mickel:38,microcanon:82,microscal:131,mid:[137,153],middl:[2,4,19,32,46,59,73,83,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,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],middlebondtors:46,midpoint:153,might:[2,4,9,147,162],migrat:[19,59,70],mikami:[2,68],mike:4,mil:111,militz:70,million:[19,59],mimic:[2,28,105,116,122],mimim:[61,92],min2theta:43,min:[2,41,74,147,153],min_modifi:[61,91],min_step:74,min_styl:[91,92],mind:66,minim:[0,2,19,44,57],minima:[50,55,90],minimi:92,minimizaiton:92,minimum:[9,10,11,21,37,43,47,57,61,73,74,80,81,90,91,92,101,113,115,117,119,120,122,124,126,131,132,146,153],minmiz:61,minstep:74,mintmir:105,minu:92,misc:[2,10,11,13,24,25,37,47,66,70,71,77,78,79,84,86,89,106,108,111,112,116,121,127,133,135,136,139,143,153],miscellan:58,mishin:93,mishra:4,miss:121,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,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],mixtur:[2,68,103,115,134,141],mixture_ref_t:134,mjpeg:57,mkv:57,mn2:43,mn3:43,mn4:43,mo3:43,mo5:[43,137],mo6:43,mobil:[2,37,42,57],mode:[1,2,3,4,34,43,57,68,71,105,113,137,147],model:[0,1],modern:4,modest:1,modif:[2,4,32,134,137,145,157,162],modifi:[0,1,2,3,32,57,63,73,75,78,94,108,111,113,130,134,135,136,139,147,156,162],modin:58,modul:3,modulu:[118,134],mol:[44,75,108,117,146],molchunk:34,mole:[111,115],molecul:[2,13,33,34,42,44,60,63,65,73,74,75,101,105,117,122,126,145],molecular:[0,2,4,27,44,50,58,63,71,72,73,79,95,97,100,113],molecule:[5,7,8,9,12,16,21,22,23,26,27,28,45,49,50,51,53,56,85,88,90,101,122],moltempl:0,molybdenum:137,mom:[2,35,73],moment:[2,44,67,68,76,108,112,147],momenta:[63,113],momentum:[2,13,41,44,58,66,67,68,132],momon:60,monaghan:[150,151],monitor:[2,61,62,68,72,75,91,92,108],mono:[30,131],monodispers:[118,131,132],monom:[28,60],monoton:[65,92],mont:[2,60],month:0,moor:[31,42,64,140,141],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,59,60,61,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],morgan:4,moriarti:137,moriarty1:137,moriarty2:137,moriarty3:137,mors:2,mosi2:134,moskalev:41,most:[0,1,2,3,4,19,29,56,57,59,61,62,68,71,72,94,113,117,134,157,162],mostli:[3,57],motiion:2,motion:[2,63,67,68,69,70,71,73,79,81,92,108,113,131,132],motiv:70,mov:57,move:[1,2,3,37,61,67,68,70,72,73,79,80,81,91,92,105,109,131,132,137],movement:[2,91],mp2:94,mp4:57,mpeg:57,mpg:57,mpi4pi:3,mpi:[0,1,2],mpi_barrier:1,mpi_comm:2,mpicc:3,mpich:4,mpirun:[1,2,3,4,71],mplayer:57,msd:2,msi2lmp:0,msmse:[40,43],msse3:137,msst:[69,72],mtk:[68,69],mu_j:13,muccioli:117,much:[1,2,3,57,61,72,94,117,145,162],muller:[2,35,138],multi:[0,1],multibodi:[140,141],multicent:113,multicor:1,multinod:4,multiphys:3,multipl:[0,1],multipli:[32,35,56,67,70,91,94],multiscal:3,multisect:[19,59],multistag:32,multithread:4,murdick:97,murti:156,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,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,78,79,80,81,83,84,85,86,87,88,89,90,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],mutli:2,mux:57,mxn:71,mychunk:[2,34],myflux:35,myhug:69,myke:35,mymol:75,mympi:3,mype:35,myramp:42,myspher:81,mystress:35,n_f:72,n_hbond:120,n_ij:118,n_ion:79,n_k:66,n_particl:31,na1:43,nabla:79,nacl:[2,134],nacl_cs_x0:2,nakano:[92,158],name:[0,1,2,3,4,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,57,58,59,60,61,62,63,64,65,66,67,71,72,73,74,75,76,77,78,80,81,82,92,93,94,97,99,111,112,114,117,118,121,134,135,136,142,144,147,148,154,155,156,157,158,162],namespac:2,nanoindent:29,nanoparticl:59,nanosecond:63,narrow:2,narulkar:[155,157],nation:0,nativ:[1,2],natom:[2,3],natur:[2,41,68,70,111,113,114,134,144],navi:111,navier:67,nb3:43,nb3bharmon:142,nb5:43,nbodi:137,nbot:97,nchunk:[2,34],ncoeff:148,nd3:43,nden:[2,35],ndof:[68,69],nearbi:[81,94,131,132,160],nearest:[29,30,36,38,67,70,81,121,134,140,141,147],nearli:[2,28,59,113,137],neb:2,neb_combin:92,neb_fin:92,necessari:[2,3,4,32,56,59,61,62,66,74,130,137,147],necessarili:[63,84,85,86,88],need:[1,2,3,19,28,29,30,35,36,38,39,41,42,44,45,55,56,57,58,59,61,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,162],needless:2,neg:[2,11,22,33,41,42,47,49,57,61,66,69,70,74,80,114,125,134],neglect:[120,132],neglig:[2,3,32,68,154],neigh_modifi:[2,4,59,91,109],neighbor:[1,2,4,19,29,30,36,38,41,42,44,57,59,60,70,71,92,103,105,109,111,112,114,115,121,122,126,134,141,144,147,148,153,154,155,156,157,158],neighborhood:[10,29,36,148],neighobr:[2,105,122,126],neither:[19,58,60,94,113,131,132],nelem:148,nelement:[93,111],nelson:[36,38],nemd:0,net:[2,3,70,132],netpbm:57,neutral:[105,122,147],never:[61,68,70,75,80,111,134,148,158],neveri:[60,62,63,67,92,147],newer:134,newtion:[97,137,144],newton:[4,13,94,104,112,135,136,147,153,154,155,156,157,158],newtonian:66,next:[1,2,3,29,35,57,65,66,74,75,79,91,92,97,115,118,131,132,140,141,144,162],nfile:[65,140,141],nfreq:59,ngb:70,ngp:37,nguyen:97,nhc:71,ni2:43,ni3:43,ni_000:40,nialh_jea:111,nice:[2,162],nickla:136,nine:[114,147],nissila:[67,147],nist:[93,111],niter:[19,59],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,58,65,79,140,141],node:[1,4,19,40,43,59,67,79,121],node_area:67,node_group:58,nodeless:113,nodes:[19,59],nodeset:58,nodeset_to_elementset:58,noforc:[2,132],nois:[2,66,67,72,79],nomenclatur:2,nomin:68,non:[0,1],nonbond:142,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,42,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,73,74,75,76,79,80,81,82,83,84,85,86,87,88,90,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,145,146,148,149,150,151,152,153,154,155,156,157,158,159,160,161],nonequilibrium:[77,78,113],nongaussian:37,nonlinear:[21,22],noordhoek:104,nor:[19,58,104],nord:[144,155,157],nordlund:[144,155,157],norm:[2,74,91,92,153],normal:[2,3,4,19,29,30,35,39,44,45,59,61,68,70,71,79,80,81,83,84,85,86,88,91,92,103,104,117,118,137,153,161],norman:79,nose:[2,68,69,71,78,109],notat:[2,29,41,68,111,158],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,49,53,56,57,58,59,60,61,62,64,65,67,68,69,71,72,73,74,76,79,80,81,83,84,85,86,88,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,140,141,142,144,145,146,147,148,149,153,154,155,157,158,160,161,162],notes:[32,130],noth:162,notic:[0,2,78,79],notifi:62,novemb:134,now:[2,3,4,22,66,81,111,113,118,149,162],np3:43,np4:43,np6:43,nparticl:96,nph:2,nphi:4,nproc:3,npt:[2,4,32,61],nreset:[61,68,69],nreset_ref:61,nrho:[93,111],nrl:111,nstat:70,nstep:[61,68],ntabl:[140,141],ntheta:97,ntype:[41,44,113,120,144],nuclear:[72,113,161],nuclei:113,nucleu:157,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,43,44,47,56,57,59,60,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,140,141,142,144,145,147,148,153,154,155,156,157,158,161],numer:[1,2,3,19,32,38,44,55,57,58,62,63,66,68,71,75,79,80,91,108,134,140,141,161],numpi:3,nvcc:1,nve:[1,2,4,32,35,44,58,63,66,68,69,73,75,79],nvidia:1,nvt:[2,4,32,35,58,63],nvtfe:58,nxnode:79,object:[2,3,57,61,67,91],observ:[4,68,72],obtain:[1,4,13,30,32,38,67,69,71,94,108,134,147,155,157],obviou:161,obvious:57,occ:116,occasion:68,occlus:57,occup:116,occur:[1,2,3,37,55,59,60,61,62,65,77,113,130,140,141],occurr:89,oct:3,octahedr:9,odd:[19,38,59,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,41,42,43,45,46,47,48,49,50,51,52,53,54,56,57,60,66,68,69,75,80,81,82,83,84,85,87,88,89,90,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,145,146,147,149,153,154,155,156,157,158,159,160,161],offer:[2,105,147],offload:[1,4],offset:[2,44,57,105,122,126],often:[1,2,4,56,57,59,61,62,68,71,91,92,104,109,122,155,157,162],ohio:136,old:[2,61,68,134,149],older:[4,61,68,149],oleinik:97,olfason:[2,9,90,120],ollila:67,olmsted:[58,70],omega0:90,omega:[2,68,80,87,90,108,118,137],omega_dot:68,omega_ij:110,omega_ijk:157,omega_ik:155,omegadd:[140,141],omgea:2,omiss:0,omit:[63,100,108,126],omp:[1,4],omp_num_threads:4,on_the_fli:58,onc:[0,1,2,3,4,19,45,57,59,62,74,92,117,119,144,145],once:[0,2,19,35,59,162],one:[2,13,35,41,57,68,69,79,97,106,132,147],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,59,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,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],only:[2,4,19,29,57,61,62,63,70,91,92,93,94,97,101,104,111,112,114,120,131,132,134,135,136,142,144,148,154,155,156,157,158],onset:[72,89],onto:[41,60,63,67,153],open:[0,3,57,162],opencl:1,opengl:2,openmp:[1,4],openmpi:4,oper:[1,2,3,4,19,35,44,59,60,63,68,69,75,78,79,92,137,162],opl:4,opls:[53,56],oppelstrup:137,oppos:[2,73],opposit:[2,13,29,45,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,45,46,47,48,49,50,51,52,53,54,68,69,75,82,83,84,85,87,88,89,90,93,94,95,98,99,100],optim:0,optimiz:[4,91,104],option:[0,1],optional:148,options:[4,137],orang:57,orbit:[97,105,113,147],order:[2,3,4,11,13,19,32,33,34,36,38,39,41,42,47,56,57,60,61,63,65,67,68,70,72,73,74,75,79,83,84,85,86,88,89,92,93,94,97,104,110,111,113,114,117,118,122,130,134,137,140,141,145,147,154,155,156,157,158],ordinari:[74,120],org:[2,3,70],organ:[0,2,104],organometal:9,orient:[2,13,29,35,36,38,44,68],orientord:36,origin:[2,40,57,63,68,71,78,93,94,95,97,105,108,109,111,120,134,155,157,162],orlikowski:137,orsi:13,orthogon:0,orthograph:57,orthorhomb:72,os4:43,oscil:[2,68,72,80],ose:57,oserror:3,other:[0,1],otherwis:[1,40,45,56,68,74,90,91,121,131,132,144],otyp:[105,122,126,130],our:[2,67,75,155,157],out:[1,2,3,6,19,34,35,37,46,57,59,67,79,81,83,84,88,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,139,140,141,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],outer_distance_cutoff:120,outermost:[68,70,73,76,80,81],outlin:[2,57],output:[0,1],output_frequ:58,outsid:[44,57,63,81,92,98,99,105,113,122,124,143,146],outut:2,outward:[80,81],over:[1,2,4,11,19,32,33,34,36,37,38,41,42,47,57,59,62,66,68,70,72,73,74,80,81,83,92,103,109,111,112,113,114,120,131,134,137,144,148,149,154,155,156,157,158],overal:[2,9,61,68,71,75,113,120,148],overhead:[2,3,19,59,63],overlai:[2,4,32,79,105,109,120,121,130,148,161],overlap:[4,44,91,109,113,118,130,149],overli:74,overload:1,overrid:[4,44,57,61,68,120,134],overridden:[2,44,57,69,131,149],overshoot:62,overview:[0,1,2],overwrit:[3,134],overwritten:120,own:[2,3,19,30,34,58,59,60,61,62,66,67,68,69,71,92,94,97,104,112,144,154,155,156,157,158,162],oxford:[13,32,108],oxid:[104,105,147],oxygen:[2,105,122,126,147],p10:118,p_e:79,p_ik:144,p_pi:97,pacakg:4,pack:[97,134],packag:0,packet:[57,113],pad:[57,71],page:[0,1,2,3,32,34,37,39,42,44,56,57,62,68,81,91,92,93,94,96,104,105,111,112,114,120,134,135,136,142,144,148,154,155,157,158],painless:162,pair:1,pair_:32,pair_charmm:130,pair_coeff:[2,32,35,45,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],pair_dzugatov:162,pair_eam:93,pair_interact:58,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,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],pair_sph:[150,151,152],pair_styl:[0,1,2,4,18,28,32,35,41,45,66,80,81,91],pair_writ:128,pairwis:[0,1,2,28,29,36,38,39,41,42,45,56,60,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,143,146,149,153,157,159,160],pakketeretet2:162,pan:57,panagiotopoulo:[106,116],papaconstantopoulo:93,paper:[2,41,50,67,79,92,94,100,105,118,120,124,126,155,157],paquai:162,paraemt:145,paragraph:[80,140,141],parallel:[0,1,2],parallel_studio_xe_2016:4,parallelepip:2,param:115,paramet:0,parameter:[40,43,94,97,104,105,111,112,113,114,134,135,136,144,147,154,155,156,157,158],parameter_fil:58,parameterizaion:105,parametr:[2,18,112,146],paramt:[37,145],paramter:104,paratem:130,parenthes:[65,74,115,118,140,141],parenthesi:4,parinello:2,pariticl:59,park:[58,136],parmin:137,parrinello1981:61,parrinello:[61,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,45,46,47,48,49,50,51,52,53,54,56,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,85,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,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],partial:[1,2,61,67,69,71,134],partic:2,particip:[55,96],particl:0,particular:[1,2,29,41,44,57,59,60,66,67,68,70,73,75,83,96,97,98,99,101,102,103,107,110,112,113,117,119,122,126,130,133,139,142,143,145,146,154,155,156,157,158,162],particularli:[2,9,57,61,113],partit:[2,19,59,71,92,100,101,113,122,123,126,133,138,144],partner:60,pass:[2,3,33,34,37,57,61,68,80,153],password:162,past:[0,62,72,109],patch:0,patel:137,path:[2,3,71,79,92,93,94,97,111,112,114,134,135,136,142,144,147,148,154,155,157,158],pathtolammp:147,patrick:156,pattern:30,paul:0,pauli:[113,147],paves:71,payn:[41,148],pb2:43,pb4:43,pbc:80,pchain:[68,69],pcie:1,pd2:43,pd4:43,pdamp:[68,69],pdb:2,pdf:[0,150,151,152],pe_eta:68,pe_etap:68,pe_omega:68,pe_strain:68,peak:116,pearlman:32,pencil:2,peng:43,per:[0,1],peratom:42,perceiv:57,percent:[4,61,154],percentag:[1,61,68],perfect:[2,19,29,30,36,59,70,92],perfectli:[19,59],perfom:[2,92],perform:0,performac:1,pergamon:[134,157,161],peri:[2,44],peridynam:2,perimitt:106,period:2,perioid:80,perl:2,perman:[28,73,120],permit:[2,67,137],permitt:[106,157,160,161],permut:[112,154,155,157,158],perpendicular:[2,57,70,80],perram:117,persepct:57,person:162,persp:57,perspect:57,perturb:[29,32,80],peskin:67,pettifor:97,pettifor_1:97,pettifor_2:97,pettifor_3:97,pfactor:57,phase:[4,68,97,122,156],phenomena:113,phi0:[54,73],phi1:46,phi2:[46,112,154],phi3:[46,112,154],phi:[1,4,36,38,41,55,56,57,73,85,93,97,111,114,134,135,136],phi_ij:[97,114,144],phillip:109,phillpot:[104,105,147],philosoph:111,philosophi:2,phonon:[0,58,79],phophor:148,phosphid:148,phy:[2,5,6,9,20,21,22,29,30,32,36,38,39,41,42,45,46,53,61,63,66,67,68,69,71,72,75,77,78,79,80,83,89,90,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,140,141,143,144,145,147,148,153,154,155,156,157,158],physic:[2,4,27,55,58,63,67,79,92,94,95,100,103,111,120,137,150,151,152],physica:[131,132],pick:62,picosend:113,pid:62,piec:[3,41,68],pimd:2,pin:4,pipe:[2,57],pipelin:[2,4],pisarev:79,pishevar:109,pitera:2,pixel:57,pizza:[2,3,19,57,59],pka:79,place:[2,3,19,32,44,57,60,63,66,68,79,80,120],placehold:[93,94,104,111,114,134,135,136,142,144,148,153,154,155,156,157,158],placement:122,plai:[2,57],plain:130,plan:[2,4],planar:[2,70,89,90],planck:71,plane:[2,19,36,57,58,59,70,79,83,84,85,86,87,88,90,132],planeforc:91,plasma:[79,113],plateau:62,platform:[1,4,57],plath:[2,35],player:57,pleas:[0,3,4,58,62,67,112,114,147],plimpton:[0,4,29,39,42,60,70,118],ploop:[68,69],plos:13,plot:[3,4,72,128,130],plu:[3,61,69,113],pm3:43,png:57,pni:57,poariz:2,poem:2,poems:2,point:[1,2,3,4,13,19,29,40,41,43,44,49,57,59,61,65,67,68,71,72,79,81,91,92,96,104,106,108,110,113,117,124,137,140,141,144,145,147,153,156,160],pointer:3,poisson:118,poisson_solv:58,polar:[2,38,41,43,58,104,105,122],polar_off:104,polar_on:104,polariz:0,politano:147,polydispers:[103,118,131,132,160],polyethylen:94,polygon:2,polym:[0,2,21,22,28,60,71,75,76,109,153],polynomi:[111,128,147],poor:[19,59,75,128],poorli:91,popular:112,porou:67,portion:[1,3,19,28,35,42,59,61,63,67,68,98,99,100,101,102,105,106,108,109,113,115,116,117,119,120,122,126,130,133,143,145,146,157,162],poschel:118,posit:[2,11,19,22,29,33,34,40,41,42,43,44,47,49,55,57,59,60,61,62,63,66,67,68,70,71,72,74,75,77,78,79,80,81,82,83,92,94,96,109,110,113,116,125,140,141,147,153],possibl:[1,2,3,19,29,32,41,42,58,59,60,64,70,74,79,87,91,120,134,147,158],post:[0,2,35,58,72],pot:118,potentail:114,potenti:0,potentiel:130,potin:137,pour:[2,75],power:[3,4,37,41,97],pparam:32,ppm:57,ppn:4,pppm:[0,1],pproni:66,pr3:43,pr4:43,practic:[61,68,158,162],prb:[155,157],prd:[2,92],pre:[2,73,80,97,118,140,141,147,149],prec:[4,147],preced:[2,45,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,44,45,46,47,48,49,50,51,52,53,54,61,63,68,69,75,82,83,84,85,87,88,89,90,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,139,142,143,145,146,147,149,154,155,156,157,158,159,160,161],predefin:[54,113],predict:[1,2],prefactor:[8,9,12,16,17,18,56,80,84,88,89,91,103,116,142,145,146,149,160],prefer:[73,94,162],prefix:[3,57,62,74],preliminari:[65,140,141],prematur:91,preprint:[41,148],prescrib:[2,58],presenc:[67,131,132,137,160],present:[1,4,57,62,66,67,81,104,113,121,130,137,145,147],preserv:[61,68,75],press:[2,4,13,32,42,61,68,69,108,134,157,160],pressur:[1,2],pressure_with_eviri:113,presum:[30,92],prevent:[2,55,89,91,92,109,150,151,153],previou:[0,2,3,59,91,97,118,120,134,140,141],previous:[3,44,62,75,79,80,118],price:[2,108],primari:[0,2,79],prime:[119,137,155,157],primit:[2,81],princip:147,principl:[2,3,113,137,154,162],print:[0,1,2,3,4,19,35,41,57,60,61,67,68,69,70,72,74,75,91,92,94,109,116,120,147],printfluid:67,prism:2,privileg:3,probab:149,probabl:[55,59,60,68,80,91,140,141],problem:[0,1,2,3,19,35,58,59,61,73,78,81,91,92,105,108,120,162],proc:[1,3,4],proce:[19,28,59,92,137],procedur:[2,19,59,68,69,77,78,91,92,94],proceed:137,procesor:19,process:1,processor:[1,2,3,4,19,44,57,58,59,60,61,66,67,68,71,75,79,92,109,147],processsor:[19,59],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,42,45,46,47,48,49,50,51,52,53,54,57,59,60,62,66,68,69,72,74,75,79,80,82,83,84,85,87,88,89,90,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,139,142,143,144,145,146,149,154,155,156,157,158,159,160,161],product:[2,4,41,74,113,115,141],profil:[2,63,92],program:[2,3,4,57,67,111],progress:[1,19,59,72,91,92],project:[2,162],promot:97,prompt:3,proni:66,prop:2,propag:[68,72,113],propens:2,proper:[60,70,134,162],properli:[92,110],properti:0,proport:[2,19,32,59,62,72,74,118],propos:[2,41,61,68,122,136,156],protein:[4,44,76],proton:[157,161],prove:[31,64,67],provid:[1,2,3,4,13,29,35,40,43,44,57,60,61,67,68,72,77,78,92,94,97,104,105,109,112,113,118,120,121,130,131,134,136,137,144,147,148,153,154,155,156,157,158,162],pscrozi:0,psec:68,pseudo:113,pseudopotenti:137,psf:2,psi:[114,160],psi_ij:114,pstart:[68,69],pstop:[68,69],pstyle:32,psxevar:4,pt2:43,pt4:43,ptarget:61,pthread:4,ptr:[2,3],pu3:43,pu4:43,pu6:43,publish:[67,105,134,137,155,157],pull:162,puls:79,pump:[131,132],purchas:57,pure:[3,135,136,155,157],purport:3,purpos:[2,40,43,44,60,61,70,71,73,100,126,137],push:[70,91,118,149,162],put:[2,3,44],pvar:62,pxx:[61,68],pxy:2,pxz:2,pydir:3,pyi:[61,68],pymol:3,pymol_aspher:0,pympi:3,pypar:3,python:[0,2],pythonpath:3,pyz:2,pzz:[61,68,72],q_1:147,q_2:147,q_3:147,q_i:[114,130],q_j:130,qdist:[105,122,126,130],qeq:[2,104,105,147],qeqall:147,qeqallparallel:147,qfile:105,qinitmod:147,qoffload:4,qopenmp:4,qoverrid:4,qtb:72,quadrant:4,quadratur:[32,58],quadrupl:93,quadruplet:[56,83,84,85,86,88,89],qualiti:[57,94],quantic:147,quantit:[37,118],quantiti:1,quantum:[2,41,71,72,94,97,113,137,147],quantum_temperatur:72,quartic_spher:58,quartz:72,quasi:71,quaternion:[2,44,117],queri:[3,28],quest:2,question:[70,162],quick:[0,4],quickli:[36,59,91,92,94],quickmin:[91,92],quicktim:57,quit:[67,148],quot:134,quotat:147,r10:97,r12:117,r_1:41,r_2:41,r_c:[106,108,116,157],r_cut:[97,133],r_e:114,r_fu:[131,132],r_i:[13,41],r_ii:41,r_ij:[13,97,113,144,161],r_ik:144,r_j:13,r_jik:144,r_m:133,r_me:106,r_mh:116,r_min:107,r_ub:5,ra2:43,rad2theta:43,radial:[41,91,113,120,140,141],radian:[5,6,8,12,16,17,18,43,46,54,73,83,84,88,89],radiat:[40,43,79],radii:[41,60,103,111,117,118,131,132,137,160],radit:113,radiu:[2,33,34,40,41,57,67,76,80,81,97,103,113,114,118,122,130,131,132,133,134,147,148,157,160],rahman:[2,61,68,72],rai:43,ram:157,raman:4,ramp:[2,66,68,72,80,101,109,119,130,131,133,149,161],ran:[2,3],random:[2,44,57,60,66,67,68,71,72,79,109,110],randomli:44,rang:[1,2,4,38,39,41,42,43,50,57,58,62,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,143,144,145,146,147,153,157,159,160,161],rank:[2,3],rankin:69,rapid:[2,3],rapidli:[60,68,105,109],rare:2,rasmol:2,rasmussen:117,raster3d:2,rate:[2,4,58,72,74,77,78,115,131,132,141],rather:[2,19,39,57,59,66,79,113,140,141],ratio:[2,32,41,59,117,118,145,150],rattl:63,rattle:[63,75],rattle_debug:75,ravelo:[69,124],raw:4,rayleigh:72,rb1:43,rbb:147,rcb:[19,59],rcm:[33,34],rcmx:[33,34],rcmy:[33,34],rcold:63,rcutfac:[41,148],rd1:92,rdn:92,rdt:92,reach:[2,19,59,61,62,69,74,106],reacquaint:162,react:2,reactant:[74,113],reaction:[65,74,76,92,113,115,141],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,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,61,65,68,69,71,74,75,78,79,83,84,85,86,87,88,89,90,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,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],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,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,71,73,74,83,84,85,86,87,88,89,90,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,139,143,144,145,146,147,149,153,159,160],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,44,45,46,47,48,49,50,51,52,53,54,56,58,61,67,68,69,71,79,83,84,85,86,87,88,89,90,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,139,143,145,146,149,153,159,160],readabl:57,readi:3,readme:[1,2,3,4,137],real:[2,3,11,14,15,35,36,38,41,44,47,71,72,80,87,105,137,157],realli:[1,39,42,162],reamin:[80,81],rearrang:92,reason:[2,3,44,55,77,78,92,106,113,114,116,132],reax:[0,72],rebal:[19,59],rebalanc:[19,59],rebuild:[3,4,109],rebuilt:57,recalcul:32,receiv:70,recent:[3,4,59,62,134],reciproc:[2,40,43,98,99,100,105,108,113,122,126,143,146],recogn:[30,68,74,111,134],recomend:2,recommed:74,recommend:[4,57,63,72,78,113,131,132,137,145,147,162],recompil:[1,75],reconstruct:147,recov:[61,63,68],rectangl:[19,59],rectangular:[19,59],rectilinear:[40,43],rector:27,recurs:[19,59,97],recust:19,red:[57,60,71],reduc:[1,2,11,19,39,40,42,43,57,59,60,70,73,74,91,113,117,144,145,154,155,157],reduct:[40,43,72],redund:114,reed:72,ref:[77,78],refactor:2,refer:[2,3,4,13,32,44,58,60,61,62,63,68,69,70,71,72,75,83,90,93,117,134,136,137,145,151,152,155,157],referenc:[2,62,105,120,142,145],reflect:[2,40,41,43,56,57,62,80,97],refresh:58,regard:[2,75],regardless:[44,68],regim:[2,106],region:[0,2,19,35,43,44,50,57,58,59,63,68,79,80],region_styl:81,regoin:2,regspher:44,regul:2,regular:[1,19,57,59,79,106],reinder:4,reinhardt:[77,78],reject:[44,60],rel:[1,2,11,18,19,36,41,44,47,59,63,70,74,79,91,113,117,118,131,132,134,145,160],relat:[1,2],relationship:[2,147,160],relax:2,releas:0,relev:[2,19,44,58,59,62,63,66,67,75,76,79,80,82,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,145,149,153,159,160,161],reli:[113,161],reltol:74,remain:[19,32,55,56,61,68,79,97,113,130,137,162],remaina:97,remaind:[44,157],remap:[2,44],remedi:2,rememb:162,remot:162,remov:[2,28,36,38,41,44,68,74,75,92,108,132,137,162],remove_molecul:58,remove_sourc:58,remove_speci:58,ren:43,renam:162,render:57,rendon:68,reneighbor:[59,109],repeat:[2,57,60,61,74,97,155,157],replac:[2,3,19,33,34,57,59,60,69,94,105,118,124,140,141],replica:0,repons:62,report:[0,1,4,40,43,61,72,73,74,79,92,108,113,134],repositori:162,reprens:79,repres:[1,2,19,29,34,50,57,61,62,65,66,67,68,71,74,79,81,92,93,97,117,130,131,132,134,135,136,143,144],represent:[2,66,71,79,97,113,117,137,145],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,147,153,157,158,160,161],request:[2,19,67,162],requir:[1,2,3,4,18,19,28,31,32,40,42,43,44,45,55,57,58,59,60,64,65,66,67,68,74,75,79,80,83,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,144,145,146,147,148,153,154,155,156,157,158,160,161],rerun:[36,38,41,57],rescal:[2,63,68,69,77,78],research:[31,64,67,137],resembl:162,resepct:2,reservoir:[35,63,79],reset:[2,3,33,34,44,61,68,69,75,79,91,132],reset_atomic_reference_posit:58,reset_tim:58,reset_timestep:[2,35],resist:2,resolut:147,resolv:[61,71,132,162],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,139,140,141,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],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,40,43,45,46,47,48,49,50,51,52,53,54,57,60,61,63,67,68,69,75,79,80,82,83,84,85,87,88,89,90,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,142,143,145,146,147,148,149,154,155,156,157,158,159,160,161],respond:[2,62,113],respons:[2,62],resquar:[2,117],rest:[2,73,97,132,134],restart1:71,restart2:71,restart2data:0,restart:[0,1],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,40,42,43,44,45,46,47,48,49,50,51,52,53,54,57,59,60,61,62,63,66,67,68,69,71,74,75,77,78,79,80,82,83,84,85,87,88,89,90,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,145,146,149,154,155,156,157,158,159,160,161],retain:[94,97,137],retriev:[2,135,136],rev:[2,29,36,38,41,42,68,69,77,78,97,103,104,105,108,111,112,113,117,118,124,131,132,133,134,136,140,141,144,145,148,154,155,156,157,158],revers:[2,32,49,60,68,70,77,92,130],review:[41,137,148,162],rfac0:[41,148],rg0:76,rh3:43,rh4:43,rheolog:2,rhi:[140,141],rho0:[134,151,152],rho0_meam:134,rho:[67,93,98,99,100,111,133,134,135,136,140,141,145,150],rho_0:[151,152],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:[150,151,152],rhot:63,rhs:74,rick:[104,147],right:[2,3,19,29,44,54,56,59,60,67,70,74,105,162],rightmost:[19,59],rii:[33,34],rij:[36,38,70,109,110,140,141,153],rin:[120,127,128],ring:[2,45,71],rino:[30,158],rirj:118,risi:[41,148],risk:73,rix:[33,34],rk4:74,rkf45:74,rlo:[140,141],rmin0:[41,148],rmin:124,rms:74,rnemd:2,robust:91,rock:134,rockett:144,role:2,ronchetti:38,root:[3,32,33,34,111],rose:134,ross:134,rosski:71,rot:[2,35,71,73],rotat:[2,41,44,81,91,108,117,145],rotation:38,rough:[2,44,57],roughli:[19,57,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,45,46,47,48,49,50,51,52,53,54,68,69,75,82,83,84,85,87,88,89,90,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,139,140,141,142,143,145,146,149,154,155,156,157,158,159,160,161],rous:66,rout:[32,120,130],routin:[2,3,4,67,137],roux:2,row:[2,34,43,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,139,140,141,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],rsq:[140,141],rsurfac:79,ru3:43,ru4:43,rub:5,rubia:[135,136],rule:[0,2,13,29,44,60,68,81,93,95,96,102,103,108,120,125,134,138,149,153,154,155,157,161],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,139,140,141,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],rung:74,runtim:57,rutherford:79,rutuparna:[155,157],rxn:74,ryckaert:[75,89],rydberg:137,s0st:2,s2050:1,s2629:111,s319:58,s_i:[2,113],s_ij:2,saddl:92,sadigh:[111,135,136],saed_vtk:40,safe:[57,162],safran:160,sagui:108,sai:[1,162],said:91,sakai:156,sall:147,salt:[106,116,134],salter:147,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,41,42,44,45,46,47,48,49,50,51,52,53,54,57,58,59,60,61,62,63,66,67,68,69,70,71,72,73,75,77,78,79,81,82,83,84,85,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,142,143,144,145,146,147,149,153,154,155,156,157,158,159,160,161,162],sampl:[1,2,3,35,57,68,71,76,78,97],sample_frequ:58,sandia:[0,29,114,134],saniti:73,satellit:2,satisfi:[30,40,41,43,61,63,67,69,75,91,118],satur:106,save:[2,57,60,66,74,79,97],sb3:43,sb5:43,sc3:43,scalabl:[0,1,4],scale:[0,1,2,4,35,41,45,57,58,61,67,68,69,71,72,77,78,79,93,94,106,113,115,118,131,132,134,137],scalegamma:67,scalexi:[61,68,69],scalexz:[61,68,69],scaleyz:[61,68,69],scatter:[3,40,43],scatter_atom:3,scatter_coord:3,scenario:[2,60,81],schaik:130,schell:156,schemat:60,scheme:[2,62,66,68,71,75,79],schmid:109,schroding:113,schroeder:38,sci:[30,104,136,144,147],scienc:[58,60,70,77,111,135,147,156],scientif:[41,111],scm:3,scratch:[19,59],screen:[0,1,2,3,4,40,43,57,67,75,92,101,105,122,134,154,157,158,159,160,161],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,42,43,55,60,62,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,142,147,154,156,157,158,161],second_mo:147,secondari:50,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,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,74,75,77,78,79,82,83,84,85,86,87,88,89,90,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],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,45,46,47,48,49,50,51,52,53,54,68,69,75,82,83,84,85,87,88,89,90,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,139,142,143,145,146,149,154,155,156,157,158,159,160,161],section_accerl:111,section_command:[0,1],section_exampl:2,section_howto:[2,3,29,30,32,33,34,36,38,41,42,96,107],section_modifi:[2,57],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],seed:[44,57,60,66,67,71,72,79,109,110],seek:[19,59],seem:[2,61,134],seen:[4,67,81],segment:[2,57,109,153],select:[2,40,43,44,57,80,92,120,121,134,147],self:[2,72,73,74,76,78,91,104,105,137,144,147],semi:58,semimet:113,semin:4,send:[0,3],sens:[1,2,19,56,59,60,66,72,79,92,105,122,126,155,156,157],sensit:[2,30,61],sep:[2,3],separ:[2,4,19,41,44,55,57,58,59,60,61,68,71,75,98,99,105,106,108,110,122,131,132,134,140,141,142,148,154,157,160],seper:106,sequenc:[19,57,59,92,144],sequenti:144,seri:[2,4,41,57,66,94,117,134,137,140,141,145,149],serial:1,serv:[2,153],server:1,set:[0,1],set_vari:[2,3],setarea:67,sete:60,setenv:3,setfl:[93,111],setforc:[2,91,92],setgamma:67,setpoint:62,settl:61,setup:[2,3,4,32,35,56,58,60],seven:136,sever:[1,2,3,4,32,56,58,61,67,68,91,97,100,111,126,130,134,144,147],sexton:137,sfactor:57,shade:57,shake:[2,13,39,42,63],shan:104,shape:[2,19,44,57,59,61,68,72,81,96,117,145],shardlow:[64,74,110],share:[0,1,2],sharp:[81,134,157],shear:[2,61,67,68,118,131,132],shell:0,shenderova:94,shift:[1,2],shiga:[2,68],shini:57,shinoda:[2,68,146],shiny:57,shlib:3,shm:4,shock:[69,72,124],shockvel:72,shortcut:[61,68],shorter:70,shortest:57,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,42,44,45,46,47,48,49,50,51,52,53,54,57,59,60,61,62,66,67,68,69,70,71,72,73,74,75,79,80,81,82,83,84,85,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,145,146,147,149,153,154,155,156,157,158,159,160,161,162],show:[2,3,92,120,134,137],shown:[1,4,19,40,41,43,56,59,60,61,63,68,70,71,113,114,117,118,130,137,145,147],shrink:[2,19,57,59,67,70,91,105,122,126],shrunk:74,shut:[2,3],si4:43,sic:[105,134,142,154,155,157,158],sic_tersoff:144,sicc:[112,154,155,157,158],sicg:[155,157],sicsi:[112,154,155,157,158],side:[19,44,59,60,67,70,74,80,81,92,105,117,118,145],sige:[155,157],sigma0:97,sigma14:130,sigma1:97,sigma2:97,sigma:[2,21,22,28,32,45,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,145,146,154],sigma_14:101,sigma_:106,sigma_c:103,sigma_cc:[94,103],sigma_h:116,sigma_i:114,sigma_ss:103,sign:[2,49,56,62,137,162],signifi:[34,115,141],signific:[66,74,113,117,134,137],significantli:[1,2,42,67,68,73,113,154],silbert:118,silicon:[112,134,154],sim:146,similar:[2,3,4,19,22,32,39,42,44,59,66,72,73,80,94,96,97,109,111,113,118,130,131,139,144],similarli:[2,39,57,62,68,75,81,83,92,94,100,118,126,154],simluat:[2,131],simlul:79,simpl:[1,2,3,4],simpler:3,simplest:34,simpli:[1,2,3,34,61,68,71,92,100,108,126,134],simplif:113,simplifi:[73,137],simplist:3,simul:[0,1],simulatan:4,simulationub:147,simultan:[2,4],sin:[55,80,144],sinc:[0,1,2,3,6,19,28,29,30,33,34,40,45,57,59,60,61,67,68,69,70,71,74,79,80,81,83,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,140,141,143,144,145,146,147,148,149,154,155,156,157,158,161,162],sinclair:[70,111],sine:144,singapor:41,singh:93,singl:[1,2,3,4,19,32,34,44,55,57,59,60,61,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,142,143,144,145,147,148,149,154,155,156,157,158],singleel:97,singular:[55,130,131,132,139],sinnott:[94,104],sinusoid:[44,80],sio2:158,sio:104,sirk:[42,153],sisic:[112,154,155,157,158],sisisi:[112,154,155,156,157,158],site:[0,1,2,3,29,32,63,67,75,93,97,105,111,115,116,122,126,130,139,141,143],situat:[61,62,67,68,71,97],sival:43,six:[2,41,142,144],sixth:142,sixthpow:102,size:[0,1],sjplimp:[0,3],skew:[2,57,68],skin:[30,79],skip:[4,45,121],slab:2,slater:[105,147],sleight:28,slepoi:134,slice:[2,40,71],slider:3,slight:[63,79],slightli:[1,2,4,57,68,94,105,122,126,155,157,158],sligthli:108,sliozberg:153,sllod:[2,4],slope:[2,78,106],slot:1,slow:[2,66,68,92,147],slower:[1,97],slowest:79,slowli:[59,91,137,149],sm3:43,small:[2,19,29,32,40,42,43,59,60,63,66,68,70,72,74,75,89,91,92,94,103,105,106,107,122,131,132,134,145,148,154,157,162],smaller:[1,2,4,57,67,74,78],smallest:29,smd:76,smith:143,smooth:[2,81,97,101,105,119,124,127],smoother:44,smoothli:[28,41,101,119,128,130,133,157,161],smt:4,smtb:147,smulat:137,sn2:43,sn4:43,snap:[41,57],snapcoeff:148,snapparam:148,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,144],solid:[2,19,29,30,35,42,58,59,61,68,70,78,98,124,137],solut:[2,61,74,75,81],solv:[63,67,74,75,78,79,132],solvat:44,solvent:[59,66,68,101,103,105,106,116,122,131,132,145],solver:[0,1,2,19,42,58,59,65,74,105,107,115,122,130,141],some:[1,2,3,4,19,37,44,49,56,57,59,60,61,62,68,74,79,80,91,92,96,97,105,111,113,137,162],someon:91,someth:[3,61,68,80,162],sometim:[2,61,68],somewhat:[29,68],somewher:113,soon:60,sort:[4,92],sound:[67,151,152],soundspe:[151,152],sourc:[0,3,4,58,61,79,130],source_integr:58,sourceforg:3,south:41,space:[2,3,4,19,40,41,43,44,57,59,67,68,71,80,92,98,99,100,105,108,111,113,122,126,134,137,140,141,143,144,146,160],spahn:118,span:[63,93,94,97,104,111,114,134,135,136,142,144,148,154,155,156,157,158],spars:74,spatial:[2,19,29,34,58,59,79],spc:0,spce:63,spearot:[40,43],speci:[41,65,74,111,114,115,141,144,155,157],special:[2,44,45,58,75,93,104,107],special_bond:[2,4,21,22,28,36,38,41,45,56,60,107,120],species1:[65,141],species2:[65,141],species:74,speciesn:65,specif:[1,2,4,13,19,44,57,58,59,60,66,67,79,80,91,92,94,96,97,107,111,117,118,134,137,145,154],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,42,43,44,45,46,47,48,49,50,51,52,53,54,56,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,85,87,88,89,90,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],specifii:67,spectral:148,spectrum:[41,72],speed:[1,2,4,19,59,67,72,92,97,105,137,151,152,155],speedup:[1,4],spefici:[44,57,120],spellmey:[2,45],spent:1,sphere1:67,sphere:[2,40,41,44,57,67,68,81,103,108,113,117,118,122,131,132,145,160],spheric:0,spheriod:2,spheroid:[2,68],spin:113,spline:[65,91,94,97,120,134],split:[1,2,3,4,19,59,63,68,110],splittol:2,spparks:2,spread:[1,2],spring:[2,10,11,21,22,24,25,27,47,55,60,71],sqrt:[33,38,70,103,109,111,116,118,134],squar:[2,8],squares:[19,59],squeez:[61,131,132],sr2:43,src:[0,1,2,3,4,75,137,162],srolovitz:111,srp:109,srtio:147,ssao:57,stabil:[2,68,97],stabl:[2,55,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,44,50,58,67,71,75,80,93,94,96,105,108,113,116,117,122,123,124,125,126,129,133,134,137,138,145,154],starikov:79,start:[0,2,4,19,39,44],start_6:116,stat:[28,61,70,91],state:[2,3,29,30,32,50,57,60,61,64,65,66,68,69,72,77,78,79,92,97,108,110,113,117,118,134,136,137,145,147,150,151,152],statement:162,stationari:[67,131,132],statist:[2,19,60,66,72,74,75,79,91,92,94,109,118,131,160],statu:[28,104],steadi:[2,69,72],stefan:162,stegailov:79,steinhardt:38,stencil:67,step:[1,2,3,4,35,42,57,58,59,60,61,63,70,72,74,75,77,78,79,91,92,94,109,116,120,134,137,147],stepwis:32,steve:0,steven:60,stiff:[2,26,71,74,91],stile:106,still:[1,2,3,4,19,36,59,79,102,111,117,118,121,131,145,149,162],stilling:[112,136,144,154,158],stochast:110,stoddard:108,stoichiometr:74,stoichiometri:147,stoke:67,stone:108,stop:[2,3,19,28],stopthresh:[19,59],store:[2,3,33,35,36,39,42,44,56,57,58,62,66,67,68,69,70,71,74,75,76,78,79,82,93,94,97,104,109,110,111,112,113,114,115,117,118,134,135,136,137,140,141,144,147,148,154,155,156,157,158],straatsma:2,straightforward:113,strain:[2,61,68,69,131,132],strang:57,strategi:0,stratford:67,stream:[2,39,42,57,58,66],streiz:105,strength:[41,57,73,80,81,145],stress:[2,35,39],stretch:28,strict:148,strictli:[2,19,59,72],strietz:105,string:[2,3,19,59,74,134,144,148],strong:94,stronger:2,strongest:[131,132],strongli:[1,2,75,79,137],structur:[0,2,3,29,30,38,40,43,50,73,90,97,104,113,134,137,144,147],strucur:30,stuart:[94,104,147],stuck:61,studi:[2,37,124,147],studio:4,stukowski:111,style:0,style_nam:68,stylecomput:147,sub:[1,2,3,19,32,35,41,56,57,59,61,68,69,72,75,79,81,94,96,104,117,118,120,145,147,161],subbox:57,subdivis:67,subdomain:67,subequ:3,subject:[2,4,19,59],submit:[0,56,114],subscript:[3,62,79,83,114,158],subsequ:[2,3,19,59,61,79,111],subset:[2,3,4,19,41,59,68,69,92,94,97],substanti:[2,62,154],substep:68,substitut:[1,92,113],substract:105,substrat:[61,68],substyl:130,subsystem:79,subtract:[2,28,35,37,39,42,63,66,129],success:[2,3,61,62,91,92],successfulli:3,successulli:3,sudden:18,suddenli:81,sudo:3,suffer:81,suffici:[2,19,59,62,68,80,121],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,45,46,47,48,49,50,51,52,53,54,57,68,69,74,75,82,83,84,85,87,88,89,90,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,139,142,143,144,145,146,149,154,155,156,157,158,159,160,161],suggest:[0,2,72],suit:[67,113],suitabl:[28,32,60,97,118,130,134],sum:[2,29,33,34,36,37,38,39,41,42,66,70,72,78,79,80,81,91,96,105,109,113,114,122,125,134,148],summar:[2,114,147],summari:1,summat:[2,29,38,100,105,111,112,122,126,137,147,154,155,156,157,158],sun:[6,20,46,83,102],sup:[72,104,147],superset:35,supinski:137,supplementari:[117,145],suppli:79,support:[1,2,3,4,19,32,57,59,60,61,67,68,69,70,72,73,76,78,80,81,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,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],suppos:[114,162],suppress:2,sure:[2,3,61,75,111,162],surfac:[2,29,40,41,44,57,67,70,73,79,80,81,92,97,131,132,137,147,160],surface_mov:79,surfact:[106,116],surpris:113,surround:[29,44,61,65,68,70,140,141],suspens:[131,132],sustain:[61,118],suzuki:68,svg:2,svn:3,swap:2,swiggl:80,swiler:[41,148],switch7_section_start:116,switchflag:[41,148],swol:27,swope:2,symbol:[2,40,43,97,113,148],symmetr:[2,29,32,39,42,61,68,93,108,111,155,157],symmetri:[2,29,36,38,70,83,93],symplect:68,sync:2,synchron:[1,92],syntax:[1,2,3],sysstem:97,syst:147,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:148,ta4:137,ta5:43,ta6:137,tabbernor:40,table:65,tabul:[65,74,93,97,98,99,100,101,102,105,111,113,115,122,126,133,140,141,143,144,146,155],tabular:144,tad:2,tag:[58,65,74,115,141],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,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],tait:[151,152],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,42,45,46,47,48,49,50,51,52,53,54,57,59,61,63,68,69,74,75,76,82,83,84,85,87,88,89,90,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,139,142,143,145,146,147,149,153,154,155,156,157,158,159,160,161],taken:[2,44,60,66,67,72,74,79,87,111,113,117,140,141,154,158],talk:2,talli:[2,19,59,94,113,116,120],tang:137,tangenti:[2,118],tanh:79,tantalum:[137,148],taper:133,tarbal:[0,3],target:[2,3,19,59,61,62,63,66,68,69,71,72,76,79,109],task:[1,2,4,28,71],taskset:4,tau:[62,67,68,77,78,79],tau_1:66,tau_k:66,tau_n_k:66,tb3:43,tbp:97,tchain:[68,69],tcontrol:62,tcsh:3,tdamp:[68,69],technic:[2,67],techniqu:[2,32,61,72],technolog:4,tell:[2,3,56],temeperatur:3,temp:[2,32,35,39,42,60,61,63,68,69,71,72,79,94,108,116,117,120,145],temper:[2,92],temperar:71,temperatur:0,temperature_definit:58,templat:[44,75],templeton2010:58,templeton2011:58,templeton:58,tempor:66,temporarili:73,tend:[13,68,70,74],tensor:[2,33,34,35,39,41,42,61,67,68,69,113,131,132,137],term:[0,1,2,5,6,11,21,22,32,33,35,39,42,46,47,55,62,63,66,67,68,69,71,72,73,76,79,83,90,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,143,145,147,153,154,155,156,157,158,160],termin:[40,68,91,92],tersoff:[4,42,105,112,144],tersoff_1:[155,156,157],tersoff_2:[155,156,157],tersoff_mod:156,tertiari:50,test:[0,2],tether:[2,78,116],tetot:147,texas_holdem:73,text:[2,19,57,58,59,65,79,92,111,114,121,134,140,141,148,162],tfix:73,tflag:57,th4:43,thakkar:4,thakker:4,than:[1,2,3,4,11,19,36,37,38,39,42,47,59,60,61,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,140,141,145,147,149,153,154,157,160,161],thank:[155,157],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,41,44,45,46,47,48,49,50,51,52,53,54,56,57,59,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,139,141,142,143,144,145,146,147,148,149,153,154,155,156,157,158,159,160,161,162],them:[1,2,3,19,28,35,46,57,59,60,61,62,68,69,70,73,75,79,83,92,93,97,111,114,117,145,149,162],themselv:[2,3,59,92,93,97,105,111,130,134,135,136,148],theorem:[66,97,110],theoret:[37,72,154],theori:[2,41,58,68,97,137,160],therebi:[131,132],therefor:[2,32,63,67,75,107,154],therein:[2,134],thereof:32,thermal:0,thermo:[0,1],thermo_modifi:[2,61,68,153],thermo_press:[39,61,68,69],thermo_styl:[2,31,35,39,42,44,60,61,68,69,72,80,91,94,116,120],thermo_temp:[39,60,61,68,69],thermoberendsen:2,thermochemistri:113,thermodyanm:60,thermodynam:0,thermost:2,thermostat:0,thermostatequ:2,thesi:131,thess:98,theta0:[5,6,8,10,11,12,16,17,18,41,47,73,89],theta0max:41,theta10:97,theta1:[46,55,83,97],theta2:[46,55,83,97],theta3:[83,97],theta4:97,theta5:97,theta6:97,theta7:97,theta8:97,theta9:97,theta:[2,10,11,36,38,41,43,44,47,57,73,79,83,89,120,144,156],theta_0:142,theta_:[89,97],theta_c:120,theta_ijk:97,theta_ijl:83,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],thick:[40,57],thin:57,thing:[2,3,28,61,68,162],think:[2,3,62,84,88,91],third:[2,13,29,35,41,42,62,66,76,79,104,114,115,134,142,158],thirumalai:50,tho:112,thole:2,thompson:[0,39,41,42,148],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,41,42,44,45,46,47,48,49,50,51,52,53,54,57,61,63,68,69,75,77,78,82,83,84,85,87,88,89,90,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,142,143,145,146,148,149,154,155,156,157,158,159,160,161,162],though:[2,44,61,62,92,109,111,113,114,117,118,130,131,158],thought:[80,118,121],thread:[1,4],three:[1,2,28,29,32,35,36,37,40,41,43,44,50,60,61,62,63,68,69,74,77,79,86,87,89,93,94,97,111,112,114,117,118,121,134,135,136,137,142,144,145,147,148,154,155,156,157,158],threebodi:154,thresh:[19,57,59],threshhold:[19,57,59],threshold:[19,59,70],through:[2,3,44,61,65,67,68,71,74,79,80,81,94,110,112,113,115,118,122,137,141,146,147,149,153],throughout:[2,4,40,137],thru:[2,3,33,34,37,91],thrust:1,thu:[1,2,3,19,29,30,34,35,36,38,41,42,44,45,56,57,59,60,61,63,66,68,69,70,75,76,79,80,81,83,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,143,144,145,147,148,150,151,152,153,154,155,156,157,158,161],thumb:[44,103],ti2:43,ti3:43,ti4:43,tidi:162,tight:[97,147],tij:108,tildeslei:[13,32,108],tile:[2,19,44,59],tilt:[2,61,68,70,72,158],time:[0,1],time_integr:58,timer:1,timescal:[72,113],timespan:68,timestep:[1,2,3,19,35,42,57,59,60,61,62,63,66,67,68,69,70,73,74,75,77,78,79,80,82,91,92,97,109,113,120,131,132,149],timesteppnig:75,tin:[104,105],tini:[44,91,97],tio2:147,tio:147,tip3p:0,tip4:2,tip4p:0,tip:0,tirrel:80,titl:162,tji:108,tl1:43,tl3:43,tlbr_msw:144,tloop:[68,69],tm3:43,tmp:[2,19,34,57,59],tobia:68,togeth:[2,3,4,19,42,44,59,61,68,116],tol:[75,154],toler:[61,74,75,91,92,154],tolernac:74,too:[1,2,19,29,30,36,38,41,57,59,61,63,68,75,79,92,109],took:149,tool:[0,1,2,3,19,57,59,92],toolkit:2,top:[0,3,4,67,92,148,162],topolog:[2,32,56],torqu:[2,13,67,91,96,108,117,118,132],torsion:[2,46,56,94],torsion_flag:94,tosi:98,tot:147,total:[2,3,4,19,31,33,34,35,37,41,42,59,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,144,147,148],toukmaji:108,toward:[13,57,67,69,70,89,92],toxvaerd:127,tptask:4,trace:113,track:[67,79],track_displac:58,tractabl:74,trade:[2,105,122,126],tradit:[2,55],trail:[32,92,114,134,148],trajectori:[2,32,68,71,75,82,109],tran:[49,50],transfer:[1,2,4,58,79,97,137],transform:[2,32,117,139],transit:[2,4,92,106,130,136,137,157],translat:[2,63,68,71,113],transmit:2,transport:[58,79],trap:[2,35],treat:[2,42,79,81,91,96,107,113,114,117,120,135,136,137,145],treatment:107,tree:130,tri:[2,3,57,61,68,69,91],triangl:[2,57],triangul:2,triangular:[2,61],triclin:[0,1],triflag:2,trigger:[3,59,60,91],trigon:9,trilinear:67,tringl:57,tripl:[41,97],triplet:[112,142,144,154,155,156,157,158],trivial:3,trott:[41,148],troubl:3,truncat:[2,63,74,80,81,95,105,113,118,122,124,127,147],tscale:72,tsige:100,tstart:[66,68,109],tstat:[2,66],tstop:[66,68,109],tsuzuki:[30,158],ttm_mod:79,tucker:[41,148],tuckerman:[68,71],tune:[2,4],tunnel:71,turkand:38,turn:[2,28,41,43,56,57,60,61,68,91,92,94,107,120,134,153],tutein:94,tutori:[2,70],tweak:44,twice:[2,4,45,61,68],twist:[131,132],two:[1,2,3,4,19,28,29,32,36,40,41,43,44,55,57,59,60,61,66,67,68,69,70,71,72,78,79,81,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,141,143,144,145,147,148,149,153,154,155,156,157,158,160,161],two_temperatur:58,twobodi:[155,157,158],twojmax:[41,148],txt:[79,121,147,162],typcial:[19,59],type1:[40,43],type2:[40,43],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,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,57,58,67,75,81,83,84,85,86,87,88,89,90,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],typen:[40,43],typic:[1,2,3,4,13,19,21,22,29,32,44,55,57,58,59,60,61,62,68,73,75,91,92,101,103,105,116,117,120,121,122,126,131,132,134,145,157,162],tzou:79,u_chem:31,u_cond:[31,64],u_f:67,u_i:[64,65],u_ij:144,u_j:65,u_mech:[31,64],u_prom:97,uberuaga:92,ubiquit:[3,97],uchem:[115,141],uloop:[71,92],umbrella:2,umin:[10,11,24,25,47],unabl:[3,19,59],unaffect:[61,68],unalt:62,unambigu:158,unbias:113,unchang:[61,68],uncom:1,uncompress:57,uncorrel:66,uncoupl:71,under:[0,2,4,6,41,46,57,61,62,68,72,83,110,113,130,148],underflow:57,undergo:[2,32,66,68],undergon:60,underli:[2,29,57,68,79],underpredict:2,underscor:[60,61,68,69],understand:[1,2,137],understood:97,undesir:[61,68],undisturb:[131,132],undump:57,unfix:[2,35,58,73,77],unfix_flux:58,unfold:76,uniaxi:69,uniform:[4,19,58,59,67,117,145],uniformli:[67,79,140,141,144],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,46,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,76,78,79,80,81,83,84,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,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],uniti:112,unitless:[29,62,68,72,74,91,118,139,143,154,155,156,157,158],univers:[2,32,92,131,136,157],unknown:30,unless:[3,4,40,43,44,61,68,91,103],unlik:[33,44,93,97,111,114,134,135,136,148],unlike:[68,69,111,120,121,135,136],unlimit:144,unnecessari:4,unoccupi:79,unoptim:57,unpack:[0,3],unperturb:32,unphys:[2,68],unpublish:137,unrel:[45,162],unrestrain:73,unset:113,unshift:108,unsmooth:128,unsolv:101,unstabl:67,unstag:162,until:[2,19,57,59,61,62,65,77,97,118,140,141],unus:97,unwant:44,unwrap:[33,34,42,60],up_intern:57,updat:[0,2,4,62,66,67,68,72,79,82,97,108,137],upenn:3,upon:[2,74,97],upper:[19,37,59,61,67,68,72,80,91,118,147],uppercas:0,upsid:2,upsilon:117,upstream:162,urbana:131,urey_bradlei:5,url:162,usabl:111,usag:[2,70,130],use:[2,57,79,117,134,145,147,162],useful:137,user:[0,1,2,3],user_manifold:162,user_misc:[14,15,17,48,52,54,55,87],usernam:162,using:[0,1],usr:3,usual:[2,8,12,16,17,18,23,32,53,55,57,60,61,69,72,73,79,80,81,88,92,101,103,106,108,117,121,130,131,132,142,148,153,154],util:117,v11:2,v22:2,v33:2,v_0:79,v_2:137,v_3:137,v_4:137,v_avp:62,v_delta:32,v_dhug:72,v_drai:72,v_e_hbond:120,v_ij:144,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,57,62,80],v_occ:116,v_prefactor:149,v_press:42,v_pxxwall:62,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:57,v_wiggl:80,v_x:[44,80],v_xave:2,v_xmax:2,v_xx:44,v_y:44,v_yi:44,vacanc:[77,137],vacf:2,vacuum:[79,106,157,161],valanc:97,valenc:[97,113],valent:97,valid:[2,3,40,43,61,70,111,113,117,137,144],valon:134,value1:69,value2:69,van:[27,32,103,104,130,134,160],vanadium:137,vanilla:2,vanish:75,vapor:[19,59],vare:79,vari:[1,19,32,40,43,58,59,61,68,73,79,80,101,109,110,119,128,131,149],variabl:0,varianc:109,variant:[1,2,61,68,69,118,135,136,139,155,157],variat:[19,59],varieti:[1,2,57,134,158],variou:0,varshalovich:41,vashishta1990:158,vashishta2007:158,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,42,44,57,61,63,67,68,69,70,71,72,73,75,78,79,80,82,91,92,109,113,118,131,132],velocit:[109,110,113,118],velocity_bottom:67,velocity_top:67,verbos:147,veri:[1,2,19,32,57,59,61,62,68,71,75,92,113,118,131,132,140,141,148,149,162],verifi:162,verlet:[1,4,58,63,68,71,75,79],versa:[2,60],versu:[2,19,59,62,75,100,108,118,126],vertic:[4,19,57,59],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,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,59,60,61,62,67,68,69,71,73,75,79,80,81,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,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],vibrat:[2,70,72,89,113],vice:[2,60],video:57,view:[2,57,97,113,114,147],viewer:57,viewpoint:57,vij:109,vim:0,virial:[35,39,41,42,61,68,69,75,109,110,113],virtual:[2,154],viscoelast:118,viscos:0,viscosity:2,viscou:[2,66,67,91,92],vision:147,visual:0,viz:3,viz_tool:3,vizplotgui_tool:3,vmax:61,vmd:[2,3],voigt:[2,41],vol:[2,35,42,134,157],volpress:137,volum:[2,19,32,35,39,40,42,43,44,59,61,64,67,68,69,72,79,80,81,82,131,132,137,151,152,161],voronoi:42,voter:[135,136],voth:71,vri:119,vstream:2,vtk:[2,40],w_1:41,w_2:41,w_i:41,w_ik:144,waal:[32,103,104,130,160],wadlei:97,wagner:[58,67,134],wai:[1,2,3,29,32,34,35,36,38,41,42,44,57,60,61,62,66,67,68,69,71,79,80,84,85,86,88,89,91,92,93,94,105,106,109,111,112,114,117,120,122,134,135,136,142,144,145,147,148,149,153,154,155,157,158,162],wait:[1,4],walk:[66,68],wall:0,wallhi:80,wang:[134,144],want:[0,1,2,3,31,34,39,42,44,57,59,60,70,73,78,80,81,92,93,94,97,103,104,109,111,114,134,140,141,142,144,147,149,154,155,157,158,162],ward:97,warm:[4,113],warmup:4,warn:[0,21,22,30,57,68,69,74,131,132,134,140,141,162],warner:93,warning:134,warp:134,warren:[109,140,141],watanab:[77,78],watch:92,water:0,watkin:53,wave:113,wavefunct:113,wavelength:[40,43],wavepacket:113,weak:36,web:1,webb:58,weber:[112,136,144,154,158],weight:[2,32,41,43,45,56,66,67,74,107,109,110,115,134,140,141,148],well:[1,2,3,11,26,36,38,39,42,44,47,57,59,61,67,68,69,74,78,91,92,96,116,117,120,131,132,134,137,145,149,155,156,157,162],went:3,were:[2,3,4,19,29,38,39,44,57,59,94,113,118,121,162],westview:160,what:[0,1,2,3,44,57,59,60,61,65,68,71,73,75,80,91,92,134,140,141,149,153,162],whatev:[57,61,62,68,91,92,102,103,137],whelan:43,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,44,45,46,47,48,49,50,51,52,53,54,56,57,59,60,61,62,67,68,69,70,72,73,74,75,76,79,80,81,82,83,84,85,87,88,89,90,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,148,149,153,154,155,156,157,158,159,160,161,162],whenev:[0,55,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,42,43,46,47,56,57,59,60,61,62,63,64,65,66,67,68,69,70,71,72,74,75,77,78,79,80,81,83,84,85,86,87,88,89,90,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,141,142,143,144,145,147,148,150,151,152,153,154,155,156,157,158,160,161],wherea:[2,3,36,66,68,79],whether:[2,3,28,29,57,60,61,68,69,75,99,101,104,119,121,131,132,134,147],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,41,42,43,44,45,46,49,50,51,53,56,57,59,60,61,62,63,65,66,67,68,69,70,71,72,73,75,76,77,78,79,80,81,83,85,88,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,153,154,155,156,157,158,160,162],white:[66,79],who:[0,2,93,111],whole:74,whose:[2,32,35,57,62,65,68,70,73,74,75,81,92,113,115,124,140,141,154,155,157],why:[2,162],wicaksono1:70,wicaksono2:70,wicaksono:70,wide:[1,2,101,103,113],width:[57,116],wiggl:80,wigner:41,wih:2,wikipedia:2,wild:[32,120],wildcard:[57,153],wildli:68,window:[57,162],wire:73,wirnsberg:[2,63],wisdom:162,wise:[109,154],wish:[2,3,42,45,67,75,80,92,99,120,134,140,141],within:[1,2,3,4,13,19,29,30,36,38,39,41,44,57,59,60,65,70,74,75,79,80,81,91,92,96,98,99,105,110,111,112,113,115,116,121,122,134,137,141,143,145,146,154,155,156,157,158],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,45,46,47,48,49,50,51,52,53,54,57,61,62,65,66,68,69,74,75,82,83,84,85,87,88,89,90,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,145,146,149,154,155,156,157,158,159,160,161,162],won:132,wong:[58,97],word:[2,13,73,103],work:[1,2,3,4,28,40,43,57,60,62,67,68,73,75,78,104,107,109,131,132,134,137,147],worker:158,workflow:162,world:[41,92],worlei:109,worst:81,worth:72,would:[1,2,3,4,13,19,29,33,35,42,44,45,56,57,59,60,61,63,68,70,71,74,83,84,85,86,88,91,92,93,94,97,103,104,105,109,110,111,112,114,134,135,136,137,142,144,148,153,154,155,156,157,158,162],wrap:[1,2,3,44,67,80,81,92],wrapper:[0,2],wright:91,write_atom_weight:58,write_restart:[58,67],written:[2,41,57,58,59,60,61,62,63,66,67,70,72,73,75,76,77,79,80,81,82,111,133,137,160,162],wrong:[3,61,68,80,81],www:[0,2,3,93,111,131],x200:4,x86:137,x_ij:144,x_ijkl:83,x_kjli:83,x_ljik:83,xave:2,xavx:4,xcore:4,xeon:[1,4],xhi:[2,80],xhi_bound:2,xhost:4,xi_ij:144,xiaowang:[114,155,157],xiij:70,xlat:44,xlo:[2,3,80],xlo_bound:2,xmax:2,xmgrace:0,xmic:4,xmovi:[0,2],xmu:118,xpo:44,xrd:40,xtc:[2,57],xwall:62,xyz:[2,44,57,61,68,69],xzhou:114,yamada:4,yang:[137,144],yate:137,yb2:43,yb3:43,yellow:57,yet:[4,57,62,80,91,102,103,104,113,160,162],yhi:[2,80],yhi_bound:2,yield:[2,35,42,61,68,74,96,109,118],yip:77,ylat:44,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,41,42,44,45,46,47,48,49,50,51,52,53,54,56,57,59,60,61,62,63,66,68,69,71,73,75,77,78,79,80,81,82,83,84,85,87,88,89,90,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],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,44,45,46,47,48,49,50,51,52,53,54,57,58,60,61,68,69,75,79,80,81,82,83,84,85,87,88,89,90,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,142,143,144,145,146,149,153,154,155,156,157,158,159,160,161,162],yourself:[2,61,162],ypo:44,yukawa:103,z_i:[113,157,161],z_j:[157,161],z_meam:134,zannoni:117,zbl:[134,148],zblcut:157,zblcutinn:148,zblcutout:148,zblexpscal:157,zblz:148,zero:[2,3,10,11,19,24,25,29,32,34,36,37,38,39,40,41,42,43,44,45,47,54,56,57,59,61,62,63,66,67,68,69,71,72,74,75,78,79,80,87,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,145,146,147,153,158,161],zeta:[67,114],zfactor:57,zhang:118,zhi:[2,80],zhi_bound:2,zhou:[97,114,144,155,157],zhu:152,ziegler:[134,157,161],zimmerman2004:58,zimmerman2010:58,zimmerman:[29,58,97],zlim:147,zlo:[2,80],zlo_bound:2,zmax:67,zmin:67,zn2:43,zone:40,zoom:57,zr4:43,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 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 controller 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","fix nve 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","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_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,40,41,43,44,56,57,58,61,66,67,68,69,71,72,77,78,80,97,113,131,132,137,153],"long":[98,99,100,101,102,105,107,108,122,126,130,143,146],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:58,atom:[2,29,30,36,38,41,42],aug:0,balanc:[19,59],barostat:2,bcc:70,beck:95,between:2,bodi:[2,96],bond:60,bond_styl:[20,21,22,23,24,25,26,27,28],bop:97,born:[98,107],box:[2,61],buck:[99,100,107,133],build:3,calcul:2,centro:29,charmm:[2,5,45,101,130],chunk:[2,34],class2:[6,20,46,83,102],cna:30,code:2,coeffici:2,colloid:[80,103,160],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,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],comparison:1,compos:2,comput:[2,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],conduct:2,constant:2,control:62,core:2,cosin:[7,8,9,10,11,12,47],cossq:84,coul:[98,99,100,101,102,105,106,107,119,122,126,130,143,146],coupl:2,create_atom:44,cubic:124,cut:[25,99,102,105,108,113,116,122,123,130,138,143],cvff:85,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,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],diel:106,diffus:2,dihedral_styl:[45,46,47,48,49,50,51,52,53,54,55,56],dipol:[2,13,108],discuss:2,disp:2,distanc:86,document:0,dpd:[31,109,110],dreid:120,dreiding:2,drude:2,dsf:[105,122],dump:[2,57],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,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,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],exp6:115,exp:[11,47],expand:[22,125],extend:3,fcc:70,fdt:110,fene:[21,22],fep:32,field:2,file:2,finit:2,fix:[2,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],fix_modifi:[58,59,61,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81,82],flow:2,fluid:67,flux:35,forc:2,fourier:[14,15,48,87],from:[2,3],gauss:116,gaybern:117,gener:[1,2],github:162,gld:66,global:2,gpu:[95,98,99,101,102,103,105,108,109,111,116,117,119,122,123,124,125,138,139,145,146,149,154,155,156,157,159,160,161],gran:118,granular:2,gromac:119,gyrat:[33,34],harmon:[16,23,24,25,49,51,80,88,142],hbond:120,heat:35,helix:50,hertz:118,hexord:36,histori:118,hook:118,how:2,idealga:150,imag:57,implicit:101,improper_styl:[83,84,85,86,87,88,89,90],indice:0,induc:2,info:[0,58,59,61,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81,82],input:2,install:3,integr:2,intel:[4,5,16,21,23,45,49,53,68,82,85,88,99,101,117,122,154,155],interfac:[2,3],kspace_styl:2,lammps:[0,1,2,3,162],lennard:133,librari:[2,3],linear:[129,139],list:121,lj1043:80,lj126:80,lj93:80,lj96:123,local:2,lubric:131,lubricateu:132,luci:[140,141],mdf:133,meam:[134,135,136],measur:1,mgpt:137,mie:138,minim:[58,59,61,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81,82,91],mod:[79,156],model:2,morri:152,mors:[26,94,120,139],movi:57,mpi:3,msd:37,msm:[98,99,101,105,122],multi:[2,51,140,141],multipl:2,nb3b:142,neb:92,nemd:2,nharmon:52,non:2,nongauss:37,nonlinear:27,nph:68,nphug:69,npt:68,nve:82,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,45,46,47,48,49,50,51,52,53,54,68,69,82,83,84,85,87,88,89,90,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,139,142,143,145,146,149,154,155,156,157,158,159,160,161],opl:53,opt:[101,111,122,126,139],optim:1,option:2,orient:70,orientord:38,orthogon:2,other:2,output:[2,58,59,61,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81,82],overview:3,packag:[1,4],pair:2,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,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161],parallel:3,paramet:2,particl:2,per:2,perform:1,period:9,pimd:71,polariz:2,poli:[131,132],polymorph:144,potenti:2,pppm:2,pressur:39,process:2,properti:2,python:3,qbmsst:72,quadrat:54,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,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,148,149,150,151,152,153,154,155,156,157,158,159,160,161],relax:61,replica:2,resquar:145,restart:[2,58,59,61,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81,82],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,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,148,149,150,151,152,153,154,155,156,157,158,159,160,161],rigid:2,ring:89,run:[2,3,58,59,61,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81,82],scalar:2,script:[2,3],sdk:[18,146],serial:3,set:2,shake:75,share:3,shell:2,shift:[10,11,24,25,47],simpl:15,simul:2,size:2,smooth:[128,129,139],smtbq:147,sna:41,snad:41,snap:148,snapshot:2,snav:41,soft:[130,139,149],spc:2,sph:[150,151,152],spheric:[2,55],spline:[135,136],spring:[76,78],squar:12,srp:153,start:[58,59,61,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81,82],stop:[58,59,61,62,63,67,68,69,70,72,73,75,76,77,78,79,80,81,82],strategi:1,streitz:105,stress:42,style:[1,2],summari:2,swap:60,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,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],system:2,tabl:[0,2,65,155],taitwat:[151,152],temperatur:2,tersoff:[155,156,157],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:162,umbrella:90,user:4,using:[2,3],valu:2,variabl:2,variou:1,vashishta:158,vector:2,version:0,viscos:2,visual:2,wall:[2,80,81],water:2,wolf:[98,105],wrapper:3,write:2,xrd:43,yukawa:[159,160],zbl:[157,161]}})
\ No newline at end of file
+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_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_controller","fix_ehex","fix_eos_cv","fix_eos_table_rx","fix_gld","fix_lb_fluid","fix_nh","fix_nphug","fix_nve_manifold_rattle","fix_nvt_manifold_rattle","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","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_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":79,"00b":79,"02214e23":35,"0b1":3,"0e4":119,"0x98b5e0":57,"100k":1,"1024x1024":57,"10e":108,"10x":[92,93,98],"12th":76,"16e":76,"16x":1,"18986e":92,"1_prop":2,"1fluid":[116,142],"1st":[2,5,32,45,65,68,76,94,95,98,105,112,114,115,116,129,130,135,136,137,141,142,143,145,149,155,156,157,158,159],"2000k":57,"20x":98,"23899e":92,"2400k":57,"2697v2":4,"2697v4":4,"298k":107,"2k_ss":114,"2nd":[2,3,21,22,61,65,68,84,92,93,95,105,114,121,135,141,142,149,155,156,157,158,159],"2theta":43,"2x5":114,"36x":4,"3806504e":[2,35],"3n_k":66,"3nk":74,"3rd":[5,37,65,105,114,116,121,141,142,149,155,156,157,158,159],"3x3":35,"4857990943e":114,"49e":76,"4_94":3,"4th":[2,45,76,94,95,98,112,115,116,119,135,141,142,143,145,149,155,156,158,159],"50k":1,"512k":4,"524k":4,"5_1":98,"5th":[92,116],"66e":76,"6x6":2,"7120p":4,"8706e":148,"8706q":148,"8730m":148,"8730n":148,"8x1":2,"8x2":2,"948q":148,"9jan09":119,"9th":93,"break":[28,114],"case":[1,2,3,4,19,21,22,29,30,44,45,57,59,61,62,67,68,69,70,72,74,75,76,81,82,83,92,93,95,102,104,106,108,112,114,118,119,121,131,132,133,135,138,141,142,143,145,150,154,156,158,162,163],"catch":1,"char":[2,148],"class":[1,2,3,56,103,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,57],"final":[2,3,19,32,42,59,61,68,69,74,76,79,81,92,93,94,95,98,112,115,116,131,135,143,145,155,156,158,159,163],"float":[2,4,114],"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,41,45,46,47,48,49,50,51,52,53,54,55,58,61,65,66,67,68,69,73,75,76,77,79,80,81,82,84,85,86,88,89,90,91,92,94,95,96,98,99,100,101,102,103,104,105,106,107,109,110,111,112,113,114,115,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,150,151,152,153,155,156,157,158,159,160,161,162],"import":[1,2,3,37,44,49,61,68,81,131,138],"int":[2,3,81],"long":[1,2,4,18,32,39,42,45,50,57,58,63,68,70,77,81,92,93,96],"new":[0,2,3,19,32,44,57,59,60,61,63,68,69,73,77,92,93,112,135,138,141,142,163],"null":[2,35,36,38,39,42,44,76,78,94,95,105,112,115,119,135,136,137,143,145,149,155,156,157,158,159],"public":[0,115,141,142,148],"return":[2,3,4,19,44,68,119],"short":[1,2,4,68,95,98,99,100,101,102,105,106,108,114,123,127,131,134,135,140,144,147,148,163],"static":[2,19,57,59,68,119],"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,41,43,45,46,47,48,49,50,51,52,53,54,57,67,68,69,77,79,80,84,85,86,88,89,90,91,93,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,115,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,138,140,143,144,146,147,150,155,156,157,158,159,160,161,162,163],"true":[2,59,68,72,73,114,119,148,155],"try":[1,67,79,80,163],"var":[3,44],"void":[2,19,59],"while":[1,3,29,37,41,49,61,62,66,67,68,74,76,92,98,107,112,156,158,159],_j1m1m1:41,_j2m2m2:41,_manifold_rattl:163,_wirnsberg:63,a12:146,a2m:[2,35],a_0:[67,81,98],a_0_real:67,a_1:81,a_2:81,a_3:81,a_4:81,a_c:104,a_cc:104,a_f:158,a_ij:98,a_pi:98,a_sigma:98,a_ss:104,aat:46,aberdeen:[31,64],abil:[61,68,114],abl:[3,60,70],ablat:81,about:[0,1,2,3,4,19,40,44,57,58,59,60,61,62,63,67,69,70,71,72,75,77,78,79,80,81,82,83,92,93,97,102,106,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,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57,59,60,61,62,68,69,73,75,76,84,85,86,87,88,89,90,91,93,96,97,98,99,100,101,102,103,104,105,106,107,109,110,111,112,113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,134,135,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:[76,92,119,123],absorb:81,abstol:76,ac3:43,acceler:0,accelri:2,accept:[32,44,60,76,101,127,163],acceptor:121,access:[0,2,3,4,29,30,31,33,34,35,36,37,38,39,40,41,42,43,58,59,60,61,62,63,66,67,68,69,70,71,72,74,75,77,78,79,80,81,82,83,95,117,119,121,135,150],accident:163,accidenti:90,accomod:68,accomplish:4,accord:[2,31,57,65,67,68,70,74,79,80,81,82,83,114,119,126,129,145,148,150,151,152,153,154],accordingli:[3,132,133,154],account:[2,32,40,43,56,63,68,72,77,78,81,88,106,111,119,123,127,132,133,135,138,148,163],accumul:[2,31],accur:[1,2,19,59,76,77,83,98,114,118,119,146,156,158],accuraci:[1,2,19,59,63,68,77,95,114,141,142],achiev:[1,2,4,13,19,59,63,68,70,73,74],ackland1:112,ackland2:112,ackland:112,acknowledg:0,acolor:57,acquir:[2,61,68],across:[1,2,19,59,76,81,83,93],act:[2,67,79,80,81,83,92,109,118,119,121,146,154],acta:[40,43,94],actinid:138,action:[2,3,66,80],activ:[3,4,32,66,76,131],actual:[1,2,62,72,118,120,126,132,133,154],adapt:[2,32,62,76,131,132,150],adapti:72,adaptiv:95,add:[0,1,2,3,4,32,35,44,57,58,62,63,67,68,69,72,75,77,80,81,82,83,95,99,100,103,106,114,123,135,140,144,147,163],add_molecul:58,add_speci:58,add_to_nodeset:58,added:163,addforc:92,adding:[75,163],addit:[1,2,4,5,13,19,44,55,56,57,59,61,63,65,67,68,69,72,77,82,83,93,94,95,98,99,100,102,105,106,109,111,112,113,114,115,119,120,122,123,131,133,134,135,136,137,138,141,142,143,144,145,147,148,149,155,156,157,158,159,162,163],addition:[0,2,3,4,57,81,93,118,146,163],address:[3,57,163],addtorqu:92,adequ:93,adher:13,adhikari:67,adiabat:0,adiam:57,adjac:[44,63,93,156],adjiman:139,adjust:[2,4,19,40,43,57,59,61,62,68,69,72,74,76,82,92,93,95,132,133,148,158],admiss:69,adopt:75,advanc:[4,98],advantag:[1,2,3,19,59,62,113],advect:2,advis:[76,93],affect:[1,2,42,57,60,61,63,78,81,90,92,93,114,132,133],affin:[4,105],afshar:110,after:[2,3,6,19,46,55,57,58,59,60,61,62,67,68,74,76,77,79,80,82,84,92,94,95,98,105,112,113,114,115,116,131,132,133,135,136,137,138,141,142,143,145,148,149,155,156,157,158,159,163],afterword:19,ag1:43,ag2:43,again:[2,3,41,63,84,93,132,133],against:[3,93],aggreg:[2,78],aggress:63,agre:[92,95],ahd:121,aidan:0,aim:2,aka:57,al2o3:148,al2o3_001:40,al3:43,ala:[67,148],alat:[72,135],albe:[145,156,158],albeit:75,alchem:32,alcu:[94,98],alcu_eam:145,alderton:109,alejandr:68,algebra:138,algorithm:[0,1,2,19,58,59,60,63,67,73,77,81,92,111,114,133,138],alia:4,alias:1,align:[2,13,19,59],alkali:114,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,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,79,80,81,82,83,84,88,92,93,94,95,97,98,99,100,101,102,103,105,106,109,110,112,113,114,115,116,117,118,119,120,121,122,123,124,125,127,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,109,118],allentildeslei:32,alloc:[2,3],alloi:[94,98,106],allow:[1,2,3,4,19,36,38,43,44,56,57,58,59,60,61,62,66,67,68,72,74,75,76,77,78,79,80,81,82,83,92,93,95,98,99,100,101,102,106,112,114,119,120,121,123,127,132,133,138,145,146,148,154,161,163],almost:[4,74,81,154],alo:106,alon:[2,60],along:[2,13,29,32,40,43,44,57,60,63,67,74,77,78,81,83,92,93,106,109,119,123,127,135],alonso:[136,137],alpha:[2,26,62,67,74,92,94,96,99,106,110,111,112,113,115,116,121,122,123,135,140,157],alpha_c:131,alpha_i:149,alpha_lj:131,alphabet:56,alreadi:[44,59,74,93,110,120,125,133,154,162],also:[0,1,2,3,4,13,18,19,28,29,30,31,32,33,34,36,37,38,39,41,42,44,45,56,57,59,60,61,62,64,65,66,67,68,69,72,73,74,75,76,77,78,81,83,92,93,98,101,102,107,108,109,110,112,113,114,118,119,121,127,131,132,135,138,143,145,146,147,151,152,153,155,156,157,158,159,163],alter:[2,3,19,44,57,60,61,62,68,93],altern:[1,2,3,4,35,44,64,68,76,85,89,92,94,95,106,111,112,113,115,123,131,135,136,137,143,145,149,155,156,158,159],alternat:92,although:[4,13,68],aluminum:162,alwai:[0,2,3,4,28,82,83,84,92,100,103,112,126,138,141,142,148,150,156,158,162],amaz:3,amber2lmp:0,amber:0,ambient:57,amd:138,among:[4,42,67],amorph:[44,157],amount:[1,2,57,61,68,72,76,110],amplitud:90,amzallag:148,analag:2,analalog:2,analog:[2,38,41,62,119],analysi:[30,138,149],analyt:[1,40,43,77,98,125,138,145],analyz:[2,93,138],andersen:[70,71,77],anderson:110,andzelm:154,ang:[4,72],angl:[0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,28,32,36,38,39,40,41,42,43,44,46,47,48,50,52,54,55,56,57,60,68,75,77,84,85,86,88,89,90,91,92,95,98,106,113,121,123,127,131,136,137,143,159],angle1:75,angle2:75,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,47],angle_cutof:121,angle_cutoff:121,angle_hybrid:13,angle_styl:[0,2],angleangl:84,angleangletors:46,angletors:46,angmom:2,angstrom:[2,40,43,44,57,82,94,95,102,112,131,135,143,158,162],angular:[2,13,41,44,77,94,98,105,119,132,133,135,138,145,156,157],anharmon:[11,27,47],ani:[1,2,3,4,13,19,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,55,57,59,60,61,62,63,65,67,68,69,72,73,76,77,81,82,83,92,93,95,98,101,102,105,106,109,110,112,113,115,118,127,138,141,142,145,146,149,155,156,157,158,159,163],anihil:[131,140],anim:[3,57,93],animat:57,anion:[115,148],aniso:[61,68,69],anisotrop:[118,146],ann:139,annoi:163,annot:[155,156,157,158,159],anoth:[2,3,4,13,57,60,63,66,68,69,81,92,93,106,110,114,115,118,121,122,123,131,146,150,154,156,157,158,163],another:[1,2,32],ansi:4,anthoni:80,antisymmetri:114,antonelli:[79,80],any:[1,2,57,154],anymor:80,anyth:[3,44,155,156,158,163],anywher:[44,135,149],aparam:32,apart:[97,150],api:3,appear:[2,3,19,32,36,38,41,44,57,59,61,84,92,93,104,112,135,141,142,148,159],append:[1,3,4,19,29,32,34,35,36,37,38,39,40,41,42,43,44,57,59,60,61,62,63,66,67,68,69,70,71,73,74,75,77,80,82,98,114,154],appendix:[13,109,148],appl:[61,68,159],appli:[2,13,19,32,37,41,42,43,44,45,56,57,58,59,61,63,64,65,66,67,68,69,72,73,74,75,77,80,81,92,93,97,99,100,102,106,109,114,116,119,120,121,123,129,133,138,142,144,147,154,161],applic:[1,2,4,60,62,72,75,158],applicat:58,appling:61,apply:[32,61,77,78],approach:[2,4,55,58,66,73,80,81,98,106,108,111,118,138,146,154],appropri:[1,2,3,30,35,56,60,61,67,68,69,73,74,82,83,93,95,98,101,104,105,106,113,119,127,131,138,155,156,157,158,159],approxim:[2,40,43,67,73,77,92,108,114,116,118,132,133,138,142,146,148,161],april:3,apu:[132,133],aqua:57,ar_thermal:58,ar_ttm:58,arbitrari:[2,57,68,73,76,155],arbitrarili:[3,41,61,68,106],arch:1,architectur:138,archiv:2,archive:3,area:[2,19,35,39,59,67,119],arg:[3,19,32,44,59,63,70,71,75,80,82,93,99,100,102,103,108,109,111,114,120,123,127,131,132,133,134,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,41,42,44,45,46,47,48,49,50,51,52,53,54,59,61,65,68,69,76,77,81,84,85,86,88,89,90,91,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,110,111,112,113,115,116,117,118,119,120,121,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,155,156,157,158,159,160,161,162],aris:161,arithmet:[2,102,104,126],arl:[31,64],army:[31,64],around:[1,2,29,30,41,44,45,55,57,61,68,82,83,148],arrang:41,arrheniu:76,arriv:4,articl:[2,148],artifici:[74,151,152],arxiv:[41,70,71,149],ascend:19,ascii:[93,112,115,135],ash:[132,133],aside:[44,135],ask:[3,163],asoci:57,aspect:[2,118,146],aspher:0,asphere:[118,146],asq:[132,133],assign:[1,2,3,19,34,40,41,42,43,44,57,59,60,61,62,67,68,69,73,93,98,112,115,118,121,141,142,146,162],assignemnt:2,associ:[2,32,33,34,56,57,61,66,67,68,75,76,78,92,93,106,110,111,112,114,121,123,127,141,142,154],assum:[2,3,44,61,67,72,81,82,87,93,98,101,104,114,121,122,127,132,133,163],assume:93,assumpt:94,astar:135,astart:150,asterisk:[32,121,154],astop:[92,150],asu:112,asub:135,asymmetr:[63,98,112],asynchron:4,atc_fe_output:58,athomp:0,atm2pa:2,atom1:75,atom2:75,atom3:75,atom4:75,atom:[0,1],atom_element_map:58,atom_modifi:[3,93],atom_styl:[2,31,44,57,64,65,68,76,93,97,104,109,111,114,115,118,119,133,146,161],atom_weight:58,atomey:[2,3,57],atomfil:2,atomic:[0,148],atomic_charg:58,atomic_numb:145,atomist:[2,58,138],attach:[2,73],attatch:80,attempt:[2,19,59,60,93],attend:58,attrac:135,attract:[0,21,22,95,101,104,127,135,139,148,161],attribut:[2,3,32,57,60,61,62,68,69,98,114],atw:[132,133],atwater:157,atwt:135,atyp:[106,123,127,131],au1:43,au3:43,augment:[61,135],augt1:135,author:[112,113],auto:[2,3,35],autocorrel:35,autom:57,automat:[2,4,18,67,105,112,135,138,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,41,45,46,47,48,49,50,51,52,53,54,57,61,66,68,69,70,71,76,77,80,84,85,86,88,89,90,91,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,114,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,135,136,140,143,144,145,146,147,149,150,155,156,157,158,159,160,161,162],availabl:4,avalo:111,ave_chunk:2,aveforc:2,avendano:139,averag:[2,19,31,32,35,36,37,40,43,58,59,61,62,68,69,74,76,84,95,111,114,116,135,142],avi:57,avoid:[1,2,18,44,57,72,73,83,98,114,131,135,140],avx2:4,avx512:4,avx:4,awai:[2,57,60,72,82,106,123,127],awar:113,axel:163,axi:[2,19,29,36,40,43,44,57,59,81,88,91],axial:69,azimuth:57,b_k:149,ba2:43,babadi:146,back:[1,2,3,44,68,79,80,93,119],backbon:[60,77,90],background:[32,39,42,59,81,93,104,132,133,135],backtrack:92,backward:93,baczewski:66,bad:93,badli:[61,68],balanc:[1,2,4],ball:[41,132,133],bammann:58,band:[2,41,93,98,138,148],bandwidth:1,bandwith:57,bar:[32,57],barashev:112,barostat:[0,1],barostt:2,barr:105,barrier:[2,91,93,105,117],bartok2010:149,bartok2013:149,bartok:[41,149],base:[2,3,4,5,32,35,40,43,44,57,58,59,62,71,73,76,95,96,98,110,114,118,121,123,132,136,137,144,145,148,155,157,158,159,163],bashford:[2,5,45,102],basi:[2,41,44,82],basic:[2,19,42,57,58,59,62,68,72,83,94,138],basin:93,bask:[112,135,145],bath:74,bayli:[2,45],bb13:46,bcc:[29,30],bcolor:57,bdiam:57,be2:43,bead:[21,22,60,73,154],bear:[2,66],becaus:[0,1,2,4,19,36,38,41,44,57,59,60,61,62,66,68,70,74,81,83,86,92,93,102,106,108,110,114,115,118,119,120,121,122,131,132,133,135,141,142,146,154,163],becker:[94,112],becom:[1,2,4,19,28,44,57,59,60,63,67,68,82,83,93,95,104,106,112,114,118,123,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,45,46,47,48,49,50,51,52,53,54,57,59,60,61,62,67,68,69,74,77,81,82,84,85,86,88,89,90,91,92,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,114,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,136,137,138,140,143,144,146,147,150,154,155,156,157,158,159,160,161,162],befor:[1,2,13,19,33,34,37,44,59,61,67,68,74,82,92,93,115,116,119,131,135,138,142,163],begin:[58,59,62,65,76,93,112,116,138,141,142,145,148,150,154,162],begun:76,behav:[11,47,92],behavior:[57,60,61,62,66,68,74,81,98,114,135,162],behaviour:2,behind:74,believ:3,bellott:[2,5,45,102],bellow:88,below:[1,2,3,4,19,28,35,39,40,41,42,43,44,45,56,57,58,59,60,61,62,65,68,69,72,74,75,76,77,79,80,81,82,92,93,94,95,98,99,102,103,104,106,109,112,114,115,116,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,134,135,139,141,142,146,147,149,150,154,159,160,161,162,163],bench:[1,2,3],benchmark:[1,3,4,19,59],benedict:138,benefit:[1,4,66],bennet:32,berardi:[118,146],beraun:81,berendsen:[2,68,69,77],bern:[73,105,118,148],bernendsen:2,beryllium:114,best:[1,2,4,62,68,75,98,106,123,127],beta:[2,74,94,96,112,113,115,135,156,157,158],beta_:98,beta_k:149,beta_pi:98,beta_sigma:98,beta_t:157,better:[2,4,11,41,47,59,67,68,93,156,163],betwe:97,between:1,beutler:131,beyond:[2,32,68,117,129],bflag1:57,bflag2:57,bgq:138,bi3:43,bi5:43,bia:[2,39,42,68,71],bias:2,biersack:[135,158,162],big:[74,104,163],bin:[2,3,34,74],binari:[2,4,56,57,58,59,60,61,62,63,66,67,68,69,70,71,72,74,75,77,78,79,80,81,82,83,94,95,96,97,98,99,100,101,102,103,104,105,106,109,110,112,113,114,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],binary2txt:0,bind:[98,148],binsiz:4,biolog:2,biologi:50,biomolecul:102,biophi:[70,71],bios:4,bisect:[19,59],bisector:[2,106,123,127],bispectrum:[41,149],bit:[3,163],bitrat:57,bkgd_dyn:135,bks:74,blank:[57,65,76,93,98,113,116,135,141,142,143,149,155,156,157,158,159],blast:81,blend:135,block:[2,35,41,44,83,98,114,145,149,163],blow:[82,83,150],blue:[57,60],bluegen:138,board:109,bodi:0,body:97,bodyforc:67,bodyforcei:67,bodyforcex:67,bodyforcez:67,bogu:61,bohr:[112,114,138,158],boltzmann:[2,32,35,39,60,65,67,69,110],bond:[0,1,2,4,6,13,18,20,21,22,23,24,25,26,27,28,32,35,36,38,39,41,42,44,45,46,55,56,57],bond_coeff:[2,20,21,22,23,24,25,26,27,28],bond_harmon:[24,25],bond_harmonic_shift:25,bond_interact:58,bond_styl:[0,2],bondangl:6,bondbond13:46,bondbond:6,bonet:111,book:[161,163],bookmark:0,boost:1,border:[4,81],boresch:32,boreschkarplu:32,born:[2,32],boron:114,botero:114,both:[1,2,3,4,11,28,32,44,47,56,57,60,61,63,67,68,74,77,79,80,81,82,83,84,92,93,95,98,99,100,101,102,103,104,109,110,112,113,114,118,119,121,123,125,127,128,129,131,132,133,138,139,140,144,146,147,155,156,157,158,159],bottleneck:1,bottom:67,bound:[2,10,11,19,47,59,68,82,83,92,114],boundari:[2,33,34,35,37,39,40,42,43,44,57,58,61,67,68,72,74,78,81,82,83,120,132,133,138],boundary_dynam:58,boundary_faceset:58,boundary_integr:58,bounds:[2,19,59],bount:3,box:[0,1],boxcolor:57,boxxlo:3,bptype:154,br1:43,bracket:[2,19,59,62],bragg:[40,43],branch:[3,163],branicio2009:159,branicio:[30,159],breakdown:[1,95],brennan:[31,64,111,141,142,154],brenner:95,brick:[19,59],brief:[1,2,68,95,98],briefli:[2,73,105,148,163],brilliantov:119,broadwel:4,broken:[28,29,68,98],brook:2,brown:[4,40,42],brownian:[2,37,70,132,133],brows:0,browser:57,bryantsev:121,btype:[106,123,127,131,154],buc:100,buck:[2,4,32,99],buckingham:[99,100,101,108,134],buckplusattr:148,buffer:57,bufi:57,bug:0,bui:57,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,43,45,46,47,48,49,50,51,52,53,54,55,56,60,63,64,65,66,67,68,69,70,71,72,73,74,76,77,79,80,81,84,85,86,87,88,89,90,91,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,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],bulatov:[136,137],bulk:[2,29,67,72,107,135,138,148],bundl:[57,163],button:163,bypass:2,c11:135,c_0:[81,95,152,153],c_1:[40,43,66],c_2:[40,43],c_cluster:2,c_cstherm:2,c_doubl:3,c_e:81,c_flux:35,c_gauss:117,c_hb:121,c_i:65,c_id:[2,32,62],c_ij:2,c_ijkl:2,c_k:66,c_mychunk:[2,34],c_n_k:66,c_p:42,c_peratom:42,c_pi:98,c_prop:2,c_sigma:98,c_size:2,c_thermo_temp:62,ca2:43,cach:4,cacul:77,calcforc:67,calclat:35,calcluat:[37,39,42,106],calcualt:35,calcul:[0,1],caldwel:[2,45],calhoun:73,call:[1,2,3,4,73,95,104,161,163],callabl:3,callback:3,caltech:[2,114],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,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,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,57,59,60,61,66,68,74,81,82,83,92,93,100,101,103,112,118,120,123,127,129,131,144,146,147,154],canon:[68,71,73,80,138],cao1:73,cao2:73,cao:73,capabl:[3,4,95,103],capac:[64,81,151],capolungo:[40,43],captur:[2,95,101,114,119,127,135],carbid:106,carbon:[57,90,95,105,135],card:[4,32,121],care:[2,44,55,67,68,97],carefulli:[3,28],carlo:[2,60],caro:112,carri:[4,81,119],carrillo:4,cartesian:[2,94],cascad:81,cat:[4,57],cate:67,categori:[0,95],cation:[115,148],caus:[1,2,4,44,61,68,72,76,77,82,83,92,93,121,123,129,132,133],caution:1,cautious:95,caveat:95,cbecker:[94,112],cc1:[2,34],ccc:[113,155,156,158,159],ccflag:4,ccflags:4,ccm6:112,ccsi:[113,155,156,158,159],ccu:98,cd2:43,cdeam:112,cdll:3,cdof:2,cdte:98,cdte_bop:98,cdtese:98,cdzn:98,cdznte:98,ce3:43,ce4:43,cell:[2,40,43,44,61,68,69,74,81,114,138],cella:2,cellalpha:2,cellb:2,cellbeta:2,cellc:2,cellgamma:2,center:[2,9,33,34,37,40,44,57,61,66,68,78,80,82,83,84,97,113,114,118,119,132,133,135,136,137,155,156,157,158,159],centr:63,central:[29,36,38,41,72,77,78,87,138,143,159],centro:2,centroid:73,centrosymmetri:29,certain:[1,2,57,60,62],cfg:[2,57],cg_type:147,ch2:77,ch2lmp:[0,2],ch3:77,chain:[0,2,13,28,60,68,69,71,73,77,80,90,109,110,154],challeng:2,champaign:132,chan:138,chandler:[94,112],chandrasekhar:[2,123],chang:[1,2,3,4,19,22,32,44,57,58,59,60,61,62,67,68,69,70,72,74,75,76,77,79,80,81,83,92,93,110,114,119,132,133,135,138,148,154,163],change_box:2,chapter:73,charact:[2,19,57,59,65,76,114,116,122,141,142,145,148],character:[2,29,38,41,149],characterist:79,charg:[1,2,3,32,40,43,44,99,100,105,106,108,109,112,114,115,123,127,131,144,148,158,159,161,162],charl:62,charmm:0,cheaper:[118,146],check:[2,3,19,35,59,75,77,80,92,93,122],checkout:163,chem:[2,5,6,9,20,21,22,32,38,39,42,45,46,53,63,66,67,68,73,74,79,80,82,84,90,91,93,95,99,102,103,105,106,107,109,110,111,114,117,118,120,121,123,127,128,131,135,139,141,142,144,148,154],chemic:[31,40,43,58,116,142],chemistri:[74,95,98,114],chen:81,cheng:105,chi:[72,115,118],chiral:90,chmod:3,cho:135,choic:[2,4,19,28,29,32,42,55,59,60,67,68,73,93,131],choos:[1,2,13,28,32,57,60,61,62,67,68,69],chose:[156,158],chosen:[2,41,44,50,57,61,62,66,67,68,69,73,111,114,119,122,125,147,156],chunk:0,chunkid:34,ciccotti:77,cieplak:[2,45],circular:2,circumv:[36,38],citat:[0,67],cite:148,cl1:43,clarendon:[13,109],clarifi:[156,158],clark:144,classic:[0,2,4,73,74,81,91,114],classifi:159,clean:2,clear:[2,3,62],clebsch:41,click:[3,44,56,57,93,163],climb:93,clockwis:45,clone:163,close:[2,3,19,42,60,61,67,68,70,77,83,93,95,98,106,107,135,141,142,158,163],closer:[19,59,61,79,93],closest:[72,118,146,154],cloud:148,cluster:[2,4,42,63,77],cmax:135,cmd:[3,73],cmdarg:3,cmin:135,cmm:[18,147],cna:29,co2:[43,76,77,116],coars:[13,18,28,50,65,76,116,120,142,147],coarsest:41,code:[0,1],coeff:[6,45,46,55,84,122,150],coeffici:0,coefficienct:110,coefficient0:112,coefficient1:112,coeffieci:[2,96],coeffincientn:112,coexist:114,cohes:[2,115,135],coincid:[83,102,132,133],cold:2,coleman:[40,43],collect:[2,34,44,104],colliex:43,collis:[67,119,162],colloid:2,color:[19,57,59,66,74],column:[2,29,34,36,38,41,42,43,74,81,95,117,121],colvar:0,com:[2,37,63,97,163],comand:60,combiant:107,combin:[2,3,18,32,55,57,58,63,68,70,71,73,83,84,104,106,107,111,114,115,116,130,131,149,155,156,158,159,161],come:[0,2,13,61,62,68,79,80,155,156,158,159,163],comit:163,comm:[0,3,30,93,110],comm_modifi:[2,98,104,110,114,119],comm_styl:[19,59],comm_world:3,command:[0,1],comment:[3,45,65,76,81,93,94,112,113,115,116,122,135,141,142,143,148,149,155,156,157,158,159,163],commit:163,commmand:2,common:[0,1,2,3,4,30,61,73,83,84,119,121,155,156,158],commonli:[2,9,37,38,57,91,120,125,149,156,158],commun:[1,2,3,4,19,57,59,61,67,68,81,111],comp:[70,71,77,93,114,146,153,157],compar:[1,2,4,40,43,56,92,93,135,148],comparison:0,compass:[6,20,46,56,84,103],compat:[3,19,49,59,62,63,82,138],compens:[2,114],compil:[4,57,138],complain:3,complement:135,complementari:[106,123],complet:[2,3,19,59,73,93,115],complex:[2,3,9,36,38,41,44,67,70,83,93,114,138],complic:2,compon:[2,29,30,33,34,35,36,37,38,39,41,42,57,60,61,62,63,67,68,69,73,77,83,92,93,110,114,119,132,133,148,149],componenet:2,composit:[2,67,112],compound:[105,114,115,159],compress:[2,57,69,74],compris:[83,116,146],compton:[40,43],comput:[0,1],computation:[2,81,98],compute_modifi:[60,61,68,69],compute_sa:40,compute_xrd:43,concav:83,concentr:[65,76,112,116,142],concept:2,conceptu:[2,61,93,106,135],concern:[2,30,32,66],concis:3,concurr:4,conden:[81,156,158],condens:[2,81,95,108,112,123,159],condit:[2,39,40,42,43,57,58,67,69,72,74,77,78,81,111,114,120],conducit:2,conduct:0,confer:[4,138],configur:[1,2,4,57,61,73,92,93,95,98,113,135,138,155,156,158,159,163],conflict:163,conform:[2,60,61,75,90,93,114],confus:159,conjuct:110,conjug:114,conjunct:[2,32,44,67,93,99,100,106,110,114,121,123,144,147],connect:[2,32,60,77,93,107,119,154,158],conner:95,connor:95,consecut:[3,44,106,123,127],consequ:[1,2,81,122],conserv:[13,60,66,67,68,70,76,77,93,109,110,111,119,129,148],consid:[2,29,32,59,60,81,114,146,148,154],consider:2,consist:[2,3,39,44,50,62,66,68,69,74,75,76,93,95,98,104,106,114,118,132,133,135,138,141,142,146,148],consistent_fe_initi:58,constant:0,constantli:63,constitu:[2,82,83,104,146],constrain:[2,63,66,70,71,77,78,92,114],constraint:[19,39,42,59,63,70,77,78,82,92,133],construct:[2,28,29,30,36,38,40,41,43,61,68,75,76,83,109,138,154,155],constructor:3,consult:4,consum:1,contact:[0,107,113,115,118,119,146],contain:[0,1,2,3,19,32,35,40,41,43,44,45,56,57,58,59,62,65,67,72,74,76,81,83,93,94,95,98,105,106,109,112,113,114,116,135,138,141,142,143,145,149,155,156,157,158,159,163],context:[2,4,161],contibut:29,contin:4,continu:[0,2,19,59,60,61,62,63,66,68,69,74,79,80,81,83,98,110,125,128,146,157],continuum:[2,58,81],contour_integr:58,contract:[61,68],contrain:77,contrast:[1,2,161],contrib:81,contribut:[2,29,32,33,34,35,39,41,42,61,67,77,92,93,110,112,114,132,133,138,148,163],control:[2,3,4,11,13,19,32,35,41,47,57,58,59,61],control_typ:58,convect:35,conveni:[2,13,149,163],convent:[13,49,54,56,75,112,114],converg:[2,19,57,59,60,61,69,70,71,74,75,77,92,93,105,106,123,148],convers:[41,57,106,107,108,114,123,127,131,144],convert:[2,5,6,8,12,16,17,18,35,44,46,57,84,85,89,90,93,94,112,138,156,158,162],convex:83,cool:63,coord:[2,3,36,38,72,82,93],coordb:148,coordbb:148,coordiat:92,coordin:[1,2,3,19,32,33,34,41,44,57,59,60,61,63,68,72,77,78,80,81,92,93,94,95,97,113,148],coords:148,copi:[0,3,57,81,93,163],copper:162,coprocessor:[1,4],core:[0,1],coreshel:2,coreshell:[2,100,106,108],cornel:[2,45],corner:[2,57,83,163],corpor:4,corr:105,correct:[2,3,32,45,57,63,68,74,82,83,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,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,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],correction_max_iter:58,correctli:[3,68,77,83,93,108,133,138,163],correl:[2,35,36,41,66,73],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,43,45,46,47,48,49,50,51,52,53,54,55,57,61,62,63,65,67,68,69,72,73,76,77,82,83,84,85,86,88,89,90,91,93,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,135,136,138,140,142,143,144,145,146,147,148,149,150,155,156,157,158,159,160,161,162],correspondingli:[132,133],cosin:2,cosineshift:11,cost:[1,2,3,19,40,42,43,57,59,68,76,81,106,123,127,138,155],costheta0:[155,156,158,159],costheta:145,costli:[3,4],coul:[2,4,18,21,22,32,45,92],could:[2,3,19,32,34,35,39,57,59,62,74,81,82,83,92,95,117,121],coulomb:[2,42,92,99,100,101,102,103,105,106,107,108,109,114,119,120,123,127,131,134,144,147,148,158,159,161],coulommb:2,count:[1,2,3,19,35,45,59,61,68,77,83,92,93,117,121],counteract:62,counterbal:63,counterbalanc:13,counterclockwis:45,coupl:0,couple:[2,3],cours:[4,66,75,82,132,150],cov:148,coval:[2,13,114,135,148],cover:[2,58,67,114],cpp:[1,2,3,32,77],cpu:[1,4],cpuinfo:4,cr2:43,cr3:43,creat:[0,1,2,3,19,35,39,40,44,57,58,59,60,61,65,68,69,72,73,75,81,93,95,98,105,112,113,131,140,141,142,145,148,155,156,157,158,159,163],create_atom:[2,19,35],create_box:[2,19,35,44,61,68,154],create_elementset:58,create_faceset:58,create_nodeset:58,createatom:0,creation:44,criteria:[57,60,92],criterion:[19,44,59,60,92,93,105,114,119,148],critic:[2,24,25,81,92],cross:[4,33,57,93,102,110,112,120,121,123,125,127,145,147,156,158,162],crossov:1,crozier:0,crucial:74,crystal:[2,4,29,30,38,72,80],crystallin:[2,157],crystallogr:[40,43],crystallographi:[40,43],cs1:43,cs_chunk:2,csanyi:[41,149],cscl:135,csequ:2,csh:[3,4],cshrc:3,csic:[113,155,156,158,159],csinfo:2,csisi:[113,155,156,158,159],cst:112,cstherm:2,csvr:2,ctcm:[94,112],ctype:3,cu1:43,cu2:43,cu3au:135,cube:[2,83],cubes:[19,59],cubic:[38,67,72,112],cuda:1,cuh:98,cummul:[2,60,121],cumul:[2,68,69,93],currenlti:62,current:[0,1,2,3,4,19,30,32,42,57,58,59,60,61,62,63,68,70,71,75,76,77,78,81,82,92,93,98,105,109,112,114,115,119,122,132,133,135,136,137,145,150,156,158,163],curv:[2,44,70,71],curvatur:[118,146,162],custom:[0,2,3,33,34,35,42,57,60,61,68,69,74,92,95,117,121],cut:[1,2,4,19],cuthi:72,cutinn:[132,133],cutlo:72,cutmax:145,cutoff1:[103,109,123,127,131,134,144,147],cutoff2:[99,100,101,103,108,109,123,127,131,134,144,147],cutoff:[2,4,21,22,28,29,30,32,36,38,41,60,65,72,74,82,83,92,94,95,96,97,98,99,100,101,102,103,104,106,107,108,109,110,111,112,113,114,115,116,117,118,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:113,cutoffc:113,cuu3:112,cval:43,cvar:62,cvff:4,cwiggl:82,cyan:57,cycl:[68,69],cyclic:45,cylind:[57,71,83],cylindr:2,cyrot:98,d3q15:67,d3q19:67,d_e:81,daan:80,damp:[2,68,69,71,74,92,93,99,100,102,106,109,114,119,123,131,144,147],dampflag:119,danger:110,darden:109,darken:57,dash:119,dat:[2,35,58],data2xmovi:0,data:1,databas:0,date:[0,2],datum:2,davenport:134,davi:82,david:[156,158],daw:[112,145],dcd:[2,57,73],deactiv:131,debug:[2,3,40,43,44,73],decai:[36,106,162],decid:[2,4,163],decod:57,decompos:[32,149],decomposit:[58,73],decoupl:2,decreas:[4,60,63],dedic:4,defect:[2,29,138],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,72,73,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,95,96,97,99,100,101,102,103,104,106,107,109,110,111,113,114,116,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,134,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,41,62,64,69,82,98,104,111,114,145,149],deform:[2,42,61,68,132,133],deg2theta:43,degre:[2,5,6,8,12,13,16,17,18,36,38,39,43,44,45,46,48,49,54,55,57,60,68,69,73,75,77,80,84,85,89,90,91,92,109,112,121],delai:2,delet:[28,60,68,154,163],delete_atom:44,delete_bond:[20,21,22,23,24,25,26,27,28],delete_el:58,delimit:76,dellago:[2,63],deloc:[114,148],delr:135,delta_1:98,delta_3:98,delta_7:98,delta_ij:[135,145],delta_pi:98,delta_r:145,delta_sigma:98,deltah_f:65,demo:3,demonstr:[74,135],dendrim:121,denniston:67,denot:[40,63,106,120],dens:[60,76,114],densiti:[2,19,41,44,58,59,67,81,82,94,95,98,112,135,136,137,141,142,145,146,148,151,152,153],depart:0,departur:74,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,41,44,45,46,47,48,49,50,51,52,53,54,56,57,59,61,65,67,68,69,72,76,77,79,81,82,83,84,85,86,88,89,90,91,92,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,112,113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,135,136,138,139,140,141,142,143,144,145,146,147,148,149,150,155,156,157,158,159,160,161,162],dependend:2,deposit:[68,77],depth:[26,57,81,116,118,146],der:[32,104,105,131,161],deriv:[2,32,41,61,62,63,68,69,72,79,80,81,82,83,95,98,104,109,114,115,120,125,129,130,135,138,161],derjagin:161,derlet:72,descib:57,describ:[0,1,2,3,4,19,29,30,40,41,42,43,44,50,53,59,60,61,62,65,66,67,68,69,72,73,74,76,79,80,82,92,93,95,97,99,100,102,103,104,105,106,109,112,114,115,116,118,119,120,123,124,125,126,127,128,129,130,131,132,133,134,135,138,139,141,142,145,146,147,148,149,150,154,155,156,157,158,159,160,161,162,163],descript:[2,3],descriptor:41,design:[0,2,3,40,43,58,60,68,72,81,96,97,102,106,108,114,131,132,133,136,137,145],desir:[2,3,4,35,39,42,44,61,62,66,68,77,92,93,110,112,121,132,133,155,156,158],desktop:[2,57],destabil:98,destre:90,destroi:3,detail:[1,2,3,4,19,34,35,39,41,42,44,56,57,58,59,60,61,62,63,66,67,68,69,74,77,80,81,92,94,95,97,98,101,102,103,104,105,106,109,110,114,115,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,134,135,139,141,142,146,148,149,150,160,161,163],detect:[36,93,105,121,122],determin:[1,2,4,26,32,39,40,42,43,44,57,59,61,65,68,72,73,74,75,76,82,83,95,101,105,109,112,116,117,119,127,135,138,142,146,148,154,161],devan:147,devanathan:158,develop:[0,2,3,4,62,69,74,95,98,114,137,138,148,159],deviat:[69,72,117],devic:1,devin:105,devis:137,dfactor:57,dft:138,dhug:74,dhugoniot:74,dia:135,diag:76,diagnost:[4,60,76],diagon:[2,41,42,61,68],diagonalstyl:149,diagram:[19,40,43,56,59,73],diallo:121,diam:57,diamet:[2,44,57,104,118,119,125,146,161],diamond:[114,135],dick:2,dicken:62,did:[92,110,112,119,156,158],dielectr:[102,106,107,108,123,127,131,144],diff:[2,4],differ:[1,2,3,4,19,28,29,32,36,41,44,56,57,59,60,61,62,63,66,67,68,72,73,74,77,78,79,80,81,82,83,84,93,94,95,98,101,102,104,105,110,111,112,114,116,118,119,120,123,124,126,127,134,135,136,137,139,140,141,142,143,145,146,147,148,149,150,155,156,158,159,161],differenti:[1,2,13,76,106,145,157],difficult:[61,62,73,121],difficulti:[36,38,77],diffract:[40,43],diffraction:[40,43],diffus:0,diffuse:2,digit:138,dihedr:[0,4,28,36,38,39,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,60,75,85,86,87,89,92,95,98,102],dihedral_coeff:[45,46,47,48,49,50,51,52,53,54,55,56],dihedral_cosine_shift_exp:11,dihedral_styl:[0,2,42],dihydrid:114,dij:77,dilat:[61,68,69],dim:[44,135],dimens:[1,2,19,35,42,44,57,59,61,67,68,69,74,82,93],dimension:[36,39,40,41,43,81,93,145],dimensionless:[37,41,62,81,149,161],dimer:[2,135],dimstr:[19,59],dintel_offload_noaffinity:4,dipol:0,dipolar:13,dipole:109,dir:[1,3,72,74,145],dirac:41,direc:145,direct:[2,4,13,29,38,40,41,43,44,45,57,67,69,72,74,79,80,81,82,83,92,93,110,111,119,133],directli:[2,3,32,41,44,57,62,67,76,83,94,95,99,100,101,106,109,112,114,123,127,144,147,154],directori:[0,1,2,3,4,62,79,80,93,94,95,98,105,106,112,113,115,131,135,136,137,138,143,145,148,149,155,156,157,158,159],disabl:[4,81,122],disadvantag:[2,59],disallow:68,discard:[19,59,83],discontinu:[92,129],discourag:135,discret:[2,57,62,67,71],discuss:[0,1],disk:[2,36],disloc:[29,138],disord:[29,138],disp:0,dispar:146,disperion:[109,127],dispers:[2,101,109,127,132,159],displac:[2,37,61,68,72,119],displai:[3,56,57],disregard:138,dissip:[2,31,64,66,79,80,110,111,119,132,133],dist:[2,35,73,75,154],distanc:[2,5,6,20,21,22,23,24,25,26,27,28,30,33,34,36,37,38,40,41,44,46,57,60,61,63,67,68,69,72,74,75,77,78,80,81,82,83,84],distinct:[2,146],distinguish:[2,41,114],distort:94,distrbut:94,distribut:[0,2,3,19,32,41,56,59,66,67,68,94,98,106,112,113,115,135,136,137,143,145,146,155,156,157,158,159],distro:145,ditto:162,div:4,diverg:[80,95],divid:[2,4,19,35,39,42,56,59,72,92,93,115,148,159],divis:[2,55,67,98,131],dl_poly:2,dlammps_ffmpeg:57,dlammps_gzip:57,dlammps_jpeg:57,dlammps_memalign:4,dlammps_png:57,dlm:68,dlmp_intel_offload:4,dlopen:2,dlvo:[104,161],dm_lb:67,doc:[0,1,2,3,32,34,37,39,42,44,56,57,62,68,83,92,93,94,95,97,105,106,112,113,115,121,135,136,137,143,145,149,155,156,158,159,163],docuement:146,doe:[0,1,2,3,19,28,29,32,35,40,43,44,45,56,57,58,59,60,61,62,63,65,66,67,68,71,81,82,83,85,86,87,89,90,93,94,95,96,97,98,101,102,103,104,105,106,107,109,110,112,113,114,116,117,118,119,120,122,125,126,128,129,130,132,133,135,136,137,138,141,142,145,146,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],doesn:[44,95,105,113,155,156,157,158,159],dof:39,doi:[2,72],domain:[2,19,40,43,57,59,61,67,68,73,81,82,93],domin:[1,114],don:[0,4,83,135,148,163],done:[1,2,19,44,55,57,58,59,60,61,62,65,68,73,77,79,80,92,93,95,101,112,127,133,134,135,141,142,154,163],donor:121,dot:42,doti:[98,145],doubl:[1,2,3,4,32,45,61,83,98,115,120,138],dover:58,down:[2,3,61,114,148],download:3,downsid:2,dpd:2,dpdtheta:[31,111],dpdtheta_i:[64,65],dr_ewald:40,drag:[2,35,68,69,78],dragforc:67,drai:[57,74],drain:92,dramat:[60,61,68,148],drautz:98,draw:57,drawn:[57,66],drayleigh:74,dreid:2,dreiding:0,drfourth:37,drho:[94,112,141,142],drift:[2,37,63,66],drive:[3,61,68,72,93],driven:[2,50],driver:2,drop:110,drsquar:37,drude:0,dt_collis:67,dt_lb:67,dt_md:67,dtqm:74,dudarev:43,due:[1,2,4,28,29,33,34,37,40,41,42,43,44,57,60,61,66,67,68,69,72,75,79,80,81,82,83,92,93,107,110,111,112,117,118,132,133,145,146,147,154,156,158,161,162],duffi:81,dullweb:68,dummi:[13,157],dump:[0,1],dump_modifi:[2,57],dunbrack:[2,5,45,102],duplic:[19,59,72],durat:[56,81,119],dure:[2,4,19,32,45,58,59,60,61,62,63,65,66,67,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,92,93,110,131,138,140,141,142],dvlo:161,dvx:2,dx_lb:67,dy3:43,dyanam:2,dynam:[0,2,3,4,19,31,37,44,57,58,59,60,62,64,66,68,69,70,73,74,75,79,80,81,92,93,110,111,114,132,133,153],dynamo:[94,112,135],dyre:128,e28637:13,e_1:98,e_2:98,e_a:76,e_b:115,e_ee:114,e_hbond:121,e_i:[2,98,115],e_j:[2,98],e_k:98,e_ke:114,e_kl:2,e_lj:[95,109],e_n:[62,98],e_ne:114,e_nn:114,e_pr:114,e_rebo:95,e_torsion:95,e_tot:138,e_vol:138,eaa:84,eaat:46,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,72,73,76,77,78,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,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,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,59],eam:[0,94,106],earli:[19,59],earlier:[93,119,135],earth:114,easi:[2,3,32,42,82],easier:[4,57],easili:[3,57,93],eat:46,eaxmpl:2,eba:6,ebb13:46,ebb:6,ebt:46,ec_ii:135,ec_ij:135,ec_jj:135,echo:[3,40,43],ecp:114,edg:[2,19,40,43,57,82,83],edge:82,edit:[4,163],edition:4,edu:[3,112,132],eebt:46,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,42,45,46,47,48,49,50,51,52,53,54,56,57,58,60,61,63,66,68,69,72,73,74,75,77,80,81,82,83,84,85,86,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103,104,105,106,109,110,112,113,114,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,138,140,141,142,143,144,146,147,148,150,155,156,157,158,159,160,161,162],effici:[0,1,2,4,39,55,57,61,68,73,77,98,104,106,123,127,138,141,142,146],efficienc:4,efield:[77,92],eggebrecht:[106,148],ehex:2,eigenvalu:73,einstein:[2,80],either:[1,2,3,4,19,29,40,41,42,43,44,57,59,60,61,62,63,67,68,69,72,76,77,83,92,98,104,112,116,119,132,133,135,138,142,145,154,156,158],ejtehadi:[104,118,146],elaps:[82,150],elast:[2,21,22,93,119,157],elastic:0,elba:13,electr:[2,58,115,162],electric:4,electrolyt:161,electron:[2,40,58,81,94,105,109,112,114,115,135,138,145,148,158,159,162],electron_integr:58,electron_temperatur:58,electron_unit:114,electroneg:[2,105,115,148],electroneg_compon:148,electrostat:[2,4,104,109,114,123,131,133,148,161],elem1:[115,135,149],elem2:[115,135,149],elem:148,element1:[94,112,148],element2:[94,112,148],element:[2,33,37,39,41,42,57,58,94,95,98,105,112,113,114,115,135,136,137,138,143,145,148,149,155,156,157,158,159],elementn:[94,112],elementset:58,elif:41,elig:121,elimin:[2,66,77,79,80],elj:109,ellips:2,ellipsoid:[2,44,70,92,118,133,146],els:[57,62,68,81],elsewher:135,elt:135,emac:0,email:[0,3,115],emb:83,emb_lin_neg:135,embed:[3,13,81,94,112,115,131,135,136,137,145],embt:46,emin:61,emphas:119,empir:[58,114],empiric:95,emploi:[63,157],empti:122,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,43,45,46,47,48,49,50,51,52,53,54,56,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,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,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],enclos:[2,135,148],encod:57,encompass:2,encount:38,encourag:[76,78],end:[1,2,3,4,19,46,57,60,61,63,66,68,71,75,76,81,93,110,112,118,134,138,146,149,150],endbondtors:46,energet:[60,95],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,42,44,45,46,47,48,49,50,51,52,53,54,55,56,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,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],energy_compon:148,enforc:[2,57,60,68,77,123],enforce2d:[2,92],eng:[3,105,137],engineer:[58,79,112],enginer:136,enhanc:[58,63],enlarg:57,enough:[44,59,74,82,83,106],enpub:112,ensembl:[2,32,35,68,71,73,74,110,148],ensight:2,ensur:[2,41,61,66,68,98,131,155,159],enter:[115,138,159],enthalpi:[76,112],entir:[0,2,3,19,31,39,40,42,43,44,59,60,63,66,68,69,72,73,76,78,81,109,127],entiti:2,entri:[40,65,74,98,113,135,141,142,143,149,155,156,157,158,159],entry1:[141,142],enumuer:2,environ:[1,2,3,4,57,72,94,98,105,113,114,145,156],eos:65,epair:[95,117,121],epp:109,epq:109,eps0:161,eps14:131,epsilon0:158,epsilon:[2,18,21,22,27,28,32,45,82,83,92,97,102,103,104,106,107,108,109,116,118,120,121,122,123,124,125,126,127,128,129,130,131,134,139,144,146,147,155,160,161],epsilon_0:162,epsilon_14:102,epsilon_:146,epsilon_d:107,epsilon_i:[118,146],epsilon_i_:146,epsilon_i_a:[118,146],epsilon_i_b:[118,146],epsilon_i_c:[118,146],epsilon_j:[118,146],epsilon_j_:146,epsilon_j_a:[118,146],epsilon_j_b:[118,146],epsilon_j_c:[118,146],epsilon_lj:146,eqp:109,eqq:109,equal:[2,3,19,28,32,35,42,44,57,59,61,62,66,67,69,70,72,73,74,75,76,79,80,81,82,92,93,95,105,110,111,117,118,121,132,138,139,145,146,148,149,150,159,162],equat:[2,35,38,39,40,43,56,61,62,63,64,65,67,68,69,72,73,74,76,77,81,82,104,109,110,111,114,115,116,119,132,133,135,142,146,151,152,153,162],equation:[72,90],equilibr:[2,35,44,60,61,68,74,79,80,105,106],equilibrium:[1,2,6,8,10,11,12,13,16,17,18,20,23,24,25,26,27,46,47,61,66,67,68,69,74,75,77,80,84,85,89,90,105,135,143,148],equilibrium_start:58,equival:[2,13,61,68,75,95,110,114,148,156,158],equlibrium:2,er3:43,eradiu:114,eras:79,erat:133,erc:106,erfc:[106,123],erhart:[112,156,158],eros:135,erose_form:135,erot:2,errata:[156,158],erratum:82,error:[0,1,2,3,11,47,57,61,62,63,65,68,70,76,81,82,83,92,106,123,146,154,156,158],erta:119,especi:[4,44,59,74,75],essenti:[3,11,47,95,106,123,158],essential:69,essex:13,establish:32,estim:[1,2,19,29,35,42,58,59,76],esub:135,eta:[2,67,68,74,113,115,118,145,157,159],eta_dot:68,eta_ij:145,eta_ji:115,etap:68,etap_dot:68,etc:[1,2,3,4,28,33,34,35,42,44,57,58,66,68,81,83,92,93,112,113,131,133,138,155,156,158,159],etol:[92,93],etot0:74,etot:[2,42,74],eu2:43,eu3:43,euler:[76,92,93],eulerian:58,europhi:67,evalu:[3,32,35,41,44,45,57,58,62,66,76,82,92,138,141,142,145,148],evanseck:[2,5,45,102],evaul:92,even:[2,4,19,29,55,59,61,63,68,81,82,83,92,93,97,114,115,119,146,159],evenli:[19,42,59,67],event:[2,68,81],eventu:2,ever:28,everaer:[104,118,146],everi:[0,1,2,3,4,19,35,57,58,59,60,61,62,63,67,68,69,70,71,72,74,76,77,81,93,110,131,148,163],everyth:163,everywher:125,eviri:114,evolut:[63,67,73],evolv:[67,73],ewald:[2,40,42,92,99,100,101,106,109,114,123,127,144,147],ewald_disp:109,exact:[19,59,60,66,81],exactli:[2,19,35,44,59,66,74,110,112,119,132,141,142],examin:[2,60,76],exampl:[0,1],exce:[2,4,19,59,61,68,92],exceed:[19,59,68],excel:114,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,42,44,45,46,47,48,49,50,51,52,53,54,56,59,61,68,69,73,77,81,84,85,86,88,89,90,91,93,94,95,96,99,100,101,102,103,104,105,106,108,109,110,112,113,114,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,136,140,143,144,146,147,150,155,156,157,158,159,160,161,162],excess:114,exchang:[2,58,63,81,114],excit:114,excite:114,exclud:[2,4,39,41,92,119,132,133,154],exclus:[1,4,32,45,105,138],excurs:68,execut:[1,2,3,57],exempl:148,exemplari:66,exemplifi:114,exert:[2,70,83],exhaust:58,exhibit:[36,63,68,114],exist:[2,3,29,44,56,57,61,84,85,86,87,89,111,154,163],exit:[3,19,59],expans:[41,55],expect:[1,4,19,59,72,74,135,138],expens:[2,72,81],experi:[2,75,93,110],experienc:[2,4],explain:[1,2,3,19,30,57,59,61,68,70,72,93,97,112,148,150,163],explan:[2,41,72],explic:139,explicit:[2,3,32,76,95,98,102,112,114,122,132,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,44,45,46,47,48,49,50,51,52,53,54,61,66,68,69,74,77,81,84,85,86,88,89,90,91,94,95,96,99,100,101,102,103,104,105,106,107,109,110,112,113,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,136,138,140,141,142,143,144,146,147,150,151,152,153,155,156,157,158,159,160,161,162,163],explictli:4,exploit:73,explor:[40,43],expon:[76,112,116,118,121,131,139,147],exponenti:[32,76,116,145,155,159,162],expos:3,exposit:[58,110],express:[2,41,44,61,72,76,81,98,112,114,125,135,148,149],expressiont:98,extend:[0,2],extens:[2,4,21,22,27,32,35,62,63,68,69,72,75,79,80,81,82,83,118,135,138,146,149],extent:[1,19,21,59,95],exterior:[2,83],extern:[32,57,61,66,67,68,69,71,81,92,136,137],extra:[2,3,4,19,22,39,40,42,43,44,59,68,74,92,109,119,135],extract:[2,3,18,32,93,106,115,135,149],extract_atom:3,extract_comput:3,extract_fix:3,extract_glob:3,extract_vari:3,extrapol:1,extrem:[1,2,57,61,68,80,114,157],extrema:131,extreme:114,extrins:58,f_1:[2,61],f_a:[156,157,158],f_c:157,f_f:158,f_fix_id:74,f_harm:80,f_i:[13,145],f_id:[2,62],f_ij:145,f_int:79,f_j:13,f_jj:35,f_k:145,f_langevin:81,f_max:74,f_r:[156,157,158],f_sigma:98,f_solid:80,f_ss:2,face:[2,82,83,118,135,146],facil:0,facilit:2,fact:[2,4,80,119,148],factor:[1,2,8,12,16,17,18,19,22,23,32,35,40,41,43,45,53,57,59,61,63,67,68,69,73,75,76,77,82,83,89,95,98,99,100,102,106,107,108,110,111,114,119,122,123,135,138,141,142,143,144,147,150,155],fail:[3,61,92,93,108],fairli:[3,163],faken:30,fall:2,fals:148,famili:159,familiar:[0,3,163],fan:145,far:[2,59,61,68,72,75,82,85,89,93],farrel:[156,158],fashion:[2,19,44,59,62,68,69,74,80,81,82,93,132],fast:[2,4,62,74,76,132,133,138],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,45,46,47,48,49,50,51,52,53,54,59,68,69,77,79,81,84,85,86,88,89,90,91,94,95,96,98,99,100,101,102,103,104,105,106,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,140,143,144,146,147,150,155,156,157,158,159,160,161,162],fastest:[1,2,81],fault:29,fava:118,favor:60,fcc:[2,29,30,35,38],fcold:63,fdt:[64,65,76],fdti:32,fe2:43,fe3:43,fe_md_boundari:58,featur:[0,2,3,41,57,60,66,73,83,92,163],fecr:112,feedback:62,feel:[72,83,93],fehlberg:76,felling:137,felt:83,fene:[2,4],fennel:[106,123],fep:0,ferguson:[2,45],fermi:[1,158],fermion:114,fernando:134,few:[1,2,3,63,68,77,92,93,95,148],fewer:[1,3,4],feynman:73,ffield:[105,115,148],fflag1:57,fflag2:57,ffmpeg:57,ffplai:57,fft:[1,3,42],fhot:63,ficiti:154,fictiti:[2,73,75,106,123,127,154],field:0,fifth:[2,116,143],figshar:72,figur:[1,4,74,163],fij:109,file0:72,file1:[3,65,72],file2:[3,65],file:[0,1],filenam:[4,19,57,58,59,65,72,76,81,93,94,95,98,106,112,113,115,116,135,136,137,141,142,143,145,148,149,155,156,157,158,159],fill:[44,57,81,98,138,163],filter:58,finchham:[2,108],find:[0,2,3,4,30,32,60,61,62,65,72,75,92,93,106,123,127,135,141,142,148,163],fine:[4,80,163],finer:[41,44],finger:44,finish:[2,3,19,59],finit:0,finni:112,fire:[92,93],first:[0,1,2,3,4,6,19,21,22,28,29,35,37,38,39,42,43,46,57,59,60,62,65,66,67,68,72,73,74,77,78,79,80,81,84,92,93,94,95,97,98,99,100,102,105,106,112,114,115,116,119,120,122,123,127,132,133,135,137,138,141,142,143,145,148,149,154,155,156,157,158,159,162,163],fischer:[2,5,45,102],fit:[2,75,95,98,135,141,142,157,163],five:[30,74,98,136],fix:[0,1],fix_flux:58,fix_heat:63,fix_id:[61,68,69,74],fix_manifoldforc:163,fix_modifi:2,fix_nv:163,fix_rattl:77,fix_shak:77,fixedpoint:[61,68],fixid:[57,58],fji:109,flag:[3,4,33,34,40,43,57,60,95,121,122,135,138,154,163],flag_buck:101,flag_coul:[101,109,127],flag_lj:[109,127],flagfld:[132,133],flaghi:[132,133],flaglog:[132,133],flagvf:[132,133],flat:[2,4,81,82],fld:[82,132,133],flexibl:[2,57,114,157],flip:[2,68],fluctuat:[2,32,61,66,67,68,69,72,80,81,90,111],fluid:[2,61],flux:2,flv:57,fly:[19,57,58,77,98,138],fmass:73,fmax:92,fmsec:68,fno:4,fnorm:92,fnve:63,focu:77,foil:[41,72,149],fold:[4,78],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,41,42,44,45,47,48,49,50,51,52,53,54,55,57,58,59,62,64,65,66,67,68,69,73,74,75,76,77,79,80,81,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,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],foo:[3,57,76],foo_species:76,foot:2,forc:[0,1],forcefield:[75,121],forcegroup:67,ford:109,forgiv:68,fork:163,form:[2,28,32,33,34,36,41,42,62,66,75,76,81,82,83,84,87,90,93,95,98,111,112,114,117,121,122,134,135,137,138,141,142,143,144,145,146,148,149,150,156,157,158,161],formal:[2,35,66,68,73,148],format:[2,19,57,59,65,76,81,93,94,95,98,112,115,116,122,135,137,141,142,147,149,159],formation:65,former:[2,19,59,81,98],formul:[1,2,42,68,75,77,95,98,112,114,118,135],formula:[2,6,28,29,30,32,33,34,35,39,40,42,43,46,56,62,72,78,82,84,86,95,97,98,102,103,104,109,110,112,113,118,119,120,121,122,123,125,126,127,129,130,132,133,135,139,140,146,147,150,155,156,157,158,159,160,161],forth:[1,2,3],fortran:[2,3,112,135],forward:[32,93],foster:[98,145],found:[2,30,60,63,67,106,109],four:[2,3,28,41,62,81,90,93,138],fourier:2,fourth:[2,4,37,75,102,116,143,148],fox:[2,40,45,153],fqq:109,fraction:[1,2,4,19,42,57,60,61,74,76,93,98,116,119,132,133],frame:[41,58,74,118],framer:57,framework:[94,149],frattl:63,free:[2,13,29,32,72,79,80,81,93,114,131,138,140,145,161],freedom:[2,39,60,68,69,73,77,80,92,109],freeli:[0,2,57],freez:2,frenkel:[2,63,80],frequenc:[2,4,73,74,76,110,114,148],frequent:[29,30,36,38,41,63],fri:74,friction:[2,74,81,119],from:[0,1],front:74,frontend:57,frozen:[2,39,66,117],fs2:[2,35],ftol:[92,93],fuction:106,fudg:77,fulfil:2,full:[1,2,4,35,57,63,67,72,76,98,112,114,115,118],fuller:92,fulli:[2,72,92,93,106,145,163],fulton:112,fumi:99,funcfl:112,fund:0,funrol:138,further:[2,37,57,67,73,81,92,93,94,97,105,138,148],furthermor:[11,47,63,76,111,114],futur:[0,2,59,66,93,136,137],g_jik:145,g_p:81,ga3:43,gaa:98,gai:118,gain:[4,62],galindo:139,gamma0:13,gamma:[2,13,67,74,110,111,113,118,135,139,151,152,153,155,156,158,159],gamma_:81,gamma_ijk:156,gamma_n:119,gamma_p:81,gamma_t:119,gammaa:139,gammafactor:67,gammar:139,gan:[145,155,156,158,159],gan_sw:145,gan_tersoff:145,gao:[2,5,45,102],gap:[132,133,149],gather:3,gather_atom:3,gathert_atom:3,gauch:50,gauss:107,gaussian:[2,35,37,66,73,75,110,114,117],gavhan:4,gaybern:[2,4,92],gd3:43,gdot:133,ge4:43,gec:[156,158],gen:68,gener:0,gentler:82,gentli:113,geom:2,geometr:[2,44,59,68,83,93,97,103,104,106,109,114,116,118,120,123,124,125,126,127,128,129,130,131,132,133,134,139,142,146,150,160,161],geometri:[2,9,19,44,59,61],gerber:131,germann:[69,125],germano:118,get:[0,1,2,3,4,19,35,41,44,57,59,61,83,93,106,159,163],get_natom:3,get_rank:3,get_siz:3,gewald:2,gezelt:[106,123],ghost:[2,4,30,61,68,110,111,114,119,122],gif:57,gifsicl:57,gillan:149,gingold:[151,152],git:163,give:[0,1,2,3,4,28,36,38,44,61,68,72,92,95,98,114,121,135,138,146,156,157,158],given:[2,3,4,11,38,41,42,47,56,61,63,66,67,68,69,72,73,74,75,76,77,78,81,82,83,94,95,98,99,100,101,103,104,105,106,107,110,111,112,114,115,116,118,119,121,123,124,125,127,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,162],glosli:138,glotzer:110,glue:3,gnu:0,gnuplot:3,goal:62,goddard:[2,9,91,114,121],goe:[28,41,44,63,92,109,113,120,125,128,150,162],gold:29,goldman:74,good:[1,2,4,19,30,40,43,59,62,68,77,93,94,104,112,138,159,163],gordan:41,gordon:2,got:163,gould:[2,45],gov:[0,94,112,115],govern:67,gpa:95,gpl:0,gpt:138,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,45,46,47,48,49,50,51,52,53,54,68,69,77,84,85,86,88,89,90,91,94,95],grab:2,grad:2,gradient:[2,61,63,81,93,133,141,142],graft:60,grain:[2,13,18,28,44,50,65,72,76,116,120,138,142,147],gram:112,gran:[2,82,83],granular:0,graph:3,graphic:3,graviti:2,grdient:58,great:[74,163],greater:[1,61,66,68,72,97,99,100,101],greatli:[40,63],green:[2,35,57,73,98,163],green_kubo:2,grest:[21,22,60,101,119,127],grid:[19,40,43,59,67,81],grigera:2,gromac:92,gromacs:[2,92,120],groot:110,ground:[2,31,64,114],group:[2,3,4,19,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,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,93,148,159],group_id:3,grow:[2,68,72,76,119],growth:2,gsmooth_factor:135,guarante:44,guess:163,gui:[3,163],guid:[1,151,152,153],guidelin:1,gullet:135,gulp:2,gunnel:138,gunsteren:131,guo:[2,5,45,50,102],gyrat:2,gzip:[57,93],h12:118,h2o:[116,142],had:[2,3,60,61,66,68,69,81,110,119,154],hafskjold:[2,63],half:[1,2,4,19,57,59,68,81,82,83,98,104,114,138],halfwai:[19,57,163],halperin:36,halsei:119,halt:[19,59,63],halv:57,hamak:[82,83,104,146],hamilton:29,hamiltonian:[68,114],han:112,hand:[2,28,29,44,54,57,67,76,106,114],handl:[4,57,70,114,132,159],happen:2,hara:157,hard:[1,75,148],harden:150,harder:[82,83],hardi:58,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,45,46,47,48,49,50,51,52,53,54,68,69,77,84,85,86,88,89,90,91,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,140,143,144,146,147,150,155,156,157,158,159,160,161,162],harmon:[2,4],harmonic_fix_wal:133,harrison:95,hartre:[112,114,138],hassl:75,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,41,42,44,45,46,47,48,49,50,51,52,53,54,57,59,60,61,62,66,67,68,69,72,73,74,77,81,82,83,84,85,86,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103,104,105,106,109,110,111,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,135,136,137,138,140,141,142,143,144,145,146,147,148,150,155,156,157,158,159,160,161,162,163],hbond:2,hcn:76,hcp:[29,30,135],he1:43,head:[2,6,46,84,95,117,121,163],header:[2,57,74,81,94,98,112,154],heat:2,heavili:[19,59],heavisid:81,hebenstreit:4,height:[57,93,117],held:[2,76,93,119],helic:50,helium:96,help:[4,61,72,98,140,156,158,163],henc:[1,5,6,10,16,17,18,29,46,68,82,83,84,85,89,90,106,117,131,145],henderson:27,henkelman1:93,henkelman2:93,henkelman:93,here:[1,2,3,4,19,29,40,43,49,56,57,59,60,62,66,67,72,74,81,82,92,93,95,98,115,118,121,122,134,145,146,148,162,163],hertzian:[2,119],hertzsch:119,heterogen:37,hex:[44,63],hexagon:[36,135],hexat:36,hey:42,hf4:43,hfo:105,hftn:[92,93],hg1:43,hg2:43,hibb:73,hierarchi:[101,102,123,124,127,134,139],higdon:[132,133],high:[1,2,4,19,38,57,59,61,81,92,95,98,114,118,138,141,142,146,162],higher:[1,4,41,63,92,95,114,148],highest:[63,93],highli:[2,4,44,57,68,74,92,114],highlight:2,hight:117,hill:73,histo:[2,43],histogram:[1,2],histor:115,histori:[0,2],ho3:43,hoc:90,hoh:[2,106,123,127],hold:[2,75,92,93,119,131,161],holdem:75,holian:[69,125],holm:72,home:3,homepag:57,hone:73,hood:138,hook:[2,3],hookean:119,hoover:[2,68,69,71,73,80,110],hop:[60,93,98,148],hope:[19,59],hopefulli:92,horn:2,host:4,hot:2,hove:135,how:[0,1],howev:[1,2,3,4,18,19,35,40,41,43,57,59,60,61,62,66,67,68,72,73,74,81,93,103,104,112,113,119,135,138,141,142,145,155,158,163],howto:[2,68,106,121,123,127],hoyt:58,hpc:1,htm:112,html:[0,3,117,133],htmldoc:0,http:[0,2,3,72,94,112,132,163],https:163,htype:[106,123,127,131],hubbard:107,huge:163,huggin:[99,100],hugh:58,hugoniostat:69,hugoniot:[69,74],hundr:63,hura:2,hybrid:[1,2,4,32,56,68,94,95,105,106,110,112,115,118,119,121,122,131,135,136,137,138,143,145,146,148,149,154,155,156,157,158,159,162],hydrat:117,hydrocarbon:[95,105,114],hydrodynam:[67,132,133],hydrogen:[2,95,98,106,114,121,123,127,131],hydrostat:[61,68,69],hynninen:[107,117],hyoungki:137,hyper:[4,73],hyperbol:107,hyperspher:41,i_0:81,i_1:145,i_csid:2,i_mpi_pin_domain:4,i_mpi_shm_lmt:4,i_n:145,ialloi:135,ibar:135,ibead:73,ibm:138,icc:138,ice:2,icm:163,icms:163,icosohedr:30,id1:[93,122],id2:[93,122],id_press:[61,68,69],id_temp:[60,61,68,69],idea:[1,2,3,19,42,57,59,62,72,163],ideal:[2,30,72,132,151,163],idealiz:2,ident:[1,4,41,61,66,68,72,73,93,99,100,106,108,112,123,125,131,143,148,149,159,162],identifi:[1,2,29,44,65,121,122,135,141,142],idn:93,ielement:135,ignor:[2,3,4,19,32,57,59,61,62,68,69,75,81,82,83,93,94,103,104,112,113,115,118,122,135,141,142,143,145,146,155,156,157,158,159],iii:[2,9,91,121],ijj:159,ijk:[88,90,91,98,145,159],ijl:90,ikeshoji:[2,63],ikj:159,illinoi:132,illustr:[1,2,3,4,72,73,93],imag:[2,3,33,34,40,44],image2pip:57,image:57,imagemagick:57,imagin:[98,113,136,137,143,145,155,156,157,158,159],imaginari:[2,36,73],imbal:[1,19,59,76],imbalanc:[19,59],img:57,immedi:[0,44,76,77],immers:67,impact:[1,2,95],impart:2,impei:[2,123],implement:[1,2,11,31,32,38,40,43,44,47,56,62,63,64,67,68,73,74,76,77,81,90,92,93,94,98,105,106,108,110,111,112,113,114,123,127,131,135,146,156,158],impli:[2,32,42,57,75],implicit:[2,66,82],implict:107,important:80,impos:[2,39,63,72,79,80,82,83,92,93],imposs:1,improp:[0,4,39,42,44,60,84,85,86,87,88,89,90,91,92],improper:[4,90],improper_coeff:[84,85,86,87,88,89,90,91],improper_styl:[0,2],improv:[0,1,4,19,59,63,68,121,123,138,155,157],in3:43,inaccur:[1,2],inaccuraci:83,inact:121,inappropri:44,incid:[40,43],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,45,46,47,48,49,50,51,52,53,54,56,57,58,60,61,66,67,68,69,72,73,74,75,76,77,80,81,82,83,84,85,86,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103,104,105,106,107,109,110,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,135,136,137,138,140,143,144,145,146,147,149,150,155,156,157,158,159,160,161,162,163],inclus:[0,32],incompat:3,incomplet:3,incompress:114,inconsist:60,incorpor:[55,74,98,107,163],incorrect:135,incorrectli:119,increas:[1,2,4,40,42,57,60,62,63,65,75,76,93,95,114,118,141,142,157],increasingli:114,increment:[3,59,68,148],incur:81,indefinit:79,indent:92,independ:[2,3,19,35,44,59,60,61,66,67,68,80,81,119,138],index:[0,2,3,65,73,81,141,142],indic:[2,3,4,6,28,31,33,35,37,39,42,46,57,61,62,68,81,84,90,105,115,135,138,143,148,156,158,163],indirectli:[2,62],indium:149,individu:[0,1,2,3,4,32,39,42,44,56,57,61,62,63,67,68,77,92,99,100,102,103,106,112,114,120,122,123,127,144,147],induc:0,ineffici:[2,29,30,36,38,41,57,68],inerti:133,inertia:[2,133],infer:[59,115],infin:92,infininti:57,infinit:[67,81,114],infinitesim:2,inflect:[107,125],influenc:[19,156,157,158],inform:[0,1,2,3,4,19,40,43,44,45,57,58,59,60,61,62,63,67,70,71,72,75,77,78,79,82,83,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,109,110,112,113,114,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,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],infrequ:[2,68,110],infti:[107,132,133],ingtegr:98,inher:92,inherit:2,inhomogen:81,inidividu:92,init:148,init_fil:81,initi:[2,3,19,32,44,57,58,59,60,61,62,65,66,67,68,69,70,73,74,75,76,79,80,81,82,92,93,95,109,110,138,141,142,148],initial:2,initialt:81,inlclud:3,inner2:[102,120],inner:[4,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,112,113,114,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:121,innner:129,inorgan:[2,159],inp:[149,159],input:[0,1],insert:[44,149,154],insid:[2,3,44,63,67,82,83],inside:[67,125],insight:2,instabl:[67,109],instal:[1,2,3,4,57,93,101,102,123,127,131,138,163],install:0,instanc:[2,3,117,145],instantan:[2,60,61,62,66,68,69,74],instanti:[2,3,58],instead:[1,2,3,4,19,29,34,45,59,61,67,100,101,112,122,124,131,135,138,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,45,46,47,48,49,50,51,52,53,54,57,68,69,77,84,85,86,88,89,90,91,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,140,143,144,146,147,150,155,156,157,158,159,160,161,162],instruction:3,insuffici:2,insult:68,insur:[2,3,30,44,57,81,82,83,104,118,146],integ:[2,3,29,38,41,44,45,48,49,52,55,57,60,62,66,67,74,76,81,88,110,111,135,149],integral:[73,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,40,43,59,60,68,69,81],inter:[60,93,98],interact:[1,2,3,13,28,32,36,38,39,41,42,45,50,55,56,60,72,73,75,76,81,82,83,85,86,87,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,138,139,140,142,144,145,146,147,148,149,150,154,155,156,157,158,159,160,161,162],interatom:[44,79,80,94,98,112,114,135,138,148,157],intercept:40,interchang:[2,62],interconvert:114,interesect:83,interest:[1,3,43,73,80,113,133],interf:163,interfac:0,interfer:[68,95],interg:2,interi:133,interior:[2,19,83],interlac:135,interleav:[2,44],intermedi:[2,57,72,90,93],intermolecular:95,intern:[0,2,3,4,5,6,8,12,16,17,18,31,32,42,44,46,57,58,62,64,65,68,69,76,84,85,89,90,92,111,116,141,142,151],internal:57,internal_element_set:58,internal_quadratur:58,internat:[4,40,43,58],interpenetr:135,interpentr:[151,152],interpol:[2,57,58,65,67,72,93,98,141,142,156],interpret:[2,3,55,57,119,150],interrupt:74,intersect:[2,40,83],intersert:83,interspers:92,interstiti:138,interv:[2,35,62,68,74,148],intestieti:40,intial:[2,95],intiial:19,intramolecular:13,introduc:[2,36,38,57,63,68,74,90,94,106,114,123,127,131,155],introduct:0,inv:[40,43],invalid:[33,93,132,133],invari:[38,41,62],invent:77,invers:[2,26,40,43,74,90,91,99,106,123,160,161],invert:[1,2],invis:83,invoc:60,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,44,45,46,47,48,49,50,51,52,53,54,57,58,59,60,61,62,63,66,67,68,69,70,71,72,77,78,79,80,81,82,83,84,85,86,88,89,90,91,92,93,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,136,140,143,144,146,147,149,150,155,156,157,158,159,160,161,162],involv:[2,67,92,93,97,118,155,156,158],ion:[2,81,98,107,115,117,135,138,148,158,162],ionic:[2,99,100,107,114,115,144,148],ioniz:[105,114],ipp:0,ir3:43,ir4:43,irregular:[2,19,59,61,68],irrelev:143,irrespect:[132,133],irrevers:76,isbn:161,isenthalp:68,ismail:[101,127],isn:[3,63],iso:[61,68,69],isobar:[68,111],isodem:114,isoenerget:111,isoenthalp:111,isol:119,isomorph:73,isotherm:[68,111],isotrop:[2,36,118,132,133],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,45,46,47,48,49,50,51,52,53,54,57,60,61,63,68,69,73,77,80,84,85,86,88,89,90,91,93,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,140,143,144,146,147,150,154,155,156,157,158,159,160,161,162],issue:58,item:[2,19,59],iter:[2,19,59,61,70,71,77,92,93,148],iterat:92,ith:62,itself:[2,3,35,57,81,93,106,115,118,141,142],ityp:44,izumi:157,j0jt:35,j_m:41,jackson:139,jacs:[2,45],janssen:72,januari:135,jaramillo:114,jcp:82,jeffer:4,jello:68,jeremi:137,jik:98,jmm:41,job:77,jochim:68,join:[2,29,119],joint:121,jon:29,jone:[1,2,21,22,32,45,58,63,82,83,92,95,97,100,101,102,103,104,109,118,120,121,122,123,124,125,127,128,130,131,134,139,145,146,147],jonsson:[30,93,148],jorgensen:[2,53,106,123,127],journal:[50,58,112,138,151,152],jpeg:57,jpg:57,judici:2,jump:[2,18,69],jun:4,just:[2,3,13,35,42,57,62,81,93,95,97,145,163],justo:113,jusufi:[107,117],jut:83,k11:35,k22:35,k33:35,k_2:87,k_4:87,k_sigma:98,k_ub:5,kalia:159,kapfer:38,kappa:[2,35,106,111,123,160,161],kappa_:81,karplu:32,karttunen:67,kate:0,kaufmann:4,kayser:107,kcal2j:35,ke_eta_dot:68,ke_etap_dot:68,ke_omega_dot:68,keblinski:[106,148],keef:40,keep:[54,62,76,80,92,106,131,149,163],kei:[2,159],kelchner:29,kemper:105,kepler:1,kept:[2,69,79,80],kernel:[4,58,66,138,151,152,153],keword:57,keyword:[2,4,19,29,32,34,36,37,38,39,40,41,42,43,44,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,92,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,112,113,114,117,118,119,120,121,122,123,124,125,126,127,128,129,130,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:114,khersonskii:41,khvostov:4,kim:[135,136,137],kind:[1,2,3,19,30,57,59,60,77,93,98,114],kinemat:[132,133],kinet:[2,32,35,39,42,61,63,68,69,74,76,92,114,116,142],kjl:90,klein:[2,58,68,123,147],kmax:40,kmp_affinity:4,knight:4,knl:4,knock:81,know:[3,19,92,113,163],knowledg:57,known:[41,57,62,63,79],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,45,46,47,48,49,50,51,52,53,54,68,69,77,84,85,86,88,89,90,91,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,140,143,144,146,147,150,155,156,157,158,159,160,161,162],kollman:[2,45],kone:[79,80],koning00a:79,koning00b:79,koning96:[79,80],koning97:80,koning99:79,kraker:4,kremer:[21,22],kress:[136,137],kspace:[0,1,2,32,39,42,92,99,100,101,102,106,109,123,127,131,133,147],kspace_modifi:[2,4],kspace_styl:0,kstart:75,kstop:75,kth:[66,73],kub:5,kubo:[2,35],kumagai:157,kumar:[132,133],kuronen:145,kuster:[70,71],kutta:76,l12:135,l_box:114,l_skin:81,la3:43,label:[63,73,93],laboratori:[0,31,64,74],lack:[4,114],lackmann:98,ladd:80,lafitt:139,lag:[62,81],lagrangian:[2,58,74],lagrangian_posit:74,lagrangian_spe:74,lambda1:[156,157,158,159],lambda2:[156,157,158],lambda3:[156,158],lambda4:159,lambda:[32,40,43,67,79,80,81,94,113,131,140,155],lambda_fin:79,lambda_initi:79,lamda:[27,140],laminar:153,lammp:[0,3,93,135,138,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:105,lammps_put_coord:2,lammps_quest:2,lammps_rk4:76,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,70,74,75,80,81,93,109,110],languag:[2,3,62],larentzo:[31,64],larg:[0,1,2,4,19,29,42,44,50,57,59,60,61,62,63,67,68,74,75,77,81,82,83,90,92,104,110,114,118,119,122,138,141,142,146],larger:[1,2,3,19,29,44,57,63,67,68,75,81,82,83,92,93,98,104,106,107,114,119,123,127,133,154],largest:[2,44,92,141,142,154],laser:81,last:[1,2,3,42,55,57,59,76,92,93,96,97,98,99,104,105,110,111,112,117,118,119,120,121,124,126,128,129,130,133,139,140,146,148,150,154,160,161],lat:135,later:[2,3,69,92,95,98,163],latitud:41,lattc:135,latter:[2,3,4,19,32,59,61,68,76,83,98,100,101,102,103,109,123,127,131,138,144,147,148],lattic:[2,19,29,30,35,36,40,43,44,59,67,72,82,83,94,112,135],launch:[1,2,3,4],laupretr:90,law:2,layer:[2,81],layout:1,lb_fluid:67,lbtype:67,ld_library_path:3,lead:[2,9,19,32,59,67,69,74,76,77,90,93,106,123,127,129,138,163],least:[2,40,43,63],leav:[3,6,19,42,46,59,61,62,68,77,84],lee2:135,lee:[58,135],left:[2,3,19,56,57,60,72,76,163],leftmost:[19,59],legaci:4,leimkuhl:68,leiu:110,lenart:[107,117],length:[2,3,4,6,19,27,28,29,31,32,33,34,35,37,39,40,43,46,57,59,60,61,65,67,68,69,71,72,77,81,82,83,92,93,95,98,99,100,106,107,114,117,121,123,135,141,142,156,160,161],lennard:[1,2,21,22,32,45,63,82,83,92,95,97,100,101,102,103,104,109,118,120,121,122,123,124,125,127,128,130,131],lenoski:[136,137],less:[1,2,4,19,36,38,59,60,61,63,68,72,92,98,102,118,119,132,133,146,155,158,161],let:[1,49,65,77,104,141,142],lett:[41,67,79,80,98,112,114,118,131,141,142,149],letter:[19,59,73],level:[3,57,68,72,75,78,82,83,98,101,102,123,124,127,134,138,139],lever:154,levin:119,lgr_po:74,lgr_vel:74,li1:43,liang:105,lib:[1,3,4,105],libdir:3,liblammp:3,liblammps_foo:3,liblammps_g:3,libmpi:3,librari:[0,1],licens:[0,57],lie:[2,29],like:[2,3,4,28,57,61,68,70,72,74,76,82,83,93,98,104,109,110,111,114,115,119,121,128,129,135,149,158,160,161,163],likelihood:[40,43,60],likewis:[1,2,19,58,59,68,69,93,94,97,98,106,112,115,138],limit:[2,4,11,40,41,43,44,47,57,61,63,66,68,74,92,107,114,119,133,147,150],limit_eradiu:114,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,41,42,45,46,47,48,49,50,51,52,53,54,57,59,61,65,68,69,72,74,76,77,81,84,85,86,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103,104,105,106,109,110,112,113,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,135,136,138,140,141,142,143,144,145,146,147,148,149,150,155,156,157,158,159,160,161,162,163],linear:[2,9,11,41,47,58,60,61,65,68,75,77,81,82,85,86,87,89,93,119,129],linearli:[2,82,93],lineflag:2,lineforc:92,lingo:3,link:[2,3,56,57,135],linkflags:4,linux:[3,4,57],liouvil:68,lipid:13,liquid:[2,4,13,19,32,36,42,59,61,68,74,109,138,144,157],lisal:[111,154],list:[0,1,2,3,4,6,19,29,30,32,36,38,39,41,42,46,56,57,58,59,60,65,68,70,71,72,76,77,84,85,86,87,89,90,92,93,94,95,98,99,100,102,103,105,106,108,110,111,112,113,114,115,116,118,120,121],listfil:122,literatur:[2,135,148,155],lithium:114,littl:[1,4,63,68],littmark:[135,158,162],liu:121,lj126:2,lj12_4:147,lj12_6:147,lj93:2,lj9_6:147,lj_flag:95,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:73,lmpptr:3,load:[1,2,3,4,19,57,59,74,76,105],loadabl:3,localized_lambda:58,localtemp:76,locat:[2,3,11,40,43,47,55,63,67,80,83,106,115,116,117,123,125,127],lockstep:[61,68],log:[1,2,4,74,77,93,95,117,121,132,133],logfil:[0,2],logic:[3,4,19,44,59],lomdahl:[69,125],longer:[1,2,28,68,72,74,76,77,82,83,95,119,148],longest:[19,59],look:[1,2,3,28,57,149,163],lookup:[141,142],loop:[2,3,42,57,62,92,93,138,148],loopmax:148,lopez:68,lorentz:43,lose:[2,61,68,119],loss:2,lossi:57,lossless:57,low:[1,2,19,57,59,138,141,142,161],lower:[2,3,4,19,57,59,61,67,68,74,82,107,135],lowercas:[0,57],lowest:41,lrt:4,lsurfac:81,ltbbmalloc:4,lu3:43,lubric:2,lubricateu:[82,132],luci:76,lumped_lambda_solv:58,lyulin:90,m4v:57,m_eff:119,m_i:78,m_u:67,m_v:67,machin:[1,2,3,4,57,68,92,138,163],mackai:67,mackerel:[2,5,45,102],macos:57,made:[2,3,19,57,59,62,80,118,119,146,150,163],madura:[2,123],magazin:112,magda:82,magic:3,magnitud:[2,29,37,44,62,92,109,119],mai:[0,1,2,3,4,13,19,29,32,33,34,36,37,38,39,40,41,42,43,44,56,57,59,61,62,63,66,67,68,69,70,71,73,74,75,76,77,80,81,82,83,92,93,95,97,98,104,110,114,119,129,131,133,135,136,137,138,141,142,147,149,154,159,162,163],mail:163,main:[2,3,67,79,80,112,148],mainboard:1,mainli:144,maintain:[4,94,112,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,43,45,46,47,48,49,50,51,52,53,54,55,56,57,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,79,80,81,83,84,85,86,87,88,89,90,91,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,163],makefil:[3,4,138],maks:119,manag:73,manbi:149,mandadapu:58,manh:98,mani:[1,2,4,19,35,44,57,59,60,61,62,63,65,66,67,68,69,72,76,77,81,92,93,105,114,117,121,141,142,148,149,156,158],manifoldforc:[70,71],manipul:[19,59,106,145],manner:[2,3,19,42,57,59,68,79,80,82,83,93,112,114,132],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,40,43,45,46,47,48,49,50,51,52,53,54,57,68,69,77,84,85,86,88,89,90,91,93,94,95,96,97,99,100,101,102,103,104,105,106,108,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,140,143,144,146,147,150,155,156,157,158,159,160,161,162],manybodi:[42,92],manybody:[94,95,98,105,112,115,143,145,155,156,157,158,159],map:[3,40,41,43,44,57,58,63,75,93,94,95,98,105,112,113,115,135,136,137,143,145,148,149,154,155,156,157,158,159],mara:148,march:135,mark:[120,131,148],maroonmpi:3,marrink:120,marsaglia:66,martin:135,martyna:68,mask:72,mask_direct:58,mass:[2,32,33,34,35,37,44,58,63,66,67,68,73,74,77,78,80,81,94,97,98,112,114,115,119,132,133,136,137,138,145,148,151,152,153],mass_matrix:58,massdelta:77,massiv:[0,57,67,73],massless:[2,106,123,127,131],master:93,mat:[58,105,157],match:[2,3,19,59,60,65,68,98,121,129,135,141,142],mater:[30,94,137,145,148],materi:[2,29,58,72,81,106,112,113,114,119,135,136,138],material_fil:58,math:[4,68],mathemat:[40,41,43,44,61,66,82,149],mathrm:163,matlab:0,matric:[41,118],matrix:[2,35,61,76,138],matter:[2,81,95,108,112,114,135,147,148,156,158,159,162],mattson:[31,39,42,64],max2theta:43,max:[2,59,61,76,77,92,93,148],max_step:76,maxev:92,maxim:93,maximum:[2,9,19,21,27,28,36,38,40,43,59,63,70,71,72,76,77,93,98,117,132,133,148],maxit:[70,71,92],maxstep:76,maxx:145,mayer:[99,100,148],mayo:[2,9,91,121],mbt:46,mcdram:4,mcgraw:73,mclachlan:68,mdregion:58,mdump:[19,59],meam:106,meam_sw_splin:137,meamf:135,mean:[2,3,4,19,28,32,35,36,37,38,39,41,42,44,45,56,57,59,60,61,62,63,66,68,69,70,71,72,73,76,77,81,82,83,85,86,87,89,92,93,99,100,101,102,106,110,112,114,118,119,121,123,124,127,134,135,139,141,142,144,145,146,147,154,155,156,157,158,161],meant:2,measur:0,mechan:[2,3,31,58,62,63,64,73,76,98,114,125,138],meck:38,media:57,medium:161,meet:[57,60],mehl:94,mei:134,melros:[132,133],melt:[60,62,98,138,157],member:[45,98],membran:[13,161],memori:[2,4,66,81,98],mendelev:112,mention:[1,2,3,67,69,82,93,95],menu:57,mep:93,mer:60,mercuri:163,meremianin:41,merg:163,merz:[2,45],mesh:[1,2,19,40,43,58,59,67,138],mesoparticl:[64,65,111],messag:[0,2,3,57,63,132,133,163],met:[19,59,92,93],metal:[44,58,74,82,94,95,98,105,112,113,114,115,135,136,137,138,145,148,155,156,157,158,159],methan:74,methin:90,method:[1,2,3,4,19,32,35,42,58,59,65,67,68,73,74,76,77,79,80,92,93,94,98,105,106,112,114,115,135,136,137,141,142,145,148,159],methodolog:[2,30,42,73],mezei:32,mg2:43,mgoh:143,mgptfast:138,micel:78,micelle2d:0,michael:137,mickel:38,microscal:132,mid:[138,154],middl:[2,4,19,32,46,59,75,84,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,112,113,114,117,118,119,120,121,122,123,124,125,126,127,128,129,130,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],middlebondtors:46,midpoint:154,might:[2,4,9,70,148,163],migrat:[19,59,72],mikami:[2,68],mike:4,mil:112,militz:72,million:[19,59],mimic:[2,28,106,117,123],mimim:[61,93],min2theta:43,min:[2,41,76,148,154],min_modifi:[61,92],min_step:76,min_styl:[92,93],mind:66,minim:[0,2,19,44,57],minima:[50,55,91],minimi:93,minimizaiton:93,minimum:[9,10,11,21,37,43,47,57,61,75,76,82,83,91,92,93,102,114,116,118,120,121,123,125,127,132,133,147,154],minmiz:61,minstep:76,mintmir:106,minu:93,misc:[2,10,11,13,24,25,37,47,66,72,73,79,80,81,85,87,90,107,109,112,113,117,122,128,134,136,137,140,144,154],miscellan:58,mishin:94,mishra:4,miss:122,mitchel:[2,108],mitig:68,mix:[1,2,4,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,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,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],mixtur:[2,68,104,116,135,142],mixture_ref_t:135,mjpeg:57,mkv:57,mn2:43,mn3:43,mn4:43,mo3:43,mo5:[43,138],mo6:43,mobil:[2,37,42,57],mode:[1,2,3,4,34,43,57,68,73,106,114,138,148],model:[0,1],modern:4,modest:1,modif:[2,4,32,135,138,146,158,163],modifi:[0,1,2,3,32,57,63,75,77,80,95,109,112,114,131,135,136,137,140,148,157,163],modin:58,modul:3,modulu:[119,135],mol:[44,77,109,118,147],molchunk:34,mole:[112,116],molecul:[2,13,33,34,42,44,60,63,65,75,76,77,102,106,118,123,127,146],molecular:[0,2,4,27,44,50,58,63,73,74,75,81,96,98,101,114],molecule:[5,7,8,9,12,16,21,22,23,26,27,28,45,49,50,51,53,56,86,89,91,102,123],moltempl:0,molybdenum:138,mom:[2,35,75],moment:[2,44,67,68,78,109,113,148],momenta:[63,114],momentum:[2,13,41,44,58,66,67,68,133],momon:60,monaghan:[151,152],monitor:[2,61,62,68,74,77,92,93,109],mono:[30,132],monodispers:[119,132,133],monom:[28,60],monoton:[65,93],mont:[2,60],month:0,moor:[31,42,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,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,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,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:138,moriarty1:138,moriarty2:138,moriarty3:138,mors:2,mosi2:135,moskalev:41,most:[0,1,2,3,4,19,29,56,57,59,61,62,68,73,74,95,114,118,135,158,163],mostli:[3,57],motiion:2,motion:[2,63,67,68,69,70,72,73,75,81,83,93,109,114,132,133],motiv:72,mov:57,move:[1,2,3,37,61,67,68,72,74,75,81,82,83,92,93,106,110,132,133,138],movement:[2,92],mp2:95,mp4:57,mpeg:57,mpg:57,mpi4pi:3,mpi:[0,1,2],mpi_barrier:1,mpi_comm:2,mpicc:3,mpich:4,mpirun:[1,2,3,4,73],mplayer:57,msd:2,msi2lmp:0,msmse:[40,43],msse3:138,msst:[69,74],mtk:[68,69],mu_j:13,muccioli:118,much:[1,2,3,57,61,74,95,118,146,163],muller:[2,35,139],multi:[0,1],multibodi:[141,142],multicent:114,multicor:1,multinod:4,multiphys:3,multipl:[0,1],multipli:[32,35,56,67,72,92,95],multiscal:3,multisect:[19,59],multistag:32,multithread:4,murdick:98,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,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,71,72,74,75,76,77,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,109,110,111,112,113,114,115,116,117,118,119,120,121,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:57,mxn:73,mychunk:[2,34],myflux:35,myhug:69,myke:35,mymol:77,mympi:3,mype:35,myramp:42,myspher:83,mystress:35,n_f:74,n_hbond:121,n_ij:119,n_ion:81,n_k:66,n_particl:31,na1:43,nabla:81,nacl:[2,135],nacl_cs_x0:2,nakano:[93,159],name:[0,1,2,3,4,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,57,58,59,60,61,62,63,64,65,66,67,70,71,73,74,75,76,77,78,79,80,82,83,93,94,95,98,100,112,113,115,118,119,122,135,136,137,143,145,148,149,155,156,157,158,159,163],namespac:2,nanoindent:29,nanoparticl:59,nanosecond:63,narrow:2,narulkar:[156,158],nation:0,nativ:[1,2],natom:[2,3],natur:[2,41,68,72,112,114,115,135,145],navi:112,navier:67,nb3:43,nb3bharmon:143,nb5:43,nbodi:138,nbot:98,nchunk:[2,34],ncoeff:149,nd3:43,nden:[2,35],ndof:[68,69],nearbi:[83,95,132,133,161],nearest:[29,30,36,38,67,72,83,122,135,141,142,148],nearli:[2,28,59,114,138],neb:2,neb_combin:93,neb_fin:93,necessari:[2,3,4,32,56,59,61,62,66,76,131,138,148],necessarili:[63,85,86,87,89],need:[1,2,3,19,28,29,30,35,36,38,39,41,42,44,45,55,56,57,58,59,61,65,67,68,75,81,82,93,94,95,96,98,99,100,101,102,103,104,105,106,108,109,110,112,113,114,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,159,160,161,163],needless:2,neg:[2,11,22,33,41,42,47,49,57,61,66,69,72,76,82,115,126,135],neglect:[121,133],neglig:[2,3,32,68,155],neigh_modifi:[2,4,59,92,110],neighbor:[1,2,4,19,29,30,36,38,41,42,44,57,59,60,72,73,93,104,106,110,112,113,115,116,122,123,127,135,142,145,148,149,154,155,156,157,158,159],neighborhood:[10,29,36,149],neighobr:[2,106,123,127],neither:[19,58,60,95,114,132,133],nelem:149,nelement:[94,112],nelson:[36,38],nemd:0,net:[2,3,72,133],netpbm:57,neutral:[106,123,148],never:[61,68,72,77,82,112,135,149,159],neveri:[60,62,63,67,93,148],newer:135,newtion:[98,138,145],newton:[4,13,70,71,95,105,113,136,137,148,154,155,156,157,158,159],newtonian:66,next:[1,2,3,29,35,57,65,66,76,77,81,92,93,98,116,119,132,133,141,142,145,163],nfile:[65,141,142],nfreq:59,ngb:72,ngp:37,nguyen:98,nhc:73,ni2:43,ni3:43,ni_000:40,nialh_jea:112,nice:[2,163],nickla:137,nine:[115,148],nissila:[67,148],nist:[94,112],niter:[19,59],nitrid:106,niu3:112,nkb:74,nlocal:3,nlvalu:38,nmpimd:73,nn2:135,nnn:[36,38],no2:[65,76,116],no_affin:4,no_histori:2,noced:92,nocheck:122,nodal:[2,58,65,81,141,142],node:[1,4,19,40,43,59,67,81,122],node_area:67,node_group:58,nodeless:114,nodes:[19,59],nodeset:58,nodeset_to_elementset:58,noforc:[2,133],nois:[2,66,67,74,81],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,42,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,75,76,77,78,81,82,83,84,85,86,87,88,89,91,92,93,94,95,96,97,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,134,135,136,137,139,140,141,142,143,144,146,147,149,150,151,152,153,154,155,156,157,158,159,160,161,162],nonequilibrium:[79,80,114],nongaussian:37,nonlinear:[21,22],noordhoek:105,nor:[19,58,105],nord:[145,156,158],nordlund:[145,156,158],norm:[2,76,92,93,154],normal:[2,3,4,19,29,30,35,39,44,45,59,61,68,72,73,81,82,83,84,85,86,87,89,92,93,104,105,118,119,138,154,162],norman:81,nose:[2,68,69,71,73,80,110],notat:[2,29,41,68,112,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,49,53,56,57,58,59,60,61,62,64,65,67,68,69,70,73,74,75,76,78,81,82,83,84,85,86,87,89,92,93,94,95,98,99,100,101,102,104,106,107,109,110,111,112,115,118,119,120,121,122,123,125,127,132,133,135,136,137,138,139,141,142,143,145,146,147,148,149,150,154,155,156,158,159,161,162,163],notes:[32,131],noth:163,notic:[0,2,80,81],notifi:62,novemb:135,now:[2,3,4,22,66,83,112,114,119,150,163],np3:43,np4:43,np6:43,nparticl:97,nph:2,nphi:4,nproc:3,npt:[2,4,32,61],nreset:[61,68,69],nreset_ref:61,nrho:[94,112],nrl:112,nstat:72,nstep:[61,68],ntabl:[141,142],ntheta:98,ntype:[41,44,114,121,145],nuclear:[74,114,162],nuclei:114,nucleu:158,nudg:[2,93],num_step:76,numa:1,numactl:4,number:[1,2,3,4,11,19,29,30,31,32,34,35,36,38,39,40,41,43,44,47,56,57,59,60,65,66,67,68,69,70,71,72,73,74,76,77,79,80,81,82,92,93,94,95,98,105,110,112,113,114,115,121,135,136,137,138,141,142,143,145,146,148,149,154,155,156,157,158,159,162],numer:[1,2,3,19,32,38,44,55,57,58,62,63,66,68,73,77,81,82,92,109,135,141,142,162],numpi:3,nvcc:1,nve:[1,2,4,32,35,44,58,63,66,68,69],nvidia:1,nvt:[2,4,32,35,58,63],nvtfe:58,nxnode:81,object:[2,3,57,61,67,92],observ:[4,68,74],obtain:[1,4,13,30,32,38,67,69,73,95,109,135,148,156,158],obviou:162,obvious:57,occ:117,occasion:68,occlus:57,occup:117,occur:[1,2,3,37,55,59,60,61,62,65,79,114,131,141,142],occurr:90,oct:3,octahedr:9,odd:[19,38,59,68,81],ode:76,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,41,42,43,45,46,47,48,49,50,51,52,53,54,56,57,60,66,68,69,77,82,83,84,85,86,88,89,90,91,92,93,94,95,96,99,100,101,102,103,104,105,106,108,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,135,136,140,141,142,143,144,146,147,148,150,154,155,156,157,158,159,160,161,162],offer:[2,106,148],offload:[1,4],offset:[2,44,57,106,123,127],often:[1,2,4,56,57,59,61,62,68,73,92,93,105,110,123,156,158,163],ohio:137,old:[2,61,68,135,150],older:[4,61,68,150],oleinik:98,olfason:[2,9,91,121],ollila:67,olmsted:[58,72],omega0:91,omega:[2,68,82,88,91,109,119,138],omega_dot:68,omega_ij:111,omega_ijk:158,omega_ik:156,omegadd:[141,142],omgea:2,omiss:0,omit:[63,101,109,127],omp:[1,4],omp_num_threads:4,on_the_fli:58,onc:[0,1,2,3,4,19,45,57,59,62,76,93,118,120,145,146],once:[0,2,19,35,59,163],one:[2,13,35,41,57,68,69,81,98,107,133,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,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,76,77,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,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,57,61,62,63,72,92,93,94,95,98,102,105,112,113,115,121,132,133,135,136,137,143,145,149,155,156,157,158,159],onset:[74,90],onto:[41,60,63,67,154],open:[0,3,57,163],opencl:1,opengl:2,openmp:[1,4],openmpi:4,oper:[1,2,3,4,19,35,44,59,60,63,68,69,77,80,81,93,138,163],opl:4,opls:[53,56],oppelstrup:138,oppos:[2,75],opposit:[2,13,29,45,72,93,106,131],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,45,46,47,48,49,50,51,52,53,54,68,69,77,84,85,86,88,89,90,91,94,95,96,99,100,101],optim:0,optimiz:[4,92,105],option:[0,1],optional:149,options:[4,138],orang:57,orbit:[98,106,114,148],order:[2,3,4,11,13,19,32,33,34,36,38,39,41,42,47,56,57,60,61,63,65,67,68,72,74,75,76,77,81,84,85,86,87,89,90,93,94,95,98,105,111,112,114,115,118,119,123,131,135,138,141,142,146,148,155,156,157,158,159],ordinari:[76,121],org:[2,3,72],organ:[0,2,105],organometal:9,orient:[2,13,29,35,36,38,44,68],orientord:36,origin:[2,40,57,63,68,73,80,94,95,96,98,106,109,110,112,121,135,156,158,163],orlikowski:138,orsi:13,orthogon:0,orthograph:57,orthorhomb:74,os4:43,oscil:[2,68,74,82],ose:57,oserror:3,other:[0,1],otherwis:[1,40,45,56,68,76,91,92,122,132,133,145],otyp:[106,123,127,131],our:[2,67,77,156,158],out:[1,2,3,6,19,34,35,37,46,57,59,67,70,81,83,84,85,89,93,114,134],outer2:[102,120],outer:[4,92,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,112,113,114,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],outer_distance_cutoff:121,outermost:[68,72,75,78,82,83],outlin:[2,57],output:[0,1],output_frequ:58,outsid:[44,57,63,83,93,99,100,106,114,123,125,144,147],outut:2,outward:[82,83],over:[1,2,4,11,19,32,33,34,36,37,38,41,42,47,57,59,62,66,68,72,74,75,76,82,83,84,93,104,110,112,113,114,115,121,132,135,138,145,149,150,155,156,157,158,159],overal:[2,9,61,68,73,77,114,121,149],overhead:[2,3,19,59,63],overlai:[2,4,32,81,106,110,121,122,131,149,162],overlap:[4,44,92,110,114,119,131,150],overli:76,overload:1,overrid:[4,44,57,61,68,121,135],overridden:[2,44,57,69,132,150],overshoot:62,overview:[0,1,2],overwrit:[3,135],overwritten:121,own:[2,3,19,30,34,58,59,60,61,62,66,67,68,69,73,93,95,98,105,113,145,155,156,157,158,159,163],oxford:[13,32,109],oxid:[105,106,148],oxygen:[2,106,123,127,148],p10:119,p_e:81,p_ik:145,p_pi:98,pacakg:4,pack:[98,135],packag:0,packet:[57,114],pad:[57,73],page:[0,1,2,3,32,34,37,39,42,44,56,57,62,68,83,92,93,94,95,97,105,106,112,113,115,121,135,136,137,143,145,149,155,156,158,159],painless:163,pair:1,pair_:32,pair_charmm:131,pair_coeff:[2,32,35,45,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:94,pair_interact:58,pair_list:122,pair_lj:131,pair_lj_soft_coul_soft:32,pair_modifi:[2,32,92,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,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,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],pair_sph:[151,152,153],pair_styl:[0,1,2,4,18,28,32,35,41,45,66,82,83,92],pair_writ:129,pairwis:[0,1,2,28,29,36,38,39,41,42,45,56,60,66,82,92,94,97,99,100,101,102,104,106,110,111,112,114,115,119,121,122,123,124,127,132,133,134,135,136,137,139,140,144,147,150,154,158,160,161],pakketeretet2:163,pan:57,panagiotopoulo:[107,117],papaconstantopoulo:94,paper:[2,41,50,67,81,93,95,101,106,119,121,125,127,156,158],paquai:[70,71,163],paraemt:146,paragraph:[82,141,142],parallel:[0,1,2],parallel_studio_xe_2016:4,parallelepip:2,param:116,paramet:0,parameter:[40,43,95,98,105,106,112,113,114,115,135,136,137,145,148,155,156,157,158,159],parameter_fil:58,parameterizaion:106,parametr:[2,18,113,147],paramt:[37,146],paramter:105,paratem:131,parenthes:[65,76,116,119,141,142],parenthesi:4,parinello:2,pariticl:59,park:[58,137],parmin:138,parrinello1981:61,parrinello:[61,68,74],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,45,46,47,48,49,50,51,52,53,54,56,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,79,80,81,82,83,84,85,86,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,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,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,163],partial:[1,2,61,67,69,73,135],partic:2,particip:[55,97],particl:0,particular:[1,2,29,41,44,57,59,60,66,67,68,72,75,77,84,97,98,99,100,102,103,104,108,111,113,114,118,120,123,127,131,134,140,143,144,146,147,155,156,157,158,159,163],particularli:[2,9,57,61,114],partit:[2,19,59,73,93,101,102,114,123,124,127,134,139,145],partner:60,pass:[2,3,33,34,37,57,61,68,82,154],password:163,past:[0,62,74,110],patch:0,patel:138,path:[2,3,73,81,93,94,95,98,112,113,115,135,136,137,143,145,148,149,155,156,158,159],pathtolammp:148,patrick:157,pattern:30,paul:0,pauli:[114,148],paves:73,payn:[41,149],pb2:43,pb4:43,pbc:82,pchain:[68,69],pcie:1,pd2:43,pd4:43,pdamp:[68,69],pdb:2,pdf:[0,151,152,153],pe_eta:68,pe_etap:68,pe_omega:68,pe_strain:68,peak:117,pearlman:32,pencil:2,peng:43,per:[0,1],peratom:42,perceiv:57,percent:[4,61,155],percentag:[1,61,68],perfect:[2,19,29,30,36,59,72,93],perfectli:[19,59],perfom:[2,93],perform:0,performac:1,pergamon:[135,158,162],peri:[2,44],peridynam:2,perimitt:107,period:2,perioid:82,perl:2,perman:[28,75,121],permit:[2,67,138],permitt:[107,158,161,162],permut:[113,155,156,158,159],perpendicular:[2,57,72,82],perram:118,persepct:57,person:163,persp:57,perspect:57,perturb:[29,32,82],peskin:67,pettifor:98,pettifor_1:98,pettifor_2:98,pettifor_3:98,pfactor:57,phase:[4,68,98,123,157],phenomena:114,phi0:[54,75],phi1:46,phi2:[46,113,155],phi3:[46,113,155],phi:[1,4,36,38,41,55,56,57,75,86,94,98,112,115,135,136,137],phi_ij:[98,115,145],phillip:110,phillpot:[105,106,148],philosoph:112,philosophi:2,phonon:[0,58,81],phophor:149,phosphid:149,phy:[2,5,6,9,20,21,22,29,30,32,36,38,39,41,42,45,46,53,61,63,66,67,68,69,70,71,73,74,77,79,80,81,82,84,90,91,93,95,98,99,102,103,104,105,106,107,108,109,110,111,112,113,114,117,118,119,120,121,123,125,127,128,131,132,133,134,135,137,139,141,142,144,145,146,148,149,154,155,156,157,158,159],physic:[2,4,27,55,58,63,67,81,93,95,96,101,104,112,121,138,151,152,153],physica:[132,133],pick:62,picosend:114,pid:62,piec:[3,41,68],pimd:2,pin:4,pipe:[2,57],pipelin:[2,4],pisarev:81,pishevar:110,pitera:2,pixel:57,pizza:[2,3,19,57,59],pka:81,place:[2,3,19,32,44,57,60,63,66,68,81,82,121],placehold:[94,95,105,112,115,135,136,137,143,145,149,154,155,156,157,158,159],placement:123,plai:[2,57],plain:131,plan:[2,4],planar:[2,72,90,91],planck:73,plane:[2,19,36,57,58,59,72,81,84,85,86,87,88,89,91,133],planeforc:92,plasma:[81,114],plateau:62,platform:[1,4,57],plath:[2,35],player:57,pleas:[0,3,4,58,62,67,113,115,148],plimpton:[0,4,29,39,42,60,72,119],ploop:[68,69],plos:13,plot:[3,4,74,129,131],plu:[3,61,69,114],pm3:43,png:57,pni:57,poariz:2,poem:2,poems:2,point:[1,2,3,4,13,19,29,40,41,43,44,49,57,59,61,65,67,68,73,74,81,83,92,93,97,105,107,109,111,114,118,125,138,141,142,145,146,148,154,157,161],pointer:3,poisson:119,poisson_solv:58,polar:[2,38,41,43,58,105,106,123],polar_off:105,polar_on:105,polariz:0,politano:148,polydispers:[104,119,132,133,161],polyethylen:95,polygon:2,polym:[0,2,21,22,28,60,73,77,78,110,154],polynomi:[112,129,148],poor:[19,59,77,129],poorli:92,popular:113,porou:67,portion:[1,3,19,28,35,42,59,61,63,67,68,99,100,101,102,103,106,107,109,110,114,116,117,118,120,121,123,127,131,134,144,146,147,158,163],poschel:119,posit:[2,11,19,22,29,33,34,40,41,42,43,44,47,49,55,57,59,60,61,62,63,66,67,68,70,72,73,74,76,77,79,80,81,82,83,84,93,95,97,110,111,114,117,126,141,142,148,154],possibl:[1,2,3,19,29,32,41,42,58,59,60,64,72,76,81,88,92,121,135,148,159],post:[0,2,35,58,74],pot:119,potentail:115,potenti:0,potentiel:131,potin:138,pour:[2,77],power:[3,4,37,41,98],pparam:32,ppm:57,ppn:4,pppm:[0,1],pproni:66,pr3:43,pr4:43,practic:[61,68,159,163],prb:[156,158],prd:[2,93],pre:[2,75,82,98,119,141,142,148,150],prec:[4,148],preced:[2,45,76,93,98,121],preceed:[3,82],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,44,45,46,47,48,49,50,51,52,53,54,61,63,68,69,77,84,85,86,88,89,90,91,92,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,138,140,143,144,146,147,148,150,155,156,157,158,159,160,161,162],predefin:[54,114],predict:[1,2],prefactor:[8,9,12,16,17,18,56,82,85,89,90,92,104,117,143,146,147,150,161],prefer:[75,95,163],prefix:[3,57,62,76],preliminari:[65,141,142],prematur:92,preprint:[41,70,71,149],prescrib:[2,58],presenc:[67,132,133,138,161],present:[1,4,57,62,66,67,83,105,114,122,131,138,146,148],preserv:[61,68,77],press:[2,4,13,32,42,61,68,69,109,135,158,161],pressur:[1,2],pressure_with_eviri:114,presum:[30,93],prevent:[2,55,90,92,93,110,151,152,154],previou:[0,2,3,59,92,98,119,121,135,141,142],previous:[3,44,62,77,81,82,119],price:[2,109],primari:[0,2,81],prime:[120,138,156,158],primit:[2,83],princip:148,principl:[2,3,114,138,155,163],print:[0,1,2,3,4,19,35,41,57,60,61,67,68,69,70,71,72,74,76,77,92,93,95,110,117,121,148],printfluid:67,prism:2,privileg:3,probab:150,probabl:[55,59,60,68,82,92,141,142],problem:[0,1,2,3,19,35,58,59,61,70,75,80,83,92,93,106,109,121,163],proc:[1,3,4],proce:[19,28,59,93,138],procedur:[2,19,59,68,69,79,80,92,93,95],proceed:138,procesor:19,process:1,processor:[1,2,3,4,19,44,57,58,59,60,61,66,67,68,73,77,81,93,110,148],processsor:[19,59],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,42,45,46,47,48,49,50,51,52,53,54,57,59,60,62,66,68,69,74,76,77,81,82,84,85,86,88,89,90,91,92,93,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,114,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,140,143,144,145,146,147,150,155,156,157,158,159,160,161,162],product:[2,4,41,76,114,116,142],profil:[2,63,93],program:[2,3,4,57,67,112],progress:[1,19,59,74,92,93],project:[2,163],promot:98,prompt:3,proni:66,prop:2,propag:[68,74,114],propens:2,proper:[60,72,135,163],properli:[93,111],properti:0,proport:[2,19,32,59,62,74,76,119],propos:[2,41,61,68,123,137,157],protein:[4,44,78],proton:[158,162],prove:[31,64,67],provid:[1,2,3,4,13,29,35,40,43,44,57,60,61,67,68,74,79,80,93,95,98,105,106,110,113,114,119,121,122,131,132,135,137,138,145,148,149,154,155,156,157,158,159,163],pscrozi:0,psec:68,pseudo:114,pseudopotenti:138,psf:2,psi:[115,161],psi_ij:115,pstart:[68,69],pstop:[68,69],pstyle:32,psxevar:4,pt2:43,pt4:43,ptarget:61,pthread:4,ptr:[2,3],pu3:43,pu4:43,pu6:43,publish:[67,106,135,138,156,158],pull:163,puls:81,pump:[132,133],purchas:57,pure:[3,136,137,156,158],purport:3,purpos:[2,40,43,44,60,61,72,73,75,101,127,138],push:[72,92,119,150,163],put:[2,3,44],pvar:62,pxx:[61,68],pxy:2,pxz:2,pydir:3,pyi:[61,68],pymol:3,pymol_aspher:0,pympi:3,pypar:3,python:[0,2],pythonpath:3,pyz:2,pzz:[61,68,74],q_1:148,q_2:148,q_3:148,q_i:[115,131],q_j:131,qdist:[106,123,127,131],qeq:[2,105,106,148],qeqall:148,qeqallparallel:148,qfile:106,qinitmod:148,qoffload:4,qopenmp:4,qoverrid:4,qtb:74,quadrant:4,quadratur:[32,58],quadrupl:94,quadruplet:[56,84,85,86,87,89,90],qualiti:[57,95],quantic:148,quantit:[37,119],quantiti:1,quantum:[2,41,73,74,95,98,114,138,148],quantum_temperatur:74,quartic_spher:58,quartz:74,quasi:73,quaternion:[2,44,118],queri:[3,28],quest:2,question:[70,72,163],quick:[0,4],quickli:[36,59,92,93,95],quickmin:[92,93],quicktim:57,quit:[67,149],quot:135,quotat:148,r10:98,r12:118,r_1:41,r_2:41,r_c:[107,109,117,158],r_cut:[98,134],r_e:115,r_fu:[132,133],r_i:[13,41],r_ii:41,r_ij:[13,98,114,145,162],r_ik:145,r_j:13,r_jik:145,r_m:134,r_me:107,r_mh:117,r_min:108,r_ub:5,ra2:43,rad2theta:43,radial:[41,92,114,121,141,142],radian:[5,6,8,12,16,17,18,43,46,54,75,84,85,89,90],radiat:[40,43,81],radii:[41,60,104,112,118,119,132,133,138,161],radit:114,radiu:[2,33,34,40,41,57,67,78,82,83,98,104,114,115,119,123,131,132,133,134,135,148,149,158,161],rahman:[2,61,68,74],rai:43,ram:158,raman:4,ramp:[2,66,68,70,74,82,102,110,120,131,132,134,150,162],ran:[2,3],random:[2,44,57,60,66,67,68,73,74,81,110,111],randomli:44,rang:[1,2,4,38,39,41,42,43,50,57,58,62,92,95,96,98,99,100,101,102,103,104,106,107,108,109,110,112,114,116,118,120,121,123,124,125,126,127,128,129,130,131,132,133,134,135,138,139,140,144,145,146,147,148,154,158,160,161,162],rank:[2,3],rankin:69,rapid:[2,3],rapidli:[60,68,106,110],rare:2,rasmol:2,rasmussen:118,raster3d:2,rate:[2,4,58,74,76,79,80,116,132,133,142],rather:[2,19,39,57,59,66,81,114,141,142],ratio:[2,32,41,59,118,119,146,151],rattl:63,rattle:[63,70,71,77],rattle_debug:77,ravelo:[69,125],raw:4,rayleigh:74,rb1:43,rbb:148,rcb:[19,59],rcm:[33,34],rcmx:[33,34],rcmy:[33,34],rcold:63,rcutfac:[41,149],rd1:93,rdn:93,rdt:93,reach:[2,19,59,61,62,69,76,107],reacquaint:163,react:2,reactant:[76,114],reaction:[65,76,78,93,114,116,142],reactiv:95,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,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,60,61,65,68,69,73,76,77,80,81,84,85,86,87,88,89,90,91,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,111,112,113,114,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],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,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,73,75,76,84,85,86,87,88,89,90,91,93,96,97,99,100,101,102,103,104,106,107,109,110,111,114,117,118,120,121,123,124,125,126,127,128,129,130,131,132,133,134,139,140,144,145,146,147,148,150,154,160,161],read_dump:93,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,44,45,46,47,48,49,50,51,52,53,54,56,58,61,67,68,69,73,81,84,85,86,87,88,89,90,91,93,96,97,99,100,101,102,103,104,106,107,109,110,111,114,117,118,119,120,123,124,125,126,127,128,129,130,131,132,133,134,139,140,144,146,147,150,154,160,161],readabl:57,readi:3,readme:[1,2,3,4,138],real:[2,3,11,14,15,35,36,38,41,44,47,73,74,82,88,106,138,158],realli:[1,39,42,163],reamin:[82,83],rearrang:93,reason:[2,3,44,55,79,80,93,107,114,115,117,133],reax:[0,74],rebal:[19,59],rebalanc:[19,59],rebuild:[3,4,110],rebuilt:57,recalcul:32,receiv:72,recent:[3,4,59,62,135],reciproc:[2,40,43,99,100,101,106,109,114,123,127,144,147],recogn:[30,68,76,112,135],recomend:2,recommed:76,recommend:[4,57,63,74,80,114,132,133,138,146,148,163],recompil:[1,77],reconstruct:148,recov:[61,63,68],rectangl:[19,59],rectangular:[19,59],rectilinear:[40,43],rector:27,recurs:[19,59,98],recust:19,red:[57,60,73],reduc:[1,2,11,19,39,40,42,43,57,59,60,72,75,76,92,114,118,145,146,155,156,158],reduct:[40,43,74],redund:115,reed:74,ref:[79,80],refactor:2,refer:[2,3,4,13,32,44,58,60,61,62,63,68,69,72,73,74,77,84,91,94,118,135,137,138,146,152,153,156,158],referenc:[2,62,106,121,143,146],reflect:[2,40,41,43,56,57,62,82,98],refresh:58,regard:[2,77],regardless:[44,68],regim:[2,107],region:[0,2,19,35,43,44,50,57,58,59,63,68,70,81,82],region_styl:83,regoin:2,regspher:44,regul:2,regular:[1,19,57,59,81,107],reinder:4,reinhardt:[79,80],reject:[44,60],rel:[1,2,11,18,19,36,41,44,47,59,63,72,76,81,92,114,118,119,132,133,135,146,161],relat:[1,2],relationship:[2,148,161],relax:2,releas:0,relev:[2,19,44,58,59,62,63,66,67,70,71,77,78,81,82,92,96,104,106,107,109,110,114,117,118,119,120,121,122,124,125,126,128,129,130,132,133,140,141,142,146,150,154,160,161,162],reli:[114,162],reltol:76,remain:[19,32,55,56,61,68,81,98,114,131,138,163],remaina:98,remaind:[44,158],remap:[2,44],remedi:2,rememb:163,remot:163,remov:[2,28,36,38,41,44,68,76,77,93,109,133,138,163],remove_molecul:58,remove_sourc:58,remove_speci:58,ren:43,renam:163,render:57,rendon:68,reneighbor:[59,110],repeat:[2,57,60,61,76,98,156,158],replac:[2,3,19,33,34,57,59,60,69,95,106,119,125,141,142],replica:0,repons:62,report:[0,1,4,40,43,61,74,75,76,81,93,109,114,135],repositori:163,reprens:81,repres:[1,2,19,29,34,50,57,61,62,65,66,67,68,73,76,81,83,93,94,98,118,131,132,133,135,136,137,144,145],represent:[2,66,73,81,98,114,118,138,146],reproduc:[4,68,106,112,119],repul:135,repuls:[2,18,21,22,82,83,95,98,104,106,110,114,116,119,121,131,135,139,148,154,158,159,161,162],request:[2,19,67,163],requir:[1,2,3,4,18,19,28,31,32,40,42,43,44,45,55,57,58,59,60,64,65,66,67,68,76,77,81,82,84,92,93,94,95,97,98,102,104,105,106,110,111,112,113,114,115,118,119,121,129,131,132,133,135,136,137,138,140,141,142,143,145,146,147,148,149,154,155,156,157,158,159,161,162],rerun:[36,38,41,57],rescal:[2,63,68,69,79,80],research:[31,64,67,138],resembl:163,resepct:2,reservoir:[35,63,81],reset:[2,3,33,34,44,61,68,69,77,81,92,133],reset_atomic_reference_posit:58,reset_tim:58,reset_timestep:[2,35],resist:2,resolut:148,resolv:[61,73,133,163],resourc:[94,112],respa:[4,68,72,75,78,82,83,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,112,113,114,117,118,119,120,121,122,123,124,125,126,127,128,129,130,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],respecifi:138,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,40,43,45,46,47,48,49,50,51,52,53,54,57,60,61,63,67,68,69,70,77,81,82,84,85,86,88,89,90,91,92,94,95,96,98,99,100,101,102,103,104,105,106,109,110,112,113,115,116,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,135,136,138,140,143,144,146,147,148,149,150,155,156,157,158,159,160,161,162],respond:[2,62,114],respons:[2,62],resquar:[2,118],rest:[2,75,98,133,135],restart1:73,restart2:73,restart2data:0,restart:[0,1],restrain:13,restraint:[75,122],restratin:75,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,40,42,43,44,45,46,47,48,49,50,51,52,53,54,57,59,60,61,62,63,66,67,68,69,73,76,77,79,80,81,82,84,85,86,88,89,90,91,93,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,114,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,135,136,138,140,141,142,143,144,146,147,150,155,156,157,158,159,160,161,162],retain:[95,98,138],retriev:[2,136,137],rev:[2,29,36,38,41,42,68,69,79,80,98,104,105,106,109,112,113,114,118,119,125,132,133,134,135,137,141,142,145,146,149,155,156,157,158,159],revers:[2,32,49,60,68,72,79,93,131],review:[41,138,149,163],rfac0:[41,149],rg0:78,rh3:43,rh4:43,rheolog:2,rhi:[141,142],rho0:[135,152,153],rho0_meam:135,rho:[67,94,99,100,101,112,134,135,136,137,141,142,146,151],rho_0:[152,153],rho_alpha_beta:112,rho_bkgd:135,rho_colloid:82,rho_e:81,rho_i:[136,137],rho_ref_meam:135,rho_wal:82,rhodopsin:[1,4],rhosum:[151,152,153],rhot:63,rhs:76,rick:[105,148],right:[2,3,19,29,44,54,56,59,60,67,72,76,106,163],rightmost:[19,59],rii:[33,34],rij:[36,38,72,110,111,141,142,154],rin:[121,128,129],ring:[2,45,73],rino:[30,159],rirj:119,risi:[41,149],risk:75,rix:[33,34],rk4:76,rkf45:76,rlo:[141,142],rmin0:[41,149],rmin:125,rms:76,rnemd:2,robust:92,rock:135,rockett:145,role:2,ronchetti:38,root:[3,32,33,34,112],rose:135,ross:135,rosski:73,rot:[2,35,73,75],rotat:[2,41,44,83,92,109,118,146],rotation:38,rough:[2,44,57],roughli:[19,57,68,93],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,45,46,47,48,49,50,51,52,53,54,68,69,77,84,85,86,88,89,90,91,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,140,141,142,143,144,146,147,150,155,156,157,158,159,160,161,162],rous:66,rout:[32,121,131],routin:[2,3,4,67,138],roux:2,row:[2,34,43,81,114],rozero:135,rrespa:[1,4,68,94,95,96,97,99,100,101,102,103,104,105,106,107,109,110,112,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,132,133,134,135,136,137,139,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:81,ru3:43,ru4:43,rub:5,rubia:[136,137],rule:[0,2,13,29,44,60,68,83,94,96,97,103,104,109,121,126,135,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,92,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,112,113,114,117,118,119,120,121,122,123,124,125,126,127,128,129,130,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],rung:76,runtim:57,rutherford:81,rutuparna:[156,158],rxn:76,ryckaert:[77,90],rydberg:138,s0st:2,s2050:1,s2629:112,s319:58,s_i:[2,114],s_ij:2,saddl:93,sadigh:[112,136,137],saed_vtk:40,safe:[57,163],safran:161,sagui:109,sai:[1,163],said:92,sakai:157,sall:148,salt:[107,117,135],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,41,42,44,45,46,47,48,49,50,51,52,53,54,57,58,59,60,61,62,63,66,67,68,69,72,73,74,75,77,79,80,81,83,84,85,86,88,89,90,91,93,94,95,96,98,99,100,101,102,103,104,105,106,107,108,109,110,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,135,136,139,140,143,144,145,146,147,148,150,154,155,156,157,158,159,160,161,162,163],sampl:[1,2,3,35,57,68,71,73,78,80,98],sample_frequ:58,sandia:[0,29,115,135],saniti:75,satellit:2,satisfi:[30,40,41,43,61,63,67,69,70,77,92,119],satur:107,save:[2,57,60,66,76,81,98],sb3:43,sb5:43,sc3:43,scalabl:[0,1,4],scale:[0,1,2,4,35,41,45,57,58,61,67,68,69,73,74,79,80,81,94,95,107,114,116,119,132,133,135,138],scalegamma:67,scalexi:[61,68,69],scalexz:[61,68,69],scaleyz:[61,68,69],scatter:[3,40,43],scatter_atom:3,scatter_coord:3,scenario:[2,60,83],schaik:131,schell:157,schemat:60,scheme:[2,62,66,68,73,77,81],schmid:110,schroding:114,schroeder:38,sci:[30,105,137,145,148],scienc:[58,60,72,79,112,136,148,157],scientif:[41,112],scm:3,scratch:[19,59],screen:[0,1,2,3,4,40,43,57,67,77,93,102,106,123,135,155,158,159,160,161,162],screenshot:3,scripe:3,script:[0,1],sea:3,search:[0,36,38,92,93,119],secant:65,second:[1,2,3,4,28,29,35,37,38,39,42,43,55,60,62,63,65,66,73,75,77,78,79,80,81,92,93,97,98,99,100,101,105,106,112,114,115,116,119,120,122,125,135,143,148,155,157,158,159,162],second_mo:148,secondari:50,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,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,76,77,79,80,81,84,85,86,87,88,89,90,91,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],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,45,46,47,48,49,50,51,52,53,54,68,69,77,84,85,86,88,89,90,91,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,136,140,143,144,146,147,150,155,156,157,158,159,160,161,162],section_accerl:112,section_command:[0,1],section_exampl:2,section_howto:[2,3,29,30,32,33,34,36,38,41,42,97,108],section_modifi:[2,57],section_python:2,section_start:[2,3,93],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,76,77,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:[44,57,60,66,67,73,74,81,110,111],seek:[19,59],seem:[2,61,135],seen:[4,67,83],segment:[2,57,110,154],select:[2,40,43,44,57,82,93,121,122,135,148],self:[2,74,75,76,78,80,92,105,106,138,145,148],semi:58,semimet:114,semin:4,send:[0,3],sens:[1,2,19,56,59,60,66,74,81,93,106,123,127,156,157,158],sensit:[2,30,61],sep:[2,3],separ:[2,4,19,41,44,55,57,58,59,60,61,68,73,77,99,100,106,107,109,111,123,132,133,135,141,142,143,149,155,158,161],seper:107,sequenc:[19,57,59,93,145],sequenti:145,seri:[2,4,41,57,66,95,118,135,138,141,142,146,150],serial:1,serv:[2,154],server:1,set:[0,1],set_vari:[2,3],setarea:67,sete:60,setenv:3,setfl:[94,112],setforc:[2,92,93],setgamma:67,setpoint:62,settl:61,setup:[2,3,4,32,35,56,58,60],seven:137,sever:[1,2,3,4,32,56,58,61,67,68,92,98,101,112,127,131,135,145,148],sexton:138,sfactor:57,shade:57,shake:[2,13,39,42,63],shan:105,shape:[2,19,44,57,59,61,68,74,83,97,118,146],shardlow:[64,76,111],share:[0,1,2],sharp:[83,135,158],shear:[2,61,67,68,119,132,133],shell:0,shenderova:95,shift:[1,2],shiga:[2,68],shini:57,shinoda:[2,68,147],shiny:57,shlib:3,shm:4,shock:[69,74,125],shockvel:74,shortcut:[61,68],shorter:72,shortest:57,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,42,44,45,46,47,48,49,50,51,52,53,54,57,59,60,61,62,66,67,68,69,72,73,74,75,76,77,81,82,83,84,85,86,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,104,105,106,108,109,110,112,113,114,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,135,136,138,140,141,142,143,144,146,147,148,150,154,155,156,157,158,159,160,161,162,163],show:[2,3,93,121,135,138],shown:[1,4,19,40,41,43,56,59,60,61,63,68,72,73,114,115,118,119,131,138,146,148],shrink:[2,19,57,59,67,72,92,106,123,127],shrink_spher:70,shrunk:76,shut:[2,3],si4:43,sic:[106,135,143,155,156,158,159],sic_tersoff:145,sicc:[113,155,156,158,159],sicg:[156,158],sicsi:[113,155,156,158,159],side:[19,44,59,60,67,72,76,82,83,93,106,118,119,146],sige:[156,158],sigma0:98,sigma14:131,sigma1:98,sigma2:98,sigma:[2,21,22,28,32,45,67,72,82,83,95,97,98,99,102,103,104,109,110,111,113,114,118,120,121,122,123,124,125,126,127,128,129,130,131,134,139,146,147,155],sigma_14:102,sigma_:107,sigma_c:104,sigma_cc:[95,104],sigma_h:117,sigma_i:115,sigma_ss:104,sign:[2,49,56,62,138,163],signifi:[34,116,142],signific:[66,76,114,118,135,138],significantli:[1,2,42,67,68,75,114,155],silbert:119,silicon:[113,135,155],sim:147,similar:[2,3,4,19,22,32,39,42,44,59,66,74,75,82,95,97,98,110,112,114,119,131,132,140,145],similarli:[2,39,57,62,68,77,83,84,93,95,101,119,127,155],simluat:[2,132],simlul:81,simpl:[1,2,3,4],simpler:3,simplest:34,simpli:[1,2,3,34,61,68,73,93,101,109,127,135],simplif:114,simplifi:[75,138],simplist:3,simul:[0,1],simulatan:4,simulationub:148,simultan:[2,4],sin:[55,82,145],sinc:[0,1,2,3,6,19,28,29,30,33,34,40,45,57,59,60,61,67,68,69,72,73,76,81,82,83,84,92,93,94,95,98,100,101,102,103,104,105,109,110,112,113,118,119,120,122,123,125,126,127,128,129,130,131,132,133,134,135,136,137,138,141,142,144,145,146,147,148,149,150,155,156,157,158,159,162,163],sinclair:[72,112],sine:145,singapor:41,singh:94,singl:[1,2,3,4,19,32,34,44,55,57,59,60,61,67,68,69,70,71,73,75,77,81,82,93,94,95,98,102,105,112,113,114,115,119,120,121,135,136,137,138,143,144,145,146,148,149,150,155,156,157,158,159],singleel:98,singular:[55,131,132,133,140],sinnott:[95,105],sinusoid:[44,82],sio2:159,sio:105,sirk:[42,154],sisic:[113,155,156,158,159],sisisi:[113,155,156,157,158,159],site:[0,1,2,3,29,32,63,67,77,94,98,106,112,116,117,123,127,131,140,142,144],situat:[61,62,67,68,73,98],sival:43,six:[2,41,143,145],sixth:143,sixthpow:103,size:[0,1],sjplimp:[0,3],skew:[2,57,68],skin:[30,81],skip:[4,45,122],slab:2,slater:[106,148],sleight:28,slepoi:135,slice:[2,40,73],slider:3,slight:[63,81],slightli:[1,2,4,57,68,95,106,123,127,156,158,159],sligthli:109,sliozberg:154,sllod:[2,4],slope:[2,80,107],slot:1,slow:[2,66,68,70,93,148],slower:[1,98],slowest:81,slowli:[59,92,138,150],sm3:43,small:[2,19,29,32,40,42,43,59,60,63,66,68,72,74,76,77,90,92,93,95,104,106,107,108,123,132,133,135,146,149,155,158,163],smaller:[1,2,4,57,67,76,80],smallest:29,smd:78,smith:144,smooth:[2,83,98,102,106,120,125,128],smoother:44,smoothli:[28,41,102,120,129,131,134,158,162],smt:4,smtb:148,smulat:138,sn2:43,sn4:43,snap:[41,57],snapcoeff:149,snapparam:149,snapshot:[0,1],snc4:4,soc:121,sodani:4,soderlind:138,soft:[3,32,92,110,116],softer:[82,83],softwar:[1,2,3,4],sole:[93,145],solid:[2,19,29,30,35,42,58,59,61,68,72,80,99,125,138],solut:[2,61,76,77,83],solv:[63,67,76,77,80,81,133],solvat:44,solvent:[59,66,68,102,104,106,107,117,123,132,133,146],solver:[0,1,2,19,42,58,59,65,76,106,108,116,123,131,142],some:[1,2,3,4,19,37,44,49,56,57,59,60,61,62,68,76,81,82,92,93,97,98,106,112,114,138,163],someon:92,someth:[3,61,68,82,163],sometim:[2,61,68],somewhat:[29,68],somewher:114,soon:60,sort:[4,93],sound:[67,152,153],soundspe:[152,153],sourc:[0,3,4,58,61,81,131],source_integr:58,sourceforg:3,south:41,space:[2,3,4,19,40,41,43,44,57,59,67,68,73,82,93,99,100,101,106,109,112,114,123,127,135,138,141,142,144,145,147,161],spahn:119,span:[63,94,95,98,105,112,115,135,136,137,143,145,149,155,156,157,158,159],spars:76,spatial:[2,19,29,34,58,59,81],spc:0,spce:63,spearot:[40,43],speci:[41,65,76,112,115,116,142,145,156,158],special:[2,44,45,58,70,77,94,105,108],special_bond:[2,4,21,22,28,36,38,41,45,56,60,108,121],species1:[65,142],species2:[65,142],species:76,speciesn:65,specif:[1,2,4,13,19,44,57,58,59,60,66,67,81,82,92,93,95,97,98,108,112,118,119,135,138,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,42,43,44,45,46,47,48,49,50,51,52,53,54,56,57,58,59,60,61,62,63,65,66,67,68,69,72,74,75,76,77,78,80,81,82,83,84,85,86,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,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:[41,74],speed:[1,2,4,19,59,67,74,93,98,106,138,152,153,156],speedup:[1,4],spefici:[44,57,121],spellmey:[2,45],spent:1,sphere1:67,sphere:[2,40,41,44,57,67,68,70,83,104,109,114,118,119,123,132,133,146,161],spheric:0,spheriod:2,spheroid:[2,68],spin:114,spline:[65,92,95,98,121,135],split:[1,2,3,4,19,59,63,68,111],splittol:2,spparks:2,spread:[1,2],spring:[2,10,11,21,22,24,25,27,47,55,60,73],sqrt:[33,38,72,104,110,112,117,119,135],squar:[2,8],squares:[19,59],squeez:[61,132,133],sr2:43,src:[0,1,2,3,4,77,138,163],srolovitz:112,srp:110,srtio:148,ssao:57,stabil:[2,68,98],stabl:[2,55,67,69,75,98],stabli:66,stack:29,stage:[32,93],stagger:1,stai:74,stall:4,stand:[0,2],standard:[0,1,2,3,4,38,44,50,58,67,73,77,82,94,95,97,106,109,114,117,118,123,124,125,126,127,130,134,135,138,139,146,155],starikov:81,start:[0,2,4,19,39,44],start_6:117,stat:[28,61,72,92],state:[2,3,29,30,32,50,57,60,61,64,65,66,68,69,74,79,80,81,93,98,109,111,114,118,119,135,137,138,146,148,151,152,153],statement:163,stationari:[67,132,133],statist:[2,19,60,66,74,76,77,81,92,93,95,110,119,132,161],statu:[28,105],steadi:[2,69,74],stefan:163,stegailov:81,steinhardt:38,stencil:67,step:[1,2,3,4,35,42,57,58,59,60,61,63,70,71,72,74,76,77,79,80,81,92,93,95,110,117,121,135,138,148],stepwis:32,steve:0,steven:60,stiff:[2,26,73,76,92],stile:107,still:[1,2,3,4,19,36,59,81,103,112,118,119,122,132,146,150,163],stilling:[113,137,145,155,159],stochast:111,stoddard:109,stoichiometr:76,stoichiometri:148,stoke:67,stone:109,stop:[2,3,19,28],stopthresh:[19,59],store:[2,3,33,35,36,39,42,44,56,57,58,62,66,67,68,69,70,71,72,73,76,77,78,80,81,94,95,98,105,110,111,112,113,114,115,116,118,119,135,136,137,138,141,142,145,148,149,155,156,157,158,159],straatsma:2,straightforward:114,strain:[2,61,68,69,132,133],strang:57,strategi:0,stratford:67,stream:[2,39,42,57,58,66],streiz:106,strength:[41,57,75,82,83,146],stress:[2,35,39],stretch:28,strict:149,strictli:[2,19,59,74],strietz:106,string:[2,3,19,59,76,135,145,149],strong:95,stronger:2,strongest:[132,133],strongli:[1,2,77,81,138],structur:[0,2,3,29,30,38,40,43,50,75,91,98,105,114,135,138,145,148],strucur:30,stuart:[95,105,148],stuck:61,studi:[2,37,70,125,148],studio:4,stukowski:112,style:0,style_nam:68,stylecomput:148,sub:[1,2,3,19,32,35,41,56,57,59,61,68,69,74,77,81,83,95,97,105,118,119,121,146,148,162],subbox:57,subdivis:67,subdomain:67,subequ:3,subject:[2,4,19,59],submit:[0,56,115],subscript:[3,62,81,84,115,159],subsequ:[2,3,19,59,61,81,112],subset:[2,3,4,19,41,59,68,69,93,95,98],substanti:[2,62,155],substep:68,substitut:[1,93,114],substract:106,substrat:[61,68],substyl:131,subsystem:81,subtract:[2,28,35,37,39,42,63,66,130],success:[2,3,61,62,92,93],successfulli:3,successulli:3,sudden:18,suddenli:83,sudo:3,suffer:[71,83],suffici:[2,19,59,62,68,82,122],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,45,46,47,48,49,50,51,52,53,54,57,68,69,76,77,84,85,86,88,89,90,91,93,94,95,96,98,99,100,101,102,103,104,105,106,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,135,136,137,140,143,144,145,146,147,150,155,156,157,158,159,160,161,162],suggest:[0,2,74],suit:[67,114],suitabl:[28,32,60,98,119,131,135],sum:[2,29,33,34,36,37,38,39,41,42,66,72,74,80,81,82,83,92,97,106,110,114,115,123,126,135,149],summar:[2,115,148],summari:1,summat:[2,29,38,101,106,112,113,123,127,138,148,155,156,157,158,159],sun:[6,20,46,84,103],sup:[74,105,148],superset:35,supinski:138,supplementari:[118,146],suppli:81,support:[1,2,3,4,19,32,57,59,60,61,67,68,69,70,71,72,74,75,78,80,82,83,92,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,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,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],suppos:[115,163],suppress:2,sure:[2,3,61,77,112,163],surfac:[2,29,40,41,44,57,67,70,71,72,75,81,82,83,93,98,132,133,138,148,161],surface_mov:81,surfact:[107,117],surpris:114,surround:[29,44,61,65,68,72,141,142],suspens:[132,133],sustain:[61,119],suzuki:68,svg:2,svn:3,swap:2,swiggl:82,swiler:[41,149],switch7_section_start:117,switchflag:[41,149],swol:27,swope:2,symbol:[2,40,43,98,114,149],symmetr:[2,29,32,39,42,61,68,94,109,112,156,158],symmetri:[2,29,36,38,72,84,94],symplect:68,sync:2,synchron:[1,93],syntax:[1,2,3],sysstem:98,syst:148,system:[0,1],system_:73,systemat:[2,138],t_e:81,t_e_min:81,t_equil:[79,80],t_infil:81,t_init:[74,81],t_j:13,t_lb:67,t_oufil:81,t_out:81,t_outfil:81,t_qm:74,t_switch:[79,80],ta06a:149,ta4:138,ta5:43,ta6:138,tabbernor:40,table:65,tabul:[65,76,94,98,99,100,101,102,103,106,112,114,116,123,127,134,141,142,144,145,147,156],tabular:145,tad:2,tag:[58,65,76,116,142],tail:[32,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,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,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,42,45,46,47,48,49,50,51,52,53,54,57,59,61,63,68,69,76,77,78,84,85,86,88,89,90,91,94,95,96,98,99,100,101,102,103,104,105,106,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,138,140,143,144,146,147,148,150,154,155,156,157,158,159,160,161,162],taken:[2,44,60,66,67,74,76,81,88,112,114,118,141,142,155,159],talk:2,talli:[2,19,59,95,114,117,121],tang:138,tangenti:[2,119],tanh:81,tantalum:[138,149],taper:134,tarbal:[0,3],target:[2,3,19,59,61,62,63,66,68,69,73,74,78,81,110],task:[1,2,4,28,73],taskset:4,tau:[62,67,68,79,80,81],tau_1:66,tau_k:66,tau_n_k:66,tb3:43,tbp:98,tchain:[68,69,70,71],tcontrol:62,tcsh:3,tdamp:[68,69,71],technic:[2,67],techniqu:[2,32,61,74],technolog:4,tell:[2,3,56],temeperatur:3,temp:[2,32,35,39,42,60,61,63,68,69,71,73,74,81,95,109,117,118,121,146],temper:[2,93],temperar:73,temperatur:0,temperature_definit:58,templat:[44,77],templeton2010:58,templeton2011:58,templeton:58,tempor:66,temporarili:75,tend:[13,68,72,76],tensor:[2,33,34,35,39,41,42,61,67,68,69,114,132,133,138],term:[0,1,2,5,6,11,21,22,32,33,35,39,42,46,47,55,62,63,66,67,68,69,73,74,75,78,81,84,91,92,94,95,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,118,119,120,123,127,130,131,132,133,135,136,137,138,140,144,146,148,154,155,156,157,158,159,161],termin:[40,68,92,93],tersoff:[4,42,106,113,145],tersoff_1:[156,157,158],tersoff_2:[156,157,158],tersoff_mod:157,tertiari:50,test:[0,2],tether:[2,80,117],tetot:148,texas_holdem:75,text:[2,19,57,58,59,65,81,93,112,115,122,135,141,142,149,163],tfix:75,tflag:57,th4:43,thakkar:4,thakker:4,than:[1,2,3,4,11,19,36,37,38,39,42,47,59,60,61,66,67,72,74,75,76,78,81,82,83,92,93,95,97,98,99,100,101,102,112,114,118,119,132,133,135,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,41,44,45,46,47,48,49,50,51,52,53,54,56,57,59,60,61,62,66,67,68,69,75,77,81,83,84,85,86,87,88,89,90,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,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,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,46,57,59,60,61,62,68,69,72,75,77,81,84,93,94,98,112,115,118,146,150,163],themselv:[2,3,59,93,94,98,106,112,131,135,136,137,149],theorem:[66,98,111],theoret:[37,74,155],theori:[2,41,58,68,98,138,161],therebi:[132,133],therefor:[2,32,63,67,77,108,155],therein:[2,135],thereof:32,thermal:0,thermo:[0,1],thermo_modifi:[2,61,68,154],thermo_press:[39,61,68,69],thermo_styl:[2,31,35,39,42,44,60,61,68,69,74,82,92,95,117,121],thermo_temp:[39,60,61,68,69],thermoberendsen:2,thermochemistri:114,thermodyanm:60,thermodynam:0,thermost:2,thermostat:0,thermostatequ:2,thesi:132,thess:99,theta0:[5,6,8,10,11,12,16,17,18,41,47,75,90],theta0max:41,theta10:98,theta1:[46,55,84,98],theta2:[46,55,84,98],theta3:[84,98],theta4:98,theta5:98,theta6:98,theta7:98,theta8:98,theta9:98,theta:[2,10,11,36,38,41,43,44,47,57,75,81,84,90,121,145,157],theta_0:143,theta_:[90,98],theta_c:121,theta_ijk:98,theta_ijl:84,theta_jik:[136,137],theta_pi:98,theta_sigma:98,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,133,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:[40,57],thin:57,thing:[2,3,28,61,68,163],think:[2,3,62,85,89,92],third:[2,13,29,35,41,42,62,66,78,81,105,115,116,135,143,159],thirumalai:50,tho:113,thole:2,thompson:[0,39,41,42,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,41,42,44,45,46,47,48,49,50,51,52,53,54,57,61,63,68,69,77,79,80,84,85,86,88,89,90,91,92,93,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,135,136,140,143,144,146,147,149,150,155,156,157,158,159,160,161,162,163],though:[2,44,61,62,93,110,112,114,115,118,119,131,132,159],thought:[82,119,122],thread:[1,4],three:[1,2,28,29,32,35,36,37,40,41,43,44,50,60,61,62,63,68,69,76,79,81,87,88,90,94,95,98,112,113,115,118,119,122,135,136,137,138,143,145,146,148,149,155,156,157,158,159],threebodi:155,thresh:[19,57,59],threshhold:[19,57,59],threshold:[19,59,72],through:[2,3,44,61,65,67,68,73,76,81,82,83,95,111,113,114,116,119,123,138,142,147,148,150,154],throughout:[2,4,40,138],thru:[2,3,33,34,37,92],thrust:1,thu:[1,2,3,19,29,30,34,35,36,38,41,42,44,45,56,57,59,60,61,63,66,68,69,72,77,78,81,82,83,84,92,93,94,95,97,98,99,100,101,102,103,104,105,106,110,111,112,113,114,115,116,117,118,119,123,127,131,132,133,135,136,137,138,140,141,142,144,145,146,148,149,151,152,153,154,155,156,157,158,159,162],thumb:[44,104],ti2:43,ti3:43,ti4:43,tidi:163,tight:[98,148],tij:109,tildeslei:[13,32,109],tile:[2,19,44,59],tilt:[2,61,68,72,74,159],time:[0,1],time_integr:58,timer:1,timescal:[74,114],timespan:68,timestep:[1,2,3,19,35,42,57,59,60,61,62,63,66,67,68,69,70,72,75,76,77,79,80,81,82,92,93,98,110,114,121,132,133,150],timesteppnig:77,tin:[105,106],tini:[44,92,98],tio2:148,tio:148,tip3p:0,tip4:2,tip4p:0,tip:0,tirrel:82,titl:163,tji:109,tl1:43,tl3:43,tlbr_msw:145,tloop:[68,69],tm3:43,tmp:[2,19,34,57,59],tobia:68,togeth:[2,3,4,19,42,44,59,61,68,117],tol:[70,71,77,155],toler:[61,70,71,76,77,92,93,155],tolernac:76,too:[1,2,19,29,30,36,38,41,57,59,61,63,68,77,81,93,110],took:150,tool:[0,1,2,3,19,57,59,93],toolkit:2,top:[0,3,4,67,93,149,163],topolog:[2,32,56],torqu:[2,13,67,92,97,109,118,119,133],torsion:[2,46,56,95],torsion_flag:95,tosi:99,tot:148,total:[2,3,4,19,31,33,34,35,37,41,42,59,66,67,68,69,70,73,74,75,76,79,80,81,82,83,92,93,94,95,97,98,105,112,114,119,135,136,137,138,145,148,149],toukmaji:109,toward:[13,57,67,69,72,90,93],toxvaerd:128,tptask:4,trace:114,track:[67,81],track_displac:58,tractabl:76,trade:[2,106,123,127],tradit:[2,55],trail:[32,93,115,135,149],trajectori:[2,32,68,73,77,110],tran:[49,50],transfer:[1,2,4,58,81,98,138],transform:[2,32,118,140],transit:[2,4,93,107,131,137,138,158],translat:[2,63,68,73,114],transmit:2,transport:[58,81],trap:[2,35],treat:[2,42,81,83,92,97,108,114,115,118,121,136,137,138,146],treatment:108,tree:131,tri:[2,3,57,61,68,69,92],triangl:[2,57],triangul:2,triangular:[2,61],triclin:[0,1],triflag:2,trigger:[3,59,60,92],trigon:9,trilinear:67,tringl:57,tripl:[41,98],triplet:[113,143,145,155,156,157,158,159],trivial:3,trott:[41,149],troubl:3,truncat:[2,63,76,82,83,96,106,114,119,123,125,128,148],tscale:74,tsige:101,tstart:[66,68,71,110],tstat:[2,66],tstop:[66,68,71,110],tsuzuki:[30,159],ttm_mod:81,tucker:[41,149],tuckerman:[68,73],tune:[2,4],tunnel:73,turkand:38,turn:[2,28,41,43,56,57,60,61,68,92,93,95,108,121,135,154],tutein:95,tutori:[2,72],tweak:44,twice:[2,4,45,61,68],twist:[132,133],two:[1,2,3,4,19,28,29,32,36,40,41,43,44,55,57,59,60,61,66,67,68,69,72,73,74,80,81,83,91,92,93,94,95,97,98,99,100,101,104,105,106,108,109,110,112,113,114,115,116,118,119,122,123,127,131,132,133,135,138,142,144,145,146,148,149,150,154,155,156,157,158,159,161,162],two_temperatur:58,twobodi:[156,158,159],twojmax:[41,149],txt:[81,122,148,163],typcial:[19,59],type1:[40,43],type2:[40,43],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,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,57,58,67,77,83,84,85,86,87,88,89,90,91,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,111,112,113,114,115,116,117,118,119,120,121,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],typen:[40,43],typic:[1,2,3,4,13,19,21,22,29,32,44,55,57,58,59,60,61,62,68,75,77,92,93,102,104,106,117,118,121,122,123,127,132,133,135,146,158,163],tzou:81,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:98,uberuaga:93,ubiquit:[3,98],uchem:[116,142],uloop:[73,93],umbrella:2,umin:[10,11,24,25,47],unabl:[3,19,59],unaffect:[61,68],unalt:62,unambigu:159,unbias:114,unchang:[61,68],uncom:1,uncompress:57,uncorrel:66,uncoupl:73,under:[0,2,4,6,41,46,57,61,62,68,74,84,111,114,131,149],underflow:57,undergo:[2,32,66,68],undergon:60,underli:[2,29,57,68,81],underpredict:2,underscor:[60,61,68,69],understand:[1,2,138],understood:98,undesir:[61,68],undisturb:[132,133],undump:57,unfix:[2,35,58,75,79],unfix_flux:58,unfold:78,uniaxi:69,uniform:[4,19,58,59,67,118,146],uniformli:[67,81,141,142,145],uninterrupt:[68,69,74,80,81],union:[2,83],uniqu:[2,66,69,93,112,114],unit:[2,5,6,16,17,18,29,30,31,32,33,34,35,36,37,39,40,41,42,43,44,46,57,60,61,62,63,64,65,66,67,68,69,71,72,73,74,75,76,78,80,81,82,83,84,85,89,90,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:113,unitless:[29,62,68,74,76,92,119,140,144,155,156,157,158,159],univers:[2,32,93,132,137,158],unknown:30,unless:[3,4,40,43,44,61,68,92,104],unlik:[33,44,94,98,112,115,135,136,137,149],unlike:[68,69,112,121,122,136,137],unlimit:145,unnecessari:4,unoccupi:81,unoptim:57,unpack:[0,3],unperturb:32,unphys:[2,68],unpublish:138,unrel:[45,163],unrestrain:75,unset:114,unshift:109,unsmooth:129,unsolv:102,unstabl:67,unstag:163,until:[2,19,57,59,61,62,65,70,79,98,119,141,142],unus:98,unwant:44,unwrap:[33,34,42,60],up_intern:57,updat:[0,2,4,62,66,67,68,70,74,81,98,109,138],upenn:3,upon:[2,76,98],upper:[19,37,59,61,67,68,74,82,92,119,148],uppercas:0,upsid:2,upsilon:118,upstream:163,urbana:132,urey_bradlei:5,url:163,usabl:112,usag:[2,72,131],use:[2,57,81,118,135,146,148,163],useful:138,user:[0,1,2,3],user_manifold:163,user_misc:[14,15,17,48,52,54,55,88],usernam:163,using:[0,1],usr:3,usual:[2,8,12,16,17,18,23,32,53,55,57,60,61,69,74,75,81,82,83,89,93,102,104,107,109,118,122,131,132,133,143,149,154,155],util:118,v11:2,v22:2,v33:2,v_0:81,v_2:138,v_3:138,v_4:138,v_avp:62,v_delta:32,v_dhug:74,v_drai:74,v_e_hbond:121,v_ij:145,v_jx:35,v_jy:35,v_jz:35,v_k11:35,v_k22:35,v_k33:35,v_lgr_po:74,v_lgr_vel:74,v_linear:82,v_lj:95,v_mu:132,v_n:[67,138],v_name:[2,32,57,62,82],v_occ:117,v_prefactor:150,v_press:42,v_pxxwall:62,v_pxy:2,v_pxz:2,v_pyz:2,v_r:70,v_ramp:82,v_rebo:95,v_t_qm:74,v_torsion:95,v_v11:2,v_v22:2,v_v33:2,v_valu:57,v_wiggl:82,v_x:[44,82],v_xave:2,v_xmax:2,v_xx:44,v_y:44,v_yi:44,vacanc:[79,138],vacf:2,vacuum:[81,107,158,162],valanc:98,valenc:[98,114],valent:98,valid:[2,3,40,43,61,72,112,114,118,138,145],valon:135,value1:69,value2:69,van:[27,32,104,105,131,135,161],vanadium:138,vanilla:2,vanish:77,vapor:[19,59],vare:81,vari:[1,19,32,40,43,58,59,61,68,75,81,82,102,110,111,120,129,132,150],variabl:0,varianc:110,variant:[1,2,61,68,69,119,136,137,140,156,158],variat:[19,59],varieti:[1,2,57,135,159],variou:0,varshalovich:41,vashishta1990:159,vashishta2007:159,vbia:2,vcm:2,vdisplac:82,vdw:105,vec:72,vector:1,vel:[2,110,111,114,119],veld:[101,127],veloc:[2,35,39,42,44,57,61,63,67,68,69,70,72,73,74,75,77,80,81,82,92,93,110,114,119,132,133],velocit:[110,111,114,119],velocity_bottom:67,velocity_top:67,verbos:148,veri:[1,2,19,32,57,59,61,62,68,73,77,93,114,119,132,133,141,142,149,150,163],verifi:163,verlet:[1,4,58,63,68,73,77,81],versa:[2,60],versu:[2,19,59,62,77,101,109,119,127],vertic:[4,19,57,59],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,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,59,60,61,62,67,68,69,73,75,77,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,144,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],vibrat:[2,72,74,90,114],vice:[2,60],video:57,view:[2,57,98,114,115,148],viewer:57,viewpoint:57,vij:110,vim:0,virial:[35,39,41,42,61,68,69,77,110,111,114],virtual:[2,155],viscoelast:119,viscos:0,viscosity:2,viscou:[2,66,67,92,93],vision:148,visual:0,viz:3,viz_tool:3,vizplotgui_tool:3,vmax:61,vmd:[2,3],voigt:[2,41],vol:[2,35,42,135,158],volpress:138,volum:[2,19,32,35,39,40,42,43,44,59,61,64,67,68,69,70,74,81,82,83,132,133,138,152,153,162],voronoi:42,voter:[136,137],voth:73,vri:120,vstream:2,vtk:[2,40],w_1:41,w_2:41,w_i:41,w_ik:145,waal:[32,104,105,131,161],wadlei:98,wagner:[58,67,135],wai:[1,2,3,29,32,34,35,36,38,41,42,44,57,60,61,62,66,67,68,69,70,73,81,82,85,86,87,89,90,92,93,94,95,106,107,110,112,113,115,118,121,123,135,136,137,143,145,146,148,149,150,154,155,156,158,159,163],wait:[1,4],walk:[66,68],wall:0,wallhi:82,wang:[135,145],want:[0,1,2,3,31,34,39,42,44,57,59,60,72,75,80,82,83,93,94,95,98,104,105,110,112,115,135,141,142,143,145,148,150,155,156,158,159,163],ward:98,warm:[4,114],warmup:4,warn:[0,21,22,30,57,68,69,76,132,133,135,141,142,163],warner:94,warning:135,warp:135,warren:[110,141,142],watanab:[79,80],watch:93,water:0,watkin:53,wave:114,wavefunct:114,wavelength:[40,43],wavepacket:114,weak:36,web:1,webb:58,weber:[113,137,145,155,159],weight:[2,32,41,43,45,56,66,67,76,108,110,111,116,135,141,142,149],well:[1,2,3,11,26,36,38,39,42,44,47,57,59,61,67,68,69,76,80,92,93,97,117,118,121,132,133,135,138,146,150,156,157,158,163],went:3,were:[2,3,4,19,29,38,39,44,57,59,95,114,119,122,163],westview:161,what:[0,1,2,3,44,57,59,60,61,65,68,73,75,77,82,92,93,135,141,142,150,154,163],whatev:[57,61,62,68,92,93,103,104,138],whelan:43,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,44,45,46,47,48,49,50,51,52,53,54,56,57,59,60,61,62,67,68,69,72,74,75,76,77,78,81,82,83,84,85,86,88,89,90,91,92,93,94,95,96,99,100,101,102,103,104,105,106,108,109,110,112,113,114,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,135,136,137,138,140,141,142,143,144,145,146,147,149,150,154,155,156,157,158,159,160,161,162,163],whenev:[0,55,121],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,42,43,46,47,56,57,59,60,61,62,63,64,65,66,67,68,69,72,73,74,76,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,97,98,99,100,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,123,127,132,133,134,135,136,137,138,142,143,144,145,146,148,149,151,152,153,154,155,156,157,158,159,161,162],wherea:[2,3,36,66,68,81],whether:[2,3,28,29,57,60,61,68,69,77,100,102,105,120,122,132,133,135,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,41,42,43,44,45,46,49,50,51,53,56,57,59,60,61,62,63,65,66,67,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,86,89,91,92,93,94,95,97,98,99,100,101,102,104,105,106,107,108,109,110,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,129,131,132,133,135,136,137,138,140,141,142,143,144,145,146,147,148,149,150,154,155,156,157,158,159,161,163],white:[66,81],who:[0,2,94,112],whole:76,whose:[2,32,35,57,62,65,68,72,75,76,77,83,93,114,116,125,141,142,155,156,158],why:[2,163],wicaksono1:72,wicaksono2:72,wicaksono:72,wide:[1,2,102,104,114],width:[57,117],wiggl:82,wigner:41,wih:2,wikipedia:2,wild:[32,121],wildcard:[57,154],wildli:68,window:[57,163],wire:75,wirnsberg:[2,63],wisdom:163,wise:[110,155],wish:[2,3,42,45,67,77,82,93,100,121,135,141,142],within:[1,2,3,4,13,19,29,30,36,38,39,41,44,57,59,60,65,72,76,77,81,82,83,92,93,97,99,100,106,111,112,113,114,116,117,122,123,135,138,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,45,46,47,48,49,50,51,52,53,54,57,61,62,65,66,68,69,76,77,84,85,86,88,89,90,91,93,94,95,96,99,100,101,102,103,104,105,106,109,110,112,113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,138,140,141,142,143,144,146,147,150,155,156,157,158,159,160,161,162,163],won:133,wong:[58,98],word:[2,13,75,104],work:[1,2,3,4,28,40,43,57,60,62,67,68,70,75,77,80,105,108,110,132,133,135,138,148],worker:159,workflow:163,world:[41,93],worlei:110,worst:83,worth:74,would:[1,2,3,4,13,19,29,33,35,42,44,45,56,57,59,60,61,63,68,72,73,76,84,85,86,87,89,92,93,94,95,98,104,105,106,110,111,112,113,115,135,136,137,138,143,145,149,154,155,156,157,158,159,163],wrap:[1,2,3,44,67,82,83,93],wrapper:[0,2],wright:92,write_atom_weight:58,write_restart:[58,67],written:[2,41,57,58,59,60,61,62,63,66,67,70,71,72,74,75,77,78,79,81,82,83,112,134,138,161,163],wrong:[3,61,68,82,83],www:[0,2,3,94,112,132],x200:4,x86:138,x_ij:145,x_ijkl:84,x_kjli:84,x_ljik:84,xave:2,xavx:4,xcore:4,xeon:[1,4],xhi:[2,82],xhi_bound:2,xhost:4,xi_ij:145,xiaowang:[115,156,158],xiij:72,xlat:44,xlo:[2,3,82],xlo_bound:2,xmax:2,xmgrace:0,xmic:4,xmovi:[0,2],xmu:119,xpo:44,xrd:40,xtc:[2,57],xwall:62,xyz:[2,44,57,61,68,69],xzhou:115,yamada:4,yang:[138,145],yate:138,yb2:43,yb3:43,yellow:57,yet:[4,57,62,82,92,103,104,105,114,161,163],yhi:[2,82],yhi_bound:2,yield:[2,35,42,61,68,76,97,110,119],yip:79,ylat:44,ylo:[2,82],ylo_bound:2,york:73,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,41,42,44,45,46,47,48,49,50,51,52,53,54,56,57,59,60,61,62,63,66,68,69,73,75,77,79,80,81,82,83,84,85,86,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103,104,105,106,109,110,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,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,163],young:119,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,44,45,46,47,48,49,50,51,52,53,54,57,58,60,61,68,69,77,81,82,83,84,85,86,88,89,90,91,93,94,95,96,98,99,100,101,102,103,104,105,106,109,110,112,113,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,135,136,137,138,140,143,144,145,146,147,150,154,155,156,157,158,159,160,161,162,163],yourself:[2,61,163],ypo:44,yukawa:104,z_i:[114,158,162],z_j:[158,162],z_meam:135,zannoni:118,zbl:[135,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,40,41,42,43,44,45,47,54,56,57,59,61,62,63,66,67,68,69,73,74,76,77,80,81,82,88,92,93,98,99,100,101,102,104,106,109,110,111,114,118,120,121,123,125,127,128,131,133,134,135,138,140,146,147,148,154,159,162],zeta:[67,115],zfactor:57,zhang:119,zhi:[2,82],zhi_bound:2,zhou:[98,115,145,156,158],zhu:153,ziegler:[135,158,162],zimmerman2004:58,zimmerman2010:58,zimmerman:[29,58,98],zlim:148,zlo:[2,82],zlo_bound:2,zmax:67,zmin:67,zn2:43,zone:40,zoom:57,zr4:43,zwall:82,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 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 controller 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 nve/manifold/rattle command","fix nvt/manifold/rattle 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","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_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,40,41,43,44,56,57,58,61,66,67,68,69,73,74,79,80,82,98,114,132,133,138,154],"long":[99,100,101,102,103,106,108,109,123,127,131,144,147],acceler:1,adiabat:2,adp:94,airebo:95,alloi:112,amber:2,angle_styl:[5,6,7,8,9,10,11,12,13,14,15,16,17,18],arrai:2,aspher:2,atc:58,atom:[2,29,30,36,38,41,42],aug:0,balanc:[19,59],barostat:2,bcc:72,beck:96,between:2,bodi:[2,97],bond:60,bond_styl:[20,21,22,23,24,25,26,27,28],bop:98,born:[99,108],box:[2,61],buck:[100,101,108,134],build:3,calcul:2,centro:29,charmm:[2,5,45,102,131],chunk:[2,34],class2:[6,20,46,84,103],cna:30,code:2,coeffici:2,colloid:[82,104,161],comb3:105,comb:105,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,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],comparison:1,compos:2,comput:[2,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],conduct:2,constant:2,control:62,core:2,cosin:[7,8,9,10,11,12,47],cossq:85,coul:[99,100,101,102,103,106,107,108,120,123,127,131,144,147],coupl:2,create_atom:44,cubic:125,cut:[25,100,103,106,109,114,117,123,124,131,139,144],cvff:86,data:2,deby:[106,123],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,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],diel:107,diffus:2,dihedral_styl:[45,46,47,48,49,50,51,52,53,54,55,56],dipol:[2,13,109],discuss:2,disp:2,distanc:87,document:0,dpd:[31,110,111],dreid:121,dreiding:2,drude:2,dsf:[106,123],dump:[2,57],eam:112,edip:113,eff:114,ehex:63,eim:115,elastic:2,energi:111,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,77,78,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,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:116,exp:[11,47],expand:[22,126],extend:3,fcc:72,fdt:111,fene:[21,22],fep:32,field:2,file:2,finit:2,fix:[2,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],fix_modifi:[58,59,61,62,63,67,68,69,70,71,72,74,75,77,78,79,80,81,82,83],flow:2,fluid:67,flux:35,forc:2,fourier:[14,15,48,88],from:[2,3],gauss:117,gaybern:118,gener:[1,2],github:163,gld:66,global:2,gpu:[96,99,100,102,103,104,106,109,110,112,117,118,120,123,124,125,126,139,140,146,147,150,155,156,157,158,160,161,162],gran:119,granular:2,gromac:120,gyrat:[33,34],harmon:[16,23,24,25,49,51,82,89,143],hbond:121,heat:35,helix:50,hertz:119,hexord:36,histori:119,hook:119,how:2,idealga:151,imag:57,implicit:102,improper_styl:[84,85,86,87,88,89,90,91],indice:0,induc:2,info:[0,58,59,61,62,63,67,68,69,70,71,72,74,75,77,78,79,80,81,82,83],input:2,install:3,integr:2,intel:[4,5,16,21,23,45,49,53,68,86,89,100,102,118,123,155,156],interfac:[2,3],kspace_styl:2,lammps:[0,1,2,3,163],lennard:134,librari:[2,3],linear:[130,140],list:122,lj1043:82,lj126:82,lj93:82,lj96:124,local:2,lubric:132,lubricateu:133,luci:[141,142],manifold:[70,71],mdf:134,meam:[135,136,137],measur:1,mgpt:138,mie:139,minim:[58,59,61,62,63,67,68,69,70,71,72,74,75,77,78,79,80,81,82,83,92],mod:[81,157],model:2,morri:153,mors:[26,95,121,140],movi:57,mpi:3,msd:37,msm:[99,100,102,106,123],multi:[2,51,141,142],multipl:2,nb3b:143,neb:93,nemd:2,nharmon:52,non:2,nongauss:37,nonlinear:27,nph:68,nphug:69,npt:68,nve:70,nvt:[68,71],omp:[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,68,69,84,85,86,88,89,90,91,94,95,96,99,100,101,102,103,104,105,106,107,109,110,112,115,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,136,137,140,143,144,146,147,150,155,156,157,158,159,160,161,162],opl:53,opt:[102,112,123,127,140],optim:1,option:2,orient:72,orientord:38,orthogon:2,other:2,output:[2,58,59,61,62,63,67,68,69,70,71,72,74,75,77,78,79,80,81,82,83],overview:3,packag:[1,4],pair:2,pair_styl:[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],parallel:3,paramet:2,particl:2,per:2,perform:1,period:9,pimd:73,polariz:2,poli:[132,133],polymorph:145,potenti:2,pppm:2,pressur:39,process:2,properti:2,python:3,qbmsst:74,quadrat:54,quantiti:2,quartic:[17,28],rattl:[70,71,77],rebo:95,region:83,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,71,72,74,76,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,149,150,151,152,153,154,155,156,157,158,159,160,161,162],relax:61,replica:2,resquar:146,restart:[2,58,59,61,62,63,67,68,69,70,71,72,74,75,77,78,79,80,81,82,83],restrain:75,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,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,149,150,151,152,153,154,155,156,157,158,159,160,161,162],rigid:2,ring:90,run:[2,3,58,59,61,62,63,67,68,69,70,71,72,74,75,77,78,79,80,81,82,83],scalar:2,script:[2,3],sdk:[18,147],serial:3,set:2,shake:77,share:3,shell:2,shift:[10,11,24,25,47],simpl:15,simul:2,size:2,smooth:[129,130,140],smtbq:148,sna:41,snad:41,snap:149,snapshot:2,snav:41,soft:[131,140,150],spc:2,sph:[151,152,153],spheric:[2,55],spline:[136,137],spring:[78,80],squar:12,srp:154,start:[58,59,61,62,63,67,68,69,70,71,72,74,75,77,78,79,80,81,82,83],stop:[58,59,61,62,63,67,68,69,70,71,72,74,75,77,78,79,80,81,82,83],strategi:1,streitz:106,stress:42,style:[1,2],summari:2,swap:60,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,70,71,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],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,106,123,127,131],triclin:2,tstat:110,ttm:81,tutori:163,umbrella:91,user:4,using:[2,3],valu:2,variabl:2,variou:1,vashishta:159,vector:2,version:0,viscos:2,visual:2,wall:[2,82,83],water:2,wolf:[99,106],wrapper:3,write:2,xrd:43,yukawa:[160,161],zbl:[158,162]}})
\ No newline at end of file
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 6ea54ae22..adf6b5c47 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -1,303 +1,303 @@
 <!-- HTML_ONLY -->
 <HEAD>
 <TITLE>LAMMPS Users Manual</TITLE>
-<META NAME="docnumber" CONTENT="23 Aug 2016 version">
+<META NAME="docnumber" CONTENT="27 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 Documentation"_ld - "LAMMPS Commands"_lc :c
 
 :link(lws,http://lammps.sandia.gov)
 :link(ld,Manual.html)
 :link(lc,Section_commands.html#comm)
 
 :line
 
 <H1></H1>
 
 LAMMPS Documentation :c,h3
-23 Aug 2016 version :c,h4
+27 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).
 
 If you browse the HTML doc pages on the LAMMPS WWW site, they always
 describe the most current version of LAMMPS. :ulb,l
 
 If you browse the HTML doc pages included in your tarball, they
 describe the version you have. :l
 
 The "PDF file"_Manual.pdf on the WWW site or in the tarball is updated
 about once per month.  This is because it is large, and we don't want
 it to be part of 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/fix_flow_gauss.txt b/doc/src/fix_flow_gauss.txt
index 617c65b79..2a0ec4f54 100644
--- a/doc/src/fix_flow_gauss.txt
+++ b/doc/src/fix_flow_gauss.txt
@@ -1,137 +1,142 @@
 "LAMMPS WWW Site"_lws - "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 flow/gauss command :h3
 
 [Syntax:]
 
 fix ID group-ID flow/gauss xflag yflag zflag keyword :pre
 
 ID, group-ID are documented in "fix"_fix.html command :ulb,l
 flow/gauss = style name of this fix command :l
 xflag,yflag,zflag = 0 or 1 :l
     0 = do not conserve current in this dimension
     1 = conserve current in this dimension :pre
 zero or more keyword/value pairs may be appended :l
 keyword = {energy} :l
   {energy} value = no or yes
     no = do not compute work done by this fix
     yes = compute work done by this fix :pre
 :ule
 
 [Examples:]
 
 fix GD fluid flow/gauss 1 0 0 
 fix GD fluid flow/gauss 1 1 1 energy yes :pre
 
 [Description:]
 
-This fix implements the Gaussian dynamics (GD) method to simulate a system at 
-constant mass flux "(Strong)"_#Strong. GD is a nonequilibrium molecular 
-dynamics simulation method that can be used to study fluid flows through  
-pores, pipes, and channels. In its original implementation GD was used to 
-compute the pressure required to achieve a fixed mass flux through an opening. 
-The flux can be conserved in any combination of the directions, x, y, or z, 
-using xflag,yflag,zflag. This fix does not initialize a net flux through 
-a system, it only conserves the center-of-mass momentum that is present 
-when the fix is declared in the input script. Use the "velocity"_velocity.html 
-command to generate an initial center-of-mass momentum.
-
-GD applies an external fluctuating gravitational field that acts as a driving 
-force to keep the system away from equilibrium. To maintain steady state, a 
-profile-unbiased thermostat must be implemented to dissipate the heat that is 
-added by the driving force. "Compute temp/profile"_compute_temp_profile.html 
-can be used to implement a profile-unbiased thermostat. 
-
-A common use of this fix is to compute a pressure drop across a pipe, pore, or 
-membrane. The pressure profile can be computed in LAMMPS with "compute 
-stress/atom"_compute_stress_atom.html and "fix ave/chunk"_fix_ave_chunk.html, 
-or with the hardy method in "fix atc"_fix_atc.html. Note that the simple 
-"compute stress/atom"_compute_stress_atom.html method is only accurate away 
-from inhomogeneities in the fluid, such as fixed wall atoms. Further, the 
-computed pressure profile must be corrected for the acceleration applied by 
-GD before computing a pressure drop or comparing it to other methods, such as 
-the pump method "(Zhu)"_#Zhu. The pressure correction is discussed and 
-described in "(Strong)"_#Strong. 
-
-NOTE: For a complete example including the considerations discussed above, see 
-the examples/USER/flow_gauss directory. 
-
-NOTE: Only the flux of the atoms in group-ID will be conserved. If the 
-velocities of the group-ID atoms are coupled to the velocities of other atoms 
-in the simulation, the flux will not be conserved. For example, in a 
-simulation with fluid atoms and harmonically constrained wall atoms, if a 
-single thermostat is applied to group {all}, the fluid atom velocities will be 
-coupled to the wall atom velocities, and the flux will not be conserved. This 
-issue can be avoided by thermostatting the fluid and wall groups separately.
-
-Adding an acceleration to atoms does work on the system. This added energy 
- can be optionally subtracted from the potential energy for the thermodynamic 
-output (see below) to check that the timestep is small enough to conserve 
-energy. Since the applied acceleration is fluctuating in time, the work cannot 
-be computed from a potential. As a result, computing the work is slightly more 
-computationally expensive than usual, so it is not performed by default. To 
-invoke the work calculation, use the {energy} keyword. The 
-"fix_modify"_fix_modify.html {energy} option also invokes the work 
-calculation, and overrides an {energy no} setting here. If neither {energy yes}
-or {fix_modify energy yes} are set, the global scalar computed by the fix 
-will return zero.
-
-NOTE: In order to check energy conservation, any other fixes that do work on 
-the system must have {fix_modify energy yes} set as well. This includes 
-thermostat fixes and any constraints that hold the positions of wall atoms 
-fixed, such as "fix spring/self"_fix_spring_self.html.
+This fix implements the Gaussian dynamics (GD) method to simulate a
+system at constant mass flux "(Strong)"_#Strong. GD is a
+nonequilibrium molecular dynamics simulation method that can be used
+to study fluid flows through pores, pipes, and channels. In its
+original implementation GD was used to compute the pressure required
+to achieve a fixed mass flux through an opening.  The flux can be
+conserved in any combination of the directions, x, y, or z, using
+xflag,yflag,zflag. This fix does not initialize a net flux through a
+system, it only conserves the center-of-mass momentum that is present
+when the fix is declared in the input script. Use the
+"velocity"_velocity.html command to generate an initial center-of-mass
+momentum.
+
+GD applies an external fluctuating gravitational field that acts as a
+driving force to keep the system away from equilibrium. To maintain
+steady state, a profile-unbiased thermostat must be implemented to
+dissipate the heat that is added by the driving force. "Compute
+temp/profile"_compute_temp_profile.html can be used to implement a
+profile-unbiased thermostat.
+
+A common use of this fix is to compute a pressure drop across a pipe,
+pore, or membrane. The pressure profile can be computed in LAMMPS with
+"compute stress/atom"_compute_stress_atom.html and "fix
+ave/chunk"_fix_ave_chunk.html, or with the hardy method in "fix
+atc"_fix_atc.html. Note that the simple "compute
+stress/atom"_compute_stress_atom.html method is only accurate away
+from inhomogeneities in the fluid, such as fixed wall atoms. Further,
+the computed pressure profile must be corrected for the acceleration
+applied by GD before computing a pressure drop or comparing it to
+other methods, such as the pump method "(Zhu)"_#Zhu. The pressure
+correction is discussed and described in "(Strong)"_#Strong.
+
+NOTE: For a complete example including the considerations discussed
+above, see the examples/USER/flow_gauss directory.
+
+NOTE: Only the flux of the atoms in group-ID will be conserved. If the
+velocities of the group-ID atoms are coupled to the velocities of
+other atoms in the simulation, the flux will not be conserved. For
+example, in a simulation with fluid atoms and harmonically constrained
+wall atoms, if a single thermostat is applied to group {all}, the
+fluid atom velocities will be coupled to the wall atom velocities, and
+the flux will not be conserved. This issue can be avoided by
+thermostatting the fluid and wall groups separately.
+
+Adding an acceleration to atoms does work on the system. This added
+energy can be optionally subtracted from the potential energy for the
+thermodynamic output (see below) to check that the timestep is small
+enough to conserve energy. Since the applied acceleration is
+fluctuating in time, the work cannot be computed from a potential. As
+a result, computing the work is slightly more computationally
+expensive than usual, so it is not performed by default. To invoke the
+work calculation, use the {energy} keyword. The
+"fix_modify"_fix_modify.html {energy} option also invokes the work
+calculation, and overrides an {energy no} setting here. If neither
+{energy yes} or {fix_modify energy yes} are set, the global scalar
+computed by the fix will return zero.
+
+NOTE: In order to check energy conservation, any other fixes that do
+work on the system must have {fix_modify energy yes} set as well. This
+includes thermostat fixes and any constraints that hold the positions
+of wall atoms fixed, such as "fix spring/self"_fix_spring_self.html.
 
 :line
 
 [Restart, fix_modify, output, run start/stop, minimize info:]
 
 This fix is part of the USER-MISC package.  It is only enabled if
 LAMMPS was built with that package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info.
 
 No information about this fix is written to "binary restart
 files"_restart.html.
 
 The "fix_modify"_fix_modify.html {energy} option is supported by this
 fix to subtract the work done from the
 system's potential energy as part of "thermodynamic
 output"_thermo_style.html.
 
 This fix computes a global scalar and a global 3-vector of forces,
 which can be accessed by various "output
 commands"_Section_howto.html#howto_15.  The scalar is the negative of the 
 work done on the system, see above discussion.  The vector is the total force 
 that this fix applied to the group of atoms on the current timestep.
 The scalar and vector values calculated by this fix are "extensive".
 
 No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.
 
 [Restrictions:] none
 
 [Related commands:]
 
-"fix addforce"_fix_addforce.html, "compute temp/profile"_compute_temp_profile.html, "velocity"_velocity.html
+"fix addforce"_fix_addforce.html, "compute
+temp/profile"_compute_temp_profile.html, "velocity"_velocity.html
 
 [Default:]
 
 The option default for the {energy} keyword is energy = no.
 
 :line
 
 :link(Strong)
 [(Strong)] Strong and Eaves, J. Phys. Chem. Lett. 7, 1907 (2016).
 
 :link(Evans)
 [(Evans)] Evans and Morriss, Phys. Rev. Lett. 56, 2172 (1986).
 
 :link(Zhu)
 [(Zhu)] Zhu, Tajkhorshid, and Schulten, Biophys. J. 83, 154 (2002).
-
-:line
diff --git a/doc/utils/sha1sum.py b/doc/utils/sha1sum.py
new file mode 100755
index 000000000..d4842ecf1
--- /dev/null
+++ b/doc/utils/sha1sum.py
@@ -0,0 +1,7 @@
+#!/bin/env python
+# simple utility which reimplements sha1sum using Python
+import hashlib
+import sys
+s = hashlib.sha1()
+s.update(sys.stdin.read().encode())
+print(s.hexdigest())
diff --git a/src/USER-MISC/README b/src/USER-MISC/README
index c461544ff..d60e2c85c 100644
--- a/src/USER-MISC/README
+++ b/src/USER-MISC/README
@@ -1,67 +1,67 @@
 The files in this package are a potpourri of (mostly) unrelated
 features contributed to LAMMPS by users.  Each feature is a single
 pair of files (*.cpp and *.h).
 
 More information about each feature can be found by reading its doc
 page in the LAMMPS doc directory.  The doc page which lists all LAMMPS
 input script commands is as follows:
 
 doc/Section_commands.html, subsection 3.5
 
 User-contributed features are listed at the bottom of the fix,
 compute, pair, etc sections.
 
 The list of features and author of each is given below.
 
 You should contact the author directly if you have specific questions
 about the feature or its coding.
 
 ------------------------------------------------------------
 
 angle_style cosine/shift, Carsten Svaneborg, science at zqex.dk, 8 Aug 11
 angle_style cosine/shift/exp, Carsten Svaneborg, science at zqex.dk, 8 Aug 11
 angle_style fourier, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
 angle_style fourier/simple, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
 angle_style dipole, Mario Orsi, orsimario at gmail.com, 10 Jan 12
 angle_style quartic, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
 bond_style harmonic/shift, Carsten Svaneborg, science at zqex.dk, 8 Aug 11
 bond_style harmonic/shift/cut, Carsten Svaneborg, science at zqex.dk, 8 Aug 11
 compute ackland/atom, Gerolf Ziegenhain, gerolf at ziegenhain.com, 4 Oct 2007
 compute basal/atom, Christopher Barrett, cdb333 at cavs.msstate.edu, 3 Mar 2013
 compute temp/rotate, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11
 dihedral_style cosine/shift/exp, Carsten Svaneborg, science at zqex.dk, 8 Aug 11
 dihedral_style fourier, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
 dihedral_style nharmonic, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
 dihedral_style quadratic, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
 dihedral_style spherical, Andrew Jewett, jewett.aij@gmail.com, 15 Jul 16
 dihedral_style table, Andrew Jewett, jewett.aij@gmail.com, 10 Jan 12
 fix addtorque, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11
 fix ave/correlate/long, Jorge Ramirez (UPM Madrid), jorge.ramirez at upm.es, 21 Oct 2015
-fix flow/gauss, Joel D. Eaves (CU Boulder), Joel.Eaves@Colorado.edu, 23 Aug 2016
+fix flow/gauss, Joel Eaves (CU Boulder), Joel.Eaves@Colorado.edu, 23 Aug 2016
 fix gle, Michele Ceriotti (EPFL Lausanne), michele.ceriotti at gmail.com, 24 Nov 2014
 fix imd, Axel Kohlmeyer, akohlmey at gmail.com, 9 Nov 2009
 fix ipi, Michele Ceriotti (EPFL Lausanne), michele.ceriotti at gmail.com, 24 Nov 2014
 fix pimd, Yuxing Peng (U Chicago), yuxing at uchicago.edu, 24 Nov 2014
 fix smd, Axel Kohlmeyer, akohlmey at gmail.com, 19 May 2008
 fix ti/rs, Rodrigo Freitas (Unicamp/Brazil), rodrigohb at gmail.com, 7 Nov 2013
 fix ti/spring, Rodrigo Freitas (Unicamp/Brazil), rodrigohb at gmail.com, 7 Nov 2013
 fix ttm/mod, Sergey Starikov and Vasily Pisarev (JIHT), pisarevvv at gmail.com, 2 Feb 2015
 improper_style cossq, Georgios Vogiatzis, gvog at chemeng.ntua.gr, 25 May 12
 improper_style fourier, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
 improper_style ring, Georgios Vogiatzis, gvog at chemeng.ntua.gr, 25 May 12
 improper_style distance, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15
 pair_style buck/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15
 pair_style coul/diel, Axel Kohlmeyer, akohlmey at gmail.com, 1 Dec 11
 pair_style dipole/sf, Mario Orsi, orsimario at gmail.com, 8 Aug 11
 pair_style edip, Luca Ferraro, luca.ferraro at caspur.it, 15 Sep 11
 pair_style eam/cd, Alexander Stukowski, stukowski at mm.tu-darmstadt.de, 7 Nov 09
 pair_style gauss/cut, Axel Kohlmeyer, akohlmey at gmail.com, 1 Dec 11
 pair_style lennard/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15
 pair_style list, Axel Kohlmeyer (Temple U), akohlmey at gmail.com, 1 Jun 13
 pair_style lj/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15
 pair_style lj/sf, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11
 pair_style meam/spline, Alexander Stukowski (LLNL), alex at stukowski.com, 1 Feb 12
 pair_style meam/sw/spline, Robert Rudd (LLNL), robert.rudd at llnl.gov, 1 Oct 12
 pair_style morse/smooth/linear, Stefan Paquay (TU Eindhoven), stefanpaquay at gmail.com, 29 Feb 16
 pair_style srp, Tim Sirk, tim.sirk at us.army.mil, 21 Nov 14
 pair_style tersoff/table, Luca Ferraro, luca.ferraro@caspur.it, 1 Dec 11
diff --git a/src/USER-MISC/fix_flow_gauss.cpp b/src/USER-MISC/fix_flow_gauss.cpp
index a93af6812..129a4aa0e 100644
--- a/src/USER-MISC/fix_flow_gauss.cpp
+++ b/src/USER-MISC/fix_flow_gauss.cpp
@@ -1,218 +1,219 @@
 /* ----------------------------------------------------------------------
    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: Steven E. Strong and Joel D. Eaves
    Joel.Eaves@Colorado.edu
 ------------------------------------------------------------------------- */
 
 #include <stdlib.h>
 #include <string.h>
 #include "fix_flow_gauss.h"
 #include "atom.h"
 #include "force.h"
 #include "group.h"
 #include "comm.h"
 #include "update.h"
 #include "domain.h"
 #include "error.h"
 #include "citeme.h"
 
 using namespace LAMMPS_NS;
 using namespace FixConst;
 
 static const char cite_flow_gauss[] =
   "Gaussian dynamics package:\n\n"
   "@Article{strong_atomistic_2016,\n"
   "title = {Atomistic Hydrodynamics and the Dynamical Hydrophobic Effect in Porous Graphene},\n"
   "volume = {7},\n"
   "number = {10},\n"
   "issn = {1948-7185},\n"
   "url = {http://dx.doi.org/10.1021/acs.jpclett.6b00748},\n"
   "doi = {10.1021/acs.jpclett.6b00748},\n"
   "urldate = {2016-05-10},\n"
   "journal = {J. Phys. Chem.  Lett.},\n"
   "author = {Strong, Steven E. and Eaves, Joel D.},\n"
   "year = {2016},\n"
   "pages = {1907--1912}\n"
   "}\n\n";
 
 FixFlowGauss::FixFlowGauss(LAMMPS *lmp, int narg, char **arg) :
   Fix(lmp, narg, arg)
 {
   if (lmp->citeme) lmp->citeme->add(cite_flow_gauss);
 
   if (narg < 6) error->all(FLERR,"Not enough input arguments");
 
   // a group which conserves momentum must also conserve particle number
   dynamic_group_allow = 0;
 
   scalar_flag = 1;
   vector_flag = 1;
   extscalar = 1;
   extvector = 1;
   size_vector = 3;
   global_freq = 1;    //data available every timestep
 
   dimension = domain->dimension;
 
   //get inputs
   int tmpFlag;
   for (int ii=0; ii<3; ii++)
   {
     tmpFlag=force->inumeric(FLERR,arg[3+ii]);
     if (tmpFlag==1 || tmpFlag==0)
       flow[ii]=tmpFlag;
     else
       error->all(FLERR,"Constraint flags must be 1 or 0");
   }
 
   // by default, do not compute work done
   workflag=0;
 
   // process optional keyword
   int iarg = 6;
   while (iarg < narg) {
     if ( strcmp(arg[iarg],"energy") == 0 ) {
       if ( iarg+2 > narg ) error->all(FLERR,"Illegal energy keyword");
       if ( strcmp(arg[iarg+1],"yes") == 0 ) workflag = 1;
-      else if ( strcmp(arg[iarg+1],"no") != 0 ) error->all(FLERR,"Illegal energy keyword");
+      else if ( strcmp(arg[iarg+1],"no") != 0 )
+        error->all(FLERR,"Illegal energy keyword");
       iarg += 2;
     } else error->all(FLERR,"Illegal fix flow/gauss command");
   }
 
   //error checking
   if (dimension == 2) {
     if (flow[2])
       error->all(FLERR,"Can't constrain z flow in 2d simulation");
   }
 
   dt=update->dt;
   pe_tot=0.0;
 }
 
 /* ---------------------------------------------------------------------- */
 
 int FixFlowGauss::setmask()
 {
   int mask = 0;
   mask |= POST_FORCE;
   mask |= THERMO_ENERGY;
   return mask;
 }
 
 /* ----------------------------------------------------------------------
    setup is called after the initial evaluation of forces before a run, so we
    must remove the total force here too
    ------------------------------------------------------------------------- */
 void FixFlowGauss::setup(int vflag)
 {
   //need to compute work done if set fix_modify energy yes
   if (thermo_energy)
     workflag=1;
 
   //get total mass of group
   mTot=group->mass(igroup);
   if (mTot <= 0.0)
     error->all(FLERR,"Invalid group mass in fix flow/gauss");
 
   post_force(vflag);
 }
 
 /* ----------------------------------------------------------------------
    this is where Gaussian dynamics constraint is applied
    ------------------------------------------------------------------------- */
 void FixFlowGauss::post_force(int vflag)
 {
   double **f   = atom->f;
   double **v   = atom->v;
 
   int *mask    = atom->mask;
   int *type    = atom->type;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
 
   int nlocal   = atom->nlocal;
 
   int ii,jj;
 
   //find the total force on all atoms
 
   //initialize to zero
   double f_thisProc[3];
   for (ii=0; ii<3; ii++)
     f_thisProc[ii]=0.0;
 
   //add all forces on each processor
   for(ii=0; ii<nlocal; ii++)
     if (mask[ii] & groupbit)
       for (jj=0; jj<3; jj++)
 	if (flow[jj])
 	  f_thisProc[jj] += f[ii][jj];
 
   //add the processor sums together
   MPI_Allreduce(f_thisProc, f_tot, 3, MPI_DOUBLE, MPI_SUM, world);
 
   //compute applied acceleration
   for (ii=0; ii<3; ii++)
     a_app[ii] = -f_tot[ii] / mTot;
 
   //apply added accelleration to each atom
   double f_app[3];
   double peAdded=0.0;
   for( ii = 0; ii<nlocal; ii++)
     if (mask[ii] & groupbit) {
       if (rmass) {
         f_app[0] = a_app[0]*rmass[ii];
         f_app[1] = a_app[1]*rmass[ii];
         f_app[2] = a_app[2]*rmass[ii];
       } else {
         f_app[0] = a_app[0]*mass[type[ii]];
         f_app[1] = a_app[1]*mass[type[ii]];
         f_app[2] = a_app[2]*mass[type[ii]];
       }
 
       f[ii][0] += f_app[0]; //f_app[jj] is 0 if flow[jj] is false
       f[ii][1] += f_app[1];
       f[ii][2] += f_app[2];
 
       //calculate added energy, since more costly, only do this if requested
       if (workflag)
 	peAdded += f_app[0]*v[ii][0] + f_app[1]*v[ii][1] + f_app[2]*v[ii][2];
     }
 
   //finish calculation of work done, sum over all procs
   if (workflag) {
     double pe_tmp=0.0;
     MPI_Allreduce(&peAdded,&pe_tmp,1,MPI_DOUBLE,MPI_SUM,world);
     pe_tot += pe_tmp;
   }
 
 }
 
 /* ----------------------------------------------------------------------
    negative of work done by this fix
    This is only computed if requested, either with fix_modify energy yes, or with the energy keyword. Otherwise returns 0.
    ------------------------------------------------------------------------- */
 double FixFlowGauss::compute_scalar()
 {
   return -pe_tot*dt;
 }
 
 /* ----------------------------------------------------------------------
    return components of applied force
    ------------------------------------------------------------------------- */
 double FixFlowGauss::compute_vector(int n)
 {
   return -f_tot[n];
 }
diff --git a/src/compute.cpp b/src/compute.cpp
index 153116e4d..96bf6ceb5 100644
--- a/src/compute.cpp
+++ b/src/compute.cpp
@@ -1,234 +1,231 @@
 /* ----------------------------------------------------------------------
    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 <stdlib.h>
 #include <string.h>
 #include <ctype.h>
 #include "compute.h"
 #include "atom.h"
 #include "domain.h"
 #include "force.h"
 #include "comm.h"
 #include "group.h"
 #include "modify.h"
 #include "fix.h"
 #include "atom_masks.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 #define DELTA 4
 #define BIG MAXTAGINT
 
 // allocate space for static class instance variable and initialize it
 
 int Compute::instance_total = 0;
 
 /* ---------------------------------------------------------------------- */
 
-Compute::Compute(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
+Compute::Compute(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp),
+  id(NULL), style(NULL),
+  vector(NULL), array(NULL), vector_atom(NULL), array_atom(NULL), vector_local(NULL), array_local(NULL),
+  tlist(NULL), vbiasall(NULL)
 {
   instance_me = instance_total++;
-
+  
   if (narg < 3) error->all(FLERR,"Illegal compute command");
 
   // compute ID, group, and style
   // ID must be all alphanumeric chars or underscores
 
   int n = strlen(arg[0]) + 1;
   id = new char[n];
   strcpy(id,arg[0]);
 
   for (int i = 0; i < n-1; i++)
     if (!isalnum(id[i]) && id[i] != '_')
       error->all(FLERR,
                  "Compute ID must be alphanumeric or underscore characters");
 
   igroup = group->find(arg[1]);
   if (igroup == -1) error->all(FLERR,"Could not find compute group ID");
   groupbit = group->bitmask[igroup];
 
   n = strlen(arg[2]) + 1;
   style = new char[n];
   strcpy(style,arg[2]);
 
   // set child class defaults
 
   scalar_flag = vector_flag = array_flag = 0;
   peratom_flag = local_flag = 0;
   size_vector_variable = size_array_rows_variable = 0;
 
   tempflag = pressflag = peflag = 0;
   pressatomflag = peatomflag = 0;
   create_attribute = 0;
   tempbias = 0;
 
   timeflag = 0;
   comm_forward = comm_reverse = 0;
   dynamic = 0;
   dynamic_group_allow = 1;
 
   invoked_scalar = invoked_vector = invoked_array = -1;
   invoked_peratom = invoked_local = -1;
   invoked_flag = 0;
 
   // set modify defaults
 
   extra_dof = domain->dimension;
   dynamic_user = 0;
   fix_dof = 0;
 
   // setup list of timesteps
 
   ntime = maxtime = 0;
-  tlist = NULL;
-
+  
   // data masks
 
   datamask = ALL_MASK;
   datamask_ext = ALL_MASK;
 
   execution_space = Host;
   datamask_read = ALL_MASK;
   datamask_modify = ALL_MASK;
 
   copymode = 0;
-
-  // force init to zero in case these are used as logicals
-
-  vector = vector_atom = vector_local = NULL;
-  array = array_atom = array_local = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 Compute::~Compute()
 {
   if (copymode) return;
 
   delete [] id;
   delete [] style;
   memory->destroy(tlist);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void Compute::modify_params(int narg, char **arg)
 {
   if (narg == 0) error->all(FLERR,"Illegal compute_modify command");
 
   int iarg = 0;
   while (iarg < narg) {
     if (strcmp(arg[iarg],"extra") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute_modify command");
       extra_dof = force->numeric(FLERR,arg[iarg+1]);
       iarg += 2;
     } else if (strcmp(arg[iarg],"dynamic") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute_modify command");
       if (strcmp(arg[iarg+1],"no") == 0) dynamic_user = 0;
       else if (strcmp(arg[iarg+1],"yes") == 0) dynamic_user = 1;
       else error->all(FLERR,"Illegal compute_modify command");
       iarg += 2;
     } else error->all(FLERR,"Illegal compute_modify command");
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate adjustment in DOF due to fixes
 ------------------------------------------------------------------------- */
 
 void Compute::adjust_dof_fix()
 {
   Fix **fix = modify->fix;
   int nfix = modify->nfix;
 
   fix_dof = 0;
   for (int i = 0; i < nfix; i++)
     if (fix[i]->dof_flag)
       fix_dof += fix[i]->dof(igroup);
 }
 
 /* ----------------------------------------------------------------------
    reset extra_dof to its default value
 ------------------------------------------------------------------------- */
 
 void Compute::reset_extra_dof()
 {
   extra_dof = domain->dimension;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void Compute::reset_extra_compute_fix(const char *)
 {
   error->all(FLERR,
              "Compute does not allow an extra compute or fix to be reset");
 }
 
 /* ----------------------------------------------------------------------
    add ntimestep to list of timesteps the compute will be called on
    do not add if already in list
    search from top downward, since list of times is in decreasing order
 ------------------------------------------------------------------------- */
 
 void Compute::addstep(bigint ntimestep)
 {
   // i = location in list to insert ntimestep
 
   int i;
   for (i = ntime-1; i >= 0; i--) {
     if (ntimestep == tlist[i]) return;
     if (ntimestep < tlist[i]) break;
   }
   i++;
 
   // extend list as needed
 
   if (ntime == maxtime) {
     maxtime += DELTA;
     memory->grow(tlist,maxtime,"compute:tlist");
   }
 
   // move remainder of list upward and insert ntimestep
 
   for (int j = ntime-1; j >= i; j--) tlist[j+1] = tlist[j];
   tlist[i] = ntimestep;
   ntime++;
 }
 
 /* ----------------------------------------------------------------------
    return 1/0 if ntimestep is or is not in list of calling timesteps
    if value(s) on top of list are less than ntimestep, delete them
    search from top downward, since list of times is in decreasing order
 ------------------------------------------------------------------------- */
 
 int Compute::matchstep(bigint ntimestep)
 {
   for (int i = ntime-1; i >= 0; i--) {
     if (ntimestep < tlist[i]) return 0;
     if (ntimestep == tlist[i]) return 1;
     if (ntimestep > tlist[i]) ntime--;
   }
   return 0;
 }
 
 /* ----------------------------------------------------------------------
    clean out list of timesteps to call the compute on
 ------------------------------------------------------------------------- */
 
 void Compute::clearstep()
 {
   ntime = 0;
 }
diff --git a/src/compute_angle.cpp b/src/compute_angle.cpp
index 9301d3ed7..a9fe0f817 100644
--- a/src/compute_angle.cpp
+++ b/src/compute_angle.cpp
@@ -1,80 +1,81 @@
 /* ----------------------------------------------------------------------
    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 <string.h>
 #include "compute_angle.h"
 #include "update.h"
 #include "force.h"
 #include "angle_hybrid.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeAngle::ComputeAngle(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  emine(NULL)
 {
   if (narg != 3) error->all(FLERR,"Illegal compute angle command");
 
   vector_flag = 1;
   extvector = 1;
   peflag = 1;
   timeflag = 1;
 
   // check if bond style hybrid exists
 
   angle = (AngleHybrid *) force->angle_match("hybrid");
   if (!angle)
     error->all(FLERR,"Angle style for compute angle command is not hybrid");
   size_vector = nsub = angle->nstyles;
   
   emine = new double[nsub];
   vector = new double[nsub];
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeAngle::~ComputeAngle()
 {
   delete [] emine;
   delete [] vector;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeAngle::init()
 {
   // recheck angle style in case it has been changed
 
   angle = (AngleHybrid *) force->angle_match("hybrid");
   if (!angle)
     error->all(FLERR,"Angle style for compute angle command is not hybrid");
   if (angle->nstyles != nsub) 
     error->all(FLERR,"Angle style for compute angle command has changed");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeAngle::compute_vector()
 {
   invoked_vector = update->ntimestep;
   if (update->eflag_global != invoked_vector)
     error->all(FLERR,"Energy was not tallied on needed timestep");
 
   for (int i = 0; i < nsub; i++)
     emine[i] = angle->styles[i]->energy;
 
   MPI_Allreduce(emine,vector,nsub,MPI_DOUBLE,MPI_SUM,world);
 }
diff --git a/src/compute_angle_local.cpp b/src/compute_angle_local.cpp
index 031d4856b..2ea78311a 100644
--- a/src/compute_angle_local.cpp
+++ b/src/compute_angle_local.cpp
@@ -1,246 +1,245 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
 #include <string.h>
 #include "compute_angle_local.h"
 #include "atom.h"
 #include "atom_vec.h"
 #include "molecule.h"
 #include "update.h"
 #include "domain.h"
 #include "force.h"
 #include "angle.h"
 #include "math_const.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 using namespace MathConst;
 
 #define DELTA 10000
 
 /* ---------------------------------------------------------------------- */
 
 ComputeAngleLocal::ComputeAngleLocal(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  vector(NULL), array(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute angle/local command");
 
   if (atom->avec->angles_allow == 0)
     error->all(FLERR,"Compute angle/local used when angles are not allowed");
 
   local_flag = 1;
   nvalues = narg - 3;
   if (nvalues == 1) size_local_cols = 0;
   else size_local_cols = nvalues;
 
   tflag = eflag = -1;
   nvalues = 0;
 
   for (int iarg = 3; iarg < narg; iarg++) {
     if (strcmp(arg[iarg],"theta") == 0) tflag = nvalues++;
     else if (strcmp(arg[iarg],"eng") == 0) eflag = nvalues++;
     else error->all(FLERR,"Invalid keyword in compute angle/local command");
   }
 
   nmax = 0;
-  vector = NULL;
-  array = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeAngleLocal::~ComputeAngleLocal()
 {
   memory->destroy(vector);
   memory->destroy(array);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeAngleLocal::init()
 {
   if (force->angle == NULL)
     error->all(FLERR,"No angle style is defined for compute angle/local");
 
   // do initial memory allocation so that memory_usage() is correct
 
   ncount = compute_angles(0);
   if (ncount > nmax) reallocate(ncount);
   size_local_rows = ncount;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeAngleLocal::compute_local()
 {
   invoked_local = update->ntimestep;
 
   // count local entries and compute angle info
 
   ncount = compute_angles(0);
   if (ncount > nmax) reallocate(ncount);
   size_local_rows = ncount;
   ncount = compute_angles(1);
 }
 
 /* ----------------------------------------------------------------------
    count angles and compute angle info on this proc
    only count if 2nd atom is the one storing the angle
    all atoms in interaction must be in group
    all atoms in interaction must be known to proc
    if angle is deleted (type = 0), do not count
    if angle is turned off (type < 0), still count
    if flag is set, compute requested info about angle
    if angle is turned off (type < 0), energy = 0.0
 ------------------------------------------------------------------------- */
 
 int ComputeAngleLocal::compute_angles(int flag)
 {
   int i,m,n,na,atom1,atom2,atom3,imol,iatom,atype;
   tagint tagprev;
   double delx1,dely1,delz1,delx2,dely2,delz2;
   double rsq1,rsq2,r1,r2,c;
   double *tbuf,*ebuf;
 
   double **x = atom->x;
   tagint *tag = atom->tag;
   int *num_angle = atom->num_angle;
   tagint **angle_atom1 = atom->angle_atom1;
   tagint **angle_atom2 = atom->angle_atom2;
   tagint **angle_atom3 = atom->angle_atom3;
   int **angle_type = atom->angle_type;
   int *mask = atom->mask;
 
   int *molindex = atom->molindex;
   int *molatom = atom->molatom;
   Molecule **onemols = atom->avec->onemols;
 
   int nlocal = atom->nlocal;
   int molecular = atom->molecular;
 
   if (flag) {
     if (nvalues == 1) {
       if (tflag >= 0) tbuf = vector;
       if (eflag >= 0) ebuf = vector;
     } else {
       if (tflag >= 0 && array) tbuf = &array[0][tflag];
       else tbuf = NULL;
       if (eflag >= 0 && array) ebuf = &array[0][eflag];
       else ebuf = NULL;
     }
   }
 
   Angle *angle = force->angle;
 
   m = n = 0;
   for (atom2 = 0; atom2 < nlocal; atom2++) {
     if (!(mask[atom2] & groupbit)) continue;
 
     if (molecular == 1) na = num_angle[atom2];
     else {
       if (molindex[atom2] < 0) continue;
       imol = molindex[atom2];
       iatom = molatom[atom2];
       na = onemols[imol]->num_angle[iatom];
     }
 
     for (i = 0; i < na; i++) {
       if (molecular == 1) {
         if (tag[atom2] != angle_atom2[atom2][i]) continue;
         atype = angle_type[atom2][i];
         atom1 = atom->map(angle_atom1[atom2][i]);
         atom3 = atom->map(angle_atom3[atom2][i]);
       } else {
         if (tag[atom2] != onemols[imol]->angle_atom2[atom2][i]) continue;
         tagprev = tag[atom2] - iatom - 1;
         atype = atom->map(onemols[imol]->angle_type[atom2][i]);
         atom1 = atom->map(onemols[imol]->angle_atom1[atom2][i]+tagprev);
         atom3 = atom->map(onemols[imol]->angle_atom3[atom2][i]+tagprev);
       }
 
       if (atom1 < 0 || !(mask[atom1] & groupbit)) continue;
       if (atom3 < 0 || !(mask[atom3] & groupbit)) continue;
       if (atype == 0) continue;
 
       if (flag) {
         if (tflag >= 0) {
           delx1 = x[atom1][0] - x[atom2][0];
           dely1 = x[atom1][1] - x[atom2][1];
           delz1 = x[atom1][2] - x[atom2][2];
           domain->minimum_image(delx1,dely1,delz1);
 
           rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1;
           r1 = sqrt(rsq1);
 
           delx2 = x[atom3][0] - x[atom2][0];
           dely2 = x[atom3][1] - x[atom2][1];
           delz2 = x[atom3][2] - x[atom2][2];
           domain->minimum_image(delx2,dely2,delz2);
 
           rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
           r2 = sqrt(rsq2);
 
           // c = cosine of angle
 
           c = delx1*delx2 + dely1*dely2 + delz1*delz2;
           c /= r1*r2;
           if (c > 1.0) c = 1.0;
           if (c < -1.0) c = -1.0;
           tbuf[n] = 180.0*acos(c)/MY_PI;
         }
 
         if (eflag >= 0) {
           if (atype > 0)
             ebuf[n] = angle->single(atype,atom1,atom2,atom3);
           else ebuf[n] = 0.0;
         }
         n += nvalues;
       }
 
       m++;
     }
   }
 
   return m;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeAngleLocal::reallocate(int n)
 {
   // grow vector or array and indices array
 
   while (nmax < n) nmax += DELTA;
 
   if (nvalues == 1) {
     memory->destroy(vector);
     memory->create(vector,nmax,"bond/local:vector");
     vector_local = vector;
   } else {
     memory->destroy(array);
     memory->create(array,nmax,nvalues,"bond/local:array");
     array_local = array;
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeAngleLocal::memory_usage()
 {
   double bytes = nmax*nvalues * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_angmom_chunk.cpp b/src/compute_angmom_chunk.cpp
index 5e88f5bc2..98c6ea044 100644
--- a/src/compute_angmom_chunk.cpp
+++ b/src/compute_angmom_chunk.cpp
@@ -1,257 +1,255 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_angmom_chunk.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "compute_chunk_atom.h"
 #include "domain.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeAngmomChunk::ComputeAngmomChunk(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  idchunk(NULL), massproc(NULL), masstotal(NULL), com(NULL), comall(NULL), angmom(NULL), angmomall(NULL)
 {
   if (narg != 4) error->all(FLERR,"Illegal compute angmom/chunk command");
 
   array_flag = 1;
   size_array_cols = 3;
   size_array_rows = 0;
   size_array_rows_variable = 1;
   extarray = 0;
 
   // ID of compute chunk/atom
 
   int n = strlen(arg[3]) + 1;
   idchunk = new char[n];
   strcpy(idchunk,arg[3]);
 
   init();
 
   // chunk-based data
 
   nchunk = 1;
   maxchunk = 0;
-  massproc = masstotal = NULL;
-  com = comall = NULL;
-  angmom = angmomall = NULL;
   allocate();
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeAngmomChunk::~ComputeAngmomChunk()
 {
   delete [] idchunk;
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(com);
   memory->destroy(comall);
   memory->destroy(angmom);
   memory->destroy(angmomall);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeAngmomChunk::init()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute < 0)
     error->all(FLERR,"Chunk/atom compute does not exist for "
                "compute angmom/chunk");
   cchunk = (ComputeChunkAtom *) modify->compute[icompute];
   if (strcmp(cchunk->style,"chunk/atom") != 0)
     error->all(FLERR,"Compute angmom/chunk does not use chunk/atom compute");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeAngmomChunk::compute_array()
 {
   int i,index;
   double dx,dy,dz,massone;
   double unwrap[3];
 
   invoked_array = update->ntimestep;
 
   // compute chunk/atom assigns atoms to chunk IDs
   // extract ichunk index vector from compute
   // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
 
   nchunk = cchunk->setup_chunks();
   cchunk->compute_ichunk();
   int *ichunk = cchunk->ichunk;
 
   if (nchunk > maxchunk) allocate();
   size_array_rows = nchunk;
 
   // zero local per-chunk values
 
   for (int i = 0; i < nchunk; i++) {
     massproc[i] = 0.0;
     com[i][0] = com[i][1] = com[i][2] = 0.0;
     angmom[i][0] = angmom[i][1] = angmom[i][2] = 0.0;
   }
 
   // compute COM for each chunk
 
   double **x = atom->x;
   int *mask = atom->mask;
   int *type = atom->type;
   imageint *image = atom->image;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       domain->unmap(x[i],image[i],unwrap);
       massproc[index] += massone;
       com[index][0] += unwrap[0] * massone;
       com[index][1] += unwrap[1] * massone;
       com[index][2] += unwrap[2] * massone;
     }
 
   MPI_Allreduce(massproc,masstotal,nchunk,MPI_DOUBLE,MPI_SUM,world);
   MPI_Allreduce(&com[0][0],&comall[0][0],3*nchunk,MPI_DOUBLE,MPI_SUM,world);
 
   for (int i = 0; i < nchunk; i++) {
     if (masstotal[i] > 0.0) {
       comall[i][0] /= masstotal[i];
       comall[i][1] /= masstotal[i];
       comall[i][2] /= masstotal[i];
     }
   }
 
   // compute angmom for each chunk
 
   double **v = atom->v;
 
   for (i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       domain->unmap(x[i],image[i],unwrap);
       dx = unwrap[0] - comall[index][0];
       dy = unwrap[1] - comall[index][1];
       dz = unwrap[2] - comall[index][2];
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       angmom[index][0] += massone * (dy*v[i][2] - dz*v[i][1]);
       angmom[index][1] += massone * (dz*v[i][0] - dx*v[i][2]);
       angmom[index][2] += massone * (dx*v[i][1] - dy*v[i][0]);
     }
 
   MPI_Allreduce(&angmom[0][0],&angmomall[0][0],3*nchunk,
                 MPI_DOUBLE,MPI_SUM,world);
 }
 
 /* ----------------------------------------------------------------------
    lock methods: called by fix ave/time
    these methods insure vector/array size is locked for Nfreq epoch
      by passing lock info along to compute chunk/atom
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    increment lock counter
 ------------------------------------------------------------------------- */
 
 void ComputeAngmomChunk::lock_enable()
 {
   cchunk->lockcount++;
 }
 
 /* ----------------------------------------------------------------------
    decrement lock counter in compute chunk/atom, it if still exists
 ------------------------------------------------------------------------- */
 
 void ComputeAngmomChunk::lock_disable()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute >= 0) {
     cchunk = (ComputeChunkAtom *) modify->compute[icompute];
     cchunk->lockcount--;
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate and return # of chunks = length of vector/array
 ------------------------------------------------------------------------- */
 
 int ComputeAngmomChunk::lock_length()
 {
   nchunk = cchunk->setup_chunks();
   return nchunk;
 }
 
 /* ----------------------------------------------------------------------
    set the lock from startstep to stopstep
 ------------------------------------------------------------------------- */
 
 void ComputeAngmomChunk::lock(Fix *fixptr, bigint startstep, bigint stopstep)
 {
   cchunk->lock(fixptr,startstep,stopstep);
 }
 
 /* ----------------------------------------------------------------------
    unset the lock
 ------------------------------------------------------------------------- */
 
 void ComputeAngmomChunk::unlock(Fix *fixptr)
 {
   cchunk->unlock(fixptr);
 }
 
 /* ----------------------------------------------------------------------
    free and reallocate per-chunk arrays
 ------------------------------------------------------------------------- */
 
 void ComputeAngmomChunk::allocate()
 {
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(com);
   memory->destroy(comall);
   memory->destroy(angmom);
   memory->destroy(angmomall);
   maxchunk = nchunk;
   memory->create(massproc,maxchunk,"angmom/chunk:massproc");
   memory->create(masstotal,maxchunk,"angmom/chunk:masstotal");
   memory->create(com,maxchunk,3,"angmom/chunk:com");
   memory->create(comall,maxchunk,3,"angmom/chunk:comall");
   memory->create(angmom,maxchunk,3,"angmom/chunk:angmom");
   memory->create(angmomall,maxchunk,3,"angmom/chunk:angmomall");
   array = angmomall;
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeAngmomChunk::memory_usage()
 {
   double bytes = (bigint) maxchunk * 2 * sizeof(double);
   bytes += (bigint) maxchunk * 2*3 * sizeof(double);
   bytes += (bigint) maxchunk * 2*3 * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_bond.cpp b/src/compute_bond.cpp
index 241702d67..29869713e 100644
--- a/src/compute_bond.cpp
+++ b/src/compute_bond.cpp
@@ -1,80 +1,81 @@
 /* ----------------------------------------------------------------------
    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 <string.h>
 #include "compute_bond.h"
 #include "update.h"
 #include "force.h"
 #include "bond_hybrid.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeBond::ComputeBond(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  emine(NULL)
 {
   if (narg != 3) error->all(FLERR,"Illegal compute bond command");
 
   vector_flag = 1;
   extvector = 1;
   peflag = 1;
   timeflag = 1;
 
   // check if bond style hybrid exists
 
   bond = (BondHybrid *) force->bond_match("hybrid");
   if (!bond)
     error->all(FLERR,"Bond style for compute bond command is not hybrid");
   size_vector = nsub = bond->nstyles;
   
   emine = new double[nsub];
   vector = new double[nsub];
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeBond::~ComputeBond()
 {
   delete [] emine;
   delete [] vector;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeBond::init()
 {
   // recheck bond style in case it has been changed
 
   bond = (BondHybrid *) force->bond_match("hybrid");
   if (!bond)
     error->all(FLERR,"Bond style for compute bond command is not hybrid");
   if (bond->nstyles != nsub) 
     error->all(FLERR,"Bond style for compute bond command has changed");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeBond::compute_vector()
 {
   invoked_vector = update->ntimestep;
   if (update->eflag_global != invoked_vector)
     error->all(FLERR,"Energy was not tallied on needed timestep");
 
   for (int i = 0; i < nsub; i++)
     emine[i] = bond->styles[i]->energy;
 
   MPI_Allreduce(emine,vector,nsub,MPI_DOUBLE,MPI_SUM,world);
 }
diff --git a/src/compute_bond_local.cpp b/src/compute_bond_local.cpp
index 9cea55de5..f7917acd2 100644
--- a/src/compute_bond_local.cpp
+++ b/src/compute_bond_local.cpp
@@ -1,231 +1,230 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
 #include <string.h>
 #include "compute_bond_local.h"
 #include "atom.h"
 #include "atom_vec.h"
 #include "molecule.h"
 #include "update.h"
 #include "domain.h"
 #include "force.h"
 #include "bond.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 #define DELTA 10000
 
 enum{DIST,ENG,FORCE};
 
 /* ---------------------------------------------------------------------- */
 
 ComputeBondLocal::ComputeBondLocal(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  bstyle(NULL), vector(NULL), array(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute bond/local command");
 
   if (atom->avec->bonds_allow == 0)
     error->all(FLERR,"Compute bond/local used when bonds are not allowed");
 
   local_flag = 1;
   nvalues = narg - 3;
   if (nvalues == 1) size_local_cols = 0;
   else size_local_cols = nvalues;
 
   bstyle = new int[nvalues];
 
   nvalues = 0;
   for (int iarg = 3; iarg < narg; iarg++) {
     if (strcmp(arg[iarg],"dist") == 0) bstyle[nvalues++] = DIST;
     else if (strcmp(arg[iarg],"eng") == 0) bstyle[nvalues++] = ENG;
     else if (strcmp(arg[iarg],"force") == 0) bstyle[nvalues++] = FORCE;
     else error->all(FLERR,"Invalid keyword in compute bond/local command");
   }
 
   // set singleflag if need to call bond->single()
 
   singleflag = 0;
   for (int i = 0; i < nvalues; i++)
     if (bstyle[i] != DIST) singleflag = 1;
 
   nmax = 0;
-  vector = NULL;
-  array = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeBondLocal::~ComputeBondLocal()
 {
   memory->destroy(vector);
   memory->destroy(array);
   delete [] bstyle;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeBondLocal::init()
 {
   if (force->bond == NULL)
     error->all(FLERR,"No bond style is defined for compute bond/local");
 
   // do initial memory allocation so that memory_usage() is correct
 
   ncount = compute_bonds(0);
   if (ncount > nmax) reallocate(ncount);
   size_local_rows = ncount;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeBondLocal::compute_local()
 {
   invoked_local = update->ntimestep;
 
   // count local entries and compute bond info
 
   ncount = compute_bonds(0);
   if (ncount > nmax) reallocate(ncount);
   size_local_rows = ncount;
   ncount = compute_bonds(1);
 }
 
 /* ----------------------------------------------------------------------
    count bonds and compute bond info on this proc
    only count bond once if newton_bond is off
    all atoms in interaction must be in group
    all atoms in interaction must be known to proc
    if bond is deleted (type = 0), do not count
    if bond is turned off (type < 0), still count
    if flag is set, compute requested info about bond
    if bond is turned off (type < 0), energy = 0.0
 ------------------------------------------------------------------------- */
 
 int ComputeBondLocal::compute_bonds(int flag)
 {
   int i,m,n,nb,atom1,atom2,imol,iatom,btype;
   tagint tagprev;
   double delx,dely,delz,rsq;
   double *ptr;
 
   double **x = atom->x;
   tagint *tag = atom->tag;
   int *num_bond = atom->num_bond;
   tagint **bond_atom = atom->bond_atom;
   int **bond_type = atom->bond_type;
   int *mask = atom->mask;
 
   int *molindex = atom->molindex;
   int *molatom = atom->molatom;
   Molecule **onemols = atom->avec->onemols;
 
   int nlocal = atom->nlocal;
   int newton_bond = force->newton_bond;
   int molecular = atom->molecular;
 
   Bond *bond = force->bond;
   double eng,fbond;
 
   m = n = 0;
   for (atom1 = 0; atom1 < nlocal; atom1++) {
     if (!(mask[atom1] & groupbit)) continue;
 
     if (molecular == 1) nb = num_bond[atom1];
     else {
       if (molindex[atom1] < 0) continue;
       imol = molindex[atom1];
       iatom = molatom[atom1];
       nb = onemols[imol]->num_bond[iatom];
     }
 
     for (i = 0; i < nb; i++) {
       if (molecular == 1) {
         btype = bond_type[atom1][i];
         atom2 = atom->map(bond_atom[atom1][i]);
       } else {
         tagprev = tag[atom1] - iatom - 1;
         btype = atom->map(onemols[imol]->bond_type[iatom][i]);
         atom2 = atom->map(onemols[imol]->bond_atom[iatom][i]+tagprev);
       }
 
       if (atom2 < 0 || !(mask[atom2] & groupbit)) continue;
       if (newton_bond == 0 && tag[atom1] > tag[atom2]) continue;
       if (btype == 0) continue;
 
       if (flag) {
         delx = x[atom1][0] - x[atom2][0];
         dely = x[atom1][1] - x[atom2][1];
         delz = x[atom1][2] - x[atom2][2];
         domain->minimum_image(delx,dely,delz);
         rsq = delx*delx + dely*dely + delz*delz;
 
         if (singleflag && (btype > 0))
           eng = bond->single(btype,rsq,atom1,atom2,fbond);
         else eng = fbond = 0.0;
 
         if (nvalues == 1) ptr = &vector[m];
         else ptr = array[m];
 
         for (n = 0; n < nvalues; n++) {
           switch (bstyle[n]) {
           case DIST:
             ptr[n] = sqrt(rsq);
             break;
           case ENG:
             ptr[n] = eng;
             break;
           case FORCE:
             ptr[n] = sqrt(rsq)*fbond;
             break;
           }
         }
       }
 
       m++;
     }
   }
 
   return m;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeBondLocal::reallocate(int n)
 {
   // grow vector or array and indices array
 
   while (nmax < n) nmax += DELTA;
 
   if (nvalues == 1) {
     memory->destroy(vector);
     memory->create(vector,nmax,"bond/local:vector");
     vector_local = vector;
   } else {
     memory->destroy(array);
     memory->create(array,nmax,nvalues,"bond/local:array");
     array_local = array;
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeBondLocal::memory_usage()
 {
   double bytes = nmax*nvalues * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_centro_atom.cpp b/src/compute_centro_atom.cpp
index 3640b1126..3f88095d7 100644
--- a/src/compute_centro_atom.cpp
+++ b/src/compute_centro_atom.cpp
@@ -1,441 +1,438 @@
 /* ----------------------------------------------------------------------
    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: Michel Perez (U Lyon) for non-fcc lattices
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include <stdlib.h>
 #include "compute_centro_atom.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "neighbor.h"
 #include "neigh_list.h"
 #include "neigh_request.h"
 #include "force.h"
 #include "pair.h"
 #include "comm.h"
 #include "math_extra.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeCentroAtom::ComputeCentroAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  distsq(NULL), nearest(NULL), centro(NULL)
 {
   if (narg < 4 || narg > 6) error->all(FLERR,"Illegal compute centro/atom command");
 
   if (strcmp(arg[3],"fcc") == 0) nnn = 12;
   else if (strcmp(arg[3],"bcc") == 0) nnn = 8;
   else nnn = force->inumeric(FLERR,arg[3]);
 
   // default values
 
   axes_flag = 0;
   
   // optional keywords
   
   int iarg = 4;
   while (iarg < narg) {
     if (strcmp(arg[iarg],"axes") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute centro/atom command3");
       if (strcmp(arg[iarg+1],"yes") == 0) axes_flag = 1;
       else if (strcmp(arg[iarg+1],"no") == 0) axes_flag = 0;
       else error->all(FLERR,"Illegal compute centro/atom command2");
       iarg += 2;
     } else error->all(FLERR,"Illegal compute centro/atom command1");
   }
 
   if (nnn <= 0 || nnn % 2)
     error->all(FLERR,"Illegal neighbor value for compute centro/atom command");
 
   peratom_flag = 1;
   if (!axes_flag) size_peratom_cols = 0;
   else size_peratom_cols = 10;
   
   nmax = 0;
-  centro = NULL;
   maxneigh = 0;
-  distsq = NULL;
-  nearest = NULL;
-  array_atom = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeCentroAtom::~ComputeCentroAtom()
 {
   memory->destroy(centro);
   memory->destroy(distsq);
   memory->destroy(nearest);
   if (axes_flag) memory->destroy(array_atom);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeCentroAtom::init()
 {
   if (force->pair == NULL)
     error->all(FLERR,"Compute centro/atom requires a pair style be defined");
 
   int count = 0;
   for (int i = 0; i < modify->ncompute; i++)
     if (strcmp(modify->compute[i]->style,"centro/atom") == 0) count++;
   if (count > 1 && comm->me == 0)
     error->warning(FLERR,"More than one compute centro/atom");
 
   // need an occasional full neighbor list
 
   int irequest = neighbor->request(this,instance_me);
   neighbor->requests[irequest]->pair = 0;
   neighbor->requests[irequest]->compute = 1;
   neighbor->requests[irequest]->half = 0;
   neighbor->requests[irequest]->full = 1;
   neighbor->requests[irequest]->occasional = 1;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeCentroAtom::init_list(int id, NeighList *ptr)
 {
   list = ptr;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeCentroAtom::compute_peratom()
 {
   int i,j,k,ii,jj,kk,n,inum,jnum;
   double xtmp,ytmp,ztmp,delx,dely,delz,rsq,value;
   int *ilist,*jlist,*numneigh,**firstneigh;
 
   invoked_peratom = update->ntimestep;
 
   // grow centro array if necessary
   // grow array_atom array if axes_flag set
 
   if (atom->nmax > nmax) {
     if (!axes_flag) {
       memory->destroy(centro);
       nmax = atom->nmax;
       memory->create(centro,nmax,"centro/atom:centro");
       vector_atom = centro;
     } else {
       memory->destroy(centro);
       memory->destroy(array_atom);
       nmax = atom->nmax;
       memory->create(centro,nmax,"centro/atom:centro");
       memory->create(array_atom,nmax,size_peratom_cols,"centro/atom:array_atom");
     }
   }
 
   // invoke full neighbor list (will copy or build if necessary)
 
   neighbor->build_one(list);
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
   // npairs = number of unique pairs
 
   int nhalf = nnn/2;
   int npairs = nnn * (nnn-1) / 2;
   double *pairs = new double[npairs];
 
   // compute centro-symmetry parameter for each atom in group
   // use full neighbor list
 
   double **x = atom->x;
   int *mask = atom->mask;
   double cutsq = force->pair->cutforce * force->pair->cutforce;
 
   for (ii = 0; ii < inum; ii++) {
     i = ilist[ii];
     if (mask[i] & groupbit) {
       xtmp = x[i][0];
       ytmp = x[i][1];
       ztmp = x[i][2];
       jlist = firstneigh[i];
       jnum = numneigh[i];
 
       // insure distsq and nearest arrays are long enough
 
       if (jnum > maxneigh) {
         memory->destroy(distsq);
         memory->destroy(nearest);
         maxneigh = jnum;
         memory->create(distsq,maxneigh,"centro/atom:distsq");
         memory->create(nearest,maxneigh,"centro/atom:nearest");
       }
 
       // loop over list of all neighbors within force cutoff
       // distsq[] = distance sq to each
       // nearest[] = atom indices of neighbors
 
       n = 0;
       for (jj = 0; jj < jnum; jj++) {
         j = jlist[jj];
         j &= NEIGHMASK;
 
         delx = xtmp - x[j][0];
         dely = ytmp - x[j][1];
         delz = ztmp - x[j][2];
         rsq = delx*delx + dely*dely + delz*delz;
         if (rsq < cutsq) {
           distsq[n] = rsq;
           nearest[n++] = j;
         }
       }
 
       // check whether to include local crystal symmetry axes
       
       if (!axes_flag) {
 	
 	// if not nnn neighbors, centro = 0.0
 
 	if (n < nnn) {
 	  centro[i] = 0.0;
 	  continue;
 	}
 
 	// store nnn nearest neighs in 1st nnn locations of distsq and nearest
 
 	select2(nnn,n,distsq,nearest);
 
 	// R = Ri + Rj for each of npairs i,j pairs among nnn neighbors
 	// pairs = squared length of each R
 
 	n = 0;
 	for (j = 0; j < nnn; j++) {
 	  jj = nearest[j];
 	  for (k = j+1; k < nnn; k++) {
 	    kk = nearest[k];
 	    delx = x[jj][0] + x[kk][0] - 2.0*xtmp;
 	    dely = x[jj][1] + x[kk][1] - 2.0*ytmp;
 	    delz = x[jj][2] + x[kk][2] - 2.0*ztmp;
 	    pairs[n++] = delx*delx + dely*dely + delz*delz;
 
 	  }
 	}
 	
       } else {
 	
 	// calculate local crystal symmetry axes
 
 	// rsq1, rsq2 are two smallest values of R^2 
 	// R1, R2 are corresponding vectors Ri - Rj
 	// R3 is normal to R1, R2
 
 	double rsq1,rsq2;
 
 	double* r1 = &array_atom[i][1];
 	double* r2 = &array_atom[i][4];
 	double* r3 = &array_atom[i][7];
 	
 	if (n < nnn) {
 	  centro[i] = 0.0;
 	  MathExtra::zero3(r1);
 	  MathExtra::zero3(r2);
 	  MathExtra::zero3(r3);
 	  continue;
 	}
 
 	// store nnn nearest neighs in 1st nnn locations of distsq and nearest
 
 	select2(nnn,n,distsq,nearest);
 
 	n = 0;
 	rsq1 = rsq2 = cutsq;
 	for (j = 0; j < nnn; j++) {
 	  jj = nearest[j];
 	  for (k = j+1; k < nnn; k++) {
 	    kk = nearest[k];
 	    delx = x[jj][0] + x[kk][0] - 2.0*xtmp;
 	    dely = x[jj][1] + x[kk][1] - 2.0*ytmp;
 	    delz = x[jj][2] + x[kk][2] - 2.0*ztmp;
 	    double rsq = delx*delx + dely*dely + delz*delz;
 	    pairs[n++] = rsq;
 	    
 	    if (rsq < rsq2) {
 	      if (rsq < rsq1) {
 		rsq2 = rsq1;
 		MathExtra::copy3(r1, r2);
 		rsq1 = rsq;
 		MathExtra::sub3(x[jj],x[kk],r1);
 	      } else {
 		rsq2 = rsq;
 		MathExtra::sub3(x[jj],x[kk],r2);
 	      }
             }
 	  }
 	}
 
 	MathExtra::cross3(r1,r2,r3);
 	MathExtra::norm3(r1);
 	MathExtra::norm3(r2);
 	MathExtra::norm3(r3);
       }
       
       // store nhalf smallest pair distances in 1st nhalf locations of pairs
       
       select(nhalf,npairs,pairs);
       
       // centrosymmetry = sum of nhalf smallest squared values
 
       value = 0.0;
       for (j = 0; j < nhalf; j++) value += pairs[j];
       centro[i] = value;
 
     } else {
       centro[i] = 0.0;
       if (axes_flag) {
 	MathExtra::zero3(&array_atom[i][1]);
 	MathExtra::zero3(&array_atom[i][4]);
 	MathExtra::zero3(&array_atom[i][7]);
       }
     }
   }
 
   delete [] pairs;
 
   if (axes_flag)
     for (ii = 0; ii < inum; ii++) {
       i = ilist[ii];
       if (mask[i] & groupbit)
 	array_atom[i][0] = centro[i];
     }
 }
 
 /* ----------------------------------------------------------------------
    2 select routines from Numerical Recipes (slightly modified)
    find k smallest values in array of length n
    2nd routine sorts auxiliary array at same time
 ------------------------------------------------------------------------- */
 
 #define SWAP(a,b)   tmp = a; a = b; b = tmp;
 #define ISWAP(a,b) itmp = a; a = b; b = itmp;
 
 void ComputeCentroAtom::select(int k, int n, double *arr)
 {
   int i,ir,j,l,mid;
   double a,tmp;
 
   arr--;
   l = 1;
   ir = n;
   for (;;) {
     if (ir <= l+1) {
       if (ir == l+1 && arr[ir] < arr[l]) {
         SWAP(arr[l],arr[ir])
       }
       return;
     } else {
       mid=(l+ir) >> 1;
       SWAP(arr[mid],arr[l+1])
       if (arr[l] > arr[ir]) {
         SWAP(arr[l],arr[ir])
       }
       if (arr[l+1] > arr[ir]) {
         SWAP(arr[l+1],arr[ir])
       }
       if (arr[l] > arr[l+1]) {
         SWAP(arr[l],arr[l+1])
       }
       i = l+1;
       j = ir;
       a = arr[l+1];
       for (;;) {
         do i++; while (arr[i] < a);
         do j--; while (arr[j] > a);
         if (j < i) break;
         SWAP(arr[i],arr[j])
       }
       arr[l+1] = arr[j];
       arr[j] = a;
       if (j >= k) ir = j-1;
       if (j <= k) l = i;
     }
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeCentroAtom::select2(int k, int n, double *arr, int *iarr)
 {
   int i,ir,j,l,mid,ia,itmp;
   double a,tmp;
 
   arr--;
   iarr--;
   l = 1;
   ir = n;
   for (;;) {
     if (ir <= l+1) {
       if (ir == l+1 && arr[ir] < arr[l]) {
         SWAP(arr[l],arr[ir])
         ISWAP(iarr[l],iarr[ir])
       }
       return;
     } else {
       mid=(l+ir) >> 1;
       SWAP(arr[mid],arr[l+1])
       ISWAP(iarr[mid],iarr[l+1])
       if (arr[l] > arr[ir]) {
         SWAP(arr[l],arr[ir])
         ISWAP(iarr[l],iarr[ir])
       }
       if (arr[l+1] > arr[ir]) {
         SWAP(arr[l+1],arr[ir])
         ISWAP(iarr[l+1],iarr[ir])
       }
       if (arr[l] > arr[l+1]) {
         SWAP(arr[l],arr[l+1])
         ISWAP(iarr[l],iarr[l+1])
       }
       i = l+1;
       j = ir;
       a = arr[l+1];
       ia = iarr[l+1];
       for (;;) {
         do i++; while (arr[i] < a);
         do j--; while (arr[j] > a);
         if (j < i) break;
         SWAP(arr[i],arr[j])
         ISWAP(iarr[i],iarr[j])
       }
       arr[l+1] = arr[j];
       arr[j] = a;
       iarr[l+1] = iarr[j];
       iarr[j] = ia;
       if (j >= k) ir = j-1;
       if (j <= k) l = i;
     }
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based array
 ------------------------------------------------------------------------- */
 
 double ComputeCentroAtom::memory_usage()
 {
   double bytes = nmax * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_chunk_atom.cpp b/src/compute_chunk_atom.cpp
index b9286ea48..7b578611f 100644
--- a/src/compute_chunk_atom.cpp
+++ b/src/compute_chunk_atom.cpp
@@ -1,2002 +1,2005 @@
 /* ----------------------------------------------------------------------
    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.
 ------------------------------------------------------------------------- */
 
 // NOTE: allow for bin center to be variables for sphere/cylinder
 
 #include <mpi.h>
 #include <string.h>
 #include <stdlib.h>
 #include "compute_chunk_atom.h"
 #include "atom.h"
 #include "update.h"
 #include "force.h"
 #include "domain.h"
 #include "region.h"
 #include "lattice.h"
 #include "modify.h"
 #include "fix_store.h"
 #include "comm.h"
 #include "group.h"
 #include "input.h"
 #include "variable.h"
 #include "math_const.h"
 #include "memory.h"
 #include "error.h"
 
 #include <map>
 
 using namespace LAMMPS_NS;
 using namespace MathConst;
 
 enum{BIN1D,BIN2D,BIN3D,BINSPHERE,BINCYLINDER,
      TYPE,MOLECULE,COMPUTE,FIX,VARIABLE};
 enum{LOWER,CENTER,UPPER,COORD};
 enum{BOX,LATTICE,REDUCED};
 enum{NODISCARD,MIXED,YESDISCARD};
 enum{ONCE,NFREQ,EVERY};              // used in several files
 enum{LIMITMAX,LIMITEXACT};
 
 #define IDMAX 1024*1024
 #define INVOKED_PERATOM 8
 
 // allocate space for static class variable
 
 ComputeChunkAtom *ComputeChunkAtom::cptr;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeChunkAtom::ComputeChunkAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  id_fix(NULL), chunk(NULL), ichunk(NULL), exclude(NULL),
+  chunk_volume_vec(NULL), coord(NULL), chunkID(NULL), idregion(NULL), cfvid(NULL), 
+  hash(NULL), varatom(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute chunk/atom command");
 
   peratom_flag = 1;
   size_peratom_cols = 0;
   create_attribute = 1;
 
   // chunk style and its args
 
   int iarg;
 
   binflag = 0;
   ncoord = 0;
   cfvid = NULL;
 
   if (strcmp(arg[3],"bin/1d") == 0) {
     binflag = 1;
     which = BIN1D;
     ncoord = 1;
     iarg = 4;
     readdim(narg,arg,iarg,0);
     iarg += 3;
   } else if (strcmp(arg[3],"bin/2d") == 0) {
     binflag = 1;
     which = BIN2D;
     ncoord = 2;
     iarg = 4;
     readdim(narg,arg,iarg,0);
     readdim(narg,arg,iarg+3,1);
     iarg += 6;
   } else if (strcmp(arg[3],"bin/3d") == 0) {
     binflag = 1;
     which = BIN3D;
     ncoord = 3;
     iarg = 4;
     readdim(narg,arg,iarg,0);
     readdim(narg,arg,iarg+3,1);
     readdim(narg,arg,iarg+6,2);
     iarg += 9;
 
   } else if (strcmp(arg[3],"bin/sphere") == 0) {
     binflag = 1;
     which = BINSPHERE;
     ncoord = 1;
     iarg = 4;
     if (iarg+6 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
     sorigin_user[0] = force->numeric(FLERR,arg[iarg]);
     sorigin_user[1] = force->numeric(FLERR,arg[iarg+1]);
     sorigin_user[2] = force->numeric(FLERR,arg[iarg+2]);
     sradmin_user = force->numeric(FLERR,arg[iarg+3]);
     sradmax_user = force->numeric(FLERR,arg[iarg+4]);
     nsbin = force->inumeric(FLERR,arg[iarg+5]);
     iarg += 6;
   } else if (strcmp(arg[3],"bin/cylinder") == 0) {
     binflag = 1;
     which = BINCYLINDER;
     ncoord = 2;
     iarg = 4;
     readdim(narg,arg,iarg,0);
     iarg += 3;
     if (dim[0] == 0) {
       cdim1 = 1;
       cdim2 = 2;
     } else if (dim[0] == 1) {
       cdim1 = 0;
       cdim2 = 2;
     } else {
       cdim1 = 0;
       cdim2 = 1;
     }
     if (iarg+5 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
     corigin_user[dim[0]] = 0.0;
     corigin_user[cdim1] = force->numeric(FLERR,arg[iarg]);
     corigin_user[cdim2] = force->numeric(FLERR,arg[iarg+1]);
     cradmin_user = force->numeric(FLERR,arg[iarg+2]);
     cradmax_user = force->numeric(FLERR,arg[iarg+3]);
 
     ncbin = force->inumeric(FLERR,arg[iarg+4]);
     iarg += 5;
 
   } else if (strcmp(arg[3],"type") == 0) {
     which = TYPE;
     iarg = 4;
   } else if (strcmp(arg[3],"molecule") == 0) {
     which = MOLECULE;
     iarg = 4;
 
   } else if (strstr(arg[3],"c_") == arg[3] ||
              strstr(arg[3],"f_") == arg[3] ||
              strstr(arg[3],"v_") == arg[3]) {
     if (arg[3][0] == 'c') which = COMPUTE;
     else if (arg[3][0] == 'f') which = FIX;
     else if (arg[3][0] == 'v') which = VARIABLE;
     iarg = 4;
 
     int n = strlen(arg[3]);
     char *suffix = new char[n];
     strcpy(suffix,&arg[3][2]);
 
     char *ptr = strchr(suffix,'[');
     if (ptr) {
       if (suffix[strlen(suffix)-1] != ']')
         error->all(FLERR,"Illegal compute chunk/atom command");
       argindex = atoi(ptr+1);
       *ptr = '\0';
     } else argindex = 0;
 
     n = strlen(suffix) + 1;
     cfvid = new char[n];
     strcpy(cfvid,suffix);
     delete [] suffix;
 
   } else error->all(FLERR,"Illegal compute chunk/atom command");
 
   // optional args
 
   regionflag = 0;
   idregion = NULL;
   nchunksetflag = 0;
   nchunkflag = EVERY;
   limit = 0;
   limitstyle = LIMITMAX;
   limitfirst = 0;
   idsflag = EVERY;
   compress = 0;
   int discardsetflag = 0;
   discard = MIXED;
   minflag[0] = LOWER;
   minflag[1] = LOWER;
   minflag[2] = LOWER;
   maxflag[0] = UPPER;
   maxflag[1] = UPPER;
   maxflag[2] = UPPER;
   scaleflag = LATTICE;
   pbcflag = 0;
 
   while (iarg < narg) {
     if (strcmp(arg[iarg],"region") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
       int iregion = domain->find_region(arg[iarg+1]);
       if (iregion == -1)
         error->all(FLERR,"Region ID for compute chunk/atom does not exist");
       int n = strlen(arg[iarg+1]) + 1;
       idregion = new char[n];
       strcpy(idregion,arg[iarg+1]);
       regionflag = 1;
       iarg += 2;
     } else if (strcmp(arg[iarg],"nchunk") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
       if (strcmp(arg[iarg+1],"once") == 0) nchunkflag = ONCE;
       else if (strcmp(arg[iarg+1],"every") == 0) nchunkflag = EVERY;
       else error->all(FLERR,"Illegal compute chunk/atom command");
       nchunksetflag = 1;
       iarg += 2;
     } else if (strcmp(arg[iarg],"limit") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
       limit = force->inumeric(FLERR,arg[iarg+1]);
       if (limit < 0) error->all(FLERR,"Illegal compute chunk/atom command");
       if (limit && !compress) limitfirst = 1;
       iarg += 2;
       if (limit) {
         if (iarg+1 > narg)
           error->all(FLERR,"Illegal compute chunk/atom command");
         if (strcmp(arg[iarg+1],"max") == 0) limitstyle = LIMITMAX;
         else if (strcmp(arg[iarg+1],"exact") == 0) limitstyle = LIMITEXACT;
         else error->all(FLERR,"Illegal compute chunk/atom command");
         iarg++;
       }
     } else if (strcmp(arg[iarg],"ids") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
       if (strcmp(arg[iarg+1],"once") == 0) idsflag = ONCE;
       else if (strcmp(arg[iarg+1],"nfreq") == 0) idsflag = NFREQ;
       else if (strcmp(arg[iarg+1],"every") == 0) idsflag = EVERY;
       else error->all(FLERR,"Illegal compute chunk/atom command");
       iarg += 2;
     } else if (strcmp(arg[iarg],"compress") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
       else if (strcmp(arg[iarg+1],"no") == 0) compress = 0;
       else if (strcmp(arg[iarg+1],"yes") == 0) compress = 1;
       else error->all(FLERR,"Illegal compute chunk/atom command");
       iarg += 2;
     } else if (strcmp(arg[iarg],"discard") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
       if (strcmp(arg[iarg+1],"mixed") == 0) discard = MIXED;
       else if (strcmp(arg[iarg+1],"no") == 0) discard = NODISCARD;
       else if (strcmp(arg[iarg+1],"yes") == 0) discard = YESDISCARD;
       else error->all(FLERR,"Illegal compute chunk/atom command");
       discardsetflag = 1;
       iarg += 2;
     } else if (strcmp(arg[iarg],"bound") == 0) {
       if (iarg+4 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
       int idim;
       if (strcmp(arg[iarg+1],"x") == 0) idim = 0;
       else if (strcmp(arg[iarg+1],"y") == 0) idim = 1;
       else if (strcmp(arg[iarg+1],"z") == 0) idim = 2;
       else error->all(FLERR,"Illegal compute chunk/atom command");
       if (strcmp(arg[iarg+2],"lower") == 0) minflag[idim] = LOWER;
       else minflag[idim] = COORD;
       if (minflag[idim] == COORD)
         minvalue[idim] = force->numeric(FLERR,arg[iarg+2]);
       if (strcmp(arg[iarg+3],"upper") == 0) maxflag[idim] = UPPER;
       else maxflag[idim] = COORD;
       if (maxflag[idim] == COORD)
         maxvalue[idim] = force->numeric(FLERR,arg[iarg+3]);
       else error->all(FLERR,"Illegal compute chunk/atom command");
       iarg += 4;
     } else if (strcmp(arg[iarg],"units") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
       if (strcmp(arg[iarg+1],"box") == 0) scaleflag = BOX;
       else if (strcmp(arg[iarg+1],"lattice") == 0) scaleflag = LATTICE;
       else if (strcmp(arg[iarg+1],"reduced") == 0) scaleflag = REDUCED;
       else error->all(FLERR,"Illegal compute chunk/atom command");
       iarg += 2;
     } else if (strcmp(arg[iarg],"pbc") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute chunk/atom command");
       if (strcmp(arg[iarg+1],"no") == 0) pbcflag = 0;
       else if (strcmp(arg[iarg+1],"yes") == 0) pbcflag = 1;
       else error->all(FLERR,"Illegal compute chunk/atom command");
       iarg += 2;
     } else error->all(FLERR,"Illegal compute chunk/atom command");
   }
 
   // set nchunkflag and discard to default values if not explicitly set
   // for binning style, also check in init() if simulation box is static,
   //   which sets nchunkflag = ONCE
 
   if (!nchunksetflag) {
     if (binflag) {
       if (scaleflag == REDUCED) nchunkflag = ONCE;
       else nchunkflag = EVERY;
     }
     if (which == TYPE) nchunkflag = ONCE;
     if (which == MOLECULE) {
       if (regionflag) nchunkflag = EVERY;
       else nchunkflag = ONCE;
     }
     if (compress) nchunkflag = EVERY;
   }
 
   if (!discardsetflag) {
     if (binflag) discard = MIXED;
     else discard = YESDISCARD;
   }
 
   // error checks
 
   if (which == MOLECULE && !atom->molecule_flag)
     error->all(FLERR,"Compute chunk/atom molecule for non-molecular system");
 
   if (!binflag && discard == MIXED)
     error->all(FLERR,"Compute chunk/atom without bins "
                "cannot use discard mixed");
   if (which == BIN1D && delta[0] <= 0.0)
     error->all(FLERR,"Illegal compute chunk/atom command");
   if (which == BIN2D && (delta[0] <= 0.0 || delta[1] <= 0.0))
     error->all(FLERR,"Illegal compute chunk/atom command");
   if (which == BIN2D && (dim[0] == dim[1]))
     error->all(FLERR,"Illegal compute chunk/atom command");
   if (which == BIN3D &&
       (delta[0] <= 0.0 || delta[1] <= 0.0 || delta[2] <= 0.0))
       error->all(FLERR,"Illegal compute chunk/atom command");
   if (which == BIN3D &&
       (dim[0] == dim[1] || dim[1] == dim[2] || dim[0] == dim[2]))
       error->all(FLERR,"Illegal compute chunk/atom command");
   if (which == BINSPHERE) {
     if (domain->dimension == 2 && sorigin_user[2] != 0.0) 
       error->all(FLERR,"Compute chunk/atom sphere z origin must be 0.0 for 2d");
     if (sradmin_user < 0.0 || sradmin_user >= sradmax_user || nsbin < 1)
       error->all(FLERR,"Illegal compute chunk/atom command");
   }
   if (which == BINCYLINDER) {
     if (delta[0] <= 0.0)
       error->all(FLERR,"Illegal compute chunk/atom command");
     if (domain->dimension == 2 && dim[0] != 2) 
       error->all(FLERR,"Compute chunk/atom cylinder axis must be z for 2d");
     if (cradmin_user < 0.0 || cradmin_user >= cradmax_user || ncbin < 1)
       error->all(FLERR,"Illegal compute chunk/atom command");
   }
 
   if (which == COMPUTE) {
     int icompute = modify->find_compute(cfvid);
     if (icompute < 0)
       error->all(FLERR,"Compute ID for compute chunk /atom does not exist");
     if (modify->compute[icompute]->peratom_flag == 0)
       error->all(FLERR,
                  "Compute chunk/atom compute does not calculate "
                  "per-atom values");
     if (argindex == 0 &&
         modify->compute[icompute]->size_peratom_cols != 0)
       error->all(FLERR,"Compute chunk/atom compute does not "
                  "calculate a per-atom vector");
     if (argindex && modify->compute[icompute]->size_peratom_cols == 0)
       error->all(FLERR,"Compute chunk/atom compute does not "
                  "calculate a per-atom array");
     if (argindex &&
         argindex > modify->compute[icompute]->size_peratom_cols)
       error->all(FLERR,"Compute chunk/atom compute array is "
                  "accessed out-of-range");
   }
 
   if (which == FIX) {
     int ifix = modify->find_fix(cfvid);
     if (ifix < 0)
       error->all(FLERR,"Fix ID for compute chunk/atom does not exist");
     if (modify->fix[ifix]->peratom_flag == 0)
       error->all(FLERR,"Compute chunk/atom fix does not calculate "
                  "per-atom values");
     if (argindex == 0 && modify->fix[ifix]->size_peratom_cols != 0)
       error->all(FLERR,
                  "Compute chunk/atom fix does not calculate a per-atom vector");
     if (argindex && modify->fix[ifix]->size_peratom_cols == 0)
       error->all(FLERR,
                  "Compute chunk/atom fix does not calculate a per-atom array");
     if (argindex && argindex > modify->fix[ifix]->size_peratom_cols)
       error->all(FLERR,"Compute chunk/atom fix array is accessed out-of-range");
   }
 
   if (which == VARIABLE) {
     int ivariable = input->variable->find(cfvid);
     if (ivariable < 0)
       error->all(FLERR,"Variable name for compute chunk/atom does not exist");
     if (input->variable->atomstyle(ivariable) == 0)
       error->all(FLERR,"Compute chunk/atom variable is not "
                  "atom-style variable");
   }
 
   // setup scaling
 
   if (binflag) {
     if (domain->triclinic == 1 && scaleflag != REDUCED)
       error->all(FLERR,"Compute chunk/atom for triclinic boxes "
                  "requires units reduced");
   }
 
   if (scaleflag == LATTICE) {
     xscale = domain->lattice->xlattice;
     yscale = domain->lattice->ylattice;
     zscale = domain->lattice->zlattice;
   } else xscale = yscale = zscale = 1.0;
 
   // apply scaling factors and cylinder dims orthogonal to axis
 
   if (binflag) {
     double scale;
     if (which == BIN1D || which == BIN2D || which == BIN3D || 
         which == BINCYLINDER) {
       if (which == BIN1D || which == BINCYLINDER) ndim = 1;
       if (which == BIN2D) ndim = 2;
       if (which == BIN3D) ndim = 3;
       for (int idim = 0; idim < ndim; idim++) {
 	if (dim[idim] == 0) scale = xscale;
 	else if (dim[idim] == 1) scale = yscale;
 	else if (dim[idim] == 2) scale = zscale;
 	delta[idim] *= scale;
 	invdelta[idim] = 1.0/delta[idim];
 	if (originflag[idim] == COORD) origin[idim] *= scale;
 	if (minflag[idim] == COORD) minvalue[idim] *= scale;
 	if (maxflag[idim] == COORD) maxvalue[idim] *= scale;
       }
     } else if (which == BINSPHERE) {
       sorigin_user[0] *= xscale;
       sorigin_user[1] *= yscale;
       sorigin_user[2] *= zscale;
       sradmin_user *= xscale;     // radii are scaled by xscale
       sradmax_user *= xscale;
     } else if (which == BINCYLINDER) {
       if (dim[0] == 0) {
         corigin_user[cdim1] *= yscale;
         corigin_user[cdim2] *= zscale;
         cradmin_user *= yscale;     // radii are scaled by first non-axis dim
         cradmax_user *= yscale;
       } else if (dim[0] == 1) {
         corigin_user[cdim1] *= xscale;
         corigin_user[cdim2] *= zscale;
         cradmin_user *= xscale;
         cradmax_user *= xscale;
       } else {
         corigin_user[cdim1] *= xscale;
         corigin_user[cdim2] *= yscale;
         cradmin_user *= xscale;
         cradmax_user *= xscale;
       }
     }
   }
 
   // initialize chunk vector and per-chunk info
 
   nmax = 0;
   chunk = NULL;
   nmaxint = -1;
   ichunk = NULL;
   exclude = NULL;
 
   nchunk = 0;
   chunk_volume_scalar = 1.0;
   chunk_volume_vec = NULL;
   coord = NULL;
   chunkID = NULL;
 
   // computeflag = 1 if this compute might invoke another compute
   // during assign_chunk_ids()
 
   if (which == COMPUTE || which == FIX || which == VARIABLE) computeflag = 1;
   else computeflag = 0;
 
   // other initializations
 
   invoked_setup = -1;
   invoked_ichunk = -1;
 
   id_fix = NULL;
   fixstore = NULL;
 
   if (compress) hash = new std::map<tagint,int>();
   else hash = NULL;
 
   maxvar = 0;
   varatom = NULL;
 
   lockcount = 0;
   lockfix = NULL;
 
   if (which == MOLECULE) molcheck = 1;
   else molcheck = 0;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeChunkAtom::~ComputeChunkAtom()
 {
   // check nfix in case all fixes have already been deleted
 
   if (modify->nfix) modify->delete_fix(id_fix);
   delete [] id_fix;
 
   memory->destroy(chunk);
   memory->destroy(ichunk);
   memory->destroy(exclude);
   memory->destroy(chunk_volume_vec);
   memory->destroy(coord);
   memory->destroy(chunkID);
 
   delete [] idregion;
   delete [] cfvid;
   delete hash;
 
   memory->destroy(varatom);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeChunkAtom::init()
 {
   // set and check validity of region
 
   if (regionflag) {
     int iregion = domain->find_region(idregion);
     if (iregion == -1)
       error->all(FLERR,"Region ID for compute chunk/atom does not exist");
     region = domain->regions[iregion];
   }
 
   // set compute,fix,variable
 
   if (which == COMPUTE) {
     int icompute = modify->find_compute(cfvid);
     if (icompute < 0)
       error->all(FLERR,"Compute ID for compute chunk/atom does not exist");
     cchunk = modify->compute[icompute];
   } else if (which == FIX) {
     int ifix = modify->find_fix(cfvid);
     if (ifix < 0)
       error->all(FLERR,"Fix ID for compute chunk/atom does not exist");
     fchunk = modify->fix[ifix];
   } else if (which == VARIABLE) {
     int ivariable = input->variable->find(cfvid);
     if (ivariable < 0)
       error->all(FLERR,"Variable name for compute chunk/atom does not exist");
     vchunk = ivariable;
   }
 
   // for style MOLECULE, check that no mol IDs exceed MAXSMALLINT
   // don't worry about group or optional region
 
   if (which == MOLECULE) {
     tagint *molecule = atom->molecule;
     int nlocal = atom->nlocal;
     tagint maxone = -1;
     for (int i = 0; i < nlocal; i++)
       if (molecule[i] > maxone) maxone = molecule[i];
     tagint maxall;
     MPI_Allreduce(&maxone,&maxall,1,MPI_LMP_TAGINT,MPI_MAX,world);
     if (maxall > MAXSMALLINT)
       error->all(FLERR,"Molecule IDs too large for compute chunk/atom");
   }
 
   // for binning, if nchunkflag not already set, set it to ONCE or EVERY
   // depends on whether simulation box size is static or dynamic
   // reset invoked_setup if this is not first run and box just became static
 
   if (binflag && !nchunksetflag && !compress && scaleflag != REDUCED) {
     if (domain->box_change_size == 0) {
       if (nchunkflag == EVERY && invoked_setup >= 0) invoked_setup = -1;
       nchunkflag = ONCE;
     } else nchunkflag = EVERY;
   }
 
   // require nchunkflag = ONCE if idsflag = ONCE
   // b/c nchunk cannot change if chunk IDs are frozen
   // can't check until now since nchunkflag may have been adjusted in init()
 
   if (idsflag == ONCE && nchunkflag != ONCE)
     error->all(FLERR,"Compute chunk/atom ids once but nchunk is not once");
 
   // create/destroy fix STORE for persistent chunk IDs as needed
   // need to do this if idsflag = ONCE or locks will be used by other commands
   // need to wait until init() so that fix command(s) are in place
   //   they increment lockcount if they lock this compute
   // fixstore ID = compute-ID + COMPUTE_STORE, fix group = compute group
   // fixstore initializes all values to 0.0
 
   if ((idsflag == ONCE || lockcount) && !fixstore) {
     int n = strlen(id) + strlen("_COMPUTE_STORE") + 1;
     id_fix = new char[n];
     strcpy(id_fix,id);
     strcat(id_fix,"_COMPUTE_STORE");
 
     char **newarg = new char*[6];
     newarg[0] = id_fix;
     newarg[1] = group->names[igroup];
     newarg[2] = (char *) "STORE";
     newarg[3] = (char *) "peratom";
     newarg[4] = (char *) "1";
     newarg[5] = (char *) "1";
     modify->add_fix(6,newarg);
     fixstore = (FixStore *) modify->fix[modify->nfix-1];
     delete [] newarg;
   }
 
   if ((idsflag != ONCE && !lockcount) && fixstore) {
     modify->delete_fix(id_fix);
     fixstore = NULL;
   }
 }
 
 /* ----------------------------------------------------------------------
    invoke setup_chunks and/or compute_ichunk if only done ONCE
    so that nchunks or chunk IDs are assigned when this compute was specified
      as opposed to first times compute_peratom() or compute_ichunk() is called
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::setup()
 {
   if (nchunkflag == ONCE) setup_chunks();
   if (idsflag == ONCE) compute_ichunk();
 }
 
 /* ----------------------------------------------------------------------
    only called by classes that use per-atom computes in standard way
      dump, variable, thermo output, other computes, etc
    not called by fix chunk or compute chunk commands
      they invoke setup_chunks() and compute_ichunk() directly
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::compute_peratom()
 {
   invoked_peratom = update->ntimestep;
 
   // grow floating point chunk vector if necessary
 
   if (atom->nmax > nmax) {
     memory->destroy(chunk);
     nmax = atom->nmax;
     memory->create(chunk,nmax,"chunk/atom:chunk");
     vector_atom = chunk;
   }
 
   setup_chunks();
   compute_ichunk();
 
   // copy integer indices into floating-point chunk vector
 
   int nlocal = atom->nlocal;
   for (int i = 0; i < nlocal; i++) chunk[i] = ichunk[i];
 }
 
 /* ----------------------------------------------------------------------
    set lock, so that nchunk will not change from startstep to stopstep
    called by fix for duration of time it requires lock
    OK if called by multiple fix commands
      error if all callers do not have same duration
      last caller holds the lock, so it can also unlock
    stopstep can be positive for final step of finite-size time window
    or can be -1 for infinite-size time window
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::lock(Fix *fixptr, bigint startstep, bigint stopstep)
 {
   if (lockfix == NULL) {
     lockfix = fixptr;
     lockstart = startstep;
     lockstop = stopstep;
     return;
   }
 
   if (startstep != lockstart || stopstep != lockstop)
     error->all(FLERR,"Two fix commands using "
                "same compute chunk/atom command in incompatible ways");
 
   // set lock to last calling Fix, since it will be last to unlock()
 
   lockfix = fixptr;
 }
 
 /* ----------------------------------------------------------------------
    unset lock
    can only be done by fix command that holds the lock
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::unlock(Fix *fixptr)
 {
   if (fixptr != lockfix) return;
   lockfix = NULL;
 }
 
 /* ----------------------------------------------------------------------
    assign chunk IDs from 1 to Nchunk to every atom, or 0 if not in chunk
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::compute_ichunk()
 {
   int i;
 
   // skip if already done on this step
 
   if (invoked_ichunk == update->ntimestep) return;
 
   // if old IDs persist via storage in fixstore, then just retrieve them
   // yes if idsflag = ONCE, and already done once
   //   or if idsflag = NFREQ and lock is in place and are on later timestep
   // else proceed to recalculate per-atom chunk assignments
 
   int restore = 0;
   if (idsflag == ONCE && invoked_ichunk >= 0) restore = 1;
   if (idsflag == NFREQ && lockfix && update->ntimestep > lockstart) restore = 1;
 
   if (restore) {
     invoked_ichunk = update->ntimestep;
     double *vstore = fixstore->vstore;
     int nlocal = atom->nlocal;
     for (i = 0; i < nlocal; i++) ichunk[i] = static_cast<int> (vstore[i]);
     return;
   }
 
   invoked_ichunk = update->ntimestep;
 
   // assign chunk IDs to atoms
   // will exclude atoms not in group or in optional region
   // already invoked if this is same timestep as last setup_chunks()
 
   if (update->ntimestep > invoked_setup) assign_chunk_ids();
 
   // compress chunk IDs via hash of the original uncompressed IDs
   // also apply discard rule except for binning styles which already did
 
   int nlocal = atom->nlocal;
 
   if (compress) {
     if (binflag) {
       for (i = 0; i < nlocal; i++) {
         if (exclude[i]) continue;
         if (hash->find(ichunk[i]) == hash->end()) exclude[i] = 1;
         else ichunk[i] = hash->find(ichunk[i])->second;
       }
     } else if (discard == NODISCARD) {
       for (i = 0; i < nlocal; i++) {
         if (exclude[i]) continue;
         if (hash->find(ichunk[i]) == hash->end()) ichunk[i] = nchunk;
         else ichunk[i] = hash->find(ichunk[i])->second;
       }
     } else {
       for (i = 0; i < nlocal; i++) {
         if (exclude[i]) continue;
         if (hash->find(ichunk[i]) == hash->end()) exclude[i] = 1;
         else ichunk[i] = hash->find(ichunk[i])->second;
       }
     }
 
   // else if no compression apply discard rule by itself
 
   } else {
     if (discard == NODISCARD) {
       for (i = 0; i < nlocal; i++) {
         if (exclude[i]) continue;
         if (ichunk[i] < 1 || ichunk[i] > nchunk) ichunk[i] = nchunk;;
       }
     } else {
       for (i = 0; i < nlocal; i++) {
         if (exclude[i]) continue;
         if (ichunk[i] < 1 || ichunk[i] > nchunk) exclude[i] = 1;
       }
     }
   }
 
   // set ichunk = 0 for excluded atoms
   // this should set any ichunk values which have not yet been set
 
   for (i = 0; i < nlocal; i++)
     if (exclude[i]) ichunk[i] = 0;
 
   // if newly calculated IDs need to persist, store them in fixstore
   // yes if idsflag = ONCE or idsflag = NFREQ and lock is in place
 
   if (idsflag == ONCE || (idsflag == NFREQ && lockfix)) {
     double *vstore = fixstore->vstore;
     int nlocal = atom->nlocal;
     for (int i = 0; i < nlocal; i++) vstore[i] = ichunk[i];
   }
 
   // one-time check if which = MOLECULE and
   // any chunks do not contain all atoms in the molecule
 
   if (molcheck) {
     check_molecules();
     molcheck = 0;
   }
 }
 
 /* ----------------------------------------------------------------------
    setup chunks
    return nchunk = # of chunks
      all atoms will be assigned a chunk ID from 1 to Nchunk, or 0
    also setup any internal state needed to quickly assign atoms to chunks
    called from compute_peratom() and also directly from
      fix chunk and compute chunk commands
 ------------------------------------------------------------------------- */
 
 int ComputeChunkAtom::setup_chunks()
 {
   if (invoked_setup == update->ntimestep) return nchunk;
 
   // check if setup needs to be done
   // no if lock is in place
   // no if nchunkflag = ONCE, and already done once
   // otherwise yes
   // even if no, check if need to re-compute bin volumes
   //   so that fix ave/chunk can do proper density normalization
 
   int flag = 0;
   if (lockfix) flag = 1;
   if (nchunkflag == ONCE && invoked_setup >= 0) flag = 1;
 
   if (flag) {
     if (binflag && scaleflag == REDUCED && domain->box_change_size)
       bin_volumes();
     return nchunk;
   }
 
   invoked_setup = update->ntimestep;
 
   // assign chunk IDs to atoms
   // will exclude atoms not in group or in optional region
   // for binning styles, need to setup bins and their volume first
   //   else chunk_volume_scalar = entire box volume
   // IDs are needed to scan for max ID and for compress()
 
   if (binflag) {
     if (which == BIN1D || which == BIN2D || which == BIN3D)
       nchunk = setup_xyz_bins();
     else if (which == BINSPHERE) nchunk = setup_sphere_bins();
     else if (which == BINCYLINDER) nchunk = setup_cylinder_bins();
     bin_volumes();
   } else {
     chunk_volume_scalar = domain->xprd * domain->yprd;
     if (domain->dimension == 3) chunk_volume_scalar *= domain->zprd;
   }
 
   assign_chunk_ids();
 
   // set nchunk for chunk styles other than binning
   // for styles other than TYPE, scan for max ID
 
   if (which == TYPE) nchunk = atom->ntypes;
   else if (!binflag) {
 
     int nlocal = atom->nlocal;
     int hi = -1;
     for (int i = 0; i < nlocal; i++) {
       if (exclude[i]) continue;
       if (ichunk[i] > hi) hi = ichunk[i];
     }
 
     MPI_Allreduce(&hi,&nchunk,1,MPI_INT,MPI_MAX,world);
     if (nchunk <= 0) nchunk = 1;
   }
 
   // apply limit setting as well as compression of chunks with no atoms
   // if limit is set, there are 3 cases:
   //   no compression, limit specified before compression, or vice versa
 
   if (limit && !binflag) {
     if (!compress) {
       if (limitstyle == LIMITMAX) nchunk = MIN(nchunk,limit);
       else if (limitstyle == LIMITEXACT) nchunk = limit;
     } else if (limitfirst) {
       nchunk = MIN(nchunk,limit);
     }
   }
 
   if (compress) compress_chunk_ids();
 
   if (limit && !binflag && compress) {
     if (limitstyle == LIMITMAX) nchunk = MIN(nchunk,limit);
     else if (limitstyle == LIMITEXACT) nchunk = limit;
   }
 
   return nchunk;
 }
 
 /* ----------------------------------------------------------------------
    assign chunk IDs for all atoms, via ichunk vector
    except excluded atoms, their chunk IDs are set to 0 later
    also set exclude vector to 0/1 for all atoms
      excluded atoms are those not in group or in optional region
    called from compute_ichunk() and setup_chunks()
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::assign_chunk_ids()
 {
   int i;
 
   // grow integer chunk index vector if necessary
 
   if (atom->nmax > nmaxint) {
     memory->destroy(ichunk);
     memory->destroy(exclude);
     nmaxint = atom->nmax;
     memory->create(ichunk,nmaxint,"chunk/atom:ichunk");
     memory->create(exclude,nmaxint,"chunk/atom:exclude");
   }
 
   // update region if necessary
 
   if (regionflag) region->prematch();
 
   // exclude = 1 if atom is not assigned to a chunk
   // exclude atoms not in group or not in optional region
 
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   if (regionflag) {
     for (i = 0; i < nlocal; i++) {
       if (mask[i] & groupbit &&
           region->match(x[i][0],x[i][1],x[i][2])) exclude[i] = 0;
       else exclude[i] = 1;
     }
   } else {
     for (i = 0; i < nlocal; i++) {
       if (mask[i] & groupbit) exclude[i] = 0;
       else exclude[i] = 1;
     }
   }
 
   // set ichunk to style value for included atoms
   // binning styles apply discard rule, others do not yet
 
   if (binflag) {
     if (which == BIN1D) atom2bin1d();
     else if (which == BIN2D) atom2bin2d();
     else if (which == BIN3D) atom2bin3d();
     else if (which == BINSPHERE) atom2binsphere();
     else if (which == BINCYLINDER) atom2bincylinder();
 
   } else if (which == TYPE) {
     int *type = atom->type;
     for (i = 0; i < nlocal; i++) {
       if (exclude[i]) continue;
       ichunk[i] = type[i];
     }
 
   } else if (which == MOLECULE) {
     tagint *molecule = atom->molecule;
     for (i = 0; i < nlocal; i++) {
       if (exclude[i]) continue;
       ichunk[i] = static_cast<int> (molecule[i]);
     }
 
   } else if (which == COMPUTE) {
     if (!(cchunk->invoked_flag & INVOKED_PERATOM)) {
       cchunk->compute_peratom();
       cchunk->invoked_flag |= INVOKED_PERATOM;
     }
 
     if (argindex == 0) {
       double *vec = cchunk->vector_atom;
       for (i = 0; i < nlocal; i++) {
         if (exclude[i]) continue;
         ichunk[i] = static_cast<int> (vec[i]);
       }
     } else {
       double **array = cchunk->array_atom;
       int argm1 = argindex - 1;
       for (i = 0; i < nlocal; i++) {
         if (exclude[i]) continue;
         ichunk[i] = static_cast<int> (array[i][argm1]);
       }
     }
 
   } else if (which == FIX) {
     if (update->ntimestep % fchunk->peratom_freq)
       error->all(FLERR,"Fix used in compute chunk/atom not "
                  "computed at compatible time");
 
     if (argindex == 0) {
       double *vec = fchunk->vector_atom;
       for (i = 0; i < nlocal; i++) {
         if (exclude[i]) continue;
         ichunk[i] = static_cast<int> (vec[i]);
       }
     } else {
       double **array = fchunk->array_atom;
       int argm1 = argindex - 1;
       for (i = 0; i < nlocal; i++) {
         if (exclude[i]) continue;
         ichunk[i] = static_cast<int> (array[i][argm1]);
       }
     }
 
   } else if (which == VARIABLE) {
     if (atom->nmax > maxvar) {
       maxvar = atom->nmax;
       memory->destroy(varatom);
       memory->create(varatom,maxvar,"chunk/atom:varatom");
     }
 
     input->variable->compute_atom(vchunk,igroup,varatom,1,0);
     for (i = 0; i < nlocal; i++) {
       if (exclude[i]) continue;
       ichunk[i] = static_cast<int> (varatom[i]);
     }
   }
 }
 
 /* ----------------------------------------------------------------------
    compress chunk IDs currently assigned to atoms across all processors
      by removing those with no atoms assigned
    current assignment excludes atoms not in group or in optional region
    current Nchunk = max ID
    operation:
      use hash to store list of populated IDs that I own
      add new IDs to populated lists communicated from all other procs
      final hash has global list of populated ideas
    reset Nchunk = length of global list
    called by setup_chunks() when setting Nchunk
    remapping of chunk IDs to smaller Nchunk occurs later in compute_ichunk()
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::compress_chunk_ids()
 {
   hash->clear();
 
   // put my IDs into hash
 
   int nlocal = atom->nlocal;
   for (int i = 0; i < nlocal; i++) {
     if (exclude[i]) continue;
     if (hash->find(ichunk[i]) == hash->end()) (*hash)[ichunk[i]] = 0;
   }
 
   // n = # of my populated IDs
   // nall = n summed across all procs
 
   int n = hash->size();
   bigint nbone = n;
   bigint nball;
   MPI_Allreduce(&nbone,&nball,1,MPI_LMP_BIGINT,MPI_SUM,world);
 
   // create my list of populated IDs
 
   int *list = NULL;
   memory->create(list,n,"chunk/atom:list");
 
   n = 0;
   std::map<tagint,int>::iterator pos;
   for (pos = hash->begin(); pos != hash->end(); ++pos)
     list[n++] = pos->first;
 
   // if nall < 1M, just allgather all ID lists on every proc
   // else perform ring comm
   // add IDs from all procs to my hash
 
   if (nball <= IDMAX) {
 
     // setup for allgatherv
 
     int nprocs = comm->nprocs;
     int nall = nball;
     int *recvcounts,*displs,*listall;
     memory->create(recvcounts,nprocs,"chunk/atom:recvcounts");
     memory->create(displs,nprocs,"chunk/atom:displs");
     memory->create(listall,nall,"chunk/atom:listall");
 
     MPI_Allgather(&n,1,MPI_INT,recvcounts,1,MPI_INT,world);
 
     displs[0] = 0;
     for (int iproc = 1; iproc < nprocs; iproc++)
       displs[iproc] = displs[iproc-1] + recvcounts[iproc-1];
 
     // allgatherv acquires list of populated IDs from all procs
 
     MPI_Allgatherv(list,n,MPI_INT,listall,recvcounts,displs,MPI_INT,world);
 
     // add all unique IDs in listall to my hash
 
     for (int i = 0; i < nall; i++)
       if (hash->find(listall[i]) == hash->end()) (*hash)[listall[i]] = 0;
 
     // clean up
 
     memory->destroy(recvcounts);
     memory->destroy(displs);
     memory->destroy(listall);
 
   } else {
     cptr = this;
     comm->ring(n,sizeof(int),list,1,idring,NULL,0);
   }
 
   memory->destroy(list);
 
   // nchunk = length of hash containing populated IDs from all procs
 
   nchunk = hash->size();
 
   // reset hash value of each original chunk ID to ordered index
   //   ordered index = new compressed chunk ID (1 to Nchunk)
   //   leverages fact that map stores keys in ascending order
   // also allocate and set chunkID = list of original chunk IDs
   //   used by fix ave/chunk and compute property/chunk
 
   memory->destroy(chunkID);
   memory->create(chunkID,nchunk,"chunk/atom:chunkID");
 
   n = 0;
   for (pos = hash->begin(); pos != hash->end(); ++pos) {
     chunkID[n] = pos->first;
     (*hash)[pos->first] = ++n;
   }
 }
 
 /* ----------------------------------------------------------------------
    callback from comm->ring()
    cbuf = list of N chunk IDs from another proc
    loop over the list, add each to my hash
    hash ends up storing all unique IDs across all procs
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::idring(int n, char *cbuf)
 {
   tagint *list = (tagint *) cbuf;
   std::map<tagint,int> *hash = cptr->hash;
   for (int i = 0; i < n; i++) (*hash)[list[i]] = 0;
 }
 
 /* ----------------------------------------------------------------------
    one-time check for which = MOLECULE to check
      if each chunk contains all atoms in the molecule
    issue warning if not
    note that this check is without regard to discard rule
    if discard == NODISCARD, there is no easy way to check that all
      atoms in an out-of-bounds molecule were added to a chunk,
      some could have been excluded by group or region, others not
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::check_molecules()
 {
   tagint *molecule = atom->molecule;
   int nlocal = atom->nlocal;
 
   int flag = 0;
 
   if (!compress) {
     for (int i = 0; i < nlocal; i++) {
       if (molecule[i] > 0 && molecule[i] <= nchunk &&
           ichunk[i] == 0) flag = 1;
     }
   } else {
     int molid;
     for (int i = 0; i < nlocal; i++) {
       molid = static_cast<int> (molecule[i]);
       if (hash->find(molid) != hash->end() && ichunk[i] == 0) flag = 1;
     }
   }
 
   int flagall;
   MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world);
   if (flagall && comm->me == 0)
     error->warning(FLERR,
                    "One or more chunks do not contain all atoms in molecule");
 }
 
 /* ----------------------------------------------------------------------
    setup xyz spatial bins and their extent and coordinates
    return nbins = # of bins, will become # of chunks
    called from setup_chunks()
 ------------------------------------------------------------------------- */
 
 int ComputeChunkAtom::setup_xyz_bins()
 {
   int i,j,k,m,n,idim;
   double lo,hi,coord1,coord2;
 
   // lo = bin boundary immediately below boxlo or minvalue
   // hi = bin boundary immediately above boxhi or maxvalue
   // allocate and initialize arrays based on new bin count
 
   double binlo[3],binhi[3];
   if (scaleflag == REDUCED) {
     binlo[0] = domain->boxlo_lamda[0];
     binlo[1] = domain->boxlo_lamda[1];
     binlo[2] = domain->boxlo_lamda[2];
     binhi[0] = domain->boxhi_lamda[0];
     binhi[1] = domain->boxhi_lamda[1];
     binhi[2] = domain->boxhi_lamda[2];
   } else {
     binlo[0] = domain->boxlo[0];
     binlo[1] = domain->boxlo[1];
     binlo[2] = domain->boxlo[2];
     binhi[0] = domain->boxhi[0];
     binhi[1] = domain->boxhi[1];
     binhi[2] = domain->boxhi[2];
   }
 
   if (minflag[0] == COORD) binlo[0] = minvalue[0];
   if (minflag[1] == COORD) binlo[1] = minvalue[1];
   if (minflag[2] == COORD) binlo[2] = minvalue[2];
   if (maxflag[0] == COORD) binhi[0] = maxvalue[0];
   if (maxflag[1] == COORD) binhi[1] = maxvalue[1];
   if (maxflag[2] == COORD) binhi[2] = maxvalue[2];
 
   int nbins = 1;
 
   for (m = 0; m < ndim; m++) {
     idim = dim[m];
     if (originflag[m] == LOWER) origin[m] = binlo[idim];
     else if (originflag[m] == UPPER) origin[m] = binhi[idim];
     else if (originflag[m] == CENTER)
       origin[m] = 0.5 * (binlo[idim] + binhi[idim]);
 
     if (origin[m] < binlo[idim]) {
       n = static_cast<int> ((binlo[idim] - origin[m]) * invdelta[m]);
       lo = origin[m] + n*delta[m];
     } else {
       n = static_cast<int> ((origin[m] - binlo[idim]) * invdelta[m]);
       lo = origin[m] - n*delta[m];
       if (lo > binlo[idim]) lo -= delta[m];
     }
     if (origin[m] < binhi[idim]) {
       n = static_cast<int> ((binhi[idim] - origin[m]) * invdelta[m]);
       hi = origin[m] + n*delta[m];
       if (hi < binhi[idim]) hi += delta[m];
     } else {
       n = static_cast<int> ((origin[m] - binhi[idim]) * invdelta[m]);
       hi = origin[m] - n*delta[m];
     }
 
     if (lo > hi) error->all(FLERR,"Invalid bin bounds in compute chunk/atom");
 
     offset[m] = lo;
     nlayers[m] = static_cast<int> ((hi-lo) * invdelta[m] + 0.5);
     nbins *= nlayers[m];
   }
 
   // allocate and set bin coordinates
 
   memory->destroy(coord);
   memory->create(coord,nbins,ndim,"chunk/atom:coord");
 
   if (ndim == 1) {
     for (i = 0; i < nlayers[0]; i++)
       coord[i][0] = offset[0] + (i+0.5)*delta[0];
   } else if (ndim == 2) {
     m = 0;
     for (i = 0; i < nlayers[0]; i++) {
       coord1 = offset[0] + (i+0.5)*delta[0];
       for (j = 0; j < nlayers[1]; j++) {
         coord[m][0] = coord1;
         coord[m][1] = offset[1] + (j+0.5)*delta[1];
         m++;
       }
     }
   } else if (ndim == 3) {
     m = 0;
     for (i = 0; i < nlayers[0]; i++) {
       coord1 = offset[0] + (i+0.5)*delta[0];
       for (j = 0; j < nlayers[1]; j++) {
         coord2 = offset[1] + (j+0.5)*delta[1];
         for (k = 0; k < nlayers[2]; k++) {
           coord[m][0] = coord1;
           coord[m][1] = coord2;
           coord[m][2] = offset[2] + (k+0.5)*delta[2];
           m++;
         }
       }
     }
   }
 
   return nbins;
 }
 
 /* ----------------------------------------------------------------------
    setup spherical spatial bins and their single coordinate
    return nsphere = # of bins, will become # of chunks
    called from setup_chunks()
 ------------------------------------------------------------------------- */
 
 int ComputeChunkAtom::setup_sphere_bins()
 {
   // convert sorigin_user to sorigin
   // sorigin,srad are always in box units, for orthogonal or triclinic domains
   // lamda2x works for either orthogonal or triclinic
 
   if (scaleflag == REDUCED) {
     domain->lamda2x(sorigin_user,sorigin);
     sradmin = sradmin_user * (domain->boxhi[0]-domain->boxlo[0]);
     sradmax = sradmax_user * (domain->boxhi[0]-domain->boxlo[0]);
   } else {
     sorigin[0] = sorigin_user[0];
     sorigin[1] = sorigin_user[1];
     sorigin[2] = sorigin_user[2];
     sradmin = sradmin_user;
     sradmax = sradmax_user;
   }
 
   // if pbcflag set, sradmax must be < 1/2 box in any periodic dim
   // treat orthongonal and triclinic the same
   // check every time bins are created
 
   if (pbcflag) {
     double *prd_half = domain->prd_half;
     int *periodicity = domain->periodicity;
     int flag = 0;
     if (periodicity[0] && sradmax > prd_half[0]) flag = 1;
     if (periodicity[1] && sradmax > prd_half[1]) flag = 1;
     if (domain->dimension == 3 && 
         periodicity[2] && sradmax > prd_half[2]) flag = 1;
     if (flag) 
       error->all(FLERR,"Compute chunk/atom bin/sphere radius "
                  "is too large for periodic box");
   }
 
   sinvrad = nsbin / (sradmax-sradmin);
 
   // allocate and set bin coordinates
   // coord = midpt of radii for a spherical shell
 
   memory->destroy(coord);
   memory->create(coord,nsbin,1,"chunk/atom:coord");
 
   double rlo,rhi;
 
   for (int i = 0; i < nsbin; i++) {
     rlo = sradmin + i * (sradmax-sradmin) / nsbin;
     rhi = sradmin + (i+1) * (sradmax-sradmin) / nsbin;
     if (i == nsbin-1) rhi = sradmax;
     coord[i][0] = 0.5 * (rlo+rhi);
   }
 
   return nsbin;
 }
 
 /* ----------------------------------------------------------------------
    setup cylindrical spatial bins and their single coordinate
    return nsphere = # of bins, will become # of chunks
    called from setup_chunks()
 ------------------------------------------------------------------------- */
 
 int ComputeChunkAtom::setup_cylinder_bins()
 {
   // setup bins along cylinder axis
   // ncplane = # of axis bins
 
   ncplane = setup_xyz_bins();
 
   // convert corigin_user to corigin
   // corigin is always in box units, for orthogonal or triclinic domains
   // lamda2x works for either orthogonal or triclinic
 
   if (scaleflag == REDUCED) {
     domain->lamda2x(corigin_user,corigin);
     cradmin = cradmin_user * (domain->boxhi[cdim1]-domain->boxlo[cdim1]);
     cradmax = cradmax_user * (domain->boxhi[cdim1]-domain->boxlo[cdim1]);
   } else {
     corigin[cdim1] = corigin_user[cdim1];
     corigin[cdim2] = corigin_user[cdim2];
     cradmin = cradmin_user;
     cradmax = cradmax_user;
   }
 
   // if pbcflag set, sradmax must be < 1/2 box in any periodic non-axis dim
   // treat orthongonal and triclinic the same
   // check every time bins are created
 
   if (pbcflag) {
     double *prd_half = domain->prd_half;
     int *periodicity = domain->periodicity;
     int flag = 0;
     if (periodicity[cdim1] && sradmax > prd_half[cdim1]) flag = 1;
     if (periodicity[cdim2] && sradmax > prd_half[cdim2]) flag = 1;
     if (flag) 
       error->all(FLERR,"Compute chunk/atom bin/cylinder radius "
                  "is too large for periodic box");
   }
 
   cinvrad = ncbin / (cradmax-cradmin);
 
   // allocate and set radial bin coordinates
   // radial coord = midpt of radii for a cylindrical shell
   // axiscoord = saved bin coords along cylndrical axis
   // radcoord = saved bin coords in radial direction
 
   double **axiscoord = coord;
   memory->create(coord,ncbin,1,"chunk/atom:coord");
   double **radcoord = coord;
 
   double rlo,rhi;
 
   for (int i = 0; i < ncbin; i++) {
     rlo = cradmin + i * (cradmax-cradmin) / ncbin;
     rhi = cradmin + (i+1) * (cradmax-cradmin) / ncbin;
     if (i == ncbin-1) rhi = cradmax;
     coord[i][0] = 0.5 * (rlo+rhi);
   }
 
   // create array of combined coords for all bins
 
   memory->create(coord,ncbin*ncplane,2,"chunk/atom:coord");
   int m = 0;
   for (int i = 0; i < ncbin; i++)
     for (int j = 0; j < ncplane; j++) {
       coord[m][0] = radcoord[i][0];
       coord[m][1] = axiscoord[j][0];
       m++;
     }
   memory->destroy(axiscoord);
   memory->destroy(radcoord);
 
   return ncbin*ncplane;
 }
 
 /* ----------------------------------------------------------------------
    calculate chunk volumes = bin volumes
    scalar if all bins have same volume
    vector if per-bin volumes are different
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::bin_volumes()
 {
   if (which == BIN1D || which == BIN2D || which == BIN3D) {
     if (domain->dimension == 3)
       chunk_volume_scalar = domain->xprd * domain->yprd * domain->zprd;
     else chunk_volume_scalar = domain->xprd * domain->yprd;
     double *prd;
     if (scaleflag == REDUCED) prd = domain->prd_lamda;
     else prd = domain->prd;
     for (int m = 0; m < ndim; m++)
       chunk_volume_scalar *= delta[m]/prd[dim[m]];
 
   } else if (which == BINSPHERE) {
     memory->destroy(chunk_volume_vec);
     memory->create(chunk_volume_vec,nchunk,"chunk/atom:chunk_volume_vec");
     double rlo,rhi,vollo,volhi;
     for (int i = 0; i < nchunk; i++) {
       rlo = sradmin + i * (sradmax-sradmin) / nsbin;
       rhi = sradmin + (i+1) * (sradmax-sradmin) / nsbin;
       if (i == nchunk-1) rhi = sradmax;
       vollo = 4.0/3.0 * MY_PI * rlo*rlo*rlo;
       volhi = 4.0/3.0 * MY_PI * rhi*rhi*rhi;
       chunk_volume_vec[i] = volhi - vollo;
     }
 
   } else if (which == BINCYLINDER) {
     memory->destroy(chunk_volume_vec);
     memory->create(chunk_volume_vec,nchunk,"chunk/atom:chunk_volume_vec");
 
     // slabthick = delta of bins along cylinder axis
 
     double *prd;
     if (scaleflag == REDUCED) prd = domain->prd_lamda;
     else prd = domain->prd;
     double slabthick = domain->prd[dim[0]] * delta[0]/prd[dim[0]];
 
     // area lo/hi of concentric circles in radial direction
 
     int iradbin;
     double rlo,rhi,arealo,areahi;
     for (int i = 0; i < nchunk; i++) {
       iradbin = i / ncplane;
       rlo = cradmin + iradbin * (cradmax-cradmin) / ncbin;
       rhi = cradmin + (iradbin+1) * (cradmax-cradmin) / ncbin;
       if (iradbin == ncbin-1) rhi = cradmax;
       arealo = MY_PI * rlo*rlo;
       areahi = MY_PI * rhi*rhi;
       chunk_volume_vec[i] = (areahi-arealo) * slabthick;
     }
   }
 }
 
 /* ----------------------------------------------------------------------
    assign each atom to a 1d spatial bin (layer)
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::atom2bin1d()
 {
   int i,ibin;
   double *boxlo,*boxhi,*prd;
   double xremap;
 
   double **x = atom->x;
   int nlocal = atom->nlocal;
 
   int idim = dim[0];
   int nlayer1m1 = nlayers[0] - 1;
   int periodicity = domain->periodicity[idim];
 
   if (periodicity) {
     if (scaleflag == REDUCED) {
       boxlo = domain->boxlo_lamda;
       boxhi = domain->boxhi_lamda;
       prd = domain->prd_lamda;
     } else {
       boxlo = domain->boxlo;
       boxhi = domain->boxhi;
       prd = domain->prd;
     }
   }
 
   // remap each atom's relevant coord back into box via PBC if necessary
   // if scaleflag = REDUCED, box coords -> lamda coords
   // apply discard rule
 
   if (scaleflag == REDUCED) domain->x2lamda(nlocal);
 
   for (i = 0; i < nlocal; i++) {
     if (exclude[i]) continue;
 
     xremap = x[i][idim];
     if (periodicity) {
       if (xremap < boxlo[idim]) xremap += prd[idim];
       if (xremap >= boxhi[idim]) xremap -= prd[idim];
     }
 
     ibin = static_cast<int> ((xremap - offset[0]) * invdelta[0]);
     if (xremap < offset[0]) ibin--;
 
     if (discard == MIXED) {
       if (!minflag[idim]) ibin = MAX(ibin,0);
       else if (ibin < 0) {
         exclude[i] = 1;
         continue;
       }
       if (!maxflag[idim]) ibin = MIN(ibin,nlayer1m1);
       else if (ibin > nlayer1m1) {
         exclude[i] = 1;
         continue;
       }
     } else if (discard == NODISCARD) {
       ibin = MAX(ibin,0);
       ibin = MIN(ibin,nlayer1m1);
     } else if (ibin < 0 || ibin > nlayer1m1) {
       exclude[i] = 1;
       continue;
     }
 
     ichunk[i] = ibin+1;
   }
 
   if (scaleflag == REDUCED) domain->lamda2x(nlocal);
 }
 
 /* ----------------------------------------------------------------------
    assign each atom to a 2d spatial bin (pencil)
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::atom2bin2d()
 {
   int i,ibin,i1bin,i2bin;
   double *boxlo,*boxhi,*prd;
   double xremap,yremap;
 
   double **x = atom->x;
   int nlocal = atom->nlocal;
 
   int idim = dim[0];
   int jdim = dim[1];
   int nlayer1m1 = nlayers[0] - 1;
   int nlayer2m1 = nlayers[1] - 1;
   int *periodicity = domain->periodicity;
 
   if (periodicity[idim] || periodicity[jdim]) {
     if (scaleflag == REDUCED) {
       boxlo = domain->boxlo_lamda;
       boxhi = domain->boxhi_lamda;
       prd = domain->prd_lamda;
     } else {
       boxlo = domain->boxlo;
       boxhi = domain->boxhi;
       prd = domain->prd;
     }
   }
 
   // remap each atom's relevant coord back into box via PBC if necessary
   // if scaleflag = REDUCED, box coords -> lamda coords
   // apply discard rule
 
   if (scaleflag == REDUCED) domain->x2lamda(nlocal);
 
   for (i = 0; i < nlocal; i++) {
     if (exclude[i]) continue;
 
     xremap = x[i][idim];
     if (periodicity[idim]) {
       if (xremap < boxlo[idim]) xremap += prd[idim];
       if (xremap >= boxhi[idim]) xremap -= prd[idim];
     }
 
     i1bin = static_cast<int> ((xremap - offset[0]) * invdelta[0]);
     if (xremap < offset[0]) i1bin--;
 
     if (discard == MIXED) {
       if (!minflag[idim]) i1bin = MAX(i1bin,0);
       else if (i1bin < 0) {
         exclude[i] = 1;
         continue;
       }
       if (!maxflag[idim]) i1bin = MIN(i1bin,nlayer1m1);
       else if (i1bin > nlayer1m1) {
         exclude[i] = 1;
         continue;
       }
     } else if (discard == NODISCARD) {
       i1bin = MAX(i1bin,0);
       i1bin = MIN(i1bin,nlayer1m1);
     } else if (i1bin < 0 || i1bin > nlayer1m1) {
       exclude[i] = 1;
       continue;
     }
 
     yremap = x[i][jdim];
     if (periodicity[jdim]) {
       if (yremap < boxlo[jdim]) yremap += prd[jdim];
       if (yremap >= boxhi[jdim]) yremap -= prd[jdim];
     }
 
     i2bin = static_cast<int> ((yremap - offset[1]) * invdelta[1]);
     if (yremap < offset[1]) i2bin--;
 
     if (discard == MIXED) {
       if (!minflag[jdim]) i2bin = MAX(i2bin,0);
       else if (i2bin < 0) {
         exclude[i] = 1;
         continue;
       }
       if (!maxflag[jdim]) i2bin = MIN(i2bin,nlayer2m1);
       else if (i2bin > nlayer2m1) {
         exclude[i] = 1;
         continue;
       }
     } else if (discard == NODISCARD) {
       i2bin = MAX(i2bin,0);
       i2bin = MIN(i2bin,nlayer2m1);
     } else if (i2bin < 0 || i2bin > nlayer2m1) {
       exclude[i] = 1;
       continue;
     }
 
     ibin = i1bin*nlayers[1] + i2bin;
     ichunk[i] = ibin+1;
   }
 
   if (scaleflag == REDUCED) domain->lamda2x(nlocal);
 }
 
 /* ----------------------------------------------------------------------
    assign each atom to a 3d spatial bin (brick)
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::atom2bin3d()
 {
   int i,ibin,i1bin,i2bin,i3bin;
   double *boxlo,*boxhi,*prd;
   double xremap,yremap,zremap;
 
   double **x = atom->x;
   int nlocal = atom->nlocal;
 
   int idim = dim[0];
   int jdim = dim[1];
   int kdim = dim[2];
   int nlayer1m1 = nlayers[0] - 1;
   int nlayer2m1 = nlayers[1] - 1;
   int nlayer3m1 = nlayers[2] - 1;
   int *periodicity = domain->periodicity;
 
   if (periodicity[idim] || periodicity[jdim] || periodicity[kdim]) {
     if (scaleflag == REDUCED) {
       boxlo = domain->boxlo_lamda;
       boxhi = domain->boxhi_lamda;
       prd = domain->prd_lamda;
     } else {
       boxlo = domain->boxlo;
       boxhi = domain->boxhi;
       prd = domain->prd;
     }
   }
 
   // remap each atom's relevant coord back into box via PBC if necessary
   // if scaleflag = REDUCED, box coords -> lamda coords
   // apply discard rule
 
   if (scaleflag == REDUCED) domain->x2lamda(nlocal);
 
   for (i = 0; i < nlocal; i++) {
     if (exclude[i]) continue;
 
     xremap = x[i][idim];
     if (periodicity[idim]) {
       if (xremap < boxlo[idim]) xremap += prd[idim];
       if (xremap >= boxhi[idim]) xremap -= prd[idim];
     }
 
     i1bin = static_cast<int> ((xremap - offset[0]) * invdelta[0]);
     if (xremap < offset[0]) i1bin--;
 
     if (discard == MIXED) {
       if (!minflag[idim]) i1bin = MAX(i1bin,0);
       else if (i1bin < 0) {
         exclude[i] = 1;
         continue;
       }
       if (!maxflag[idim]) i1bin = MIN(i1bin,nlayer1m1);
       else if (i1bin > nlayer1m1) {
         exclude[i] = 1;
         continue;
       }
     } else if (discard == NODISCARD) {
       i1bin = MAX(i1bin,0);
       i1bin = MIN(i1bin,nlayer1m1);
     } else if (i1bin < 0 || i1bin > nlayer1m1) {
       exclude[i] = 1;
       continue;
     }
 
     yremap = x[i][jdim];
     if (periodicity[jdim]) {
       if (yremap < boxlo[jdim]) yremap += prd[jdim];
       if (yremap >= boxhi[jdim]) yremap -= prd[jdim];
     }
 
     i2bin = static_cast<int> ((yremap - offset[1]) * invdelta[1]);
     if (yremap < offset[1]) i2bin--;
 
     if (discard == MIXED) {
       if (!minflag[jdim]) i2bin = MAX(i2bin,0);
       else if (i2bin < 0) {
         exclude[i] = 1;
         continue;
       }
       if (!maxflag[jdim]) i2bin = MIN(i2bin,nlayer2m1);
       else if (i2bin > nlayer2m1) {
         exclude[i] = 1;
         continue;
       }
     } else if (discard == NODISCARD) {
       i2bin = MAX(i2bin,0);
       i2bin = MIN(i2bin,nlayer2m1);
     } else if (i2bin < 0 || i2bin > nlayer2m1) {
       exclude[i] = 1;
       continue;
     }
 
     zremap = x[i][kdim];
     if (periodicity[kdim]) {
       if (zremap < boxlo[kdim]) zremap += prd[kdim];
       if (zremap >= boxhi[kdim]) zremap -= prd[kdim];
     }
 
     i3bin = static_cast<int> ((zremap - offset[2]) * invdelta[2]);
     if (zremap < offset[2]) i3bin--;
 
     if (discard == MIXED) {
       if (!minflag[kdim]) i3bin = MAX(i3bin,0);
       else if (i3bin < 0) {
         exclude[i] = 1;
         continue;
       }
       if (!maxflag[kdim]) i3bin = MIN(i3bin,nlayer3m1);
       else if (i3bin > nlayer3m1) {
         exclude[i] = 1;
         continue;
       }
     } else if (discard == NODISCARD) {
       i3bin = MAX(i3bin,0);
       i3bin = MIN(i3bin,nlayer3m1);
     } else if (i3bin < 0 || i3bin > nlayer3m1) {
       exclude[i] = 1;
       continue;
     }
 
     ibin = i1bin*nlayers[1]*nlayers[2] + i2bin*nlayers[2] + i3bin;
     ichunk[i] = ibin+1;
   }
 
   if (scaleflag == REDUCED) domain->lamda2x(nlocal);
 }
 
 /* ----------------------------------------------------------------------
    assign each atom to a spherical bin
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::atom2binsphere()
 {
   int i,ibin;
   double dx,dy,dz,r;
   double xremap,yremap,zremap;
 
   double *boxlo = domain->boxlo;
   double *boxhi = domain->boxhi;
   double *prd = domain->prd;
   double *prd_half = domain->prd_half;
   int *periodicity = domain->periodicity;
 
   // remap each atom's relevant coords back into box via PBC if necessary
   // apply discard rule based on rmin and rmax
 
   double **x = atom->x;
   int nlocal = atom->nlocal;
 
   for (i = 0; i < nlocal; i++) {
     if (exclude[i]) continue;
 
     xremap = x[i][0];
     if (periodicity[0]) {
       if (xremap < boxlo[0]) xremap += prd[0];
       if (xremap >= boxhi[0]) xremap -= prd[0];
     }
     yremap = x[i][1];
     if (periodicity[1]) {
       if (xremap < boxlo[1]) yremap += prd[1];
       if (xremap >= boxhi[1]) yremap -= prd[1];
     }
     zremap = x[i][2];
     if (periodicity[2]) {
       if (xremap < boxlo[2]) zremap += prd[2];
       if (xremap >= boxhi[2]) zremap -= prd[2];
     }
 
     dx = xremap - sorigin[0];
     dy = yremap - sorigin[1];
     dz = zremap - sorigin[2];
 
     // if requested, apply PBC to distance from sphere center
     // treat orthogonal and triclinic the same
     //   with dx,dy,dz = lengths independent of each other
     // so do not use domain->minimum_image() which couples for triclinic
 
     if (pbcflag) {
       if (periodicity[0]) {
         if (fabs(dx) > prd_half[0]) {
           if (dx < 0.0) dx += prd[0];
           else dx -= prd[0];
         }
       }
       if (periodicity[1]) {
         if (fabs(dy) > prd_half[1]) {
           if (dy < 0.0) dy += prd[1];
           else dy -= prd[1];
         }
       }
       if (periodicity[2]) {
         if (fabs(dz) > prd_half[2]) {
           if (dz < 0.0) dz += prd[2];
           else dz -= prd[2];
         }
       }
     }
 
     r = sqrt(dx*dx + dy*dy + dz*dz);
 
     ibin = static_cast<int> ((r - sradmin) * sinvrad);
     if (r < sradmin) ibin--;
 
     if (discard == MIXED || discard == NODISCARD) {
       ibin = MAX(ibin,0);
       ibin = MIN(ibin,nchunk-1);
     } else if (ibin < 0 || ibin >= nchunk) {
       exclude[i] = 1;
       continue;
     }
 
     ichunk[i] = ibin+1;
   }
 }
 
 /* ----------------------------------------------------------------------
    assign each atom to a cylindrical bin
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::atom2bincylinder()
 {
   int i,rbin,kbin;
   double d1,d2,r;
   double remap1,remap2;
 
   // first use atom2bin1d() to bin all atoms along cylinder axis
 
   atom2bin1d();
 
   // now bin in radial direction
   // kbin = bin along cylinder axis
   // rbin = bin in radial direction
 
   double *boxlo = domain->boxlo;
   double *boxhi = domain->boxhi;
   double *prd = domain->prd;
   double *prd_half = domain->prd_half;
   int *periodicity = domain->periodicity;
 
   // remap each atom's relevant coords back into box via PBC if necessary
   // apply discard rule based on rmin and rmax
 
   double **x = atom->x;
   int nlocal = atom->nlocal;
 
   for (i = 0; i < nlocal; i++) {
     if (exclude[i]) continue;
     kbin = ichunk[i] - 1;
 
     remap1 = x[i][cdim1];
     if (periodicity[cdim1]) {
       if (remap1 < boxlo[cdim1]) remap1 += prd[cdim1];
       if (remap1 >= boxhi[cdim1]) remap1 -= prd[cdim1];
     }
     remap2 = x[i][cdim2];
     if (periodicity[cdim2]) {
       if (remap2 < boxlo[cdim2]) remap2 += prd[cdim2];
       if (remap2 >= boxhi[cdim2]) remap2 -= prd[cdim2];
     }
 
     d1 = remap1 - corigin[cdim1];
     d2 = remap2 - corigin[cdim2];
 
     // if requested, apply PBC to distance from cylinder axis
     // treat orthogonal and triclinic the same
     //   with d1,d2 = lengths independent of each other
 
     if (pbcflag) {
       if (periodicity[cdim1]) {
         if (fabs(d1) > prd_half[cdim1]) {
           if (d1 < 0.0) d1 += prd[cdim1];
           else d1 -= prd[cdim1];
         }
       }
       if (periodicity[cdim2]) {
         if (fabs(d2) > prd_half[cdim2]) {
           if (d2 < 0.0) d2 += prd[cdim2];
           else d2 -= prd[cdim2];
         }
       }
     }
 
     r = sqrt(d1*d1 + d2*d2);
 
     rbin = static_cast<int> ((r - cradmin) * cinvrad);
     if (r < cradmin) rbin--;
 
     if (discard == MIXED || discard == NODISCARD) {
       rbin = MAX(rbin,0);
       rbin = MIN(rbin,ncbin-1);
     } else if (rbin < 0 || rbin >= ncbin) {
       exclude[i] = 1;
       continue;
     }
 
     // combine axis and radial bin indices to set ichunk
 
     ichunk[i] = rbin*ncplane + kbin + 1;
   }
 }
 
 /* ----------------------------------------------------------------------
    process args for one dimension of binning info
    set dim, originflag, origin, delta
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::readdim(int narg, char **arg, int iarg, int idim)
 {
   if (narg < iarg+3) error->all(FLERR,"Illegal compute chunk/atom command");
   if (strcmp(arg[iarg],"x") == 0) dim[idim] = 0;
   else if (strcmp(arg[iarg],"y") == 0) dim[idim] = 1;
   else if (strcmp(arg[iarg],"z") == 0) dim[idim] = 2;
   else error->all(FLERR,"Illegal compute chunk/atom command");
 
   if (dim[idim] == 2 && domain->dimension == 2)
     error->all(FLERR,"Cannot use compute chunk/atom bin z for 2d model");
 
   if (strcmp(arg[iarg+1],"lower") == 0) originflag[idim] = LOWER;
   else if (strcmp(arg[iarg+1],"center") == 0) originflag[idim] = CENTER;
   else if (strcmp(arg[iarg+1],"upper") == 0) originflag[idim] = UPPER;
   else originflag[idim] = COORD;
   if (originflag[idim] == COORD)
     origin[idim] = force->numeric(FLERR,arg[iarg+1]);
 
   delta[idim] = force->numeric(FLERR,arg[iarg+2]);
 }
 
 /* ----------------------------------------------------------------------
    initialize one atom's storage values, called when atom is created
    just set chunkID to 0 for new atom
 ------------------------------------------------------------------------- */
 
 void ComputeChunkAtom::set_arrays(int i)
 {
   if (!fixstore) return;
   double *vstore = fixstore->vstore;
   vstore[i] = 0.0;
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based arrays and per-chunk arrays
    note: nchunk is actually 0 until first call
 ------------------------------------------------------------------------- */
 
 double ComputeChunkAtom::memory_usage()
 {
   double bytes = 2*MAX(nmaxint,0) * sizeof(int);   // ichunk,exclude
   bytes += nmax * sizeof(double);                  // chunk
   bytes += ncoord*nchunk * sizeof(double);         // coord
   if (compress) bytes += nchunk * sizeof(int);     // chunkID
   return bytes;
 }
diff --git a/src/compute_cluster_atom.cpp b/src/compute_cluster_atom.cpp
index c81785f21..80c002d39 100644
--- a/src/compute_cluster_atom.cpp
+++ b/src/compute_cluster_atom.cpp
@@ -1,244 +1,244 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
 #include <string.h>
 #include <stdlib.h>
 #include "compute_cluster_atom.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "neighbor.h"
 #include "neigh_list.h"
 #include "neigh_request.h"
 #include "force.h"
 #include "pair.h"
 #include "comm.h"
 #include "memory.h"
 #include "error.h"
 
 #include "group.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeClusterAtom::ComputeClusterAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  clusterID(NULL)
 {
   if (narg != 4) error->all(FLERR,"Illegal compute cluster/atom command");
 
   double cutoff = force->numeric(FLERR,arg[3]);
   cutsq = cutoff*cutoff;
 
   peratom_flag = 1;
   size_peratom_cols = 0;
   comm_forward = 1;
 
   nmax = 0;
-  clusterID = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeClusterAtom::~ComputeClusterAtom()
 {
   memory->destroy(clusterID);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeClusterAtom::init()
 {
   if (atom->tag_enable == 0)
     error->all(FLERR,"Cannot use compute cluster/atom unless atoms have IDs");
   if (force->pair == NULL)
     error->all(FLERR,"Compute cluster/atom requires a pair style be defined");
   if (sqrt(cutsq) > force->pair->cutforce)
     error->all(FLERR,
                "Compute cluster/atom cutoff is longer than pairwise cutoff");
 
   // need an occasional full neighbor list
   // full required so that pair of atoms on 2 procs both set their clusterID
 
   int irequest = neighbor->request(this,instance_me);
   neighbor->requests[irequest]->pair = 0;
   neighbor->requests[irequest]->compute = 1;
   neighbor->requests[irequest]->half = 0;
   neighbor->requests[irequest]->full = 1;
   neighbor->requests[irequest]->occasional = 1;
 
   int count = 0;
   for (int i = 0; i < modify->ncompute; i++)
     if (strcmp(modify->compute[i]->style,"cluster/atom") == 0) count++;
   if (count > 1 && comm->me == 0)
     error->warning(FLERR,"More than one compute cluster/atom");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeClusterAtom::init_list(int id, NeighList *ptr)
 {
   list = ptr;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeClusterAtom::compute_peratom()
 {
   int i,j,ii,jj,inum,jnum;
   double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
   int *ilist,*jlist,*numneigh,**firstneigh;
 
   invoked_peratom = update->ntimestep;
 
   // grow clusterID array if necessary
 
   if (atom->nmax > nmax) {
     memory->destroy(clusterID);
     nmax = atom->nmax;
     memory->create(clusterID,nmax,"cluster/atom:clusterID");
     vector_atom = clusterID;
   }
 
   // invoke full neighbor list (will copy or build if necessary)
 
   neighbor->build_one(list);
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
   // if group is dynamic, insure ghost atom masks are current
 
   if (group->dynamic[igroup]) {
     commflag = 0;
     comm->forward_comm_compute(this);
   }
 
   // every atom starts in its own cluster, with clusterID = atomID
 
   tagint *tag = atom->tag;
   int *mask = atom->mask;
 
   for (ii = 0; ii < inum; ii++) {
     i = ilist[ii];
     if (mask[i] & groupbit) clusterID[i] = tag[i];
     else clusterID[i] = 0;
   }
 
   // loop until no more changes on any proc:
   // acquire clusterIDs of ghost atoms
   // loop over my atoms, checking distance to neighbors
   // if both atoms are in cluster, assign lowest clusterID to both
   // iterate until no changes in my atoms
   // then check if any proc made changes
 
   commflag = 1;
   double **x = atom->x;
 
   int change,done,anychange;
 
   while (1) {
     comm->forward_comm_compute(this);
 
     change = 0;
     while (1) {
       done = 1;
       for (ii = 0; ii < inum; ii++) {
         i = ilist[ii];
         if (!(mask[i] & groupbit)) continue;
 
         xtmp = x[i][0];
         ytmp = x[i][1];
         ztmp = x[i][2];
         jlist = firstneigh[i];
         jnum = numneigh[i];
 
         for (jj = 0; jj < jnum; jj++) {
           j = jlist[jj];
           j &= NEIGHMASK;
           if (!(mask[j] & groupbit)) continue;
           if (clusterID[i] == clusterID[j]) continue;
 
           delx = xtmp - x[j][0];
           dely = ytmp - x[j][1];
           delz = ztmp - x[j][2];
           rsq = delx*delx + dely*dely + delz*delz;
           if (rsq < cutsq) {
             clusterID[i] = clusterID[j] = MIN(clusterID[i],clusterID[j]);
             done = 0;
           }
         }
       }
       if (!done) change = 1;
       if (done) break;
     }
 
     // stop if all procs are done
 
     MPI_Allreduce(&change,&anychange,1,MPI_INT,MPI_MAX,world);
     if (!anychange) break;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 int ComputeClusterAtom::pack_forward_comm(int n, int *list, double *buf,
                                           int pbc_flag, int *pbc)
 {
   int i,j,m;
 
   m = 0;
   if (commflag) {
     for (i = 0; i < n; i++) {
       j = list[i];
       buf[m++] = clusterID[j];
     }
   } else {
     int *mask = atom->mask;
     for (i = 0; i < n; i++) {
       j = list[i];
       buf[m++] = ubuf(mask[j]).d;
     }
   }
 
   return m;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeClusterAtom::unpack_forward_comm(int n, int first, double *buf)
 {
   int i,m,last;
 
   m = 0;
   last = first + n;
   if (commflag)
     for (i = first; i < last; i++) clusterID[i] = buf[m++];
   else {
     int *mask = atom->mask;
     for (i = first; i < last; i++) mask[i] = (int) ubuf(buf[m++]).i;
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based array
 ------------------------------------------------------------------------- */
 
 double ComputeClusterAtom::memory_usage()
 {
   double bytes = nmax * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_cna_atom.cpp b/src/compute_cna_atom.cpp
index 46c6726b0..024a95d9d 100644
--- a/src/compute_cna_atom.cpp
+++ b/src/compute_cna_atom.cpp
@@ -1,367 +1,365 @@
 /* ----------------------------------------------------------------------
    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: Wan Liang (Chinese Academy of Sciences)
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include <stdlib.h>
 #include "compute_cna_atom.h"
 #include "atom.h"
 #include "update.h"
 #include "force.h"
 #include "pair.h"
 #include "modify.h"
 #include "neighbor.h"
 #include "neigh_list.h"
 #include "neigh_request.h"
 #include "comm.h"
 #include "memory.h"
 #include "error.h"
 #include <math.h>
 
 using namespace LAMMPS_NS;
 
 #define MAXNEAR 16
 #define MAXCOMMON 8
 
 enum{UNKNOWN,FCC,HCP,BCC,ICOS,OTHER};
 enum{NCOMMON,NBOND,MAXBOND,MINBOND};
 
 /* ---------------------------------------------------------------------- */
 
 ComputeCNAAtom::ComputeCNAAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  nearest(NULL), nnearest(NULL), pattern(NULL)
 {
   if (narg != 4) error->all(FLERR,"Illegal compute cna/atom command");
 
   peratom_flag = 1;
   size_peratom_cols = 0;
 
   double cutoff = force->numeric(FLERR,arg[3]);
   if (cutoff < 0.0) error->all(FLERR,"Illegal compute cna/atom command");
   cutsq = cutoff*cutoff;
 
   nmax = 0;
-  nearest = NULL;
-  nnearest = NULL;
-  pattern = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeCNAAtom::~ComputeCNAAtom()
 {
   memory->destroy(nearest);
   memory->destroy(nnearest);
   memory->destroy(pattern);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeCNAAtom::init()
 {
   if (force->pair == NULL)
     error->all(FLERR,"Compute cna/atom requires a pair style be defined");
   if (sqrt(cutsq) > force->pair->cutforce)
     error->all(FLERR,"Compute cna/atom cutoff is longer than pairwise cutoff");
 
   // cannot use neighbor->cutneighmax b/c neighbor has not yet been init
 
   if (2.0*sqrt(cutsq) > force->pair->cutforce + neighbor->skin &&
       comm->me == 0)
     error->warning(FLERR,"Compute cna/atom cutoff may be too large to find "
                    "ghost atom neighbors");
 
   int count = 0;
   for (int i = 0; i < modify->ncompute; i++)
     if (strcmp(modify->compute[i]->style,"cna/atom") == 0) count++;
   if (count > 1 && comm->me == 0)
     error->warning(FLERR,"More than one compute cna/atom defined");
 
   // need an occasional full neighbor list
 
   int irequest = neighbor->request(this,instance_me);
   neighbor->requests[irequest]->pair = 0;
   neighbor->requests[irequest]->compute = 1;
   neighbor->requests[irequest]->half = 0;
   neighbor->requests[irequest]->full = 1;
   neighbor->requests[irequest]->occasional = 1;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeCNAAtom::init_list(int id, NeighList *ptr)
 {
   list = ptr;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeCNAAtom::compute_peratom()
 {
   int i,j,k,ii,jj,kk,m,n,inum,jnum,inear,jnear;
   int firstflag,ncommon,nbonds,maxbonds,minbonds;
   int nfcc,nhcp,nbcc4,nbcc6,nico,cj,ck,cl,cm;
   int *ilist,*jlist,*numneigh,**firstneigh;
   int cna[MAXNEAR][4],onenearest[MAXNEAR];
   int common[MAXCOMMON],bonds[MAXCOMMON];
   double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
 
   invoked_peratom = update->ntimestep;
 
   // grow arrays if necessary
 
   if (atom->nmax > nmax) {
     memory->destroy(nearest);
     memory->destroy(nnearest);
     memory->destroy(pattern);
     nmax = atom->nmax;
 
     memory->create(nearest,nmax,MAXNEAR,"cna:nearest");
     memory->create(nnearest,nmax,"cna:nnearest");
     memory->create(pattern,nmax,"cna:cna_pattern");
     vector_atom = pattern;
   }
 
   // invoke full neighbor list (will copy or build if necessary)
 
   neighbor->build_one(list);
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
   // find the neigbours of each atom within cutoff using full neighbor list
   // nearest[] = atom indices of nearest neighbors, up to MAXNEAR
   // do this for all atoms, not just compute group
   // since CNA calculation requires neighbors of neighbors
 
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   int nerror = 0;
   for (ii = 0; ii < inum; ii++) {
     i = ilist[ii];
     xtmp = x[i][0];
     ytmp = x[i][1];
     ztmp = x[i][2];
     jlist = firstneigh[i];
     jnum = numneigh[i];
 
     n = 0;
     for (jj = 0; jj < jnum; jj++) {
       j = jlist[jj];
       j &= NEIGHMASK;
 
       delx = xtmp - x[j][0];
       dely = ytmp - x[j][1];
       delz = ztmp - x[j][2];
       rsq = delx*delx + dely*dely + delz*delz;
       if (rsq < cutsq) {
         if (n < MAXNEAR) nearest[i][n++] = j;
         else {
           nerror++;
           break;
         }
       }
     }
     nnearest[i] = n;
   }
 
   // warning message
 
   int nerrorall;
   MPI_Allreduce(&nerror,&nerrorall,1,MPI_INT,MPI_SUM,world);
   if (nerrorall && comm->me == 0) {
     char str[128];
     sprintf(str,"Too many neighbors in CNA for %d atoms",nerrorall);
     error->warning(FLERR,str,0);
   }
 
   // compute CNA for each atom in group
   // only performed if # of nearest neighbors = 12 or 14 (fcc,hcp)
 
   nerror = 0;
   for (ii = 0; ii < inum; ii++) {
     i = ilist[ii];
 
     if (!(mask[i] & groupbit)) {
       pattern[i] = UNKNOWN;
       continue;
     }
 
     if (nnearest[i] != 12 && nnearest[i] != 14) {
       pattern[i] = OTHER;
       continue;
     }
 
     // loop over near neighbors of I to build cna data structure
     // cna[k][NCOMMON] = # of common neighbors of I with each of its neighs
     // cna[k][NBONDS] = # of bonds between those common neighbors
     // cna[k][MAXBOND] = max # of bonds of any common neighbor
     // cna[k][MINBOND] = min # of bonds of any common neighbor
 
     for (m = 0; m < nnearest[i]; m++) {
       j = nearest[i][m];
 
       // common = list of neighbors common to atom I and atom J
       // if J is an owned atom, use its near neighbor list to find them
       // if J is a ghost atom, use full neighbor list of I to find them
       // in latter case, must exclude J from I's neighbor list
 
       if (j < nlocal) {
         firstflag = 1;
         ncommon = 0;
         for (inear = 0; inear < nnearest[i]; inear++)
           for (jnear = 0; jnear < nnearest[j]; jnear++)
             if (nearest[i][inear] == nearest[j][jnear]) {
               if (ncommon < MAXCOMMON) common[ncommon++] = nearest[i][inear];
               else if (firstflag) {
                 nerror++;
                 firstflag = 0;
               }
             }
 
       } else {
         xtmp = x[j][0];
         ytmp = x[j][1];
         ztmp = x[j][2];
         jlist = firstneigh[i];
         jnum = numneigh[i];
 
         n = 0;
         for (kk = 0; kk < jnum; kk++) {
           k = jlist[kk];
           k &= NEIGHMASK;
           if (k == j) continue;
 
           delx = xtmp - x[k][0];
           dely = ytmp - x[k][1];
           delz = ztmp - x[k][2];
           rsq = delx*delx + dely*dely + delz*delz;
           if (rsq < cutsq) {
             if (n < MAXNEAR) onenearest[n++] = k;
             else break;
           }
         }
 
         firstflag = 1;
         ncommon = 0;
         for (inear = 0; inear < nnearest[i]; inear++)
           for (jnear = 0; (jnear < n) && (n < MAXNEAR); jnear++)
             if (nearest[i][inear] == onenearest[jnear]) {
               if (ncommon < MAXCOMMON) common[ncommon++] = nearest[i][inear];
               else if (firstflag) {
                 nerror++;
                 firstflag = 0;
               }
             }
       }
 
       cna[m][NCOMMON] = ncommon;
 
       // calculate total # of bonds between common neighbor atoms
       // also max and min # of common atoms any common atom is bonded to
       // bond = pair of atoms within cutoff
 
       for (n = 0; n < ncommon; n++) bonds[n] = 0;
 
       nbonds = 0;
       for (jj = 0; jj < ncommon; jj++) {
         j = common[jj];
         xtmp = x[j][0];
         ytmp = x[j][1];
         ztmp = x[j][2];
         for (kk = jj+1; kk < ncommon; kk++) {
           k = common[kk];
           delx = xtmp - x[k][0];
           dely = ytmp - x[k][1];
           delz = ztmp - x[k][2];
           rsq = delx*delx + dely*dely + delz*delz;
           if (rsq < cutsq) {
             nbonds++;
             bonds[jj]++;
             bonds[kk]++;
           }
         }
       }
 
       cna[m][NBOND] = nbonds;
 
       maxbonds = 0;
       minbonds = MAXCOMMON;
       for (n = 0; n < ncommon; n++) {
         maxbonds = MAX(bonds[n],maxbonds);
         minbonds = MIN(bonds[n],minbonds);
       }
       cna[m][MAXBOND] = maxbonds;
       cna[m][MINBOND] = minbonds;
     }
 
     // detect CNA pattern of the atom
 
     nfcc = nhcp = nbcc4 = nbcc6 = nico = 0;
     pattern[i] = OTHER;
 
     if (nnearest[i] == 12) {
       for (inear = 0; inear < 12; inear++) {
         cj = cna[inear][NCOMMON];
         ck = cna[inear][NBOND];
         cl = cna[inear][MAXBOND];
         cm = cna[inear][MINBOND];
         if (cj == 4 && ck == 2 && cl == 1 && cm == 1) nfcc++;
         else if (cj == 4 && ck == 2 && cl == 2 && cm == 0) nhcp++;
         else if (cj == 5 && ck == 5 && cl == 2 && cm == 2) nico++;
       }
       if (nfcc == 12) pattern[i] = FCC;
       else if (nfcc == 6 && nhcp == 6) pattern[i] = HCP;
       else if (nico == 12) pattern[i] = ICOS;
 
     } else if (nnearest[i] == 14) {
       for (inear = 0; inear < 14; inear++) {
         cj = cna[inear][NCOMMON];
         ck = cna[inear][NBOND];
         cl = cna[inear][MAXBOND];
         cm = cna[inear][MINBOND];
         if (cj == 4 && ck == 4 && cl == 2 && cm == 2) nbcc4++;
         else if (cj == 6 && ck == 6 && cl == 2 && cm == 2) nbcc6++;
       }
       if (nbcc4 == 6 && nbcc6 == 8) pattern[i] = BCC;
     }
   }
 
   // warning message
 
   MPI_Allreduce(&nerror,&nerrorall,1,MPI_INT,MPI_SUM,world);
   if (nerrorall && comm->me == 0) {
     char str[128];
     sprintf(str,"Too many common neighbors in CNA %d times",nerrorall);
     error->warning(FLERR,str);
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based array
 ------------------------------------------------------------------------- */
 
 double ComputeCNAAtom::memory_usage()
 {
   double bytes = nmax * sizeof(int);
   bytes += nmax * MAXNEAR * sizeof(int);
   bytes += nmax * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_com_chunk.cpp b/src/compute_com_chunk.cpp
index ebf2b30f6..3eb686783 100644
--- a/src/compute_com_chunk.cpp
+++ b/src/compute_com_chunk.cpp
@@ -1,243 +1,242 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_com_chunk.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "compute_chunk_atom.h"
 #include "domain.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 enum{ONCE,NFREQ,EVERY};
 
 /* ---------------------------------------------------------------------- */
 
 ComputeCOMChunk::ComputeCOMChunk(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  idchunk(NULL), masstotal(NULL), massproc(NULL), com(NULL), comall(NULL)
 {
   if (narg != 4) error->all(FLERR,"Illegal compute com/chunk command");
 
   array_flag = 1;
   size_array_cols = 3;
   size_array_rows = 0;
   size_array_rows_variable = 1;
   extarray = 0;
 
   // ID of compute chunk/atom
 
   int n = strlen(arg[3]) + 1;
   idchunk = new char[n];
   strcpy(idchunk,arg[3]);
 
   init();
 
   // chunk-based data
 
   nchunk = 1;
   maxchunk = 0;
-  massproc = masstotal = NULL;
-  com = comall = NULL;
   allocate();
 
   firstflag = massneed = 1;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeCOMChunk::~ComputeCOMChunk()
 {
   delete [] idchunk;
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(com);
   memory->destroy(comall);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeCOMChunk::init()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute < 0)
     error->all(FLERR,"Chunk/atom compute does not exist for compute com/chunk");
   cchunk = (ComputeChunkAtom *) modify->compute[icompute];
   if (strcmp(cchunk->style,"chunk/atom") != 0)
     error->all(FLERR,"Compute com/chunk does not use chunk/atom compute");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeCOMChunk::setup()
 {
   // one-time calculation of per-chunk mass
   // done in setup, so that ComputeChunkAtom::setup() is already called
 
   if (firstflag && cchunk->idsflag == ONCE) {
     compute_array();
     firstflag = massneed = 0;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeCOMChunk::compute_array()
 {
   int index;
   double massone;
   double unwrap[3];
 
   invoked_array = update->ntimestep;
 
   // compute chunk/atom assigns atoms to chunk IDs
   // extract ichunk index vector from compute
   // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
 
   nchunk = cchunk->setup_chunks();
   cchunk->compute_ichunk();
   int *ichunk = cchunk->ichunk;
 
   if (nchunk > maxchunk) allocate();
   size_array_rows = nchunk;
 
   // zero local per-chunk values
 
   for (int i = 0; i < nchunk; i++)
     com[i][0] = com[i][1] = com[i][2] = 0.0;
   if (massneed)
     for (int i = 0; i < nchunk; i++) massproc[i] = 0.0;
 
   // compute COM for each chunk
 
   double **x = atom->x;
   int *mask = atom->mask;
   int *type = atom->type;
   imageint *image = atom->image;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       domain->unmap(x[i],image[i],unwrap);
       com[index][0] += unwrap[0] * massone;
       com[index][1] += unwrap[1] * massone;
       com[index][2] += unwrap[2] * massone;
       if (massneed) massproc[index] += massone;
     }
 
   MPI_Allreduce(&com[0][0],&comall[0][0],3*nchunk,MPI_DOUBLE,MPI_SUM,world);
   if (massneed)
     MPI_Allreduce(massproc,masstotal,nchunk,MPI_DOUBLE,MPI_SUM,world);
 
   for (int i = 0; i < nchunk; i++) {
     if (masstotal[i] > 0.0) {
       comall[i][0] /= masstotal[i];
       comall[i][1] /= masstotal[i];
       comall[i][2] /= masstotal[i];
     } else comall[i][0] = comall[i][1] = comall[i][2] = 0.0;
   }
 }
 
 /* ----------------------------------------------------------------------
    lock methods: called by fix ave/time
    these methods insure vector/array size is locked for Nfreq epoch
      by passing lock info along to compute chunk/atom
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    increment lock counter
 ------------------------------------------------------------------------- */
 
 void ComputeCOMChunk::lock_enable()
 {
   cchunk->lockcount++;
 }
 
 /* ----------------------------------------------------------------------
    decrement lock counter in compute chunk/atom, it if still exists
 ------------------------------------------------------------------------- */
 
 void ComputeCOMChunk::lock_disable()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute >= 0) {
     cchunk = (ComputeChunkAtom *) modify->compute[icompute];
     cchunk->lockcount--;
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate and return # of chunks = length of vector/array
 ------------------------------------------------------------------------- */
 
 int ComputeCOMChunk::lock_length()
 {
   nchunk = cchunk->setup_chunks();
   return nchunk;
 }
 
 /* ----------------------------------------------------------------------
    set the lock from startstep to stopstep
 ------------------------------------------------------------------------- */
 
 void ComputeCOMChunk::lock(Fix *fixptr, bigint startstep, bigint stopstep)
 {
   cchunk->lock(fixptr,startstep,stopstep);
 }
 
 /* ----------------------------------------------------------------------
    unset the lock
 ------------------------------------------------------------------------- */
 
 void ComputeCOMChunk::unlock(Fix *fixptr)
 {
   cchunk->unlock(fixptr);
 }
 
 /* ----------------------------------------------------------------------
    free and reallocate per-chunk arrays
 ------------------------------------------------------------------------- */
 
 void ComputeCOMChunk::allocate()
 {
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(com);
   memory->destroy(comall);
   maxchunk = nchunk;
   memory->create(massproc,maxchunk,"com/chunk:massproc");
   memory->create(masstotal,maxchunk,"com/chunk:masstotal");
   memory->create(com,maxchunk,3,"com/chunk:com");
   memory->create(comall,maxchunk,3,"com/chunk:comall");
   array = comall;
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeCOMChunk::memory_usage()
 {
   double bytes = (bigint) maxchunk * 2 * sizeof(double);
   bytes += (bigint) maxchunk * 2*3 * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_contact_atom.cpp b/src/compute_contact_atom.cpp
index 99c4766b6..c86829bc1 100644
--- a/src/compute_contact_atom.cpp
+++ b/src/compute_contact_atom.cpp
@@ -1,197 +1,197 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
 #include <string.h>
 #include <stdlib.h>
 #include "compute_contact_atom.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "neighbor.h"
 #include "neigh_list.h"
 #include "neigh_request.h"
 #include "force.h"
 #include "pair.h"
 #include "comm.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeContactAtom::ComputeContactAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  contact(NULL)
 {
   if (narg != 3) error->all(FLERR,"Illegal compute contact/atom command");
 
   peratom_flag = 1;
   size_peratom_cols = 0;
   comm_reverse = 1;
 
   nmax = 0;
-  contact = NULL;
 
   // error checks
 
   if (!atom->sphere_flag)
     error->all(FLERR,"Compute contact/atom requires atom style sphere");
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeContactAtom::~ComputeContactAtom()
 {
   memory->destroy(contact);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeContactAtom::init()
 {
   if (force->pair == NULL)
     error->all(FLERR,"Compute contact/atom requires a pair style be defined");
 
   int count = 0;
   for (int i = 0; i < modify->ncompute; i++)
     if (strcmp(modify->compute[i]->style,"contact/atom") == 0) count++;
   if (count > 1 && comm->me == 0)
     error->warning(FLERR,"More than one compute contact/atom");
 
   // need an occasional neighbor list
 
   int irequest = neighbor->request(this,instance_me);
   neighbor->requests[irequest]->half = 0;
   neighbor->requests[irequest]->gran = 1;
   neighbor->requests[irequest]->pair = 0;
   neighbor->requests[irequest]->compute = 1;
   neighbor->requests[irequest]->occasional = 1;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeContactAtom::init_list(int id, NeighList *ptr)
 {
   list = ptr;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeContactAtom::compute_peratom()
 {
   int i,j,ii,jj,inum,jnum;
   double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
   double radi,radsum,radsumsq;
   int *ilist,*jlist,*numneigh,**firstneigh;
 
   invoked_peratom = update->ntimestep;
 
   // grow contact array if necessary
 
   if (atom->nmax > nmax) {
     memory->destroy(contact);
     nmax = atom->nmax;
     memory->create(contact,nmax,"contact/atom:contact");
     vector_atom = contact;
   }
 
   // invoke neighbor list (will copy or build if necessary)
 
   neighbor->build_one(list);
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
   // compute number of contacts for each atom in group
   // contact if distance <= sum of radii
   // tally for both I and J
 
   double **x = atom->x;
   double *radius = atom->radius;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
   int nall = nlocal + atom->nghost;
 
   for (i = 0; i < nall; i++) contact[i] = 0.0;
 
   for (ii = 0; ii < inum; ii++) {
     i = ilist[ii];
     if (mask[i] & groupbit) {
       xtmp = x[i][0];
       ytmp = x[i][1];
       ztmp = x[i][2];
       radi = radius[i];
       jlist = firstneigh[i];
       jnum = numneigh[i];
 
       for (jj = 0; jj < jnum; jj++) {
         j = jlist[jj];
         j &= NEIGHMASK;
 
         delx = xtmp - x[j][0];
         dely = ytmp - x[j][1];
         delz = ztmp - x[j][2];
         rsq = delx*delx + dely*dely + delz*delz;
         radsum = radi + radius[j];
         radsumsq = radsum*radsum;
         if (rsq <= radsumsq) {
           contact[i] += 1.0;
           contact[j] += 1.0;
         }
       }
     }
   }
 
   // communicate ghost atom counts between neighbor procs if necessary
 
   if (force->newton_pair) comm->reverse_comm_compute(this);
 }
 
 /* ---------------------------------------------------------------------- */
 
 int ComputeContactAtom::pack_reverse_comm(int n, int first, double *buf)
 {
   int i,m,last;
 
   m = 0;
   last = first + n;
   for (i = first; i < last; i++)
     buf[m++] = contact[i];
   return m;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeContactAtom::unpack_reverse_comm(int n, int *list, double *buf)
 {
   int i,j,m;
 
   m = 0;
   for (i = 0; i < n; i++) {
     j = list[i];
     contact[j] += buf[m++];
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based array
 ------------------------------------------------------------------------- */
 
 double ComputeContactAtom::memory_usage()
 {
   double bytes = nmax * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_coord_atom.cpp b/src/compute_coord_atom.cpp
index c6aa561eb..5747c869d 100644
--- a/src/compute_coord_atom.cpp
+++ b/src/compute_coord_atom.cpp
@@ -1,227 +1,226 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
 #include <string.h>
 #include <stdlib.h>
 #include "compute_coord_atom.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "neighbor.h"
 #include "neigh_list.h"
 #include "neigh_request.h"
 #include "force.h"
 #include "pair.h"
 #include "comm.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeCoordAtom::ComputeCoordAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  typelo(NULL), typehi(NULL), cvec(NULL), carray(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute coord/atom command");
 
   double cutoff = force->numeric(FLERR,arg[3]);
   cutsq = cutoff*cutoff;
 
   ncol = narg-4 + 1;
   int ntypes = atom->ntypes;
   typelo = new int[ncol];
   typehi = new int[ncol];
 
   if (narg == 4) {
     ncol = 1;
     typelo[0] = 1;
     typehi[0] = ntypes;
   } else {
     ncol = 0;
     int iarg = 4;
     while (iarg < narg) {
       force->bounds(arg[iarg],ntypes,typelo[ncol],typehi[ncol]);
       if (typelo[ncol] > typehi[ncol])
         error->all(FLERR,"Illegal compute coord/atom command");
       ncol++;
       iarg++;
     }
   }
 
   peratom_flag = 1;
   if (ncol == 1) size_peratom_cols = 0;
   else size_peratom_cols = ncol;
 
   nmax = 0;
-  cvec = NULL;
-  carray = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeCoordAtom::~ComputeCoordAtom()
 {
   delete [] typelo;
   delete [] typehi;
   memory->destroy(cvec);
   memory->destroy(carray);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeCoordAtom::init()
 {
   if (force->pair == NULL)
     error->all(FLERR,"Compute coord/atom requires a pair style be defined");
   if (sqrt(cutsq) > force->pair->cutforce)
     error->all(FLERR,
                "Compute coord/atom cutoff is longer than pairwise cutoff");
 
   // need an occasional full neighbor list
 
   int irequest = neighbor->request(this,instance_me);
   neighbor->requests[irequest]->pair = 0;
   neighbor->requests[irequest]->compute = 1;
   neighbor->requests[irequest]->half = 0;
   neighbor->requests[irequest]->full = 1;
   neighbor->requests[irequest]->occasional = 1;
 
   int count = 0;
   for (int i = 0; i < modify->ncompute; i++)
     if (strcmp(modify->compute[i]->style,"coord/atom") == 0) count++;
   if (count > 1 && comm->me == 0)
     error->warning(FLERR,"More than one compute coord/atom");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeCoordAtom::init_list(int id, NeighList *ptr)
 {
   list = ptr;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeCoordAtom::compute_peratom()
 {
   int i,j,m,ii,jj,inum,jnum,jtype,n;
   double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
   int *ilist,*jlist,*numneigh,**firstneigh;
   double *count;
 
   invoked_peratom = update->ntimestep;
 
   // grow coordination array if necessary
 
   if (atom->nmax > nmax) {
     if (ncol == 1) {
       memory->destroy(cvec);
       nmax = atom->nmax;
       memory->create(cvec,nmax,"coord/atom:cvec");
       vector_atom = cvec;
     } else {
       memory->destroy(carray);
       nmax = atom->nmax;
       memory->create(carray,nmax,ncol,"coord/atom:carray");
       array_atom = carray;
     }
   }
 
   // invoke full neighbor list (will copy or build if necessary)
 
   neighbor->build_one(list);
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
   // compute coordination number(s) for each atom in group
   // use full neighbor list to count atoms less than cutoff
 
   double **x = atom->x;
   int *type = atom->type;
   int *mask = atom->mask;
 
   if (ncol == 1) {
     for (ii = 0; ii < inum; ii++) {
       i = ilist[ii];
       if (mask[i] & groupbit) {
         xtmp = x[i][0];
         ytmp = x[i][1];
         ztmp = x[i][2];
         jlist = firstneigh[i];
         jnum = numneigh[i];
 
         n = 0;
         for (jj = 0; jj < jnum; jj++) {
           j = jlist[jj];
           j &= NEIGHMASK;
 
           jtype = type[j];
           delx = xtmp - x[j][0];
           dely = ytmp - x[j][1];
           delz = ztmp - x[j][2];
           rsq = delx*delx + dely*dely + delz*delz;
           if (rsq < cutsq && jtype >= typelo[0] && jtype <= typehi[0]) n++;
         }
 
         cvec[i] = n;
       } else cvec[i] = 0.0;
     }
 
   } else {
     for (ii = 0; ii < inum; ii++) {
       i = ilist[ii];
       count = carray[i];
       for (m = 0; m < ncol; m++) count[m] = 0.0;
 
       if (mask[i] & groupbit) {
         xtmp = x[i][0];
         ytmp = x[i][1];
         ztmp = x[i][2];
         jlist = firstneigh[i];
         jnum = numneigh[i];
 
 
         for (jj = 0; jj < jnum; jj++) {
           j = jlist[jj];
           j &= NEIGHMASK;
 
           jtype = type[j];
           delx = xtmp - x[j][0];
           dely = ytmp - x[j][1];
           delz = ztmp - x[j][2];
           rsq = delx*delx + dely*dely + delz*delz;
           if (rsq < cutsq) {
             for (m = 0; m < ncol; m++)
               if (jtype >= typelo[m] && jtype <= typehi[m])
                 count[m] += 1.0;
           }
         }
       }
     }
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based array
 ------------------------------------------------------------------------- */
 
 double ComputeCoordAtom::memory_usage()
 {
   double bytes = ncol*nmax * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_dihedral.cpp b/src/compute_dihedral.cpp
index c6cb97c0d..bbd7fe203 100644
--- a/src/compute_dihedral.cpp
+++ b/src/compute_dihedral.cpp
@@ -1,82 +1,83 @@
 /* ----------------------------------------------------------------------
    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 <string.h>
 #include "compute_dihedral.h"
 #include "update.h"
 #include "force.h"
 #include "dihedral_hybrid.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeDihedral::ComputeDihedral(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  emine(NULL)
 {
   if (narg != 3) error->all(FLERR,"Illegal compute dihedral command");
 
   vector_flag = 1;
   extvector = 1;
   peflag = 1;
   timeflag = 1;
 
   // check if dihedral style hybrid exists
 
   dihedral = (DihedralHybrid *) force->dihedral_match("hybrid");
   if (!dihedral)
     error->all(FLERR,
                "Dihedral style for compute dihedral command is not hybrid");
   size_vector = nsub = dihedral->nstyles;
   
   emine = new double[nsub];
   vector = new double[nsub];
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeDihedral::~ComputeDihedral()
 {
   delete [] emine;
   delete [] vector;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeDihedral::init()
 {
   // recheck dihedral style in case it has been changed
 
   dihedral = (DihedralHybrid *) force->dihedral_match("hybrid");
   if (!dihedral)
     error->all(FLERR,
                "Dihedral style for compute dihedral command is not hybrid");
   if (dihedral->nstyles != nsub) 
     error->all(FLERR,"Dihedral style for compute dihedral command has changed");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeDihedral::compute_vector()
 {
   invoked_vector = update->ntimestep;
   if (update->eflag_global != invoked_vector)
     error->all(FLERR,"Energy was not tallied on needed timestep");
 
   for (int i = 0; i < nsub; i++)
     emine[i] = dihedral->styles[i]->energy;
 
   MPI_Allreduce(emine,vector,nsub,MPI_DOUBLE,MPI_SUM,world);
 }
diff --git a/src/compute_dihedral_local.cpp b/src/compute_dihedral_local.cpp
index 66523d00a..f50f49fa1 100644
--- a/src/compute_dihedral_local.cpp
+++ b/src/compute_dihedral_local.cpp
@@ -1,257 +1,256 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
 #include <string.h>
 #include "compute_dihedral_local.h"
 #include "atom.h"
 #include "atom_vec.h"
 #include "molecule.h"
 #include "update.h"
 #include "domain.h"
 #include "force.h"
 #include "dihedral.h"
 #include "math_const.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 using namespace MathConst;
 
 #define DELTA 10000
 #define SMALL 0.001
 
 /* ---------------------------------------------------------------------- */
 
 ComputeDihedralLocal::ComputeDihedralLocal(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  vector(NULL), array(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute dihedral/local command");
 
   if (atom->avec->dihedrals_allow == 0)
     error->all(FLERR,
                "Compute dihedral/local used when dihedrals are not allowed");
 
   local_flag = 1;
   nvalues = narg - 3;
   if (nvalues == 1) size_local_cols = 0;
   else size_local_cols = nvalues;
 
   pflag = -1;
   nvalues = 0;
 
   for (int iarg = 3; iarg < narg; iarg++) {
     if (strcmp(arg[iarg],"phi") == 0) pflag = nvalues++;
     else error->all(FLERR,"Invalid keyword in compute dihedral/local command");
   }
 
   nmax = 0;
-  vector = NULL;
-  array = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeDihedralLocal::~ComputeDihedralLocal()
 {
   memory->destroy(vector);
   memory->destroy(array);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeDihedralLocal::init()
 {
   if (force->dihedral == NULL)
     error->all(FLERR,"No dihedral style is defined for compute dihedral/local");
 
   // do initial memory allocation so that memory_usage() is correct
 
   ncount = compute_dihedrals(0);
   if (ncount > nmax) reallocate(ncount);
   size_local_rows = ncount;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeDihedralLocal::compute_local()
 {
   invoked_local = update->ntimestep;
 
   // count local entries and compute dihedral info
 
   ncount = compute_dihedrals(0);
   if (ncount > nmax) reallocate(ncount);
   size_local_rows = ncount;
   ncount = compute_dihedrals(1);
 }
 
 /* ----------------------------------------------------------------------
    count dihedrals on this proc
    only count if 2nd atom is the one storing the dihedral
    all atoms in interaction must be in group
    all atoms in interaction must be known to proc
    if flag is set, compute requested info about dihedral
 ------------------------------------------------------------------------- */
 
 int ComputeDihedralLocal::compute_dihedrals(int flag)
 {
   int i,m,n,nd,atom1,atom2,atom3,atom4,imol,iatom;
   tagint tagprev;
   double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm;
   double ax,ay,az,bx,by,bz,rasq,rbsq,rgsq,rg,ra2inv,rb2inv,rabinv;
   double s,c;
   double *pbuf;
 
   double **x = atom->x;
   tagint *tag = atom->tag;
   int *num_dihedral = atom->num_dihedral;
   tagint **dihedral_atom1 = atom->dihedral_atom1;
   tagint **dihedral_atom2 = atom->dihedral_atom2;
   tagint **dihedral_atom3 = atom->dihedral_atom3;
   tagint **dihedral_atom4 = atom->dihedral_atom4;
   int *mask = atom->mask;
 
   int *molindex = atom->molindex;
   int *molatom = atom->molatom;
   Molecule **onemols = atom->avec->onemols;
 
   int nlocal = atom->nlocal;
   int molecular = atom->molecular;
 
   if (flag) {
     if (nvalues == 1) {
       if (pflag >= 0) pbuf = vector;
     } else {
       if (pflag >= 0 && array) pbuf = &array[0][pflag];
       else pbuf = NULL;
     }
   }
 
   m = n = 0;
   for (atom2 = 0; atom2 < nlocal; atom2++) {
     if (!(mask[atom2] & groupbit)) continue;
 
     if (molecular == 1) nd = num_dihedral[atom2];
     else {
       if (molindex[atom2] < 0) continue;
       imol = molindex[atom2];
       iatom = molatom[atom2];
       nd = onemols[imol]->num_dihedral[iatom];
     }
 
     for (i = 0; i < nd; i++) {
       if (molecular == 1) {
         if (tag[atom2] != dihedral_atom2[atom2][i]) continue;
         atom1 = atom->map(dihedral_atom1[atom2][i]);
         atom3 = atom->map(dihedral_atom3[atom2][i]);
         atom4 = atom->map(dihedral_atom4[atom2][i]);
       } else {
         if (tag[atom2] != onemols[imol]->dihedral_atom2[atom2][i]) continue;
         tagprev = tag[atom2] - iatom - 1;
         atom1 = atom->map(onemols[imol]->dihedral_atom1[atom2][i]+tagprev);
         atom3 = atom->map(onemols[imol]->dihedral_atom3[atom2][i]+tagprev);
         atom4 = atom->map(onemols[imol]->dihedral_atom4[atom2][i]+tagprev);
       }
 
       if (atom1 < 0 || !(mask[atom1] & groupbit)) continue;
       if (atom3 < 0 || !(mask[atom3] & groupbit)) continue;
       if (atom4 < 0 || !(mask[atom4] & groupbit)) continue;
 
       if (flag) {
 
         // phi calculation from dihedral style harmonic
 
         if (pflag >= 0) {
           vb1x = x[atom1][0] - x[atom2][0];
           vb1y = x[atom1][1] - x[atom2][1];
           vb1z = x[atom1][2] - x[atom2][2];
           domain->minimum_image(vb1x,vb1y,vb1z);
 
           vb2x = x[atom3][0] - x[atom2][0];
           vb2y = x[atom3][1] - x[atom2][1];
           vb2z = x[atom3][2] - x[atom2][2];
           domain->minimum_image(vb2x,vb2y,vb2z);
 
           vb2xm = -vb2x;
           vb2ym = -vb2y;
           vb2zm = -vb2z;
           domain->minimum_image(vb2xm,vb2ym,vb2zm);
 
           vb3x = x[atom4][0] - x[atom3][0];
           vb3y = x[atom4][1] - x[atom3][1];
           vb3z = x[atom4][2] - x[atom3][2];
           domain->minimum_image(vb3x,vb3y,vb3z);
 
           ax = vb1y*vb2zm - vb1z*vb2ym;
           ay = vb1z*vb2xm - vb1x*vb2zm;
           az = vb1x*vb2ym - vb1y*vb2xm;
           bx = vb3y*vb2zm - vb3z*vb2ym;
           by = vb3z*vb2xm - vb3x*vb2zm;
           bz = vb3x*vb2ym - vb3y*vb2xm;
 
           rasq = ax*ax + ay*ay + az*az;
           rbsq = bx*bx + by*by + bz*bz;
           rgsq = vb2xm*vb2xm + vb2ym*vb2ym + vb2zm*vb2zm;
           rg = sqrt(rgsq);
 
           ra2inv = rb2inv = 0.0;
           if (rasq > 0) ra2inv = 1.0/rasq;
           if (rbsq > 0) rb2inv = 1.0/rbsq;
           rabinv = sqrt(ra2inv*rb2inv);
 
           c = (ax*bx + ay*by + az*bz)*rabinv;
           s = rg*rabinv*(ax*vb3x + ay*vb3y + az*vb3z);
 
           if (c > 1.0) c = 1.0;
           if (c < -1.0) c = -1.0;
           pbuf[n] = 180.0*atan2(s,c)/MY_PI;
         }
         n += nvalues;
       }
 
       m++;
     }
   }
 
   return m;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeDihedralLocal::reallocate(int n)
 {
   // grow vector or array and indices array
 
   while (nmax < n) nmax += DELTA;
 
   if (nvalues == 1) {
     memory->destroy(vector);
     memory->create(vector,nmax,"bond/local:vector");
     vector_local = vector;
   } else {
     memory->destroy(array);
     memory->create(array,nmax,nvalues,"bond/local:array");
     array_local = array;
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeDihedralLocal::memory_usage()
 {
   double bytes = nmax*nvalues * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_dipole_chunk.cpp b/src/compute_dipole_chunk.cpp
index cb618055f..4bdf23e27 100644
--- a/src/compute_dipole_chunk.cpp
+++ b/src/compute_dipole_chunk.cpp
@@ -1,296 +1,294 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include "string.h"
 #include "compute_dipole_chunk.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "compute_chunk_atom.h"
 #include "domain.h"
 #include "memory.h"
 #include "error.h"
 #include "math_special.h"
 
 using namespace LAMMPS_NS;
 using namespace MathSpecial;
 
 enum { MASSCENTER, GEOMCENTER };
 
 /* ---------------------------------------------------------------------- */
 
 ComputeDipoleChunk::ComputeDipoleChunk(LAMMPS *lmp, int narg, char **arg) : 
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  idchunk(NULL), massproc(NULL), masstotal(NULL), chrgproc(NULL), chrgtotal(NULL), com(NULL),
+  comall(NULL), dipole(NULL), dipoleall(NULL)
 {
   if ((narg != 4) && (narg != 5)) error->all(FLERR,"Illegal compute dipole/chunk command");
 
   array_flag = 1;
   size_array_cols = 4;
   size_array_rows = 0;
   size_array_rows_variable = 1;
   extarray = 0;
 
   // ID of compute chunk/atom
 
   int n = strlen(arg[3]) + 1;
   idchunk = new char[n];
   strcpy(idchunk,arg[3]);
 
   usecenter = MASSCENTER;
 
   if (narg == 5) {
     if (strncmp(arg[4],"geom",4) == 0) usecenter = GEOMCENTER;
     else if (strcmp(arg[4],"mass") == 0) usecenter = MASSCENTER;
     else error->all(FLERR,"Illegal compute dipole/chunk command");
   }
   
   init();
 
   // chunk-based data
 
   nchunk = 1;
   maxchunk = 0;
-  massproc = masstotal = NULL;
-  chrgproc = chrgtotal = NULL;
-  com = comall = NULL;
-  dipole = dipoleall = NULL;
   allocate();
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeDipoleChunk::~ComputeDipoleChunk()
 {
   delete [] idchunk;
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(chrgproc);
   memory->destroy(chrgtotal);
   memory->destroy(com);
   memory->destroy(comall);
   memory->destroy(dipole);
   memory->destroy(dipoleall);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeDipoleChunk::init()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute < 0)
     error->all(FLERR,"Chunk/atom compute does not exist for "
                "compute dipole/chunk");
   cchunk = (ComputeChunkAtom *) modify->compute[icompute];
   if (strcmp(cchunk->style,"chunk/atom") != 0)
     error->all(FLERR,"Compute dipole/chunk does not use chunk/atom compute");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeDipoleChunk::compute_array()
 {
   int i,index;
   double massone;
   double unwrap[3];
 
   invoked_array = update->ntimestep;
 
   // compute chunk/atom assigns atoms to chunk IDs
   // extract ichunk index vector from compute
   // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
 
   nchunk = cchunk->setup_chunks();
   cchunk->compute_ichunk();
   int *ichunk = cchunk->ichunk;
 
   if (nchunk > maxchunk) allocate();
   size_array_rows = nchunk;
 
   // zero local per-chunk values
 
   for (int i = 0; i < nchunk; i++) {
     massproc[i] = chrgproc[i] = 0.0;
     com[i][0] = com[i][1] = com[i][2] = 0.0;
     dipole[i][0] = dipole[i][1] = dipole[i][2] = dipole[i][3] = 0.0;
   }
 
   // compute COM for each chunk
 
   double **x = atom->x;
   int *mask = atom->mask;
   int *type = atom->type;
   imageint *image = atom->image;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   double *q = atom->q;
   double **mu = atom->mu;
 
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       if (usecenter == MASSCENTER) {
         if (rmass) massone = rmass[i];
         else massone = mass[type[i]];
       } else massone = 1.0;     // usecenter == GEOMCENTER
 
       domain->unmap(x[i],image[i],unwrap);
       massproc[index] += massone;
       if (atom->q_flag) chrgproc[index] += atom->q[i];
       com[index][0] += unwrap[0] * massone;
       com[index][1] += unwrap[1] * massone;
       com[index][2] += unwrap[2] * massone;
     }
 
   MPI_Allreduce(massproc,masstotal,nchunk,MPI_DOUBLE,MPI_SUM,world);
   MPI_Allreduce(chrgproc,chrgtotal,nchunk,MPI_DOUBLE,MPI_SUM,world);
   MPI_Allreduce(&com[0][0],&comall[0][0],3*nchunk,MPI_DOUBLE,MPI_SUM,world);
 
   for (int i = 0; i < nchunk; i++) {
     if (masstotal[i] > 0.0) {
       comall[i][0] /= masstotal[i];
       comall[i][1] /= masstotal[i];
       comall[i][2] /= masstotal[i];
     }
   }
 
   // compute dipole for each chunk
 
   for (i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       domain->unmap(x[i],image[i],unwrap);
       if (atom->q_flag) {
         dipole[index][0] += q[i]*unwrap[0];
         dipole[index][1] += q[i]*unwrap[1];
         dipole[index][2] += q[i]*unwrap[2];
       }
       if (atom->mu_flag) {
         dipole[index][0] += mu[i][0];
         dipole[index][1] += mu[i][1];
         dipole[index][2] += mu[i][2];
       }
     }
   }
 
   MPI_Allreduce(&dipole[0][0],&dipoleall[0][0],4*nchunk,
                 MPI_DOUBLE,MPI_SUM,world);
 
   for (i = 0; i < nchunk; i++) {
     // correct for position dependence with charged chunks
     dipoleall[i][0] -= chrgtotal[i]*comall[i][0];
     dipoleall[i][1] -= chrgtotal[i]*comall[i][1];
     dipoleall[i][2] -= chrgtotal[i]*comall[i][2];
     // compute total dipole moment
     dipoleall[i][3] = sqrt(square(dipoleall[i][0])
                            + square(dipoleall[i][1])
                            + square(dipoleall[i][2]));
   }
 }
 
 /* ----------------------------------------------------------------------
    lock methods: called by fix ave/time
    these methods insure vector/array size is locked for Nfreq epoch
      by passing lock info along to compute chunk/atom
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    increment lock counter
 ------------------------------------------------------------------------- */
 
 void ComputeDipoleChunk::lock_enable()
 {
   cchunk->lockcount++;
 }
 
 /* ----------------------------------------------------------------------
    decrement lock counter in compute chunk/atom, it if still exists
 ------------------------------------------------------------------------- */
 
 void ComputeDipoleChunk::lock_disable()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute >= 0) {
     cchunk = (ComputeChunkAtom *) modify->compute[icompute];
     cchunk->lockcount--;
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate and return # of chunks = length of vector/array
 ------------------------------------------------------------------------- */
 
 int ComputeDipoleChunk::lock_length()
 {
   nchunk = cchunk->setup_chunks();
   return nchunk;
 }
 
 /* ----------------------------------------------------------------------
    set the lock from startstep to stopstep
 ------------------------------------------------------------------------- */
 
 void ComputeDipoleChunk::lock(Fix *fixptr, bigint startstep, bigint stopstep)
 {
   cchunk->lock(fixptr,startstep,stopstep);
 }
 
 /* ----------------------------------------------------------------------
    unset the lock
 ------------------------------------------------------------------------- */
 
 void ComputeDipoleChunk::unlock(Fix *fixptr)
 {
   cchunk->unlock(fixptr);
 }
 
 /* ----------------------------------------------------------------------
    free and reallocate per-chunk arrays
 ------------------------------------------------------------------------- */
 
 void ComputeDipoleChunk::allocate()
 {
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(chrgproc);
   memory->destroy(chrgtotal);
   memory->destroy(com);
   memory->destroy(comall);
   memory->destroy(dipole);
   memory->destroy(dipoleall);
   maxchunk = nchunk;
   memory->create(massproc,maxchunk,"dipole/chunk:massproc");
   memory->create(masstotal,maxchunk,"dipole/chunk:masstotal");
   memory->create(chrgproc,maxchunk,"dipole/chunk:chrgproc");
   memory->create(chrgtotal,maxchunk,"dipole/chunk:chrgtotal");
   memory->create(com,maxchunk,3,"dipole/chunk:com");
   memory->create(comall,maxchunk,3,"dipole/chunk:comall");
   memory->create(dipole,maxchunk,4,"dipole/chunk:dipole");
   memory->create(dipoleall,maxchunk,4,"dipole/chunk:dipoleall");
   array = dipoleall;
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeDipoleChunk::memory_usage()
 {
   double bytes = (bigint) maxchunk * 2 * sizeof(double);
   bytes += (bigint) maxchunk * 2*3 * sizeof(double);
   bytes += (bigint) maxchunk * 2*4 * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_displace_atom.cpp b/src/compute_displace_atom.cpp
index f274c32f5..03a56b2bc 100644
--- a/src/compute_displace_atom.cpp
+++ b/src/compute_displace_atom.cpp
@@ -1,194 +1,194 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
 #include <string.h>
 #include "compute_displace_atom.h"
 #include "atom.h"
 #include "update.h"
 #include "group.h"
 #include "domain.h"
 #include "modify.h"
 #include "fix.h"
 #include "fix_store.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeDisplaceAtom::ComputeDisplaceAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  id_fix(NULL), displace(NULL)
 {
   if (narg != 3) error->all(FLERR,"Illegal compute displace/atom command");
 
   peratom_flag = 1;
   size_peratom_cols = 4;
   create_attribute = 1;
 
   // create a new fix STORE style
   // id = compute-ID + COMPUTE_STORE, fix group = compute group
 
   int n = strlen(id) + strlen("_COMPUTE_STORE") + 1;
   id_fix = new char[n];
   strcpy(id_fix,id);
   strcat(id_fix,"_COMPUTE_STORE");
 
   char **newarg = new char*[6];
   newarg[0] = id_fix;
   newarg[1] = group->names[igroup];
   newarg[2] = (char *) "STORE";
   newarg[3] = (char *) "peratom";
   newarg[4] = (char *) "1";
   newarg[5] = (char *) "3";
   modify->add_fix(6,newarg);
   fix = (FixStore *) modify->fix[modify->nfix-1];
   delete [] newarg;
 
   // calculate xu,yu,zu for fix store array
   // skip if reset from restart file
 
   if (fix->restart_reset) fix->restart_reset = 0;
   else {
     double **xoriginal = fix->astore;
 
     double **x = atom->x;
     int *mask = atom->mask;
     imageint *image = atom->image;
     int nlocal = atom->nlocal;
 
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) domain->unmap(x[i],image[i],xoriginal[i]);
       else xoriginal[i][0] = xoriginal[i][1] = xoriginal[i][2] = 0.0;
   }
 
   // per-atom displacement array
 
   nmax = 0;
-  displace = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeDisplaceAtom::~ComputeDisplaceAtom()
 {
   // check nfix in case all fixes have already been deleted
 
   if (modify->nfix) modify->delete_fix(id_fix);
 
   delete [] id_fix;
   memory->destroy(displace);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeDisplaceAtom::init()
 {
   // set fix which stores original atom coords
 
   int ifix = modify->find_fix(id_fix);
   if (ifix < 0) error->all(FLERR,"Could not find compute displace/atom fix ID");
   fix = (FixStore *) modify->fix[ifix];
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeDisplaceAtom::compute_peratom()
 {
   invoked_peratom = update->ntimestep;
 
   // grow local displacement array if necessary
 
   if (atom->nmax > nmax) {
     memory->destroy(displace);
     nmax = atom->nmax;
     memory->create(displace,nmax,4,"displace/atom:displace");
     array_atom = displace;
   }
 
   // dx,dy,dz = displacement of atom from original position
   // original unwrapped position is stored by fix
   // for triclinic, need to unwrap current atom coord via h matrix
 
   double **xoriginal = fix->astore;
 
   double **x = atom->x;
   int *mask = atom->mask;
   imageint *image = atom->image;
   int nlocal = atom->nlocal;
 
   double *h = domain->h;
   double xprd = domain->xprd;
   double yprd = domain->yprd;
   double zprd = domain->zprd;
 
   int xbox,ybox,zbox;
   double dx,dy,dz;
 
   if (domain->triclinic == 0) {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         xbox = (image[i] & IMGMASK) - IMGMAX;
         ybox = (image[i] >> IMGBITS & IMGMASK) - IMGMAX;
         zbox = (image[i] >> IMG2BITS) - IMGMAX;
         dx = x[i][0] + xbox*xprd - xoriginal[i][0];
         dy = x[i][1] + ybox*yprd - xoriginal[i][1];
         dz = x[i][2] + zbox*zprd - xoriginal[i][2];
         displace[i][0] = dx;
         displace[i][1] = dy;
         displace[i][2] = dz;
         displace[i][3] = sqrt(dx*dx + dy*dy + dz*dz);
       } else displace[i][0] = displace[i][1] =
                displace[i][2] = displace[i][3] = 0.0;
 
   } else {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         xbox = (image[i] & IMGMASK) - IMGMAX;
         ybox = (image[i] >> IMGBITS & IMGMASK) - IMGMAX;
         zbox = (image[i] >> IMG2BITS) - IMGMAX;
         dx = x[i][0] + h[0]*xbox + h[5]*ybox + h[4]*zbox - xoriginal[i][0];
         dy = x[i][1] + h[1]*ybox + h[3]*zbox - xoriginal[i][1];
         dz = x[i][2] + h[2]*zbox - xoriginal[i][2];
         displace[i][0] = dx;
         displace[i][1] = dy;
         displace[i][2] = dz;
         displace[i][3] = sqrt(dx*dx + dy*dy + dz*dz);
       } else displace[i][0] = displace[i][1] =
                displace[i][2] = displace[i][3] = 0.0;
   }
 }
 
 /* ----------------------------------------------------------------------
    initialize one atom's storage values, called when atom is created
 ------------------------------------------------------------------------- */
 
 void ComputeDisplaceAtom::set_arrays(int i)
 {
   double **xoriginal = fix->astore;
   double **x = atom->x;
   xoriginal[i][0] = x[i][0];
   xoriginal[i][1] = x[i][1];
   xoriginal[i][2] = x[i][2];
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based array
 ------------------------------------------------------------------------- */
 
 double ComputeDisplaceAtom::memory_usage()
 {
   double bytes = nmax*4 * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_erotate_sphere_atom.cpp b/src/compute_erotate_sphere_atom.cpp
index ed6946e8c..b29c18c1e 100644
--- a/src/compute_erotate_sphere_atom.cpp
+++ b/src/compute_erotate_sphere_atom.cpp
@@ -1,110 +1,110 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_erotate_sphere_atom.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "comm.h"
 #include "force.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 #define INERTIA 0.4          // moment of inertia prefactor for sphere
 
 /* ---------------------------------------------------------------------- */
 
 ComputeErotateSphereAtom::
 ComputeErotateSphereAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  erot(NULL)
 {
   if (narg != 3)
     error->all(FLERR,"Illegal compute erotate/sphere//atom command");
 
   peratom_flag = 1;
   size_peratom_cols = 0;
 
   // error check
 
   if (!atom->sphere_flag)
     error->all(FLERR,"Compute erotate/sphere/atom requires atom style sphere");
 
   nmax = 0;
-  erot = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeErotateSphereAtom::~ComputeErotateSphereAtom()
 {
   memory->destroy(erot);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeErotateSphereAtom::init()
 {
   int count = 0;
   for (int i = 0; i < modify->ncompute; i++)
     if (strcmp(modify->compute[i]->style,"erotate/sphere/atom") == 0) count++;
   if (count > 1 && comm->me == 0)
     error->warning(FLERR,"More than one compute erotate/sphere/atom");
 
   pfactor = 0.5 * force->mvv2e * INERTIA;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeErotateSphereAtom::compute_peratom()
 {
   invoked_peratom = update->ntimestep;
 
   // grow erot array if necessary
 
   if (atom->nmax > nmax) {
     memory->destroy(erot);
     nmax = atom->nmax;
     memory->create(erot,nmax,"erotate/sphere/atom:erot");
     vector_atom = erot;
   }
 
   // compute rotational kinetic energy for each atom in group
   // point particles will have erot = 0.0, due to radius = 0.0
 
   double **omega = atom->omega;
   double *radius = atom->radius;
   double *rmass = atom->rmass;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) {
       erot[i] = (omega[i][0]*omega[i][0] + omega[i][1]*omega[i][1] +
                  omega[i][2]*omega[i][2]) * radius[i]*radius[i]*rmass[i];
       erot[i] *= pfactor;
     } else erot[i] = 0.0;
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based array
 ------------------------------------------------------------------------- */
 
 double ComputeErotateSphereAtom::memory_usage()
 {
   double bytes = nmax * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_group_group.cpp b/src/compute_group_group.cpp
index 741d4a667..4b5e6ad05 100644
--- a/src/compute_group_group.cpp
+++ b/src/compute_group_group.cpp
@@ -1,401 +1,402 @@
 /* ----------------------------------------------------------------------
    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: Naveen Michaud-Agrawal (Johns Hopkins U)
      K-space terms added by Stan Moore (BYU)
 ------------------------------------------------------------------------- */
 
 #include <mpi.h>
 #include <string.h>
 #include "compute_group_group.h"
 #include "atom.h"
 #include "update.h"
 #include "force.h"
 #include "pair.h"
 #include "neighbor.h"
 #include "neigh_request.h"
 #include "neigh_list.h"
 #include "group.h"
 #include "kspace.h"
 #include "error.h"
 #include <math.h>
 #include "comm.h"
 #include "domain.h"
 #include "math_const.h"
 
 using namespace LAMMPS_NS;
 using namespace MathConst;
 
 #define SMALL 0.00001
 
 /* ---------------------------------------------------------------------- */
 
 ComputeGroupGroup::ComputeGroupGroup(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  group2(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute group/group command");
 
   scalar_flag = vector_flag = 1;
   size_vector = 3;
   extscalar = 1;
   extvector = 1;
 
   int n = strlen(arg[3]) + 1;
   group2 = new char[n];
   strcpy(group2,arg[3]);
 
   jgroup = group->find(group2);
   if (jgroup == -1)
     error->all(FLERR,"Compute group/group group ID does not exist");
   jgroupbit = group->bitmask[jgroup];
 
   pairflag = 1;
   kspaceflag = 0;
   boundaryflag = 1;
 
   int iarg = 4;
   while (iarg < narg) {
     if (strcmp(arg[iarg],"pair") == 0) {
       if (iarg+2 > narg)
         error->all(FLERR,"Illegal compute group/group command");
       if (strcmp(arg[iarg+1],"yes") == 0) pairflag = 1;
       else if (strcmp(arg[iarg+1],"no") == 0) pairflag = 0;
       else error->all(FLERR,"Illegal compute group/group command");
       iarg += 2;
     } else if (strcmp(arg[iarg],"kspace") == 0) {
       if (iarg+2 > narg)
         error->all(FLERR,"Illegal compute group/group command");
       if (strcmp(arg[iarg+1],"yes") == 0) kspaceflag = 1;
       else if (strcmp(arg[iarg+1],"no") == 0) kspaceflag = 0;
       else error->all(FLERR,"Illegal compute group/group command");
       iarg += 2;
     } else if (strcmp(arg[iarg],"boundary") == 0) {
       if (iarg+2 > narg)
         error->all(FLERR,"Illegal compute group/group command");
       if (strcmp(arg[iarg+1],"yes") == 0) boundaryflag = 1;
       else if (strcmp(arg[iarg+1],"no") == 0) boundaryflag  = 0;
       else error->all(FLERR,"Illegal compute group/group command");
       iarg += 2;
     } else error->all(FLERR,"Illegal compute group/group command");
   }
 
   vector = new double[3];
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeGroupGroup::~ComputeGroupGroup()
 {
   delete [] group2;
   delete [] vector;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeGroupGroup::init()
 {
   // if non-hybrid, then error if single_enable = 0
   // if hybrid, let hybrid determine if sub-style sets single_enable = 0
 
   if (pairflag && force->pair == NULL)
     error->all(FLERR,"No pair style defined for compute group/group");
   if (force->pair_match("hybrid",0) == NULL && force->pair->single_enable == 0)
     error->all(FLERR,"Pair style does not support compute group/group");
 
   // error if Kspace style does not compute group/group interactions
 
   if (kspaceflag && force->kspace == NULL)
     error->all(FLERR,"No Kspace style defined for compute group/group");
   if (kspaceflag && force->kspace->group_group_enable == 0)
     error->all(FLERR,"Kspace style does not support compute group/group");
 
   if (pairflag) {
     pair = force->pair;
     cutsq = force->pair->cutsq;
   } else pair = NULL;
 
   if (kspaceflag) kspace = force->kspace;
   else kspace = NULL;
 
   // compute Kspace correction terms
 
   if (kspaceflag) {
     kspace_correction();
     if (fabs(e_correction) > SMALL && comm->me == 0) {
       char str[128];
       sprintf(str,"Both groups in compute group/group have a net charge; "
               "the Kspace boundary correction to energy will be non-zero");
       error->warning(FLERR,str);
     }
   }
 
   // recheck that group 2 has not been deleted
 
   jgroup = group->find(group2);
   if (jgroup == -1)
     error->all(FLERR,"Compute group/group group ID does not exist");
   jgroupbit = group->bitmask[jgroup];
 
   // need an occasional half neighbor list
 
   if (pairflag) {
     int irequest = neighbor->request(this,instance_me);
     neighbor->requests[irequest]->pair = 0;
     neighbor->requests[irequest]->compute = 1;
     neighbor->requests[irequest]->occasional = 1;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeGroupGroup::init_list(int id, NeighList *ptr)
 {
   list = ptr;
 }
 
 /* ---------------------------------------------------------------------- */
 
 double ComputeGroupGroup::compute_scalar()
 {
   invoked_scalar = invoked_vector = update->ntimestep;
 
   scalar = 0.0;
   vector[0] = vector[1] = vector[2] = 0.0;
 
   if (pairflag) pair_contribution();
   if (kspaceflag) kspace_contribution();
 
   return scalar;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeGroupGroup::compute_vector()
 {
   invoked_scalar = invoked_vector = update->ntimestep;
 
   scalar = 0.0;
   vector[0] = vector[1] = vector[2] = 0.0;
 
   if (pairflag) pair_contribution();
   if (kspaceflag) kspace_contribution();
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeGroupGroup::pair_contribution()
 {
   int i,j,ii,jj,inum,jnum,itype,jtype;
   double xtmp,ytmp,ztmp,delx,dely,delz;
   double rsq,eng,fpair,factor_coul,factor_lj;
   int *ilist,*jlist,*numneigh,**firstneigh;
 
   double **x = atom->x;
   int *type = atom->type;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
   double *special_coul = force->special_coul;
   double *special_lj = force->special_lj;
   int newton_pair = force->newton_pair;
 
   // invoke half neighbor list (will copy or build if necessary)
 
   neighbor->build_one(list);
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
   // loop over neighbors of my atoms
   // skip if I,J are not in 2 groups
 
   double one[4];
   one[0] = one[1] = one[2] = one[3] = 0.0;
 
   for (ii = 0; ii < inum; ii++) {
     i = ilist[ii];
     // skip if atom I is not in either group
     if (!(mask[i] & groupbit || mask[i] & jgroupbit)) continue;
 
     xtmp = x[i][0];
     ytmp = x[i][1];
     ztmp = x[i][2];
     itype = type[i];
     jlist = firstneigh[i];
     jnum = numneigh[i];
 
     for (jj = 0; jj < jnum; jj++) {
       j = jlist[jj];
       factor_lj = special_lj[sbmask(j)];
       factor_coul = special_coul[sbmask(j)];
       j &= NEIGHMASK;
 
       if (!(mask[j] & groupbit || mask[j] & jgroupbit)) continue; // skip if atom J is not in either group
 
       int ij_flag = 0;
       int ji_flag = 0;
       if (mask[i] & groupbit && mask[j] & jgroupbit) ij_flag = 1;
       if (mask[j] & groupbit && mask[i] & jgroupbit) ji_flag = 1;
       if (!ij_flag && !ji_flag) continue; // skip if atoms I,J are only in the same group
 
       delx = xtmp - x[j][0];
       dely = ytmp - x[j][1];
       delz = ztmp - x[j][2];
       rsq = delx*delx + dely*dely + delz*delz;
       jtype = type[j];
 
       if (rsq < cutsq[itype][jtype]) {
         eng = pair->single(i,j,itype,jtype,rsq,factor_coul,factor_lj,fpair);
 
         // energy only computed once so tally full amount
         // force tally is jgroup acting on igroup
 
         if (newton_pair || j < nlocal) {
           one[0] += eng;
           if (ij_flag) {
             one[1] += delx*fpair;
             one[2] += dely*fpair;
             one[3] += delz*fpair;
           }
           if (ji_flag) {
             one[1] -= delx*fpair;
             one[2] -= dely*fpair;
             one[3] -= delz*fpair;
           }
 
         // energy computed twice so tally half amount
         // only tally force if I own igroup atom
 
         } else {
           one[0] += 0.5*eng;
           if (ij_flag) {
             one[1] += delx*fpair;
             one[2] += dely*fpair;
             one[3] += delz*fpair;
           }
         }
       }
     }
   }
 
   double all[4];
   MPI_Allreduce(one,all,4,MPI_DOUBLE,MPI_SUM,world);
   scalar += all[0];
   vector[0] += all[1]; vector[1] += all[2]; vector[2] += all[3];
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeGroupGroup::kspace_contribution()
 {
   double *vector_kspace = force->kspace->f2group;
 
   force->kspace->compute_group_group(groupbit,jgroupbit,0);
   scalar += 2.0*force->kspace->e2group;
   vector[0] += vector_kspace[0];
   vector[1] += vector_kspace[1];
   vector[2] += vector_kspace[2];
 
   // subtract extra A <--> A Kspace interaction so energy matches
   //   real-space style of compute group-group
   // add extra Kspace term to energy
 
   force->kspace->compute_group_group(groupbit,jgroupbit,1);
   scalar -= force->kspace->e2group;
 
   // self energy correction term
 
   scalar -= e_self;
 
   // k=0 boundary correction term
 
   if (boundaryflag) {
     double xprd = domain->xprd;
     double yprd = domain->yprd;
     double zprd = domain->zprd;
 
     // adjustment of z dimension for 2d slab Ewald
     // 3d Ewald just uses zprd since slab_volfactor = 1.0
 
     double volume = xprd*yprd*zprd*force->kspace->slab_volfactor;
     scalar -= e_correction/volume;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeGroupGroup::kspace_correction()
 {
 
   // total charge of groups A & B, needed for correction term
 
   double qsqsum_group,qsum_A,qsum_B;
   qsqsum_group = qsum_A = qsum_B = 0.0;
 
   double *q = atom->q;
   int *mask = atom->mask;
   int groupbit_A = groupbit;
   int groupbit_B = jgroupbit;
 
   for (int i = 0; i < atom->nlocal; i++) {
     if ((mask[i] & groupbit_A) && (mask[i] & groupbit_B))
       qsqsum_group += q[i]*q[i];
     if (mask[i] & groupbit_A) qsum_A += q[i];
     if (mask[i] & groupbit_B) qsum_B += q[i];
   }
 
   double tmp;
   MPI_Allreduce(&qsqsum_group,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
   qsqsum_group = tmp;
 
   MPI_Allreduce(&qsum_A,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
   qsum_A = tmp;
 
   MPI_Allreduce(&qsum_B,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
   qsum_B = tmp;
 
   double g_ewald = force->kspace->g_ewald;
 
   double scale = 1.0;
   const double qscale = force->qqrd2e * scale;
 
   // self-energy correction
 
   e_self = qscale * g_ewald*qsqsum_group/MY_PIS;
   e_correction = 2.0*qsum_A*qsum_B;
 
   // subtract extra AA terms
 
   qsum_A = qsum_B = 0.0;
 
   for (int i = 0; i < atom->nlocal; i++) {
     if (!((mask[i] & groupbit_A) && (mask[i] & groupbit_B)))
       continue;
 
     if (mask[i] & groupbit_A) qsum_A += q[i];
     if (mask[i] & groupbit_B) qsum_B += q[i];
   }
 
   MPI_Allreduce(&qsum_A,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
   qsum_A = tmp;
 
   MPI_Allreduce(&qsum_B,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
   qsum_B = tmp;
 
   // k=0 energy correction term (still need to divide by volume above)
 
   e_correction -= qsum_A*qsum_B;
   e_correction *= qscale * MY_PI2 / (g_ewald*g_ewald);
 }
diff --git a/src/compute_gyration_chunk.cpp b/src/compute_gyration_chunk.cpp
index 58fe33bc3..f7e774566 100644
--- a/src/compute_gyration_chunk.cpp
+++ b/src/compute_gyration_chunk.cpp
@@ -1,365 +1,363 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
 #include <string.h>
 #include "compute_gyration_chunk.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "compute_chunk_atom.h"
 #include "domain.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeGyrationChunk::ComputeGyrationChunk(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  idchunk(NULL), massproc(NULL), masstotal(NULL), com(NULL), comall(NULL), rg(NULL),
+  rgall(NULL), rgt(NULL), rgtall(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute gyration/chunk command");
 
   // ID of compute chunk/atom
 
   int n = strlen(arg[3]) + 1;
   idchunk = new char[n];
   strcpy(idchunk,arg[3]);
 
   init();
 
   // optional args
 
   tensor = 0;
   int iarg = 4;
   while (iarg < narg) {
     if (strcmp(arg[iarg],"tensor") == 0) {
       tensor = 1;
       iarg++;
     } else error->all(FLERR,"Illegal compute gyration/chunk command");
   }
 
   if (tensor) {
     array_flag = 1;
     size_array_cols = 6;
     size_array_rows = 0;
     size_array_rows_variable = 1;
     extarray = 0;
   } else {
     vector_flag = 1;
     size_vector = 0;
     size_vector_variable = 1;
     extvector = 0;
   }
 
   // chunk-based data
 
   nchunk = 1;
   maxchunk = 0;
-  massproc = masstotal = NULL;
-  com = comall = NULL;
-  rg = rgall = NULL;
-  rgt = rgtall = NULL;
   allocate();
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeGyrationChunk::~ComputeGyrationChunk()
 {
   delete [] idchunk;
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(com);
   memory->destroy(comall);
   memory->destroy(rg);
   memory->destroy(rgall);
   memory->destroy(rgt);
   memory->destroy(rgtall);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeGyrationChunk::init()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute < 0)
     error->all(FLERR,"Chunk/atom compute does not exist for "
                "compute gyration/chunk");
   cchunk = (ComputeChunkAtom *) modify->compute[icompute];
   if (strcmp(cchunk->style,"chunk/atom") != 0)
     error->all(FLERR,"Compute gyration/chunk does not use chunk/atom compute");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeGyrationChunk::compute_vector()
 {
   int i,index;
   double dx,dy,dz,massone;
   double unwrap[3];
 
   invoked_array = update->ntimestep;
 
   com_chunk();
   int *ichunk = cchunk->ichunk;
 
   for (i = 0; i < nchunk; i++) rg[i] = 0.0;
 
   // compute Rg for each chunk
 
   double **x = atom->x;
   int *mask = atom->mask;
   int *type = atom->type;
   imageint *image = atom->image;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int nlocal = atom->nlocal;
 
   for (i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       domain->unmap(x[i],image[i],unwrap);
       dx = unwrap[0] - comall[index][0];
       dy = unwrap[1] - comall[index][1];
       dz = unwrap[2] - comall[index][2];
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       rg[index] += (dx*dx + dy*dy + dz*dz) * massone;
     }
 
   MPI_Allreduce(rg,rgall,nchunk,MPI_DOUBLE,MPI_SUM,world);
 
   for (int i = 0; i < nchunk; i++)
     if (masstotal[i] > 0.0)
       rgall[i] = sqrt(rgall[i]/masstotal[i]);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeGyrationChunk::compute_array()
 {
   int i,j,index;
   double dx,dy,dz,massone;
   double unwrap[3];
 
   invoked_array = update->ntimestep;
 
   com_chunk();
   int *ichunk = cchunk->ichunk;
 
   for (i = 0; i < nchunk; i++)
     for (j = 0; j < 6; j++) rgt[i][j] = 0.0;
 
   double **x = atom->x;
   int *mask = atom->mask;
   int *type = atom->type;
   imageint *image = atom->image;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int nlocal = atom->nlocal;
 
   for (i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       domain->unmap(x[i],image[i],unwrap);
       dx = unwrap[0] - comall[index][0];
       dy = unwrap[1] - comall[index][1];
       dz = unwrap[2] - comall[index][2];
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       rgt[index][0] += dx*dx * massone;
       rgt[index][1] += dy*dy * massone;
       rgt[index][2] += dz*dz * massone;
       rgt[index][3] += dx*dy * massone;
       rgt[index][4] += dx*dz * massone;
       rgt[index][5] += dy*dz * massone;
     }
 
   if (nchunk)
     MPI_Allreduce(&rgt[0][0],&rgtall[0][0],nchunk*6,MPI_DOUBLE,MPI_SUM,world);
 
   for (i = 0; i < nchunk; i++) {
     if (masstotal[i] > 0.0) {
       for (j = 0; j < 6; j++)
         rgtall[i][j] = rgtall[i][j]/masstotal[i];
     }
   }
 }
 
 
 /* ----------------------------------------------------------------------
    calculate per-chunk COM, used by both scalar and tensor
 ------------------------------------------------------------------------- */
 
 void ComputeGyrationChunk::com_chunk()
 {
   int index;
   double massone;
   double unwrap[3];
 
   // 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
 
   nchunk = cchunk->setup_chunks();
   cchunk->compute_ichunk();
   int *ichunk = cchunk->ichunk;
 
   if (nchunk > maxchunk) allocate();
   if (tensor) size_array_rows = nchunk;
   else size_vector = nchunk;
 
   // zero local per-chunk values
 
   for (int i = 0; i < nchunk; i++) {
     massproc[i] = 0.0;
     com[i][0] = com[i][1] = com[i][2] = 0.0;
   }
 
   // compute COM for each chunk
 
   double **x = atom->x;
   int *mask = atom->mask;
   int *type = atom->type;
   imageint *image = atom->image;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       domain->unmap(x[i],image[i],unwrap);
       massproc[index] += massone;
       com[index][0] += unwrap[0] * massone;
       com[index][1] += unwrap[1] * massone;
       com[index][2] += unwrap[2] * massone;
     }
 
   MPI_Allreduce(massproc,masstotal,nchunk,MPI_DOUBLE,MPI_SUM,world);
   MPI_Allreduce(&com[0][0],&comall[0][0],3*nchunk,MPI_DOUBLE,MPI_SUM,world);
 
   for (int i = 0; i < nchunk; i++) {
     if (masstotal[i] > 0.0) {
       comall[i][0] /= masstotal[i];
       comall[i][1] /= masstotal[i];
       comall[i][2] /= masstotal[i];
     }
   }
 }
 
 /* ----------------------------------------------------------------------
    lock methods: called by fix ave/time
    these methods insure vector/array size is locked for Nfreq epoch
      by passing lock info along to compute chunk/atom
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    increment lock counter
 ------------------------------------------------------------------------- */
 
 void ComputeGyrationChunk::lock_enable()
 {
   cchunk->lockcount++;
 }
 
 /* ----------------------------------------------------------------------
    decrement lock counter in compute chunk/atom, it if still exists
 ------------------------------------------------------------------------- */
 
 void ComputeGyrationChunk::lock_disable()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute >= 0) {
     cchunk = (ComputeChunkAtom *) modify->compute[icompute];
     cchunk->lockcount--;
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate and return # of chunks = length of vector/array
 ------------------------------------------------------------------------- */
 
 int ComputeGyrationChunk::lock_length()
 {
   nchunk = cchunk->setup_chunks();
   return nchunk;
 }
 
 /* ----------------------------------------------------------------------
    set the lock from startstep to stopstep
 ------------------------------------------------------------------------- */
 
 void ComputeGyrationChunk::lock(Fix *fixptr, bigint startstep, bigint stopstep)
 {
   cchunk->lock(fixptr,startstep,stopstep);
 }
 
 /* ----------------------------------------------------------------------
    unset the lock
 ------------------------------------------------------------------------- */
 
 void ComputeGyrationChunk::unlock(Fix *fixptr)
 {
   cchunk->unlock(fixptr);
 }
 
 /* ----------------------------------------------------------------------
    free and reallocate per-chunk arrays
 ------------------------------------------------------------------------- */
 
 void ComputeGyrationChunk::allocate()
 {
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(com);
   memory->destroy(comall);
   memory->destroy(rg);
   memory->destroy(rgall);
   memory->destroy(rgt);
   memory->destroy(rgtall);
   maxchunk = nchunk;
   memory->create(massproc,maxchunk,"gyration/chunk:massproc");
   memory->create(masstotal,maxchunk,"gyration/chunk:masstotal");
   memory->create(com,maxchunk,3,"gyration/chunk:com");
   memory->create(comall,maxchunk,3,"gyration/chunk:comall");
   if (tensor) {
     memory->create(rgt,maxchunk,6,"gyration/chunk:rgt");
     memory->create(rgtall,maxchunk,6,"gyration/chunk:rgtall");
     array = rgtall;
   } else {
     memory->create(rg,maxchunk,"gyration/chunk:rg");
     memory->create(rgall,maxchunk,"gyration/chunk:rgall");
     vector = rgall;
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeGyrationChunk::memory_usage()
 {
   double bytes = (bigint) maxchunk * 2 * sizeof(double);
   bytes += (bigint) maxchunk * 2*3 * sizeof(double);
   if (tensor) bytes += (bigint) maxchunk * 2*6 * sizeof(double);
   else bytes += (bigint) maxchunk * 2 * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_heat_flux.cpp b/src/compute_heat_flux.cpp
index 33e7f7a44..108691aec 100644
--- a/src/compute_heat_flux.cpp
+++ b/src/compute_heat_flux.cpp
@@ -1,168 +1,169 @@
 /* ----------------------------------------------------------------------
    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: German Samolyuk (ORNL) and
                          Mario Pinto (Computational Research Lab, Pune, India)
 ------------------------------------------------------------------------- */
 
 #include <math.h>
 #include <string.h>
 #include "compute_heat_flux.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "force.h"
 #include "group.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 #define INVOKED_PERATOM 8
 
 /* ---------------------------------------------------------------------- */
 
 ComputeHeatFlux::ComputeHeatFlux(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  id_ke(NULL), id_pe(NULL), id_stress(NULL)
 {
   if (narg != 6) error->all(FLERR,"Illegal compute heat/flux command");
 
   vector_flag = 1;
   size_vector = 6;
   extvector = 1;
 
   // store ke/atom, pe/atom, stress/atom IDs used by heat flux computation
   // insure they are valid for these computations
 
   int n = strlen(arg[3]) + 1;
   id_ke = new char[n];
   strcpy(id_ke,arg[3]);
 
   n = strlen(arg[4]) + 1;
   id_pe = new char[n];
   strcpy(id_pe,arg[4]);
 
   n = strlen(arg[5]) + 1;
   id_stress = new char[n];
   strcpy(id_stress,arg[5]);
 
   int ike = modify->find_compute(id_ke);
   int ipe = modify->find_compute(id_pe);
   int istress = modify->find_compute(id_stress);
   if (ike < 0 || ipe < 0 || istress < 0)
     error->all(FLERR,"Could not find compute heat/flux compute ID");
   if (strcmp(modify->compute[ike]->style,"ke/atom") != 0)
     error->all(FLERR,"Compute heat/flux compute ID does not compute ke/atom");
   if (modify->compute[ipe]->peatomflag == 0)
     error->all(FLERR,"Compute heat/flux compute ID does not compute pe/atom");
   if (modify->compute[istress]->pressatomflag == 0)
     error->all(FLERR,
                "Compute heat/flux compute ID does not compute stress/atom");
 
   vector = new double[6];
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeHeatFlux::~ComputeHeatFlux()
 {
   delete [] id_ke;
   delete [] id_pe;
   delete [] id_stress;
   delete [] vector;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeHeatFlux::init()
 {
   // error checks
 
   int ike = modify->find_compute(id_ke);
   int ipe = modify->find_compute(id_pe);
   int istress = modify->find_compute(id_stress);
   if (ike < 0 || ipe < 0 || istress < 0)
     error->all(FLERR,"Could not find compute heat/flux compute ID");
 
   c_ke = modify->compute[ike];
   c_pe = modify->compute[ipe];
   c_stress = modify->compute[istress];
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeHeatFlux::compute_vector()
 {
   invoked_vector = update->ntimestep;
 
   // invoke 3 computes if they haven't been already
 
   if (!(c_ke->invoked_flag & INVOKED_PERATOM)) {
     c_ke->compute_peratom();
     c_ke->invoked_flag |= INVOKED_PERATOM;
   }
   if (!(c_pe->invoked_flag & INVOKED_PERATOM)) {
     c_pe->compute_peratom();
     c_pe->invoked_flag |= INVOKED_PERATOM;
   }
   if (!(c_stress->invoked_flag & INVOKED_PERATOM)) {
     c_stress->compute_peratom();
     c_stress->invoked_flag |= INVOKED_PERATOM;
   }
 
   // heat flux vector = jc[3] + jv[3]
   // jc[3] = convective portion of heat flux = sum_i (ke_i + pe_i) v_i[3]
   // jv[3] = virial portion of heat flux = sum_i (stress_tensor_i . v_i[3])
   // normalization by volume is not included
 
   double *ke = c_ke->vector_atom;
   double *pe = c_pe->vector_atom;
   double **stress = c_stress->array_atom;
 
   double **v = atom->v;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double jc[3] = {0.0,0.0,0.0};
   double jv[3] = {0.0,0.0,0.0};
   double eng;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) {
       eng = pe[i] + ke[i];
       jc[0] += eng*v[i][0];
       jc[1] += eng*v[i][1];
       jc[2] += eng*v[i][2];
       jv[0] -= stress[i][0]*v[i][0] + stress[i][3]*v[i][1] +
         stress[i][4]*v[i][2];
       jv[1] -= stress[i][3]*v[i][0] + stress[i][1]*v[i][1] +
         stress[i][5]*v[i][2];
       jv[2] -= stress[i][4]*v[i][0] + stress[i][5]*v[i][1] +
         stress[i][2]*v[i][2];
     }
   }
 
   // convert jv from stress*volume to energy units via nktv2p factor
 
   double nktv2p = force->nktv2p;
   jv[0] /= nktv2p;
   jv[1] /= nktv2p;
   jv[2] /= nktv2p;
 
   // sum across all procs
   // 1st 3 terms are total heat flux
   // 2nd 3 terms are just conductive portion
 
   double data[6] = {jc[0]+jv[0],jc[1]+jv[1],jc[2]+jv[2],jc[0],jc[1],jc[2]};
   MPI_Allreduce(data,vector,6,MPI_DOUBLE,MPI_SUM,world);
 }
diff --git a/src/compute_hexorder_atom.cpp b/src/compute_hexorder_atom.cpp
index cf9bd6d09..93b84080b 100644
--- a/src/compute_hexorder_atom.cpp
+++ b/src/compute_hexorder_atom.cpp
@@ -1,346 +1,344 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    Contributing author:  Aidan Thompson (SNL)
 ------------------------------------------------------------------------- */
 
 #include <complex>
 #include <string.h>
 #include <stdlib.h>
 #include "compute_hexorder_atom.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "neighbor.h"
 #include "neigh_list.h"
 #include "neigh_request.h"
 #include "force.h"
 #include "pair.h"
 #include "comm.h"
 #include "memory.h"
 #include "error.h"
 #include "math_const.h"
 
 #ifdef DBL_EPSILON
   #define MY_EPSILON (10.0*DBL_EPSILON)
 #else
   #define MY_EPSILON (10.0*2.220446049250313e-16)
 #endif
 
 using namespace LAMMPS_NS;
 using namespace MathConst;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeHexOrderAtom::ComputeHexOrderAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  distsq(NULL), nearest(NULL), qnarray(NULL)
 {
   if (narg < 3 ) error->all(FLERR,"Illegal compute hexorder/atom command");
 
   ndegree = 6;
   nnn = 6;
   cutsq = 0.0;
 
   // process optional args
 
   int iarg = 3;
   while (iarg < narg) {
     if (strcmp(arg[iarg],"degree") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute hexorder/atom command");
       ndegree = force->numeric(FLERR,arg[iarg+1]);
       if (ndegree < 0)
         error->all(FLERR,"Illegal compute hexorder/atom command");
       iarg += 2;
     } else if (strcmp(arg[iarg],"nnn") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute hexorder/atom command");
       if (strcmp(arg[iarg+1],"NULL") == 0) 
 	nnn = 0;
       else {
 	nnn = force->numeric(FLERR,arg[iarg+1]);
 	if (nnn < 0)
 	  error->all(FLERR,"Illegal compute hexorder/atom command");
       }
       iarg += 2;
     } else if (strcmp(arg[iarg],"cutoff") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute hexorder/atom command");
       double cutoff = force->numeric(FLERR,arg[iarg+1]);
       if (cutoff <= 0.0)
         error->all(FLERR,"Illegal compute hexorder/atom command");
       cutsq = cutoff*cutoff;
       iarg += 2;
     } else error->all(FLERR,"Illegal compute hexorder/atom command");
   }
 
   ncol = 2;
   peratom_flag = 1;
   size_peratom_cols = ncol;
 
   nmax = 0;
-  qnarray = NULL;
   maxneigh = 0;
-  distsq = NULL;
-  nearest = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeHexOrderAtom::~ComputeHexOrderAtom()
 {
   memory->destroy(qnarray);
   memory->destroy(distsq);
   memory->destroy(nearest);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeHexOrderAtom::init()
 {
   if (force->pair == NULL)
     error->all(FLERR,"Compute hexorder/atom requires a pair style be defined");
   if (cutsq == 0.0) cutsq = force->pair->cutforce * force->pair->cutforce;
   else if (sqrt(cutsq) > force->pair->cutforce)
     error->all(FLERR,
                "Compute hexorder/atom cutoff is longer than pairwise cutoff");
 
   // need an occasional full neighbor list
 
   int irequest = neighbor->request(this,instance_me);
   neighbor->requests[irequest]->pair = 0;
   neighbor->requests[irequest]->compute = 1;
   neighbor->requests[irequest]->half = 0;
   neighbor->requests[irequest]->full = 1;
   neighbor->requests[irequest]->occasional = 1;
 
   int count = 0;
   for (int i = 0; i < modify->ncompute; i++)
     if (strcmp(modify->compute[i]->style,"hexorder/atom") == 0) count++;
   if (count > 1 && comm->me == 0)
     error->warning(FLERR,"More than one compute hexorder/atom");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeHexOrderAtom::init_list(int id, NeighList *ptr)
 {
   list = ptr;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeHexOrderAtom::compute_peratom()
 {
   int i,j,ii,jj,inum,jnum;
   double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
   int *ilist,*jlist,*numneigh,**firstneigh;
 
   invoked_peratom = update->ntimestep;
 
   // grow order parameter array if necessary
 
   if (atom->nmax > nmax) {
     memory->destroy(qnarray);
     nmax = atom->nmax;
     memory->create(qnarray,nmax,ncol,"hexorder/atom:qnarray");
     array_atom = qnarray;
   }
 
   // invoke full neighbor list (will copy or build if necessary)
 
   neighbor->build_one(list);
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
   // compute order parameter for each atom in group
   // use full neighbor list to count atoms less than cutoff
 
   double **x = atom->x;
   int *mask = atom->mask;
 
   for (ii = 0; ii < inum; ii++) {
     i = ilist[ii];
     double* qn = qnarray[i];
     if (mask[i] & groupbit) {
       xtmp = x[i][0];
       ytmp = x[i][1];
       ztmp = x[i][2];
       jlist = firstneigh[i];
       jnum = numneigh[i];
       
       // insure distsq and nearest arrays are long enough
 
       if (jnum > maxneigh) {
         memory->destroy(distsq);
         memory->destroy(nearest);
         maxneigh = jnum;
         memory->create(distsq,maxneigh,"hexorder/atom:distsq");
         memory->create(nearest,maxneigh,"hexorder/atom:nearest");
       }
 
       // loop over list of all neighbors within force cutoff
       // distsq[] = distance sq to each
       // nearest[] = atom indices of neighbors
 
       int ncount = 0;
       for (jj = 0; jj < jnum; jj++) {
         j = jlist[jj];
         j &= NEIGHMASK;
 
         delx = xtmp - x[j][0];
         dely = ytmp - x[j][1];
         delz = ztmp - x[j][2];
         rsq = delx*delx + dely*dely + delz*delz;
         if (rsq < cutsq) {
           distsq[ncount] = rsq;
           nearest[ncount++] = j;
         }
       }
 
       // if not nnn neighbors, order parameter = 0;
 
       if (ncount < nnn) {
 	qn[0] = qn[1] = 0.0;
         continue;
       }
 
       // if nnn > 0, use only nearest nnn neighbors
 
       if (nnn > 0) {
 	select2(nnn,ncount,distsq,nearest);
 	ncount = nnn;
       }
 
       double usum = 0.0;
       double vsum = 0.0;
       
       for (jj = 0; jj < ncount; jj++) {
 	j = nearest[jj];
 	j &= NEIGHMASK;
 	
 	delx = xtmp - x[j][0];
 	dely = ytmp - x[j][1];
 	double u, v;
 	calc_qn_complex(delx, dely, u, v);
 	usum += u;
 	vsum += v;
       }
       qn[0] = usum/nnn;
       qn[1] = vsum/nnn;
     }
   }
 }
 
 // calculate order parameter using std::complex::pow function
 
 inline void ComputeHexOrderAtom::calc_qn_complex(double delx, double dely, double &u, double &v) {
   double rinv = 1.0/sqrt(delx*delx+dely*dely);
   double x = delx*rinv;
   double y = dely*rinv;
   std::complex<double> z(x, y);
   std::complex<double> zn = pow(z, nnn);
   u = real(zn);
   v = imag(zn);
 }
 
 // calculate order parameter using trig functions
 // this is usually slower, but can be used if <complex> not available
 
 inline void ComputeHexOrderAtom::calc_qn_trig(double delx, double dely, double &u, double &v) {
   double ntheta;
   if(fabs(delx) <= MY_EPSILON) {
     if(dely > 0.0) ntheta = nnn * MY_PI / 2.0;
     else ntheta = nnn * 3.0 * MY_PI / 2.0;
   } else ntheta = nnn * atan(dely / delx);
   u = cos(ntheta);
   v = sin(ntheta);
 }
 
 /* ----------------------------------------------------------------------
    select2 routine from Numerical Recipes (slightly modified)
    find k smallest values in array of length n
    sort auxiliary array at same time
 ------------------------------------------------------------------------- */
 
 #define SWAP(a,b)   tmp = a; a = b; b = tmp;
 #define ISWAP(a,b) itmp = a; a = b; b = itmp;
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeHexOrderAtom::select2(int k, int n, double *arr, int *iarr)
 {
   int i,ir,j,l,mid,ia,itmp;
   double a,tmp;
 
   arr--;
   iarr--;
   l = 1;
   ir = n;
   for (;;) {
     if (ir <= l+1) {
       if (ir == l+1 && arr[ir] < arr[l]) {
         SWAP(arr[l],arr[ir])
         ISWAP(iarr[l],iarr[ir])
       }
       return;
     } else {
       mid=(l+ir) >> 1;
       SWAP(arr[mid],arr[l+1])
       ISWAP(iarr[mid],iarr[l+1])
       if (arr[l] > arr[ir]) {
         SWAP(arr[l],arr[ir])
         ISWAP(iarr[l],iarr[ir])
       }
       if (arr[l+1] > arr[ir]) {
         SWAP(arr[l+1],arr[ir])
         ISWAP(iarr[l+1],iarr[ir])
       }
       if (arr[l] > arr[l+1]) {
         SWAP(arr[l],arr[l+1])
         ISWAP(iarr[l],iarr[l+1])
       }
       i = l+1;
       j = ir;
       a = arr[l+1];
       ia = iarr[l+1];
       for (;;) {
         do i++; while (arr[i] < a);
         do j--; while (arr[j] > a);
         if (j < i) break;
         SWAP(arr[i],arr[j])
         ISWAP(iarr[i],iarr[j])
       }
       arr[l+1] = arr[j];
       arr[j] = a;
       iarr[l+1] = iarr[j];
       iarr[j] = ia;
       if (j >= k) ir = j-1;
       if (j <= k) l = i;
     }
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based array
 ------------------------------------------------------------------------- */
 
 double ComputeHexOrderAtom::memory_usage()
 {
   double bytes = ncol*nmax * sizeof(double);
   bytes += maxneigh * sizeof(double); 
   bytes += maxneigh * sizeof(int); 
 
   return bytes;
 }
diff --git a/src/compute_improper.cpp b/src/compute_improper.cpp
index 961ddb2c1..32c5811af 100644
--- a/src/compute_improper.cpp
+++ b/src/compute_improper.cpp
@@ -1,82 +1,83 @@
 /* ----------------------------------------------------------------------
    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 <string.h>
 #include "compute_improper.h"
 #include "update.h"
 #include "force.h"
 #include "improper_hybrid.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeImproper::ComputeImproper(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  emine(NULL)
 {
   if (narg != 3) error->all(FLERR,"Illegal compute improper command");
 
   vector_flag = 1;
   extvector = 1;
   peflag = 1;
   timeflag = 1;
 
   // check if improper style hybrid exists
 
   improper = (ImproperHybrid *) force->improper_match("hybrid");
   if (!improper)
     error->all(FLERR,
                "Improper style for compute improper command is not hybrid");
   size_vector = nsub = improper->nstyles;
   
   emine = new double[nsub];
   vector = new double[nsub];
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeImproper::~ComputeImproper()
 {
   delete [] emine;
   delete [] vector;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeImproper::init()
 {
   // recheck improper style in case it has been changed
 
   improper = (ImproperHybrid *) force->improper_match("hybrid");
   if (!improper)
     error->all(FLERR,
                "Improper style for compute improper command is not hybrid");
   if (improper->nstyles != nsub) 
     error->all(FLERR,"Improper style for compute improper command has changed");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeImproper::compute_vector()
 {
   invoked_vector = update->ntimestep;
   if (update->eflag_global != invoked_vector)
     error->all(FLERR,"Energy was not tallied on needed timestep");
 
   for (int i = 0; i < nsub; i++)
     emine[i] = improper->styles[i]->energy;
 
   MPI_Allreduce(emine,vector,nsub,MPI_DOUBLE,MPI_SUM,world);
 }
diff --git a/src/compute_improper_local.cpp b/src/compute_improper_local.cpp
index 3c0af24a1..b9d69dc5b 100644
--- a/src/compute_improper_local.cpp
+++ b/src/compute_improper_local.cpp
@@ -1,256 +1,255 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
 #include <string.h>
 #include "compute_improper_local.h"
 #include "atom.h"
 #include "atom_vec.h"
 #include "molecule.h"
 #include "update.h"
 #include "domain.h"
 #include "force.h"
 #include "improper.h"
 #include "math_const.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 using namespace MathConst;
 
 #define DELTA 10000
 
 #define SMALL     0.001
 
 /* ---------------------------------------------------------------------- */
 
 ComputeImproperLocal::ComputeImproperLocal(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  vector(NULL), array(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute improper/local command");
 
   if (atom->avec->impropers_allow == 0)
     error->all(FLERR,
                "Compute improper/local used when impropers are not allowed");
 
   local_flag = 1;
   nvalues = narg - 3;
   if (nvalues == 1) size_local_cols = 0;
   else size_local_cols = nvalues;
 
   cflag = -1;
   nvalues = 0;
 
   for (int iarg = 3; iarg < narg; iarg++) {
     if (strcmp(arg[iarg],"chi") == 0) cflag = nvalues++;
     else error->all(FLERR,"Invalid keyword in compute improper/local command");
   }
 
   nmax = 0;
-  vector = NULL;
-  array = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeImproperLocal::~ComputeImproperLocal()
 {
   memory->destroy(vector);
   memory->destroy(array);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeImproperLocal::init()
 {
   if (force->improper == NULL)
     error->all(FLERR,"No improper style is defined for compute improper/local");
 
   // do initial memory allocation so that memory_usage() is correct
 
   ncount = compute_impropers(0);
   if (ncount > nmax) reallocate(ncount);
   size_local_rows = ncount;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeImproperLocal::compute_local()
 {
   invoked_local = update->ntimestep;
 
   // count local entries and compute improper info
 
   ncount = compute_impropers(0);
   if (ncount > nmax) reallocate(ncount);
   size_local_rows = ncount;
   ncount = compute_impropers(1);
 }
 
 /* ----------------------------------------------------------------------
    count impropers on this proc
    only count if 2nd atom is the one storing the improper
    all atoms in interaction must be in group
    all atoms in interaction must be known to proc
    if flag is set, compute requested info about improper
 ------------------------------------------------------------------------- */
 
 int ComputeImproperLocal::compute_impropers(int flag)
 {
   int i,m,n,ni,atom1,atom2,atom3,atom4,imol,iatom;
   tagint tagprev;
   double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z;
   double ss1,ss2,ss3,r1,r2,r3,c0,c1,c2,s1,s2;
   double s12,c;
   double *cbuf;
 
   double **x = atom->x;
   tagint *tag = atom->tag;
   int *num_improper = atom->num_improper;
   tagint **improper_atom1 = atom->improper_atom1;
   tagint **improper_atom2 = atom->improper_atom2;
   tagint **improper_atom3 = atom->improper_atom3;
   tagint **improper_atom4 = atom->improper_atom4;
   int *mask = atom->mask;
 
   int *molindex = atom->molindex;
   int *molatom = atom->molatom;
   Molecule **onemols = atom->avec->onemols;
 
   int nlocal = atom->nlocal;
   int molecular = atom->molecular;
 
   if (flag) {
     if (nvalues == 1) {
       if (cflag >= 0) cbuf = vector;
     } else {
       if (cflag >= 0 && array) cbuf = &array[0][cflag];
       else cbuf = NULL;
     }
   }
 
   m = n = 0;
   for (atom2 = 0; atom2 < nlocal; atom2++) {
     if (!(mask[atom2] & groupbit)) continue;
 
     if (molecular == 1) ni = num_improper[atom2];
     else {
       if (molindex[atom2] < 0) continue;
       imol = molindex[atom2];
       iatom = molatom[atom2];
       ni = onemols[imol]->num_improper[iatom];
     }
 
     for (i = 0; i < ni; i++) {
       if (molecular == 1) {
         if (tag[atom2] != improper_atom2[atom2][i]) continue;
         atom1 = atom->map(improper_atom1[atom2][i]);
         atom3 = atom->map(improper_atom3[atom2][i]);
         atom4 = atom->map(improper_atom4[atom2][i]);
       } else {
         if (tag[atom2] != onemols[imol]->improper_atom2[atom2][i]) continue;
         tagprev = tag[atom2] - iatom - 1;
         atom1 = atom->map(onemols[imol]->improper_atom1[atom2][i]+tagprev);
         atom3 = atom->map(onemols[imol]->improper_atom3[atom2][i]+tagprev);
         atom4 = atom->map(onemols[imol]->improper_atom4[atom2][i]+tagprev);
       }
 
       if (atom1 < 0 || !(mask[atom1] & groupbit)) continue;
       if (atom3 < 0 || !(mask[atom3] & groupbit)) continue;
       if (atom4 < 0 || !(mask[atom4] & groupbit)) continue;
 
       if (flag) {
 
         // chi calculation from improper style harmonic
 
         if (cflag >= 0) {
           vb1x = x[atom1][0] - x[atom2][0];
           vb1y = x[atom1][1] - x[atom2][1];
           vb1z = x[atom1][2] - x[atom2][2];
           domain->minimum_image(vb1x,vb1y,vb1z);
 
           vb2x = x[atom3][0] - x[atom2][0];
           vb2y = x[atom3][1] - x[atom2][1];
           vb2z = x[atom3][2] - x[atom2][2];
           domain->minimum_image(vb2x,vb2y,vb2z);
 
           vb3x = x[atom4][0] - x[atom3][0];
           vb3y = x[atom4][1] - x[atom3][1];
           vb3z = x[atom4][2] - x[atom3][2];
           domain->minimum_image(vb3x,vb3y,vb3z);
 
           ss1 = 1.0 / (vb1x*vb1x + vb1y*vb1y + vb1z*vb1z);
           ss2 = 1.0 / (vb2x*vb2x + vb2y*vb2y + vb2z*vb2z);
           ss3 = 1.0 / (vb3x*vb3x + vb3y*vb3y + vb3z*vb3z);
 
           r1 = sqrt(ss1);
           r2 = sqrt(ss2);
           r3 = sqrt(ss3);
 
           c0 = (vb1x * vb3x + vb1y * vb3y + vb1z * vb3z) * r1 * r3;
           c1 = (vb1x * vb2x + vb1y * vb2y + vb1z * vb2z) * r1 * r2;
           c2 = -(vb3x * vb2x + vb3y * vb2y + vb3z * vb2z) * r3 * r2;
 
           s1 = 1.0 - c1*c1;
           if (s1 < SMALL) s1 = SMALL;
           s1 = 1.0 / s1;
 
           s2 = 1.0 - c2*c2;
           if (s2 < SMALL) s2 = SMALL;
           s2 = 1.0 / s2;
 
           s12 = sqrt(s1*s2);
           c = (c1*c2 + c0) * s12;
 
           if (c > 1.0) c = 1.0;
           if (c < -1.0) c = -1.0;
           cbuf[n] = 180.0*acos(c)/MY_PI;
         }
         n += nvalues;
       }
 
       m++;
     }
   }
 
   return m;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeImproperLocal::reallocate(int n)
 {
   // grow vector or array and indices array
 
   while (nmax < n) nmax += DELTA;
 
   if (nvalues == 1) {
     memory->destroy(vector);
     memory->create(vector,nmax,"bond/local:vector");
     vector_local = vector;
   } else {
     memory->destroy(array);
     memory->create(array,nmax,nvalues,"bond/local:array");
     array_local = array;
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeImproperLocal::memory_usage()
 {
   double bytes = nmax*nvalues * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_inertia_chunk.cpp b/src/compute_inertia_chunk.cpp
index c4e83fa4a..1e3c595ed 100644
--- a/src/compute_inertia_chunk.cpp
+++ b/src/compute_inertia_chunk.cpp
@@ -1,259 +1,258 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_inertia_chunk.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "compute_chunk_atom.h"
 #include "domain.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeInertiaChunk::ComputeInertiaChunk(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  idchunk(NULL), massproc(NULL), masstotal(NULL), com(NULL), comall(NULL),
+  inertia(NULL), inertiaall(NULL)
 {
   if (narg != 4) error->all(FLERR,"Illegal compute inertia/chunk command");
 
   array_flag = 1;
   size_array_cols = 6;
   size_array_rows = 0;
   size_array_rows_variable = 1;
   extarray = 0;
 
   // ID of compute chunk/atom
 
   int n = strlen(arg[3]) + 1;
   idchunk = new char[n];
   strcpy(idchunk,arg[3]);
 
   init();
 
   // chunk-based data
 
   nchunk = 1;
   maxchunk = 0;
-  massproc = masstotal = NULL;
-  com = comall = NULL;
-  inertia = inertiaall = NULL;
   allocate();
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeInertiaChunk::~ComputeInertiaChunk()
 {
   delete [] idchunk;
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(com);
   memory->destroy(comall);
   memory->destroy(inertia);
   memory->destroy(inertiaall);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeInertiaChunk::init()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute < 0)
     error->all(FLERR,"Chunk/atom compute does not exist for "
                "compute inertia/chunk");
   cchunk = (ComputeChunkAtom *) modify->compute[icompute];
   if (strcmp(cchunk->style,"chunk/atom") != 0)
     error->all(FLERR,"Compute inertia/chunk does not use chunk/atom compute");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeInertiaChunk::compute_array()
 {
   int i,j,index;
   double dx,dy,dz,massone;
   double unwrap[3];
 
   invoked_array = update->ntimestep;
 
   // compute chunk/atom assigns atoms to chunk IDs
   // extract ichunk index vector from compute
   // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
 
   nchunk = cchunk->setup_chunks();
   cchunk->compute_ichunk();
   int *ichunk = cchunk->ichunk;
 
   if (nchunk > maxchunk) allocate();
   size_array_rows = nchunk;
 
   // zero local per-chunk values
 
   for (int i = 0; i < nchunk; i++) {
     massproc[i] = 0.0;
     com[i][0] = com[i][1] = com[i][2] = 0.0;
     for (j = 0; j < 6; j++) inertia[i][j] = 0.0;
   }
 
   // compute COM for each chunk
 
   double **x = atom->x;
   int *mask = atom->mask;
   int *type = atom->type;
   imageint *image = atom->image;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       domain->unmap(x[i],image[i],unwrap);
       massproc[index] += massone;
       com[index][0] += unwrap[0] * massone;
       com[index][1] += unwrap[1] * massone;
       com[index][2] += unwrap[2] * massone;
     }
 
   MPI_Allreduce(massproc,masstotal,nchunk,MPI_DOUBLE,MPI_SUM,world);
   MPI_Allreduce(&com[0][0],&comall[0][0],3*nchunk,MPI_DOUBLE,MPI_SUM,world);
 
   for (int i = 0; i < nchunk; i++) {
     if (masstotal[i] > 0.0) {
       comall[i][0] /= masstotal[i];
       comall[i][1] /= masstotal[i];
       comall[i][2] /= masstotal[i];
     }
   }
 
   // compute inertia tensor for each chunk
 
   for (i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       domain->unmap(x[i],image[i],unwrap);
       dx = unwrap[0] - comall[index][0];
       dy = unwrap[1] - comall[index][1];
       dz = unwrap[2] - comall[index][2];
       inertia[index][0] += massone * (dy*dy + dz*dz);
       inertia[index][1] += massone * (dx*dx + dz*dz);
       inertia[index][2] += massone * (dx*dx + dy*dy);
       inertia[index][3] -= massone * dx*dy;
       inertia[index][4] -= massone * dy*dz;
       inertia[index][5] -= massone * dx*dz;
     }
 
   MPI_Allreduce(&inertia[0][0],&inertiaall[0][0],6*nchunk,
                 MPI_DOUBLE,MPI_SUM,world);
 }
 
 /* ----------------------------------------------------------------------
    lock methods: called by fix ave/time
    these methods insure vector/array size is locked for Nfreq epoch
      by passing lock info along to compute chunk/atom
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    increment lock counter
 ------------------------------------------------------------------------- */
 
 void ComputeInertiaChunk::lock_enable()
 {
   cchunk->lockcount++;
 }
 
 /* ----------------------------------------------------------------------
    decrement lock counter in compute chunk/atom, it if still exists
 ------------------------------------------------------------------------- */
 
 void ComputeInertiaChunk::lock_disable()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute >= 0) {
     cchunk = (ComputeChunkAtom *) modify->compute[icompute];
     cchunk->lockcount--;
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate and return # of chunks = length of vector/array
 ------------------------------------------------------------------------- */
 
 int ComputeInertiaChunk::lock_length()
 {
   nchunk = cchunk->setup_chunks();
   return nchunk;
 }
 
 /* ----------------------------------------------------------------------
    set the lock from startstep to stopstep
 ------------------------------------------------------------------------- */
 
 void ComputeInertiaChunk::lock(Fix *fixptr, bigint startstep, bigint stopstep)
 {
   cchunk->lock(fixptr,startstep,stopstep);
 }
 
 /* ----------------------------------------------------------------------
    unset the lock
 ------------------------------------------------------------------------- */
 
 void ComputeInertiaChunk::unlock(Fix *fixptr)
 {
   cchunk->unlock(fixptr);
 }
 
 
 /* ----------------------------------------------------------------------
    free and reallocate per-chunk arrays
 ------------------------------------------------------------------------- */
 
 void ComputeInertiaChunk::allocate()
 {
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(com);
   memory->destroy(comall);
   memory->destroy(inertia);
   memory->destroy(inertiaall);
   maxchunk = nchunk;
   memory->create(massproc,maxchunk,"inertia/chunk:massproc");
   memory->create(masstotal,maxchunk,"inertia/chunk:masstotal");
   memory->create(com,maxchunk,3,"inertia/chunk:com");
   memory->create(comall,maxchunk,3,"inertia/chunk:comall");
   memory->create(inertia,maxchunk,6,"inertia/chunk:inertia");
   memory->create(inertiaall,maxchunk,6,"inertia/chunk:inertiaall");
   array = inertiaall;
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeInertiaChunk::memory_usage()
 {
   double bytes = (bigint) maxchunk * 2 * sizeof(double);
   bytes += (bigint) maxchunk * 2*3 * sizeof(double);
   bytes += (bigint) maxchunk * 2*6 * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_ke_atom.cpp b/src/compute_ke_atom.cpp
index aa893981a..da159669d 100644
--- a/src/compute_ke_atom.cpp
+++ b/src/compute_ke_atom.cpp
@@ -1,108 +1,108 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_ke_atom.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "comm.h"
 #include "force.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeKEAtom::ComputeKEAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  ke(NULL)
 {
   if (narg != 3) error->all(FLERR,"Illegal compute ke/atom command");
 
   peratom_flag = 1;
   size_peratom_cols = 0;
 
   nmax = 0;
-  ke = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeKEAtom::~ComputeKEAtom()
 {
   memory->destroy(ke);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeKEAtom::init()
 {
   int count = 0;
   for (int i = 0; i < modify->ncompute; i++)
     if (strcmp(modify->compute[i]->style,"ke/atom") == 0) count++;
   if (count > 1 && comm->me == 0)
     error->warning(FLERR,"More than one compute ke/atom");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeKEAtom::compute_peratom()
 {
   invoked_peratom = update->ntimestep;
 
   // grow ke array if necessary
 
   if (atom->nmax > nmax) {
     memory->destroy(ke);
     nmax = atom->nmax;
     memory->create(ke,nmax,"ke/atom:ke");
     vector_atom = ke;
   }
 
   // compute kinetic energy for each atom in group
 
   double mvv2e = force->mvv2e;
   double **v = atom->v;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int *mask = atom->mask;
   int *type = atom->type;
   int nlocal = atom->nlocal;
 
   if (rmass)
     for (int i = 0; i < nlocal; i++) {
       if (mask[i] & groupbit) {
         ke[i] = 0.5 * mvv2e * rmass[i] *
           (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]);
       } else ke[i] = 0.0;
     }
 
   else
     for (int i = 0; i < nlocal; i++) {
       if (mask[i] & groupbit) {
         ke[i] = 0.5 * mvv2e * mass[type[i]] *
           (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]);
       } else ke[i] = 0.0;
     }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based array
 ------------------------------------------------------------------------- */
 
 double ComputeKEAtom::memory_usage()
 {
   double bytes = nmax * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_msd.cpp b/src/compute_msd.cpp
index 7f005d275..f2e82fe23 100644
--- a/src/compute_msd.cpp
+++ b/src/compute_msd.cpp
@@ -1,269 +1,270 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_msd.h"
 #include "atom.h"
 #include "update.h"
 #include "group.h"
 #include "domain.h"
 #include "modify.h"
 #include "fix_store.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeMSD::ComputeMSD(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  id_fix(NULL)
 {
   if (narg < 3) error->all(FLERR,"Illegal compute msd command");
 
   vector_flag = 1;
   size_vector = 4;
   extvector = 0;
   create_attribute = 1;
   dynamic_group_allow = 0;
 
   // optional args
 
   comflag = 0;
   avflag = 0;
 
   int iarg = 3;
   while (iarg < narg) {
     if (strcmp(arg[iarg],"com") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute msd command");
       if (strcmp(arg[iarg+1],"no") == 0) comflag = 0;
       else if (strcmp(arg[iarg+1],"yes") == 0) comflag = 1;
       else error->all(FLERR,"Illegal compute msd command");
       iarg += 2;
     } else if (strcmp(arg[iarg],"average") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute msd command");
       if (strcmp(arg[iarg+1],"no") == 0) avflag = 0;
       else if (strcmp(arg[iarg+1],"yes") == 0) avflag = 1;
       else error->all(FLERR,"Illegal compute msd command");
       iarg += 2;
     } else error->all(FLERR,"Illegal compute msd command");
   }
 
   // create a new fix STORE style for reference positions
   // id = compute-ID + COMPUTE_STORE, fix group = compute group
 
   int n = strlen(id) + strlen("_COMPUTE_STORE") + 1;
   id_fix = new char[n];
   strcpy(id_fix,id);
   strcat(id_fix,"_COMPUTE_STORE");
 
   char **newarg = new char*[6];
   newarg[0] = id_fix;
   newarg[1] = group->names[igroup];
   newarg[2] = (char *) "STORE";
   newarg[3] = (char *) "peratom";
   newarg[4] = (char *) "1";
   newarg[5] = (char *) "3";
   modify->add_fix(6,newarg);
   fix = (FixStore *) modify->fix[modify->nfix-1];
   delete [] newarg;
 
   // calculate xu,yu,zu for fix store array
   // skip if reset from restart file
 
   if (fix->restart_reset) fix->restart_reset = 0;
   else {
     double **xoriginal = fix->astore;
 
     double **x = atom->x;
     int *mask = atom->mask;
     imageint *image = atom->image;
     int nlocal = atom->nlocal;
 
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) domain->unmap(x[i],image[i],xoriginal[i]);
       else xoriginal[i][0] = xoriginal[i][1] = xoriginal[i][2] = 0.0;
 
     // adjust for COM if requested
 
     if (comflag) {
       double cm[3];
       masstotal = group->mass(igroup);
       group->xcm(igroup,masstotal,cm);
       for (int i = 0; i < nlocal; i++)
         if (mask[i] & groupbit) {
           xoriginal[i][0] -= cm[0];
           xoriginal[i][1] -= cm[1];
           xoriginal[i][2] -= cm[2];
         }
     }
 
     // initialize counter for average positions if requested
 
     naverage = 0;
   }
 
   // displacement vector
 
   vector = new double[4];
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeMSD::~ComputeMSD()
 {
   // check nfix in case all fixes have already been deleted
 
   if (modify->nfix) modify->delete_fix(id_fix);
 
   delete [] id_fix;
   delete [] vector;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeMSD::init()
 {
   // set fix which stores reference atom coords
 
   int ifix = modify->find_fix(id_fix);
   if (ifix < 0) error->all(FLERR,"Could not find compute msd fix ID");
   fix = (FixStore *) modify->fix[ifix];
 
   // nmsd = # of atoms in group
 
   nmsd = group->count(igroup);
   masstotal = group->mass(igroup);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeMSD::compute_vector()
 {
   invoked_vector = update->ntimestep;
 
   // cm = current center of mass
 
   double cm[3];
   if (comflag) group->xcm(igroup,masstotal,cm);
   else cm[0] = cm[1] = cm[2] = 0.0;
 
   // dx,dy,dz = displacement of atom from reference position
   // reference unwrapped position is stored by fix
   // relative to center of mass if comflag is set
   // for triclinic, need to unwrap current atom coord via h matrix
 
   double **xoriginal = fix->astore;
 
   double **x = atom->x;
   int *mask = atom->mask;
   imageint *image = atom->image;
   int nlocal = atom->nlocal;
 
   double *h = domain->h;
   double xprd = domain->xprd;
   double yprd = domain->yprd;
   double zprd = domain->zprd;
 
   double dx,dy,dz;
   int xbox,ybox,zbox;
 
   double msd[4];
   msd[0] = msd[1] = msd[2] = msd[3] = 0.0;
 
   double xtmp, ytmp, ztmp;
 
   // update number of averages if requested
 
   double navfac;
   if (avflag) {
     naverage++;
     navfac = 1.0/(naverage+1);
   }
 
 
   if (domain->triclinic == 0) {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         xbox = (image[i] & IMGMASK) - IMGMAX;
         ybox = (image[i] >> IMGBITS & IMGMASK) - IMGMAX;
         zbox = (image[i] >> IMG2BITS) - IMGMAX;
 	xtmp = x[i][0] + xbox*xprd - cm[0];
 	ytmp = x[i][1] + ybox*yprd - cm[1];
 	ztmp = x[i][2] + zbox*zprd - cm[2];
 
 	// use running average position for reference if requested
 
 	if (avflag) {
 	  xoriginal[i][0] = (xoriginal[i][0]*naverage + xtmp)*navfac;
 	  xoriginal[i][1] = (xoriginal[i][1]*naverage + ytmp)*navfac;
 	  xoriginal[i][2] = (xoriginal[i][2]*naverage + ztmp)*navfac;
 	}
 
         dx = xtmp - xoriginal[i][0];
         dy = ytmp - xoriginal[i][1];
         dz = ztmp - xoriginal[i][2];
         msd[0] += dx*dx;
         msd[1] += dy*dy;
         msd[2] += dz*dz;
         msd[3] += dx*dx + dy*dy + dz*dz;
 
       }
   } else {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         xbox = (image[i] & IMGMASK) - IMGMAX;
         ybox = (image[i] >> IMGBITS & IMGMASK) - IMGMAX;
         zbox = (image[i] >> IMG2BITS) - IMGMAX;
         xtmp = x[i][0] + h[0]*xbox + h[5]*ybox + h[4]*zbox - cm[0];
         ytmp = x[i][1] + h[1]*ybox + h[3]*zbox - cm[1];
         ztmp = x[i][2] + h[2]*zbox - cm[2];
 
 	// use running average position for reference if requested
 
 	if (avflag) {
 	  xoriginal[i][0] = (xoriginal[i][0]*naverage + xtmp)*navfac;
 	  xoriginal[i][1] = (xoriginal[i][0]*naverage + xtmp)*navfac;
 	  xoriginal[i][2] = (xoriginal[i][0]*naverage + xtmp)*navfac;
 	}
 
         dx = xtmp - xoriginal[i][0];
         dy = ytmp - xoriginal[i][1];
         dz = ztmp - xoriginal[i][2];
         msd[0] += dx*dx;
         msd[1] += dy*dy;
         msd[2] += dz*dz;
         msd[3] += dx*dx + dy*dy + dz*dz;
       }
   }
 
   MPI_Allreduce(msd,vector,4,MPI_DOUBLE,MPI_SUM,world);
   if (nmsd) {
     vector[0] /= nmsd;
     vector[1] /= nmsd;
     vector[2] /= nmsd;
     vector[3] /= nmsd;
   }
 }
 
 /* ----------------------------------------------------------------------
    initialize one atom's storage values, called when atom is created
 ------------------------------------------------------------------------- */
 
 void ComputeMSD::set_arrays(int i)
 {
   double **xoriginal = fix->astore;
   double **x = atom->x;
   xoriginal[i][0] = x[i][0];
   xoriginal[i][1] = x[i][1];
   xoriginal[i][2] = x[i][2];
 }
diff --git a/src/compute_msd_chunk.cpp b/src/compute_msd_chunk.cpp
index 30eee1d64..bc5a374fa 100644
--- a/src/compute_msd_chunk.cpp
+++ b/src/compute_msd_chunk.cpp
@@ -1,310 +1,307 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_msd_chunk.h"
 #include "atom.h"
 #include "group.h"
 #include "update.h"
 #include "modify.h"
 #include "compute_chunk_atom.h"
 #include "domain.h"
 #include "fix_store.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeMSDChunk::ComputeMSDChunk(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  idchunk(NULL), id_fix(NULL), massproc(NULL), masstotal(NULL), com(NULL), comall(NULL), msd(NULL)
 {
   if (narg != 4) error->all(FLERR,"Illegal compute msd/chunk command");
 
   array_flag = 1;
   size_array_cols = 4;
   size_array_rows = 0;
   size_array_rows_variable = 1;
   extarray = 0;
 
   // ID of compute chunk/atom
 
   int n = strlen(arg[3]) + 1;
   idchunk = new char[n];
   strcpy(idchunk,arg[3]);
 
   firstflag = 1;
   init();
 
-  massproc = masstotal = NULL;
-  com = comall = NULL;
-  msd = NULL;
-
   // create a new fix STORE style for reference positions
   // id = compute-ID + COMPUTE_STORE, fix group = compute group
   // do not know size of array at this point, just allocate 1x3 array
   // fix creation must be done now so that a restart run can
   //   potentially re-populate the fix array (and change it to correct size)
   // otherwise size reset and init will be done in setup()
 
   n = strlen(id) + strlen("_COMPUTE_STORE") + 1;
   id_fix = new char[n];
   strcpy(id_fix,id);
   strcat(id_fix,"_COMPUTE_STORE");
 
   char **newarg = new char*[6];
   newarg[0] = id_fix;
   newarg[1] = group->names[igroup];
   newarg[2] = (char *) "STORE";
   newarg[3] = (char *) "global";
   newarg[4] = (char *) "1";
   newarg[5] = (char *) "1";
   modify->add_fix(6,newarg);
   fix = (FixStore *) modify->fix[modify->nfix-1];
   delete [] newarg;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeMSDChunk::~ComputeMSDChunk()
 {
   // check nfix in case all fixes have already been deleted
 
   if (modify->nfix) modify->delete_fix(id_fix);
 
   delete [] id_fix;
   delete [] idchunk;
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(com);
   memory->destroy(comall);
   memory->destroy(msd);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeMSDChunk::init()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute < 0)
     error->all(FLERR,"Chunk/atom compute does not exist for compute msd/chunk");
   cchunk = (ComputeChunkAtom *) modify->compute[icompute];
   if (strcmp(cchunk->style,"chunk/atom") != 0)
     error->all(FLERR,"Compute msd/chunk does not use chunk/atom compute");
 
   // set fix which stores reference atom coords
   // if firstflag, will be created in setup()
 
   if (!firstflag) {
     int ifix = modify->find_fix(id_fix);
     if (ifix < 0) error->all(FLERR,"Could not find compute msd/chunk fix ID");
     fix = (FixStore *) modify->fix[ifix];
   }
 }
 
 /* ----------------------------------------------------------------------
    compute initial COM for each chunk
    only once on timestep compute is defined, when firstflag = 1
 ------------------------------------------------------------------------- */
 
 void ComputeMSDChunk::setup()
 {
   if (!firstflag) return;
   compute_array();
   firstflag = 0;
 
   // if fix->astore is already correct size, restart file set it up
   // otherwise reset its size now and initialize to current COM
 
   if (fix->nrow == nchunk && fix->ncol == 3) return;
   fix->reset_global(nchunk,3);
     
   double **cominit = fix->astore;
   for (int i = 0; i < nchunk; i++) {
     cominit[i][0] = comall[i][0];
     cominit[i][1] = comall[i][1];
     cominit[i][2] = comall[i][2];
     msd[i][0] = msd[i][1] = msd[i][2] = msd[i][3] = 0.0;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeMSDChunk::compute_array()
 {
   int index;
   double massone;
   double unwrap[3];
 
   invoked_array = update->ntimestep;
 
   // compute chunk/atom assigns atoms to chunk IDs
   // extract ichunk index vector from compute
   // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
 
   int n = cchunk->setup_chunks();
   cchunk->compute_ichunk();
   int *ichunk = cchunk->ichunk;
 
   // first time call, allocate per-chunk arrays
   // thereafter, require nchunk remain the same
 
   if (firstflag) {
     nchunk = n;
     allocate();
     size_array_rows = nchunk;
   } else if (n != nchunk)
     error->all(FLERR,"Compute msd/chunk nchunk is not static");
 
   // zero local per-chunk values
 
   for (int i = 0; i < nchunk; i++) {
     massproc[i] = 0.0;
     com[i][0] = com[i][1] = com[i][2] = 0.0;
   }
 
   // compute current COM for each chunk
 
   double **x = atom->x;
   int *mask = atom->mask;
   int *type = atom->type;
   imageint *image = atom->image;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       domain->unmap(x[i],image[i],unwrap);
       massproc[index] += massone;
       com[index][0] += unwrap[0] * massone;
       com[index][1] += unwrap[1] * massone;
       com[index][2] += unwrap[2] * massone;
     }
 
   MPI_Allreduce(massproc,masstotal,nchunk,MPI_DOUBLE,MPI_SUM,world);
   MPI_Allreduce(&com[0][0],&comall[0][0],3*nchunk,MPI_DOUBLE,MPI_SUM,world);
 
   for (int i = 0; i < nchunk; i++) {
     if (masstotal[i] > 0.0) {
       comall[i][0] /= masstotal[i];
       comall[i][1] /= masstotal[i];
       comall[i][2] /= masstotal[i];
     }
   }
 
   // MSD is difference between current and initial COM
   // cominit is initilialized by setup() when firstflag is set
 
   if (firstflag) return;
 
   double dx,dy,dz;
   double **cominit = fix->astore;
 
   for (int i = 0; i < nchunk; i++) {
     dx = comall[i][0] - cominit[i][0];
     dy = comall[i][1] - cominit[i][1];
     dz = comall[i][2] - cominit[i][2];
     msd[i][0] = dx*dx;
     msd[i][1] = dy*dy;
     msd[i][2] = dz*dz;
     msd[i][3] = dx*dx + dy*dy + dz*dz;
   }
 }
 
 /* ----------------------------------------------------------------------
    lock methods: called by fix ave/time
    these methods insure vector/array size is locked for Nfreq epoch
      by passing lock info along to compute chunk/atom
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    increment lock counter
 ------------------------------------------------------------------------- */
 
 void ComputeMSDChunk::lock_enable()
 {
   cchunk->lockcount++;
 }
 
 /* ----------------------------------------------------------------------
    decrement lock counter in compute chunk/atom, it if still exists
 ------------------------------------------------------------------------- */
 
 void ComputeMSDChunk::lock_disable()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute >= 0) {
     cchunk = (ComputeChunkAtom *) modify->compute[icompute];
     cchunk->lockcount--;
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate and return # of chunks = length of vector/array
 ------------------------------------------------------------------------- */
 
 int ComputeMSDChunk::lock_length()
 {
   nchunk = cchunk->setup_chunks();
   return nchunk;
 }
 
 /* ----------------------------------------------------------------------
    set the lock from startstep to stopstep
 ------------------------------------------------------------------------- */
 
 void ComputeMSDChunk::lock(Fix *fixptr, bigint startstep, bigint stopstep)
 {
   cchunk->lock(fixptr,startstep,stopstep);
 }
 
 /* ----------------------------------------------------------------------
    unset the lock
 ------------------------------------------------------------------------- */
 
 void ComputeMSDChunk::unlock(Fix *fixptr)
 {
   cchunk->unlock(fixptr);
 }
 
 /* ----------------------------------------------------------------------
    one-time allocate of per-chunk arrays
 ------------------------------------------------------------------------- */
 
 void ComputeMSDChunk::allocate()
 {
   memory->create(massproc,nchunk,"msd/chunk:massproc");
   memory->create(masstotal,nchunk,"msd/chunk:masstotal");
   memory->create(com,nchunk,3,"msd/chunk:com");
   memory->create(comall,nchunk,3,"msd/chunk:comall");
   memory->create(msd,nchunk,4,"msd/chunk:msd");
   array = msd;
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeMSDChunk::memory_usage()
 {
   double bytes = (bigint) nchunk * 2 * sizeof(double);
   bytes += (bigint) nchunk * 2*3 * sizeof(double);
   bytes += (bigint) nchunk * 4 * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_omega_chunk.cpp b/src/compute_omega_chunk.cpp
index 54e0b8f90..58acc19c3 100644
--- a/src/compute_omega_chunk.cpp
+++ b/src/compute_omega_chunk.cpp
@@ -1,335 +1,333 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_omega_chunk.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "compute_chunk_atom.h"
 #include "domain.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeOmegaChunk::ComputeOmegaChunk(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  idchunk(NULL), massproc(NULL), masstotal(NULL), com(NULL), comall(NULL), angmom(NULL), angmomall(NULL)
 {
   if (narg != 4) error->all(FLERR,"Illegal compute omega/chunk command");
 
   array_flag = 1;
   size_array_cols = 3;
   size_array_rows = 0;
   size_array_rows_variable = 1;
   extarray = 0;
 
   // ID of compute chunk/atom
 
   int n = strlen(arg[3]) + 1;
   idchunk = new char[n];
   strcpy(idchunk,arg[3]);
 
   init();
 
   // chunk-based data
 
   nchunk = 1;
   maxchunk = 0;
-  massproc = masstotal = NULL;
-  com = comall = NULL;
-  angmom = angmomall = NULL;
   allocate();
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeOmegaChunk::~ComputeOmegaChunk()
 {
   delete [] idchunk;
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(com);
   memory->destroy(comall);
   memory->destroy(angmom);
   memory->destroy(angmomall);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeOmegaChunk::init()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute < 0)
     error->all(FLERR,"Chunk/atom compute does not exist for "
                "compute omega/chunk");
   cchunk = (ComputeChunkAtom *) modify->compute[icompute];
   if (strcmp(cchunk->style,"chunk/atom") != 0)
     error->all(FLERR,"Compute omega/chunk does not use chunk/atom compute");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeOmegaChunk::compute_array()
 {
   int i,j,index;
   double dx,dy,dz,massone;
   double unwrap[3];
 
   invoked_array = update->ntimestep;
 
   // compute chunk/atom assigns atoms to chunk IDs
   // extract ichunk index vector from compute
   // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
 
   nchunk = cchunk->setup_chunks();
   cchunk->compute_ichunk();
   int *ichunk = cchunk->ichunk;
 
   if (nchunk > maxchunk) allocate();
   size_array_rows = nchunk;
 
   // zero local per-chunk values
 
   for (int i = 0; i < nchunk; i++) {
     massproc[i] = 0.0;
     com[i][0] = com[i][1] = com[i][2] = 0.0;
     for (j = 0; j < 6; j++) inertia[i][j] = 0.0;
     angmom[i][0] = angmom[i][1] = angmom[i][2] = 0.0;
     omega[i][0] = omega[i][1] = omega[i][2] = 0.0;
   }
 
   // compute COM for each chunk
 
   double **x = atom->x;
   int *mask = atom->mask;
   int *type = atom->type;
   imageint *image = atom->image;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       domain->unmap(x[i],image[i],unwrap);
       massproc[index] += massone;
       com[index][0] += unwrap[0] * massone;
       com[index][1] += unwrap[1] * massone;
       com[index][2] += unwrap[2] * massone;
     }
 
   MPI_Allreduce(massproc,masstotal,nchunk,MPI_DOUBLE,MPI_SUM,world);
   MPI_Allreduce(&com[0][0],&comall[0][0],3*nchunk,MPI_DOUBLE,MPI_SUM,world);
 
   for (int i = 0; i < nchunk; i++) {
     if (masstotal[i] > 0.0) {
       comall[i][0] /= masstotal[i];
       comall[i][1] /= masstotal[i];
       comall[i][2] /= masstotal[i];
     }
   }
 
   // compute inertia tensor for each chunk
 
   for (i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       domain->unmap(x[i],image[i],unwrap);
       dx = unwrap[0] - comall[index][0];
       dy = unwrap[1] - comall[index][1];
       dz = unwrap[2] - comall[index][2];
       inertia[index][0] += massone * (dy*dy + dz*dz);
       inertia[index][1] += massone * (dx*dx + dz*dz);
       inertia[index][2] += massone * (dx*dx + dy*dy);
       inertia[index][3] -= massone * dx*dy;
       inertia[index][4] -= massone * dy*dz;
       inertia[index][5] -= massone * dx*dz;
     }
 
   MPI_Allreduce(&inertia[0][0],&inertiaall[0][0],6*nchunk,
                 MPI_DOUBLE,MPI_SUM,world);
 
   // compute angmom for each chunk
 
   double **v = atom->v;
 
   for (i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       domain->unmap(x[i],image[i],unwrap);
       dx = unwrap[0] - comall[index][0];
       dy = unwrap[1] - comall[index][1];
       dz = unwrap[2] - comall[index][2];
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       angmom[index][0] += massone * (dy*v[i][2] - dz*v[i][1]);
       angmom[index][1] += massone * (dz*v[i][0] - dx*v[i][2]);
       angmom[index][2] += massone * (dx*v[i][1] - dy*v[i][0]);
     }
 
   MPI_Allreduce(&angmom[0][0],&angmomall[0][0],3*nchunk,
                 MPI_DOUBLE,MPI_SUM,world);
 
   // compute omega for each chunk from L = Iw, inverting I to solve for w
 
   double ione[3][3],inverse[3][3];
 
   for (i = 0; i < nchunk; i++) {
     ione[0][0] = inertiaall[i][0];
     ione[1][1] = inertiaall[i][1];
     ione[2][2] = inertiaall[i][2];
     ione[0][1] = inertiaall[i][3];
     ione[1][2] = inertiaall[i][4];
     ione[0][2] = inertiaall[i][5];
     ione[1][0] = ione[0][1];
     ione[2][1] = ione[1][2];
     ione[2][0] = ione[0][2];
 
     inverse[0][0] = ione[1][1]*ione[2][2] - ione[1][2]*ione[2][1];
     inverse[0][1] = -(ione[0][1]*ione[2][2] - ione[0][2]*ione[2][1]);
     inverse[0][2] = ione[0][1]*ione[1][2] - ione[0][2]*ione[1][1];
 
     inverse[1][0] = -(ione[1][0]*ione[2][2] - ione[1][2]*ione[2][0]);
     inverse[1][1] = ione[0][0]*ione[2][2] - ione[0][2]*ione[2][0];
     inverse[1][2] = -(ione[0][0]*ione[1][2] - ione[0][2]*ione[1][0]);
 
     inverse[2][0] = ione[1][0]*ione[2][1] - ione[1][1]*ione[2][0];
     inverse[2][1] = -(ione[0][0]*ione[2][1] - ione[0][1]*ione[2][0]);
     inverse[2][2] = ione[0][0]*ione[1][1] - ione[0][1]*ione[1][0];
 
     double determinant = ione[0][0]*ione[1][1]*ione[2][2] +
       ione[0][1]*ione[1][2]*ione[2][0] + ione[0][2]*ione[1][0]*ione[2][1] -
       ione[0][0]*ione[1][2]*ione[2][1] - ione[0][1]*ione[1][0]*ione[2][2] -
       ione[2][0]*ione[1][1]*ione[0][2];
 
     if (determinant > 0.0)
       for (int i = 0; i < 3; i++)
         for (int j = 0; j < 3; j++)
           inverse[i][j] /= determinant;
 
     omega[i][0] = inverse[0][0]*angmom[i][0] + inverse[0][1]*angmom[i][1] +
       inverse[0][2]*angmom[i][2];
     omega[i][1] = inverse[1][0]*angmom[i][0] + inverse[1][1]*angmom[i][1] +
       inverse[1][2]*angmom[i][2];
     omega[i][2] = inverse[2][0]*angmom[i][0] + inverse[2][1]*angmom[i][1] +
       inverse[2][2]*angmom[i][2];
   }
 }
 
 /* ----------------------------------------------------------------------
    lock methods: called by fix ave/time
    these methods insure vector/array size is locked for Nfreq epoch
      by passing lock info along to compute chunk/atom
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    increment lock counter
 ------------------------------------------------------------------------- */
 
 void ComputeOmegaChunk::lock_enable()
 {
   cchunk->lockcount++;
 }
 
 /* ----------------------------------------------------------------------
    decrement lock counter in compute chunk/atom, it if still exists
 ------------------------------------------------------------------------- */
 
 void ComputeOmegaChunk::lock_disable()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute >= 0) {
     cchunk = (ComputeChunkAtom *) modify->compute[icompute];
     cchunk->lockcount--;
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate and return # of chunks = length of vector/array
 ------------------------------------------------------------------------- */
 
 int ComputeOmegaChunk::lock_length()
 {
   nchunk = cchunk->setup_chunks();
   return nchunk;
 }
 
 /* ----------------------------------------------------------------------
    set the lock from startstep to stopstep
 ------------------------------------------------------------------------- */
 
 void ComputeOmegaChunk::lock(Fix *fixptr, bigint startstep, bigint stopstep)
 {
   cchunk->lock(fixptr,startstep,stopstep);
 }
 
 /* ----------------------------------------------------------------------
    unset the lock
 ------------------------------------------------------------------------- */
 
 void ComputeOmegaChunk::unlock(Fix *fixptr)
 {
   cchunk->unlock(fixptr);
 }
 
 /* ----------------------------------------------------------------------
    free and reallocate per-chunk arrays
 ------------------------------------------------------------------------- */
 
 void ComputeOmegaChunk::allocate()
 {
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(com);
   memory->destroy(comall);
   memory->destroy(inertia);
   memory->destroy(inertiaall);
   memory->destroy(angmom);
   memory->destroy(angmomall);
   memory->destroy(omega);
   maxchunk = nchunk;
   memory->create(massproc,maxchunk,"omega/chunk:massproc");
   memory->create(masstotal,maxchunk,"omega/chunk:masstotal");
   memory->create(com,maxchunk,3,"omega/chunk:com");
   memory->create(comall,maxchunk,3,"omega/chunk:comall");
   memory->create(inertia,maxchunk,6,"omega/chunk:inertia");
   memory->create(inertiaall,maxchunk,6,"omega/chunk:inertiaall");
   memory->create(angmom,maxchunk,3,"omega/chunk:angmom");
   memory->create(angmomall,maxchunk,3,"omega/chunk:angmomall");
   memory->create(omega,maxchunk,3,"omega/chunk:omega");
   array = omega;
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeOmegaChunk::memory_usage()
 {
   double bytes = (bigint) maxchunk * 2 * sizeof(double);
   bytes += (bigint) maxchunk * 2*3 * sizeof(double);
   bytes += (bigint) maxchunk * 2*6 * sizeof(double);
   bytes += (bigint) maxchunk * 2*3 * sizeof(double);
   bytes += (bigint) maxchunk * 3 * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_orientorder_atom.cpp b/src/compute_orientorder_atom.cpp
index fd3493cd7..6c5a2c0c0 100644
--- a/src/compute_orientorder_atom.cpp
+++ b/src/compute_orientorder_atom.cpp
@@ -1,508 +1,503 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    Contributing author:  Aidan Thompson (SNL)
                          Axel Kohlmeyer (Temple U)
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include <stdlib.h>
 #include "compute_orientorder_atom.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "neighbor.h"
 #include "neigh_list.h"
 #include "neigh_request.h"
 #include "force.h"
 #include "pair.h"
 #include "comm.h"
 #include "memory.h"
 #include "error.h"
 #include "math_const.h"
 
 using namespace LAMMPS_NS;
 using namespace MathConst;
 using namespace std;
 
 #ifdef DBL_EPSILON
   #define MY_EPSILON (10.0*DBL_EPSILON)
 #else
   #define MY_EPSILON (10.0*2.220446049250313e-16)
 #endif
 
 /* ---------------------------------------------------------------------- */
 
 ComputeOrientOrderAtom::ComputeOrientOrderAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  distsq(NULL), nearest(NULL), rlist(NULL), qlist(NULL), qnarray(NULL), qnm_r(NULL), qnm_i(NULL)
 {
   if (narg < 3 ) error->all(FLERR,"Illegal compute orientorder/atom command");
 
   // set default values for optional args
 
   nnn = 12;
   cutsq = 0.0;
 
   // specify which orders to request
  
   nqlist = 5;
   memory->create(qlist,nqlist,"orientorder/atom:qlist");
   qlist[0] = 4;
   qlist[1] = 6;
   qlist[2] = 8;
   qlist[3] = 10;
   qlist[4] = 12;
   qmax = 12;
 
   // process optional args
 
   int iarg = 3;
   while (iarg < narg) {
     if (strcmp(arg[iarg],"nnn") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute orientorder/atom command");
       if (strcmp(arg[iarg+1],"NULL") == 0) 
 	nnn = 0;
       else {
 	nnn = force->numeric(FLERR,arg[iarg+1]);
 	if (nnn <= 0)
 	  error->all(FLERR,"Illegal compute orientorder/atom command");
       }
       iarg += 2;
     } else if (strcmp(arg[iarg],"degrees") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute orientorder/atom command");
       nqlist = force->numeric(FLERR,arg[iarg+1]);
       if (nqlist <= 0) error->all(FLERR,"Illegal compute orientorder/atom command");
       memory->destroy(qlist);
       memory->create(qlist,nqlist,"orientorder/atom:qlist");
       iarg += 2;
       if (iarg+nqlist > narg) error->all(FLERR,"Illegal compute orientorder/atom command");
       qmax = 0;
       for (int iw = 0; iw < nqlist; iw++) {
 	qlist[iw] = force->numeric(FLERR,arg[iarg+iw]);
 	if (qlist[iw] < 0)
 	  error->all(FLERR,"Illegal compute orientorder/atom command");
 	if (qlist[iw] > qmax) qmax = qlist[iw];
       }
       iarg += nqlist;
     } else if (strcmp(arg[iarg],"cutoff") == 0) {
       if (iarg+2 > narg) error->all(FLERR,"Illegal compute orientorder/atom command");
       double cutoff = force->numeric(FLERR,arg[iarg+1]);
       if (cutoff <= 0.0) error->all(FLERR,"Illegal compute orientorder/atom command");
       cutsq = cutoff*cutoff;
       iarg += 2;
     } else error->all(FLERR,"Illegal compute orientorder/atom command");
   }
 
   ncol = nqlist;
   peratom_flag = 1;
   size_peratom_cols = ncol;
 
   nmax = 0;
-  qnarray = NULL;
   maxneigh = 0;
-  distsq = NULL;
-  nearest = NULL;
-  rlist = NULL;
-  qnm_r = NULL;
-  qnm_i = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeOrientOrderAtom::~ComputeOrientOrderAtom()
 {
   memory->destroy(qnarray);
   memory->destroy(distsq);
   memory->destroy(rlist);
   memory->destroy(nearest);
   memory->destroy(qlist);
   memory->destroy(qnm_r);
   memory->destroy(qnm_i);
   
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeOrientOrderAtom::init()
 {
   if (force->pair == NULL)
     error->all(FLERR,"Compute orientorder/atom requires a pair style be defined");
   if (cutsq == 0.0) cutsq = force->pair->cutforce * force->pair->cutforce;
   else if (sqrt(cutsq) > force->pair->cutforce)
     error->all(FLERR,
                "Compute orientorder/atom cutoff is longer than pairwise cutoff");
 
   memory->create(qnm_r,qmax,2*qmax+1,"orientorder/atom:qnm_r");
   memory->create(qnm_i,qmax,2*qmax+1,"orientorder/atom:qnm_i");
 
   // need an occasional full neighbor list
 
   int irequest = neighbor->request(this,instance_me);
   neighbor->requests[irequest]->pair = 0;
   neighbor->requests[irequest]->compute = 1;
   neighbor->requests[irequest]->half = 0;
   neighbor->requests[irequest]->full = 1;
   neighbor->requests[irequest]->occasional = 1;
 
   int count = 0;
   for (int i = 0; i < modify->ncompute; i++)
     if (strcmp(modify->compute[i]->style,"orientorder/atom") == 0) count++;
   if (count > 1 && comm->me == 0)
     error->warning(FLERR,"More than one compute orientorder/atom");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeOrientOrderAtom::init_list(int id, NeighList *ptr)
 {
   list = ptr;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeOrientOrderAtom::compute_peratom()
 {
   int i,j,ii,jj,inum,jnum;
   double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
   int *ilist,*jlist,*numneigh,**firstneigh;
 
   invoked_peratom = update->ntimestep;
 
   // grow order parameter array if necessary
 
   if (atom->nmax > nmax) {
     memory->destroy(qnarray);
     nmax = atom->nmax;
     memory->create(qnarray,nmax,ncol,"orientorder/atom:qnarray");
     array_atom = qnarray;
   }
 
   // invoke full neighbor list (will copy or build if necessary)
 
   neighbor->build_one(list);
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
   // compute order parameter for each atom in group
   // use full neighbor list to count atoms less than cutoff
 
   double **x = atom->x;
   int *mask = atom->mask;
 
   for (ii = 0; ii < inum; ii++) {
     i = ilist[ii];
     double* qn = qnarray[i];
     if (mask[i] & groupbit) {
       xtmp = x[i][0];
       ytmp = x[i][1];
       ztmp = x[i][2];
       jlist = firstneigh[i];
       jnum = numneigh[i];
       
       // insure distsq and nearest arrays are long enough
 
       if (jnum > maxneigh) {
         memory->destroy(distsq);
         memory->destroy(rlist);
         memory->destroy(nearest);
         maxneigh = jnum;
         memory->create(distsq,maxneigh,"orientorder/atom:distsq");
         memory->create(rlist,maxneigh,3,"orientorder/atom:rlist");
         memory->create(nearest,maxneigh,"orientorder/atom:nearest");
       }
 
       // loop over list of all neighbors within force cutoff
       // distsq[] = distance sq to each
       // rlist[] = distance vector to each
       // nearest[] = atom indices of neighbors
 
       int ncount = 0;
       for (jj = 0; jj < jnum; jj++) {
         j = jlist[jj];
         j &= NEIGHMASK;
 
         delx = xtmp - x[j][0];
         dely = ytmp - x[j][1];
         delz = ztmp - x[j][2];
         rsq = delx*delx + dely*dely + delz*delz;
         if (rsq < cutsq) {
           distsq[ncount] = rsq;
 	  rlist[ncount][0] = delx;
 	  rlist[ncount][1] = dely;
 	  rlist[ncount][2] = delz;
           nearest[ncount++] = j;
         }
       }
 
       // if not nnn neighbors, order parameter = 0;
 
       if ((ncount == 0) || (ncount < nnn)) {
 	for (int iw = 0; iw < nqlist; iw++)
 	  qn[iw] = 0.0;
         continue;
       }
 
       // if nnn > 0, use only nearest nnn neighbors
 
       if (nnn > 0) {
 	select3(nnn,ncount,distsq,nearest,rlist);
 	ncount = nnn;
       }
 
       calc_boop(rlist, ncount, qn, qlist, nqlist);
     }
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based array
 ------------------------------------------------------------------------- */
 
 double ComputeOrientOrderAtom::memory_usage()
 {
   double bytes = ncol*nmax * sizeof(double);
   bytes += (qmax*(2*qmax+1)+maxneigh*4) * sizeof(double); 
   bytes += (nqlist+maxneigh) * sizeof(int); 
   return bytes;
 }
 
 /* ----------------------------------------------------------------------
    select3 routine from Numerical Recipes (slightly modified)
    find k smallest values in array of length n
    sort auxiliary arrays at same time
 ------------------------------------------------------------------------- */
 
 // Use no-op do while to create single statement
 
 #define SWAP(a,b) do {				\
     tmp = a; a = b; b = tmp;			\
   } while(0)
 
 #define ISWAP(a,b) do {				\
     itmp = a; a = b; b = itmp;			\
   } while(0)
 
 #define SWAP3(a,b) do {				\
     tmp = a[0]; a[0] = b[0]; b[0] = tmp;	\
     tmp = a[1]; a[1] = b[1]; b[1] = tmp;	\
     tmp = a[2]; a[2] = b[2]; b[2] = tmp;	\
   } while(0)
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeOrientOrderAtom::select3(int k, int n, double *arr, int *iarr, double **arr3)
 {
   int i,ir,j,l,mid,ia,itmp;
   double a,tmp,a3[3];
 
   arr--;
   iarr--;
   arr3--;
   l = 1;
   ir = n;
   for (;;) {
     if (ir <= l+1) {
       if (ir == l+1 && arr[ir] < arr[l]) {
         SWAP(arr[l],arr[ir]);
 	ISWAP(iarr[l],iarr[ir]);
         SWAP3(arr3[l],arr3[ir]);
       }
       return;
     } else {
       mid=(l+ir) >> 1;
       SWAP(arr[mid],arr[l+1]);
       ISWAP(iarr[mid],iarr[l+1]);
       SWAP3(arr3[mid],arr3[l+1]);
       if (arr[l] > arr[ir]) {
         SWAP(arr[l],arr[ir]);
         ISWAP(iarr[l],iarr[ir]);
 	SWAP3(arr3[l],arr3[ir]);
       }
       if (arr[l+1] > arr[ir]) {
         SWAP(arr[l+1],arr[ir]);
         ISWAP(iarr[l+1],iarr[ir]);
 	SWAP3(arr3[l+1],arr3[ir]);
       }
       if (arr[l] > arr[l+1]) {
         SWAP(arr[l],arr[l+1]);
         ISWAP(iarr[l],iarr[l+1]);
 	SWAP3(arr3[l],arr3[l+1]);
       }
       i = l+1;
       j = ir;
       a = arr[l+1];
       ia = iarr[l+1];
       a3[0] = arr3[l+1][0];
       a3[1] = arr3[l+1][1];
       a3[2] = arr3[l+1][2];
       for (;;) {
         do i++; while (arr[i] < a);
         do j--; while (arr[j] > a);
         if (j < i) break;
         SWAP(arr[i],arr[j]);
         ISWAP(iarr[i],iarr[j]);
 	SWAP3(arr3[i],arr3[j]);
       }
       arr[l+1] = arr[j];
       arr[j] = a;
       iarr[l+1] = iarr[j];
       iarr[j] = ia;
       arr3[l+1][0] = arr3[j][0];
       arr3[l+1][1] = arr3[j][1];
       arr3[l+1][2] = arr3[j][2];
       arr3[j][0] = a3[0];
       arr3[j][1] = a3[1];
       arr3[j][2] = a3[2];
       if (j >= k) ir = j-1;
       if (j <= k) l = i;
     }
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate the bond orientational order parameters
 ------------------------------------------------------------------------- */
 
 void ComputeOrientOrderAtom::calc_boop(double **rlist, 
 				       int ncount, double qn[], 
 				       int qlist[], int nqlist) {
   for (int iw = 0; iw < nqlist; iw++) {
     int n = qlist[iw];
 
     qn[iw] = 0.0;
     for(int m = 0; m < 2*n+1; m++) {
       qnm_r[iw][m] = 0.0;
       qnm_i[iw][m] = 0.0;
     }
   }
 
   for(int ineigh = 0; ineigh < ncount; ineigh++) {
     const double * const r = rlist[ineigh];
     double rmag = dist(r);
     if(rmag <= MY_EPSILON) {
       return;
     }
 
     double costheta = r[2] / rmag;
     double expphi_r = r[0];
     double expphi_i = r[1];
     double rxymag = sqrt(expphi_r*expphi_r+expphi_i*expphi_i);
     if(rxymag <= MY_EPSILON) {
       expphi_r = 1.0;
       expphi_i = 0.0;
     } else {
       double rxymaginv = 1.0/rxymag;
       expphi_r *= rxymaginv;
       expphi_i *= rxymaginv;
     }
 
     for (int iw = 0; iw < nqlist; iw++) {
       int n = qlist[iw];
 
       qnm_r[iw][n] += polar_prefactor(n, 0, costheta);
       double expphim_r = expphi_r;
       double expphim_i = expphi_i;
       for(int m = 1; m <= +n; m++) {
 	double prefactor = polar_prefactor(n, m, costheta);
 	double c_r = prefactor * expphim_r;
 	double c_i = prefactor * expphim_i;
 	qnm_r[iw][m+n] += c_r;
 	qnm_i[iw][m+n] += c_i;
 	if(m & 1) {
 	  qnm_r[iw][-m+n] -= c_r;
 	  qnm_i[iw][-m+n] += c_i;
 	} else {
 	  qnm_r[iw][-m+n] += c_r;
 	  qnm_i[iw][-m+n] -= c_i;
 	}
 	double tmp_r = expphim_r*expphi_r - expphim_i*expphi_i;
 	double tmp_i = expphim_r*expphi_i + expphim_i*expphi_r;
 	expphim_r = tmp_r;
 	expphim_i = tmp_i;
       }
 
     }
   }
 
   double fac = sqrt(MY_4PI) / ncount;
   for (int iw = 0; iw < nqlist; iw++) {
     int n = qlist[iw];
     double qm_sum = 0.0;
     for(int m = 0; m < 2*n+1; m++) {
       qm_sum += qnm_r[iw][m]*qnm_r[iw][m] + qnm_i[iw][m]*qnm_i[iw][m];
       //      printf("Ylm^2 = %d %d %g\n",n,m,
       //	     qnm_r[iw][m]*qnm_r[iw][m] + qnm_i[iw][m]*qnm_i[iw][m]);
     }
     qn[iw] = fac * sqrt(qm_sum / (2*n+1));
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate scalar distance
 ------------------------------------------------------------------------- */
 
 double ComputeOrientOrderAtom::dist(const double r[]) {
   return sqrt(r[0]*r[0] + r[1]*r[1] + r[2]*r[2]);
 }
 
 /* ----------------------------------------------------------------------
    polar prefactor for spherical harmonic Y_l^m, where 
    Y_l^m (theta, phi) = prefactor(l, m, cos(theta)) * exp(i*m*phi)
 ------------------------------------------------------------------------- */
 
 double ComputeOrientOrderAtom::
 polar_prefactor(int l, int m, double costheta) {
   const int mabs = abs(m);
 
   double prefactor = 1.0;
   for (int i=l-mabs+1; i < l+mabs+1; ++i)
     prefactor *= static_cast<double>(i);
 
   prefactor = sqrt(static_cast<double>(2*l+1)/(MY_4PI*prefactor))
     * associated_legendre(l,mabs,costheta);
 
   if ((m < 0) && (m % 2)) prefactor = -prefactor;
 
   return prefactor;
 }
 
 /* ----------------------------------------------------------------------
    associated legendre polynomial
 ------------------------------------------------------------------------- */
 
 double ComputeOrientOrderAtom::
 associated_legendre(int l, int m, double x) {
   if (l < m) return 0.0;
 
   double p(1.0), pm1(0.0), pm2(0.0);
 
   if (m != 0) {
     const double sqx = sqrt(1.0-x*x);
     for (int i=1; i < m+1; ++i)
       p *= static_cast<double>(2*i-1) * sqx;
   }
 
   for (int i=m+1; i < l+1; ++i) {
     pm2 = pm1;
     pm1 = p;
     p = (static_cast<double>(2*i-1)*x*pm1
          - static_cast<double>(i+m-1)*pm2) / static_cast<double>(i-m);
   }
 
   return p;
 }
 
diff --git a/src/compute_pair.cpp b/src/compute_pair.cpp
index 62661b43e..b00944e1b 100644
--- a/src/compute_pair.cpp
+++ b/src/compute_pair.cpp
@@ -1,119 +1,120 @@
 /* ----------------------------------------------------------------------
    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 <string.h>
 #include "compute_pair.h"
 #include "update.h"
 #include "force.h"
 #include "pair.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 enum{EPAIR,EVDWL,ECOUL};
 
 /* ---------------------------------------------------------------------- */
 
 ComputePair::ComputePair(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  pstyle(NULL), pair(NULL), one(NULL)
 {
   if (narg < 4 || narg > 5) error->all(FLERR,"Illegal compute pair command");
 
   scalar_flag = 1;
   extscalar = 1;
   peflag = 1;
   timeflag = 1;
 
   int n = strlen(arg[3]) + 1;
   if (lmp->suffix) n += strlen(lmp->suffix) + 1;
   pstyle = new char[n];
   strcpy(pstyle,arg[3]);
 
   if (narg == 5) {
     if (strcmp(arg[4],"epair") == 0) evalue = EPAIR;
     if (strcmp(arg[4],"evdwl") == 0) evalue = EVDWL;
     if (strcmp(arg[4],"ecoul") == 0) evalue = ECOUL;
   } else evalue = EPAIR;
 
   // check if pair style with and without suffix exists
 
   pair = force->pair_match(pstyle,1);
   if (!pair && lmp->suffix) {
     strcat(pstyle,"/");
     strcat(pstyle,lmp->suffix);
     pair = force->pair_match(pstyle,1);
   }
 
   if (!pair)
     error->all(FLERR,"Unrecognized pair style in compute pair command");
   npair = pair->nextra;
 
   if (npair) {
     vector_flag = 1;
     size_vector = npair;
     extvector = 1;
     one = new double[npair];
     vector = new double[npair];
   } else one = vector = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputePair::~ComputePair()
 {
   delete [] pstyle;
   delete [] one;
   delete [] vector;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePair::init()
 {
   // recheck for pair style in case it has been deleted
 
   pair = force->pair_match(pstyle,1);
   if (!pair)
     error->all(FLERR,"Unrecognized pair style in compute pair command");
 }
 
 /* ---------------------------------------------------------------------- */
 
 double ComputePair::compute_scalar()
 {
   invoked_scalar = update->ntimestep;
   if (update->eflag_global != invoked_scalar)
     error->all(FLERR,"Energy was not tallied on needed timestep");
 
   double eng;
   if (evalue == EPAIR) eng = pair->eng_vdwl + pair->eng_coul;
   else if (evalue == EVDWL) eng = pair->eng_vdwl;
   else if (evalue == ECOUL) eng = pair->eng_coul;
 
   MPI_Allreduce(&eng,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
   return scalar;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePair::compute_vector()
 {
   invoked_vector = update->ntimestep;
   if (update->eflag_global != invoked_vector)
     error->all(FLERR,"Energy was not tallied on needed timestep");
 
   for (int i = 0; i < npair; i++)
     one[i] = pair->pvector[i];
   MPI_Allreduce(one,vector,npair,MPI_DOUBLE,MPI_SUM,world);
 }
diff --git a/src/compute_pair_local.cpp b/src/compute_pair_local.cpp
index 13dccc578..6ba4b7572 100644
--- a/src/compute_pair_local.cpp
+++ b/src/compute_pair_local.cpp
@@ -1,322 +1,321 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
 #include <string.h>
 #include <stdlib.h>
 #include "compute_pair_local.h"
 #include "atom.h"
 #include "update.h"
 #include "force.h"
 #include "pair.h"
 #include "neighbor.h"
 #include "neigh_request.h"
 #include "neigh_list.h"
 #include "group.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 #define DELTA 10000
 
 enum{DIST,ENG,FORCE,FX,FY,FZ,PN};
 enum{TYPE,RADIUS};
 
 /* ---------------------------------------------------------------------- */
 
 ComputePairLocal::ComputePairLocal(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  pstyle(NULL), pindex(NULL), vector(NULL), array(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute pair/local command");
 
   local_flag = 1;
   nvalues = narg - 3;
   if (nvalues == 1) size_local_cols = 0;
   else size_local_cols = nvalues;
 
   pstyle = new int[nvalues];
   pindex = new int[nvalues];
 
   nvalues = 0;
   int iarg = 3;
   while (iarg < narg) {
     if (strcmp(arg[iarg],"dist") == 0) pstyle[nvalues++] = DIST;
     else if (strcmp(arg[iarg],"eng") == 0) pstyle[nvalues++] = ENG;
     else if (strcmp(arg[iarg],"force") == 0) pstyle[nvalues++] = FORCE;
     else if (strcmp(arg[iarg],"fx") == 0) pstyle[nvalues++] = FX;
     else if (strcmp(arg[iarg],"fy") == 0) pstyle[nvalues++] = FY;
     else if (strcmp(arg[iarg],"fz") == 0) pstyle[nvalues++] = FZ;
     else if (arg[iarg][0] == 'p') {
       int n = atoi(&arg[iarg][1]);
       if (n <= 0) error->all(FLERR,
                              "Invalid keyword in compute pair/local command");
       pstyle[nvalues] = PN;
       pindex[nvalues++] = n-1;
 
     } else break;
 
     iarg++;
   }
 
   // optional args
 
   cutstyle = TYPE;
 
   while (iarg < narg) {
     if (strcmp(arg[iarg],"cutoff") == 0) {
       if (iarg+2 > narg) 
         error->all(FLERR,"Illegal compute pair/local command");
       if (strcmp(arg[iarg+1],"type") == 0) cutstyle = TYPE;
       else if (strcmp(arg[iarg+1],"radius") == 0) cutstyle = RADIUS;
       else error->all(FLERR,"Illegal compute pair/local command");
       iarg += 2;
     } else error->all(FLERR,"Illegal compute pair/local command");
   }
 
   // error check
 
   if (cutstyle == RADIUS && !atom->radius_flag)
     error->all(FLERR,"Compute pair/local requires atom attribute radius");
 
   // set singleflag if need to call pair->single()
 
   singleflag = 0;
   for (int i = 0; i < nvalues; i++)
     if (pstyle[i] != DIST) singleflag = 1;
 
   nmax = 0;
-  vector = NULL;
-  array = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputePairLocal::~ComputePairLocal()
 {
   memory->destroy(vector);
   memory->destroy(array);
   delete [] pstyle;
   delete [] pindex;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePairLocal::init()
 {
   if (singleflag && force->pair == NULL)
     error->all(FLERR,"No pair style is defined for compute pair/local");
   if (singleflag && force->pair->single_enable == 0)
     error->all(FLERR,"Pair style does not support compute pair/local");
 
   for (int i = 0; i < nvalues; i++)
     if (pstyle[i] == PN && pindex[i] >= force->pair->single_extra)
       error->all(FLERR,"Pair style does not have extra field"
                  " requested by compute pair/local");
 
   // need an occasional half neighbor list
 
   int irequest = neighbor->request(this,instance_me);
   neighbor->requests[irequest]->pair = 0;
   neighbor->requests[irequest]->compute = 1;
   neighbor->requests[irequest]->occasional = 1;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePairLocal::init_list(int id, NeighList *ptr)
 {
   list = ptr;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePairLocal::compute_local()
 {
   invoked_local = update->ntimestep;
 
   // count local entries and compute pair info
 
   ncount = compute_pairs(0);
   if (ncount > nmax) reallocate(ncount);
   size_local_rows = ncount;
   compute_pairs(1);
 }
 
 /* ----------------------------------------------------------------------
    count pairs and compute pair info on this proc
    only count pair once if newton_pair is off
    both atom I,J must be in group
    if flag is set, compute requested info about pair
 ------------------------------------------------------------------------- */
 
 int ComputePairLocal::compute_pairs(int flag)
 {
   int i,j,m,n,ii,jj,inum,jnum,itype,jtype;
   tagint itag,jtag;
   double xtmp,ytmp,ztmp,delx,dely,delz;
   double rsq,radsum,eng,fpair,factor_coul,factor_lj;
   int *ilist,*jlist,*numneigh,**firstneigh;
   double *ptr;
 
   double **x = atom->x;
   double *radius = atom->radius;
   tagint *tag = atom->tag;
   int *type = atom->type;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
   double *special_coul = force->special_coul;
   double *special_lj = force->special_lj;
   int newton_pair = force->newton_pair;
 
   // invoke half neighbor list (will copy or build if necessary)
 
   if (flag == 0) neighbor->build_one(list);
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
   // loop over neighbors of my atoms
   // skip if I or J are not in group
   // for newton = 0 and J = ghost atom,
   //   need to insure I,J pair is only output by one proc
   //   use same itag,jtag logic as in Neighbor::neigh_half_nsq()
   // for flag = 0, just count pair interactions within force cutoff
   // for flag = 1, calculate requested output fields
 
   Pair *pair = force->pair;
   double **cutsq = force->pair->cutsq;
 
   m = 0;
   for (ii = 0; ii < inum; ii++) {
     i = ilist[ii];
     if (!(mask[i] & groupbit)) continue;
 
     xtmp = x[i][0];
     ytmp = x[i][1];
     ztmp = x[i][2];
     itag = tag[i];
     itype = type[i];
     jlist = firstneigh[i];
     jnum = numneigh[i];
 
     for (jj = 0; jj < jnum; jj++) {
       j = jlist[jj];
       factor_lj = special_lj[sbmask(j)];
       factor_coul = special_coul[sbmask(j)];
       j &= NEIGHMASK;
 
       if (!(mask[j] & groupbit)) continue;
 
       // itag = jtag is possible for long cutoffs that include images of self
 
       if (newton_pair == 0 && j >= nlocal) {
         jtag = tag[j];
         if (itag > jtag) {
           if ((itag+jtag) % 2 == 0) continue;
         } else if (itag < jtag) {
           if ((itag+jtag) % 2 == 1) continue;
         } else {
           if (x[j][2] < ztmp) continue;
           if (x[j][2] == ztmp) {
             if (x[j][1] < ytmp) continue;
             if (x[j][1] == ytmp && x[j][0] < xtmp) continue;
           }
         }
       }
 
       delx = xtmp - x[j][0];
       dely = ytmp - x[j][1];
       delz = ztmp - x[j][2];
       rsq = delx*delx + dely*dely + delz*delz;
       jtype = type[j];
 
       if (cutstyle == TYPE) {
         if (rsq >= cutsq[itype][jtype]) continue;
       } else {
         radsum = radius[i] + radius[j];
         if (rsq >= radsum*radsum) continue;
       }
 
       if (flag) {
         if (singleflag)
           eng = pair->single(i,j,itype,jtype,rsq,factor_coul,factor_lj,fpair);
         else eng = fpair = 0.0;
 
         if (nvalues == 1) ptr = &vector[m];
         else ptr = array[m];
 
         for (n = 0; n < nvalues; n++) {
           switch (pstyle[n]) {
           case DIST:
             ptr[n] = sqrt(rsq);
             break;
           case ENG:
             ptr[n] = eng;
             break;
           case FORCE:
             ptr[n] = sqrt(rsq)*fpair;
             break;
           case FX:
             ptr[n] = delx*fpair;
             break;
           case FY:
             ptr[n] = dely*fpair;
             break;
           case FZ:
             ptr[n] = delz*fpair;
             break;
           case PN:
             ptr[n] = pair->svector[pindex[n]];
             break;
           }
         }
       }
 
       m++;
     }
   }
 
   return m;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePairLocal::reallocate(int n)
 {
   // grow vector or array and indices array
 
   while (nmax < n) nmax += DELTA;
 
   if (nvalues == 1) {
     memory->destroy(vector);
     memory->create(vector,nmax,"pair/local:vector");
     vector_local = vector;
   } else {
     memory->destroy(array);
     memory->create(array,nmax,nvalues,"pair/local:array");
     array_local = array;
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputePairLocal::memory_usage()
 {
   double bytes = nmax*nvalues * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_pe_atom.cpp b/src/compute_pe_atom.cpp
index c04edb09f..f83c91b94 100755
--- a/src/compute_pe_atom.cpp
+++ b/src/compute_pe_atom.cpp
@@ -1,206 +1,206 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_pe_atom.h"
 #include "atom.h"
 #include "update.h"
 #include "comm.h"
 #include "force.h"
 #include "pair.h"
 #include "bond.h"
 #include "angle.h"
 #include "dihedral.h"
 #include "improper.h"
 #include "kspace.h"
 #include "modify.h"
 #include "fix.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputePEAtom::ComputePEAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  energy(NULL)
 {
   if (narg < 3) error->all(FLERR,"Illegal compute pe/atom command");
 
   peratom_flag = 1;
   size_peratom_cols = 0;
   peatomflag = 1;
   timeflag = 1;
   comm_reverse = 1;
 
   if (narg == 3) {
     pairflag = 1;
     bondflag = angleflag = dihedralflag = improperflag = 1;
     kspaceflag = 1;
     fixflag = 1;
   } else {
     pairflag = 0;
     bondflag = angleflag = dihedralflag = improperflag = 0;
     kspaceflag = 0;
     fixflag = 0;
     int iarg = 3;
     while (iarg < narg) {
       if (strcmp(arg[iarg],"pair") == 0) pairflag = 1;
       else if (strcmp(arg[iarg],"bond") == 0) bondflag = 1;
       else if (strcmp(arg[iarg],"angle") == 0) angleflag = 1;
       else if (strcmp(arg[iarg],"dihedral") == 0) dihedralflag = 1;
       else if (strcmp(arg[iarg],"improper") == 0) improperflag = 1;
       else if (strcmp(arg[iarg],"kspace") == 0) kspaceflag = 1;
       else if (strcmp(arg[iarg],"fix") == 0) fixflag = 1;
       else error->all(FLERR,"Illegal compute pe/atom command");
       iarg++;
     }
   }
 
   nmax = 0;
-  energy = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputePEAtom::~ComputePEAtom()
 {
   memory->destroy(energy);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePEAtom::compute_peratom()
 {
   int i;
 
   invoked_peratom = update->ntimestep;
   if (update->eflag_atom != invoked_peratom)
     error->all(FLERR,"Per-atom energy was not tallied on needed timestep");
 
   // grow local energy array if necessary
   // needs to be atom->nmax in length
 
   if (atom->nmax > nmax) {
     memory->destroy(energy);
     nmax = atom->nmax;
     memory->create(energy,nmax,"pe/atom:energy");
     vector_atom = energy;
   }
 
   // npair includes ghosts if either newton flag is set
   //   b/c some bonds/dihedrals call pair::ev_tally with pairwise info
   // nbond includes ghosts if newton_bond is set
   // ntotal includes ghosts if either newton flag is set
   // KSpace includes ghosts if tip4pflag is set
 
   int nlocal = atom->nlocal;
   int npair = nlocal;
   int nbond = nlocal;
   int ntotal = nlocal;
   int nkspace = nlocal;
   if (force->newton) npair += atom->nghost;
   if (force->newton_bond) nbond += atom->nghost;
   if (force->newton) ntotal += atom->nghost;
   if (force->kspace && force->kspace->tip4pflag) nkspace += atom->nghost;
 
   // clear local energy array
 
   for (i = 0; i < ntotal; i++) energy[i] = 0.0;
 
   // add in per-atom contributions from each force
 
   if (pairflag && force->pair) {
     double *eatom = force->pair->eatom;
     for (i = 0; i < npair; i++) energy[i] += eatom[i];
   }
 
   if (bondflag && force->bond) {
     double *eatom = force->bond->eatom;
     for (i = 0; i < nbond; i++) energy[i] += eatom[i];
   }
 
   if (angleflag && force->angle) {
     double *eatom = force->angle->eatom;
     for (i = 0; i < nbond; i++) energy[i] += eatom[i];
   }
 
   if (dihedralflag && force->dihedral) {
     double *eatom = force->dihedral->eatom;
     for (i = 0; i < nbond; i++) energy[i] += eatom[i];
   }
 
   if (improperflag && force->improper) {
     double *eatom = force->improper->eatom;
     for (i = 0; i < nbond; i++) energy[i] += eatom[i];
   }
 
   if (kspaceflag && force->kspace) {
     double *eatom = force->kspace->eatom;
     for (i = 0; i < nkspace; i++) energy[i] += eatom[i];
   }
 
   // add in per-atom contributions from relevant fixes
   // always only for owned atoms, not ghost
 
   if (fixflag && modify->n_thermo_energy_atom) 
     modify->thermo_energy_atom(nlocal,energy);
 
   // communicate ghost energy between neighbor procs
 
   if (force->newton || (force->kspace && force->kspace->tip4pflag))
     comm->reverse_comm_compute(this);
 
   // zero energy of atoms not in group
   // only do this after comm since ghost contributions must be included
 
   int *mask = atom->mask;
 
   for (i = 0; i < nlocal; i++)
     if (!(mask[i] & groupbit)) energy[i] = 0.0;
 }
 
 /* ---------------------------------------------------------------------- */
 
 int ComputePEAtom::pack_reverse_comm(int n, int first, double *buf)
 {
   int i,m,last;
 
   m = 0;
   last = first + n;
   for (i = first; i < last; i++) buf[m++] = energy[i];
   return m;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePEAtom::unpack_reverse_comm(int n, int *list, double *buf)
 {
   int i,j,m;
 
   m = 0;
   for (i = 0; i < n; i++) {
     j = list[i];
     energy[j] += buf[m++];
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based array
 ------------------------------------------------------------------------- */
 
 double ComputePEAtom::memory_usage()
 {
   double bytes = nmax * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_pressure.cpp b/src/compute_pressure.cpp
index ca493e46f..fde19a277 100644
--- a/src/compute_pressure.cpp
+++ b/src/compute_pressure.cpp
@@ -1,302 +1,303 @@
 /* ----------------------------------------------------------------------
    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 <string.h>
 #include <stdlib.h>
 #include "compute_pressure.h"
 #include "atom.h"
 #include "update.h"
 #include "domain.h"
 #include "modify.h"
 #include "fix.h"
 #include "force.h"
 #include "pair.h"
 #include "bond.h"
 #include "angle.h"
 #include "dihedral.h"
 #include "improper.h"
 #include "kspace.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputePressure::ComputePressure(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  vptr(NULL), id_temp(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute pressure command");
   if (igroup) error->all(FLERR,"Compute pressure must use group all");
 
   scalar_flag = vector_flag = 1;
   size_vector = 6;
   extscalar = 0;
   extvector = 0;
   pressflag = 1;
   timeflag = 1;
 
   // store temperature ID used by pressure computation
   // insure it is valid for temperature computation
 
   if (strcmp(arg[3],"NULL") == 0) id_temp = NULL;
   else {
     int n = strlen(arg[3]) + 1;
     id_temp = new char[n];
     strcpy(id_temp,arg[3]);
 
     int icompute = modify->find_compute(id_temp);
     if (icompute < 0)
       error->all(FLERR,"Could not find compute pressure temperature ID");
     if (modify->compute[icompute]->tempflag == 0)
       error->all(FLERR,"Compute pressure temperature ID does not "
                  "compute temperature");
   }
 
   // process optional args
 
   if (narg == 4) {
     keflag = 1;
     pairflag = 1;
     bondflag = angleflag = dihedralflag = improperflag = 1;
     kspaceflag = fixflag = 1;
   } else {
     keflag = 0;
     pairflag = 0;
     bondflag = angleflag = dihedralflag = improperflag = 0;
     kspaceflag = fixflag = 0;
     int iarg = 4;
     while (iarg < narg) {
       if (strcmp(arg[iarg],"ke") == 0) keflag = 1;
       else if (strcmp(arg[iarg],"pair") == 0) pairflag = 1;
       else if (strcmp(arg[iarg],"bond") == 0) bondflag = 1;
       else if (strcmp(arg[iarg],"angle") == 0) angleflag = 1;
       else if (strcmp(arg[iarg],"dihedral") == 0) dihedralflag = 1;
       else if (strcmp(arg[iarg],"improper") == 0) improperflag = 1;
       else if (strcmp(arg[iarg],"kspace") == 0) kspaceflag = 1;
       else if (strcmp(arg[iarg],"fix") == 0) fixflag = 1;
       else if (strcmp(arg[iarg],"virial") == 0) {
         pairflag = 1;
         bondflag = angleflag = dihedralflag = improperflag = 1;
         kspaceflag = fixflag = 1;
       } else error->all(FLERR,"Illegal compute pressure command");
       iarg++;
     }
   }
 
   // error check
 
   if (keflag && id_temp == NULL)
     error->all(FLERR,"Compute pressure requires temperature ID "
 	       "to include kinetic energy");
 
   vector = new double[6];
   nvirial = 0;
   vptr = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputePressure::~ComputePressure()
 {
   delete [] id_temp;
   delete [] vector;
   delete [] vptr;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePressure::init()
 {
   boltz = force->boltz;
   nktv2p = force->nktv2p;
   dimension = domain->dimension;
 
   // set temperature compute, must be done in init()
   // fixes could have changed or compute_modify could have changed it
 
   if (keflag) {
     int icompute = modify->find_compute(id_temp);
     if (icompute < 0)
       error->all(FLERR,"Could not find compute pressure temperature ID");
     temperature = modify->compute[icompute];
   }
 
   // detect contributions to virial
   // vptr points to all virial[6] contributions
 
   delete [] vptr;
   nvirial = 0;
   vptr = NULL;
 
   if (pairflag && force->pair) nvirial++;
   if (bondflag && atom->molecular && force->bond) nvirial++;
   if (angleflag && atom->molecular && force->angle) nvirial++;
   if (dihedralflag && atom->molecular && force->dihedral) nvirial++;
   if (improperflag && atom->molecular && force->improper) nvirial++;
   if (fixflag)
     for (int i = 0; i < modify->nfix; i++)
       if (modify->fix[i]->virial_flag) nvirial++;
 
   if (nvirial) {
     vptr = new double*[nvirial];
     nvirial = 0;
     if (pairflag && force->pair) vptr[nvirial++] = force->pair->virial;
     if (bondflag && force->bond) vptr[nvirial++] = force->bond->virial;
     if (angleflag && force->angle) vptr[nvirial++] = force->angle->virial;
     if (dihedralflag && force->dihedral)
       vptr[nvirial++] = force->dihedral->virial;
     if (improperflag && force->improper)
       vptr[nvirial++] = force->improper->virial;
     if (fixflag)
       for (int i = 0; i < modify->nfix; i++)
         if (modify->fix[i]->virial_flag)
           vptr[nvirial++] = modify->fix[i]->virial;
   }
 
   // flag Kspace contribution separately, since not summed across procs
 
   if (kspaceflag && force->kspace) kspace_virial = force->kspace->virial;
   else kspace_virial = NULL;
 }
 
 /* ----------------------------------------------------------------------
    compute total pressure, averaged over Pxx, Pyy, Pzz
 ------------------------------------------------------------------------- */
 
 double ComputePressure::compute_scalar()
 {
   invoked_scalar = update->ntimestep;
   if (update->vflag_global != invoked_scalar)
     error->all(FLERR,"Virial was not tallied on needed timestep");
 
   // invoke temperature if it hasn't been already
 
   double t;
   if (keflag) {
     if (temperature->invoked_scalar != update->ntimestep)
       t = temperature->compute_scalar();
     else t = temperature->scalar;
   }
 
   if (dimension == 3) {
     inv_volume = 1.0 / (domain->xprd * domain->yprd * domain->zprd);
     virial_compute(3,3);
     if (keflag)
       scalar = (temperature->dof * boltz * t +
                 virial[0] + virial[1] + virial[2]) / 3.0 * inv_volume * nktv2p;
     else
       scalar = (virial[0] + virial[1] + virial[2]) / 3.0 * inv_volume * nktv2p;
   } else {
     inv_volume = 1.0 / (domain->xprd * domain->yprd);
     virial_compute(2,2);
     if (keflag)
       scalar = (temperature->dof * boltz * t +
                 virial[0] + virial[1]) / 2.0 * inv_volume * nktv2p;
     else
       scalar = (virial[0] + virial[1]) / 2.0 * inv_volume * nktv2p;
   }
 
   return scalar;
 }
 
 /* ----------------------------------------------------------------------
    compute pressure tensor
    assume KE tensor has already been computed
 ------------------------------------------------------------------------- */
 
 void ComputePressure::compute_vector()
 {
   invoked_vector = update->ntimestep;
   if (update->vflag_global != invoked_vector)
     error->all(FLERR,"Virial was not tallied on needed timestep");
 
   if (force->kspace && kspace_virial && force->kspace->scalar_pressure_flag)
     error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' for "
 	       "tensor components with kspace_style msm");
 
   // invoke temperature if it hasn't been already
 
   double *ke_tensor;
   if (keflag) {
     if (temperature->invoked_vector != update->ntimestep)
       temperature->compute_vector();
     ke_tensor = temperature->vector;
   }
 
   if (dimension == 3) {
     inv_volume = 1.0 / (domain->xprd * domain->yprd * domain->zprd);
     virial_compute(6,3);
     if (keflag) {
       for (int i = 0; i < 6; i++)
         vector[i] = (ke_tensor[i] + virial[i]) * inv_volume * nktv2p;
     } else
       for (int i = 0; i < 6; i++)
         vector[i] = virial[i] * inv_volume * nktv2p;
   } else {
     inv_volume = 1.0 / (domain->xprd * domain->yprd);
     virial_compute(4,2);
     if (keflag) {
       vector[0] = (ke_tensor[0] + virial[0]) * inv_volume * nktv2p;
       vector[1] = (ke_tensor[1] + virial[1]) * inv_volume * nktv2p;
       vector[3] = (ke_tensor[3] + virial[3]) * inv_volume * nktv2p;
       vector[2] = vector[4] = vector[5] = 0.0;
     } else {
       vector[0] = virial[0] * inv_volume * nktv2p;
       vector[1] = virial[1] * inv_volume * nktv2p;
       vector[3] = virial[3] * inv_volume * nktv2p;
       vector[2] = vector[4] = vector[5] = 0.0;
     }
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePressure::virial_compute(int n, int ndiag)
 {
   int i,j;
   double v[6],*vcomponent;
 
   for (i = 0; i < n; i++) v[i] = 0.0;
 
   // sum contributions to virial from forces and fixes
 
   for (j = 0; j < nvirial; j++) {
     vcomponent = vptr[j];
     for (i = 0; i < n; i++) v[i] += vcomponent[i];
   }
 
   // sum virial across procs
 
   MPI_Allreduce(v,virial,n,MPI_DOUBLE,MPI_SUM,world);
 
   // KSpace virial contribution is already summed across procs
 
   if (kspace_virial)
     for (i = 0; i < n; i++) virial[i] += kspace_virial[i];
 
   // LJ long-range tail correction, only if pair contributions are included
 
   if (force->pair && pairflag && force->pair->tail_flag)
     for (i = 0; i < ndiag; i++) virial[i] += force->pair->ptail * inv_volume;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePressure::reset_extra_compute_fix(const char *id_new)
 {
   delete [] id_temp;
   int n = strlen(id_new) + 1;
   id_temp = new char[n];
   strcpy(id_temp,id_new);
 }
diff --git a/src/compute_property_atom.cpp b/src/compute_property_atom.cpp
index c9575dba5..2ce10fdb6 100644
--- a/src/compute_property_atom.cpp
+++ b/src/compute_property_atom.cpp
@@ -1,1689 +1,1688 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <math.h>
 #include <string.h>
 #include "compute_property_atom.h"
 #include "math_extra.h"
 #include "atom.h"
 #include "atom_vec.h"
 #include "atom_vec_ellipsoid.h"
 #include "atom_vec_line.h"
 #include "atom_vec_tri.h"
 #include "atom_vec_body.h"
 #include "update.h"
 #include "domain.h"
 #include "comm.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputePropertyAtom::ComputePropertyAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  index(NULL), vector(NULL), array(NULL), pack_choice(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute property/atom command");
 
   peratom_flag = 1;
   nvalues = narg - 3;
   if (nvalues == 1) size_peratom_cols = 0;
   else size_peratom_cols = nvalues;
 
   // parse input values
   // customize a new keyword by adding to if statement
 
   pack_choice = new FnPtrPack[nvalues];
   index = new int[nvalues];
 
   int i;
   for (int iarg = 3; iarg < narg; iarg++) {
     i = iarg-3;
 
     if (strcmp(arg[iarg],"id") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_id;
     } else if (strcmp(arg[iarg],"mol") == 0) {
       if (!atom->molecule_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_molecule;
     } else if (strcmp(arg[iarg],"proc") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_proc;
     } else if (strcmp(arg[iarg],"type") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_type;
     } else if (strcmp(arg[iarg],"mass") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_mass;
 
     } else if (strcmp(arg[iarg],"x") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_x;
     } else if (strcmp(arg[iarg],"y") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_y;
     } else if (strcmp(arg[iarg],"z") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_z;
     } else if (strcmp(arg[iarg],"xs") == 0) {
       if (domain->triclinic)
         pack_choice[i] = &ComputePropertyAtom::pack_xs_triclinic;
       else pack_choice[i] = &ComputePropertyAtom::pack_xs;
     } else if (strcmp(arg[iarg],"ys") == 0) {
       if (domain->triclinic)
         pack_choice[i] = &ComputePropertyAtom::pack_ys_triclinic;
       else pack_choice[i] = &ComputePropertyAtom::pack_ys;
     } else if (strcmp(arg[iarg],"zs") == 0) {
       if (domain->triclinic)
         pack_choice[i] = &ComputePropertyAtom::pack_zs_triclinic;
       else pack_choice[i] = &ComputePropertyAtom::pack_zs;
     } else if (strcmp(arg[iarg],"xu") == 0) {
       if (domain->triclinic)
         pack_choice[i] = &ComputePropertyAtom::pack_xu_triclinic;
       else pack_choice[i] = &ComputePropertyAtom::pack_xu;
     } else if (strcmp(arg[iarg],"yu") == 0) {
       if (domain->triclinic)
         pack_choice[i] = &ComputePropertyAtom::pack_yu_triclinic;
       else pack_choice[i] = &ComputePropertyAtom::pack_yu;
     } else if (strcmp(arg[iarg],"zu") == 0) {
       if (domain->triclinic)
         pack_choice[i] = &ComputePropertyAtom::pack_zu_triclinic;
       else pack_choice[i] = &ComputePropertyAtom::pack_zu;
     } else if (strcmp(arg[iarg],"ix") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_ix;
     } else if (strcmp(arg[iarg],"iy") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_iy;
     } else if (strcmp(arg[iarg],"iz") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_iz;
 
     } else if (strcmp(arg[iarg],"vx") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_vx;
     } else if (strcmp(arg[iarg],"vy") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_vy;
     } else if (strcmp(arg[iarg],"vz") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_vz;
     } else if (strcmp(arg[iarg],"fx") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_fx;
     } else if (strcmp(arg[iarg],"fy") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_fy;
     } else if (strcmp(arg[iarg],"fz") == 0) {
       pack_choice[i] = &ComputePropertyAtom::pack_fz;
 
     } else if (strcmp(arg[iarg],"q") == 0) {
       if (!atom->q_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_q;
     } else if (strcmp(arg[iarg],"mux") == 0) {
       if (!atom->mu_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_mux;
     } else if (strcmp(arg[iarg],"muy") == 0) {
       if (!atom->mu_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_muy;
     } else if (strcmp(arg[iarg],"muz") == 0) {
       if (!atom->mu_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_muz;
     } else if (strcmp(arg[iarg],"mu") == 0) {
       if (!atom->mu_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_mu;
 
     } else if (strcmp(arg[iarg],"radius") == 0) {
       if (!atom->radius_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_radius;
     } else if (strcmp(arg[iarg],"diameter") == 0) {
       if (!atom->radius_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_diameter;
     } else if (strcmp(arg[iarg],"omegax") == 0) {
       if (!atom->omega_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_omegax;
     } else if (strcmp(arg[iarg],"omegay") == 0) {
       if (!atom->omega_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_omegay;
     } else if (strcmp(arg[iarg],"omegaz") == 0) {
       if (!atom->omega_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_omegaz;
     } else if (strcmp(arg[iarg],"angmomx") == 0) {
       if (!atom->angmom_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_angmomx;
     } else if (strcmp(arg[iarg],"angmomy") == 0) {
       if (!atom->angmom_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_angmomy;
     } else if (strcmp(arg[iarg],"angmomz") == 0) {
       if (!atom->angmom_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_angmomz;
 
     } else if (strcmp(arg[iarg],"shapex") == 0) {
       avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid");
       if (!avec_ellipsoid) error->all(FLERR,"Compute property/atom for "
                                       "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_shapex;
     } else if (strcmp(arg[iarg],"shapey") == 0) {
       avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid");
       if (!avec_ellipsoid) error->all(FLERR,"Compute property/atom for "
                                       "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_shapey;
     } else if (strcmp(arg[iarg],"shapez") == 0) {
       avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid");
       if (!avec_ellipsoid) error->all(FLERR,"Compute property/atom for "
                                       "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_shapez;
 
     } else if (strcmp(arg[iarg],"quatw") == 0) {
       avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid");
       avec_body = (AtomVecBody *) atom->style_match("body");
       if (!avec_ellipsoid && !avec_body)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_quatw;
     } else if (strcmp(arg[iarg],"quati") == 0) {
       avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid");
       avec_body = (AtomVecBody *) atom->style_match("body");
       if (!avec_ellipsoid && !avec_body)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_quati;
     } else if (strcmp(arg[iarg],"quatj") == 0) {
       avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid");
       avec_body = (AtomVecBody *) atom->style_match("body");
       if (!avec_ellipsoid && !avec_body)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_quatj;
     } else if (strcmp(arg[iarg],"quatk") == 0) {
       avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid");
       avec_body = (AtomVecBody *) atom->style_match("body");
       if (!avec_ellipsoid && !avec_body)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_quatk;
 
     } else if (strcmp(arg[iarg],"tqx") == 0) {
       if (!atom->torque_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_tqx;
     } else if (strcmp(arg[iarg],"tqy") == 0) {
       if (!atom->torque_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_tqy;
     } else if (strcmp(arg[iarg],"tqz") == 0) {
       if (!atom->torque_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_tqz;
 
     } else if (strcmp(arg[iarg],"end1x") == 0) {
       avec_line = (AtomVecLine *) atom->style_match("line");
       if (!avec_line) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_end1x;
     } else if (strcmp(arg[iarg],"end1y") == 0) {
       avec_line = (AtomVecLine *) atom->style_match("line");
       if (!avec_line) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_end1y;
     } else if (strcmp(arg[iarg],"end1z") == 0) {
       avec_line = (AtomVecLine *) atom->style_match("line");
       if (!avec_line) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_end1z;
     } else if (strcmp(arg[iarg],"end2x") == 0) {
       avec_line = (AtomVecLine *) atom->style_match("line");
       if (!avec_line) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_end2x;
     } else if (strcmp(arg[iarg],"end2y") == 0) {
       avec_line = (AtomVecLine *) atom->style_match("line");
       if (!avec_line) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_end2y;
     } else if (strcmp(arg[iarg],"end2z") == 0) {
       avec_line = (AtomVecLine *) atom->style_match("line");
       if (!avec_line) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_end2z;
 
     } else if (strcmp(arg[iarg],"corner1x") == 0) {
       avec_tri = (AtomVecTri *) atom->style_match("tri");
       if (!avec_tri) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_corner1x;
     } else if (strcmp(arg[iarg],"corner1y") == 0) {
       avec_tri = (AtomVecTri *) atom->style_match("tri");
       if (!avec_tri) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_corner1y;
     } else if (strcmp(arg[iarg],"corner1z") == 0) {
       avec_tri = (AtomVecTri *) atom->style_match("tri");
       if (!avec_tri) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_corner1z;
     } else if (strcmp(arg[iarg],"corner2x") == 0) {
       avec_tri = (AtomVecTri *) atom->style_match("tri");
       if (!avec_tri) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_corner2x;
     } else if (strcmp(arg[iarg],"corner2y") == 0) {
       avec_tri = (AtomVecTri *) atom->style_match("tri");
       if (!avec_tri) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_corner2y;
     } else if (strcmp(arg[iarg],"corner2z") == 0) {
       avec_tri = (AtomVecTri *) atom->style_match("tri");
       if (!avec_tri) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_corner2z;
     } else if (strcmp(arg[iarg],"corner3x") == 0) {
       avec_tri = (AtomVecTri *) atom->style_match("tri");
       if (!avec_tri) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_corner3x;
     } else if (strcmp(arg[iarg],"corner3y") == 0) {
       avec_tri = (AtomVecTri *) atom->style_match("tri");
       if (!avec_tri) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_corner3y;
     } else if (strcmp(arg[iarg],"corner3z") == 0) {
       avec_tri = (AtomVecTri *) atom->style_match("tri");
       if (!avec_tri) error->all(FLERR,"Compute property/atom for "
                                  "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_corner3z;
 
     } else if (strcmp(arg[iarg],"nbonds") == 0) {
       if (!atom->molecule_flag)
         error->all(FLERR,"Compute property/atom for "
                    "atom property that isn't allocated");
       pack_choice[i] = &ComputePropertyAtom::pack_nbonds;
 
     } else if (strstr(arg[iarg],"i_") == arg[iarg]) {
       int flag;
       index[i] = atom->find_custom(&arg[iarg][2],flag);
       if (index[i] < 0 || flag != 0)
         error->all(FLERR,"Compute property/atom integer "
                    "vector does not exist");
       pack_choice[i] = &ComputePropertyAtom::pack_iname;
     } else if (strstr(arg[iarg],"d_") == arg[iarg]) {
       int flag;
       index[i] = atom->find_custom(&arg[iarg][2],flag);
       if (index[i] < 0 || flag != 1)
         error->all(FLERR,"Compute property/atom floating point "
                    "vector does not exist");
       pack_choice[i] = &ComputePropertyAtom::pack_dname;
 
     // check if atom style recognizes keyword
 
     } else {
       index[i] = atom->avec->property_atom(arg[iarg]);
       if (index[i] < 0)
         error->all(FLERR,"Invalid keyword in compute property/atom command");
       pack_choice[i] = &ComputePropertyAtom::pack_property_atom;
     }
   }
 
   nmax = 0;
-  vector = NULL;
-  array = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputePropertyAtom::~ComputePropertyAtom()
 {
   delete [] pack_choice;
   delete [] index;
   memory->destroy(vector);
   memory->destroy(array);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::init()
 {
   avec_ellipsoid = (AtomVecEllipsoid *) atom->style_match("ellipsoid");
   avec_line = (AtomVecLine *) atom->style_match("line");
   avec_tri = (AtomVecTri *) atom->style_match("tri");
   avec_body = (AtomVecBody *) atom->style_match("body");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::compute_peratom()
 {
   invoked_peratom = update->ntimestep;
 
   // grow vector or array if necessary
 
   if (atom->nmax > nmax) {
     nmax = atom->nmax;
     if (nvalues == 1) {
       memory->destroy(vector);
       memory->create(vector,nmax,"property/atom:vector");
       vector_atom = vector;
     } else {
       memory->destroy(array);
       memory->create(array,nmax,nvalues,"property/atom:array");
       array_atom = array;
     }
   }
 
   // fill vector or array with per-atom values
 
   if (nvalues == 1) {
     buf = vector;
     (this->*pack_choice[0])(0);
   } else {
     if (nmax) buf = &array[0][0];
     else buf = NULL;
     for (int n = 0; n < nvalues; n++)
       (this->*pack_choice[n])(n);
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based array
 ------------------------------------------------------------------------- */
 
 double ComputePropertyAtom::memory_usage()
 {
   double bytes = nmax*nvalues * sizeof(double);
   return bytes;
 }
 
 /* ----------------------------------------------------------------------
    one method for every keyword compute property/atom can output
    the atom property is packed into buf starting at n with stride nvalues
    customize a new keyword by adding a method
 ------------------------------------------------------------------------- */
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_id(int n)
 {
   tagint *tag = atom->tag;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = tag[i];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_molecule(int n)
 {
   tagint *molecule = atom->molecule;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = molecule[i];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_proc(int n)
 {
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
   int me = comm->me;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = me;
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_type(int n)
 {
   int *type = atom->type;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = type[i];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_mass(int n)
 {
   int *type = atom->type;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   if (rmass) {
     for (int i = 0; i < nlocal; i++) {
       if (mask[i] & groupbit) buf[n] = rmass[i];
       else buf[n] = 0.0;
       n += nvalues;
     }
   } else {
     for (int i = 0; i < nlocal; i++) {
       if (mask[i] & groupbit) buf[n] = mass[type[i]];
       else buf[n] = 0.0;
       n += nvalues;
     }
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_x(int n)
 {
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = x[i][0];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_y(int n)
 {
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = x[i][1];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_z(int n)
 {
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = x[i][2];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_xs(int n)
 {
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double boxxlo = domain->boxlo[0];
   double invxprd = 1.0/domain->xprd;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = (x[i][0] - boxxlo) * invxprd;
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_ys(int n)
 {
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double boxylo = domain->boxlo[1];
   double invyprd = 1.0/domain->yprd;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = (x[i][1] - boxylo) * invyprd;
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_zs(int n)
 {
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double boxzlo = domain->boxlo[2];
   double invzprd = 1.0/domain->zprd;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = (x[i][2] - boxzlo) * invzprd;
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_xs_triclinic(int n)
 {
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double *boxlo = domain->boxlo;
   double *h_inv = domain->h_inv;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit)
       buf[n] = h_inv[0]*(x[i][0]-boxlo[0]) +
         h_inv[5]*(x[i][1]-boxlo[1]) + h_inv[4]*(x[i][2]-boxlo[2]);
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_ys_triclinic(int n)
 {
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double *boxlo = domain->boxlo;
   double *h_inv = domain->h_inv;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit)
       buf[n] = h_inv[1]*(x[i][1]-boxlo[1]) + h_inv[3]*(x[i][2]-boxlo[2]);
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_zs_triclinic(int n)
 {
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double *boxlo = domain->boxlo;
   double *h_inv = domain->h_inv;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit)
       buf[n] = h_inv[2]*(x[i][2]-boxlo[2]);
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_xu(int n)
 {
   double **x = atom->x;
   imageint *image = atom->image;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double xprd = domain->xprd;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit)
       buf[n] = x[i][0] + ((image[i] & IMGMASK) - IMGMAX) * xprd;
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_yu(int n)
 {
   double **x = atom->x;
   imageint *image = atom->image;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double yprd = domain->yprd;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit)
       buf[n] = x[i][1] + ((image[i] >> IMGBITS & IMGMASK) - IMGMAX) * yprd;
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_zu(int n)
 {
   double **x = atom->x;
   imageint *image = atom->image;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double zprd = domain->zprd;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit)
       buf[n] = x[i][2] + ((image[i] >> IMG2BITS) - IMGMAX) * zprd;
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_xu_triclinic(int n)
 {
   double **x = atom->x;
   imageint *image = atom->image;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double *h = domain->h;
   int xbox,ybox,zbox;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) {
       xbox = (image[i] & IMGMASK) - IMGMAX;
       ybox = (image[i] >> IMGBITS & IMGMASK) - IMGMAX;
       zbox = (image[i] >> IMG2BITS) - IMGMAX;
       buf[n] = x[i][0] + h[0]*xbox + h[5]*ybox + h[4]*zbox;
     } else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_yu_triclinic(int n)
 {
   double **x = atom->x;
   imageint *image = atom->image;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double *h = domain->h;
   int ybox,zbox;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) {
       ybox = (image[i] >> IMGBITS & IMGMASK) - IMGMAX;
       zbox = (image[i] >> IMG2BITS) - IMGMAX;
       buf[n] = x[i][1] + h[1]*ybox + h[3]*zbox;
     } else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_zu_triclinic(int n)
 {
   double **x = atom->x;
   imageint *image = atom->image;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double *h = domain->h;
   int zbox;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) {
       zbox = (image[i] >> IMG2BITS) - IMGMAX;
       buf[n] = x[i][2] + h[2]*zbox;
     } else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_ix(int n)
 {
   imageint *image = atom->image;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = (image[i] & IMGMASK) - IMGMAX;
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_iy(int n)
 {
   imageint *image = atom->image;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = (image[i] >> IMGBITS & IMGMASK) - IMGMAX;
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_iz(int n)
 {
   imageint *image = atom->image;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = (image[i] >> IMG2BITS) - IMGMAX;
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_vx(int n)
 {
   double **v = atom->v;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = v[i][0];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_vy(int n)
 {
   double **v = atom->v;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = v[i][1];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_vz(int n)
 {
   double **v = atom->v;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = v[i][2];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_fx(int n)
 {
   double **f = atom->f;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = f[i][0];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_fy(int n)
 {
   double **f = atom->f;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = f[i][1];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_fz(int n)
 {
   double **f = atom->f;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = f[i][2];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_q(int n)
 {
   double *q = atom->q;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = q[i];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_mux(int n)
 {
   double **mu = atom->mu;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = mu[i][0];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_muy(int n)
 {
   double **mu = atom->mu;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = mu[i][1];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_muz(int n)
 {
   double **mu = atom->mu;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = mu[i][2];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_mu(int n)
 {
   double **mu = atom->mu;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = mu[i][3];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_radius(int n)
 {
   double *radius = atom->radius;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = radius[i];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_diameter(int n)
 {
   double *radius = atom->radius;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = 2.0*radius[i];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_omegax(int n)
 {
   double **omega = atom->omega;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = omega[i][0];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_omegay(int n)
 {
   double **omega = atom->omega;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = omega[i][1];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_omegaz(int n)
 {
   double **omega = atom->omega;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = omega[i][2];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_angmomx(int n)
 {
   double **angmom = atom->angmom;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = angmom[i][0];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_angmomy(int n)
 {
   double **angmom = atom->angmom;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = angmom[i][1];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_angmomz(int n)
 {
   double **angmom = atom->angmom;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = angmom[i][2];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_shapex(int n)
 {
   AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus;
   int *ellipsoid = atom->ellipsoid;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && ellipsoid[i] >= 0)
       buf[n] = bonus[ellipsoid[i]].shape[0];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_shapey(int n)
 {
   AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus;
   int *ellipsoid = atom->ellipsoid;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && ellipsoid[i] >= 0)
       buf[n] = bonus[ellipsoid[i]].shape[1];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_shapez(int n)
 {
   AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus;
   int *ellipsoid = atom->ellipsoid;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && ellipsoid[i] >= 0)
       buf[n] = bonus[ellipsoid[i]].shape[2];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_quatw(int n)
 {
   if (avec_ellipsoid) {
     AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus;
     int *ellipsoid = atom->ellipsoid;
     int *mask = atom->mask;
     int nlocal = atom->nlocal;
 
     for (int i = 0; i < nlocal; i++) {
       if ((mask[i] & groupbit) && ellipsoid[i] >= 0)
         buf[n] = bonus[ellipsoid[i]].quat[0];
       else buf[n] = 0.0;
       n += nvalues;
     }
 
   } else {
     AtomVecBody::Bonus *bonus = avec_body->bonus;
     int *body = atom->body;
     int *mask = atom->mask;
     int nlocal = atom->nlocal;
 
     for (int i = 0; i < nlocal; i++) {
       if ((mask[i] & groupbit) && body[i] >= 0)
         buf[n] = bonus[body[i]].quat[0];
       else buf[n] = 0.0;
       n += nvalues;
     }
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_quati(int n)
 {
   if (avec_ellipsoid) {
     AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus;
     int *ellipsoid = atom->ellipsoid;
     int *mask = atom->mask;
     int nlocal = atom->nlocal;
 
     for (int i = 0; i < nlocal; i++) {
       if ((mask[i] & groupbit) && ellipsoid[i] >= 0)
         buf[n] = bonus[ellipsoid[i]].quat[1];
       else buf[n] = 0.0;
       n += nvalues;
     }
 
   } else {
     AtomVecBody::Bonus *bonus = avec_body->bonus;
     int *body = atom->body;
     int *mask = atom->mask;
     int nlocal = atom->nlocal;
 
     for (int i = 0; i < nlocal; i++) {
       if ((mask[i] & groupbit) && body[i] >= 0)
         buf[n] = bonus[body[i]].quat[1];
       else buf[n] = 0.0;
       n += nvalues;
     }
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_quatj(int n)
 {
   if (avec_ellipsoid) {
     AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus;
     int *ellipsoid = atom->ellipsoid;
     int *mask = atom->mask;
     int nlocal = atom->nlocal;
 
     for (int i = 0; i < nlocal; i++) {
       if ((mask[i] & groupbit) && ellipsoid[i] >= 0)
         buf[n] = bonus[ellipsoid[i]].quat[2];
       else buf[n] = 0.0;
       n += nvalues;
     }
 
   } else {
     AtomVecBody::Bonus *bonus = avec_body->bonus;
     int *body = atom->body;
     int *mask = atom->mask;
     int nlocal = atom->nlocal;
 
     for (int i = 0; i < nlocal; i++) {
       if ((mask[i] & groupbit) && body[i] >= 0)
         buf[n] = bonus[body[i]].quat[2];
       else buf[n] = 0.0;
       n += nvalues;
     }
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_quatk(int n)
 {
   if (avec_ellipsoid) {
     AtomVecEllipsoid::Bonus *bonus = avec_ellipsoid->bonus;
     int *ellipsoid = atom->ellipsoid;
     int *mask = atom->mask;
     int nlocal = atom->nlocal;
 
     for (int i = 0; i < nlocal; i++) {
       if ((mask[i] & groupbit) && ellipsoid[i] >= 0)
         buf[n] = bonus[ellipsoid[i]].quat[3];
       else buf[n] = 0.0;
       n += nvalues;
     }
 
   } else {
     AtomVecBody::Bonus *bonus = avec_body->bonus;
     int *body = atom->body;
     int *mask = atom->mask;
     int nlocal = atom->nlocal;
 
     for (int i = 0; i < nlocal; i++) {
       if ((mask[i] & groupbit) && body[i] >= 0)
         buf[n] = bonus[body[i]].quat[3];
       else buf[n] = 0.0;
       n += nvalues;
     }
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_tqx(int n)
 {
   double **torque = atom->torque;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = torque[i][0];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_tqy(int n)
 {
   double **torque = atom->torque;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = torque[i][1];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_tqz(int n)
 {
   double **torque = atom->torque;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = torque[i][2];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_end1x(int n)
 {
   AtomVecLine::Bonus *bonus = avec_line->bonus;
   int *line = atom->line;
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && line[i] >= 0)
       buf[n] = x[i][0] - 0.5*bonus[line[i]].length*cos(bonus[line[i]].theta);
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_end1y(int n)
 {
   AtomVecLine::Bonus *bonus = avec_line->bonus;
   int *line = atom->line;
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && line[i] >= 0)
       buf[n] = x[i][1] - 0.5*bonus[line[i]].length*sin(bonus[line[i]].theta);
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_end1z(int n)
 {
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = x[i][2];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_end2x(int n)
 {
   AtomVecLine::Bonus *bonus = avec_line->bonus;
   int *line = atom->line;
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && line[i] >= 0)
       buf[n] = x[i][0] + 0.5*bonus[line[i]].length*cos(bonus[line[i]].theta);
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_end2y(int n)
 {
   AtomVecLine::Bonus *bonus = avec_line->bonus;
   int *line = atom->line;
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && line[i] >= 0)
       buf[n] = x[i][1] + 0.5*bonus[line[i]].length*sin(bonus[line[i]].theta);
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_end2z(int n)
 {
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = x[i][2];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_corner1x(int n)
 {
   AtomVecTri::Bonus *bonus = avec_tri->bonus;
   int *tri = atom->tri;
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double p[3][3],c[3];
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && tri[i] >= 0) {
       MathExtra::quat_to_mat(bonus[tri[i]].quat,p);
       MathExtra::matvec(p,bonus[tri[i]].c1,c);
       buf[n] = x[i][0] + c[0];
     } else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_corner1y(int n)
 {
   AtomVecTri::Bonus *bonus = avec_tri->bonus;
   int *tri = atom->tri;
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double p[3][3],c[3];
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && tri[i] >= 0) {
       MathExtra::quat_to_mat(bonus[tri[i]].quat,p);
       MathExtra::matvec(p,bonus[tri[i]].c1,c);
       buf[n] = x[i][1] + c[1];
     } else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_corner1z(int n)
 {
   AtomVecTri::Bonus *bonus = avec_tri->bonus;
   int *tri = atom->tri;
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double p[3][3],c[3];
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && tri[i] >= 0) {
       MathExtra::quat_to_mat(bonus[tri[i]].quat,p);
       MathExtra::matvec(p,bonus[tri[i]].c1,c);
       buf[n] = x[i][2] + c[2];
     } else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_corner2x(int n)
 {
   AtomVecTri::Bonus *bonus = avec_tri->bonus;
   int *tri = atom->tri;
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double p[3][3],c[3];
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && tri[i] >= 0) {
       MathExtra::quat_to_mat(bonus[tri[i]].quat,p);
       MathExtra::matvec(p,bonus[tri[i]].c2,c);
       buf[n] = x[i][0] + c[0];
     } else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_corner2y(int n)
 {
   AtomVecTri::Bonus *bonus = avec_tri->bonus;
   int *tri = atom->tri;
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double p[3][3],c[3];
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && tri[i] >= 0) {
       MathExtra::quat_to_mat(bonus[tri[i]].quat,p);
       MathExtra::matvec(p,bonus[tri[i]].c2,c);
       buf[n] = x[i][1] + c[1];
     } else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_corner2z(int n)
 {
   AtomVecTri::Bonus *bonus = avec_tri->bonus;
   int *tri = atom->tri;
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double p[3][3],c[3];
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && tri[i] >= 0) {
       MathExtra::quat_to_mat(bonus[tri[i]].quat,p);
       MathExtra::matvec(p,bonus[tri[i]].c2,c);
       buf[n] = x[i][2] + c[2];
     } else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_corner3x(int n)
 {
   AtomVecTri::Bonus *bonus = avec_tri->bonus;
   int *tri = atom->tri;
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double p[3][3],c[3];
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && tri[i] >= 0) {
       MathExtra::quat_to_mat(bonus[tri[i]].quat,p);
       MathExtra::matvec(p,bonus[tri[i]].c3,c);
       buf[n] = x[i][0] + c[0];
     } else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_corner3y(int n)
 {
   AtomVecTri::Bonus *bonus = avec_tri->bonus;
   int *tri = atom->tri;
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double p[3][3],c[3];
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && tri[i] >= 0) {
       MathExtra::quat_to_mat(bonus[tri[i]].quat,p);
       MathExtra::matvec(p,bonus[tri[i]].c3,c);
       buf[n] = x[i][1] + c[1];
     } else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_corner3z(int n)
 {
   AtomVecTri::Bonus *bonus = avec_tri->bonus;
   int *tri = atom->tri;
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double p[3][3],c[3];
   for (int i = 0; i < nlocal; i++) {
     if ((mask[i] & groupbit) && tri[i] >= 0) {
       MathExtra::quat_to_mat(bonus[tri[i]].quat,p);
       MathExtra::matvec(p,bonus[tri[i]].c3,c);
       buf[n] = x[i][2] + c[2];
     } else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_nbonds(int n)
 {
   int *num_bond = atom->num_bond;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = num_bond[i];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_iname(int n)
 {
   int *ivector = atom->ivector[index[n]];
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = ivector[i];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_dname(int n)
 {
   double *dvector = atom->dvector[index[n]];
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) buf[n] = dvector[i];
     else buf[n] = 0.0;
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyAtom::pack_property_atom(int n)
 {
   atom->avec->pack_property_atom(index[n],&buf[n],nvalues,groupbit);
 }
diff --git a/src/compute_property_chunk.cpp b/src/compute_property_chunk.cpp
index 956774891..1461a83ad 100644
--- a/src/compute_property_chunk.cpp
+++ b/src/compute_property_chunk.cpp
@@ -1,338 +1,336 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_property_chunk.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "compute_chunk_atom.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputePropertyChunk::ComputePropertyChunk(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  idchunk(NULL), count_one(NULL), count_all(NULL)
 {
   if (narg < 5) error->all(FLERR,"Illegal compute property/chunk command");
 
   // ID of compute chunk/atom
 
   int n = strlen(arg[3]) + 1;
   idchunk = new char[n];
   strcpy(idchunk,arg[3]);
 
   init();
 
   // parse values
 
   nvalues = narg - 4;
   pack_choice = new FnPtrPack[nvalues];
   countflag = 0;
 
   int i;
   for (int iarg = 4; iarg < narg; iarg++) {
     i = iarg-4;
 
     if (strcmp(arg[iarg],"count") == 0) {
       pack_choice[i] = &ComputePropertyChunk::pack_count;
       countflag = 1;
     } else if (strcmp(arg[iarg],"id") == 0) {
       if (!cchunk->compress)
 	error->all(FLERR,"Compute chunk/atom stores no IDs for "
                    "compute property/chunk");
       pack_choice[i] = &ComputePropertyChunk::pack_id;
     } else if (strcmp(arg[iarg],"coord1") == 0) {
       if (cchunk->ncoord < 1)
 	error->all(FLERR,"Compute chunk/atom stores no coord1 for "
                    "compute property/chunk");
       pack_choice[i] = &ComputePropertyChunk::pack_coord1;
     } else if (strcmp(arg[iarg],"coord2") == 0) {
       if (cchunk->ncoord < 2)
 	error->all(FLERR,"Compute chunk/atom stores no coord2 for "
                    "compute property/chunk");
       pack_choice[i] = &ComputePropertyChunk::pack_coord2;
     } else if (strcmp(arg[iarg],"coord3") == 0) {
       if (cchunk->ncoord < 3)
 	error->all(FLERR,"Compute chunk/atom stores no coord3 for "
                    "compute property/chunk");
       pack_choice[i] = &ComputePropertyChunk::pack_coord3;
     } else error->all(FLERR,
                     "Invalid keyword in compute property/chunk command");
   }
 
   // initialization
 
   nchunk = 1;
   maxchunk = 0;
-  vector = NULL;
-  array = NULL;
-  count_one = count_all = NULL;
   allocate();
 
   if (nvalues == 1) {
     vector_flag = 1;
     size_vector = 0;
     size_vector_variable = 1;
     extvector = 0;
   } else {
     array_flag = 1;
     size_array_cols = nvalues;
     size_array_rows = 0;
     size_array_rows_variable = 1;
     extarray = 0;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputePropertyChunk::~ComputePropertyChunk()
 {
   delete [] idchunk;
   delete [] pack_choice;
   memory->destroy(vector);
   memory->destroy(array);
   memory->destroy(count_one);
   memory->destroy(count_all);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyChunk::init()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute < 0)
     error->all(FLERR,"Chunk/atom compute does not exist for "
                "compute property/chunk");
   cchunk = (ComputeChunkAtom *) modify->compute[icompute];
   if (strcmp(cchunk->style,"chunk/atom") != 0)
     error->all(FLERR,"Compute property/chunk does not use chunk/atom compute");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyChunk::compute_vector()
 {
   invoked_vector = update->ntimestep;
 
   // compute chunk/atom assigns atoms to chunk IDs
   // if need count, extract ichunk index vector from compute
   // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
 
   nchunk = cchunk->setup_chunks();
   if (nchunk > maxchunk) allocate();
   if (nvalues == 1) size_vector = nchunk;
   else size_array_rows = nchunk;
 
   if (countflag) {
     cchunk->compute_ichunk();
     ichunk = cchunk->ichunk;
   }
 
   // fill vector
 
   buf = vector;
   (this->*pack_choice[0])(0);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyChunk::compute_array()
 {
   invoked_array = update->ntimestep;
 
   // compute chunk/atom assigns atoms to chunk IDs
   // if need count, extract ichunk index vector from compute
   // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
 
   nchunk = cchunk->setup_chunks();
   if (nchunk > maxchunk) allocate();
   if (nvalues == 1) size_vector = nchunk;
   else size_array_rows = nchunk;
 
   if (countflag) {
     cchunk->compute_ichunk();
     ichunk = cchunk->ichunk;
   }
 
   // fill array
 
   if (array) buf = &array[0][0];
   for (int n = 0; n < nvalues; n++)
     (this->*pack_choice[n])(n);
 }
 
 /* ----------------------------------------------------------------------
    lock methods: called by fix ave/time
    these methods insure vector/array size is locked for Nfreq epoch
      by passing lock info along to compute chunk/atom
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    increment lock counter
 ------------------------------------------------------------------------- */
 
 void ComputePropertyChunk::lock_enable()
 {
   cchunk->lockcount++;
 }
 
 /* ----------------------------------------------------------------------
    decrement lock counter in compute chunk/atom, it if still exists
 ------------------------------------------------------------------------- */
 
 void ComputePropertyChunk::lock_disable()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute >= 0) {
     cchunk = (ComputeChunkAtom *) modify->compute[icompute];
     cchunk->lockcount--;
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate and return # of chunks = length of vector/array
 ------------------------------------------------------------------------- */
 
 int ComputePropertyChunk::lock_length()
 {
   nchunk = cchunk->setup_chunks();
   return nchunk;
 }
 
 /* ----------------------------------------------------------------------
    set the lock from startstep to stopstep
 ------------------------------------------------------------------------- */
 
 void ComputePropertyChunk::lock(Fix *fixptr, bigint startstep, bigint stopstep)
 {
   cchunk->lock(fixptr,startstep,stopstep);
 }
 
 /* ----------------------------------------------------------------------
    unset the lock
 ------------------------------------------------------------------------- */
 
 void ComputePropertyChunk::unlock(Fix *fixptr)
 {
   cchunk->unlock(fixptr);
 }
 
 /* ----------------------------------------------------------------------
    free and reallocate per-chunk arrays
 ------------------------------------------------------------------------- */
 
 void ComputePropertyChunk::allocate()
 {
   memory->destroy(vector);
   memory->destroy(array);
   memory->destroy(count_one);
   memory->destroy(count_all);
   maxchunk = nchunk;
   if (nvalues == 1) memory->create(vector,maxchunk,"property/chunk:vector");
   else memory->create(array,maxchunk,nvalues,"property/chunk:array");
   if (countflag) {
     memory->create(count_one,maxchunk,"property/chunk:count_one");
     memory->create(count_all,maxchunk,"property/chunk:count_all");
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputePropertyChunk::memory_usage()
 {
   double bytes = (bigint) nchunk * nvalues * sizeof(double);
   if (countflag) bytes += (bigint) nchunk * 2 * sizeof(int);
   return bytes;
 }
 
 /* ----------------------------------------------------------------------
    one method for every keyword compute property/chunk can output
    the property is packed into buf starting at n with stride nvalues
    customize a new keyword by adding a method
 ------------------------------------------------------------------------- */
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyChunk::pack_count(int n)
 {
   int index;
 
   for (int m = 0; m < nchunk; m++) count_one[m] = 0;
 
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
   for (int i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       count_one[index]++;
     }
   }
 
   MPI_Allreduce(count_one,count_all,nchunk,MPI_INT,MPI_SUM,world);
 
   for (int m = 0; m < nchunk; m++) {
     buf[n] = count_all[m];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyChunk::pack_id(int n)
 {
   int *origID = cchunk->chunkID;
   for (int m = 0; m < nchunk; m++) {
     buf[n] = origID[m];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyChunk::pack_coord1(int n)
 {
   double **coord = cchunk->coord;
   for (int m = 0; m < nchunk; m++) {
     buf[n] = coord[m][0];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyChunk::pack_coord2(int n)
 {
   double **coord = cchunk->coord;
   for (int m = 0; m < nchunk; m++) {
     buf[n] = coord[m][1];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyChunk::pack_coord3(int n)
 {
   double **coord = cchunk->coord;
   for (int m = 0; m < nchunk; m++) {
     buf[n] = coord[m][2];
     n += nvalues;
   }
 }
diff --git a/src/compute_property_local.cpp b/src/compute_property_local.cpp
index 60460f271..b9472cb45 100644
--- a/src/compute_property_local.cpp
+++ b/src/compute_property_local.cpp
@@ -1,967 +1,965 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_property_local.h"
 #include "atom.h"
 #include "atom_vec.h"
 #include "update.h"
 #include "force.h"
 #include "pair.h"
 #include "neighbor.h"
 #include "neigh_request.h"
 #include "neigh_list.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 enum{NONE,NEIGH,PAIR,BOND,ANGLE,DIHEDRAL,IMPROPER};
 enum{TYPE,RADIUS};
 
 #define DELTA 10000
 
 /* ---------------------------------------------------------------------- */
 
 ComputePropertyLocal::ComputePropertyLocal(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  vector(NULL), array(NULL), indices(NULL), pack_choice(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute property/local command");
 
   local_flag = 1;
   nvalues = narg - 3;
   pack_choice = new FnPtrPack[nvalues];
 
   kindflag = NONE;
 
   int i;
   nvalues = 0;
   int iarg = 3;
   while (iarg < narg) {
     i = iarg-3;
 
     if (strcmp(arg[iarg],"natom1") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_patom1;
       if (kindflag != NONE && kindflag != NEIGH)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = NEIGH;
     } else if (strcmp(arg[iarg],"natom2") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_patom2;
       if (kindflag != NONE && kindflag != NEIGH)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = NEIGH;
     } else if (strcmp(arg[iarg],"ntype1") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_ptype1;
       if (kindflag != NONE && kindflag != NEIGH)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = NEIGH;
     } else if (strcmp(arg[iarg],"ntype2") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_ptype2;
       if (kindflag != NONE && kindflag != NEIGH)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = NEIGH;
 
     } else if (strcmp(arg[iarg],"patom1") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_patom1;
       if (kindflag != NONE && kindflag != PAIR)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = PAIR;
     } else if (strcmp(arg[iarg],"patom2") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_patom2;
       if (kindflag != NONE && kindflag != PAIR)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = PAIR;
     } else if (strcmp(arg[iarg],"ptype1") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_ptype1;
       if (kindflag != NONE && kindflag != PAIR)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = PAIR;
     } else if (strcmp(arg[iarg],"ptype2") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_ptype2;
       if (kindflag != NONE && kindflag != PAIR)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = PAIR;
 
     } else if (strcmp(arg[iarg],"batom1") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_batom1;
       if (kindflag != NONE && kindflag != BOND)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = BOND;
     } else if (strcmp(arg[iarg],"batom2") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_batom2;
       if (kindflag != NONE && kindflag != BOND)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = BOND;
     } else if (strcmp(arg[iarg],"btype") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_btype;
       if (kindflag != NONE && kindflag != BOND)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = BOND;
 
     } else if (strcmp(arg[iarg],"aatom1") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_aatom1;
       if (kindflag != NONE && kindflag != ANGLE)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = ANGLE;
     } else if (strcmp(arg[iarg],"aatom2") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_aatom2;
       if (kindflag != NONE && kindflag != ANGLE)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = ANGLE;
     } else if (strcmp(arg[iarg],"aatom3") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_aatom3;
       if (kindflag != NONE && kindflag != ANGLE)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = ANGLE;
     } else if (strcmp(arg[iarg],"atype") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_atype;
       if (kindflag != NONE && kindflag != ANGLE)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = ANGLE;
 
     } else if (strcmp(arg[iarg],"datom1") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_datom1;
       if (kindflag != NONE && kindflag != DIHEDRAL)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = DIHEDRAL;
     } else if (strcmp(arg[iarg],"datom2") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_datom2;
       if (kindflag != NONE && kindflag != DIHEDRAL)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = DIHEDRAL;
     } else if (strcmp(arg[iarg],"datom3") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_datom3;
       if (kindflag != NONE && kindflag != DIHEDRAL)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = DIHEDRAL;
     } else if (strcmp(arg[iarg],"datom4") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_datom4;
       if (kindflag != NONE && kindflag != DIHEDRAL)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = DIHEDRAL;
     } else if (strcmp(arg[iarg],"dtype") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_dtype;
       if (kindflag != NONE && kindflag != DIHEDRAL)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = DIHEDRAL;
 
     } else if (strcmp(arg[iarg],"iatom1") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_iatom1;
       if (kindflag != NONE && kindflag != IMPROPER)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = IMPROPER;
     } else if (strcmp(arg[iarg],"iatom2") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_iatom2;
       if (kindflag != NONE && kindflag != IMPROPER)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = IMPROPER;
     } else if (strcmp(arg[iarg],"iatom3") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_iatom3;
       if (kindflag != NONE && kindflag != IMPROPER)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = IMPROPER;
     } else if (strcmp(arg[iarg],"iatom4") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_iatom4;
       if (kindflag != NONE && kindflag != IMPROPER)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = IMPROPER;
     } else if (strcmp(arg[iarg],"itype") == 0) {
       pack_choice[i] = &ComputePropertyLocal::pack_itype;
       if (kindflag != NONE && kindflag != IMPROPER)
         error->all(FLERR,
                    "Compute property/local cannot use these inputs together");
       kindflag = IMPROPER;
 
     } else break;
 
     nvalues++;
     iarg++;
   }
 
   if (nvalues == 1) size_local_cols = 0;
   else size_local_cols = nvalues;
 
   // optional args
 
   cutstyle = TYPE;
 
   while (iarg < narg) {
     if (strcmp(arg[iarg],"cutoff") == 0) {
       if (iarg+2 > narg) 
         error->all(FLERR,"Illegal compute property/local command");
       if (strcmp(arg[iarg+1],"type") == 0) cutstyle = TYPE;
       else if (strcmp(arg[iarg+1],"radius") == 0) cutstyle = RADIUS;
       else error->all(FLERR,"Illegal compute property/local command");
       iarg += 2;
     } else error->all(FLERR,"Illegal compute property/local command");
   }
 
   // error check
 
   if (atom->molecular == 2 && (kindflag == BOND || kindflag == ANGLE ||
                                kindflag == DIHEDRAL || kindflag == IMPROPER))
     error->all(FLERR,"Compute property/local does not (yet) work "
                "with atom_style template");
 
   if (kindflag == BOND && atom->avec->bonds_allow == 0)
     error->all(FLERR,
                "Compute property/local for property that isn't allocated");
   if (kindflag == ANGLE && atom->avec->angles_allow == 0)
     error->all(FLERR,
                "Compute property/local for property that isn't allocated");
   if (kindflag == DIHEDRAL && atom->avec->dihedrals_allow == 0)
     error->all(FLERR,
                "Compute property/local for property that isn't allocated");
   if (kindflag == IMPROPER && atom->avec->impropers_allow == 0)
     error->all(FLERR,
                "Compute property/local for property that isn't allocated");
   if (cutstyle == RADIUS && !atom->radius_flag)
     error->all(FLERR,"Compute property/local requires atom attribute radius");
 
   nmax = 0;
-  vector = NULL;
-  array = NULL;
-  indices = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputePropertyLocal::~ComputePropertyLocal()
 {
   delete [] pack_choice;
   memory->destroy(vector);
   memory->destroy(array);
   memory->destroy(indices);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::init()
 {
   if (kindflag == NEIGH || kindflag == PAIR) {
     if (force->pair == NULL)
       error->all(FLERR,"No pair style is defined for compute property/local");
     if (force->pair->single_enable == 0)
       error->all(FLERR,"Pair style does not support compute property/local");
   }
 
   // for NEIGH/PAIR need an occasional half neighbor list
 
   if (kindflag == NEIGH || kindflag == PAIR) {
     int irequest = neighbor->request(this,instance_me);
     neighbor->requests[irequest]->pair = 0;
     neighbor->requests[irequest]->compute = 1;
     neighbor->requests[irequest]->occasional = 1;
   }
 
   // do initial memory allocation so that memory_usage() is correct
   // cannot be done yet for NEIGH/PAIR, since neigh list does not exist
 
   if (kindflag == NEIGH) ncount = 0;
   else if (kindflag == PAIR) ncount = 0;
   else if (kindflag == BOND) ncount = count_bonds(0);
   else if (kindflag == ANGLE) ncount = count_angles(0);
   else if (kindflag == DIHEDRAL) ncount = count_dihedrals(0);
   else if (kindflag == IMPROPER) ncount = count_impropers(0);
 
   if (ncount > nmax) reallocate(ncount);
   size_local_rows = ncount;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::init_list(int id, NeighList *ptr)
 {
   list = ptr;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::compute_local()
 {
   invoked_local = update->ntimestep;
 
   // count local entries and generate list of indices
 
   if (kindflag == NEIGH) ncount = count_pairs(0,0);
   else if (kindflag == PAIR) ncount = count_pairs(0,1);
   else if (kindflag == BOND) ncount = count_bonds(0);
   else if (kindflag == ANGLE) ncount = count_angles(0);
   else if (kindflag == DIHEDRAL) ncount = count_dihedrals(0);
   else if (kindflag == IMPROPER) ncount = count_impropers(0);
 
   if (ncount > nmax) reallocate(ncount);
   size_local_rows = ncount;
 
   if (kindflag == NEIGH) ncount = count_pairs(1,0);
   else if (kindflag == PAIR) ncount = count_pairs(1,1);
   else if (kindflag == BOND) ncount = count_bonds(1);
   else if (kindflag == ANGLE) ncount = count_angles(1);
   else if (kindflag == DIHEDRAL) ncount = count_dihedrals(1);
   else if (kindflag == IMPROPER) ncount = count_impropers(1);
 
   // fill vector or array with local values
 
   if (nvalues == 1) {
     buf = vector;
     (this->*pack_choice[0])(0);
   } else {
     if (array) buf = &array[0][0];
     for (int n = 0; n < nvalues; n++)
       (this->*pack_choice[n])(n);
   }
 }
 
 /* ----------------------------------------------------------------------
    count pairs and compute pair info on this proc
    only count pair once if newton_pair is off
    both atom I,J must be in group
    if allflag is set, compute requested info about pair
    if forceflag = 1, pair must be within force cutoff, else neighbor cutoff
 ------------------------------------------------------------------------- */
 
 int ComputePropertyLocal::count_pairs(int allflag, int forceflag)
 {
   int i,j,m,ii,jj,inum,jnum,itype,jtype;
   tagint itag,jtag;
   double xtmp,ytmp,ztmp,delx,dely,delz,rsq,radsum;
   int *ilist,*jlist,*numneigh,**firstneigh;
 
   double **x = atom->x;
   double *radius = atom->radius;
   tagint *tag = atom->tag;
   int *type = atom->type;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
   int newton_pair = force->newton_pair;
 
   // invoke half neighbor list (will copy or build if necessary)
 
   if (allflag == 0) neighbor->build_one(list);
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
   // loop over neighbors of my atoms
   // skip if I or J are not in group
   // for newton = 0 and J = ghost atom,
   //   need to insure I,J pair is only output by one proc
   //   use same itag,jtag logic as in Neighbor::neigh_half_nsq()
 
   double **cutsq = force->pair->cutsq;
 
   m = 0;
   for (ii = 0; ii < inum; ii++) {
     i = ilist[ii];
     if (!(mask[i] & groupbit)) continue;
 
     xtmp = x[i][0];
     ytmp = x[i][1];
     ztmp = x[i][2];
     itag = tag[i];
     itype = type[i];
     jlist = firstneigh[i];
     jnum = numneigh[i];
 
     for (jj = 0; jj < jnum; jj++) {
       j = jlist[jj];
       j &= NEIGHMASK;
 
       if (!(mask[j] & groupbit)) continue;
 
       // itag = jtag is possible for long cutoffs that include images of self
 
       if (newton_pair == 0 && j >= nlocal) {
         jtag = tag[j];
         if (itag > jtag) {
           if ((itag+jtag) % 2 == 0) continue;
         } else if (itag < jtag) {
           if ((itag+jtag) % 2 == 1) continue;
         } else {
           if (x[j][2] < ztmp) continue;
           if (x[j][2] == ztmp) {
             if (x[j][1] < ytmp) continue;
             if (x[j][1] == ytmp && x[j][0] < xtmp) continue;
           }
         }
       }
 
       delx = xtmp - x[j][0];
       dely = ytmp - x[j][1];
       delz = ztmp - x[j][2];
       rsq = delx*delx + dely*dely + delz*delz;
       jtype = type[j];
       if (forceflag) {
         if (cutstyle == TYPE) {
           if (rsq >= cutsq[itype][jtype]) continue;
         } else {
           radsum = radius[i] + radius[j];
           if (rsq >= radsum*radsum) continue;
         }
       }
 
       if (allflag) {
         indices[m][0] = i;
         indices[m][1] = j;
       }
       m++;
     }
   }
 
   return m;
 }
 
 /* ----------------------------------------------------------------------
    count bonds on this proc
    only count bond once if newton_bond is off
    all atoms in interaction must be in group
    all atoms in interaction must be known to proc
    if bond is deleted (type = 0), do not count
    if bond is turned off (type < 0), still count
 ------------------------------------------------------------------------- */
 
 int ComputePropertyLocal::count_bonds(int flag)
 {
   int i,atom1,atom2;
 
   int *num_bond = atom->num_bond;
   tagint **bond_atom = atom->bond_atom;
   int **bond_type = atom->bond_type;
   tagint *tag = atom->tag;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
   int newton_bond = force->newton_bond;
 
   int m = 0;
   for (atom1 = 0; atom1 < nlocal; atom1++) {
     if (!(mask[atom1] & groupbit)) continue;
     for (i = 0; i < num_bond[atom1]; i++) {
       atom2 = atom->map(bond_atom[atom1][i]);
       if (atom2 < 0 || !(mask[atom2] & groupbit)) continue;
       if (newton_bond == 0 && tag[atom1] > tag[atom2]) continue;
       if (bond_type[atom1][i] == 0) continue;
 
       if (flag) {
         indices[m][0] = atom1;
         indices[m][1] = i;
       }
       m++;
     }
   }
 
   return m;
 }
 
 /* ----------------------------------------------------------------------
    count angles on this proc
    only count if 2nd atom is the one storing the angle
    all atoms in interaction must be in group
    all atoms in interaction must be known to proc
    if angle is deleted (type = 0), do not count
    if angle is turned off (type < 0), still count
 ------------------------------------------------------------------------- */
 
 int ComputePropertyLocal::count_angles(int flag)
 {
   int i,atom1,atom2,atom3;
 
   int *num_angle = atom->num_angle;
   tagint **angle_atom1 = atom->angle_atom1;
   tagint **angle_atom2 = atom->angle_atom2;
   tagint **angle_atom3 = atom->angle_atom3;
   int **angle_type = atom->angle_type;
   tagint *tag = atom->tag;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   int m = 0;
   for (atom2 = 0; atom2 < nlocal; atom2++) {
     if (!(mask[atom2] & groupbit)) continue;
     for (i = 0; i < num_angle[atom2]; i++) {
       if (tag[atom2] != angle_atom2[atom2][i]) continue;
       atom1 = atom->map(angle_atom1[atom2][i]);
       if (atom1 < 0 || !(mask[atom1] & groupbit)) continue;
       atom3 = atom->map(angle_atom3[atom2][i]);
       if (atom3 < 0 || !(mask[atom3] & groupbit)) continue;
       if (angle_type[atom2][i] == 0) continue;
 
       if (flag) {
         indices[m][0] = atom2;
         indices[m][1] = i;
       }
       m++;
     }
   }
 
   return m;
 }
 
 /* ----------------------------------------------------------------------
    count dihedrals on this proc
    only count if 2nd atom is the one storing the dihedral
    all atoms in interaction must be in group
    all atoms in interaction must be known to proc
 ------------------------------------------------------------------------- */
 
 int ComputePropertyLocal::count_dihedrals(int flag)
 {
   int i,atom1,atom2,atom3,atom4;
 
   int *num_dihedral = atom->num_dihedral;
   tagint **dihedral_atom1 = atom->dihedral_atom1;
   tagint **dihedral_atom2 = atom->dihedral_atom2;
   tagint **dihedral_atom3 = atom->dihedral_atom3;
   tagint **dihedral_atom4 = atom->dihedral_atom4;
   tagint *tag = atom->tag;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   int m = 0;
   for (atom2 = 0; atom2 < nlocal; atom2++) {
     if (!(mask[atom2] & groupbit)) continue;
     for (i = 0; i < num_dihedral[atom2]; i++) {
       if (tag[atom2] != dihedral_atom2[atom2][i]) continue;
       atom1 = atom->map(dihedral_atom1[atom2][i]);
       if (atom1 < 0 || !(mask[atom1] & groupbit)) continue;
       atom3 = atom->map(dihedral_atom3[atom2][i]);
       if (atom3 < 0 || !(mask[atom3] & groupbit)) continue;
       atom4 = atom->map(dihedral_atom4[atom2][i]);
       if (atom4 < 0 || !(mask[atom4] & groupbit)) continue;
 
       if (flag) {
         indices[m][0] = atom2;
         indices[m][1] = i;
       }
       m++;
     }
   }
 
   return m;
 }
 
 /* ----------------------------------------------------------------------
    count impropers on this proc
    only count if 2nd atom is the one storing the improper
    all atoms in interaction must be in group
    all atoms in interaction must be known to proc
 ------------------------------------------------------------------------- */
 
 int ComputePropertyLocal::count_impropers(int flag)
 {
   int i,atom1,atom2,atom3,atom4;
 
   int *num_improper = atom->num_improper;
   tagint **improper_atom1 = atom->improper_atom1;
   tagint **improper_atom2 = atom->improper_atom2;
   tagint **improper_atom3 = atom->improper_atom3;
   tagint **improper_atom4 = atom->improper_atom4;
   tagint *tag = atom->tag;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   int m = 0;
   for (atom2 = 0; atom2 < nlocal; atom2++) {
     if (!(mask[atom2] & groupbit)) continue;
     for (i = 0; i < num_improper[atom2]; i++) {
       if (tag[atom2] != improper_atom2[atom2][i]) continue;
       atom1 = atom->map(improper_atom1[atom2][i]);
       if (atom1 < 0 || !(mask[atom1] & groupbit)) continue;
       atom3 = atom->map(improper_atom3[atom2][i]);
       if (atom3 < 0 || !(mask[atom3] & groupbit)) continue;
       atom4 = atom->map(improper_atom4[atom2][i]);
       if (atom4 < 0 || !(mask[atom4] & groupbit)) continue;
 
       if (flag) {
         indices[m][0] = atom2;
         indices[m][1] = i;
       }
       m++;
     }
   }
 
   return m;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::reallocate(int n)
 {
   // grow vector or array and indices array
 
   while (nmax < n) nmax += DELTA;
   if (nvalues == 1) {
     memory->destroy(vector);
     memory->create(vector,nmax,"property/local:vector");
     vector_local = vector;
   } else {
     memory->destroy(array);
     memory->create(array,nmax,nvalues,"property/local:array");
     array_local = array;
   }
 
   memory->destroy(indices);
   memory->create(indices,nmax,2,"property/local:indices");
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputePropertyLocal::memory_usage()
 {
   double bytes = nmax*nvalues * sizeof(double);
   bytes += nmax*2 * sizeof(int);
   return bytes;
 }
 
 /* ----------------------------------------------------------------------
    one method for every keyword compute property/local can output
    the atom property is packed into buf starting at n with stride nvalues
    customize a new keyword by adding a method
 ------------------------------------------------------------------------- */
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_patom1(int n)
 {
   int i;
   tagint *tag = atom->tag;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     buf[n] = tag[i];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_patom2(int n)
 {
   int i;
   tagint *tag = atom->tag;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][1];
     buf[n] = tag[i];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_ptype1(int n)
 {
   int i;
   int *type = atom->type;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     buf[n] = type[i];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_ptype2(int n)
 {
   int i;
   int *type = atom->type;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][1];
     buf[n] = type[i];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_batom1(int n)
 {
   int i;
   tagint *tag = atom->tag;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     buf[n] = tag[i];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_batom2(int n)
 {
   int i,j;
   tagint **bond_atom = atom->bond_atom;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = bond_atom[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_btype(int n)
 {
   int i,j;
   int **bond_type = atom->bond_type;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = bond_type[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_aatom1(int n)
 {
   int i,j;
   tagint **angle_atom1 = atom->angle_atom1;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = angle_atom1[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_aatom2(int n)
 {
   int i,j;
   tagint **angle_atom2 = atom->angle_atom2;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = angle_atom2[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_aatom3(int n)
 {
   int i,j;
   tagint **angle_atom3 = atom->angle_atom3;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = angle_atom3[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_atype(int n)
 {
   int i,j;
   int **angle_type = atom->angle_type;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = angle_type[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_datom1(int n)
 {
   int i,j;
   tagint **dihedral_atom1 = atom->dihedral_atom1;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = dihedral_atom1[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_datom2(int n)
 {
   int i,j;
   tagint **dihedral_atom2 = atom->dihedral_atom2;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = dihedral_atom2[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_datom3(int n)
 {
   int i,j;
   tagint **dihedral_atom3 = atom->dihedral_atom3;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = dihedral_atom3[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_datom4(int n)
 {
   int i,j;
   tagint **dihedral_atom4 = atom->dihedral_atom4;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = dihedral_atom4[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_dtype(int n)
 {
   int i,j;
   int **dihedral_type = atom->dihedral_type;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = dihedral_type[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_iatom1(int n)
 {
   int i,j;
   tagint **improper_atom1 = atom->improper_atom1;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = improper_atom1[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_iatom2(int n)
 {
   int i,j;
   tagint **improper_atom2 = atom->improper_atom2;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = improper_atom2[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_iatom3(int n)
 {
   int i,j;
   tagint **improper_atom3 = atom->improper_atom3;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = improper_atom3[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_iatom4(int n)
 {
   int i,j;
   tagint **improper_atom4 = atom->improper_atom4;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = improper_atom4[i][j];
     n += nvalues;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputePropertyLocal::pack_itype(int n)
 {
   int i,j;
   int **improper_type = atom->improper_type;
 
   for (int m = 0; m < ncount; m++) {
     i = indices[m][0];
     j = indices[m][1];
     buf[n] = improper_type[i][j];
     n += nvalues;
   }
 }
diff --git a/src/compute_rdf.cpp b/src/compute_rdf.cpp
index 14a12bb5c..862450801 100644
--- a/src/compute_rdf.cpp
+++ b/src/compute_rdf.cpp
@@ -1,325 +1,327 @@
 /* ----------------------------------------------------------------------
    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: Paul Crozier (SNL), Jeff Greathouse (SNL)
 ------------------------------------------------------------------------- */
 
 #include <mpi.h>
 #include <math.h>
 #include <stdlib.h>
 #include "compute_rdf.h"
 #include "atom.h"
 #include "update.h"
 #include "force.h"
 #include "pair.h"
 #include "domain.h"
 #include "neighbor.h"
 #include "neigh_request.h"
 #include "neigh_list.h"
 #include "group.h"
 #include "math_const.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 using namespace MathConst;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeRDF::ComputeRDF(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  rdfpair(NULL), nrdfpair(NULL), ilo(NULL), ihi(NULL), jlo(NULL), jhi(NULL),
+  hist(NULL), histall(NULL), typecount(NULL), icount(NULL), jcount(NULL), duplicates(NULL)
 {
   if (narg < 4 || (narg-4) % 2) error->all(FLERR,"Illegal compute rdf command");
 
   array_flag = 1;
   extarray = 0;
 
   nbin = force->inumeric(FLERR,arg[3]);
   if (nbin < 1) error->all(FLERR,"Illegal compute rdf command");
   if (narg == 4) npairs = 1;
   else npairs = (narg-4)/2;
 
   size_array_rows = nbin;
   size_array_cols = 1 + 2*npairs;
 
   int ntypes = atom->ntypes;
   memory->create(rdfpair,npairs,ntypes+1,ntypes+1,"rdf:rdfpair");
   memory->create(nrdfpair,ntypes+1,ntypes+1,"rdf:nrdfpair");
   ilo = new int[npairs];
   ihi = new int[npairs];
   jlo = new int[npairs];
   jhi = new int[npairs];
 
   if (narg == 4) {
     ilo[0] = 1; ihi[0] = ntypes;
     jlo[0] = 1; jhi[0] = ntypes;
     npairs = 1;
 
   } else {
     npairs = 0;
     int iarg = 4;
     while (iarg < narg) {
       force->bounds(arg[iarg],atom->ntypes,ilo[npairs],ihi[npairs]);
       force->bounds(arg[iarg+1],atom->ntypes,jlo[npairs],jhi[npairs]);
       if (ilo[npairs] > ihi[npairs] || jlo[npairs] > jhi[npairs])
         error->all(FLERR,"Illegal compute rdf command");
       npairs++;
       iarg += 2;
     }
   }
 
   int i,j;
   for (i = 1; i <= ntypes; i++)
     for (j = 1; j <= ntypes; j++)
       nrdfpair[i][j] = 0;
 
   for (int m = 0; m < npairs; m++)
     for (i = ilo[m]; i <= ihi[m]; i++)
       for (j = jlo[m]; j <= jhi[m]; j++)
         rdfpair[nrdfpair[i][j]++][i][j] = m;
 
   memory->create(hist,npairs,nbin,"rdf:hist");
   memory->create(histall,npairs,nbin,"rdf:histall");
   memory->create(array,nbin,1+2*npairs,"rdf:array");
   typecount = new int[ntypes+1];
   icount = new int[npairs];
   jcount = new int[npairs];
   duplicates = new int[npairs];
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeRDF::~ComputeRDF()
 {
   memory->destroy(rdfpair);
   memory->destroy(nrdfpair);
   delete [] ilo;
   delete [] ihi;
   delete [] jlo;
   delete [] jhi;
   memory->destroy(hist);
   memory->destroy(histall);
   memory->destroy(array);
   delete [] typecount;
   delete [] icount;
   delete [] jcount;
   delete [] duplicates;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeRDF::init()
 {
   int i,j,m;
 
   if (force->pair) delr = force->pair->cutforce / nbin;
   else error->all(FLERR,"Compute rdf requires a pair style be defined");
   delrinv = 1.0/delr;
 
   // set 1st column of output array to bin coords
 
   for (int i = 0; i < nbin; i++)
     array[i][0] = (i+0.5) * delr;
 
   // count atoms of each type that are also in group
 
   int *mask = atom->mask;
   int *type = atom->type;
   int nlocal = atom->nlocal;
   int ntypes = atom->ntypes;
 
   for (i = 1; i <= ntypes; i++) typecount[i] = 0;
   for (i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) typecount[type[i]]++;
 
   // icount = # of I atoms participating in I,J pairs for each histogram
   // jcount = # of J atoms participating in I,J pairs for each histogram
   // duplicates = # of atoms in both groups I and J for each histogram
 
   for (m = 0; m < npairs; m++) {
     icount[m] = 0;
     for (i = ilo[m]; i <= ihi[m]; i++) icount[m] += typecount[i];
     jcount[m] = 0;
     for (i = jlo[m]; i <= jhi[m]; i++) jcount[m] += typecount[i];
     duplicates[m] = 0;
     for (i = ilo[m]; i <= ihi[m]; i++)
       for (j = jlo[m]; j <= jhi[m]; j++)
         if (i == j) duplicates[m] += typecount[i];
   }
 
   int *scratch = new int[npairs];
   MPI_Allreduce(icount,scratch,npairs,MPI_INT,MPI_SUM,world);
   for (i = 0; i < npairs; i++) icount[i] = scratch[i];
   MPI_Allreduce(jcount,scratch,npairs,MPI_INT,MPI_SUM,world);
   for (i = 0; i < npairs; i++) jcount[i] = scratch[i];
   MPI_Allreduce(duplicates,scratch,npairs,MPI_INT,MPI_SUM,world);
   for (i = 0; i < npairs; i++) duplicates[i] = scratch[i];
   delete [] scratch;
 
   // need an occasional half neighbor list
 
   int irequest = neighbor->request(this,instance_me);
   neighbor->requests[irequest]->pair = 0;
   neighbor->requests[irequest]->compute = 1;
   neighbor->requests[irequest]->occasional = 1;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeRDF::init_list(int id, NeighList *ptr)
 {
   list = ptr;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeRDF::compute_array()
 {
   int i,j,m,ii,jj,inum,jnum,itype,jtype,ipair,jpair,ibin,ihisto;
   double xtmp,ytmp,ztmp,delx,dely,delz,r;
   int *ilist,*jlist,*numneigh,**firstneigh;
   double factor_lj,factor_coul;
 
   invoked_array = update->ntimestep;
 
   // invoke half neighbor list (will copy or build if necessary)
 
   neighbor->build_one(list);
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
   // zero the histogram counts
 
   for (i = 0; i < npairs; i++)
     for (j = 0; j < nbin; j++)
       hist[i][j] = 0;
 
   // tally the RDF
   // both atom i and j must be in fix group
   // itype,jtype must have been specified by user
   // consider I,J as one interaction even if neighbor pair is stored on 2 procs
   // tally I,J pair each time I is central atom, and each time J is central
 
   double **x = atom->x;
   int *type = atom->type;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double *special_coul = force->special_coul;
   double *special_lj = force->special_lj;
   int newton_pair = force->newton_pair;
 
   for (ii = 0; ii < inum; ii++) {
     i = ilist[ii];
     if (!(mask[i] & groupbit)) continue;
     xtmp = x[i][0];
     ytmp = x[i][1];
     ztmp = x[i][2];
     itype = type[i];
     jlist = firstneigh[i];
     jnum = numneigh[i];
 
     for (jj = 0; jj < jnum; jj++) {
       j = jlist[jj];
       factor_lj = special_lj[sbmask(j)];
       factor_coul = special_coul[sbmask(j)];
       j &= NEIGHMASK;
 
       // if both weighting factors are 0, skip this pair
       // could be 0 and still be in neigh list for long-range Coulombics
       // want consistency with non-charged pairs which wouldn't be in list
 
       if (factor_lj == 0.0 && factor_coul == 0.0) continue;
 
       if (!(mask[j] & groupbit)) continue;
       jtype = type[j];
       ipair = nrdfpair[itype][jtype];
       jpair = nrdfpair[jtype][itype];
       if (!ipair && !jpair) continue;
 
       delx = xtmp - x[j][0];
       dely = ytmp - x[j][1];
       delz = ztmp - x[j][2];
       r = sqrt(delx*delx + dely*dely + delz*delz);
       ibin = static_cast<int> (r*delrinv);
       if (ibin >= nbin) continue;
 
       if (ipair)
         for (ihisto = 0; ihisto < ipair; ihisto++)
           hist[rdfpair[ihisto][itype][jtype]][ibin] += 1.0;
       if (newton_pair || j < nlocal) {
         if (jpair)
           for (ihisto = 0; ihisto < jpair; ihisto++)
             hist[rdfpair[ihisto][jtype][itype]][ibin] += 1.0;
       }
     }
   }
 
   // sum histograms across procs
 
   MPI_Allreduce(hist[0],histall[0],npairs*nbin,MPI_DOUBLE,MPI_SUM,world);
 
   // convert counts to g(r) and coord(r) and copy into output array
   // vfrac = fraction of volume in shell m
   // npairs = number of pairs, corrected for duplicates
   // duplicates = pairs in which both atoms are the same
 
   double constant,vfrac,gr,ncoord,rlower,rupper,normfac;
 
   if (domain->dimension == 3) {
     constant = 4.0*MY_PI / (3.0*domain->xprd*domain->yprd*domain->zprd);
 
     for (m = 0; m < npairs; m++) {
       normfac = (icount[m] > 0) ? static_cast<double>(jcount[m])
                 - static_cast<double>(duplicates[m])/icount[m] : 0.0;
       ncoord = 0.0;
       for (ibin = 0; ibin < nbin; ibin++) {
         rlower = ibin*delr;
         rupper = (ibin+1)*delr;
         vfrac = constant * (rupper*rupper*rupper - rlower*rlower*rlower);
         if (vfrac * normfac != 0.0)
           gr = histall[m][ibin] / (vfrac * normfac * icount[m]);
         else gr = 0.0;
         if (icount[m] != 0)
           ncoord += gr * vfrac * normfac;
         array[ibin][1+2*m] = gr;
         array[ibin][2+2*m] = ncoord;
       }
     }
 
   } else {
     constant = MY_PI / (domain->xprd*domain->yprd);
 
     for (m = 0; m < npairs; m++) {
       ncoord = 0.0;
       normfac = (icount[m] > 0) ? static_cast<double>(jcount[m])
                 - static_cast<double>(duplicates[m])/icount[m] : 0.0;
       for (ibin = 0; ibin < nbin; ibin++) {
         rlower = ibin*delr;
         rupper = (ibin+1)*delr;
         vfrac = constant * (rupper*rupper - rlower*rlower);
         if (vfrac * normfac != 0.0)
           gr = histall[m][ibin] / (vfrac * normfac * icount[m]);
         else gr = 0.0;
         if (icount[m] != 0)
           ncoord += gr * vfrac * normfac;
         array[ibin][1+2*m] = gr;
         array[ibin][2+2*m] = ncoord;
       }
     }
   }
 }
diff --git a/src/compute_reduce.cpp b/src/compute_reduce.cpp
index 7ea3c2aaf..dc6896f27 100644
--- a/src/compute_reduce.cpp
+++ b/src/compute_reduce.cpp
@@ -1,675 +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)
+  Compute(lmp, narg, arg),
+  nvalues(0), which(NULL), argindex(NULL), flavor(NULL), value2index(NULL), ids(NULL),
+  onevec(NULL), replace(NULL), indices(NULL), owner(NULL), idregion(NULL), varatom(NULL)
 {
   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);
 
   // expand args if any have wildcard character "*"
 
   int expand = 0;
   char **earg;
   int nargnew = input->expand_args(narg-iarg,&arg[iarg],1,earg);
 
   if (earg != &arg[iarg]) expand = 1;
   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;
 
   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 < 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 < nargnew; i++) delete [] earg[i];
     memory->sfree(earg);
   }
 
   // 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/compute_slice.cpp b/src/compute_slice.cpp
index d2c3c18de..da077ddfc 100644
--- a/src/compute_slice.cpp
+++ b/src/compute_slice.cpp
@@ -1,357 +1,358 @@
 /* ----------------------------------------------------------------------
    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 "compute_slice.h"
 #include "update.h"
 #include "modify.h"
 #include "fix.h"
 #include "group.h"
 #include "input.h"
 #include "variable.h"
 #include "memory.h"
 #include "error.h"
 #include "force.h"
 
 using namespace LAMMPS_NS;
 
 enum{COMPUTE,FIX,VARIABLE};
 
 #define INVOKED_VECTOR 2
 #define INVOKED_ARRAY 4
 
 /* ---------------------------------------------------------------------- */
 
 ComputeSlice::ComputeSlice(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  nvalues(0), which(NULL), argindex(NULL), value2index(NULL), ids(NULL)
 {
   if (narg < 7) error->all(FLERR,"Illegal compute slice command");
 
   MPI_Comm_rank(world,&me);
 
   nstart = force->inumeric(FLERR,arg[3]);
   nstop = force->inumeric(FLERR,arg[4]);
   nskip = force->inumeric(FLERR,arg[5]);
 
   if (nstart < 1 || nstop < nstart || nskip < 1)
     error->all(FLERR,"Illegal compute slice command");
 
   // parse remaining 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];
   nvalues = 0;
 
   for (int iarg = 6; iarg < narg; iarg++) {
     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 slice 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 error->all(FLERR,"Illegal compute slice command");
   }
 
   // setup and error check
 
   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 compute slice does not exist");
       if (modify->compute[icompute]->vector_flag) {
         if (argindex[i])
           error->all(FLERR,"Compute slice compute does not "
                      "calculate a global array");
         if (nstop > modify->compute[icompute]->size_vector)
           error->all(FLERR,"Compute slice compute vector is "
                      "accessed out-of-range");
       } else if (modify->compute[icompute]->array_flag) {
         if (argindex[i] == 0)
           error->all(FLERR,"Compute slice compute does not "
                      "calculate a global vector");
         if (argindex[i] > modify->compute[icompute]->size_array_cols)
           error->all(FLERR,"Compute slice compute array is "
                      "accessed out-of-range");
         if (nstop > modify->compute[icompute]->size_array_rows)
           error->all(FLERR,"Compute slice compute array is "
                      "accessed out-of-range");
       } else error->all(FLERR,"Compute slice compute does not calculate "
                         "global vector or array");
 
     } else if (which[i] == FIX) {
       int ifix = modify->find_fix(ids[i]);
       if (ifix < 0)
         error->all(FLERR,"Fix ID for compute slice does not exist");
       if (modify->fix[ifix]->vector_flag) {
         if (argindex[i])
           error->all(FLERR,"Compute slice fix does not "
                      "calculate a global array");
         if (nstop > modify->fix[ifix]->size_vector)
           error->all(FLERR,"Compute slice fix vector is accessed out-of-range");
       } else if (modify->fix[ifix]->array_flag) {
         if (argindex[i] == 0)
           error->all(FLERR,"Compute slice fix does not "
                      "calculate a global vector");
         if (argindex[i] > modify->fix[ifix]->size_array_cols)
           error->all(FLERR,"Compute slice fix array is accessed out-of-range");
         if (nstop > modify->fix[ifix]->size_array_rows)
           error->all(FLERR,"Compute slice fix array is accessed out-of-range");
       } else error->all(FLERR,"Compute slice fix does not calculate "
                         "global vector or array");
 
     } else if (which[i] == VARIABLE) {
       int ivariable = input->variable->find(ids[i]);
       if (ivariable < 0)
         error->all(FLERR,"Variable name for compute slice does not exist");
       if (argindex[i] == 0 && input->variable->vectorstyle(ivariable) == 0)
         error->all(FLERR,"Compute slice variable is not vector-style variable");
       if (argindex[i])
         error->all(FLERR,"Compute slice vector variable cannot be indexed");
     }
   }
 
   // this compute produces either a vector or array
   // for vector, set intensive/extensive to mirror input values
   // for array, set intensive if all input values are intensive, else extensive
 
   vector = NULL;
   array = NULL;
   extlist = NULL;
 
   if (nvalues == 1) {
     vector_flag = 1;
     size_vector = (nstop-nstart) / nskip;
     memory->create(vector,size_vector,"slice:vector");
 
     if (which[0] == COMPUTE) {
       int icompute = modify->find_compute(ids[0]);
       if (argindex[0] == 0) {
         extvector = modify->compute[icompute]->extvector;
         if (modify->compute[icompute]->extvector == -1) {
           extlist = new int[size_vector];
           int j = 0;
           for (int i = nstart; i < nstop; i += nskip)
             extlist[j++] = modify->compute[icompute]->extlist[i-1];
         }
       } else extvector = modify->compute[icompute]->extarray;
     } else if (which[0] == FIX) {
       int ifix = modify->find_fix(ids[0]);
       if (argindex[0] == 0) {
         extvector = modify->fix[ifix]->extvector;
         if (modify->fix[ifix]->extvector == -1) {
           extlist = new int[size_vector];
           int j = 0;
           for (int i = nstart; i < nstop; i += nskip)
             extlist[j++] = modify->fix[ifix]->extlist[i-1];
         }
       } else extvector = modify->fix[ifix]->extarray;
     } else if (which[0] == VARIABLE) {
       extvector = 0;
     }
 
   } else {
     array_flag = 1;
     size_array_rows = (nstop-nstart) / nskip;
     size_array_cols = nvalues;
     memory->create(array,size_array_rows,size_array_cols,"slice:array");
 
     extarray = 0;
     for (int i = 0; i < nvalues; i++) {
       if (which[i] == COMPUTE) {
         int icompute = modify->find_compute(ids[i]);
         if (argindex[i] == 0) {
           if (modify->compute[icompute]->extvector == 1) extarray = 1;
           if (modify->compute[icompute]->extvector == -1) {
             for (int j = 0; j < modify->compute[icompute]->size_vector; j++)
               if (modify->compute[icompute]->extlist[j]) extarray = 1;
           }
         } else {
           if (modify->compute[icompute]->extarray) extarray = 1;
         }
       } else if (which[i] == FIX) {
         int ifix = modify->find_fix(ids[i]);
         if (argindex[i] == 0) {
           if (modify->fix[ifix]->extvector == 1) extarray = 1;
           if (modify->fix[ifix]->extvector == -1) {
             for (int j = 0; j < modify->fix[ifix]->size_vector; j++)
               if (modify->fix[ifix]->extlist[j]) extarray = 1;
           }
         } else {
           if (modify->fix[ifix]->extarray) extarray = 1;
         }
       } else if (which[i] == VARIABLE) {
         // variable is always intensive, does not change extarray
       }
     }
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeSlice::~ComputeSlice()
 {
   delete [] which;
   delete [] argindex;
   for (int m = 0; m < nvalues; m++) delete [] ids[m];
   delete [] ids;
   delete [] value2index;
 
   memory->destroy(vector);
   memory->destroy(array);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeSlice::init()
 {
   // set indices and check validity of all computes,fixes
 
   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 slice 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 slice 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 slice does not exist");
       value2index[m] = ivariable;
     }
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeSlice::compute_vector()
 {
   invoked_vector = update->ntimestep;
 
   extract_one(0,vector,1);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeSlice::compute_array()
 {
   invoked_array = update->ntimestep;
 
   for (int m = 0; m < nvalues; m++)
     extract_one(0,&array[m][0],nvalues);
 }
 
 /* ----------------------------------------------------------------------
    calculate sliced value for one input M and return it in vec
    vec may be array so that returned values are with stride
 ------------------------------------------------------------------------- */
 
 void ComputeSlice::extract_one(int m, double *vec, int stride)
 {
   int i,j;
 
   // invoke the appropriate compute if needed
 
   if (which[m] == COMPUTE) {
     Compute *compute = modify->compute[value2index[m]];
 
     if (argindex[m] == 0) {
       if (!(compute->invoked_flag & INVOKED_VECTOR)) {
         compute->compute_vector();
         compute->invoked_flag |= INVOKED_VECTOR;
       }
       double *cvector = compute->vector;
       j = 0;
       for (i = nstart; i < nstop; i += nskip) {
         vec[j] = cvector[i-1];
         j += stride;
       }
 
     } else {
       if (!(compute->invoked_flag & INVOKED_ARRAY)) {
         compute->compute_array();
         compute->invoked_flag |= INVOKED_ARRAY;
       }
       double **carray = compute->array;
       int icol = argindex[m]-1;
       j = 0;
       for (i = nstart; i < nstop; i += nskip) {
         vec[j] = carray[i-1][icol];
         j += stride;
       }
     }
 
   // access fix fields, check if fix frequency is a match
 
   } else if (which[m] == FIX) {
     if (update->ntimestep % modify->fix[value2index[m]]->global_freq)
       error->all(FLERR,"Fix used in compute slice not "
                  "computed at compatible time");
     Fix *fix = modify->fix[value2index[m]];
 
     if (argindex[m] == 0) {
       j = 0;
       for (i = nstart; i < nstop; i += nskip) {
         vec[j] = fix->compute_vector(i-1);
         j += stride;
       }
     } else {
       int icol = argindex[m]-1;
       j = 0;
       for (i = nstart; i < nstop; i += nskip) {
         vec[j] = fix->compute_array(i-1,icol);
         j += stride;
       }
     }
 
     // invoke vector-style variable
 
   } else if (which[m] == VARIABLE) {
     double *varvec;
     int nvec = input->variable->compute_vector(value2index[m],&varvec);
     if (nvec < nstop) 
       error->all(FLERR,"Compute slice variable is not long enough");
     j = 0;
     for (i = nstart; i < nstop; i += nskip) {
       vec[j] = varvec[i-1];
       j += stride;
     }
   }
 }
diff --git a/src/compute_stress_atom.cpp b/src/compute_stress_atom.cpp
index 3455d9eb0..46ee2ec3c 100644
--- a/src/compute_stress_atom.cpp
+++ b/src/compute_stress_atom.cpp
@@ -1,388 +1,388 @@
 /* ----------------------------------------------------------------------
    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 "compute_stress_atom.h"
 #include "atom.h"
 #include "update.h"
 #include "comm.h"
 #include "force.h"
 #include "pair.h"
 #include "bond.h"
 #include "angle.h"
 #include "dihedral.h"
 #include "improper.h"
 #include "kspace.h"
 #include "modify.h"
 #include "fix.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 enum{NOBIAS,BIAS};
 
 /* ---------------------------------------------------------------------- */
 
 ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  id_temp(NULL), stress(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute stress/atom command");
 
   peratom_flag = 1;
   size_peratom_cols = 6;
   pressatomflag = 1;
   timeflag = 1;
   comm_reverse = 6;
 
   // store temperature ID used by stress computation
   // insure it is valid for temperature computation
 
   if (strcmp(arg[3],"NULL") == 0) id_temp = NULL;
   else {
     int n = strlen(arg[3]) + 1;
     id_temp = new char[n];
     strcpy(id_temp,arg[3]);
 
     int icompute = modify->find_compute(id_temp);
     if (icompute < 0)
       error->all(FLERR,"Could not find compute stress/atom temperature ID");
     if (modify->compute[icompute]->tempflag == 0)
       error->all(FLERR,
 		 "Compute stress/atom temperature ID does not "
                  "compute temperature");
   }
 
   // process optional args
 
   if (narg == 4) {
     keflag = 1;
     pairflag = 1;
     bondflag = angleflag = dihedralflag = improperflag = 1;
     kspaceflag = 1;
     fixflag = 1;
   } else {
     keflag = 0;
     pairflag = 0;
     bondflag = angleflag = dihedralflag = improperflag = 0;
     kspaceflag = 0;
     fixflag = 0;
     int iarg = 4;
     while (iarg < narg) {
       if (strcmp(arg[iarg],"ke") == 0) keflag = 1;
       else if (strcmp(arg[iarg],"pair") == 0) pairflag = 1;
       else if (strcmp(arg[iarg],"bond") == 0) bondflag = 1;
       else if (strcmp(arg[iarg],"angle") == 0) angleflag = 1;
       else if (strcmp(arg[iarg],"dihedral") == 0) dihedralflag = 1;
       else if (strcmp(arg[iarg],"improper") == 0) improperflag = 1;
       else if (strcmp(arg[iarg],"kspace") == 0) kspaceflag = 1;
       else if (strcmp(arg[iarg],"fix") == 0) fixflag = 1;
       else if (strcmp(arg[iarg],"virial") == 0) {
         pairflag = 1;
         bondflag = angleflag = dihedralflag = improperflag = 1;
         kspaceflag = fixflag = 1;
       } else error->all(FLERR,"Illegal compute stress/atom command");
       iarg++;
     }
   }
 
   nmax = 0;
-  stress = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeStressAtom::~ComputeStressAtom()
 {
   delete [] id_temp;
   memory->destroy(stress);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeStressAtom::init()
 {
   // set temperature compute, must be done in init()
   // fixes could have changed or compute_modify could have changed it
 
   if (id_temp) {
     int icompute = modify->find_compute(id_temp);
     if (icompute < 0)
       error->all(FLERR,"Could not find compute stress/atom temperature ID");
     temperature = modify->compute[icompute];
     if (temperature->tempbias) biasflag = BIAS;
     else biasflag = NOBIAS;
   } else biasflag = NOBIAS;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeStressAtom::compute_peratom()
 {
   int i,j;
   double onemass;
 
   invoked_peratom = update->ntimestep;
   if (update->vflag_atom != invoked_peratom)
     error->all(FLERR,"Per-atom virial was not tallied on needed timestep");
 
   // grow local stress array if necessary
   // needs to be atom->nmax in length
 
   if (atom->nmax > nmax) {
     memory->destroy(stress);
     nmax = atom->nmax;
     memory->create(stress,nmax,6,"stress/atom:stress");
     array_atom = stress;
   }
 
   // npair includes ghosts if either newton flag is set
   //   b/c some bonds/dihedrals call pair::ev_tally with pairwise info
   // nbond includes ghosts if newton_bond is set
   // ntotal includes ghosts if either newton flag is set
   // KSpace includes ghosts if tip4pflag is set
 
   int nlocal = atom->nlocal;
   int npair = nlocal;
   int nbond = nlocal;
   int ntotal = nlocal;
   int nkspace = nlocal;
   if (force->newton) npair += atom->nghost;
   if (force->newton_bond) nbond += atom->nghost;
   if (force->newton) ntotal += atom->nghost;
   if (force->kspace && force->kspace->tip4pflag) nkspace += atom->nghost;
 
   // clear local stress array
 
   for (i = 0; i < ntotal; i++)
     for (j = 0; j < 6; j++)
       stress[i][j] = 0.0;
 
   // add in per-atom contributions from each force
 
   if (pairflag && force->pair) {
     double **vatom = force->pair->vatom;
     for (i = 0; i < npair; i++)
       for (j = 0; j < 6; j++)
         stress[i][j] += vatom[i][j];
   }
 
   if (bondflag && force->bond) {
     double **vatom = force->bond->vatom;
     for (i = 0; i < nbond; i++)
       for (j = 0; j < 6; j++)
         stress[i][j] += vatom[i][j];
   }
 
   if (angleflag && force->angle) {
     double **vatom = force->angle->vatom;
     for (i = 0; i < nbond; i++)
       for (j = 0; j < 6; j++)
         stress[i][j] += vatom[i][j];
   }
 
   if (dihedralflag && force->dihedral) {
     double **vatom = force->dihedral->vatom;
     for (i = 0; i < nbond; i++)
       for (j = 0; j < 6; j++)
         stress[i][j] += vatom[i][j];
   }
 
   if (improperflag && force->improper) {
     double **vatom = force->improper->vatom;
     for (i = 0; i < nbond; i++)
       for (j = 0; j < 6; j++)
         stress[i][j] += vatom[i][j];
   }
 
   if (kspaceflag && force->kspace) {
     double **vatom = force->kspace->vatom;
     for (i = 0; i < nkspace; i++)
       for (j = 0; j < 6; j++)
         stress[i][j] += vatom[i][j];
   }
 
   // add in per-atom contributions from relevant fixes
   // skip if vatom = NULL
   // possible during setup phase if fix has not initialized its vatom yet
   // e.g. fix ave/spatial defined before fix shake,
   //   and fix ave/spatial uses a per-atom stress from this compute as input
 
   if (fixflag) {
     for (int ifix = 0; ifix < modify->nfix; ifix++)
       if (modify->fix[ifix]->virial_flag) {
         double **vatom = modify->fix[ifix]->vatom;
         if (vatom)
           for (i = 0; i < nlocal; i++)
             for (j = 0; j < 6; j++)
               stress[i][j] += vatom[i][j];
       }
   }
 
   // communicate ghost virials between neighbor procs
 
   if (force->newton || (force->kspace && force->kspace->tip4pflag))
     comm->reverse_comm_compute(this);
 
   // zero virial of atoms not in group
   // only do this after comm since ghost contributions must be included
 
   int *mask = atom->mask;
 
   for (i = 0; i < nlocal; i++)
     if (!(mask[i] & groupbit)) {
       stress[i][0] = 0.0;
       stress[i][1] = 0.0;
       stress[i][2] = 0.0;
       stress[i][3] = 0.0;
       stress[i][4] = 0.0;
       stress[i][5] = 0.0;
     }
 
   // include kinetic energy term for each atom in group
   // apply temperature bias is applicable
   // mvv2e converts mv^2 to energy
 
   if (keflag) {
     double **v = atom->v;
     double *mass = atom->mass;
     double *rmass = atom->rmass;
     int *type = atom->type;
     double mvv2e = force->mvv2e;
 
     if (biasflag == NOBIAS) {
       if (rmass) {
 	for (i = 0; i < nlocal; i++)
 	  if (mask[i] & groupbit) {
 	    onemass = mvv2e * rmass[i];
 	    stress[i][0] += onemass*v[i][0]*v[i][0];
 	    stress[i][1] += onemass*v[i][1]*v[i][1];
 	    stress[i][2] += onemass*v[i][2]*v[i][2];
 	    stress[i][3] += onemass*v[i][0]*v[i][1];
 	    stress[i][4] += onemass*v[i][0]*v[i][2];
 	    stress[i][5] += onemass*v[i][1]*v[i][2];
 	  }
 
       } else {
 	for (i = 0; i < nlocal; i++)
 	  if (mask[i] & groupbit) {
 	    onemass = mvv2e * mass[type[i]];
 	    stress[i][0] += onemass*v[i][0]*v[i][0];
 	    stress[i][1] += onemass*v[i][1]*v[i][1];
 	    stress[i][2] += onemass*v[i][2]*v[i][2];
 	    stress[i][3] += onemass*v[i][0]*v[i][1];
 	    stress[i][4] += onemass*v[i][0]*v[i][2];
 	    stress[i][5] += onemass*v[i][1]*v[i][2];
 	  }
       }
 
     } else {
 
       // invoke temperature if it hasn't been already
       // this insures bias factor is pre-computed
 
       if (keflag && temperature->invoked_scalar != update->ntimestep)
 	temperature->compute_scalar();
 
       if (rmass) {
 	for (i = 0; i < nlocal; i++)
 	  if (mask[i] & groupbit) {
 	    temperature->remove_bias(i,v[i]);
 	    onemass = mvv2e * rmass[i];
 	    stress[i][0] += onemass*v[i][0]*v[i][0];
 	    stress[i][1] += onemass*v[i][1]*v[i][1];
 	    stress[i][2] += onemass*v[i][2]*v[i][2];
 	    stress[i][3] += onemass*v[i][0]*v[i][1];
 	    stress[i][4] += onemass*v[i][0]*v[i][2];
 	    stress[i][5] += onemass*v[i][1]*v[i][2];
 	    temperature->restore_bias(i,v[i]);
 	  }
 
       } else {
 	for (i = 0; i < nlocal; i++)
 	  if (mask[i] & groupbit) {
 	    temperature->remove_bias(i,v[i]);
 	    onemass = mvv2e * mass[type[i]];
 	    stress[i][0] += onemass*v[i][0]*v[i][0];
 	    stress[i][1] += onemass*v[i][1]*v[i][1];
 	    stress[i][2] += onemass*v[i][2]*v[i][2];
 	    stress[i][3] += onemass*v[i][0]*v[i][1];
 	    stress[i][4] += onemass*v[i][0]*v[i][2];
 	    stress[i][5] += onemass*v[i][1]*v[i][2];
 	    temperature->restore_bias(i,v[i]);
 	  }
       }
     }
   }
 
   // convert to stress*volume units = -pressure*volume
 
   double nktv2p = -force->nktv2p;
   for (i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       stress[i][0] *= nktv2p;
       stress[i][1] *= nktv2p;
       stress[i][2] *= nktv2p;
       stress[i][3] *= nktv2p;
       stress[i][4] *= nktv2p;
       stress[i][5] *= nktv2p;
     }
 }
 
 /* ---------------------------------------------------------------------- */
 
 int ComputeStressAtom::pack_reverse_comm(int n, int first, double *buf)
 {
   int i,m,last;
 
   m = 0;
   last = first + n;
   for (i = first; i < last; i++) {
     buf[m++] = stress[i][0];
     buf[m++] = stress[i][1];
     buf[m++] = stress[i][2];
     buf[m++] = stress[i][3];
     buf[m++] = stress[i][4];
     buf[m++] = stress[i][5];
   }
   return m;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeStressAtom::unpack_reverse_comm(int n, int *list, double *buf)
 {
   int i,j,m;
 
   m = 0;
   for (i = 0; i < n; i++) {
     j = list[i];
     stress[j][0] += buf[m++];
     stress[j][1] += buf[m++];
     stress[j][2] += buf[m++];
     stress[j][3] += buf[m++];
     stress[j][4] += buf[m++];
     stress[j][5] += buf[m++];
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local atom-based array
 ------------------------------------------------------------------------- */
 
 double ComputeStressAtom::memory_usage()
 {
   double bytes = nmax*6 * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_temp_chunk.cpp b/src/compute_temp_chunk.cpp
index 87d6e1186..8daaeb062 100644
--- a/src/compute_temp_chunk.cpp
+++ b/src/compute_temp_chunk.cpp
@@ -1,864 +1,861 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_temp_chunk.h"
 #include "atom.h"
 #include "update.h"
 #include "force.h"
 #include "modify.h"
 #include "compute_chunk_atom.h"
 #include "domain.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 enum{TEMP,KECOM,INTERNAL};
 
 /* ---------------------------------------------------------------------- */
 
 ComputeTempChunk::ComputeTempChunk(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  which(NULL), idchunk(NULL), id_bias(NULL), sum(NULL), sumall(NULL), count(NULL), 
+  countall(NULL), massproc(NULL), masstotal(NULL), vcm(NULL), vcmall(NULL)
 {
   if (narg < 4) error->all(FLERR,"Illegal compute temp/chunk command");
 
   scalar_flag = vector_flag = 1;
   size_vector = 6;
   extscalar = 0;
   extvector = 1;
   tempflag = 1;
 
   // ID of compute chunk/atom
 
   int n = strlen(arg[3]) + 1;
   idchunk = new char[n];
   strcpy(idchunk,arg[3]);
 
   biasflag = 0;
   init();
 
   // optional per-chunk values
 
   nvalues = narg-4;
   which = new int[nvalues];
   nvalues = 0;
 
   int iarg = 4;
   while (iarg < narg) {
     if (strcmp(arg[iarg],"temp") == 0) which[nvalues] = TEMP;
     else if (strcmp(arg[iarg],"kecom") == 0) which[nvalues] = KECOM;
     else if (strcmp(arg[iarg],"internal") == 0) which[nvalues] = INTERNAL;
     else break;
     iarg++;
     nvalues++;
   }
 
   // optional args
 
   comflag = 0;
   biasflag = 0;
   id_bias = NULL;
   adof = domain->dimension;
   cdof = 0.0;
 
   while (iarg < narg) {
     if (strcmp(arg[iarg],"com") == 0) {
       if (iarg+2 > narg)
         error->all(FLERR,"Illegal compute temp/chunk command");
       if (strcmp(arg[iarg+1],"yes") == 0) comflag = 1;
       else if (strcmp(arg[iarg+1],"no") == 0) comflag = 0;
       else error->all(FLERR,"Illegal compute temp/chunk command");
       iarg += 2;
     } else if (strcmp(arg[iarg],"bias") == 0) {
       if (iarg+2 > narg)
         error->all(FLERR,"Illegal compute temp/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 compute temp/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 compute temp/chunk command");
       cdof = force->numeric(FLERR,arg[iarg+1]);
       iarg += 2;
     } else error->all(FLERR,"Illegal compute temp/chunk command");
   }
 
   // error check on bias compute
 
   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");
   }
 
   // this compute only calculates a bias, if comflag is set
   // won't be two biases since comflag and biasflag cannot both be set
 
   if (comflag && biasflag)
     error->all(FLERR,"Cannot use both com and bias with compute temp/chunk");
   if (comflag) tempbias = 1;
 
   // vector data
 
   vector = new double[6];
 
   // chunk-based data
 
   nchunk = 1;
   maxchunk = 0;
-  sum = sumall = NULL;
-  count = countall = NULL;
-  massproc = masstotal = NULL;
-  vcm = vcmall = NULL;
-  array = NULL;
-
+  
   if (nvalues)  {
     array_flag = 1;
     size_array_cols = nvalues;
     size_array_rows = 0;
     size_array_rows_variable = 1;
     extarray = 0;
   }
 
   allocate();
   comstep = -1;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeTempChunk::~ComputeTempChunk()
 {
   delete [] idchunk;
   delete [] which;
   delete [] id_bias;
   delete [] vector;
   memory->destroy(sum);
   memory->destroy(sumall);
   memory->destroy(count);
   memory->destroy(countall);
   memory->destroy(array);
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(vcm);
   memory->destroy(vcmall);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempChunk::init()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute < 0)
     error->all(FLERR,"Chunk/atom compute does not exist for "
                "compute temp/chunk");
   cchunk = (ComputeChunkAtom *) modify->compute[icompute];
   if (strcmp(cchunk->style,"chunk/atom") != 0)
     error->all(FLERR,"Compute temp/chunk does not use chunk/atom compute");
 
   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];
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 double ComputeTempChunk::compute_scalar()
 {
   int i,index;
 
   invoked_scalar = update->ntimestep;
 
   // calculate chunk assignments,
   //   since only atoms in chunks contribute to global temperature
   // 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
 
   nchunk = cchunk->setup_chunks();
   cchunk->compute_ichunk();
   int *ichunk = cchunk->ichunk;
 
   if (nchunk > maxchunk) allocate();
 
   // remove velocity bias
 
   if (biasflag) {
     if (tbias->invoked_scalar != update->ntimestep) tbias->compute_scalar();
     tbias->remove_bias_all();
   }
 
   // calculate COM velocity for each chunk
   // won't be invoked with bias also removed = 2 biases
 
   if (comflag && comstep != update->ntimestep) vcm_compute();
 
   // calculate global temperature, optionally removing COM velocity
 
   double **v = atom->v;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int *type = atom->type;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double t = 0.0;
   int mycount = 0;
 
   if (!comflag) {
     if (rmass) {
       for (i = 0; i < nlocal; i++)
         if (mask[i] & groupbit) {
           index = ichunk[i]-1;
           if (index < 0) continue;
           t += (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]) *
             rmass[i];
           mycount++;
         }
     } else {
       for (i = 0; i < nlocal; i++)
         if (mask[i] & groupbit) {
           index = ichunk[i]-1;
           if (index < 0) continue;
           t += (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]) *
             mass[type[i]];
           mycount++;
       }
     }
 
   } else {
     double vx,vy,vz;
     if (rmass) {
       for (i = 0; i < nlocal; i++)
         if (mask[i] & groupbit) {
           index = ichunk[i]-1;
           if (index < 0) continue;
           vx = v[i][0] - vcmall[index][0];
           vy = v[i][1] - vcmall[index][1];
           vz = v[i][2] - vcmall[index][2];
           t += (vx*vx + vy*vy + vz*vz) * rmass[i];
           mycount++;
         }
     } else {
       for (i = 0; i < nlocal; i++)
         if (mask[i] & groupbit) {
           index = ichunk[i]-1;
           if (index < 0) continue;
           vx = v[i][0] - vcmall[index][0];
           vy = v[i][1] - vcmall[index][1];
           vz = v[i][2] - vcmall[index][2];
           t += (vx*vx + vy*vy + vz*vz) * mass[type[i]];
           mycount++;
       }
     }
   }
 
   // restore velocity bias
 
   if (biasflag) tbias->restore_bias_all();
 
   // final temperature
 
   MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
   double rcount = mycount;
   double allcount;
   MPI_Allreduce(&rcount,&allcount,1,MPI_DOUBLE,MPI_SUM,world);
 
   double dof = nchunk*cdof + adof*allcount;
   double tfactor = 0.0;
   if (dof > 0.0) tfactor = force->mvv2e / (dof * force->boltz);
   if (dof < 0.0 && allcount > 0.0)
     error->all(FLERR,"Temperature compute degrees of freedom < 0");
   scalar *= tfactor;
   return scalar;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempChunk::compute_vector()
 {
   int i,index;
 
   invoked_vector = update->ntimestep;
 
   // calculate chunk assignments,
   //   since only atoms in chunks contribute to global temperature
   // 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
 
   nchunk = cchunk->setup_chunks();
   cchunk->compute_ichunk();
   int *ichunk = cchunk->ichunk;
 
   if (nchunk > maxchunk) allocate();
 
   // remove velocity bias
 
   if (biasflag) {
     if (tbias->invoked_scalar != update->ntimestep) tbias->compute_scalar();
     tbias->remove_bias_all();
   }
 
   // calculate COM velocity for each chunk
   // won't be invoked with bias also removed = 2 biases
 
   if (comflag && comstep != update->ntimestep) vcm_compute();
 
   // calculate KE tensor, optionally removing COM velocity
 
   double **v = atom->v;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int *type = atom->type;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double massone,t[6];
   for (i = 0; i < 6; i++) t[i] = 0.0;
 
   if (!comflag) {
     for (i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
 	index = ichunk[i]-1;
 	if (index < 0) continue;
 	if (rmass) massone = rmass[i];
 	else massone = mass[type[i]];
 	t[0] += massone * v[i][0]*v[i][0];
 	t[1] += massone * v[i][1]*v[i][1];
 	t[2] += massone * v[i][2]*v[i][2];
 	t[3] += massone * v[i][0]*v[i][1];
 	t[4] += massone * v[i][0]*v[i][2];
 	t[5] += massone * v[i][1]*v[i][2];
       }
   } else {
     double vx,vy,vz;
     for (i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
 	index = ichunk[i]-1;
 	if (index < 0) continue;
 	if (rmass) massone = rmass[i];
 	else massone = mass[type[i]];
 	vx = v[i][0] - vcmall[index][0];
 	vy = v[i][1] - vcmall[index][1];
 	vz = v[i][2] - vcmall[index][2];
 	t[0] += massone * vx*vx;
 	t[1] += massone * vy*vy;
 	t[2] += massone * vz*vz;
 	t[3] += massone * vx*vy;
 	t[4] += massone * vx*vz;
 	t[5] += massone * vy*vz;
       }
   }
 
   // restore velocity bias
 
   if (biasflag) tbias->restore_bias_all();
 
   // final KE
 
   MPI_Allreduce(t,vector,6,MPI_DOUBLE,MPI_SUM,world);
   for (i = 0; i < 6; i++) vector[i] *= force->mvv2e;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempChunk::compute_array()
 {
   invoked_array = update->ntimestep;
 
   // compute chunk/atom assigns atoms to chunk IDs
   // extract ichunk index vector from compute
   // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
 
   nchunk = cchunk->setup_chunks();
   cchunk->compute_ichunk();
 
   if (nchunk > maxchunk) allocate();
   size_array_rows = nchunk;
 
   // remove velocity bias
 
   if (biasflag) {
     if (tbias->invoked_scalar != update->ntimestep) tbias->compute_scalar();
     tbias->remove_bias_all();
   }
 
   // calculate COM velocity for each chunk whether comflag set or not
   //   needed by some values even if comflag not set
   // important to do this after velocity bias is removed
   //   otherwise per-chunk values that use both v and vcm will be inconsistent
 
   if (comstep != update->ntimestep) vcm_compute();
 
   // compute each value
 
   for (int i = 0; i < nvalues; i++) {
     if (which[i] == TEMP) temperature(i);
     else if (which[i] == KECOM) kecom(i);
     else if (which[i] == INTERNAL) internal(i);
   }
 
   // restore velocity bias
 
   if (biasflag) tbias->restore_bias_all();
 }
 
 /* ----------------------------------------------------------------------
    calculate velocity of COM for each chunk
 ------------------------------------------------------------------------- */
 
 void ComputeTempChunk::vcm_compute()
 {
   int i,index;
   double massone;
 
   // avoid re-computing VCM more than once per step
 
   comstep = update->ntimestep;
 
   int *ichunk = cchunk->ichunk;
 
   for (int i = 0; i < nchunk; i++) {
     vcm[i][0] = vcm[i][1] = vcm[i][2] = 0.0;
     massproc[i] = 0.0;
   }
 
   double **v = atom->v;
   int *mask = atom->mask;
   int *type = atom->type;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int nlocal = atom->nlocal;
 
   for (i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       vcm[index][0] += v[i][0] * massone;
       vcm[index][1] += v[i][1] * massone;
       vcm[index][2] += v[i][2] * massone;
       massproc[index] += massone;
     }
 
   MPI_Allreduce(&vcm[0][0],&vcmall[0][0],3*nchunk,MPI_DOUBLE,MPI_SUM,world);
   MPI_Allreduce(massproc,masstotal,nchunk,MPI_DOUBLE,MPI_SUM,world);
 
   for (i = 0; i < nchunk; i++) {
     if (masstotal[i] > 0.0) {
       vcmall[i][0] /= masstotal[i];
       vcmall[i][1] /= masstotal[i];
       vcmall[i][2] /= masstotal[i];
     } else {
       vcmall[i][0] = vcmall[i][1] = vcmall[i][2] = 0.0;
     }
   }
 }
 
 /* ----------------------------------------------------------------------
    temperature of each chunk
 ------------------------------------------------------------------------- */
 
 void ComputeTempChunk::temperature(int icol)
 {
   int i,index;
   int *ichunk = cchunk->ichunk;
 
   // zero local per-chunk values
 
   for (int i = 0; i < nchunk; i++) {
     count[i] = 0;
     sum[i] = 0.0;
   }
 
   // per-chunk temperature, option for removing COM velocity
 
   double **v = atom->v;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int *mask = atom->mask;
   int *type = atom->type;
   int nlocal = atom->nlocal;
 
   if (!comflag) {
     if (rmass) {
       for (i = 0; i < nlocal; i++)
         if (mask[i] & groupbit) {
           index = ichunk[i]-1;
           if (index < 0) continue;
           sum[index] += (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]) *
             rmass[i];
           count[index]++;
         }
     } else {
       for (i = 0; i < nlocal; i++)
         if (mask[i] & groupbit) {
           index = ichunk[i]-1;
           if (index < 0) continue;
           sum[index] += (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]) *
             mass[type[i]];
           count[index]++;
       }
     }
 
   } else {
     double vx,vy,vz;
     if (rmass) {
       for (i = 0; i < nlocal; i++)
         if (mask[i] & groupbit) {
           index = ichunk[i]-1;
           if (index < 0) continue;
           vx = v[i][0] - vcmall[index][0];
           vy = v[i][1] - vcmall[index][1];
           vz = v[i][2] - vcmall[index][2];
           sum[index] += (vx*vx + vy*vy + vz*vz) * rmass[i];
           count[index]++;
         }
     } else {
       for (i = 0; i < nlocal; i++)
         if (mask[i] & groupbit) {
           index = ichunk[i]-1;
           if (index < 0) continue;
           vx = v[i][0] - vcmall[index][0];
           vy = v[i][1] - vcmall[index][1];
           vz = v[i][2] - vcmall[index][2];
           sum[index] += (vx*vx + vy*vy + vz*vz) * mass[type[i]];
           count[index]++;
       }
     }
   }
 
   // sum across procs
 
   MPI_Allreduce(sum,sumall,nchunk,MPI_DOUBLE,MPI_SUM,world);
   MPI_Allreduce(count,countall,nchunk,MPI_INT,MPI_SUM,world);
 
   // normalize temperatures by per-chunk DOF
 
   double dof,tfactor;
   double mvv2e = force->mvv2e;
   double boltz = force->boltz;
 
   for (int i = 0; i < nchunk; i++) {
     dof = cdof + adof*countall[i];
     if (dof > 0.0) tfactor = mvv2e / (dof * boltz);
     else tfactor = 0.0;
     array[i][icol] = tfactor * sumall[i];
   }
 }
 
 /* ----------------------------------------------------------------------
    KE of entire chunk moving at VCM
 ------------------------------------------------------------------------- */
 
 void ComputeTempChunk::kecom(int icol)
 {
   int index;
   int *ichunk = cchunk->ichunk;
 
   // zero local per-chunk values
 
   for (int i = 0; i < nchunk; i++) sum[i] = 0.0;
 
   // per-chunk COM KE
 
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int *mask = atom->mask;
   int *type = atom->type;
   int nlocal = atom->nlocal;
 
   double vx,vy,vz;
   if (rmass) {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         index = ichunk[i]-1;
         if (index < 0) continue;
         vx = vcmall[index][0];
         vy = vcmall[index][1];
         vz = vcmall[index][2];
         sum[index] += (vx*vx + vy*vy + vz*vz) * rmass[i];
       }
   } else {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         index = ichunk[i]-1;
         if (index < 0) continue;
         vx = vcmall[index][0];
         vy = vcmall[index][1];
         vz = vcmall[index][2];
         sum[index] += (vx*vx + vy*vy + vz*vz) * mass[type[i]];
       }
   }
 
   // sum across procs
 
   MPI_Allreduce(sum,sumall,nchunk,MPI_DOUBLE,MPI_SUM,world);
 
   double mvv2e = force->mvv2e;
   for (int i = 0; i < nchunk; i++)
     array[i][icol] = 0.5 * mvv2e * sumall[i];
 
 }
 
 /* ----------------------------------------------------------------------
    internal KE of each chunk around its VCM
    computed using per-atom velocities with chunk VCM subtracted off
 ------------------------------------------------------------------------- */
 
 void ComputeTempChunk::internal(int icol)
 {
   int index;
   int *ichunk = cchunk->ichunk;
 
   // zero local per-chunk values
 
   for (int i = 0; i < nchunk; i++) sum[i] = 0.0;
 
   // per-chunk internal KE
 
   double **v = atom->v;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int *mask = atom->mask;
   int *type = atom->type;
   int nlocal = atom->nlocal;
 
   double vx,vy,vz;
   if (rmass) {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         index = ichunk[i]-1;
         if (index < 0) continue;
         vx = v[i][0] - vcmall[index][0];
         vy = v[i][1] - vcmall[index][1];
         vz = v[i][2] - vcmall[index][2];
         sum[index] += (vx*vx + vy*vy + vz*vz) * rmass[i];
       }
   } else {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         index = ichunk[i]-1;
         if (index < 0) continue;
         vx = v[i][0] - vcmall[index][0];
         vy = v[i][1] - vcmall[index][1];
         vz = v[i][2] - vcmall[index][2];
         sum[index] += (vx*vx + vy*vy + vz*vz) * mass[type[i]];
       }
   }
 
   // sum across procs
 
   MPI_Allreduce(sum,sumall,nchunk,MPI_DOUBLE,MPI_SUM,world);
 
   double mvv2e = force->mvv2e;
   for (int i = 0; i < nchunk; i++)
     array[i][icol] = 0.5 * mvv2e * sumall[i];
 }
 
 /* ----------------------------------------------------------------------
    bias methods: called by thermostats
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    remove velocity bias from atom I to leave thermal velocity
 ------------------------------------------------------------------------- */
 
 void ComputeTempChunk::remove_bias(int i, double *v)
 {
   int index = cchunk->ichunk[i]-1;
   if (index < 0) return;
   v[0] -= vcmall[index][0];
   v[1] -= vcmall[index][1];
   v[2] -= vcmall[index][2];
 }
 
 /* ----------------------------------------------------------------------
    remove velocity bias from all atoms to leave thermal velocity
 ------------------------------------------------------------------------- */
 
 void ComputeTempChunk::remove_bias_all()
 {
   int index;
   int *ichunk = cchunk->ichunk;
 
   double **v = atom->v;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       v[i][0] -= vcmall[index][0];
       v[i][1] -= vcmall[index][1];
       v[i][2] -= vcmall[index][2];
     }
 }
 
 /* ----------------------------------------------------------------------
    add back in velocity bias to atom I removed by remove_bias()
    assume remove_bias() was previously called
 ------------------------------------------------------------------------- */
 
 void ComputeTempChunk::restore_bias(int i, double *v)
 {
   int index = cchunk->ichunk[i]-1;
   if (index < 0) return;
   v[0] += vcmall[index][0];
   v[1] += vcmall[index][1];
   v[2] += vcmall[index][2];
 }
 
 /* ----------------------------------------------------------------------
    add back in velocity bias to all atoms removed by remove_bias_all()
    assume remove_bias_all() was previously called
 ------------------------------------------------------------------------- */
 
 void ComputeTempChunk::restore_bias_all()
 {
   int index;
   int *ichunk = cchunk->ichunk;
 
   double **v = atom->v;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       v[i][0] += vcmall[index][0];
       v[i][1] += vcmall[index][1];
       v[i][2] += vcmall[index][2];
     }
 }
 
 /* ----------------------------------------------------------------------
    lock methods: called by fix ave/time
    these methods insure vector/array size is locked for Nfreq epoch
      by passing lock info along to compute chunk/atom
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    increment lock counter
 ------------------------------------------------------------------------- */
 
 void ComputeTempChunk::lock_enable()
 {
   cchunk->lockcount++;
 }
 
 /* ----------------------------------------------------------------------
    decrement lock counter in compute chunk/atom, it if still exists
 ------------------------------------------------------------------------- */
 
 void ComputeTempChunk::lock_disable()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute >= 0) {
     cchunk = (ComputeChunkAtom *) modify->compute[icompute];
     cchunk->lockcount--;
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate and return # of chunks = length of vector/array
 ------------------------------------------------------------------------- */
 
 int ComputeTempChunk::lock_length()
 {
   nchunk = cchunk->setup_chunks();
   return nchunk;
 }
 
 /* ----------------------------------------------------------------------
    set the lock from startstep to stopstep
 ------------------------------------------------------------------------- */
 
 void ComputeTempChunk::lock(Fix *fixptr, bigint startstep, bigint stopstep)
 {
   cchunk->lock(fixptr,startstep,stopstep);
 }
 
 /* ----------------------------------------------------------------------
    unset the lock
 ------------------------------------------------------------------------- */
 
 void ComputeTempChunk::unlock(Fix *fixptr)
 {
   cchunk->unlock(fixptr);
 }
 
 /* ----------------------------------------------------------------------
    free and reallocate per-chunk arrays
 ------------------------------------------------------------------------- */
 
 void ComputeTempChunk::allocate()
 {
   memory->destroy(sum);
   memory->destroy(sumall);
   memory->destroy(count);
   memory->destroy(countall);
   memory->destroy(array);
   maxchunk = nchunk;
   memory->create(sum,maxchunk,"temp/chunk:sum");
   memory->create(sumall,maxchunk,"temp/chunk:sumall");
   memory->create(count,maxchunk,"temp/chunk:count");
   memory->create(countall,maxchunk,"temp/chunk:countall");
   memory->create(array,maxchunk,nvalues,"temp/chunk:array");
 
   if (comflag || nvalues) {
     memory->destroy(massproc);
     memory->destroy(masstotal);
     memory->destroy(vcm);
     memory->destroy(vcmall);
     memory->create(massproc,maxchunk,"vcm/chunk:massproc");
     memory->create(masstotal,maxchunk,"vcm/chunk:masstotal");
     memory->create(vcm,maxchunk,3,"vcm/chunk:vcm");
     memory->create(vcmall,maxchunk,3,"vcm/chunk:vcmall");
   }
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeTempChunk::memory_usage()
 {
   double bytes = (bigint) maxchunk * 2 * sizeof(double);
   bytes += (bigint) maxchunk * 2 * sizeof(int);
   bytes += (bigint) maxchunk * nvalues * sizeof(double);
   if (comflag || nvalues) {
     bytes += (bigint) maxchunk * 2 * sizeof(double);
     bytes += (bigint) maxchunk * 2*3 * sizeof(double);
   }
   return bytes;
 }
diff --git a/src/compute_temp_profile.cpp b/src/compute_temp_profile.cpp
index 654bea7eb..1c6e56359 100644
--- a/src/compute_temp_profile.cpp
+++ b/src/compute_temp_profile.cpp
@@ -1,566 +1,566 @@
 /* ----------------------------------------------------------------------
    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 <stdlib.h>
 #include <string.h>
 #include "compute_temp_profile.h"
 #include "atom.h"
 #include "update.h"
 #include "force.h"
 #include "group.h"
 #include "fix.h"
 #include "domain.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 enum{TENSOR,BIN};
 
 /* ---------------------------------------------------------------------- */
 
 ComputeTempProfile::ComputeTempProfile(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  bin(NULL), vbin(NULL), binave(NULL), tbin(NULL), tbinall(NULL)
 {
   if (narg < 7) error->all(FLERR,"Illegal compute temp/profile command");
 
   scalar_flag = 1;
   extscalar = 0;
   tempflag = 1;
   tempbias = 1;
 
   xflag = force->inumeric(FLERR,arg[3]);
   yflag = force->inumeric(FLERR,arg[4]);
   zflag = force->inumeric(FLERR,arg[5]);
   if (zflag && domain->dimension == 2)
     error->all(FLERR,"Compute temp/profile cannot use vz for 2d systemx");
 
   ncount = 0;
   ivx = ivy = ivz = 0;
   if (xflag) ivx = ncount++;
   if (yflag) ivy = ncount++;
   if (zflag) ivz = ncount++;
   ncount += 2;
 
   nbinx = nbiny = nbinz = 1;
 
   int iarg = 6;
   if (strcmp(arg[iarg],"x") == 0) {
     if (iarg+2 > narg) error->all(FLERR,"Illegal compute temp/profile command");
     nbinx = force->inumeric(FLERR,arg[iarg+1]);
     iarg += 2;
   } else if (strcmp(arg[iarg],"y") == 0) {
     if (iarg+2 > narg) error->all(FLERR,"Illegal compute temp/profile command");
     nbiny = force->inumeric(FLERR,arg[iarg+1]);
     iarg += 2;
   } else if (strcmp(arg[iarg],"z") == 0) {
     if (iarg+2 > narg) error->all(FLERR,"Illegal compute temp/profile command");
     if (domain->dimension == 2)
       error->all(FLERR,"Compute temp/profile cannot bin z for 2d systems");
     nbinz = force->inumeric(FLERR,arg[iarg+1]);
     iarg += 2;
   } else if (strcmp(arg[iarg],"xy") == 0) {
     if (iarg+3 > narg) error->all(FLERR,"Illegal compute temp/profile command");
     nbinx = force->inumeric(FLERR,arg[iarg+1]);
     nbiny = force->inumeric(FLERR,arg[iarg+2]);
     iarg += 3;
   } else if (strcmp(arg[iarg],"yz") == 0) {
     if (iarg+3 > narg) error->all(FLERR,"Illegal compute temp/profile command");
     if (domain->dimension == 2)
       error->all(FLERR,"Compute temp/profile cannot bin z for 2d systems");
     nbiny = force->inumeric(FLERR,arg[iarg+1]);
     nbinz = force->inumeric(FLERR,arg[iarg+2]);
     iarg += 3;
   } else if (strcmp(arg[iarg],"xz") == 0) {
     if (iarg+3 > narg) error->all(FLERR,"Illegal compute temp/profile command");
     if (domain->dimension == 2)
       error->all(FLERR,"Compute temp/profile cannot bin z for 2d systems");
     nbinx = force->inumeric(FLERR,arg[iarg+1]);
     nbinz = force->inumeric(FLERR,arg[iarg+2]);
     iarg += 3;
   } else if (strcmp(arg[iarg],"xyz") == 0) {
     if (iarg+4 > narg) error->all(FLERR,"Illegal compute temp/profile command");
     if (domain->dimension == 2)
       error->all(FLERR,"Compute temp/profile cannot bin z for 2d systems");
     nbinx = force->inumeric(FLERR,arg[iarg+1]);
     nbiny = force->inumeric(FLERR,arg[iarg+2]);
     nbinz = force->inumeric(FLERR,arg[iarg+3]);
     iarg += 4;
   } else error->all(FLERR,"Illegal compute temp/profile command");
 
   // optional keywords
 
   outflag = TENSOR;
 
   while (iarg < narg) {
     if (strcmp(arg[iarg],"out") == 0) {
       if (iarg+2 > narg)
         error->all(FLERR,"Illegal compute temp/profile command");
       if (strcmp(arg[iarg+1],"tensor") == 0) outflag = TENSOR;
       else if (strcmp(arg[iarg+1],"bin") == 0) outflag = BIN;
       else error->all(FLERR,"Illegal compute temp/profile command");
       iarg += 2;
     } else error->all(FLERR,"Illegal compute temp/profile command");
   }
 
   // setup
 
   nbins = nbinx*nbiny*nbinz;
   if (nbins <= 0) error->all(FLERR,"Illegal compute temp/profile command");
 
   memory->create(vbin,nbins,ncount,"temp/profile:vbin");
   memory->create(binave,nbins,ncount,"temp/profile:binave");
 
   if (outflag == TENSOR) {
     vector_flag = 1;
     size_vector = 6;
     extvector = 1;
     vector = new double[size_vector];
   } else {
     array_flag = 1;
     size_array_rows = nbins;
     size_array_cols = 2;
     extarray = 0;
     memory->create(tbin,nbins,"temp/profile:tbin");
     memory->create(tbinall,nbins,"temp/profile:tbinall");
     memory->create(array,nbins,2,"temp/profile:array");
   }
 
   maxatom = 0;
-  bin = NULL;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeTempProfile::~ComputeTempProfile()
 {
   memory->destroy(vbin);
   memory->destroy(binave);
   memory->destroy(bin);
   if (outflag == TENSOR) delete [] vector;
   else {
     memory->destroy(tbin);
     memory->destroy(tbinall);
     memory->destroy(array);
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempProfile::init()
 {
   dof_compute();
 
   // ptrs to domain data
 
   box_change = domain->box_change;
   triclinic = domain->triclinic;
   periodicity = domain->periodicity;
 
   if (triclinic) {
     boxlo = domain->boxlo_lamda;
     boxhi = domain->boxhi_lamda;
     prd = domain->prd_lamda;
   } else {
     boxlo = domain->boxlo;
     boxhi = domain->boxhi;
     prd = domain->prd;
   }
 
   if (!box_change) bin_setup();
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempProfile::setup()
 {
   dynamic = 0;
   if (dynamic_user || group->dynamic[igroup]) dynamic = 1;
   dof_compute();
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempProfile::dof_compute()
 {
   adjust_dof_fix();
   natoms_temp = group->count(igroup);
   dof = domain->dimension * natoms_temp;
 
   // subtract additional d*Nbins DOF, as in Evans and Morriss paper
 
   dof -= extra_dof + fix_dof + domain->dimension*nbins;
   if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
   else tfactor = 0.0;
 }
 
 /* ---------------------------------------------------------------------- */
 
 double ComputeTempProfile::compute_scalar()
 {
   int ibin;
   double vthermal[3];
 
   invoked_scalar = update->ntimestep;
 
   bin_average();
 
   double **v = atom->v;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int *type = atom->type;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double t = 0.0;
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       ibin = bin[i];
       if (xflag) vthermal[0] = v[i][0] - binave[ibin][ivx];
       else vthermal[0] = v[i][0];
       if (yflag) vthermal[1] = v[i][1] - binave[ibin][ivy];
       else vthermal[1] = v[i][1];
       if (zflag) vthermal[2] = v[i][2] - binave[ibin][ivz];
       else vthermal[2] = v[i][2];
 
       if (rmass)
         t += (vthermal[0]*vthermal[0] + vthermal[1]*vthermal[1] +
               vthermal[2]*vthermal[2]) * rmass[i];
       else
         t += (vthermal[0]*vthermal[0] + vthermal[1]*vthermal[1] +
               vthermal[2]*vthermal[2]) * mass[type[i]];
     }
 
   MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
   if (dynamic) dof_compute();
   if (dof < 0.0 && natoms_temp > 0.0)
     error->all(FLERR,"Temperature compute degrees of freedom < 0");
   scalar *= tfactor;
   return scalar;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempProfile::compute_vector()
 {
   int i,ibin;
   double vthermal[3];
 
   invoked_vector = update->ntimestep;
 
   bin_average();
 
   double **v = atom->v;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int *type = atom->type;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double massone,t[6];
   for (i = 0; i < 6; i++) t[i] = 0.0;
 
   for (i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       ibin = bin[i];
       if (xflag) vthermal[0] = v[i][0] - binave[ibin][ivx];
       else vthermal[0] = v[i][0];
       if (yflag) vthermal[1] = v[i][1] - binave[ibin][ivy];
       else vthermal[1] = v[i][1];
       if (zflag) vthermal[2] = v[i][2] - binave[ibin][ivz];
       else vthermal[2] = v[i][2];
 
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       t[0] += massone * vthermal[0]*vthermal[0];
       t[1] += massone * vthermal[1]*vthermal[1];
       t[2] += massone * vthermal[2]*vthermal[2];
       t[3] += massone * vthermal[0]*vthermal[1];
       t[4] += massone * vthermal[0]*vthermal[2];
       t[5] += massone * vthermal[1]*vthermal[2];
     }
 
   MPI_Allreduce(t,vector,6,MPI_DOUBLE,MPI_SUM,world);
   for (i = 0; i < 6; i++) vector[i] *= force->mvv2e;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempProfile::compute_array()
 {
   int i,ibin;
   double vthermal[3];
 
   invoked_array = update->ntimestep;
 
   bin_average();
 
   double **v = atom->v;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int *type = atom->type;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (i = 0; i < nbins; i++) tbin[i] = 0.0;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       ibin = bin[i];
       if (xflag) vthermal[0] = v[i][0] - binave[ibin][ivx];
       else vthermal[0] = v[i][0];
       if (yflag) vthermal[1] = v[i][1] - binave[ibin][ivy];
       else vthermal[1] = v[i][1];
       if (zflag) vthermal[2] = v[i][2] - binave[ibin][ivz];
       else vthermal[2] = v[i][2];
 
       if (rmass)
         tbin[ibin] += (vthermal[0]*vthermal[0] + vthermal[1]*vthermal[1] +
                        vthermal[2]*vthermal[2]) * rmass[i];
       else
         tbin[ibin] += (vthermal[0]*vthermal[0] + vthermal[1]*vthermal[1] +
                        vthermal[2]*vthermal[2]) * mass[type[i]];
     }
 
   MPI_Allreduce(tbin,tbinall,nbins,MPI_DOUBLE,MPI_SUM,world);
 
   int nper = domain->dimension;
   for (i = 0; i < nbins; i++) {
     array[i][0] = binave[i][ncount-1];
     if (array[i][0] > 0.0) {
       dof = nper*array[i][0] - extra_dof;
       if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
       else tfactor = 0.0;
       array[i][1] = tfactor*tbinall[i];
     } else array[i][1] = 0.0;
   }
 }
 
 /* ----------------------------------------------------------------------
    remove velocity bias from atom I to leave thermal velocity
 ------------------------------------------------------------------------- */
 
 void ComputeTempProfile::remove_bias(int i, double *v)
 {
   int ibin = bin[i];
   if (xflag) v[0] -= binave[ibin][ivx];
   if (yflag) v[1] -= binave[ibin][ivy];
   if (zflag) v[2] -= binave[ibin][ivz];
 }
 
 /* ----------------------------------------------------------------------
    remove velocity bias from all atoms to leave thermal velocity
 ------------------------------------------------------------------------- */
 
 void ComputeTempProfile::remove_bias_all()
 {
   double **v = atom->v;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   int ibin;
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       ibin = bin[i];
       if (xflag) v[i][0] -= binave[ibin][ivx];
       if (yflag) v[i][1] -= binave[ibin][ivy];
       if (zflag) v[i][2] -= binave[ibin][ivz];
     }
 }
 
 /* ----------------------------------------------------------------------
    add back in velocity bias to atom I removed by remove_bias()
    assume remove_bias() was previously called
 ------------------------------------------------------------------------- */
 
 void ComputeTempProfile::restore_bias(int i, double *v)
 {
   int ibin = bin[i];
   if (xflag) v[0] += binave[ibin][ivx];
   if (yflag) v[1] += binave[ibin][ivy];
   if (zflag) v[2] += binave[ibin][ivz];
 }
 
 /* ----------------------------------------------------------------------
    add back in velocity bias to all atoms removed by remove_bias_all()
    assume remove_bias_all() was previously called
 ------------------------------------------------------------------------- */
 
 void ComputeTempProfile::restore_bias_all()
 {
   double **v = atom->v;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   int ibin;
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       ibin = bin[i];
       if (xflag) v[i][0] += binave[ibin][ivx];
       if (yflag) v[i][1] += binave[ibin][ivy];
       if (zflag) v[i][2] += binave[ibin][ivz];
     }
 }
 
 /* ----------------------------------------------------------------------
    compute average COM velocity in each bin
 ------------------------------------------------------------------------- */
 
 void ComputeTempProfile::bin_average()
 {
   int i,j,ibin;
 
   if (box_change) bin_setup();
   bin_assign();
 
   // clear bins, including particle mass and count
 
   for (i = 0; i < nbins; i++)
     for (j = 0; j < ncount; j++)
       vbin[i][j] = 0.0;
 
   // sum each particle's mass-weighted velocity, mass, count to appropriate bin
 
   double **v = atom->v;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int *mask = atom->mask;
   int *type = atom->type;
   int nlocal = atom->nlocal;
 
   int nc2 = ncount-2;
   int nc1 = ncount-1;
 
   if (rmass) {
     for (i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         ibin = bin[i];
         if (xflag) vbin[ibin][ivx] += rmass[i]*v[i][0];
         if (yflag) vbin[ibin][ivy] += rmass[i]*v[i][1];
         if (zflag) vbin[ibin][ivz] += rmass[i]*v[i][2];
         vbin[ibin][nc2] += rmass[i];
         vbin[ibin][nc1] += 1.0;
       }
   } else {
     double onemass;
     for (i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         ibin = bin[i];
         onemass = mass[type[i]];
         if (xflag) vbin[ibin][ivx] += onemass*v[i][0];
         if (yflag) vbin[ibin][ivy] += onemass*v[i][1];
         if (zflag) vbin[ibin][ivz] += onemass*v[i][2];
         vbin[ibin][nc2] += onemass;
         vbin[ibin][nc1] += 1.0;
       }
   }
 
   // sum bins across processors
 
   MPI_Allreduce(vbin[0],binave[0],nbins*ncount,MPI_DOUBLE,MPI_SUM,world);
 
   // compute ave COM velocity in each bin, checking for no particles
 
   for (i = 0; i < nbins; i++)
     if (binave[i][nc1] > 0.0)
       for (j = 0; j < nc2; j++)
         binave[i][j] /= binave[i][nc2];
 }
 
 /* ----------------------------------------------------------------------
    set bin sizes, redo if box size changes
 ------------------------------------------------------------------------- */
 
 void ComputeTempProfile::bin_setup()
 {
   invdelta[0] = nbinx / prd[0];
   invdelta[1] = nbiny / prd[1];
   invdelta[2] = nbinz / prd[2];
 }
 
 /* ----------------------------------------------------------------------
    assign all atoms to bins
 ------------------------------------------------------------------------- */
 
 void ComputeTempProfile::bin_assign()
 {
   // reallocate bin array if necessary
 
   if (atom->nmax > maxatom) {
     maxatom = atom->nmax;
     memory->destroy(bin);
     memory->create(bin,maxatom,"temp/profile:bin");
   }
 
   // assign each atom to a bin, accounting for PBC
   // if triclinic, do this in lamda space
 
   double **x = atom->x;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   int ibinx,ibiny,ibinz;
   double coord;
 
   if (triclinic) domain->x2lamda(nlocal);
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       if (nbinx > 1) {
         coord = x[i][0];
         if (periodicity[0]) {
           if (coord < boxlo[0]) coord += prd[0];
           if (coord >= boxhi[0]) coord -= prd[0];
         }
         ibinx = static_cast<int> ((coord - boxlo[0]) * invdelta[0]);
         ibinx = MAX(ibinx,0);
         ibinx = MIN(ibinx,nbinx-1);
       } else ibinx = 0;
 
       if (nbiny > 1) {
         coord = x[i][1];
         if (periodicity[1]) {
           if (coord < boxlo[1]) coord += prd[1];
           if (coord >= boxhi[1]) coord -= prd[1];
         }
         ibiny = static_cast<int> ((coord - boxlo[1]) * invdelta[1]);
         ibiny = MAX(ibiny,0);
         ibiny = MIN(ibiny,nbiny-1);
       } else ibiny = 0;
 
       if (nbinz > 1) {
         coord = x[i][2];
         if (periodicity[2]) {
           if (coord < boxlo[2]) coord += prd[2];
           if (coord >= boxhi[2]) coord -= prd[2];
         }
         ibinz = static_cast<int> ((coord - boxlo[2]) * invdelta[2]);
         ibinz = MAX(ibinz,0);
         ibinz = MIN(ibinz,nbinz-1);
       } else ibinz = 0;
 
       bin[i] = nbinx*nbiny*ibinz + nbinx*ibiny + ibinx;
     }
 
   if (triclinic) domain->lamda2x(nlocal);
 }
 
 /* ---------------------------------------------------------------------- */
 
 double ComputeTempProfile::memory_usage()
 {
   double bytes = maxatom * sizeof(int);
   bytes += nbins*ncount * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_temp_region.cpp b/src/compute_temp_region.cpp
index 33e07bfb1..e63666934 100644
--- a/src/compute_temp_region.cpp
+++ b/src/compute_temp_region.cpp
@@ -1,270 +1,271 @@
 /* ----------------------------------------------------------------------
    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 <string.h>
 #include "compute_temp_region.h"
 #include "atom.h"
 #include "update.h"
 #include "force.h"
 #include "domain.h"
 #include "region.h"
 #include "group.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeTempRegion::ComputeTempRegion(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  idregion(NULL)
 {
   if (narg != 4) error->all(FLERR,"Illegal compute temp/region command");
 
   iregion = domain->find_region(arg[3]);
   if (iregion == -1)
     error->all(FLERR,"Region ID for compute temp/region does not exist");
   int n = strlen(arg[3]) + 1;
   idregion = new char[n];
   strcpy(idregion,arg[3]);
 
   scalar_flag = vector_flag = 1;
   size_vector = 6;
   extscalar = 0;
   extvector = 1;
   tempflag = 1;
   tempbias = 1;
 
   maxbias = 0;
   vbiasall = NULL;
   vector = new double[6];
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeTempRegion::~ComputeTempRegion()
 {
   delete [] idregion;
   memory->destroy(vbiasall);
   delete [] vector;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempRegion::init()
 {
   // set index and check validity of region
 
   iregion = domain->find_region(idregion);
   if (iregion == -1)
     error->all(FLERR,"Region ID for compute temp/region does not exist");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempRegion::setup()
 {
   dynamic = 0;
   if (dynamic_user || group->dynamic[igroup]) dynamic = 1;
   dof = 0.0;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempRegion::dof_remove_pre()
 {
   domain->regions[iregion]->prematch();
 }
 
 /* ---------------------------------------------------------------------- */
 
 int ComputeTempRegion::dof_remove(int i)
 {
   double *x = atom->x[i];
   if (domain->regions[iregion]->match(x[0],x[1],x[2])) return 0;
   return 1;
 }
 
 /* ---------------------------------------------------------------------- */
 
 double ComputeTempRegion::compute_scalar()
 {
   invoked_scalar = update->ntimestep;
 
   double **x = atom->x;
   double **v = atom->v;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int *type = atom->type;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   Region *region = domain->regions[iregion];
   region->prematch();
 
   int count = 0;
   double t = 0.0;
 
   if (rmass) {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit && region->match(x[i][0],x[i][1],x[i][2])) {
         count++;
         t += (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]) * rmass[i];
       }
   } else {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit && region->match(x[i][0],x[i][1],x[i][2])) {
         count++;
         t += (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]) *
           mass[type[i]];
       }
   }
 
   double tarray[2],tarray_all[2];
   tarray[0] = count;
   tarray[1] = t;
   MPI_Allreduce(tarray,tarray_all,2,MPI_DOUBLE,MPI_SUM,world);
   dof = domain->dimension * tarray_all[0] - extra_dof;
   if (dof < 0.0 && tarray_all[0] > 0.0)
     error->all(FLERR,"Temperature compute degrees of freedom < 0");
   if (dof > 0) scalar = force->mvv2e * tarray_all[1] / (dof * force->boltz);
   else scalar = 0.0;
   return scalar;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempRegion::compute_vector()
 {
   int i;
 
   invoked_vector = update->ntimestep;
 
   double **x = atom->x;
   double **v = atom->v;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int *type = atom->type;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   Region *region = domain->regions[iregion];
   region->prematch();
 
   double massone,t[6];
   for (i = 0; i < 6; i++) t[i] = 0.0;
 
   for (i = 0; i < nlocal; i++)
     if (mask[i] & groupbit && region->match(x[i][0],x[i][1],x[i][2])) {
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       t[0] += massone * v[i][0]*v[i][0];
       t[1] += massone * v[i][1]*v[i][1];
       t[2] += massone * v[i][2]*v[i][2];
       t[3] += massone * v[i][0]*v[i][1];
       t[4] += massone * v[i][0]*v[i][2];
       t[5] += massone * v[i][1]*v[i][2];
     }
 
   MPI_Allreduce(t,vector,6,MPI_DOUBLE,MPI_SUM,world);
   for (i = 0; i < 6; i++) vector[i] *= force->mvv2e;
 }
 
 /* ----------------------------------------------------------------------
    remove velocity bias from atom I to leave thermal velocity
 ------------------------------------------------------------------------- */
 
 void ComputeTempRegion::remove_bias(int i, double *v)
 {
   double *x = atom->x[i];
   if (domain->regions[iregion]->match(x[0],x[1],x[2]))
     vbias[0] = vbias[1] = vbias[2] = 0.0;
   else {
     vbias[0] = v[0];
     vbias[1] = v[1];
     vbias[2] = v[2];
     v[0] = v[1] = v[2] = 0.0;
   }
 }
 
 /* ----------------------------------------------------------------------
    remove velocity bias from all atoms to leave thermal velocity
 ------------------------------------------------------------------------- */
 
 void ComputeTempRegion::remove_bias_all()
 {
   double **x = atom->x;
   double **v = atom->v;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   if (atom->nmax > maxbias) {
     memory->destroy(vbiasall);
     maxbias = atom->nmax;
     memory->create(vbiasall,maxbias,3,"temp/region:vbiasall");
   }
 
   Region *region = domain->regions[iregion];
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       if (region->match(x[i][0],x[i][1],x[i][2]))
         vbiasall[i][0] = vbiasall[i][1] = vbiasall[i][2] = 0.0;
       else {
         vbiasall[i][0] = v[i][0];
         vbiasall[i][1] = v[i][1];
         vbiasall[i][2] = v[i][2];
         v[i][0] = v[i][1] = v[i][2] = 0.0;
       }
     }
 }
 
 /* ----------------------------------------------------------------------
    add back in velocity bias to atom I removed by remove_bias()
    assume remove_bias() was previously called
 ------------------------------------------------------------------------- */
 
 void ComputeTempRegion::restore_bias(int i, double *v)
 {
   v[0] += vbias[0];
   v[1] += vbias[1];
   v[2] += vbias[2];
 }
 
 /* ----------------------------------------------------------------------
    add back in velocity bias to all atoms removed by remove_bias_all()
    assume remove_bias_all() was previously called
 ------------------------------------------------------------------------- */
 
 void ComputeTempRegion::restore_bias_all()
 {
   double **v = atom->v;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       v[i][0] += vbiasall[i][0];
       v[i][1] += vbiasall[i][1];
       v[i][2] += vbiasall[i][2];
     }
 }
 
 /* ---------------------------------------------------------------------- */
 
 double ComputeTempRegion::memory_usage()
 {
   double bytes = 3*maxbias * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_temp_sphere.cpp b/src/compute_temp_sphere.cpp
index 64b23308e..50995dfa8 100644
--- a/src/compute_temp_sphere.cpp
+++ b/src/compute_temp_sphere.cpp
@@ -1,337 +1,337 @@
 /* ----------------------------------------------------------------------
    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 <string.h>
 #include "compute_temp_sphere.h"
 #include "atom.h"
 #include "atom_vec.h"
 #include "update.h"
 #include "force.h"
 #include "domain.h"
 #include "modify.h"
 #include "comm.h"
 #include "group.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 enum{ROTATE,ALL};
 
 #define INERTIA 0.4          // moment of inertia prefactor for sphere
 
 /* ---------------------------------------------------------------------- */
 
 ComputeTempSphere::ComputeTempSphere(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  id_bias(NULL)
 {
   if (narg < 3) error->all(FLERR,"Illegal compute temp/sphere command");
 
   scalar_flag = vector_flag = 1;
   size_vector = 6;
   extscalar = 0;
   extvector = 1;
   tempflag = 1;
 
   tempbias = 0;
-  id_bias = NULL;
   mode = ALL;
 
   int iarg = 3;
   while (iarg < narg) {
     if (strcmp(arg[iarg],"bias") == 0) {
       if (iarg+2 > narg)
         error->all(FLERR,"Illegal compute temp/sphere command");
       tempbias = 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],"dof") == 0) {
       if (iarg+2 > narg)
         error->all(FLERR,"Illegal compute temp/sphere command");
       if (strcmp(arg[iarg+1],"rotate") == 0) mode = ROTATE;
       else if (strcmp(arg[iarg+1],"all") == 0) mode = ALL;
       else error->all(FLERR,"Illegal compute temp/sphere command");
       iarg += 2;
     } else error->all(FLERR,"Illegal compute temp/sphere command");
   }
 
   vector = new double[6];
 
   // error checks
 
   if (!atom->sphere_flag)
     error->all(FLERR,"Compute temp/sphere requires atom style sphere");
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeTempSphere::~ComputeTempSphere()
 {
   delete [] id_bias;
   delete [] vector;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempSphere::init()
 {
   if (tempbias) {
     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");
     if (tbias->igroup != igroup)
       error->all(FLERR,"Bias compute group does not match compute group");
     if (strcmp(tbias->style,"temp/region") == 0) tempbias = 2;
     else tempbias = 1;
 
     // init and setup bias compute because
     // this compute's setup()->dof_compute() may be called first
 
     tbias->init();
     tbias->setup();
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempSphere::setup()
 {
   dynamic = 0;
   if (dynamic_user || group->dynamic[igroup]) dynamic = 1;
   dof_compute();
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempSphere::dof_compute()
 {
   int count,count_all;
 
   adjust_dof_fix();
   natoms_temp = group->count(igroup);
 
   // 6 or 3 dof for extended/point particles for 3d
   // 3 or 2 dof for extended/point particles for 2d
   // which dof are included also depends on mode
   // assume full rotation of extended particles
   // user should correct this via compute_modify if needed
 
   double *radius = atom->radius;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   count = 0;
   if (domain->dimension == 3) {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         if (radius[i] == 0.0) {
           if (mode == ALL) count += 3;
         } else {
           if (mode == ALL) count += 6;
           else count += 3;
         }
       }
   } else {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         if (radius[i] == 0.0) {
           if (mode == ALL) count += 2;
         } else {
           if (mode == ALL) count += 3;
           else count += 1;
         }
       }
   }
 
   MPI_Allreduce(&count,&count_all,1,MPI_INT,MPI_SUM,world);
   dof = count_all;
 
   // additional adjustments to dof
 
   if (tempbias == 1) {
     if (mode == ALL) dof -= tbias->dof_remove(-1) * natoms_temp;
 
   } else if (tempbias == 2) {
     int *mask = atom->mask;
     int nlocal = atom->nlocal;
 
     tbias->dof_remove_pre();
 
     count = 0;
     if (domain->dimension == 3) {
       for (int i = 0; i < nlocal; i++)
         if (mask[i] & groupbit) {
           if (tbias->dof_remove(i)) {
             if (radius[i] == 0.0) {
               if (mode == ALL) count += 3;
             } else {
               if (mode == ALL) count += 6;
               else count += 3;
             }
           }
         }
     } else {
       for (int i = 0; i < nlocal; i++)
         if (mask[i] & groupbit) {
           if (tbias->dof_remove(i)) {
             if (radius[i] == 0.0) {
               if (mode == ALL) count += 2;
             } else {
               if (mode == ALL) count += 3;
               else count += 1;
             }
           }
         }
     }
 
     MPI_Allreduce(&count,&count_all,1,MPI_INT,MPI_SUM,world);
     dof -= count_all;
   }
 
   dof -= extra_dof + fix_dof;
   if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz);
   else tfactor = 0.0;
 }
 
 /* ---------------------------------------------------------------------- */
 
 double ComputeTempSphere::compute_scalar()
 {
   invoked_scalar = update->ntimestep;
 
   if (tempbias) {
     if (tbias->invoked_scalar != update->ntimestep) tbias->compute_scalar();
     tbias->remove_bias_all();
   }
 
   double **v = atom->v;
   double **omega = atom->omega;
   double *radius = atom->radius;
   double *rmass = atom->rmass;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   // point particles will not contribute rotation due to radius = 0
 
   double t = 0.0;
 
   if (mode == ALL) {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         t += (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]) * rmass[i];
         t += (omega[i][0]*omega[i][0] + omega[i][1]*omega[i][1] +
               omega[i][2]*omega[i][2]) * INERTIA*rmass[i]*radius[i]*radius[i];
       }
   } else {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit)
         t += (omega[i][0]*omega[i][0] + omega[i][1]*omega[i][1] +
               omega[i][2]*omega[i][2]) * INERTIA*rmass[i]*radius[i]*radius[i];
   }
 
   if (tempbias) tbias->restore_bias_all();
 
   MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world);
   if (dynamic || tempbias == 2) dof_compute();
   if (dof < 0.0 && natoms_temp > 0.0)
     error->all(FLERR,"Temperature compute degrees of freedom < 0");
   scalar *= tfactor;
   return scalar;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTempSphere::compute_vector()
 {
   invoked_vector = update->ntimestep;
 
   if (tempbias) {
     if (tbias->invoked_vector != update->ntimestep) tbias->compute_vector();
     tbias->remove_bias_all();
   }
 
   double **v = atom->v;
   double **omega = atom->omega;
   double *rmass = atom->rmass;
   double *radius = atom->radius;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   // point particles will not contribute rotation due to radius = 0
 
   double massone,inertiaone,t[6];
   for (int i = 0; i < 6; i++) t[i] = 0.0;
 
   if (mode == ALL) {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         massone = rmass[i];
         t[0] += massone * v[i][0]*v[i][0];
         t[1] += massone * v[i][1]*v[i][1];
         t[2] += massone * v[i][2]*v[i][2];
         t[3] += massone * v[i][0]*v[i][1];
         t[4] += massone * v[i][0]*v[i][2];
         t[5] += massone * v[i][1]*v[i][2];
 
         inertiaone = INERTIA*rmass[i]*radius[i]*radius[i];
         t[0] += inertiaone * omega[i][0]*omega[i][0];
         t[1] += inertiaone * omega[i][1]*omega[i][1];
         t[2] += inertiaone * omega[i][2]*omega[i][2];
         t[3] += inertiaone * omega[i][0]*omega[i][1];
         t[4] += inertiaone * omega[i][0]*omega[i][2];
         t[5] += inertiaone * omega[i][1]*omega[i][2];
       }
   } else {
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
         inertiaone = INERTIA*rmass[i]*radius[i]*radius[i];
         t[0] += inertiaone * omega[i][0]*omega[i][0];
         t[1] += inertiaone * omega[i][1]*omega[i][1];
         t[2] += inertiaone * omega[i][2]*omega[i][2];
         t[3] += inertiaone * omega[i][0]*omega[i][1];
         t[4] += inertiaone * omega[i][0]*omega[i][2];
         t[5] += inertiaone * omega[i][1]*omega[i][2];
       }
   }
 
   if (tempbias) tbias->restore_bias_all();
 
   MPI_Allreduce(t,vector,6,MPI_DOUBLE,MPI_SUM,world);
   for (int i = 0; i < 6; i++) vector[i] *= force->mvv2e;
 }
 
 /* ----------------------------------------------------------------------
    remove velocity bias from atom I to leave thermal velocity
 ------------------------------------------------------------------------- */
 
 void ComputeTempSphere::remove_bias(int i, double *v)
 {
   tbias->remove_bias(i,v);
 }
 
 /* ----------------------------------------------------------------------
    add back in velocity bias to atom I removed by remove_bias()
    assume remove_bias() was previously called
 ------------------------------------------------------------------------- */
 
 void ComputeTempSphere::restore_bias(int i, double *v)
 {
   tbias->restore_bias(i,v);
 }
diff --git a/src/compute_torque_chunk.cpp b/src/compute_torque_chunk.cpp
index 5462debcf..25386ad40 100644
--- a/src/compute_torque_chunk.cpp
+++ b/src/compute_torque_chunk.cpp
@@ -1,255 +1,253 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_torque_chunk.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "compute_chunk_atom.h"
 #include "domain.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeTorqueChunk::ComputeTorqueChunk(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  idchunk(NULL), massproc(NULL), masstotal(NULL), com(NULL), comall(NULL), torque(NULL), torqueall(NULL)
 {
   if (narg != 4) error->all(FLERR,"Illegal compute torque/chunk command");
 
   array_flag = 1;
   size_array_cols = 3;
   size_array_rows = 0;
   size_array_rows_variable = 1;
   extarray = 0;
 
   // ID of compute chunk/atom
 
   int n = strlen(arg[3]) + 1;
   idchunk = new char[n];
   strcpy(idchunk,arg[3]);
 
   init();
 
   // chunk-based data
 
   nchunk = 1;
   maxchunk = 0;
-  massproc = masstotal = NULL;
-  com = comall = NULL;
-  torque = torqueall = NULL;
   allocate();
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeTorqueChunk::~ComputeTorqueChunk()
 {
   delete [] idchunk;
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(com);
   memory->destroy(comall);
   memory->destroy(torque);
   memory->destroy(torqueall);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTorqueChunk::init()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute < 0)
     error->all(FLERR,"Chunk/atom compute does not exist for "
                "compute torque/chunk");
   cchunk = (ComputeChunkAtom *) modify->compute[icompute];
   if (strcmp(cchunk->style,"chunk/atom") != 0)
     error->all(FLERR,"Compute torque/chunk does not use chunk/atom compute");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeTorqueChunk::compute_array()
 {
   int i,index;
   double dx,dy,dz,massone;
   double unwrap[3];
 
   invoked_array = update->ntimestep;
 
   // compute chunk/atom assigns atoms to chunk IDs
   // extract ichunk index vector from compute
   // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
 
   nchunk = cchunk->setup_chunks();
   cchunk->compute_ichunk();
   int *ichunk = cchunk->ichunk;
 
   if (nchunk > maxchunk) allocate();
   size_array_rows = nchunk;
 
   // zero local per-chunk values
 
   for (int i = 0; i < nchunk; i++) {
     massproc[i] = 0.0;
     com[i][0] = com[i][1] = com[i][2] = 0.0;
     torque[i][0] = torque[i][1] = torque[i][2] = 0.0;
   }
 
   // compute COM for each chunk
 
   double **x = atom->x;
   int *mask = atom->mask;
   int *type = atom->type;
   imageint *image = atom->image;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       domain->unmap(x[i],image[i],unwrap);
       massproc[index] += massone;
       com[index][0] += unwrap[0] * massone;
       com[index][1] += unwrap[1] * massone;
       com[index][2] += unwrap[2] * massone;
     }
 
   MPI_Allreduce(massproc,masstotal,nchunk,MPI_DOUBLE,MPI_SUM,world);
   MPI_Allreduce(&com[0][0],&comall[0][0],3*nchunk,MPI_DOUBLE,MPI_SUM,world);
 
   for (int i = 0; i < nchunk; i++) {
     if (masstotal[i] > 0.0) {
       comall[i][0] /= masstotal[i];
       comall[i][1] /= masstotal[i];
       comall[i][2] /= masstotal[i];
     }
   }
 
   // compute torque on each chunk
 
   double **f = atom->f;
 
   for (i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       domain->unmap(x[i],image[i],unwrap);
       dx = unwrap[0] - comall[index][0];
       dy = unwrap[1] - comall[index][1];
       dz = unwrap[2] - comall[index][2];
       torque[index][0] += dy*f[i][2] - dz*f[i][1];
       torque[index][1] += dz*f[i][0] - dx*f[i][2];
       torque[index][2] += dx*f[i][1] - dy*f[i][0];
     }
 
   MPI_Allreduce(&torque[0][0],&torqueall[0][0],3*nchunk,
                 MPI_DOUBLE,MPI_SUM,world);
 }
 
 /* ----------------------------------------------------------------------
    lock methods: called by fix ave/time
    these methods insure vector/array size is locked for Nfreq epoch
      by passing lock info along to compute chunk/atom
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    increment lock counter
 ------------------------------------------------------------------------- */
 
 void ComputeTorqueChunk::lock_enable()
 {
   cchunk->lockcount++;
 }
 
 /* ----------------------------------------------------------------------
    decrement lock counter in compute chunk/atom, it if still exists
 ------------------------------------------------------------------------- */
 
 void ComputeTorqueChunk::lock_disable()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute >= 0) {
     cchunk = (ComputeChunkAtom *) modify->compute[icompute];
     cchunk->lockcount--;
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate and return # of chunks = length of vector/array
 ------------------------------------------------------------------------- */
 
 int ComputeTorqueChunk::lock_length()
 {
   nchunk = cchunk->setup_chunks();
   return nchunk;
 }
 
 /* ----------------------------------------------------------------------
    set the lock from startstep to stopstep
 ------------------------------------------------------------------------- */
 
 void ComputeTorqueChunk::lock(Fix *fixptr, bigint startstep, bigint stopstep)
 {
   cchunk->lock(fixptr,startstep,stopstep);
 }
 
 /* ----------------------------------------------------------------------
    unset the lock
 ------------------------------------------------------------------------- */
 
 void ComputeTorqueChunk::unlock(Fix *fixptr)
 {
   cchunk->unlock(fixptr);
 }
 
 /* ----------------------------------------------------------------------
    free and reallocate per-chunk arrays
 ------------------------------------------------------------------------- */
 
 void ComputeTorqueChunk::allocate()
 {
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(com);
   memory->destroy(comall);
   memory->destroy(torque);
   memory->destroy(torqueall);
   maxchunk = nchunk;
   memory->create(massproc,maxchunk,"torque/chunk:massproc");
   memory->create(masstotal,maxchunk,"torque/chunk:masstotal");
   memory->create(com,maxchunk,3,"torque/chunk:com");
   memory->create(comall,maxchunk,3,"torque/chunk:comall");
   memory->create(torque,maxchunk,3,"torque/chunk:torque");
   memory->create(torqueall,maxchunk,3,"torque/chunk:torqueall");
   array = torqueall;
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeTorqueChunk::memory_usage()
 {
   double bytes = (bigint) maxchunk * 2 * sizeof(double);
   bytes += (bigint) maxchunk * 2*3 * sizeof(double);
   bytes += (bigint) maxchunk * 2*3 * sizeof(double);
   return bytes;
 }
diff --git a/src/compute_vacf.cpp b/src/compute_vacf.cpp
index c06113a77..6ba272e57 100755
--- a/src/compute_vacf.cpp
+++ b/src/compute_vacf.cpp
@@ -1,155 +1,156 @@
 /* ----------------------------------------------------------------------
    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 ret
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_vacf.h"
 #include "atom.h"
 #include "update.h"
 #include "group.h"
 #include "modify.h"
 #include "fix_store.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 /* ---------------------------------------------------------------------- */
 
 ComputeVACF::ComputeVACF(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  id_fix(NULL)
 {
   if (narg < 3) error->all(FLERR,"Illegal compute vacf command");
 
   vector_flag = 1;
   size_vector = 4;
   extvector = 0;
   create_attribute = 1;
 
   // create a new fix STORE style
   // id = compute-ID + COMPUTE_STORE, fix group = compute group
 
   int n = strlen(id) + strlen("_COMPUTE_STORE") + 1;
   id_fix = new char[n];
   strcpy(id_fix,id);
   strcat(id_fix,"_COMPUTE_STORE");
 
   char **newarg = new char*[6];
   newarg[0] = id_fix;
   newarg[1] = group->names[igroup];
   newarg[2] = (char *) "STORE";
   newarg[3] = (char *) "peratom";
   newarg[4] = (char *) "1";
   newarg[5] = (char *) "3";
   modify->add_fix(6,newarg);
   fix = (FixStore *) modify->fix[modify->nfix-1];
   delete [] newarg;
 
   // store current velocities in fix store array
   // skip if reset from restart file
 
   if (fix->restart_reset) fix->restart_reset = 0;
   else {
     double **voriginal = fix->astore;
 
     double **v = atom->v;
     int *mask = atom->mask;
     int nlocal = atom->nlocal;
 
     for (int i = 0; i < nlocal; i++)
       if (mask[i] & groupbit) {
 	voriginal[i][0] = v[i][0];
 	voriginal[i][1] = v[i][1];
 	voriginal[i][2] = v[i][2];
       } else voriginal[i][0] = voriginal[i][1] = voriginal[i][2] = 0.0;
   }
 
   // displacement vector
 
   vector = new double[4];
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeVACF::~ComputeVACF()
 {
   // check nfix in case all fixes have already been deleted
 
   if (modify->nfix) modify->delete_fix(id_fix);
 
   delete [] id_fix;
   delete [] vector;
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeVACF::init()
 {
   // set fix which stores original atom velocities
 
   int ifix = modify->find_fix(id_fix);
   if (ifix < 0) error->all(FLERR,"Could not find compute vacf fix ID");
   fix = (FixStore *) modify->fix[ifix];
 
   // nvacf = # of atoms in group
 
   nvacf = group->count(igroup);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeVACF::compute_vector()
 {
   invoked_vector = update->ntimestep;
 
   double **voriginal = fix->astore;
 
   double **v = atom->v;
   int *mask = atom->mask;
   int nlocal = atom->nlocal;
 
   double vxsq,vysq,vzsq;
   double vacf[4];
   vacf[0] = vacf[1] = vacf[2] = vacf[3] = 0.0;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       vxsq = v[i][0] * voriginal[i][0];
       vysq = v[i][1] * voriginal[i][1];
       vzsq = v[i][2] * voriginal[i][2];
       vacf[0] += vxsq;
       vacf[1] += vysq;
       vacf[2] += vzsq;
       vacf[3] += vxsq + vysq + vzsq;
     }
 
   MPI_Allreduce(vacf,vector,4,MPI_DOUBLE,MPI_SUM,world);
   if (nvacf) {
     vector[0] /= nvacf;
     vector[1] /= nvacf;
     vector[2] /= nvacf;
     vector[3] /= nvacf;
   }
 }
 
 /* ----------------------------------------------------------------------
    initialize one atom's storage values, called when atom is created
 ------------------------------------------------------------------------- */
 
 void ComputeVACF::set_arrays(int i)
 {
   double **voriginal = fix->astore;
   double **v = atom->v;
   voriginal[i][0] = v[i][0];
   voriginal[i][1] = v[i][1];
   voriginal[i][2] = v[i][2];
 }
 
diff --git a/src/compute_vcm_chunk.cpp b/src/compute_vcm_chunk.cpp
index cd864b2aa..0661bf445 100644
--- a/src/compute_vcm_chunk.cpp
+++ b/src/compute_vcm_chunk.cpp
@@ -1,240 +1,239 @@
 /* ----------------------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
 
    Copyright (2003) Sandia Corporation.  Under the terms of Contract
    DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
    certain rights in this software.  This software is distributed under
    the GNU General Public License.
 
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
 #include <string.h>
 #include "compute_vcm_chunk.h"
 #include "atom.h"
 #include "update.h"
 #include "modify.h"
 #include "compute_chunk_atom.h"
 #include "domain.h"
 #include "memory.h"
 #include "error.h"
 
 using namespace LAMMPS_NS;
 
 enum{ONCE,NFREQ,EVERY};
 
 /* ---------------------------------------------------------------------- */
 
 ComputeVCMChunk::ComputeVCMChunk(LAMMPS *lmp, int narg, char **arg) :
-  Compute(lmp, narg, arg)
+  Compute(lmp, narg, arg),
+  idchunk(NULL), massproc(NULL), masstotal(NULL), vcm(NULL), vcmall(NULL)
 {
   if (narg != 4) error->all(FLERR,"Illegal compute vcm/chunk command");
 
   array_flag = 1;
   size_array_cols = 3;
   size_array_rows = 0;
   size_array_rows_variable = 1;
   extarray = 0;
 
   // ID of compute chunk/atom
 
   int n = strlen(arg[3]) + 1;
   idchunk = new char[n];
   strcpy(idchunk,arg[3]);
 
   init();
 
   // chunk-based data
 
   nchunk = 1;
   maxchunk = 0;
-  massproc = masstotal = NULL;
-  vcm = vcmall = NULL;
   allocate();
 
   firstflag = massneed = 1;
 }
 
 /* ---------------------------------------------------------------------- */
 
 ComputeVCMChunk::~ComputeVCMChunk()
 {
   delete [] idchunk;
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(vcm);
   memory->destroy(vcmall);
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeVCMChunk::init()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute < 0)
     error->all(FLERR,"Chunk/atom compute does not exist for compute vcm/chunk");
   cchunk = (ComputeChunkAtom *) modify->compute[icompute];
   if (strcmp(cchunk->style,"chunk/atom") != 0)
     error->all(FLERR,"Compute vcm/chunk does not use chunk/atom compute");
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeVCMChunk::setup()
 {
   // one-time calculation of per-chunk mass
   // done in setup, so that ComputeChunkAtom::setup() is already called
 
   if (firstflag && cchunk->idsflag == ONCE) {
     compute_array();
     firstflag = massneed = 0;
   }
 }
 
 /* ---------------------------------------------------------------------- */
 
 void ComputeVCMChunk::compute_array()
 {
   int index;
   double massone;
 
   invoked_array = update->ntimestep;
 
   // compute chunk/atom assigns atoms to chunk IDs
   // extract ichunk index vector from compute
   // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms
 
   nchunk = cchunk->setup_chunks();
   cchunk->compute_ichunk();
   int *ichunk = cchunk->ichunk;
 
   if (nchunk > maxchunk) allocate();
   size_array_rows = nchunk;
 
   // zero local per-chunk values
 
   for (int i = 0; i < nchunk; i++)
     vcm[i][0] = vcm[i][1] = vcm[i][2] = 0.0;
   if (massneed)
     for (int i = 0; i < nchunk; i++) massproc[i] = 0.0;
 
   // compute VCM for each chunk
 
   double **v = atom->v;
   int *mask = atom->mask;
   int *type = atom->type;
   double *mass = atom->mass;
   double *rmass = atom->rmass;
   int nlocal = atom->nlocal;
 
   for (int i = 0; i < nlocal; i++)
     if (mask[i] & groupbit) {
       index = ichunk[i]-1;
       if (index < 0) continue;
       if (rmass) massone = rmass[i];
       else massone = mass[type[i]];
       vcm[index][0] += v[i][0] * massone;
       vcm[index][1] += v[i][1] * massone;
       vcm[index][2] += v[i][2] * massone;
       if (massneed) massproc[index] += massone;
     }
 
   MPI_Allreduce(&vcm[0][0],&vcmall[0][0],3*nchunk,MPI_DOUBLE,MPI_SUM,world);
   if (massneed)
     MPI_Allreduce(massproc,masstotal,nchunk,MPI_DOUBLE,MPI_SUM,world);
 
   for (int i = 0; i < nchunk; i++) {
     if (masstotal[i] > 0.0) {
       vcmall[i][0] /= masstotal[i];
       vcmall[i][1] /= masstotal[i];
       vcmall[i][2] /= masstotal[i];
     } else vcmall[i][0] = vcmall[i][1] = vcmall[i][2] = 0.0;
   }
 }
 
 /* ----------------------------------------------------------------------
    lock methods: called by fix ave/time
    these methods insure vector/array size is locked for Nfreq epoch
      by passing lock info along to compute chunk/atom
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
    increment lock counter
 ------------------------------------------------------------------------- */
 
 void ComputeVCMChunk::lock_enable()
 {
   cchunk->lockcount++;
 }
 
 /* ----------------------------------------------------------------------
    decrement lock counter in compute chunk/atom, it if still exists
 ------------------------------------------------------------------------- */
 
 void ComputeVCMChunk::lock_disable()
 {
   int icompute = modify->find_compute(idchunk);
   if (icompute >= 0) {
     cchunk = (ComputeChunkAtom *) modify->compute[icompute];
     cchunk->lockcount--;
   }
 }
 
 /* ----------------------------------------------------------------------
    calculate and return # of chunks = length of vector/array
 ------------------------------------------------------------------------- */
 
 int ComputeVCMChunk::lock_length()
 {
   nchunk = cchunk->setup_chunks();
   return nchunk;
 }
 
 /* ----------------------------------------------------------------------
    set the lock from startstep to stopstep
 ------------------------------------------------------------------------- */
 
 void ComputeVCMChunk::lock(Fix *fixptr, bigint startstep, bigint stopstep)
 {
   cchunk->lock(fixptr,startstep,stopstep);
 }
 
 /* ----------------------------------------------------------------------
    unset the lock
 ------------------------------------------------------------------------- */
 
 void ComputeVCMChunk::unlock(Fix *fixptr)
 {
   cchunk->unlock(fixptr);
 }
 
 /* ----------------------------------------------------------------------
    free and reallocate per-chunk arrays
 ------------------------------------------------------------------------- */
 
 void ComputeVCMChunk::allocate()
 {
   memory->destroy(massproc);
   memory->destroy(masstotal);
   memory->destroy(vcm);
   memory->destroy(vcmall);
   maxchunk = nchunk;
   memory->create(massproc,maxchunk,"vcm/chunk:massproc");
   memory->create(masstotal,maxchunk,"vcm/chunk:masstotal");
   memory->create(vcm,maxchunk,3,"vcm/chunk:vcm");
   memory->create(vcmall,maxchunk,3,"vcm/chunk:vcmall");
   array = vcmall;
 }
 
 /* ----------------------------------------------------------------------
    memory usage of local data
 ------------------------------------------------------------------------- */
 
 double ComputeVCMChunk::memory_usage()
 {
   double bytes = (bigint) maxchunk * 2 * sizeof(double);
   bytes += (bigint) maxchunk * 2*3 * sizeof(double);
   return bytes;
 }
diff --git a/src/version.h b/src/version.h
index 32ceacc47..9725014aa 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define LAMMPS_VERSION "23 Aug 2016"
+#define LAMMPS_VERSION "27 Aug 2016"