forked from lijiext/lammps
744 lines
43 KiB
HTML
744 lines
43 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 nvt command — 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 & 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 & 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>
|
|
|
|
</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> »</li>
|
|
|
|
<li>fix nvt 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-nvt-command">
|
|
<span id="index-0"></span><h1>fix nvt command<a class="headerlink" href="#fix-nvt-command" title="Permalink to this headline">¶</a></h1>
|
|
</div>
|
|
<div class="section" id="fix-nvt-cuda-command">
|
|
<h1>fix nvt/cuda command<a class="headerlink" href="#fix-nvt-cuda-command" title="Permalink to this headline">¶</a></h1>
|
|
</div>
|
|
<div class="section" id="fix-nvt-omp-command">
|
|
<h1>fix nvt/omp command<a class="headerlink" href="#fix-nvt-omp-command" title="Permalink to this headline">¶</a></h1>
|
|
</div>
|
|
<div class="section" id="fix-npt-command">
|
|
<h1>fix npt command<a class="headerlink" href="#fix-npt-command" title="Permalink to this headline">¶</a></h1>
|
|
</div>
|
|
<div class="section" id="fix-npt-cuda-command">
|
|
<h1>fix npt/cuda command<a class="headerlink" href="#fix-npt-cuda-command" title="Permalink to this headline">¶</a></h1>
|
|
</div>
|
|
<div class="section" id="fix-npt-omp-command">
|
|
<h1>fix npt/omp command<a class="headerlink" href="#fix-npt-omp-command" title="Permalink to this headline">¶</a></h1>
|
|
</div>
|
|
<div class="section" id="fix-nph-command">
|
|
<h1>fix nph command<a class="headerlink" href="#fix-nph-command" title="Permalink to this headline">¶</a></h1>
|
|
</div>
|
|
<div class="section" id="fix-nph-omp-command">
|
|
<h1>fix nph/omp command<a class="headerlink" href="#fix-nph-omp-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 style_name 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>style_name = <em>nvt</em> or <em>npt</em> or <em>nph</em></li>
|
|
<li>one or more keyword/value pairs may be appended</li>
|
|
</ul>
|
|
<pre class="literal-block">
|
|
keyword = <em>temp</em> or <em>iso</em> or <em>aniso</em> or <em>tri</em> or <em>x</em> or <em>y</em> or <em>z</em> or <em>xy</em> or <em>yz</em> or <em>xz</em> or <em>couple</em> or <em>tchain</em> or <em>pchain</em> or <em>mtk</em> or <em>tloop</em> or <em>ploop</em> or <em>nreset</em> or <em>drag</em> or <em>dilate</em> or <em>scalexy</em> or <em>scaleyz</em> or <em>scalexz</em> or <em>flip</em> or <em>fixedpoint</em>
|
|
<em>temp</em> values = Tstart Tstop Tdamp
|
|
Tstart,Tstop = external temperature at start/end of run
|
|
Tdamp = temperature damping parameter (time units)
|
|
<em>iso</em> or <em>aniso</em> or <em>tri</em> values = Pstart Pstop Pdamp
|
|
Pstart,Pstop = scalar external pressure at start/end of run (pressure units)
|
|
Pdamp = pressure damping parameter (time units)
|
|
<em>x</em> or <em>y</em> or <em>z</em> or <em>xy</em> or <em>yz</em> or <em>xz</em> values = Pstart Pstop Pdamp
|
|
Pstart,Pstop = external stress tensor component at start/end of run (pressure units)
|
|
Pdamp = stress damping parameter (time units)
|
|
<em>couple</em> = <em>none</em> or <em>xyz</em> or <em>xy</em> or <em>yz</em> or <em>xz</em>
|
|
<em>tchain</em> value = N
|
|
N = length of thermostat chain (1 = single thermostat)
|
|
<em>pchain</em> values = N
|
|
N length of thermostat chain on barostat (0 = no thermostat)
|
|
<em>mtk</em> value = <em>yes</em> or <em>no</em> = add in MTK adjustment term or not
|
|
<em>tloop</em> value = M
|
|
M = number of sub-cycles to perform on thermostat
|
|
<em>ploop</em> value = M
|
|
M = number of sub-cycles to perform on barostat thermostat
|
|
<em>nreset</em> value = reset reference cell every this many timesteps
|
|
<em>drag</em> value = Df
|
|
Df = drag factor added to barostat/thermostat (0.0 = no drag)
|
|
<em>dilate</em> value = dilate-group-ID
|
|
dilate-group-ID = only dilate atoms in this group due to barostat volume changes
|
|
<em>scalexy</em> value = <em>yes</em> or <em>no</em> = scale xy with ly
|
|
<em>scaleyz</em> value = <em>yes</em> or <em>no</em> = scale yz with lz
|
|
<em>scalexz</em> value = <em>yes</em> or <em>no</em> = scale xz with lz
|
|
<em>flip</em> value = <em>yes</em> or <em>no</em> = allow or disallow box flips when it becomes highly skewed
|
|
<em>fixedpoint</em> values = x y z
|
|
x,y,z = perform barostat dilation/contraction around this point (distance 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 1 all nvt temp 300.0 300.0 100.0
|
|
fix 1 water npt temp 300.0 300.0 100.0 iso 0.0 0.0 1000.0
|
|
fix 2 jello npt temp 300.0 300.0 100.0 tri 5.0 5.0 1000.0
|
|
fix 2 ice nph x 1.0 1.0 0.5 y 2.0 2.0 0.5 z 3.0 3.0 0.5 yz 0.1 0.1 0.5 xz 0.2 0.2 0.5 xy 0.3 0.3 0.5 nreset 1000
|
|
</pre></div>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="description">
|
|
<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2>
|
|
<p>These commands perform time integration on Nose-Hoover style
|
|
non-Hamiltonian equations of motion which are designed to generate
|
|
positions and velocities sampled from the canonical (nvt),
|
|
isothermal-isobaric (npt), and isenthalpic (nph) ensembles. This
|
|
updates the position and velocity for atoms in the group each
|
|
timestep.</p>
|
|
<p>The thermostatting and barostatting is achieved by adding some dynamic
|
|
variables which are coupled to the particle velocities
|
|
(thermostatting) and simulation domain dimensions (barostatting). In
|
|
addition to basic thermostatting and barostatting, these fixes can
|
|
also create a chain of thermostats coupled to the particle thermostat,
|
|
and another chain of thermostats coupled to the barostat
|
|
variables. The barostat can be coupled to the overall box volume, or
|
|
to individual dimensions, including the <em>xy</em>, <em>xz</em> and <em>yz</em> tilt
|
|
dimensions. The external pressure of the barostat can be specified as
|
|
either a scalar pressure (isobaric ensemble) or as components of a
|
|
symmetric stress tensor (constant stress ensemble). When used
|
|
correctly, the time-averaged temperature and stress tensor of the
|
|
particles will match the target values specified by Tstart/Tstop and
|
|
Pstart/Pstop.</p>
|
|
<p>The equations of motion used are those of Shinoda et al in
|
|
<a class="reference internal" href="pair_sdk.html#shinoda"><span>(Shinoda)</span></a>, which combine the hydrostatic equations of
|
|
Martyna, Tobias and Klein in <a class="reference internal" href="fix_rigid.html#martyna"><span>(Martyna)</span></a> with the strain
|
|
energy proposed by Parrinello and Rahman in
|
|
<a class="reference internal" href="fix_nh_eff.html#parrinello"><span>(Parrinello)</span></a>. The time integration schemes closely
|
|
follow the time-reversible measure-preserving Verlet and rRESPA
|
|
integrators derived by Tuckerman et al. in <a class="reference internal" href="run_style.html#tuckerman"><span>(Tuckerman)</span></a>.</p>
|
|
<hr class="docutils" />
|
|
<p>The thermostat parameters for fix styles <em>nvt</em> and <em>npt</em> is specified
|
|
using the <em>temp</em> keyword. Other thermostat-related keywords are
|
|
<em>tchain</em>, <em>tloop</em> and <em>drag</em>, which are discussed below.</p>
|
|
<p>The thermostat is applied to only the translational degrees of freedom
|
|
for the particles. The translational degrees of freedom can also have
|
|
a bias velocity removed before thermostatting takes place; see the
|
|
description below. The desired temperature at each timestep is a
|
|
ramped value during the run from <em>Tstart</em> to <em>Tstop</em>. The <em>Tdamp</em>
|
|
parameter is specified in time units and determines how rapidly the
|
|
temperature is relaxed. For example, a value of 10.0 means to relax
|
|
the temperature in a timespan of (roughly) 10 time units (e.g. tau or
|
|
fmsec or psec - see the <a class="reference internal" href="units.html"><em>units</em></a> command). The atoms in the
|
|
fix group are the only ones whose velocities and positions are updated
|
|
by the velocity/position update portion of the integration.</p>
|
|
<div class="admonition warning">
|
|
<p class="first admonition-title">Warning</p>
|
|
<p class="last">A Nose-Hoover thermostat will not work well for
|
|
arbitrary values of <em>Tdamp</em>. If <em>Tdamp</em> is too small, the temperature
|
|
can fluctuate wildly; if it is too large, the temperature will take a
|
|
very long time to equilibrate. A good choice for many models is a
|
|
<em>Tdamp</em> of around 100 timesteps. Note that this is NOT the same as
|
|
100 time units for most <a class="reference internal" href="units.html"><em>units</em></a> settings.</p>
|
|
</div>
|
|
<hr class="docutils" />
|
|
<p>The barostat parameters for fix styles <em>npt</em> and <em>nph</em> is specified
|
|
using one or more of the <em>iso</em>, <em>aniso</em>, <em>tri</em>, <em>x</em>, <em>y</em>, <em>z</em>, <em>xy</em>,
|
|
<em>xz</em>, <em>yz</em>, and <em>couple</em> keywords. These keywords give you the
|
|
ability to specify all 6 components of an external stress tensor, and
|
|
to couple various of these components together so that the dimensions
|
|
they represent are varied together during a constant-pressure
|
|
simulation.</p>
|
|
<p>Other barostat-related keywords are <em>pchain</em>, <em>mtk</em>, <em>ploop</em>,
|
|
<em>nreset</em>, <em>drag</em>, and <em>dilate</em>, which are discussed below.</p>
|
|
<p>Orthogonal simulation boxes have 3 adjustable dimensions (x,y,z).
|
|
Triclinic (non-orthogonal) simulation boxes have 6 adjustable
|
|
dimensions (x,y,z,xy,xz,yz). The <a class="reference internal" href="create_box.html"><em>create_box</em></a>, <a class="reference internal" href="read_data.html"><em>read data</em></a>, and <a class="reference internal" href="read_restart.html"><em>read_restart</em></a> commands
|
|
specify whether the simulation box is orthogonal or non-orthogonal
|
|
(triclinic) and explain the meaning of the xy,xz,yz tilt factors.</p>
|
|
<p>The target pressures for each of the 6 components of the stress tensor
|
|
can be specified independently via the <em>x</em>, <em>y</em>, <em>z</em>, <em>xy</em>, <em>xz</em>, <em>yz</em>
|
|
keywords, which correspond to the 6 simulation box dimensions. For
|
|
each component, the external pressure or tensor component at each
|
|
timestep is a ramped value during the run from <em>Pstart</em> to <em>Pstop</em>.
|
|
If a target pressure is specified for a component, then the
|
|
corresponding box dimension will change during a simulation. For
|
|
example, if the <em>y</em> keyword is used, the y-box length will change. If
|
|
the <em>xy</em> keyword is used, the xy tilt factor will change. A box
|
|
dimension will not change if that component is not specified, although
|
|
you have the option to change that dimension via the <a class="reference internal" href="fix_deform.html"><em>fix deform</em></a> command.</p>
|
|
<p>Note that in order to use the <em>xy</em>, <em>xz</em>, or <em>yz</em> keywords, the
|
|
simulation box must be triclinic, even if its initial tilt factors are
|
|
0.0.</p>
|
|
<p>For all barostat keywords, the <em>Pdamp</em> parameter operates like the
|
|
<em>Tdamp</em> parameter, determining the time scale on which pressure is
|
|
relaxed. For example, a value of 10.0 means to relax the pressure in
|
|
a timespan of (roughly) 10 time units (e.g. tau or fmsec or psec - see
|
|
the <a class="reference internal" href="units.html"><em>units</em></a> command).</p>
|
|
<div class="admonition warning">
|
|
<p class="first admonition-title">Warning</p>
|
|
<p class="last">A Nose-Hoover barostat will not work well for
|
|
arbitrary values of <em>Pdamp</em>. If <em>Pdamp</em> is too small, the pressure
|
|
and volume can fluctuate wildly; if it is too large, the pressure will
|
|
take a very long time to equilibrate. A good choice for many models
|
|
is a <em>Pdamp</em> of around 1000 timesteps. Note that this is NOT the same
|
|
as 1000 time units for most <a class="reference internal" href="units.html"><em>units</em></a> settings.</p>
|
|
</div>
|
|
<p>Regardless of what atoms are in the fix group (the only atoms which
|
|
are time integrated), a global pressure or stress tensor is computed
|
|
for all atoms. Similarly, when the size of the simulation box is
|
|
changed, all atoms are re-scaled to new positions, unless the keyword
|
|
<em>dilate</em> is specified with a <em>dilate-group-ID</em> for a group that
|
|
represents a subset of the atoms. This can be useful, for example, to
|
|
leave the coordinates of atoms in a solid substrate unchanged and
|
|
controlling the pressure of a surrounding fluid. This option should
|
|
be used with care, since it can be unphysical to dilate some atoms and
|
|
not others, because it can introduce large, instantaneous
|
|
displacements between a pair of atoms (one dilated, one not) that are
|
|
far from the dilation origin. Also note that for atoms not in the fix
|
|
group, a separate time integration fix like <a class="reference internal" href="fix_nve.html"><em>fix nve</em></a> or
|
|
<a class="reference internal" href=""><em>fix nvt</em></a> can be used on them, independent of whether they
|
|
are dilated or not.</p>
|
|
<hr class="docutils" />
|
|
<p>The <em>couple</em> keyword allows two or three of the diagonal components of
|
|
the pressure tensor to be “coupled” together. The value specified
|
|
with the keyword determines which are coupled. For example, <em>xz</em>
|
|
means the <em>Pxx</em> and <em>Pzz</em> components of the stress tensor are coupled.
|
|
<em>Xyz</em> means all 3 diagonal components are coupled. Coupling means two
|
|
things: the instantaneous stress will be computed as an average of the
|
|
corresponding diagonal components, and the coupled box dimensions will
|
|
be changed together in lockstep, meaning coupled dimensions will be
|
|
dilated or contracted by the same percentage every timestep. The
|
|
<em>Pstart</em>, <em>Pstop</em>, <em>Pdamp</em> parameters for any coupled dimensions must
|
|
be identical. <em>Couple xyz</em> can be used for a 2d simulation; the <em>z</em>
|
|
dimension is simply ignored.</p>
|
|
<hr class="docutils" />
|
|
<p>The <em>iso</em>, <em>aniso</em>, and <em>tri</em> keywords are simply shortcuts that are
|
|
equivalent to specifying several other keywords together.</p>
|
|
<p>The keyword <em>iso</em> means couple all 3 diagonal components together when
|
|
pressure is computed (hydrostatic pressure), and dilate/contract the
|
|
dimensions together. Using “iso Pstart Pstop Pdamp” is the same as
|
|
specifying these 4 keywords:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre>x Pstart Pstop Pdamp
|
|
y Pstart Pstop Pdamp
|
|
z Pstart Pstop Pdamp
|
|
couple xyz
|
|
</pre></div>
|
|
</div>
|
|
<p>The keyword <em>aniso</em> means <em>x</em>, <em>y</em>, and <em>z</em> dimensions are controlled
|
|
independently using the <em>Pxx</em>, <em>Pyy</em>, and <em>Pzz</em> components of the
|
|
stress tensor as the driving forces, and the specified scalar external
|
|
pressure. Using “aniso Pstart Pstop Pdamp” is the same as specifying
|
|
these 4 keywords:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre>x Pstart Pstop Pdamp
|
|
y Pstart Pstop Pdamp
|
|
z Pstart Pstop Pdamp
|
|
couple none
|
|
</pre></div>
|
|
</div>
|
|
<p>The keyword <em>tri</em> means <em>x</em>, <em>y</em>, <em>z</em>, <em>xy</em>, <em>xz</em>, and <em>yz</em> dimensions
|
|
are controlled independently using their individual stress components
|
|
as the driving forces, and the specified scalar pressure as the
|
|
external normal stress. Using “tri Pstart Pstop Pdamp” is the same as
|
|
specifying these 7 keywords:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre>x Pstart Pstop Pdamp
|
|
y Pstart Pstop Pdamp
|
|
z Pstart Pstop Pdamp
|
|
xy 0.0 0.0 Pdamp
|
|
yz 0.0 0.0 Pdamp
|
|
xz 0.0 0.0 Pdamp
|
|
couple none
|
|
</pre></div>
|
|
</div>
|
|
<hr class="docutils" />
|
|
<p>In some cases (e.g. for solids) the pressure (volume) and/or
|
|
temperature of the system can oscillate undesirably when a Nose/Hoover
|
|
barostat and thermostat is applied. The optional <em>drag</em> keyword will
|
|
damp these oscillations, although it alters the Nose/Hoover equations.
|
|
A value of 0.0 (no drag) leaves the Nose/Hoover formalism unchanged.
|
|
A non-zero value adds a drag term; the larger the value specified, the
|
|
greater the damping effect. Performing a short run and monitoring the
|
|
pressure and temperature is the best way to determine if the drag term
|
|
is working. Typically a value between 0.2 to 2.0 is sufficient to
|
|
damp oscillations after a few periods. Note that use of the drag
|
|
keyword will interfere with energy conservation and will also change
|
|
the distribution of positions and velocities so that they do not
|
|
correspond to the nominal NVT, NPT, or NPH ensembles.</p>
|
|
<p>An alternative way to control initial oscillations is to use chain
|
|
thermostats. The keyword <em>tchain</em> determines the number of thermostats
|
|
in the particle thermostat. A value of 1 corresponds to the original
|
|
Nose-Hoover thermostat. The keyword <em>pchain</em> specifies the number of
|
|
thermostats in the chain thermostatting the barostat degrees of
|
|
freedom. A value of 0 corresponds to no thermostatting of the
|
|
barostat variables.</p>
|
|
<p>The <em>mtk</em> keyword controls whether or not the correction terms due to
|
|
Martyna, Tuckerman, and Klein are included in the equations of motion
|
|
<a class="reference internal" href="fix_rigid.html#martyna"><span>(Martyna)</span></a>. Specifying <em>no</em> reproduces the original
|
|
Hoover barostat, whose volume probability distribution function
|
|
differs from the true NPT and NPH ensembles by a factor of 1/V. Hence
|
|
using <em>yes</em> is more correct, but in many cases the difference is
|
|
negligible.</p>
|
|
<p>The keyword <em>tloop</em> can be used to improve the accuracy of integration
|
|
scheme at little extra cost. The initial and final updates of the
|
|
thermostat variables are broken up into <em>tloop</em> substeps, each of
|
|
length <em>dt</em>/<em>tloop</em>. This corresponds to using a first-order
|
|
Suzuki-Yoshida scheme <span class="xref std std-ref">(Tuckerman2006)</span>. The keyword
|
|
<em>ploop</em> does the same thing for the barostat thermostat.</p>
|
|
<p>The keyword <em>nreset</em> controls how often the reference dimensions used
|
|
to define the strain energy are reset. If this keyword is not used,
|
|
or is given a value of zero, then the reference dimensions are set to
|
|
those of the initial simulation domain and are never changed. If the
|
|
simulation domain changes significantly during the simulation, then
|
|
the final average pressure tensor will differ significantly from the
|
|
specified values of the external stress tensor. A value of <em>nstep</em>
|
|
means that every <em>nstep</em> timesteps, the reference dimensions are set
|
|
to those of the current simulation domain.</p>
|
|
<p>The <em>scaleyz</em>, <em>scalexz</em>, and <em>scalexy</em> keywords control whether or
|
|
not the corresponding tilt factors are scaled with the associated box
|
|
dimensions when barostatting triclinic periodic cells. The default
|
|
values <em>yes</em> will turn on scaling, which corresponds to adjusting the
|
|
linear dimensions of the cell while preserving its shape. Choosing
|
|
<em>no</em> ensures that the tilt factors are not scaled with the box
|
|
dimensions. See below for restrictions and default values in different
|
|
situations. In older versions of LAMMPS, scaling of tilt factors was
|
|
not performed. The old behavior can be recovered by setting all three
|
|
scale keywords to <em>no</em>.</p>
|
|
<p>The <em>flip</em> keyword allows the tilt factors for a triclinic box to
|
|
exceed half the distance of the parallel box length, as discussed
|
|
below. If the <em>flip</em> value is set to <em>yes</em>, the bound is enforced by
|
|
flipping the box when it is exceeded. If the <em>flip</em> value is set to
|
|
<em>no</em>, the tilt will continue to change without flipping. Note that if
|
|
applied stress induces large deformations (e.g. in a liquid), this
|
|
means the box shape can tilt dramatically and LAMMPS will run less
|
|
efficiently, due to the large volume of communication needed to
|
|
acquire ghost atoms around a processor’s irregular-shaped sub-domain.
|
|
For extreme values of tilt, LAMMPS may also lose atoms and generate an
|
|
error.</p>
|
|
<p>The <em>fixedpoint</em> keyword specifies the fixed point for barostat volume
|
|
changes. By default, it is the center of the box. Whatever point is
|
|
chosen will not move during the simulation. For example, if the lower
|
|
periodic boundaries pass through (0,0,0), and this point is provided
|
|
to <em>fixedpoint</em>, then the lower periodic boundaries will remain at
|
|
(0,0,0), while the upper periodic boundaries will move twice as
|
|
far. In all cases, the particle trajectories are unaffected by the
|
|
chosen value, except for a time-dependent constant translation of
|
|
positions.</p>
|
|
<hr class="docutils" />
|
|
<div class="admonition warning">
|
|
<p class="first admonition-title">Warning</p>
|
|
<p class="last">Using a barostat coupled to tilt dimensions <em>xy</em>,
|
|
<em>xz</em>, <em>yz</em> can sometimes result in arbitrarily large values of the
|
|
tilt dimensions, i.e. a dramatically deformed simulation box. LAMMPS
|
|
allows the tilt factors to grow a small amount beyond the normal limit
|
|
of half the box length (0.6 times the box length), and then performs a
|
|
box “flip” to an equivalent periodic cell. See the discussion of the
|
|
<em>flip</em> keyword above, to allow this bound to be exceeded, if desired.</p>
|
|
</div>
|
|
<p>The flip operation is described in more detail in the doc page for
|
|
<a class="reference internal" href="fix_deform.html"><em>fix deform</em></a>. Both the barostat dynamics and the atom
|
|
trajectories are unaffected by this operation. However, if a tilt
|
|
factor is incremented by a large amount (1.5 times the box length) on
|
|
a single timestep, LAMMPS can not accomodate this event and will
|
|
terminate the simulation with an error. This error typically indicates
|
|
that there is something badly wrong with how the simulation was
|
|
constructed, such as specifying values of <em>Pstart</em> that are too far
|
|
from the current stress value, or specifying a timestep that is too
|
|
large. Triclinic barostatting should be used with care. This also is
|
|
true for other barostat styles, although they tend to be more
|
|
forgiving of insults. In particular, it is important to recognize that
|
|
equilibrium liquids can not support a shear stress and that
|
|
equilibrium solids can not support shear stresses that exceed the
|
|
yield stress.</p>
|
|
<p>One exception to this rule is if the 1st dimension in the tilt factor
|
|
(x for xy) is non-periodic. In that case, the limits on the tilt
|
|
factor are not enforced, since flipping the box in that dimension does
|
|
not change the atom positions due to non-periodicity. In this mode,
|
|
if you tilt the system to extreme angles, the simulation will simply
|
|
become inefficient due to the highly skewed simulation box.</p>
|
|
<div class="admonition warning">
|
|
<p class="first admonition-title">Warning</p>
|
|
<p class="last">Unlike the <a class="reference internal" href="fix_temp_berendsen.html"><em>fix temp/berendsen</em></a> command which performs
|
|
thermostatting but NO time integration, these fixes perform
|
|
thermostatting/barostatting AND time integration. Thus you should not
|
|
use any other time integration fix, such as <a class="reference internal" href="fix_nve.html"><em>fix nve</em></a> on
|
|
atoms to which this fix is applied. Likewise, fix nvt and fix npt
|
|
should not normally be used on atoms that also have their temperature
|
|
controlled by another fix - e.g. by <a class="reference internal" href=""><em>fix langevin</em></a> or <a class="reference internal" href="fix_temp_rescale.html"><em>fix temp/rescale</em></a> commands.</p>
|
|
</div>
|
|
<p>See <a class="reference internal" href="Section_howto.html#howto-16"><span>this howto section</span></a> of the manual for
|
|
a discussion of different ways to compute temperature and perform
|
|
thermostatting and barostatting.</p>
|
|
<hr class="docutils" />
|
|
<p>These fixes compute a temperature and pressure each timestep. To do
|
|
this, the fix creates its own computes of style “temp” and “pressure”,
|
|
as if one of these two sets of commands had been issued:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre>compute fix-ID_temp group-ID temp
|
|
compute fix-ID_press group-ID pressure fix-ID_temp
|
|
</pre></div>
|
|
</div>
|
|
<div class="highlight-python"><div class="highlight"><pre>compute fix-ID_temp all temp
|
|
compute fix-ID_press all pressure fix-ID_temp
|
|
</pre></div>
|
|
</div>
|
|
<p>See the <a class="reference internal" href="compute_temp.html"><em>compute temp</em></a> and <a class="reference internal" href="compute_pressure.html"><em>compute pressure</em></a> commands for details. Note that the
|
|
IDs of the new computes are the fix-ID + underscore + “temp” or fix_ID
|
|
+ underscore + “press”. For fix nvt, the group for the new computes
|
|
is the same as the fix group. For fix nph and fix npt, the group for
|
|
the new computes is “all” since pressure is computed for the entire
|
|
system.</p>
|
|
<p>Note that these are NOT the computes used by thermodynamic output (see
|
|
the <a class="reference internal" href="thermo_style.html"><em>thermo_style</em></a> command) with ID = <em>thermo_temp</em>
|
|
and <em>thermo_press</em>. This means you can change the attributes of this
|
|
fix’s temperature or pressure via the
|
|
<a class="reference internal" href="compute_modify.html"><em>compute_modify</em></a> command or print this temperature
|
|
or pressure during thermodynamic output via the <a class="reference internal" href="thermo_style.html"><em>thermo_style custom</em></a> command using the appropriate compute-ID.
|
|
It also means that changing attributes of <em>thermo_temp</em> or
|
|
<em>thermo_press</em> will have no effect on this fix.</p>
|
|
<p>Like other fixes that perform thermostatting, fix nvt and fix npt can
|
|
be used with <a class="reference internal" href="compute.html"><em>compute commands</em></a> that calculate a
|
|
temperature after removing a “bias” from the atom velocities.
|
|
E.g. removing the center-of-mass velocity from a group of atoms or
|
|
only calculating temperature on the x-component of velocity or only
|
|
calculating temperature for atoms in a geometric region. This is not
|
|
done by default, but only if the <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a> command
|
|
is used to assign a temperature compute to this fix that includes such
|
|
a bias term. See the doc pages for individual <a class="reference internal" href="compute.html"><em>compute commands</em></a> to determine which ones include a bias. In
|
|
this case, the thermostat works in the following manner: the current
|
|
temperature is calculated taking the bias into account, bias is
|
|
removed from each atom, thermostatting is performed on the remaining
|
|
thermal degrees of freedom, and the bias is added back in.</p>
|
|
<hr class="docutils" />
|
|
<p>These fixes can be used with either the <em>verlet</em> or <em>respa</em>
|
|
<a class="reference internal" href="run_style.html"><em>integrators</em></a>. When using one of the barostat fixes
|
|
with <em>respa</em>, LAMMPS uses an integrator constructed
|
|
according to the following factorization of the Liouville propagator
|
|
(for two rRESPA levels):</p>
|
|
<img alt="_images/fix_nh1.jpg" class="align-center" src="_images/fix_nh1.jpg" />
|
|
<p>This factorization differs somewhat from that of Tuckerman et al., in that
|
|
the barostat is only updated at the outermost rRESPA level, whereas
|
|
Tuckerman’s factorization requires splitting the pressure into pieces
|
|
corresponding to the forces computed at each rRESPA level. In theory, the
|
|
latter method will exhibit better numerical stability. In practice,
|
|
because Pdamp is normally chosen to be a large multiple of the
|
|
outermost rRESPA timestep, the barostat dynamics are not the
|
|
limiting factor for numerical stability. Both
|
|
factorizations are time-reversible and can be shown to preserve the phase
|
|
space measure of the underlying non-Hamiltonian equations of motion.</p>
|
|
<hr class="docutils" />
|
|
<p>The fix npt and fix nph commands can be used with rigid bodies or
|
|
mixtures of rigid bodies and non-rigid particles (e.g. solvent). But
|
|
there are also <a class="reference internal" href="fix_rigid.html"><em>fix rigid/npt</em></a> and <a class="reference internal" href="fix_rigid.html"><em>fix rigid/nph</em></a> commands, which are typically a more natural
|
|
choice. See the doc page for those commands for more discussion of
|
|
the various ways to do this.</p>
|
|
<hr class="docutils" />
|
|
<p>Styles with a <em>cuda</em>, <em>gpu</em>, <em>intel</em>, <em>kk</em>, <em>omp</em>, or <em>opt</em> suffix are
|
|
functionally the same as the corresponding style without the suffix.
|
|
They have been optimized to run faster, depending on your available
|
|
hardware, as discussed in <a class="reference internal" href="Section_accelerate.html"><em>Section_accelerate</em></a>
|
|
of the manual. The accelerated styles take the same arguments and
|
|
should produce the same results, except for round-off and precision
|
|
issues.</p>
|
|
<p>These accelerated styles are part of the USER-CUDA, GPU, USER-INTEL,
|
|
KOKKOS, USER-OMP and OPT packages, respectively. They are only
|
|
enabled if LAMMPS was built with those packages. See the <a class="reference internal" href="Section_start.html#start-3"><span>Making LAMMPS</span></a> section for more info.</p>
|
|
<p>You can specify the accelerated styles explicitly in your input script
|
|
by including their suffix, or you can use the <a class="reference internal" href="Section_start.html#start-7"><span>-suffix command-line switch</span></a> when you invoke LAMMPS, or you can
|
|
use the <a class="reference internal" href="suffix.html"><em>suffix</em></a> command in your input script.</p>
|
|
<p>See <a class="reference internal" href="Section_accelerate.html"><em>Section_accelerate</em></a> of the manual for
|
|
more instructions on how to use the accelerated styles effectively.</p>
|
|
</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>These fixes writes the state of all the thermostat and barostat
|
|
variables to <a class="reference internal" href="restart.html"><em>binary restart files</em></a>. 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>The <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a> <em>temp</em> and <em>press</em> options are
|
|
supported by these fixes. You can use them to assign a
|
|
<a class="reference internal" href="compute.html"><em>compute</em></a> you have defined to this fix which will be used
|
|
in its thermostatting or barostatting procedure, as described above.
|
|
If you do this, note that the kinetic energy derived from the compute
|
|
temperature should be consistent with the virial term computed using
|
|
all atoms for the pressure. LAMMPS will warn you if you choose to
|
|
compute temperature on a subset of atoms.</p>
|
|
<div class="admonition warning">
|
|
<p class="first admonition-title">Warning</p>
|
|
<p class="last">If both the <em>temp</em> and <em>press</em> keywords are used in a
|
|
single thermo_modify command (or in two separate commands), then the
|
|
order in which the keywords are specified is important. Note that a
|
|
<a class="reference internal" href="compute_pressure.html"><em>pressure compute</em></a> defines its own temperature
|
|
compute as an argument when it is specified. The <em>temp</em> keyword will
|
|
override this (for the pressure compute being used by fix npt), but
|
|
only if the <em>temp</em> keyword comes after the <em>press</em> keyword. If the
|
|
<em>temp</em> keyword comes before the <em>press</em> keyword, then the new pressure
|
|
compute specified by the <em>press</em> keyword will be unaffected by the
|
|
<em>temp</em> setting.</p>
|
|
</div>
|
|
<p>The <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a> <em>energy</em> option is supported by these
|
|
fixes to add the energy change induced by Nose/Hoover thermostatting
|
|
and barostatting to the system’s potential energy as part of
|
|
<a class="reference internal" href="thermo_style.html"><em>thermodynamic output</em></a>.</p>
|
|
<p>These fixes compute a global scalar and a global vector of quantities,
|
|
which can be accessed by various <a class="reference internal" href="Section_howto.html#howto-15"><span>output commands</span></a>. The scalar value calculated by
|
|
these fixes is “extensive”; the vector values are “intensive”.</p>
|
|
<p>The scalar is the cumulative energy change due to the fix.</p>
|
|
<p>The vector stores internal Nose/Hoover thermostat and barostat
|
|
variables. The number and meaning of the vector values depends on
|
|
which fix is used and the settings for keywords <em>tchain</em> and <em>pchain</em>,
|
|
which specify the number of Nose/Hoover chains for the thermostat and
|
|
barostat. If no thermostatting is done, then <em>tchain</em> is 0. If no
|
|
barostatting is done, then <em>pchain</em> is 0. In the following list,
|
|
“ndof” is 0, 1, 3, or 6, and is the number of degrees of freedom in
|
|
the barostat. Its value is 0 if no barostat is used, else its value
|
|
is 6 if any off-diagonal stress tensor component is barostatted, else
|
|
its value is 1 if <em>couple xyz</em> is used or <em>couple xy</em> for a 2d
|
|
simulation, otherwise its value is 3.</p>
|
|
<p>The order of values in the global vector and their meaning is as
|
|
follows. The notation means there are tchain values for eta, followed
|
|
by tchain for eta_dot, followed by ndof for omega, etc:</p>
|
|
<ul class="simple">
|
|
<li>eta[tchain] = particle thermostat displacements (unitless)</li>
|
|
<li>eta_dot[tchain] = particle thermostat velocities (1/time units)</li>
|
|
<li>omega[ndof] = barostat displacements (unitless)</li>
|
|
<li>omega_dot[ndof] = barostat velocities (1/time units)</li>
|
|
<li>etap[pchain] = barostat thermostat displacements (unitless)</li>
|
|
<li>etap_dot[pchain] = barostat thermostat velocities (1/time units)</li>
|
|
<li>PE_eta[tchain] = potential energy of each particle thermostat displacement (energy units)</li>
|
|
<li>KE_eta_dot[tchain] = kinetic energy of each particle thermostat velocity (energy units)</li>
|
|
<li>PE_omega[ndof] = potential energy of each barostat displacement (energy units)</li>
|
|
<li>KE_omega_dot[ndof] = kinetic energy of each barostat velocity (energy units)</li>
|
|
<li>PE_etap[pchain] = potential energy of each barostat thermostat displacement (energy units)</li>
|
|
<li>KE_etap_dot[pchain] = kinetic energy of each barostat thermostat velocity (energy units)</li>
|
|
<li>PE_strain[1] = scalar strain energy (energy units)</li>
|
|
</ul>
|
|
<p>These fixes can ramp their external temperature and pressure over
|
|
multiple runs, using the <em>start</em> and <em>stop</em> keywords of the
|
|
<a class="reference internal" href="run.html"><em>run</em></a> command. See the <a class="reference internal" href="run.html"><em>run</em></a> command for details of
|
|
how to do this.</p>
|
|
<p>These fixes are not invoked during <a class="reference internal" href="minimize.html"><em>energy minimization</em></a>.</p>
|
|
</div>
|
|
<hr class="docutils" />
|
|
<div class="section" id="restrictions">
|
|
<h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2>
|
|
<p><em>X</em>, <em>y</em>, <em>z</em> cannot be barostatted if the associated dimension is not
|
|
periodic. <em>Xy</em>, <em>xz</em>, and <em>yz</em> can only be barostatted if the
|
|
simulation domain is triclinic and the 2nd dimension in the keyword
|
|
(<em>y</em> dimension in <em>xy</em>) is periodic. <em>Z</em>, <em>xz</em>, and <em>yz</em>, cannot be
|
|
barostatted for 2D simulations. The <a class="reference internal" href="create_box.html"><em>create_box</em></a>,
|
|
<a class="reference internal" href="read_data.html"><em>read data</em></a>, and <a class="reference internal" href="read_restart.html"><em>read_restart</em></a>
|
|
commands specify whether the simulation box is orthogonal or
|
|
non-orthogonal (triclinic) and explain the meaning of the xy,xz,yz
|
|
tilt factors.</p>
|
|
<p>For the <em>temp</em> keyword, the final Tstop cannot be 0.0 since it would
|
|
make the external T = 0.0 at some timestep during the simulation which
|
|
is not allowed in the Nose/Hoover formulation.</p>
|
|
<p>The <em>scaleyz yes</em> and <em>scalexz yes</em> keyword/value pairs can not be used
|
|
for 2D simulations. <em>scaleyz yes</em>, <em>scalexz yes</em>, and <em>scalexy yes</em> options
|
|
can only be used if the 2nd dimension in the keyword is periodic,
|
|
and if the tilt factor is not coupled to the barostat via keywords
|
|
<em>tri</em>, <em>yz</em>, <em>xz</em>, and <em>xy</em>.</p>
|
|
<p>These fixes can be used with dynamic groups as defined by the
|
|
<a class="reference internal" href="group.html"><em>group</em></a> command. Likewise they can be used with groups to
|
|
which atoms are added or deleted over time, e.g. a deposition
|
|
simulation. However, the conservation properties of the thermostat
|
|
and barostat are defined for systems with a static set of atoms. You
|
|
may observe odd behavior if the atoms in a group vary dramatically
|
|
over time or the atom count becomes very small.</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_nve.html"><em>fix nve</em></a>, <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a>,
|
|
<a class="reference internal" href="run_style.html"><em>run_style</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 keyword defaults are tchain = 3, pchain = 3, mtk = yes, tloop =
|
|
ploop = 1, nreset = 0, drag = 0.0, dilate = all, couple = none,
|
|
scaleyz = scalexz = scalexy = yes if periodic in 2nd dimension and
|
|
not coupled to barostat, otherwise no.</p>
|
|
<hr class="docutils" />
|
|
<p id="martyna"><strong>(Martyna)</strong> Martyna, Tobias and Klein, J Chem Phys, 101, 4177 (1994).</p>
|
|
<p id="parrinello"><strong>(Parrinello)</strong> Parrinello and Rahman, J Appl Phys, 52, 7182 (1981).</p>
|
|
<p id="tuckerman"><strong>(Tuckerman)</strong> Tuckerman, Alejandre, Lopez-Rendon, Jochim, and
|
|
Martyna, J Phys A: Math Gen, 39, 5629 (2006).</p>
|
|
<p id="shinoda"><strong>(Shinoda)</strong> Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).</p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<footer>
|
|
|
|
|
|
<hr/>
|
|
|
|
<div role="contentinfo">
|
|
<p>
|
|
© 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> |