Files
lammps/doc/html/Python_neighbor.html
2025-01-13 14:55:48 +00:00

261 lines
23 KiB
HTML

<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2.3.10. Neighbor list access &mdash; LAMMPS documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx-design.min.css" type="text/css" />
<link rel="stylesheet" href="_static/css/lammps.css" type="text/css" />
<link rel="shortcut icon" href="_static/lammps.ico"/>
<link rel="canonical" href="https://docs.lammps.org/Python_neighbor.html" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/design-tabs.js?v=f930bc37"></script>
<script async="async" src="_static/mathjax/es5/tex-mml-chtml.js?v=cadf963e"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="2.3.11. Configuration information" href="Python_config.html" />
<link rel="prev" title="2.3.9. Scatter/gather operations" href="Python_scatter.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="Manual.html">
<img src="_static/lammps-logo.png" class="logo" alt="Logo"/>
</a>
<div class="lammps_version">Version: <b>19 Nov 2024</b></div>
<div class="lammps_release">git info: </div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="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="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">User Guide</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Intro.html">1. Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="Install.html">2. Install LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Build.html">3. Build LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Run_head.html">4. Run LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Commands.html">5. Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="Packages.html">6. Optional packages</a></li>
<li class="toctree-l1"><a class="reference internal" href="Speed.html">7. Accelerate performance</a></li>
<li class="toctree-l1"><a class="reference internal" href="Howto.html">8. Howto discussions</a></li>
<li class="toctree-l1"><a class="reference internal" href="Examples.html">9. Example scripts</a></li>
<li class="toctree-l1"><a class="reference internal" href="Tools.html">10. Auxiliary tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="Errors.html">11. Errors</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Programmer Guide</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="Library.html">1. LAMMPS Library Interfaces</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="Python_head.html">2. Use Python with LAMMPS</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="Python_overview.html">2.1. Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="Python_install.html">2.2. Installation</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="Python_run.html">2.3. Run LAMMPS from Python</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="Python_launch.html">2.3.1. Running LAMMPS and Python in serial</a></li>
<li class="toctree-l3"><a class="reference internal" href="Python_launch.html#running-lammps-and-python-in-parallel-with-mpi">2.3.2. Running LAMMPS and Python in parallel with MPI</a></li>
<li class="toctree-l3"><a class="reference internal" href="Python_launch.html#running-python-scripts">2.3.3. Running Python scripts</a></li>
<li class="toctree-l3"><a class="reference internal" href="Python_create.html">2.3.4. Creating or deleting a LAMMPS object</a></li>
<li class="toctree-l3"><a class="reference internal" href="Python_execute.html">2.3.5. Executing commands</a></li>
<li class="toctree-l3"><a class="reference internal" href="Python_properties.html">2.3.6. System properties</a></li>
<li class="toctree-l3"><a class="reference internal" href="Python_atoms.html">2.3.7. Per-atom properties</a></li>
<li class="toctree-l3"><a class="reference internal" href="Python_objects.html">2.3.8. Compute, fixes, variables</a></li>
<li class="toctree-l3"><a class="reference internal" href="Python_scatter.html">2.3.9. Scatter/gather operations</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">2.3.10. Neighbor list access</a></li>
<li class="toctree-l3"><a class="reference internal" href="Python_config.html">2.3.11. Configuration information</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="Python_module.html">2.4. The <code class="docutils literal notranslate"><span class="pre">lammps</span></code> Python module</a></li>
<li class="toctree-l2"><a class="reference internal" href="Python_ext.html">2.5. Extending the Python interface</a></li>
<li class="toctree-l2"><a class="reference internal" href="Python_call.html">2.6. Calling Python from LAMMPS</a></li>
<li class="toctree-l2"><a class="reference internal" href="Python_formats.html">2.7. Output Readers</a></li>
<li class="toctree-l2"><a class="reference internal" href="Python_examples.html">2.8. Example Python scripts</a></li>
<li class="toctree-l2"><a class="reference internal" href="Python_error.html">2.9. Handling LAMMPS errors</a></li>
<li class="toctree-l2"><a class="reference internal" href="Python_trouble.html">2.10. Troubleshooting</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Modify.html">3. Modifying &amp; extending LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Developer.html">4. Information for Developers</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Command Reference</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="commands_list.html">Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="fixes.html">Fix Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="computes.html">Compute Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="pairs.html">Pair Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="bonds.html">Bond Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="angles.html">Angle Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="dihedrals.html">Dihedral Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="impropers.html">Improper Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="dumps.html">Dump Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="fix_modify_atc_commands.html">fix_modify AtC commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="Bibliography.html">Bibliography</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<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 style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="Manual.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="Python_head.html"><span class="section-number">2. </span>Use Python with LAMMPS</a></li>
<li class="breadcrumb-item"><a href="Python_run.html"><span class="section-number">2.3. </span>Run LAMMPS from Python</a></li>
<li class="breadcrumb-item active"><span class="section-number">2.3.10. </span>Neighbor list access</li>
<li class="wy-breadcrumbs-aside">
<a href="https://www.lammps.org"><img src="_static/lammps-logo.png" width="64" height="16" alt="LAMMPS Homepage"></a> | <a href="Commands_all.html">Commands</a>
</li>
</ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
<a href="Python_scatter.html" class="btn btn-neutral float-left" title="2.3.9. Scatter/gather operations" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Python_config.html" class="btn btn-neutral float-right" title="2.3.11. Configuration information" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<p><span class="math notranslate nohighlight">\(\renewcommand{\AA}{\text{Å}}\)</span></p>
<section id="neighbor-list-access">
<h1><span class="section-number">2.3.10. </span>Neighbor list access<a class="headerlink" href="#neighbor-list-access" title="Link to this heading"></a></h1>
<p>Access to neighbor lists is handled through a couple of wrapper classes
that allows one to treat it like either a python list or a NumPy array. The
access procedure is similar to that of the C-library interface: use one
of the “find” functions to look up the index of the neighbor list in the
global table of neighbor lists and then get access to the neighbor list
data. The code sample below demonstrates reading the neighbor list data
using the NumPy access method.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">lammps</span><span class="w"> </span><span class="kn">import</span> <span class="n">lammps</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
<span class="n">lmp</span> <span class="o">=</span> <span class="n">lammps</span><span class="p">()</span>
<span class="n">lmp</span><span class="o">.</span><span class="n">commands_string</span><span class="p">(</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2">region box block -2 2 -2 2 -2 2</span>
<span class="s2">lattice fcc 1.0</span>
<span class="s2">create_box 1 box</span>
<span class="s2">create_atoms 1 box</span>
<span class="s2">mass 1 1.0</span>
<span class="s2">pair_style lj/cut 2.5</span>
<span class="s2">pair_coeff 1 1 1.0 1.0</span>
<span class="s2">run 0 post no&quot;&quot;&quot;</span><span class="p">)</span>
<span class="c1"># look up the neighbor list</span>
<span class="n">nlidx</span> <span class="o">=</span> <span class="n">lmp</span><span class="o">.</span><span class="n">find_pair_neighlist</span><span class="p">(</span><span class="s1">&#39;lj/cut&#39;</span><span class="p">)</span>
<span class="n">nl</span> <span class="o">=</span> <span class="n">lmp</span><span class="o">.</span><span class="n">numpy</span><span class="o">.</span><span class="n">get_neighlist</span><span class="p">(</span><span class="n">nlidx</span><span class="p">)</span>
<span class="n">tags</span> <span class="o">=</span> <span class="n">lmp</span><span class="o">.</span><span class="n">extract_atom</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;half neighbor list with </span><span class="si">{}</span><span class="s2"> entries&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">nl</span><span class="o">.</span><span class="n">size</span><span class="p">))</span>
<span class="c1"># print neighbor list contents</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">nl</span><span class="o">.</span><span class="n">size</span><span class="p">):</span>
<span class="n">idx</span><span class="p">,</span> <span class="n">nlist</span> <span class="o">=</span> <span class="n">nl</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">atom </span><span class="si">{}</span><span class="s2"> with ID </span><span class="si">{}</span><span class="s2"> has </span><span class="si">{}</span><span class="s2"> neighbors:&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span><span class="n">tags</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span><span class="n">nlist</span><span class="o">.</span><span class="n">size</span><span class="p">))</span>
<span class="k">if</span> <span class="n">nlist</span><span class="o">.</span><span class="n">size</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">nditer</span><span class="p">(</span><span class="n">nlist</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot; atom </span><span class="si">{}</span><span class="s2"> with ID </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="n">tags</span><span class="p">[</span><span class="n">n</span><span class="p">]))</span>
</pre></div>
</div>
<p>Another example for extracting a full neighbor list without evaluating a
potential is shown below.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">lammps</span><span class="w"> </span><span class="kn">import</span> <span class="n">lammps</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
<span class="n">lmp</span> <span class="o">=</span> <span class="n">lammps</span><span class="p">()</span>
<span class="n">lmp</span><span class="o">.</span><span class="n">commands_string</span><span class="p">(</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2">newton off</span>
<span class="s2">region box block -2 2 -2 2 -2 2</span>
<span class="s2">lattice fcc 1.0</span>
<span class="s2">create_box 1 box</span>
<span class="s2">create_atoms 1 box</span>
<span class="s2">mass 1 1.0</span>
<span class="s2">pair_style zero 1.0 full</span>
<span class="s2">pair_coeff * *</span>
<span class="s2">run 0 post no&quot;&quot;&quot;</span><span class="p">)</span>
<span class="c1"># look up the neighbor list</span>
<span class="n">nlidx</span> <span class="o">=</span> <span class="n">lmp</span><span class="o">.</span><span class="n">find_pair_neighlist</span><span class="p">(</span><span class="s1">&#39;zero&#39;</span><span class="p">)</span>
<span class="n">nl</span> <span class="o">=</span> <span class="n">lmp</span><span class="o">.</span><span class="n">numpy</span><span class="o">.</span><span class="n">get_neighlist</span><span class="p">(</span><span class="n">nlidx</span><span class="p">)</span>
<span class="n">tags</span> <span class="o">=</span> <span class="n">lmp</span><span class="o">.</span><span class="n">extract_atom</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;full neighbor list with </span><span class="si">{}</span><span class="s2"> entries&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">nl</span><span class="o">.</span><span class="n">size</span><span class="p">))</span>
<span class="c1"># print neighbor list contents</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">nl</span><span class="o">.</span><span class="n">size</span><span class="p">):</span>
<span class="n">idx</span><span class="p">,</span> <span class="n">nlist</span> <span class="o">=</span> <span class="n">nl</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">atom </span><span class="si">{}</span><span class="s2"> with ID </span><span class="si">{}</span><span class="s2"> has </span><span class="si">{}</span><span class="s2"> neighbors:&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span><span class="n">tags</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span><span class="n">nlist</span><span class="o">.</span><span class="n">size</span><span class="p">))</span>
<span class="k">if</span> <span class="n">nlist</span><span class="o">.</span><span class="n">size</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">nditer</span><span class="p">(</span><span class="n">nlist</span><span class="p">):</span>
<span class="k">pass</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot; atom </span><span class="si">{}</span><span class="s2"> with ID </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="n">tags</span><span class="p">[</span><span class="n">n</span><span class="p">]))</span>
</pre></div>
</div>
<p><strong>Methods:</strong></p>
<ul class="simple">
<li><p><a class="reference internal" href="Python_module.html#lammps.lammps.get_neighlist" title="lammps.lammps.get_neighlist"><code class="xref py py-meth docutils literal notranslate"><span class="pre">lammps.get_neighlist()</span></code></a>: Get neighbor list for given index</p></li>
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">lammps.get_neighlist_size()</span></code>: Get number of elements in neighbor list</p></li>
<li><p><code class="xref py py-meth docutils literal notranslate"><span class="pre">lammps.get_neighlist_element_neighbors()</span></code>: Get element in neighbor list and its neighbors</p></li>
<li><p><a class="reference internal" href="Python_module.html#lammps.lammps.find_pair_neighlist" title="lammps.lammps.find_pair_neighlist"><code class="xref py py-meth docutils literal notranslate"><span class="pre">lammps.find_pair_neighlist()</span></code></a>: Find neighbor list of pair style</p></li>
<li><p><a class="reference internal" href="Python_module.html#lammps.lammps.find_pair_neighlist" title="lammps.lammps.find_pair_neighlist"><code class="xref py py-meth docutils literal notranslate"><span class="pre">lammps.find_fix_neighlist()</span></code></a>: Find neighbor list of fix style</p></li>
<li><p><a class="reference internal" href="Python_module.html#lammps.lammps.find_pair_neighlist" title="lammps.lammps.find_pair_neighlist"><code class="xref py py-meth docutils literal notranslate"><span class="pre">lammps.find_compute_neighlist()</span></code></a>: Find neighbor list of compute style</p></li>
</ul>
<p><strong>NumPy Methods:</strong></p>
<ul class="simple">
<li><p><a class="reference internal" href="Python_module.html#lammps.numpy_wrapper.numpy_wrapper.get_neighlist" title="lammps.numpy_wrapper.numpy_wrapper.get_neighlist"><code class="xref py py-meth docutils literal notranslate"><span class="pre">lammps.numpy.get_neighlist()</span></code></a>: Get neighbor list for given index, which uses NumPy arrays for its element neighbor arrays</p></li>
<li><p><a class="reference internal" href="Python_module.html#lammps.numpy_wrapper.numpy_wrapper.get_neighlist_element_neighbors" title="lammps.numpy_wrapper.numpy_wrapper.get_neighlist_element_neighbors"><code class="xref py py-meth docutils literal notranslate"><span class="pre">lammps.numpy.get_neighlist_element_neighbors()</span></code></a>: Get element in neighbor list and its neighbors (as a numpy array)</p></li>
</ul>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="Python_scatter.html" class="btn btn-neutral float-left" title="2.3.9. Scatter/gather operations" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Python_config.html" class="btn btn-neutral float-right" title="2.3.11. Configuration information" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2003-2025 Sandia Corporation.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(false);
});
</script>
</body>
</html>