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

370 lines
18 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>3.6. Pair styles &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/Modify_pair.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="3.7. Bond, angle, dihedral, improper styles" href="Modify_bond.html" />
<link rel="prev" title="3.5. Atom styles" href="Modify_atom.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"><a class="reference internal" href="Python_head.html">2. Use Python with LAMMPS</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="Modify.html">3. Modifying &amp; extending LAMMPS</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="Modify_overview.html">3.1. Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_contribute.html">3.2. Submitting new features for inclusion in LAMMPS</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_requirements.html">3.3. Requirements for contributions to LAMMPS</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_style.html">3.4. LAMMPS programming style</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_atom.html">3.5. Atom styles</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">3.6. Pair styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_bond.html">3.7. Bond, angle, dihedral, improper styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_compute.html">3.8. Compute styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_fix.html">3.9. Fix styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_command.html">3.10. Input script command style</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_dump.html">3.11. Dump styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_kspace.html">3.12. Kspace styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_min.html">3.13. Minimization styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_region.html">3.14. Region styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_body.html">3.15. Body styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_gran_sub_mod.html">3.16. Granular Sub-Model styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_thermo.html">3.17. Thermodynamic output options</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_variable.html">3.18. Variable options</a></li>
</ul>
</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="Modify.html"><span class="section-number">3. </span>Modifying &amp; extending LAMMPS</a></li>
<li class="breadcrumb-item active"><span class="section-number">3.6. </span>Pair styles</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="Modify_atom.html" class="btn btn-neutral float-left" title="3.5. Atom styles" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Modify_bond.html" class="btn btn-neutral float-right" title="3.7. Bond, angle, dihedral, improper styles" 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="pair-styles">
<h1><span class="section-number">3.6. </span>Pair styles<a class="headerlink" href="#pair-styles" title="Link to this heading"></a></h1>
<p>Classes that compute pairwise non-bonded interactions are derived from
the <code class="docutils literal notranslate"><span class="pre">Pair</span></code> class. In LAMMPS, pairwise force calculations include
many-body potentials such as EAM, Tersoff, or ReaxFF where particles
interact without an explicit bond topology but include interactions
beyond pairwise non-bonded contributions. New styles can be created to
add support for additional pair potentials to LAMMPS. When the
modifications are small, sometimes it is more effective to derive from
an existing pair style class. This latter approach is also used by
<a class="reference internal" href="Speed_packages.html"><span class="doc">Accelerator packages</span></a> where the accelerated style
names differ from their base classes by an appended suffix.</p>
<p>The file <code class="docutils literal notranslate"><span class="pre">src/pair_lj_cut.cpp</span></code> is an example of a Pair class with a
very simple potential function. It includes several optional methods to
enable its use with <a class="reference internal" href="run_style.html"><span class="doc">run_style respa</span></a> and <a class="reference internal" href="compute_group_group.html"><span class="doc">compute
group/group</span></a>. <a class="reference internal" href="Developer_write_pair.html"><span class="doc">Writing new pair styles</span></a> contains
a detailed discussion of writing new pair styles from scratch, and how
simple and more complex pair styles can be implemented with examples
from existing pair styles.</p>
<p>Here is a brief list of some the class methods in the Pair class that
<em>must</em> be or <em>may</em> be overridden in a derived class for a new pair style.</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Required</p></th>
<th class="head"><p>“pure” methods that <em>must</em> be overridden in a derived class</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>compute</p></td>
<td><p>workhorse routine that computes pairwise interactions</p></td>
</tr>
<tr class="row-odd"><td><p>settings</p></td>
<td><p>processes the arguments to the pair_style command</p></td>
</tr>
<tr class="row-even"><td><p>coeff</p></td>
<td><p>set coefficients for one i,j type pair, called from pair_coeff</p></td>
</tr>
</tbody>
</table>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Optional</p></th>
<th class="head"><p>methods that have a default or dummy implementation</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>init_one</p></td>
<td><p>perform initialization for one i,j type pair</p></td>
</tr>
<tr class="row-odd"><td><p>init_style</p></td>
<td><p>style initialization: request neighbor list(s), error checks</p></td>
</tr>
<tr class="row-even"><td><p>init_list</p></td>
<td><p>Neighbor class callback function to pass neighbor list to pair style</p></td>
</tr>
<tr class="row-odd"><td><p>single</p></td>
<td><p>force/r and energy of a single pairwise interaction between two atoms</p></td>
</tr>
<tr class="row-even"><td><p>compute_inner/middle/outer</p></td>
<td><p>versions of compute used by rRESPA</p></td>
</tr>
<tr class="row-odd"><td><p>memory_usage</p></td>
<td><p>return estimated amount of memory used by the pair style</p></td>
</tr>
<tr class="row-even"><td><p>modify_params</p></td>
<td><p>process arguments to pair_modify command</p></td>
</tr>
<tr class="row-odd"><td><p>extract</p></td>
<td><p>provide access to internal scalar or per-type data like cutoffs</p></td>
</tr>
<tr class="row-even"><td><p>extract_peratom</p></td>
<td><p>provide access to internal per-atom data</p></td>
</tr>
<tr class="row-odd"><td><p>setup</p></td>
<td><p>initialization at the beginning of a run</p></td>
</tr>
<tr class="row-even"><td><p>finish</p></td>
<td><p>called at the end of a run, e.g. to print</p></td>
</tr>
<tr class="row-odd"><td><p>write &amp; read_restart</p></td>
<td><p>write/read i,j pair coeffs to restart files</p></td>
</tr>
<tr class="row-even"><td><p>write &amp; read_restart_settings</p></td>
<td><p>write/read global settings to restart files</p></td>
</tr>
<tr class="row-odd"><td><p>write_data</p></td>
<td><p>write Pair Coeffs section to data file</p></td>
</tr>
<tr class="row-even"><td><p>write_data_all</p></td>
<td><p>write PairIJ Coeffs section to data file</p></td>
</tr>
<tr class="row-odd"><td><p>pack &amp; unpack_forward_comm</p></td>
<td><p>copy data to and from buffer if style uses forward communication</p></td>
</tr>
<tr class="row-even"><td><p>pack &amp; unpack_reverse_comm</p></td>
<td><p>copy data to and from buffer if style uses reverse communication</p></td>
</tr>
<tr class="row-odd"><td><p>reinit</p></td>
<td><p>reset all type-based parameters, called by fix adapt for example</p></td>
</tr>
<tr class="row-even"><td><p>reset_dt</p></td>
<td><p>called when the time step is changed by timestep or fix reset/dt</p></td>
</tr>
</tbody>
</table>
<p>Here is a list of flags or settings that should be set in the
constructor of the derived pair class when they differ from the default
setting.</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>Name of flag</p></th>
<th class="head"><p>Description</p></th>
<th class="head"><p>default</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>single_enable</p></td>
<td><p>1 if single() method is implemented, 0 if missing</p></td>
<td><p>1</p></td>
</tr>
<tr class="row-odd"><td><p>respa_enable</p></td>
<td><p>1 if pair style has compute_inner/middle/outer()</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-even"><td><p>restartinfo</p></td>
<td><p>1 if pair style writes its settings to a restart</p></td>
<td><p>1</p></td>
</tr>
<tr class="row-odd"><td><p>one_coeff</p></td>
<td><p>1 if only a pair_coeff * * command is allowed</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-even"><td><p>manybody_flag</p></td>
<td><p>1 if pair style is a manybody potential</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-odd"><td><p>unit_convert_flag</p></td>
<td><p>value != 0 indicates support for unit conversion</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-even"><td><p>no_virial_fdotr_compute</p></td>
<td><p>1 if pair style does not call virial_fdotr_compute()</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-odd"><td><p>writedata</p></td>
<td><p>1 if write_data() and write_data_all() are implemented</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-even"><td><p>comm_forward</p></td>
<td><p>size of buffer (in doubles) for forward communication</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-odd"><td><p>comm_reverse</p></td>
<td><p>size of buffer (in doubles) for reverse communication</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-even"><td><p>ghostneigh</p></td>
<td><p>1 if cutghost is set and style uses neighbors of ghosts</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-odd"><td><p>finitecutflag</p></td>
<td><p>1 if cutoff depends on diameter of atoms</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-even"><td><p>reinitflag</p></td>
<td><p>1 if style has reinit() and is compatible with fix adapt</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-odd"><td><p>ewaldflag</p></td>
<td><p>1 if compatible with kspace_style ewald</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-even"><td><p>pppmflag</p></td>
<td><p>1 if compatible with kspace_style pppm</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-odd"><td><p>msmflag</p></td>
<td><p>1 if compatible with kspace_style msm</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-even"><td><p>dispersionflag</p></td>
<td><p>1 if compatible with ewald/disp or pppm/disp</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-odd"><td><p>tip4pflag</p></td>
<td><p>1 if compatible with kspace_style pppm/tip4p</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-even"><td><p>dipoleflag</p></td>
<td><p>1 if compatible with dipole kspace_style</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-odd"><td><p>spinflag</p></td>
<td><p>1 if compatible with spin kspace_style</p></td>
<td><p>0</p></td>
</tr>
</tbody>
</table>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="Modify_atom.html" class="btn btn-neutral float-left" title="3.5. Atom styles" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Modify_bond.html" class="btn btn-neutral float-right" title="3.7. Bond, angle, dihedral, improper styles" 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>