forked from lijiext/lammps
726 lines
46 KiB
HTML
726 lines
46 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 deform command — 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 & 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 deform 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-deform-command">
|
|
<span id="index-0"></span><h1>fix deform command</h1>
|
|
</div>
|
|
<div class="section" id="fix-deform-kk-command">
|
|
<h1>fix deform/kk command</h1>
|
|
<div class="section" id="syntax">
|
|
<h2>Syntax</h2>
|
|
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="n">ID</span> <span class="n">group</span><span class="o">-</span><span class="n">ID</span> <span class="n">deform</span> <span class="n">N</span> <span class="n">parameter</span> <span class="n">args</span> <span class="o">...</span> <span class="n">keyword</span> <span class="n">value</span> <span class="o">...</span>
|
|
</pre></div>
|
|
</div>
|
|
<ul class="simple">
|
|
<li>ID, group-ID are documented in <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> command</li>
|
|
<li>deform = style name of this fix command</li>
|
|
<li>N = perform box deformation every this many timesteps</li>
|
|
<li>one or more parameter/arg pairs may be appended</li>
|
|
</ul>
|
|
<pre class="literal-block">
|
|
parameter = <em>x</em> or <em>y</em> or <em>z</em> or <em>xy</em> or <em>xz</em> or <em>yz</em>
|
|
<em>x</em>, <em>y</em>, <em>z</em> args = style value(s)
|
|
style = <em>final</em> or <em>delta</em> or <em>scale</em> or <em>vel</em> or <em>erate</em> or <em>trate</em> or <em>volume</em> or <em>wiggle</em> or <em>variable</em>
|
|
<em>final</em> values = lo hi
|
|
lo hi = box boundaries at end of run (distance units)
|
|
<em>delta</em> values = dlo dhi
|
|
dlo dhi = change in box boundaries at end of run (distance units)
|
|
<em>scale</em> values = factor
|
|
factor = multiplicative factor for change in box length at end of run
|
|
<em>vel</em> value = V
|
|
V = change box length at this velocity (distance/time units),
|
|
effectively an engineering strain rate
|
|
<em>erate</em> value = R
|
|
R = engineering strain rate (1/time units)
|
|
<em>trate</em> value = R
|
|
R = true strain rate (1/time units)
|
|
<em>volume</em> value = none = adjust this dim to preserve volume of system
|
|
<em>wiggle</em> values = A Tp
|
|
A = amplitude of oscillation (distance units)
|
|
Tp = period of oscillation (time units)
|
|
<em>variable</em> values = v_name1 v_name2
|
|
v_name1 = variable with name1 for box length change as function of time
|
|
v_name2 = variable with name2 for change rate as function of time
|
|
<em>xy</em>, <em>xz</em>, <em>yz</em> args = style value
|
|
style = <em>final</em> or <em>delta</em> or <em>vel</em> or <em>erate</em> or <em>trate</em> or <em>wiggle</em>
|
|
<em>final</em> value = tilt
|
|
tilt = tilt factor at end of run (distance units)
|
|
<em>delta</em> value = dtilt
|
|
dtilt = change in tilt factor at end of run (distance units)
|
|
<em>vel</em> value = V
|
|
V = change tilt factor at this velocity (distance/time units),
|
|
effectively an engineering shear strain rate
|
|
<em>erate</em> value = R
|
|
R = engineering shear strain rate (1/time units)
|
|
<em>trate</em> value = R
|
|
R = true shear strain rate (1/time units)
|
|
<em>wiggle</em> values = A Tp
|
|
A = amplitude of oscillation (distance units)
|
|
Tp = period of oscillation (time units)
|
|
<em>variable</em> values = v_name1 v_name2
|
|
v_name1 = variable with name1 for tilt change as function of time
|
|
v_name2 = variable with name2 for change rate as function of time
|
|
</pre>
|
|
<ul class="simple">
|
|
<li>zero or more keyword/value pairs may be appended</li>
|
|
<li>keyword = <em>remap</em> or <em>flip</em> or <em>units</em></li>
|
|
</ul>
|
|
<pre class="literal-block">
|
|
<em>remap</em> value = <em>x</em> or <em>v</em> or <em>none</em>
|
|
x = remap coords of atoms in group into deforming box
|
|
v = remap velocities of all atoms when they cross periodic boundaries
|
|
none = no remapping of x or v
|
|
<em>flip</em> value = <em>yes</em> or <em>no</em>
|
|
allow or disallow box flips when it becomes highly skewed
|
|
<em>units</em> value = <em>lattice</em> or <em>box</em>
|
|
lattice = distances are defined in lattice units
|
|
box = distances are defined in simulation box units
|
|
</pre>
|
|
</div>
|
|
<div class="section" id="examples">
|
|
<h2>Examples</h2>
|
|
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">deform</span> <span class="mi">1</span> <span class="n">x</span> <span class="n">final</span> <span class="mf">0.0</span> <span class="mf">9.0</span> <span class="n">z</span> <span class="n">final</span> <span class="mf">0.0</span> <span class="mf">5.0</span> <span class="n">units</span> <span class="n">box</span>
|
|
<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">deform</span> <span class="mi">1</span> <span class="n">x</span> <span class="n">trate</span> <span class="mf">0.1</span> <span class="n">y</span> <span class="n">volume</span> <span class="n">z</span> <span class="n">volume</span>
|
|
<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">deform</span> <span class="mi">1</span> <span class="n">xy</span> <span class="n">erate</span> <span class="mf">0.001</span> <span class="n">remap</span> <span class="n">v</span>
|
|
<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">deform</span> <span class="mi">10</span> <span class="n">y</span> <span class="n">delta</span> <span class="o">-</span><span class="mf">0.5</span> <span class="mf">0.5</span> <span class="n">xz</span> <span class="n">vel</span> <span class="mf">1.0</span>
|
|
</pre></div>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="description">
|
|
<h2>Description</h2>
|
|
<p>Change the volume and/or shape of the simulation box during a dynamics
|
|
run. Orthogonal simulation boxes have 3 adjustable parameters
|
|
(x,y,z). Triclinic (non-orthogonal) simulation boxes have 6
|
|
adjustable parameters (x,y,z,xy,xz,yz). Any or all of them can be
|
|
adjusted independently and simultaneously by this command. This fix
|
|
can be used to perform non-equilibrium MD (NEMD) simulations of a
|
|
continuously strained system. See the <a class="reference internal" href="fix_nvt_sllod.html"><span class="doc">fix nvt/sllod</span></a> and <a class="reference internal" href="compute_temp_deform.html"><span class="doc">compute temp/deform</span></a> commands for more details.</p>
|
|
<p>For the <em>x</em>, <em>y</em>, <em>z</em> parameters, the associated dimension cannot be
|
|
shrink-wrapped. For the <em>xy</em>, <em>yz</em>, <em>xz</em> parameters, the associated
|
|
2nd dimension cannot be shrink-wrapped. Dimensions not varied by this
|
|
command can be periodic or non-periodic. Dimensions corresponding to
|
|
unspecified parameters can also be controlled by a <a class="reference internal" href="fix_nh.html"><span class="doc">fix npt</span></a> or <a class="reference internal" href="fix_nh.html"><span class="doc">fix nph</span></a> command.</p>
|
|
<p>The size and shape of the simulation box at the beginning of the
|
|
simulation run were either specified by the
|
|
<a class="reference internal" href="create_box.html"><span class="doc">create_box</span></a> or <a class="reference internal" href="read_data.html"><span class="doc">read_data</span></a> or
|
|
<a class="reference internal" href="read_restart.html"><span class="doc">read_restart</span></a> command used to setup the simulation
|
|
initially if it is the first run, or they are the values from the end
|
|
of the previous run. The <a class="reference internal" href="create_box.html"><span class="doc">create_box</span></a>, <a class="reference internal" href="read_data.html"><span class="doc">read data</span></a>, and <a class="reference internal" href="read_restart.html"><span class="doc">read_restart</span></a> commands
|
|
specify whether the simulation box is orthogonal or non-orthogonal
|
|
(triclinic) and explain the meaning of the xy,xz,yz tilt factors. If
|
|
fix deform changes the xy,xz,yz tilt factors, then the simulation box
|
|
must be triclinic, even if its initial tilt factors are 0.0.</p>
|
|
<p>As described below, the desired simulation box size and shape at the
|
|
end of the run are determined by the parameters of the fix deform
|
|
command. Every Nth timestep during the run, the simulation box is
|
|
expanded, contracted, or tilted to ramped values between the initial
|
|
and final values.</p>
|
|
<hr class="docutils" />
|
|
<p>For the <em>x</em>, <em>y</em>, and <em>z</em> parameters, this is the meaning of their
|
|
styles and values.</p>
|
|
<p>The <em>final</em>, <em>delta</em>, <em>scale</em>, <em>vel</em>, and <em>erate</em> styles all change
|
|
the specified dimension of the box via “constant displacement” which
|
|
is effectively a “constant engineering strain rate”. This means the
|
|
box dimension changes linearly with time from its initial to final
|
|
value.</p>
|
|
<p>For style <em>final</em>, the final lo and hi box boundaries of a dimension
|
|
are specified. The values can be in lattice or box distance units.
|
|
See the discussion of the units keyword below.</p>
|
|
<p>For style <em>delta</em>, plus or minus changes in the lo/hi box boundaries
|
|
of a dimension are specified. The values can be in lattice or box
|
|
distance units. See the discussion of the units keyword below.</p>
|
|
<p>For style <em>scale</em>, a multiplicative factor to apply to the box length
|
|
of a dimension is specified. For example, if the initial box length
|
|
is 10, and the factor is 1.1, then the final box length will be 11. A
|
|
factor less than 1.0 means compression.</p>
|
|
<p>For style <em>vel</em>, a velocity at which the box length changes is
|
|
specified in units of distance/time. This is effectively a “constant
|
|
engineering strain rate”, where rate = V/L0 and L0 is the initial box
|
|
length. The distance can be in lattice or box distance units. See
|
|
the discussion of the units keyword below. For example, if the
|
|
initial box length is 100 Angstroms, and V is 10 Angstroms/psec, then
|
|
after 10 psec, the box length will have doubled. After 20 psec, it
|
|
will have tripled.</p>
|
|
<p>The <em>erate</em> style changes a dimension of the the box at a “constant
|
|
engineering strain rate”. The units of the specified strain rate are
|
|
1/time. See the <a class="reference internal" href="units.html"><span class="doc">units</span></a> command for the time units
|
|
associated with different choices of simulation units,
|
|
e.g. picoseconds for “metal” units). Tensile strain is unitless and
|
|
is defined as delta/L0, where L0 is the original box length and delta
|
|
is the change relative to the original length. The box length L as a
|
|
function of time will change as</p>
|
|
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">L</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="o">=</span> <span class="n">L0</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">erate</span><span class="o">*</span><span class="n">dt</span><span class="p">)</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>where dt is the elapsed time (in time units). Thus if <em>erate</em> R is
|
|
specified as 0.1 and time units are picoseconds, this means the box
|
|
length will increase by 10% of its original length every picosecond.
|
|
I.e. strain after 1 psec = 0.1, strain after 2 psec = 0.2, etc. R =
|
|
-0.01 means the box length will shrink by 1% of its original length
|
|
every picosecond. Note that for an “engineering” rate the change is
|
|
based on the original box length, so running with R = 1 for 10
|
|
picoseconds expands the box length by a factor of 11 (strain of 10),
|
|
which is different that what the <em>trate</em> style would induce.</p>
|
|
<p>The <em>trate</em> style changes a dimension of the box at a “constant true
|
|
strain rate”. Note that this is not an “engineering strain rate”, as
|
|
the other styles are. Rather, for a “true” rate, the rate of change
|
|
is constant, which means the box dimension changes non-linearly with
|
|
time from its initial to final value. The units of the specified
|
|
strain rate are 1/time. See the <a class="reference internal" href="units.html"><span class="doc">units</span></a> command for the
|
|
time units associated with different choices of simulation units,
|
|
e.g. picoseconds for “metal” units). Tensile strain is unitless and
|
|
is defined as delta/L0, where L0 is the original box length and delta
|
|
is the change relative to the original length.</p>
|
|
<p>The box length L as a function of time will change as</p>
|
|
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">L</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="o">=</span> <span class="n">L0</span> <span class="n">exp</span><span class="p">(</span><span class="n">trate</span><span class="o">*</span><span class="n">dt</span><span class="p">)</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>where dt is the elapsed time (in time units). Thus if <em>trate</em> R is
|
|
specified as ln(1.1) and time units are picoseconds, this means the
|
|
box length will increase by 10% of its current (not original) length
|
|
every picosecond. I.e. strain after 1 psec = 0.1, strain after 2 psec
|
|
= 0.21, etc. R = ln(2) or ln(3) means the box length will double or
|
|
triple every picosecond. R = ln(0.99) means the box length will
|
|
shrink by 1% of its current length every picosecond. Note that for a
|
|
“true” rate the change is continuous and based on the current length,
|
|
so running with R = ln(2) for 10 picoseconds does not expand the box
|
|
length by a factor of 11 as it would with <em>erate</em>, but by a factor of
|
|
1024 since the box length will double every picosecond.</p>
|
|
<p>Note that to change the volume (or cross-sectional area) of the
|
|
simulation box at a constant rate, you can change multiple dimensions
|
|
via <em>erate</em> or <em>trate</em>. E.g. to double the box volume in a picosecond
|
|
picosecond, you could set “x erate M”, “y erate M”, “z erate M”, with
|
|
M = pow(2,1/3) - 1 = 0.26, since if each box dimension grows by 26%,
|
|
the box volume doubles. Or you could set “x trate M”, “y trate M”, “z
|
|
trate M”, with M = ln(1.26) = 0.231, and the box volume would double
|
|
every picosecond.</p>
|
|
<p>The <em>volume</em> style changes the specified dimension in such a way that
|
|
the box volume remains constant while other box dimensions are changed
|
|
explicitly via the styles discussed above. For example, “x scale 1.1
|
|
y scale 1.1 z volume” will shrink the z box length as the x,y box
|
|
lengths increase, to keep the volume constant (product of x,y,z
|
|
lengths). If “x scale 1.1 z volume” is specified and parameter <em>y</em> is
|
|
unspecified, then the z box length will shrink as x increases to keep
|
|
the product of x,z lengths constant. If “x scale 1.1 y volume z
|
|
volume” is specified, then both the y,z box lengths will shrink as x
|
|
increases to keep the volume constant (product of x,y,z lengths). In
|
|
this case, the y,z box lengths shrink so as to keep their relative
|
|
aspect ratio constant.</p>
|
|
<p>For solids or liquids, note that when one dimension of the box is
|
|
expanded via fix deform (i.e. tensile strain), it may be physically
|
|
undesirable to hold the other 2 box lengths constant (unspecified by
|
|
fix deform) since that implies a density change. Using the <em>volume</em>
|
|
style for those 2 dimensions to keep the box volume constant may make
|
|
more physical sense, but may also not be correct for materials and
|
|
potentials whose Poisson ratio is not 0.5. An alternative is to use
|
|
<a class="reference internal" href="fix_nh.html"><span class="doc">fix npt aniso</span></a> with zero applied pressure on those 2
|
|
dimensions, so that they respond to the tensile strain dynamically.</p>
|
|
<p>The <em>wiggle</em> style oscillates the specified box length dimension
|
|
sinusoidally with the specified amplitude and period. I.e. the box
|
|
length L as a function of time is given by</p>
|
|
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">L</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="o">=</span> <span class="n">L0</span> <span class="o">+</span> <span class="n">A</span> <span class="n">sin</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">pi</span> <span class="n">t</span><span class="o">/</span><span class="n">Tp</span><span class="p">)</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>where L0 is its initial length. If the amplitude A is a positive
|
|
number the box initially expands, then contracts, etc. If A is
|
|
negative then the box initially contracts, then expands, etc. The
|
|
amplitude can be in lattice or box distance units. See the discussion
|
|
of the units keyword below.</p>
|
|
<p>The <em>variable</em> style changes the specified box length dimension by
|
|
evaluating a variable, which presumably is a function of time. The
|
|
variable with <em>name1</em> must be an <a class="reference internal" href="variable.html"><span class="doc">equal-style variable</span></a>
|
|
and should calculate a change in box length in units of distance.
|
|
Note that this distance is in box units, not lattice units; see the
|
|
discussion of the <em>units</em> keyword below. The formula associated with
|
|
variable <em>name1</em> can reference the current timestep. Note that it
|
|
should return the “change” in box length, not the absolute box length.
|
|
This means it should evaluate to 0.0 when invoked on the initial
|
|
timestep of the run following the definition of fix deform. It should
|
|
evaluate to a value > 0.0 to dilate the box at future times, or a
|
|
value < 0.0 to compress the box.</p>
|
|
<p>The variable <em>name2</em> must also be an <a class="reference internal" href="variable.html"><span class="doc">equal-style variable</span></a> and should calculate the rate of box length
|
|
change, in units of distance/time, i.e. the time-derivative of the
|
|
<em>name1</em> variable. This quantity is used internally by LAMMPS to reset
|
|
atom velocities when they cross periodic boundaries. It is computed
|
|
internally for the other styles, but you must provide it when using an
|
|
arbitrary variable.</p>
|
|
<p>Here is an example of using the <em>variable</em> style to perform the same
|
|
box deformation as the <em>wiggle</em> style formula listed above, where we
|
|
assume that the current timestep = 0.</p>
|
|
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">variable</span> <span class="n">A</span> <span class="n">equal</span> <span class="mf">5.0</span>
|
|
<span class="n">variable</span> <span class="n">Tp</span> <span class="n">equal</span> <span class="mf">10.0</span>
|
|
<span class="n">variable</span> <span class="n">displace</span> <span class="n">equal</span> <span class="s2">"v_A * sin(2*PI * step*dt/v_Tp)"</span>
|
|
<span class="n">variable</span> <span class="n">rate</span> <span class="n">equal</span> <span class="s2">"2*PI*v_A/v_Tp * cos(2*PI * step*dt/v_Tp)"</span>
|
|
<span class="n">fix</span> <span class="mi">2</span> <span class="nb">all</span> <span class="n">deform</span> <span class="mi">1</span> <span class="n">x</span> <span class="n">variable</span> <span class="n">v_displace</span> <span class="n">v_rate</span> <span class="n">remap</span> <span class="n">v</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>For the <em>scale</em>, <em>vel</em>, <em>erate</em>, <em>trate</em>, <em>volume</em>, <em>wiggle</em>, and
|
|
<em>variable</em> styles, the box length is expanded or compressed around its
|
|
mid point.</p>
|
|
<hr class="docutils" />
|
|
<p>For the <em>xy</em>, <em>xz</em>, and <em>yz</em> parameters, this is the meaning of their
|
|
styles and values. Note that changing the tilt factors of a triclinic
|
|
box does not change its volume.</p>
|
|
<p>The <em>final</em>, <em>delta</em>, <em>vel</em>, and <em>erate</em> styles all change the shear
|
|
strain at a “constant engineering shear strain rate”. This means the
|
|
tilt factor changes linearly with time from its initial to final
|
|
value.</p>
|
|
<p>For style <em>final</em>, the final tilt factor is specified. The value
|
|
can be in lattice or box distance units. See the discussion of the
|
|
units keyword below.</p>
|
|
<p>For style <em>delta</em>, a plus or minus change in the tilt factor is
|
|
specified. The value can be in lattice or box distance units. See
|
|
the discussion of the units keyword below.</p>
|
|
<p>For style <em>vel</em>, a velocity at which the tilt factor changes is
|
|
specified in units of distance/time. This is effectively an
|
|
“engineering shear strain rate”, where rate = V/L0 and L0 is the
|
|
initial box length perpendicular to the direction of shear. The
|
|
distance can be in lattice or box distance units. See the discussion
|
|
of the units keyword below. For example, if the initial tilt factor
|
|
is 5 Angstroms, and the V is 10 Angstroms/psec, then after 1 psec, the
|
|
tilt factor will be 15 Angstroms. After 2 psec, it will be 25
|
|
Angstroms.</p>
|
|
<p>The <em>erate</em> style changes a tilt factor at a “constant engineering
|
|
shear strain rate”. The units of the specified shear strain rate are
|
|
1/time. See the <a class="reference internal" href="units.html"><span class="doc">units</span></a> command for the time units
|
|
associated with different choices of simulation units,
|
|
e.g. picoseconds for “metal” units). Shear strain is unitless and is
|
|
defined as offset/length, where length is the box length perpendicular
|
|
to the shear direction (e.g. y box length for xy deformation) and
|
|
offset is the displacement distance in the shear direction (e.g. x
|
|
direction for xy deformation) from the unstrained orientation.</p>
|
|
<p>The tilt factor T as a function of time will change as</p>
|
|
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">T</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="o">=</span> <span class="n">T0</span> <span class="o">+</span> <span class="n">L0</span><span class="o">*</span><span class="n">erate</span><span class="o">*</span><span class="n">dt</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>where T0 is the initial tilt factor, L0 is the original length of the
|
|
box perpendicular to the shear direction (e.g. y box length for xy
|
|
deformation), and dt is the elapsed time (in time units). Thus if
|
|
<em>erate</em> R is specified as 0.1 and time units are picoseconds, this
|
|
means the shear strain will increase by 0.1 every picosecond. I.e. if
|
|
the xy shear strain was initially 0.0, then strain after 1 psec = 0.1,
|
|
strain after 2 psec = 0.2, etc. Thus the tilt factor would be 0.0 at
|
|
time 0, 0.1*ybox at 1 psec, 0.2*ybox at 2 psec, etc, where ybox is the
|
|
original y box length. R = 1 or 2 means the tilt factor will increase
|
|
by 1 or 2 every picosecond. R = -0.01 means a decrease in shear
|
|
strain by 0.01 every picosecond.</p>
|
|
<p>The <em>trate</em> style changes a tilt factor at a “constant true shear
|
|
strain rate”. Note that this is not an “engineering shear strain
|
|
rate”, as the other styles are. Rather, for a “true” rate, the rate
|
|
of change is constant, which means the tilt factor changes
|
|
non-linearly with time from its initial to final value. The units of
|
|
the specified shear strain rate are 1/time. See the
|
|
<a class="reference internal" href="units.html"><span class="doc">units</span></a> command for the time units associated with
|
|
different choices of simulation units, e.g. picoseconds for “metal”
|
|
units). Shear strain is unitless and is defined as offset/length,
|
|
where length is the box length perpendicular to the shear direction
|
|
(e.g. y box length for xy deformation) and offset is the displacement
|
|
distance in the shear direction (e.g. x direction for xy deformation)
|
|
from the unstrained orientation.</p>
|
|
<p>The tilt factor T as a function of time will change as</p>
|
|
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">T</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="o">=</span> <span class="n">T0</span> <span class="n">exp</span><span class="p">(</span><span class="n">trate</span><span class="o">*</span><span class="n">dt</span><span class="p">)</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>where T0 is the initial tilt factor and dt is the elapsed time (in
|
|
time units). Thus if <em>trate</em> R is specified as ln(1.1) and time units
|
|
are picoseconds, this means the shear strain or tilt factor will
|
|
increase by 10% every picosecond. I.e. if the xy shear strain was
|
|
initially 0.1, then strain after 1 psec = 0.11, strain after 2 psec =
|
|
0.121, etc. R = ln(2) or ln(3) means the tilt factor will double or
|
|
triple every picosecond. R = ln(0.99) means the tilt factor will
|
|
shrink by 1% every picosecond. Note that the change is continuous, so
|
|
running with R = ln(2) for 10 picoseconds does not change the tilt
|
|
factor by a factor of 10, but by a factor of 1024 since it doubles
|
|
every picosecond. Note that the initial tilt factor must be non-zero
|
|
to use the <em>trate</em> option.</p>
|
|
<p>Note that shear strain is defined as the tilt factor divided by the
|
|
perpendicular box length. The <em>erate</em> and <em>trate</em> styles control the
|
|
tilt factor, but assume the perpendicular box length remains constant.
|
|
If this is not the case (e.g. it changes due to another fix deform
|
|
parameter), then this effect on the shear strain is ignored.</p>
|
|
<p>The <em>wiggle</em> style oscillates the specified tilt factor sinusoidally
|
|
with the specified amplitude and period. I.e. the tilt factor T as a
|
|
function of time is given by</p>
|
|
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">T</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="o">=</span> <span class="n">T0</span> <span class="o">+</span> <span class="n">A</span> <span class="n">sin</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">pi</span> <span class="n">t</span><span class="o">/</span><span class="n">Tp</span><span class="p">)</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>where T0 is its initial value. If the amplitude A is a positive
|
|
number the tilt factor initially becomes more positive, then more
|
|
negative, etc. If A is negative then the tilt factor initially
|
|
becomes more negative, then more positive, etc. The amplitude can be
|
|
in lattice or box distance units. See the discussion of the units
|
|
keyword below.</p>
|
|
<p>The <em>variable</em> style changes the specified tilt factor by evaluating a
|
|
variable, which presumably is a function of time. The variable with
|
|
<em>name1</em> must be an <a class="reference internal" href="variable.html"><span class="doc">equal-style variable</span></a> and should
|
|
calculate a change in tilt in units of distance. Note that this
|
|
distance is in box units, not lattice units; see the discussion of the
|
|
<em>units</em> keyword below. The formula associated with variable <em>name1</em>
|
|
can reference the current timestep. Note that it should return the
|
|
“change” in tilt factor, not the absolute tilt factor. This means it
|
|
should evaluate to 0.0 when invoked on the initial timestep of the run
|
|
following the definition of fix deform.</p>
|
|
<p>The variable <em>name2</em> must also be an <a class="reference internal" href="variable.html"><span class="doc">equal-style variable</span></a> and should calculate the rate of tilt change,
|
|
in units of distance/time, i.e. the time-derivative of the <em>name1</em>
|
|
variable. This quantity is used internally by LAMMPS to reset atom
|
|
velocities when they cross periodic boundaries. It is computed
|
|
internally for the other styles, but you must provide it when using an
|
|
arbitrary variable.</p>
|
|
<p>Here is an example of using the <em>variable</em> style to perform the same
|
|
box deformation as the <em>wiggle</em> style formula listed above, where we
|
|
assume that the current timestep = 0.</p>
|
|
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">variable</span> <span class="n">A</span> <span class="n">equal</span> <span class="mf">5.0</span>
|
|
<span class="n">variable</span> <span class="n">Tp</span> <span class="n">equal</span> <span class="mf">10.0</span>
|
|
<span class="n">variable</span> <span class="n">displace</span> <span class="n">equal</span> <span class="s2">"v_A * sin(2*PI * step*dt/v_Tp)"</span>
|
|
<span class="n">variable</span> <span class="n">rate</span> <span class="n">equal</span> <span class="s2">"2*PI*v_A/v_Tp * cos(2*PI * step*dt/v_Tp)"</span>
|
|
<span class="n">fix</span> <span class="mi">2</span> <span class="nb">all</span> <span class="n">deform</span> <span class="mi">1</span> <span class="n">xy</span> <span class="n">variable</span> <span class="n">v_displace</span> <span class="n">v_rate</span> <span class="n">remap</span> <span class="n">v</span>
|
|
</pre></div>
|
|
</div>
|
|
<hr class="docutils" />
|
|
<p>All of the tilt styles change the xy, xz, yz tilt factors during a
|
|
simulation. In LAMMPS, tilt factors (xy,xz,yz) for triclinic boxes
|
|
are normally bounded by half the distance of the parallel box length.
|
|
See the discussion of the <em>flip</em> keyword below, to allow this bound to
|
|
be exceeded, if desired.</p>
|
|
<p>For example, if xlo = 2 and xhi = 12, then the x box length is 10 and
|
|
the xy tilt factor must be between -5 and 5. Similarly, both xz and
|
|
yz must be between -(xhi-xlo)/2 and +(yhi-ylo)/2. Note that this is
|
|
not a limitation, since if the maximum tilt factor is 5 (as in this
|
|
example), then configurations with tilt = ..., -15, -5, 5, 15, 25,
|
|
... are all equivalent.</p>
|
|
<p>To obey this constraint and allow for large shear deformations to be
|
|
applied via the <em>xy</em>, <em>xz</em>, or <em>yz</em> parameters, the following
|
|
algorithm is used. If <em>prd</em> is the associated parallel box length (10
|
|
in the example above), then if the tilt factor exceeds the accepted
|
|
range of -5 to 5 during the simulation, then the box is flipped to the
|
|
other limit (an equivalent box) and the simulation continues. Thus
|
|
for this example, if the initial xy tilt factor was 0.0 and “xy final
|
|
100.0” was specified, then during the simulation the xy tilt factor
|
|
would increase from 0.0 to 5.0, the box would be flipped so that the
|
|
tilt factor becomes -5.0, the tilt factor would increase from -5.0 to
|
|
5.0, the box would be flipped again, etc. The flip occurs 10 times
|
|
and the final tilt factor at the end of the simulation would be 0.0.
|
|
During each flip event, atoms are remapped into the new box in the
|
|
appropriate manner.</p>
|
|
<p>The 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>
|
|
<hr class="docutils" />
|
|
<p>Each time the box size or shape is changed, the <em>remap</em> keyword
|
|
determines whether atom positions are remapped to the new box. If
|
|
<em>remap</em> is set to <em>x</em> (the default), atoms in the fix group are
|
|
remapped; otherwise they are not. Note that their velocities are not
|
|
changed, just their positions are altered. If <em>remap</em> is set to <em>v</em>,
|
|
then any atom in the fix group that crosses a periodic boundary will
|
|
have a delta added to its velocity equal to the difference in
|
|
velocities between the lo and hi boundaries. Note that this velocity
|
|
difference can include tilt components, e.g. a delta in the x velocity
|
|
when an atom crosses the y periodic boundary. If <em>remap</em> is set to
|
|
<em>none</em>, then neither of these remappings take place.</p>
|
|
<p>Conceptually, setting <em>remap</em> to <em>x</em> forces the atoms to deform via an
|
|
affine transformation that exactly matches the box deformation. This
|
|
setting is typically appropriate for solids. Note that though the
|
|
atoms are effectively “moving” with the box over time, it is not due
|
|
to their having a velocity that tracks the box change, but only due to
|
|
the remapping. By contrast, setting <em>remap</em> to <em>v</em> is typically
|
|
appropriate for fluids, where you want the atoms to respond to the
|
|
change in box size/shape on their own and acquire a velocity that
|
|
matches the box change, so that their motion will naturally track the
|
|
box without explicit remapping of their coordinates.</p>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">When non-equilibrium MD (NEMD) simulations are performed using
|
|
this fix, the option “remap v” should normally be used. This is
|
|
because <a class="reference internal" href="fix_nvt_sllod.html"><span class="doc">fix nvt/sllod</span></a> adjusts the atom positions
|
|
and velocities to induce a velocity profile that matches the changing
|
|
box size/shape. Thus atom coordinates should NOT be remapped by fix
|
|
deform, but velocities SHOULD be when atoms cross periodic boundaries,
|
|
since that is consistent with maintaining the velocity profile already
|
|
created by fix nvt/sllod. LAMMPS will warn you if the <em>remap</em> setting
|
|
is not consistent with fix nvt/sllod.</p>
|
|
</div>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">For non-equilibrium MD (NEMD) simulations using “remap v” it is
|
|
usually desirable that the fluid (or flowing material, e.g. granular
|
|
particles) stream with a velocity profile consistent with the
|
|
deforming box. As mentioned above, using a thermostat such as <a class="reference internal" href="fix_nvt_sllod.html"><span class="doc">fix nvt/sllod</span></a> or <span class="xref doc">fix lavgevin</span>
|
|
(with a bias provided by <a class="reference internal" href="compute_temp_deform.html"><span class="doc">compute temp/deform</span></a>), will typically accomplish
|
|
that. If you do not use a thermostat, then there is no driving force
|
|
pushing the atoms to flow in a manner consistent with the deforming
|
|
box. E.g. for a shearing system the box deformation velocity may vary
|
|
from 0 at the bottom to 10 at the top of the box. But the stream
|
|
velocity profile of the atoms may vary from -5 at the bottom to +5 at
|
|
the top. You can monitor these effects using the <a class="reference internal" href="fix_ave_chunk.html"><span class="doc">fix ave/chunk</span></a>, <a class="reference internal" href="compute_temp_deform.html"><span class="doc">compute temp/deform</span></a>, and <a class="reference internal" href="compute_temp_profile.html"><span class="doc">compute temp/profile</span></a> commands. One way to induce
|
|
atoms to stream consistent with the box deformation is to give them an
|
|
initial velocity profile, via the <a class="reference internal" href="velocity.html"><span class="doc">velocity ramp</span></a>
|
|
command, that matches the box deformation rate. This also typically
|
|
helps the system come to equilibrium more quickly, even if a
|
|
thermostat is used.</p>
|
|
</div>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">If a <a class="reference internal" href="fix_rigid.html"><span class="doc">fix rigid</span></a> is defined for rigid bodies, and
|
|
<em>remap</em> is set to <em>x</em>, then the center-of-mass coordinates of rigid
|
|
bodies will be remapped to the changing simulation box. This will be
|
|
done regardless of whether atoms in the rigid bodies are in the fix
|
|
deform group or not. The velocity of the centers of mass are not
|
|
remapped even if <em>remap</em> is set to <em>v</em>, since <a class="reference internal" href="fix_nvt_sllod.html"><span class="doc">fix nvt/sllod</span></a> does not currently do anything special
|
|
for rigid particles. If you wish to perform a NEMD simulation of
|
|
rigid particles, you can either thermostat them independently or
|
|
include a background fluid and thermostat the fluid via <a class="reference internal" href="fix_nvt_sllod.html"><span class="doc">fix nvt/sllod</span></a>.</p>
|
|
</div>
|
|
<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
|
|
above. 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
|
|
you apply large deformations, this means the box shape can tilt
|
|
dramatically 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>units</em> keyword determines the meaning of the distance units used
|
|
to define various arguments. A <em>box</em> value selects standard distance
|
|
units as defined by the <a class="reference internal" href="units.html"><span class="doc">units</span></a> command, e.g. Angstroms for
|
|
units = real or metal. A <em>lattice</em> value means the distance units are
|
|
in lattice spacings. The <a class="reference internal" href="lattice.html"><span class="doc">lattice</span></a> command must have
|
|
been previously used to define the lattice spacing. Note that the
|
|
units choice also affects the <em>vel</em> style parameters since it is
|
|
defined in terms of distance/time. Also note that the units keyword
|
|
does not affect the <em>variable</em> style. You should use the <em>xlat</em>,
|
|
<em>ylat</em>, <em>zlat</em> keywords of the <a class="reference internal" href="thermo_style.html"><span class="doc">thermo_style</span></a>
|
|
command if you want to include lattice spacings in a variable formula.</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"><span class="doc">Section_accelerate</span></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 class="std std-ref">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 class="std std-ref">-suffix command-line switch</span></a> when you invoke LAMMPS, or you can
|
|
use the <a class="reference internal" href="suffix.html"><span class="doc">suffix</span></a> command in your input script.</p>
|
|
<p>See <a class="reference internal" href="Section_accelerate.html"><span class="doc">Section_accelerate</span></a> of the manual for
|
|
more instructions on how to use the accelerated styles effectively.</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</h2>
|
|
<p>No information about this fix is written to <a class="reference internal" href="restart.html"><span class="doc">binary restart files</span></a>. None of the <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></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 class="std std-ref">output commands</span></a>.</p>
|
|
<p>This fix can perform deformation over multiple runs, using the <em>start</em>
|
|
and <em>stop</em> keywords of the <a class="reference internal" href="run.html"><span class="doc">run</span></a> command. See the
|
|
<a class="reference internal" href="run.html"><span class="doc">run</span></a> command for details of how to do this.</p>
|
|
<p>This fix is not invoked during <a class="reference internal" href="minimize.html"><span class="doc">energy minimization</span></a>.</p>
|
|
</div>
|
|
<div class="section" id="restrictions">
|
|
<h2>Restrictions</h2>
|
|
<p>You cannot apply x, y, or z deformations to a dimension that is
|
|
shrink-wrapped via the <a class="reference internal" href="boundary.html"><span class="doc">boundary</span></a> comamnd.</p>
|
|
<p>You cannot apply xy, yz, or xz deformations to a 2nd dimension (y in
|
|
xy) that is shrink-wrapped via the <a class="reference internal" href="boundary.html"><span class="doc">boundary</span></a> comamnd.</p>
|
|
</div>
|
|
<div class="section" id="related-commands">
|
|
<h2>Related commands</h2>
|
|
<p><a class="reference internal" href="change_box.html"><span class="doc">change_box</span></a></p>
|
|
</div>
|
|
<div class="section" id="default">
|
|
<h2>Default</h2>
|
|
<p>The option defaults are remap = x, flip = yes, and units = lattice.</p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<footer>
|
|
|
|
|
|
<hr/>
|
|
|
|
<div role="contentinfo">
|
|
<p>
|
|
© 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> |