318 lines
22 KiB
HTML
318 lines
22 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>8.5.4. Bonded particle models — 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/Howto_bpm.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="8.5.5. Polarizable models" href="Howto_polarizable.html" />
|
||
<link rel="prev" title="8.5.3. Body particles" href="Howto_body.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 class="current">
|
||
<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 current"><a class="reference internal" href="Howto.html">8. Howto discussions</a><ul class="current">
|
||
<li class="toctree-l2"><a class="reference internal" href="Howto.html#general-howto">8.1. General howto</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Howto.html#settings-howto">8.2. Settings howto</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Howto.html#analysis-howto">8.3. Analysis howto</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Howto.html#force-fields-howto">8.4. Force fields howto</a></li>
|
||
<li class="toctree-l2 current"><a class="reference internal" href="Howto.html#packages-howto">8.5. Packages howto</a><ul class="current">
|
||
<li class="toctree-l3"><a class="reference internal" href="Howto_spherical.html">8.5.1. Finite-size spherical and aspherical particles</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="Howto_granular.html">8.5.2. Granular models</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="Howto_body.html">8.5.3. Body particles</a></li>
|
||
<li class="toctree-l3 current"><a class="current reference internal" href="#">8.5.4. Bonded particle models</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="Howto_polarizable.html">8.5.5. Polarizable models</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="Howto_coreshell.html">8.5.6. Adiabatic core/shell model</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="Howto_drude.html">8.5.7. Drude induced dipoles</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="Howto_drude2.html">8.5.8. Tutorial for Thermalized Drude oscillators in LAMMPS</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="Howto_peri.html">8.5.9. Peridynamics with LAMMPS</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="Howto_manifold.html">8.5.10. Manifolds (surfaces)</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="Howto_rheo.html">8.5.11. Reproducing hydrodynamics and elastic objects (RHEO)</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="Howto_spins.html">8.5.12. Magnetic spins</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Howto.html#tutorials-howto">8.6. Tutorials howto</a></li>
|
||
</ul>
|
||
</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>
|
||
<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"><a class="reference internal" href="Modify.html">3. Modifying & 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="Howto.html"><span class="section-number">8. </span>Howto discussions</a></li>
|
||
<li class="breadcrumb-item active"><span class="section-number">8.5.4. </span>Bonded particle models</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="Howto_body.html" class="btn btn-neutral float-left" title="8.5.3. Body particles" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="Howto_polarizable.html" class="btn btn-neutral float-right" title="8.5.5. Polarizable models" 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="bonded-particle-models">
|
||
<h1><span class="section-number">8.5.4. </span>Bonded particle models<a class="headerlink" href="#bonded-particle-models" title="Link to this heading"></a></h1>
|
||
<p>The BPM package implements bonded particle models which can be used to
|
||
simulate mesoscale solids. Solids are constructed as a collection of
|
||
particles, which each represent a coarse-grained region of space much
|
||
larger than the atomistic scale. Particles within a solid region are
|
||
then connected by a network of bonds to model solid elasticity.
|
||
There are many names for methods that are based on similar (or
|
||
equivalent) capabilities to those in this package, including, but not
|
||
limited to, cohesive beam models, bonded DEMs, lattice spring models,
|
||
mass spring models, and lattice particle methods.</p>
|
||
<p>Unlike traditional bonds in molecular dynamics, the equilibrium bond
|
||
length can vary between bonds. Bonds store the reference state. This
|
||
includes setting the equilibrium length equal to the initial distance
|
||
between the two particles, but can also include data on the bond
|
||
orientation for rotational models. This produces a stress-free initial
|
||
state. Furthermore, bonds are allowed to break under large strains,
|
||
producing fracture. The examples/bpm directory has sample input scripts
|
||
for simulations of the fragmentation of an impacted plate and the
|
||
pouring of extended, elastic bodies. See <a class="reference internal" href="#howto-clemmer"><span class="std std-ref">(Clemmer)</span></a>
|
||
for more general information on the approach and the LAMMPS implementation.
|
||
Example movies illustrating some of these capabilities are found at
|
||
<a class="reference external" href="https://www.lammps.org/movies.html#bpmpackage">https://www.lammps.org/movies.html#bpmpackage</a>.</p>
|
||
<hr class="docutils" />
|
||
<p>Bonds can be created using a <a class="reference internal" href="read_data.html"><span class="doc">read data</span></a> or
|
||
<a class="reference internal" href="create_bonds.html"><span class="doc">create bonds</span></a> command. Alternatively, a
|
||
<a class="reference internal" href="molecule.html"><span class="doc">molecule</span></a> template with bonds can be used with
|
||
<a class="reference internal" href="fix_deposit.html"><span class="doc">fix deposit</span></a> or <a class="reference internal" href="fix_pour.html"><span class="doc">fix pour</span></a> to create
|
||
solid grains.</p>
|
||
<p>In this implementation, bonds store their reference state when they are
|
||
first computed in the setup of the first simulation run. Data is then
|
||
preserved across run commands and is written to <a class="reference internal" href="restart.html"><span class="doc">binary restart
|
||
files</span></a> such that restarting the system will not reset the
|
||
reference state of a bond. Bonds that are created midway into a run,
|
||
such as those created by pouring grains using <a class="reference internal" href="fix_pour.html"><span class="doc">fix pour</span></a>, are initialized on that timestep.</p>
|
||
<hr class="docutils" />
|
||
<p>Currently, there are two types of bonds included in the BPM package. The
|
||
first bond style, <a class="reference internal" href="bond_bpm_spring.html"><span class="doc">bond bpm/spring</span></a>, only applies
|
||
pairwise, central body forces. Point particles must have <a class="reference internal" href="atom_style.html"><span class="doc">bond atom
|
||
style</span></a> and may be thought of as nodes in a spring
|
||
network. An optional multibody term can be used to adjust the network’s
|
||
Poisson’s ratio. Alternatively, the second bond style, <a class="reference internal" href="bond_bpm_rotational.html"><span class="doc">bond bpm/rotational</span></a>, resolves tangential forces and torques arising
|
||
with the shearing, bending, and twisting of the bond due to rotation or
|
||
displacement of particles. Particles are similar to those used in the
|
||
<a class="reference internal" href="Howto_granular.html"><span class="doc">granular package</span></a>, <a class="reference internal" href="atom_style.html"><span class="doc">atom style sphere</span></a>. However, they must also track the current orientation of
|
||
particles and store bonds, and therefore use a <a class="reference internal" href="atom_style.html"><span class="doc">bpm/sphere atom
|
||
style</span></a>. This also requires a unique integrator <a class="reference internal" href="fix_nve_bpm_sphere.html"><span class="doc">fix
|
||
nve/bpm/sphere</span></a> which numerically integrates
|
||
orientation similar to <a class="reference internal" href="fix_nve_asphere.html"><span class="doc">fix nve/asphere</span></a>.</p>
|
||
<p>In addition to bond styles, a new pair style <a class="reference internal" href="pair_bpm_spring.html"><span class="doc">pair bpm/spring</span></a> was added to accompany the bpm/spring bond
|
||
style. By default, this pair style is simply a hookean repulsion with
|
||
similar velocity damping as its sister bond style, but optional
|
||
arguments can be used to modify the force.</p>
|
||
<hr class="docutils" />
|
||
<p>Bond data can be output using a combination of standard LAMMPS commands.
|
||
A list of IDs for bonded atoms can be generated using the
|
||
<a class="reference internal" href="compute_property_local.html"><span class="doc">compute property/local</span></a> command.
|
||
Various properties of bonds can be computed using the
|
||
<a class="reference internal" href="compute_bond_local.html"><span class="doc">compute bond/local</span></a> command. This
|
||
command allows one to access data saved to the bond’s history,
|
||
such as the reference length of the bond. More information on
|
||
bond history data can be found on the documentation pages for the specific
|
||
BPM bond styles. Finally, this data can be output using a <a class="reference internal" href="dump.html"><span class="doc">dump local</span></a>
|
||
command. As one may output many columns from the same compute, the
|
||
<a class="reference internal" href="dump_modify.html"><span class="doc">dump modify</span></a> <em>colname</em> option may be used to provide
|
||
more helpful column names. An example of this procedure is found in
|
||
/examples/bpm/pour/. External software, such as OVITO, can read these dump
|
||
files to render bond data.</p>
|
||
<hr class="docutils" />
|
||
<p>As bonds can be broken between neighbor list builds, the
|
||
<a class="reference internal" href="special_bonds.html"><span class="doc">special_bonds</span></a> command works differently for BPM
|
||
bond styles. There are two possible settings which determine how pair
|
||
interactions work between bonded particles. First, one can overlay
|
||
pair forces with bond forces such that all bonded particles also
|
||
feel pair interactions. This can be accomplished by setting the <em>overlay/pair</em>
|
||
keyword present in all bpm bond styles to <em>yes</em> and requires using the
|
||
following special bond settings</p>
|
||
<blockquote>
|
||
<div><div class="highlight-LAMMPS notranslate"><div class="highlight"><pre><span></span><span class="k">special_bonds</span><span class="w"> </span><span class="n">lj</span><span class="o">/</span><span class="n">coul</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span>
|
||
</pre></div>
|
||
</div>
|
||
</div></blockquote>
|
||
<p>Alternatively, one can turn off all pair interactions between bonded
|
||
particles. Unlike <a class="reference internal" href="bond_quartic.html"><span class="doc">bond quartic</span></a>, this is not done
|
||
by subtracting pair forces during the bond computation, but rather by
|
||
dynamically updating the special bond list. This is the default behavior
|
||
of BPM bond styles and is done by updating the 1-2 special bond list as
|
||
bonds break. To do this, LAMMPS requires <a class="reference internal" href="newton.html"><span class="doc">newton</span></a> bond off
|
||
such that all processors containing an atom know when a bond breaks.
|
||
Additionally, one must use the following special bond settings</p>
|
||
<blockquote>
|
||
<div><div class="highlight-LAMMPS notranslate"><div class="highlight"><pre><span></span><span class="k">special_bonds</span><span class="w"> </span><span class="n">lj</span><span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="n">coul</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span>
|
||
</pre></div>
|
||
</div>
|
||
</div></blockquote>
|
||
<p>These settings accomplish two goals. First, they turn off 1-3 and 1-4
|
||
special bond lists, which are not currently supported for BPMs. As
|
||
BPMs often have dense bond networks, generating 1-3 and 1-4 special
|
||
bond lists is expensive. By setting the lj weight for 1-2 bonds to
|
||
zero, this turns off pairwise interactions. Even though there are no
|
||
charges in BPM models, setting a nonzero coul weight for 1-2 bonds
|
||
ensures all bonded neighbors are still included in the neighbor list
|
||
in case bonds break between neighbor list builds. If bond breakage is
|
||
disabled during a simulation run by setting the <em>break</em> keyword to <em>no</em>,
|
||
a zero coul weight for 1-2 bonds can be used to exclude bonded atoms
|
||
from the neighbor list builds</p>
|
||
<blockquote>
|
||
<div><div class="highlight-LAMMPS notranslate"><div class="highlight"><pre><span></span><span class="k">special_bonds</span><span class="w"> </span><span class="n">lj</span><span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="n">coul</span><span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span>
|
||
</pre></div>
|
||
</div>
|
||
</div></blockquote>
|
||
<p>This can be useful for post-processing, or to determine pair interaction
|
||
properties between distinct bonded particles.</p>
|
||
<p>To monitor the fracture of bonds in the system, all BPM bond styles
|
||
have the ability to record instances of bond breakage to output using
|
||
the <a class="reference internal" href="dump.html"><span class="doc">dump local</span></a> command. Since one may frequently output
|
||
a list of broken bonds and the time they broke, the
|
||
<a class="reference internal" href="dump_modify.html"><span class="doc">dump modify</span></a> option <em>header no</em> may be useful to
|
||
avoid repeatedly printing the header of the dump file. An example of
|
||
this procedure is found in /examples/bpm/impact/. Additionally,
|
||
one can use <a class="reference internal" href="compute_nbond_atom.html"><span class="doc">compute nbond/atom</span></a> to tally the
|
||
current number of bonds per atom.</p>
|
||
<p>See the <a class="reference internal" href="Howto_broken_bonds.html"><span class="doc">Howto</span></a> page on broken bonds for
|
||
more information.</p>
|
||
<hr class="docutils" />
|
||
<p>While LAMMPS has many utilities to create and delete bonds, <em>only</em>
|
||
the following are currently compatible with BPM bond styles:</p>
|
||
<ul class="simple">
|
||
<li><p><a class="reference internal" href="create_bonds.html"><span class="doc">create_bonds</span></a></p></li>
|
||
<li><p><a class="reference internal" href="delete_bonds.html"><span class="doc">delete_bonds</span></a></p></li>
|
||
<li><p><a class="reference internal" href="fix_bond_create.html"><span class="doc">fix bond/create</span></a></p></li>
|
||
<li><p><a class="reference internal" href="fix_bond_break.html"><span class="doc">fix bond/break</span></a></p></li>
|
||
<li><p><a class="reference internal" href="fix_bond_swap.html"><span class="doc">fix bond/swap</span></a></p></li>
|
||
</ul>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>The <a class="reference internal" href="create_bonds.html"><span class="doc">create_bonds</span></a> command requires certain
|
||
<a class="reference internal" href="special_bonds.html"><span class="doc">special_bonds</span></a> settings. To subtract pair
|
||
interactions, one will need to switch between different <em>special_bonds</em>
|
||
settings in the input script. An example is found in
|
||
<code class="docutils literal notranslate"><span class="pre">examples/bpm/impact</span></code>.</p>
|
||
</div>
|
||
<hr class="docutils" />
|
||
<p id="howto-clemmer"><strong>(Clemmer)</strong> Clemmer, Monti, Lechman, Soft Matter, 20, 1702 (2024).</p>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="Howto_body.html" class="btn btn-neutral float-left" title="8.5.3. Body particles" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="Howto_polarizable.html" class="btn btn-neutral float-right" title="8.5.5. Polarizable models" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© 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> |