lammps/doc/fix_property_atom.html

432 lines
21 KiB
HTML

<!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 property/atom 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 property/atom command</li>
<li class="wy-breadcrumbs-aside">
<a href="http://lammps.sandia.gov">Website</a>
<a href="Section_commands.html#comm">Commands</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="fix-property-atom-command">
<span id="index-0"></span><h1>fix property/atom command<a class="headerlink" href="#fix-property-atom-command" title="Permalink to this headline"></a></h1>
<div class="section" id="syntax">
<h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline"></a></h2>
<div class="highlight-python"><div class="highlight"><pre>fix ID group-ID property/atom vec1 vec2 ... keyword value ...
</pre></div>
</div>
<ul class="simple">
<li>ID, group-ID are documented in <a class="reference internal" href="fix.html"><em>fix</em></a> command</li>
<li>property/atom = style name of this fix command</li>
<li>vec1,vec2,... = <em>mol</em> or <em>q</em> or <em>rmass</em> or <em>i_name</em> or <em>d_name</em></li>
</ul>
<pre class="literal-block">
<em>mol</em> = molecule IDs
<em>q</em> = charge
<em>rmass</em> = per-atom mass
<em>i_name</em> = new integer vector referenced by name
<em>d_name</em> = new floating-point vector referenced by name
</pre>
<ul class="simple">
<li>zero of more keyword/value pairs may be appended</li>
<li>keyword = <em>ghost</em></li>
</ul>
<pre class="literal-block">
<em>ghost</em> value = <em>no</em> or <em>yes</em> for whether ghost atom info in communicated
</pre>
</div>
<div class="section" id="examples">
<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline"></a></h2>
<div class="highlight-python"><div class="highlight"><pre>fix 1 all property/atom mol
fix 1 all property/atom i_myflag1 i_myflag2
fix 1 all property/atom d_sx d_sy d_sz
</pre></div>
</div>
</div>
<div class="section" id="description">
<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline"></a></h2>
<p>Create one or more additional per-atom vectors to store information
about atoms and to use during a simulation. The specified <em>group-ID</em>
is ignored by this fix.</p>
<p>The atom style used for a simulation defines a set of per-atom
properties, as explained on the <a class="reference internal" href="atom_style.html"><em>atom_style</em></a> and
<a class="reference internal" href="read_data.html"><em>read_data</em></a> doc pages. The latter command allows these
properties to be defined for each atom in the system when a data file
is read. This fix will augment the set of properties with new custom
ones. This can be useful in several scenarios.</p>
<p>If the atom style does not define molecule IDs, per-atom charge,
or per-atom mass, they can be added using the <em>mol</em>, <em>q</em> or <em>rmass</em>
keywords. This can be useful, e.g, to define &#8220;molecules&#8221; to use as
rigid bodies with the <a class="reference internal" href="fix_rigid.html"><em>fix rigid</em></a> command, or just to
carry around an extra flag with the atoms (stored as a molecule ID)
that can be used to group atoms without having to use the group
command (which is limited to a total of 32 groups including <em>all</em>).</p>
<p>Another application would be to use the <em>rmass</em> flag in order to have
per-atom masses instead of per-type masses, for example this can be
useful to study isotope effects with partial isotope substitution.
Please <a class="reference internal" href="#isotopes"><span>see below</span></a> for an example of simulating a mixture
of light and heavy water with the TIP4P water potential.</p>
<p>An alternative to using fix <em>property/atom</em> in these ways is to
use an atom style that does define molecule IDs or charge or per-atom
mass (indirectly via diameter and density) or to use a hybrid atom
style that combines two or more atom styles
to provide the union of all atom properties. However, this has two
practical drawbacks: first, it typically necessitates changing the
format of the data file, which can be tedious for large systems;
and second, it may define additional properties that are not needed
such as bond lists, which has some overhead when there are no bonds.</p>
<p>In the future, we may add additional per-atom properties similar to
<em>mol</em>, <em>q</em> or <em>rmass</em>, which &#8220;turn-on&#8221; specific properties defined
by some atom styles, so they can be used by atom styles that do not
define them.</p>
<p>More generally, the <em>i_name</em> and <em>d_name</em> vectors allow one or more
new custom per-atom properties to be defined. Each name must be
unique and can use alphanumeric or underscore characters. These
vectors can store whatever values you decide are useful in your
simulation. As explained below there are several ways to initialize
and access and output these values, both via input script commands and
in new code that you add to LAMMPS.</p>
<p>This is effectively a simple way to add per-atom properties to a model
without needing to write code for a new <a class="reference internal" href="atom_style.html"><em>atom style</em></a>
that defines the properties. Note however that implementing a new
atom style allows new atom properties to be more tightly and
seamlessly integrated with the rest of the code.</p>
<p>The new atom properties encode values that migrate with atoms to new
processors and are written to restart files. If you want the new
properties to also be defined for ghost atoms, then use the <em>ghost</em>
keyword with a value of <em>yes</em>. This will invoke extra communication
when ghost atoms are created (at every re-neighboring) to insure the
new properties are also defined for the ghost atoms.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">If you use this command with the <em>mol</em>, <em>q</em> or <em>rmass</em> vectors,
then you most likely want to set <em>ghost</em> yes, since these properties
are stored with ghost atoms if you use an <a class="reference internal" href="atom_style.html"><em>atom_style</em></a>
that defines them, and many LAMMPS operations that use molecule IDs or
charge, such as neighbor lists and pair styles, will expect ghost
atoms to have these valuse. LAMMPS will issue a warning it you define
those vectors but do not set <em>ghost</em> yes.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The properties for ghost atoms are not updated every timestep,
but only once every few steps when neighbor lists are re-built. Thus
the <em>ghost</em> keyword is suitable for static properties, like molecule
IDs, but not for dynamic properties that change every step. For the
latter, the code you add to LAMMPS to change the properties will also
need to communicate their new values to/from ghost atoms, an operation
that can be invoked from within a <a class="reference internal" href="pair_style.html"><em>pair style</em></a> or
<a class="reference internal" href="fix.html"><em>fix</em></a> or <a class="reference internal" href="compute.html"><em>compute</em></a> that you write.</p>
</div>
<hr class="docutils" />
<p>This fix is one of a small number that can be defined in an input
script before the simulation box is created or atoms are defined.
This is so it can be used with the <a class="reference internal" href="read_data.html"><em>read_data</em></a> command
as described below.</p>
<p>Per-atom properties that are defined by the <a class="reference internal" href="atom_style.html"><em>atom style</em></a> are initialized when atoms are created, e.g. by
the <a class="reference internal" href="read_data.html"><em>read_data</em></a> or <a class="reference internal" href="create_atoms.html"><em>create_atoms</em></a>
commands. The per-atom properaties defined by this fix are not. So
you need to initialize them explicitly. This can be done by the
<a class="reference internal" href="read_data.html"><em>read_data</em></a> command, using its <em>fix</em> keyword and
passing it the fix-ID of this fix.</p>
<p>Thus these commands:</p>
<div class="highlight-python"><div class="highlight"><pre>fix prop all property/atom mol d_flag
read_data data.txt fix prop NULL Molecules
</pre></div>
</div>
<p>would allow a data file to have a section like this:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">Molecules</span>
</pre></div>
</div>
<div class="highlight-python"><div class="highlight"><pre>1 4 1.5
2 4 3.0
3 10 1.0
4 10 1.0
5 10 1.0
...
N 763 4.5
</pre></div>
</div>
<p>where N is the number of atoms, and the first field on each line is
the atom-ID, followed by a molecule-ID and a floating point value that
will be stored in a new property called &#8220;flag&#8221;. Note that the list of
per-atom properties can be in any order.</p>
<p>Another way of initializing the new properties is via the
<a class="reference internal" href="set.html"><em>set</em></a> command. For example, if you wanted molecules
defined for every set of 10 atoms, based on their atom-IDs,
these commands could be used:</p>
<div class="highlight-python"><div class="highlight"><pre>fix prop all property/atom mol
variable cluster atom ((id-1)/10)+1
set id * mol v_cluster
</pre></div>
</div>
<p>The <a class="reference internal" href="variable.html"><em>atom-style variable</em></a> will create values for atoms
with IDs 31,32,33,...40 that are 4.0,4.1,4.2,...,4.9. When the
<a class="reference internal" href="set.html"><em>set</em></a> commands assigns them to the molecule ID for each atom,
they will be truncated to an integer value, so atoms 31-40 will all be
assigned a molecule ID of 4.</p>
<p>Note that <a class="reference internal" href="variable.html"><em>atomfile-style variables</em></a> can also be used in
place of atom-style variables, which means in this case that the
molecule IDs could be read-in from a separate file and assinged by the
<a class="reference internal" href="set.html"><em>set</em></a> command. This allows you to initialize new per-atom
properties in a completely general fashion.</p>
<hr class="docutils" />
<p>For new atom properties specified as <em>i_name</em> or <em>d_name</em>, the
<a class="reference internal" href="compute_property_atom.html"><em>compute property/atom</em></a> command can access
their values. This means that the values can be output via the <a class="reference internal" href="dump.html"><em>dump custom</em></a> command, accessed by fixes like <a class="reference internal" href="fix_ave_atom.html"><em>fix ave/atom</em></a>, accessed by other computes like <a class="reference internal" href="compute_reduce.html"><em>compute reduce</em></a>, or used in <a class="reference external" href="variables">atom-style variables</a>.</p>
<p>For example, these commands will output two new properties to a custom
dump file:</p>
<div class="highlight-python"><div class="highlight"><pre>fix prop all property/atom i_flag1 d_flag2
compute 1 all property/atom i_flag1 d_flag2
dump 1 all custom 100 tmp.dump id x y z c_1[1] c_1[2]
</pre></div>
</div>
<hr class="docutils" />
<p>If you wish to add new <a class="reference internal" href="pair_style.html"><em>pair styles</em></a>,
<a class="reference internal" href="fix.html"><em>fixes</em></a>, or <a class="reference internal" href="compute.html"><em>computes</em></a> that use the per-atom
properties defined by this fix, see <a class="reference internal" href="Section_modify.html#mod-1"><span>Section modify</span></a> of the manual which has some details
on how the properties can be accessed from added classes.</p>
<hr class="docutils" />
<p id="isotopes">Example for using per-atom masses with TIP4P water to study isotope
effects. When setting up simulations with the <a class="reference internal" href="Section_howto.html#howto-8"><span>TIP4P pair styles</span></a> for water, you have to provide
exactly one atom type each to identify the water oxygen and hydrogen
atoms. Since the atom mass is normally tied to the atom type, this
makes it impossible to study multiple isotopes in the same simulation.
With <em>fix property/atom rmass</em> however, the per-type masses are
replaced by per-atom masses. Asumming you have a working input deck
for regular TIP4P water, where water oxygen is atom type 1 and
water hydrogen is atom type 2, the following lines of input script
convert this to using per-atom masses:</p>
<div class="highlight-python"><div class="highlight"><pre>fix Isotopes all property/atom rmass ghost yes
set type 1 mass 15.9994
set type 2 mass 1.008
</pre></div>
</div>
<p>When writing out the system data with the <a class="reference internal" href="write_data.html"><em>write_data</em></a>
command, there will be a new section named with the fix-ID
(i.e. <em>Isotopes</em> in this case). Alternatively, you can take an
existing data file and just add this <em>Isotopes</em> section with
one line per atom containing atom-ID and mass. Either way, the
extended data file can be read back with:</p>
<div class="highlight-python"><div class="highlight"><pre>fix Isotopes all property/atom rmass ghost yes
read_data tip4p-isotopes.data fix Isotopes NULL Isotopes
</pre></div>
</div>
<p>Please note that the first <em>Isotopes</em> refers to the fix-ID
and the second to the name of the section. The following input
script code will now change the first 100 water molecules in this
example to heavy water:</p>
<div class="highlight-python"><div class="highlight"><pre>group hwat id 2:300:3
group hwat id 3:300:3
set group hwat mass 2.0141018
</pre></div>
</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<a class="headerlink" href="#restart-fix-modify-output-run-start-stop-minimize-info" title="Permalink to this headline"></a></h2>
<p>This fix writes the per-atom values it stores to <a class="reference internal" href="restart.html"><em>binary restart files</em></a>, so that the values can be restored when a
simulation is restarted. See the <a class="reference internal" href="read_restart.html"><em>read_restart</em></a>
command for info on how to re-specify a fix in an input script that
reads a restart file, so that the operation of the fix continues in an
uninterrupted fashion.</p>
<p>None of the <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a> options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various <a class="reference internal" href="Section_howto.html#howto-15"><span>output commands</span></a>. No parameter of this fix can
be used with the <em>start/stop</em> keywords of the <a class="reference internal" href="run.html"><em>run</em></a> command.
This fix is not invoked during <a class="reference internal" href="minimize.html"><em>energy minimization</em></a>.</p>
</div>
<div class="section" id="restrictions">
<h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline"></a></h2>
<blockquote>
<div>none</div></blockquote>
</div>
<div class="section" id="related-commands">
<h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline"></a></h2>
<p><a class="reference internal" href="read_data.html"><em>read_data</em></a>, <a class="reference internal" href="set.html"><em>set</em></a>, <a class="reference internal" href="compute_property_atom.html"><em>compute property/atom</em></a></p>
</div>
<div class="section" id="default">
<h2>Default<a class="headerlink" href="#default" title="Permalink to this headline"></a></h2>
<p>The default keyword values are ghost = no.</p>
</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>