2007-06-20 21:15:18 +08:00
|
|
|
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
|
|
|
|
|
|
|
:link(lws,http://lammps.sandia.gov)
|
|
|
|
:link(ld,Manual.html)
|
|
|
|
:link(lc,Section_commands.html#comm)
|
|
|
|
|
|
|
|
:line
|
|
|
|
|
|
|
|
fix deform command :h3
|
|
|
|
|
|
|
|
[Syntax:]
|
|
|
|
|
|
|
|
fix ID group-ID deform N parameter args ... keyword value ... :pre
|
|
|
|
|
|
|
|
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
|
|
|
deform = style name of this fix command :l
|
|
|
|
N = perform box deformation every this many timesteps :l
|
|
|
|
one or more parameter/arg pairs may be appended :l
|
|
|
|
parameter = {x} or {y} or {z} or {xy} or {xz} or {yz}
|
|
|
|
{x}, {y}, {z} args = style value(s)
|
2009-04-10 03:15:55 +08:00
|
|
|
style = {final} or {delta} or {scale} or {vel} or {erate} or {trate} or {volume} or {wiggle}
|
2007-06-20 21:15:18 +08:00
|
|
|
{final} values = lo hi
|
|
|
|
lo hi = box boundaries at end of run (distance units)
|
|
|
|
{delta} values = dlo dhi
|
|
|
|
dlo dhi = change in box boundaries at end of run (distance units)
|
|
|
|
{scale} values = factor
|
|
|
|
factor = multiplicative factor for change in box length at end of run
|
|
|
|
{vel} value = V
|
|
|
|
V = change box length at this velocity (distance/time units),
|
|
|
|
effectively an engineering strain rate
|
2007-06-21 01:08:17 +08:00
|
|
|
{erate} value = R
|
|
|
|
R = engineering strain rate (1/time units)
|
|
|
|
{trate} value = R
|
2007-06-20 21:15:18 +08:00
|
|
|
R = true strain rate (1/time units)
|
|
|
|
{volume} value = none = adjust this dim to preserve volume of system
|
2009-03-18 07:25:23 +08:00
|
|
|
{wiggle} value = A Tp
|
|
|
|
A = amplitude of oscillation (distance units)
|
|
|
|
Tp = period of oscillation (time units)
|
2007-06-20 21:15:18 +08:00
|
|
|
{xy}, {xz}, {yz} args = style value
|
2009-04-10 03:15:55 +08:00
|
|
|
style = {final} or {delta} or {vel} or {erate} or {trate} or {wiggle}
|
2007-06-20 21:15:18 +08:00
|
|
|
{final} value = tilt
|
|
|
|
tilt = tilt factor at end of run (distance units)
|
|
|
|
{delta} value = dtilt
|
|
|
|
dtilt = change in tilt factor at end of run (distance units)
|
|
|
|
{vel} value = V
|
|
|
|
V = change tilt factor at this velocity (distance/time units),
|
|
|
|
effectively an engineering shear strain rate
|
2007-06-21 01:08:17 +08:00
|
|
|
{erate} value = R
|
2007-08-04 03:53:18 +08:00
|
|
|
R = engineering shear strain rate (1/time units)
|
2007-06-21 01:08:17 +08:00
|
|
|
{trate} value = R
|
2009-03-18 07:25:23 +08:00
|
|
|
R = true shear strain rate (1/time units)
|
|
|
|
{wiggle} value = A Tp
|
|
|
|
A = amplitude of oscillation (distance units)
|
|
|
|
Tp = period of oscillation (time units) :pre
|
2007-06-20 21:15:18 +08:00
|
|
|
|
2007-07-03 04:04:44 +08:00
|
|
|
zero or more keyword/value pairs may be appended :l
|
2007-06-20 21:15:18 +08:00
|
|
|
keyword = {remap} or {units} :l
|
|
|
|
{remap} value = {x} or {v} or {none}
|
2007-06-26 08:03:39 +08:00
|
|
|
x = remap coords of atoms in group into deforming box
|
2007-06-20 21:15:18 +08:00
|
|
|
v = remap velocities of all atoms when they cross periodic boundaries
|
|
|
|
none = no remapping of x or v
|
|
|
|
{units} value = {lattice} or {box}
|
|
|
|
lattice = distances are defined in lattice units
|
|
|
|
box = distances are defined in simulation box units :pre
|
|
|
|
:ule
|
|
|
|
|
|
|
|
[Examples:]
|
|
|
|
|
2007-06-28 04:56:05 +08:00
|
|
|
fix 1 all deform 1 x final 0.0 9.0 z final 0.0 5.0 units box
|
|
|
|
fix 1 all deform 1 x trate 0.1 y volume z volume
|
|
|
|
fix 1 all deform 1 xy erate 0.001 remap v
|
2010-04-29 21:53:06 +08:00
|
|
|
fix 1 all deform 10 y delta -0.5 0.5 xz vel 1.0 :pre
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
[Description:]
|
|
|
|
|
|
|
|
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 "fix
|
|
|
|
nvt/sllod"_fix_nvt_sllod.html and "compute
|
|
|
|
temp/deform"_compute_temp_deform.html commands for more details.
|
|
|
|
|
|
|
|
Any parameter varied by this command must refer to a periodic
|
|
|
|
dimension - see the "boundary"_boundary.html command. For parameters
|
2010-04-03 00:51:06 +08:00
|
|
|
{xy}, {xz}, and {yz}, the 2nd dimension must be periodic, e.g. {y} for
|
|
|
|
{xy}. Dimensions not varied by this command can be periodic or
|
|
|
|
non-periodic. Dimensions corresponding to unspecified parameters can
|
|
|
|
also be controlled by a "fix npt"_fix_nh.html or "fix nph"_fix_nh.html
|
|
|
|
command.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
2007-08-08 22:59:27 +08:00
|
|
|
The size and shape of the simulation box at the beginning of the
|
|
|
|
simulation run were either specified by the
|
|
|
|
"create_box"_create_box.html or "read_data"_read_data.html or
|
|
|
|
"read_restart"_read_restart.html 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 "create_box"_create_box.html, "read
|
2007-06-20 21:15:18 +08:00
|
|
|
data"_read_data.html, and "read_restart"_read_restart.html commands
|
2007-07-09 22:09:39 +08:00
|
|
|
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.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
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
|
2007-06-26 08:03:39 +08:00
|
|
|
and final values.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
:line
|
|
|
|
|
|
|
|
For the {x}, {y}, and {z} parameters, this is the meaning of their
|
|
|
|
styles and values.
|
|
|
|
|
2007-06-21 01:08:17 +08:00
|
|
|
The {final}, {delta}, {scale}, {vel}, and {erate} 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.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
For style {final}, the final lo and hi box boundaries of a dimension
|
|
|
|
are specified. The values can be in lattice or box distance units.
|
2008-03-01 09:13:20 +08:00
|
|
|
See the discussion of the units keyword below.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
For style {delta}, plus or minus changes in the lo/hi box boundaries
|
|
|
|
of a dimension are specified. The values can be in lattice or box
|
2007-06-28 00:47:01 +08:00
|
|
|
distance units. See the discussion of the units keyword below.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
For style {scale}, 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.
|
|
|
|
|
|
|
|
For style {vel}, a velocity at which the box length changes is
|
2007-06-21 01:08:17 +08:00
|
|
|
specified in units of distance/time. This is effectively a "constant
|
|
|
|
engineering strain rate", where rate = V/L0 and L0 is the initial box
|
2007-06-20 21:15:18 +08:00
|
|
|
length. The distance can be in lattice or box distance units. See
|
|
|
|
the discussion of the units keyword below. For example, if the
|
2007-06-21 01:08:17 +08:00
|
|
|
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.
|
|
|
|
|
|
|
|
The {erate} 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 "units"_units.html command for the time units
|
|
|
|
associated with different choices of simulation units,
|
|
|
|
e.g. picoseconds for "metal" units). Tensile strain is unitless and
|
2009-09-04 23:56:48 +08:00
|
|
|
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
|
|
|
|
|
|
|
|
L(t) = L0 (1 + erate*dt) :pre
|
|
|
|
|
|
|
|
where dt is the elapsed time (in time units). Thus if {erate} R is
|
|
|
|
specified as 0.1 and time units are picoseconds, this means the box
|
2007-06-21 01:08:17 +08:00
|
|
|
length will increase by 10% of its original length every picosecond.
|
2009-09-04 23:56:48 +08:00
|
|
|
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 {trate} style would induce.
|
2007-06-21 01:08:17 +08:00
|
|
|
|
|
|
|
The {trate} style changes a dimension of the box at a "constant true
|
2007-06-20 21:15:18 +08:00
|
|
|
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 "units"_units.html command for the
|
|
|
|
time units associated with different choices of simulation units,
|
2007-06-21 01:08:17 +08:00
|
|
|
e.g. picoseconds for "metal" units). Tensile strain is unitless and
|
2009-09-04 23:56:48 +08:00
|
|
|
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
|
|
|
|
|
|
|
|
L(t) = L0 exp(trate*dt) :pre
|
|
|
|
|
|
|
|
where dt is the elapsed time (in time units). Thus if {trate} 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 {erate}, but by a factor of
|
|
|
|
1024 since the box length will double every picosecond.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
Note that to change the volume (or cross-sectional area) of the
|
|
|
|
simulation box at a constant rate, you can change multiple dimensions
|
2010-04-22 03:29:19 +08:00
|
|
|
via {erate} or {trate}. 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.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
The {volume} 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 {y} 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.
|
|
|
|
|
|
|
|
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 {volume}
|
|
|
|
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
|
2010-04-03 00:51:06 +08:00
|
|
|
"fix npt aniso"_fix_nh.html with zero applied pressure on those 2
|
2007-06-20 21:15:18 +08:00
|
|
|
dimensions, so that they respond to the tensile strain dynamically.
|
|
|
|
|
2009-03-18 07:25:23 +08:00
|
|
|
The {wiggle} 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
|
|
|
|
|
|
|
|
L(t) = L0 + A sin(2*pi t/Tp) :pre
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
For the {scale}, {vel}, {erate}, {trate}, {volume}, and {wiggle}
|
|
|
|
styles, the box length is expanded or compressed around its mid point.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
:line
|
|
|
|
|
|
|
|
For the {xy}, {xz}, and {yz} 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.
|
|
|
|
|
2007-06-21 01:08:17 +08:00
|
|
|
The {final}, {delta}, {vel}, and {erate} 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.
|
|
|
|
|
2007-06-20 21:15:18 +08:00
|
|
|
For style {final}, the final tilt factor is specified. The value
|
|
|
|
can be in lattice or box distance units. See the discussion of the
|
|
|
|
units keyword below.
|
|
|
|
|
|
|
|
For style {delta}, a plus or minus change in the tilt factor is
|
|
|
|
specified. The value can be in lattice or box distance units. See
|
2008-03-01 09:13:20 +08:00
|
|
|
the discussion of the units keyword below.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
For style {vel}, 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
|
2008-03-01 09:13:20 +08:00
|
|
|
distance can be in lattice or box distance units. See the discussion
|
2007-06-20 21:15:18 +08:00
|
|
|
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.
|
|
|
|
|
2007-06-21 01:08:17 +08:00
|
|
|
The {erate} 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 "units"_units.html 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
|
2009-09-04 23:56:48 +08:00
|
|
|
direction for xy deformation) from the unstrained orientation.
|
|
|
|
|
|
|
|
The tilt factor T as a function of time will change as
|
|
|
|
|
|
|
|
T(t) = T0 + erate*dt :pre
|
|
|
|
|
|
|
|
where T0 is the initial tilt factor and dt is the elapsed time (in
|
|
|
|
time units). Thus if {erate} 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.
|
2007-06-21 01:08:17 +08:00
|
|
|
|
|
|
|
The {trate} style changes a tilt factor at a "constant true shear
|
2007-06-20 21:15:18 +08:00
|
|
|
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
|
2007-06-21 01:08:17 +08:00
|
|
|
the specified shear strain rate are 1/time. See the
|
|
|
|
"units"_units.html 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)
|
2009-09-04 23:56:48 +08:00
|
|
|
from the unstrained orientation.
|
|
|
|
|
|
|
|
The tilt factor T as a function of time will change as
|
|
|
|
|
|
|
|
T(t) = T0 exp(trate*dt) :pre
|
|
|
|
|
|
|
|
where T0 is the initial tilt factor and dt is the elapsed time (in
|
|
|
|
time units). Thus if {trate} 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 {trate} option.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
Note that shear strain is defined as the tilt factor divided by the
|
2007-06-21 01:08:17 +08:00
|
|
|
perpendicular box length. The {erate} and {trate} 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.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
2009-03-18 07:25:23 +08:00
|
|
|
The {wiggle} style oscillates the specified tilt factor sinusoidally
|
2009-09-04 23:56:48 +08:00
|
|
|
with the specified amplitude and period. I.e. the tilt factor T as a
|
2009-03-18 07:25:23 +08:00
|
|
|
function of time is given by
|
|
|
|
|
2009-09-04 23:56:48 +08:00
|
|
|
T(t) = T0 + A sin(2*pi t/Tp) :pre
|
2009-03-18 07:25:23 +08:00
|
|
|
|
2009-09-04 23:56:48 +08:00
|
|
|
where T0 is its initial value. If the amplitude A is a positive
|
2009-03-18 07:25:23 +08:00
|
|
|
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.
|
|
|
|
|
2007-06-20 21:15:18 +08:00
|
|
|
All of these styles change the xy, xz, yz tilt factors during a
|
|
|
|
simulation. In LAMMPS, tilt factors (xy,xz,yz) for triclinic boxes
|
|
|
|
are always bounded by half the distance of the parallel box length.
|
|
|
|
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.
|
|
|
|
|
|
|
|
To obey this constraint and allow for large shear deformations to be
|
2008-03-01 09:13:20 +08:00
|
|
|
applied via the {xy}, {xz}, or {yz} parameters, the following
|
2007-06-20 21:15:18 +08:00
|
|
|
algorithm is used. If {prd} 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 re-shaped 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 re-shaped so
|
|
|
|
that the tilt factor becomes -5.0, the tilt factor would increase from
|
|
|
|
-5.0 to 5.0, the box would be re-shaped again, etc. The re-shaping
|
|
|
|
would occur 10 times and the final tilt factor at the end of the
|
|
|
|
simulation would be 0.0. During each re-shaping event, atoms are
|
|
|
|
remapped into the new box in the appropriate manner.
|
|
|
|
|
|
|
|
:line
|
|
|
|
|
|
|
|
Each time the box size or shape is changed, the {remap} keyword
|
2009-04-28 22:56:27 +08:00
|
|
|
determines whether atom positions are remapped to the new box. If
|
2007-06-20 21:15:18 +08:00
|
|
|
{remap} is set to {x} (the default), atoms in the fix group are
|
2009-04-28 22:56:27 +08:00
|
|
|
remapped; otherwise they are not. Note that their velocities are not
|
2009-04-23 07:33:07 +08:00
|
|
|
changed, just their positions are altered. If {remap} is set to {v},
|
|
|
|
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 {remap} is set to
|
|
|
|
{none}, then neither of these remappings take place.
|
|
|
|
|
2009-04-28 22:56:27 +08:00
|
|
|
Conceptually, setting {remap} to {x} 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 {remap} to {v} 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.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
IMPORTANT NOTE: When non-equilibrium MD (NEMD) simulations are
|
|
|
|
performed using this fix, the option "remap v" should normally be
|
|
|
|
used. This is because "fix nvt/sllod"_fix_nvt_sllod.html adjusts the
|
2009-04-23 07:33:07 +08:00
|
|
|
atom positions and velocities to induce a velocity profile that
|
2007-06-20 21:15:18 +08:00
|
|
|
matches the changing box size/shape. Thus atom coordinates should NOT
|
|
|
|
be remapped by fix deform, but velocities SHOULD be when atoms cross
|
2007-08-04 03:53:18 +08:00
|
|
|
periodic boundaries, since that is consistent with maintaining the
|
|
|
|
velocity profile already created by fix nvt/sllod. LAMMPS will warn
|
|
|
|
you if the {remap} setting is not consistent with fix nvt/sllod.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
2007-08-29 22:13:51 +08:00
|
|
|
IMPORTANT NOTE: If a "fix rigid"_fix_rigid.html is defined for rigid
|
|
|
|
bodies, and {remap} is set to {x}, 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 {remap} is set to {v}, since "fix
|
|
|
|
nvt/sllod"_fix_nvt_sllod.html 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 "fix
|
2010-05-07 23:11:21 +08:00
|
|
|
nvt/sllod"_fix_nvt_sllod.html.
|
2007-08-29 22:13:51 +08:00
|
|
|
|
2007-06-20 21:15:18 +08:00
|
|
|
The {units} keyword determines the meaning of the distance units used
|
|
|
|
to define various arguments. A {box} value selects standard distance
|
|
|
|
units as defined by the "units"_units.html command, e.g. Angstroms for
|
|
|
|
units = real or metal. A {lattice} value means the distance units are
|
|
|
|
in lattice spacings. The "lattice"_lattice.html command must have
|
|
|
|
been previously used to define the lattice spacing. Note that the
|
|
|
|
units choice also affects the {vel} style parameters since it is
|
|
|
|
defined in terms of distance/time.
|
|
|
|
|
2007-10-11 06:28:11 +08:00
|
|
|
[Restart, fix_modify, output, run start/stop, minimize info:]
|
2007-06-26 08:03:39 +08:00
|
|
|
|
|
|
|
No information about this fix is written to "binary restart
|
|
|
|
files"_restart.html. None of the "fix_modify"_fix_modify.html options
|
2010-04-03 00:51:06 +08:00
|
|
|
are relevant to this fix. No global or per-atom quantities are stored
|
|
|
|
by this fix for access by various "output
|
2011-08-26 01:01:01 +08:00
|
|
|
commands"_Section_howto.html#howto_15.
|
2007-06-26 08:03:39 +08:00
|
|
|
|
|
|
|
This fix can perform deformation over multiple runs, using the {start}
|
|
|
|
and {stop} keywords of the "run"_run.html command. See the
|
|
|
|
"run"_run.html command for details of how to do this.
|
|
|
|
|
|
|
|
This fix is not invoked during "energy minimization"_minimize.html.
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
[Restrictions:]
|
|
|
|
|
|
|
|
Any box dimension varied by this fix must be periodic.
|
|
|
|
|
2007-06-26 08:03:39 +08:00
|
|
|
[Related commands:]
|
|
|
|
|
|
|
|
"displace_box"_displace_box.html
|
2007-06-20 21:15:18 +08:00
|
|
|
|
|
|
|
[Default:]
|
|
|
|
|
|
|
|
The option defaults are remap = x and units = lattice.
|