Require type argument be zero when mol keyword used

git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@14120 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
athomps 2015-10-15 21:02:03 +00:00
parent 2675f362e1
commit ce62105570
4 changed files with 299 additions and 421 deletions

View File

@ -1,484 +1,369 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<!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 gcmc command &mdash; LAMMPS 15 May 2015 version 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 15 May 2015 version 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 gcmc 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-gcmc-command">
<span id="index-0"></span><h1>fix gcmc command<a class="headerlink" href="#fix-gcmc-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 gcmc N X M type seed T mu displace keyword values ...
</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>gcmc = style name of this fix command</li>
<li>N = invoke this fix every N steps</li>
<li>X = average number of GCMC exchanges to attempt every N steps</li>
<li>M = average number of MC moves to attempt every N steps</li>
<li>type = atom type to assign to inserted atoms (offset for molecule insertion)</li>
<li>seed = random # seed (positive integer)</li>
<li>T = temperature of the ideal gas reservoir (temperature units)</li>
<li>mu = chemical potential of the ideal gas reservoir (energy units)</li>
<li>translate = maximum Monte Carlo translation distance (length units)</li>
<li>zero or more keyword/value pairs may be appended to args</li>
</ul>
<pre class="literal-block">
keyword = <em>mol</em>, <em>region</em>, <em>maxangle</em>, <em>pressure</em>, <em>fugacity_coeff</em>, <em>full_energy</em>, <em>charge</em>, <em>group</em>, <em>grouptype</em>, or <em>intra_energy</em>
<em>mol</em> value = template-ID
template-ID = ID of molecule template specified in a separate <a class="reference internal" href="molecule.html"><em>molecule</em></a> command
<em>shake</em> value = fix-ID
fix-ID = ID of <a class="reference internal" href="fix_shake.html"><em>fix shake</em></a> command
<em>region</em> value = region-ID
region-ID = ID of region where MC moves are allowed
<em>maxangle</em> value = maximum molecular rotation angle (degrees)
<em>pressure</em> value = pressure of the gas reservoir (pressure units)
<em>fugacity_coeff</em> value = fugacity coefficient of the gas reservoir (unitless)
<em>full_energy</em> = compute the entire system energy when performing MC moves
<em>charge</em> value = charge of inserted atoms (charge units)
<em>group</em> value = group-ID
<HR>
<H3>fix gcmc command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID gcmc N X M type seed T mu displace keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>gcmc = style name of this fix command
<LI>N = invoke this fix every N steps
<LI>X = average number of GCMC exchanges to attempt every N steps
<LI>M = average number of MC moves to attempt every N steps
<LI>type = atom type for inserted atoms (must be 0 if mol keyword used)
<LI>seed = random # seed (positive integer)
<LI>T = temperature of the ideal gas reservoir (temperature units)
<LI>mu = chemical potential of the ideal gas reservoir (energy units)
<LI>translate = maximum Monte Carlo translation distance (length units)
<LI>zero or more keyword/value pairs may be appended to args
<PRE>keyword = <I>mol</I>, <I>region</I>, <I>maxangle</I>, <I>pressure</I>, <I>fugacity_coeff</I>, <I>full_energy</I>, <I>charge</I>, <I>group</I>, <I>grouptype</I>, <I>intra_energy</I>, or <I>tfac_insert</I>
<I>mol</I> value = template-ID
template-ID = ID of molecule template specified in a separate <A HREF = "molecule.html">molecule</A> command
<I>shake</I> value = fix-ID
fix-ID = ID of <A HREF = "fix_shake.html">fix shake</A> command
<I>region</I> value = region-ID
region-ID = ID of region where MC moves are allowed
<I>maxangle</I> value = maximum molecular rotation angle (degrees)
<I>pressure</I> value = pressure of the gas reservoir (pressure units)
<I>fugacity_coeff</I> value = fugacity coefficient of the gas reservoir (unitless)
<I>full_energy</I> = compute the entire system energy when performing MC moves
<I>charge</I> value = charge of inserted atoms (charge units)
<I>group</I> value = group-ID
group-ID = group-ID for inserted atoms (string)
<em>grouptype</em> values = type group-ID
<I>grouptype</I> values = type group-ID
type = atom type (int)
group-ID = group-ID for inserted atoms (string)
<em>intra_energy</em> value = intramolecular energy (energy units)
</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 2 gas gcmc 10 1000 1000 2 29494 298.0 -0.5 0.01
<I>intra_energy</I> value = intramolecular energy (energy units)
<I>tfac_insert</I> value = scale up/down temperature of inserted atoms (unitless)
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 2 gas gcmc 10 1000 1000 2 29494 298.0 -0.5 0.01
fix 3 water gcmc 10 100 100 0 3456543 3.0 -2.5 0.1 mol my_one_water maxangle 180 full_energy
fix 4 my_gas gcmc 1 10 10 1 123456543 300.0 -12.5 1.0 region disk
</pre></div>
</div>
</div>
<div class="section" id="description">
<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline"></a></h2>
<p>This fix performs grand canonical Monte Carlo (GCMC) exchanges of
fix 4 my_gas gcmc 1 10 10 1 123456543 300.0 -12.5 1.0 region disk
</PRE>
<P><B>Description:</B>
</P>
<P>This fix performs grand canonical Monte Carlo (GCMC) exchanges of
atoms or molecules of the given type with an imaginary ideal gas reservoir at
the specified T and chemical potential (mu) as discussed in
<a class="reference internal" href="#frenkel"><span>(Frenkel)</span></a>. If used with the <a class="reference internal" href="fix_nh.html"><em>fix nvt</em></a> command,
<A HREF = "#Frenkel">(Frenkel)</A>. If used with the <A HREF = "fix_nh.html">fix nvt</A> command,
simulations in the grand canonical ensemble (muVT, constant chemical
potential, constant volume, and constant temperature) can be
performed. Specific uses include computing isotherms in microporous
materials, or computing vapor-liquid coexistence curves.</p>
<p>Every N timesteps the fix attempts a number of GCMC exchanges (insertions
materials, or computing vapor-liquid coexistence curves.
</P>
<P>Every N timesteps the fix attempts a number of GCMC exchanges (insertions
or deletions) of gas atoms or molecules of
the given type between the simulation cell and the imaginary
reservoir. It also attempts a number of Monte Carlo
moves (translations and molecule rotations) of gas of the given type
within the simulation cell or region. The average number of
within the simulation cell or region. The average number of
attempted GCMC exchanges is X. The average number of attempted MC moves is M.
M should typically be chosen to be
approximately equal to the expected number of gas atoms or molecules
of the given type within the simulation cell or region,
of the given type within the simulation cell or region,
which will result in roughly one
MC translation per atom or molecule per MC cycle.</p>
<p>For MC moves of molecular gasses, rotations and translations are each
MC translation per atom or molecule per MC cycle.
</P>
<P>For MC moves of molecular gasses, rotations and translations are each
attempted with 50% probability. For MC moves of atomic gasses,
translations are attempted 100% of the time. For MC exchanges of
either molecular or atomic gasses, deletions and insertions are each
attempted with 50% probability.</p>
<p>All inserted particles are always assigned to two groups: the default group
&#8220;all&#8221; and the group specified in the fix gcmc command (which can also
be &#8220;all&#8221;). In addition, particles are also added to any groups specified
by the <em>group</em> and <em>grouptype</em> keywords.
attempted with 50% probability.
</P>
<P>All inserted particles are always assigned to two groups: the default group
"all" and the group specified in the fix gcmc command (which can also
be "all"). In addition, particles are also added to any groups specified
by the <I>group</I> and <I>grouptype</I> keywords.
If inserted particles are individual atoms, they are
assigned the specified atom type. If they are molecules, the type of
each atom in the inserted molecule is specified in the file read by
the <a class="reference internal" href="molecule.html"><em>molecule</em></a> command, and those values are added to
the specified atom type. E.g. if <em>type</em> = 2, and the file specifies
atom types 1,2,3, then the inserted molecule will have atom types
3,4,5.</p>
<p>This fix cannot be used to perform MC insertions of gas atoms or
assigned the atom type given by the type argument. If they are molecules,
the type argument has no effect and must be set to zero. Instead,
the type of each atom in the inserted molecule is specified
in the file read by the <A HREF = "molecule.html">molecule</A> command.
</P>
<P>This fix cannot be used to perform MC insertions of gas atoms or
molecules other than the exchanged type, but MC deletions,
translations, and rotations can be performed on any atom/molecule in
the fix group. All atoms in the simulation cell can be moved using
regular time integration translations, e.g. via
<code class="xref doc docutils literal"><span class="pre">fix_nvt</span></code>, resulting in a hybrid GCMC+MD simulation. A
<A HREF = "fix_nvt.html">fix_nvt</A>, resulting in a hybrid GCMC+MD simulation. A
smaller-than-usual timestep size may be needed when running such a
hybrid simulation, especially if the inserted molecules are not well
equilibrated.</p>
<p>This command may optionally use the <em>region</em> keyword to define an
exchange and move volume. The specified region must have been
previously defined with a <a class="reference internal" href="region.html"><em>region</em></a> command. It must be
defined with side = <em>in</em>. Insertion attempts occur only within the
specified region. For non-rectangular regions, random trial
equilibrated.
</P>
<P>This command may optionally use the <I>region</I> keyword to define an
exchange and move volume. The specified region must have been
previously defined with a <A HREF = "region.html">region</A> command. It must be
defined with side = <I>in</I>. Insertion attempts occur only within the
specified region. For non-rectangular regions, random trial
points are generated within the rectangular bounding box until a point is found
that lies inside the region. If no valid point is generated after 1000 trials,
no insertion is performed, but it is counted as an attempted insertion.
Move and deletion attempt candidates are selected
Move and deletion attempt candidates are selected
from gas atoms or molecules within the region. If there are no candidates,
no move or deletion is performed, but it is counted as an attempt move
or deletion. If an attempted move places the atom or molecule center-of-mass outside
the specified region, a new attempted move is generated. This process is repeated
until the atom or molecule center-of-mass is inside the specified region.</p>
<p>If used with <code class="xref doc docutils literal"><span class="pre">fix_nvt</span></code>, the temperature of the imaginary
or deletion. If an attempted move places the atom or molecule center-of-mass outside
the specified region, a new attempted move is generated. This process is repeated
until the atom or molecule center-of-mass is inside the specified region.
</P>
<P>If used with <A HREF = "fix_nvt.html">fix_nvt</A>, the temperature of the imaginary
reservoir, T, should be set to be equivalent to the target temperature
used in <code class="xref doc docutils literal"><span class="pre">fix_nvt</span></code>. Otherwise, the imaginary reservoir
will not be in thermal equilibrium with the simulation cell.</p>
<p>Note that neighbor lists are re-built every timestep that this fix is
used in <A HREF = "fix_nvt.html">fix_nvt</A>. Otherwise, the imaginary reservoir
will not be in thermal equilibrium with the simulation cell. Also,
it is important that the temperature used by fix nvt be dynamic,
which can be achieved as follows:
</P>
<PRE>compute mdtemp mdatoms temp
compute_modify mdtemp dynamic yes
fix mdnvt mdatoms nvt temp 300.0 300.0 10.0
fix_modify mdnvt temp mdtemp
</PRE>
<P>Note that neighbor lists are re-built every timestep that this fix is
invoked, so you should not set N to be too small. However, periodic
rebuilds are necessary in order to avoid dangerous rebuilds and missed
interactions. Specifically, avoid performing so many MC translations
per timestep that atoms can move beyond the neighbor list skin
distance. See the <a class="reference internal" href="neighbor.html"><em>neighbor</em></a> command for details.</p>
<p>When an atom or molecule is to be inserted, its
distance. See the <A HREF = "neighbor.html">neighbor</A> command for details.
</P>
<P>When an atom or molecule is to be inserted, its
coordinates are chosen at a random position within the current
simulation cell or region, and new atom velocities are randomly chosen from
the specified temperature distribution given by T. Relative
the specified temperature distribution given by T. The effective
temperature for new atom velocities can be increased or decreased
using the optional keyword <I>tfac_insert</I> (see below). Relative
coordinates for atoms in a molecule are taken from the template
molecule provided by the user. The center of mass of the molecule
is placed at the insertion point. The orientation of the molecule
is chosen at random by rotating about this point.</p>
<p>Individual atoms are inserted, unless the <em>mol</em> keyword is used. It
specifies a <em>template-ID</em> previously defined using the
<a class="reference internal" href="molecule.html"><em>molecule</em></a> command, which reads a file that defines the
is chosen at random by rotating about this point.
</P>
<P>Individual atoms are inserted, unless the <I>mol</I> keyword is used. It
specifies a <I>template-ID</I> previously defined using the
<A HREF = "molecule.html">molecule</A> command, which reads a file that defines the
molecule. The coordinates, atom types, charges, etc, as well as any
bond/angle/etc and special neighbor information for the molecule can
be specified in the molecule file. See the <a class="reference internal" href="molecule.html"><em>molecule</em></a>
be specified in the molecule file. See the <A HREF = "molecule.html">molecule</A>
command for details. The only settings required to be in this file
are the coordinates and types of atoms in the molecule.</p>
<p>When not using the <em>mol</em> keyword, you should ensure you do not delete
are the coordinates and types of atoms in the molecule.
</P>
<P>When not using the <I>mol</I> keyword, you should ensure you do not delete
atoms that are bonded to other atoms, or LAMMPS will
soon generate an error when it tries to find bonded neighbors. LAMMPS will
warn you if any of the atoms eligible for deletion have a non-zero
molecule ID, but does not check for this at the time of deletion.</p>
<p>If you wish to insert molecules via the <em>mol</em> keyword, that will have
their bonds or angles constrained via SHAKE, use the <em>shake</em> keyword,
specifying as its value the ID of a separate <a class="reference internal" href="fix_shake.html"><em>fix shake</em></a> command which also appears in your input script.</p>
<p>Optionally, users may specify the maximum rotation angle for
molecular rotations using the <em>maxangle</em> keyword and specifying
molecule ID, but does not check for this at the time of deletion.
</P>
<P>If you wish to insert molecules via the <I>mol</I> keyword, that will have
their bonds or angles constrained via SHAKE, use the <I>shake</I> keyword,
specifying as its value the ID of a separate <A HREF = "fix_shake.html">fix
shake</A> command which also appears in your input script.
</P>
<P>Optionally, users may specify the maximum rotation angle for
molecular rotations using the <I>maxangle</I> keyword and specifying
the angle in degrees. Rotations are performed by generating a random
point on the unit sphere and a random rotation angle on the
range [0,maxangle). The molecule is then rotated by that angle about an
axis passing through the molecule center of mass. The axis is parallel
to the unit vector defined by the point on the unit sphere.
axis passing through the molecule center of mass. The axis is parallel
to the unit vector defined by the point on the unit sphere.
The same procedure is used for randomly rotating molecules when they
are inserted, except that the maximum angle is 360 degrees.</p>
<p>Note that fix GCMC does not use configurational bias
MC or any other kind of sampling of intramolecular degrees of freedom.
Inserted molecules can have different orientations, but they will all
have the same intramolecular configuration,
which was specified in the molecule command input.</p>
<p>For atomic gasses, inserted atoms have the specified atom type, but
deleted atoms are any atoms that have been inserted or that belong
to the user-specified fix group. For molecular gasses, exchanged
molecules use the same atom types as in the template molecule
are inserted, except that the maximum angle is 360 degrees.
</P>
<P>Note that fix GCMC does not use configurational bias
MC or any other kind of sampling of intramolecular degrees of freedom.
Inserted molecules can have different orientations, but they will all
have the same intramolecular configuration,
which was specified in the molecule command input.
</P>
<P>For atomic gasses, inserted atoms have the specified atom type, but
deleted atoms are any atoms that have been inserted or that belong
to the user-specified fix group. For molecular gasses, exchanged
molecules use the same atom types as in the template molecule
supplied by the user. In both cases, exchanged
atoms/molecules are assigned to two groups: the default group &#8220;all&#8221;
and the group specified in the fix gcmc command (which can also be
&#8220;all&#8221;).</p>
<p>The gas reservoir pressure can be specified using the <em>pressure</em>
keyword, in which case the user-specified chemical potential is
ignored. For non-ideal gas reservoirs, the user may also specify the
fugacity coefficient using the <em>fugacity_coeff</em> keyword.</p>
<p>The <em>full_energy</em> option means that fix GCMC will compute the total
atoms/molecules are assigned to two groups: the default group "all"
and the group specified in the fix gcmc command (which can also be
"all").
</P>
<P>The gas reservoir pressure can be specified using the <I>pressure</I>
keyword, in which case the user-specified chemical potential is
ignored. For non-ideal gas reservoirs, the user may also specify the
fugacity coefficient using the <I>fugacity_coeff</I> keyword.
</P>
<P>The <I>full_energy</I> option means that fix GCMC will compute the total
potential energy of the entire simulated system. The total system
energy before and after the proposed GCMC move is then used in the
Metropolis criterion to determine whether or not to accept the
Metropolis criterion to determine whether or not to accept the
proposed GCMC move. By default, this option is off, in which case
only partial energies are computed to determine the difference in
energy that would be caused by the proposed GCMC move.</p>
<p>The <em>full_energy</em> option is needed for systems with complicated
potential energy calculations, including the following:</p>
<ul class="simple">
<li>long-range electrostatics (kspace)</li>
<li>many-body pair styles</li>
<li>hybrid pair styles</li>
<li>eam pair styles</li>
<li>triclinic systems</li>
<li>need to include potential energy contributions from other fixes</li>
</ul>
<p>In these cases, LAMMPS will automatically apply the <em>full_energy</em>
keyword and issue a warning message.</p>
<p>When the <em>mol</em> keyword is used, the <em>full_energy</em> option also includes
the intramolecular energy of inserted and deleted molecules. If this
is not desired, the <em>intra_energy</em> keyword can be used to define an
energy that would be caused by the proposed GCMC move.
</P>
<P>The <I>full_energy</I> option is needed for systems with complicated
potential energy calculations, including the following:
</P>
<UL><LI> long-range electrostatics (kspace)
<LI> many-body pair styles
<LI> hybrid pair styles
<LI> eam pair styles
<LI> triclinic systems
<LI> need to include potential energy contributions from other fixes
</UL>
<P>In these cases, LAMMPS will automatically apply the <I>full_energy</I>
keyword and issue a warning message.
</P>
<P>When the <I>mol</I> keyword is used, the <I>full_energy</I> option also includes
the intramolecular energy of inserted and deleted molecules. If this
is not desired, the <I>intra_energy</I> keyword can be used to define an
amount of energy that is subtracted from the final energy when a molecule
is inserted, and added to the initial energy when a molecule is
deleted. For molecules that have a non-zero intramolecular energy, this
will ensure roughly the same behavior whether or not the <em>full_energy</em>
option is used.</p>
<p>Some fixes have an associated potential energy. Examples of such fixes
include: <a class="reference internal" href="fix_efield.html"><em>efield</em></a>, <a class="reference internal" href="fix_gravity.html"><em>gravity</em></a>,
<a class="reference internal" href="fix_addforce.html"><em>addforce</em></a>, <a class="reference internal" href="fix_langevin.html"><em>langevin</em></a>,
<a class="reference internal" href="fix_restrain.html"><em>restrain</em></a>, <a class="reference internal" href="fix_temp_berendsen.html"><em>temp/berendsen</em></a>,
<a class="reference internal" href="fix_temp_rescale.html"><em>temp/rescale</em></a>, and <a class="reference internal" href="fix_wall.html"><em>wall fixes</em></a>.
For that energy to be included in the total potential energy of the
will ensure roughly the same behavior whether or not the <I>full_energy</I>
option is used.
</P>
<P>Inserted atoms and molecules are assigned random velocities based on the
specified temperature T. Because the relative velocity of
all atoms in the molecule is zero, this may result in inserted molecules
that are systematically too cold. In addition, the intramolecular potential
energy of the inserted molecule may cause the kinetic energy
of the molecule to quickly increase or decrease after insertion.
The <I>tfac_insert</I> keyword allows the user to counteract these effects
by changing the temperature used to assign velocities to
inserted atoms and molecules by a constant factor. For a
particular application, some experimentation may be required
to find a value of <I>tfac_insert</I> that results in inserted molecules that
equilibrate quickly to the correct temperature.
</P>
<P>Some fixes have an associated potential energy. Examples of such fixes
include: <A HREF = "fix_efield.html">efield</A>, <A HREF = "fix_gravity.html">gravity</A>,
<A HREF = "fix_addforce.html">addforce</A>, <A HREF = "fix_langevin.html">langevin</A>,
<A HREF = "fix_restrain.html">restrain</A>, <A HREF = "fix_temp_berendsen.html">temp/berendsen</A>,
<A HREF = "fix_temp_rescale.html">temp/rescale</A>, and <A HREF = "fix_wall.html">wall fixes</A>.
For that energy to be included in the total potential energy of the
system (the quantity used when performing GCMC moves),
you MUST enable the <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a> <em>energy</em> option for
that fix. The doc pages for individual <a class="reference internal" href="fix.html"><em>fix</em></a> commands
specify if this should be done.</p>
<p>Use the <em>charge</em> option to insert atoms with a user-specified point
charge. Note that doing so will cause the system to become non-neutral.
LAMMPS issues a warning when using long-range electrostatics (kspace)
with non-neutral systems. See the
<a class="reference internal" href="compute_group_group.html"><em>compute_group_group</em></a> documentation for more
details about simulating non-neutral systems with kspace on.</p>
<p>Use of this fix typically will cause the number of atoms to fluctuate,
you MUST enable the <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option for
that fix. The doc pages for individual <A HREF = "fix.html">fix</A> commands
specify if this should be done.
</P>
<P>Use the <I>charge</I> option to insert atoms with a user-specified point
charge. Note that doing so will cause the system to become non-neutral.
LAMMPS issues a warning when using long-range electrostatics (kspace)
with non-neutral systems. See the
<A HREF = "compute_group_group.html">compute_group_group</A> documentation for more
details about simulating non-neutral systems with kspace on.
</P>
<P>Use of this fix typically will cause the number of atoms to fluctuate,
therefore, you will want to use the
<a class="reference internal" href="compute_modify.html"><em>compute_modify</em></a> command to insure that the
<A HREF = "compute_modify.html">compute_modify</A> command to insure that the
current number of atoms is used as a normalizing factor each time
temperature is computed. Here is the necessary command:</p>
<div class="highlight-python"><div class="highlight"><pre>compute_modify thermo_temp dynamic yes
</pre></div>
</div>
<p>If LJ units are used, note that a value of 0.18292026 is used by this
fix as the reduced value for Planck&#8217;s constant. This value was
temperature is computed. Here is the necessary command:
</P>
<PRE>compute_modify thermo_temp dynamic yes
</PRE>
<P>If LJ units are used, note that a value of 0.18292026 is used by this
fix as the reduced value for Planck's constant. This value was
derived from LJ parameters for argon, where h* = h/sqrt(sigma^2 *
epsilon * mass), sigma = 3.429 angstroms, epsilon/k = 121.85 K, and
mass = 39.948 amu.</p>
<p>The <em>group</em> keyword assigns all inserted atoms to the <a class="reference internal" href="group.html"><em>group</em></a>
of the group-ID value. The <em>grouptype</em> keyword assigns all
inserted atoms of the specified type to the <a class="reference internal" href="group.html"><em>group</em></a>
of the group-ID value.</p>
</div>
<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 state of the fix to <a class="reference internal" href="restart.html"><em>binary restart files</em></a>. This includes information about the random
mass = 39.948 amu.
</P>
<P>The <I>group</I> keyword assigns all inserted atoms to the <A HREF = "group.html">group</A>
of the group-ID value. The <I>grouptype</I> keyword assigns all
inserted atoms of the specified type to the <A HREF = "group.html">group</A>
of the group-ID value.
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>This fix writes the state of the fix to <A HREF = "restart.html">binary restart
files</A>. This includes information about the random
number generator seed, the next timestep for MC exchanges, etc. See
the <a class="reference internal" href="read_restart.html"><em>read_restart</em></a> command for info on how to
the <A HREF = "read_restart.html">read_restart</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.</p>
<p>This fix computes a global vector of length 8, which can be accessed
by various <a class="reference internal" href="Section_howto.html#howto-15"><span>output commands</span></a>. The vector
values are the following global cumulative quantities:</p>
<ul class="simple">
<li>1 = translation attempts</li>
<li>2 = translation successes</li>
<li>3 = insertion attempts</li>
<li>4 = insertion successes</li>
<li>5 = deletion attempts</li>
<li>6 = deletion successes</li>
<li>7 = rotation attempts</li>
<li>8 = rotation successes</li>
</ul>
<p>The 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"><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>
<p>This fix is part of the MC 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>Making LAMMPS</span></a> section for more info.</p>
<p>Do not set &#8220;neigh_modify once yes&#8221; or else this fix will never be
called. Reneighboring is required.</p>
<p>Can be run in parallel, but aspects of the GCMC part will not scale
well in parallel. Only usable for 3D simulations.</p>
<p>Note that very lengthy simulations involving insertions/deletions of
the operation of the fix continues in an uninterrupted fashion.
</P>
<P>None of the <A HREF = "fix_modify.html">fix_modify</A> options are relevant to this
fix.
</P>
<P>This fix computes a global vector of length 8, which can be accessed
by various <A HREF = "Section_howto.html#howto_15">output commands</A>. The vector
values are the following global cumulative quantities:
</P>
<UL><LI>1 = translation attempts
<LI>2 = translation successes
<LI>3 = insertion attempts
<LI>4 = insertion successes
<LI>5 = deletion attempts
<LI>6 = deletion successes
<LI>7 = rotation attempts
<LI>8 = rotation successes
</UL>
<P>The vector values calculated by this fix are "extensive".
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command. This fix is not invoked during <A HREF = "minimize.html">energy
minimization</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This fix is part of the MC package. It is only enabled if LAMMPS was
built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>Do not set "neigh_modify once yes" or else this fix will never be
called. Reneighboring is required.
</P>
<P>Can be run in parallel, but aspects of the GCMC part will not scale
well in parallel. Only usable for 3D simulations.
</P>
<P>Note that very lengthy simulations involving insertions/deletions of
billions of gas molecules may run out of atom or molecule IDs and
trigger an error, so it is better to run multiple shorter-duration
trigger an error, so it is better to run multiple shorter-duration
simulations. Likewise, very large molecules have not been tested
and may turn out to be problematic.</p>
<p>Use of multiple fix gcmc commands in the same input script can be
problematic if using a template molecule. The issue is that the
and may turn out to be problematic.
</P>
<P>Use of multiple fix gcmc commands in the same input script can be
problematic if using a template molecule. The issue is that the
user-referenced template molecule in the second fix gcmc command
may no longer exist since it might have been deleted by the first
fix gcmc command. An existing template molecule will need to be
referenced by the user for each subsequent fix gcmc command.</p>
</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="fix_atom_swap.html"><em>fix atom/swap</em></a>,
<code class="xref doc docutils literal"><span class="pre">fix</span> <span class="pre">nvt</span></code>, <a class="reference internal" href="neighbor.html"><em>neighbor</em></a>,
<a class="reference internal" href="fix_deposit.html"><em>fix deposit</em></a>, <a class="reference internal" href="fix_evaporate.html"><em>fix evaporate</em></a>,
<a class="reference internal" href="delete_atoms.html"><em>delete_atoms</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 option defaults are mol = no, maxangle = 10, full_energy = no,
referenced by the user for each subsequent fix gcmc command.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_atom_swap.html">fix atom/swap</A>,
<A HREF = "fix_nvt.html">fix nvt</A>, <A HREF = "neighbor.html">neighbor</A>,
<A HREF = "fix_deposit.html">fix deposit</A>, <A HREF = "fix_evaporate.html">fix evaporate</A>,
<A HREF = "delete_atoms.html">delete_atoms</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are mol = no, maxangle = 10, full_energy = no,
except for the situations where full_energy is required, as
listed above.</p>
<hr class="docutils" />
<p id="frenkel"><strong>(Frenkel)</strong> Frenkel and Smit, Understanding Molecular Simulation,
Academic Press, London, 2002.</p>
</div>
</div>
listed above.
</P>
<HR>
<A NAME = "Frenkel"></A>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright .
</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:'15 May 2015 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>
<P><B>(Frenkel)</B> Frenkel and Smit, Understanding Molecular Simulation,
Academic Press, London, 2002.
</P>
</HTML>

View File

@ -17,7 +17,7 @@ gcmc = style name of this fix command :l
N = invoke this fix every N steps :l
X = average number of GCMC exchanges to attempt every N steps :l
M = average number of MC moves to attempt every N steps :l
type = atom type to assign to inserted atoms (offset for molecule insertion) :l
type = atom type for inserted atoms (must be 0 if mol keyword used) :l
seed = random # seed (positive integer) :l
T = temperature of the ideal gas reservoir (temperature units) :l
mu = chemical potential of the ideal gas reservoir (energy units) :l
@ -85,12 +85,10 @@ All inserted particles are always assigned to two groups: the default group
be "all"). In addition, particles are also added to any groups specified
by the {group} and {grouptype} keywords.
If inserted particles are individual atoms, they are
assigned the specified atom type. If they are molecules, the type of
each atom in the inserted molecule is specified in the file read by
the "molecule"_molecule.html command, and those values are added to
the specified atom type. E.g. if {type} = 2, and the file specifies
atom types 1,2,3, then the inserted molecule will have atom types
3,4,5.
assigned the atom type given by the type argument. If they are molecules,
the type argument has no effect and must be set to zero. Instead,
the type of each atom in the inserted molecule is specified
in the file read by the "molecule"_molecule.html command.
This fix cannot be used to perform MC insertions of gas atoms or
molecules other than the exchanged type, but MC deletions,
@ -231,7 +229,7 @@ Inserted atoms and molecules are assigned random velocities based on the
specified temperature T. Because the relative velocity of
all atoms in the molecule is zero, this may result in inserted molecules
that are systematically too cold. In addition, the intramolecular potential
energy of the inserted molecule may casue the kinetic energy
energy of the inserted molecule may cause the kinetic energy
of the molecule to quickly increase or decrease after insertion.
The {tfac_insert} keyword allows the user to counteract these effects
by changing the temperature used to assign velocities to

View File

@ -153,8 +153,8 @@ FixGCMC::FixGCMC(LAMMPS *lmp, int narg, char **arg) :
error->all(FLERR,"Fix gcmc molecule must have coordinates");
if (onemols[imol]->typeflag == 0)
error->all(FLERR,"Fix gcmc molecule must have atom types");
if (ngcmc_type+onemols[imol]->ntypes <= 0 || ngcmc_type+onemols[imol]->ntypes > atom->ntypes)
error->all(FLERR,"Invalid atom type in fix gcmc mol command");
if (ngcmc_type != 0)
error->all(FLERR,"Atom type must be zero in fix gcmc mol command");
if (onemols[imol]->qflag == 1 && atom->q == NULL)
error->all(FLERR,"Fix gcmc molecule has charges, but atom style does not");
@ -527,11 +527,6 @@ void FixGCMC::init()
if (mode == MOLECULE) {
// apply gcmc offset to types in molecule template
for (int i = 0; i < onemols[imol]->natoms; i++)
onemols[imol]->type[i] += ngcmc_type;
onemols[imol]->compute_mass();
onemols[imol]->compute_com();
gas_mass = onemols[imol]->masstotal;

View File

@ -174,7 +174,7 @@ E: Fix gcmc molecule must have atom types
The defined molecule does not specify atom types.
E: Invalid atom type in fix gcmc mol command
E: Atom type must be zero in fix gcmc mol command
Self-explanatory.