mirror of https://github.com/lammps/lammps.git
311 lines
15 KiB
HTML
311 lines
15 KiB
HTML
![]() |
<HTML>
|
||
|
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
|
||
|
</CENTER>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<HR>
|
||
|
|
||
|
<H3>fix deform command
|
||
|
</H3>
|
||
|
<P><B>Syntax:</B>
|
||
|
</P>
|
||
|
<PRE>fix ID group-ID deform N parameter args ... keyword value ...
|
||
|
</PRE>
|
||
|
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
|
||
|
|
||
|
<LI>deform = style name of this fix command
|
||
|
|
||
|
<LI>N = perform box deformation every this many timesteps
|
||
|
|
||
|
<LI>one or more parameter/arg pairs may be appended
|
||
|
|
||
|
<PRE>parameter = <I>x</I> or <I>y</I> or <I>z</I> or <I>xy</I> or <I>xz</I> or <I>yz</I>
|
||
|
<I>x</I>, <I>y</I>, <I>z</I> args = style value(s)
|
||
|
style = <I>final</I> or <I>delta</I> or <I>scale</I> or <I>vel</I> or <I>rate</I> or <I>volume</I>
|
||
|
<I>final</I> values = lo hi
|
||
|
lo hi = box boundaries at end of run (distance units)
|
||
|
<I>delta</I> values = dlo dhi
|
||
|
dlo dhi = change in box boundaries at end of run (distance units)
|
||
|
<I>scale</I> values = factor
|
||
|
factor = multiplicative factor for change in box length at end of run
|
||
|
<I>vel</I> value = V
|
||
|
V = change box length at this velocity (distance/time units),
|
||
|
effectively an engineering strain rate
|
||
|
<I>rate</I> value = R
|
||
|
R = true strain rate (1/time units)
|
||
|
<I>volume</I> value = none = adjust this dim to preserve volume of system
|
||
|
<I>xy</I>, <I>xz</I>, <I>yz</I> args = style value
|
||
|
style = <I>final</I> or <I>delta</I> or <I>vel</I> or <I>rate</I>
|
||
|
<I>final</I> value = tilt
|
||
|
tilt = tilt factor at end of run (distance units)
|
||
|
<I>delta</I> value = dtilt
|
||
|
dtilt = change in tilt factor at end of run (distance units)
|
||
|
<I>vel</I> value = V
|
||
|
V = change tilt factor at this velocity (distance/time units),
|
||
|
effectively an engineering shear strain rate
|
||
|
<I>rate</I> value = R
|
||
|
R = true shear strain rate (1/time units)
|
||
|
</PRE>
|
||
|
<LI>zero or more keyword/value pairs may be appended to the args
|
||
|
|
||
|
<LI>keyword = <I>remap</I> or <I>units</I>
|
||
|
|
||
|
<PRE> <I>remap</I> value = <I>x</I> or <I>v</I> or <I>none</I>
|
||
|
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
|
||
|
<I>units</I> value = <I>lattice</I> or <I>box</I>
|
||
|
lattice = distances are defined in lattice units
|
||
|
box = distances are defined in simulation box units
|
||
|
</PRE>
|
||
|
|
||
|
</UL>
|
||
|
<P><B>Examples:</B>
|
||
|
</P>
|
||
|
<PRE>fix 1 all deform x final 0.0 9.0 z final 0.0 5.0 units box
|
||
|
fix 1 all deform x rate 0.1 y volume z volume
|
||
|
fix 1 all deform xy rate 0.001 remap v
|
||
|
fix 1 all deform y delta 0.5 xz vel 1.0
|
||
|
</PRE>
|
||
|
<P><B>Description:</B>
|
||
|
</P>
|
||
|
<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 HREF = "fix_nvt_sllod.html">fix
|
||
|
nvt/sllod</A> and <A HREF = "compute_temp_deform.html">compute
|
||
|
temp/deform</A> commands for more details.
|
||
|
</P>
|
||
|
<P>Any parameter varied by this command must refer to a periodic
|
||
|
dimension - see the <A HREF = "boundary.html">boundary</A> command. For parameters
|
||
|
"xy", "xz", and "yz" this means both affected dimensions must be
|
||
|
periodic, e.g. x and y for "xy". Dimensions not varied by this
|
||
|
command can be periodic or non-periodic. Unspecified dimensions can
|
||
|
also be controlled by a <A HREF = "fix_npt.html">fix npt</A> or <A HREF = "fix_nph.html">fix
|
||
|
nph</A> command.
|
||
|
</P>
|
||
|
<P>The size and shape of the initial simulation box at the beginning of a
|
||
|
run are specified by the <A HREF = "create_box.html">create_box</A> or
|
||
|
<A HREF = "read_data.html">read_data</A> or <A HREF = "read_restart.html">read_restart</A> command
|
||
|
used to setup the simulation, or they are the values from the end of
|
||
|
the previous run. The <A HREF = "create_box.html">create_box</A>, <A HREF = "read_data.html">read
|
||
|
data</A>, and <A HREF = "read_restart.html">read_restart</A> commands
|
||
|
also specify whether the simulation box is orthogonal or 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. The <A HREF = "run.html">run</A> command documents how to make
|
||
|
the ramping take place across multiple runs.
|
||
|
</P>
|
||
|
<HR>
|
||
|
|
||
|
<P>For the <I>x</I>, <I>y</I>, and <I>z</I> parameters, this is the meaning of their
|
||
|
styles and values.
|
||
|
</P>
|
||
|
<P>The <I>final</I>, <I>delta</I>, <I>scale</I>, and <I>vel</I> 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 <I>final</I>, the final lo and hi box boundaries of a dimension
|
||
|
are specified. The values can be in lattice or box distance units.
|
||
|
See the discsussion of the units keyword below.
|
||
|
</P>
|
||
|
<P>For style <I>delta</I>, 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 discsussion of the units keyword below.
|
||
|
</P>
|
||
|
<P>For style <I>scale</I>, 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 <I>vel</I>, a velocity at which the box length changes is
|
||
|
specified in units of distance/time. This is effectively an
|
||
|
"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 <I>rate</I> style changes a dimension of the box at a "true constant
|
||
|
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 HREF = "units.html">units</A> command for the
|
||
|
time units associated with different choices of simulation units,
|
||
|
e.g. picoseconds for "metal" units). Thus if the <I>rate</I> R is 0.01 and
|
||
|
time units are picoseconds, this means the box length will increase by
|
||
|
1% every picosecond. R = 1 or 2 means the box length will double or
|
||
|
triple every picosecond. R = -0.1 means the box length will shrink by
|
||
|
10% every picosecond. Note that for a "true" rate the change is
|
||
|
continuous, so running with R = 1 for 10 picoseconds does not expand
|
||
|
the box length by a factor of 10, but by a factor of 1024 since it
|
||
|
doubles 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 <I>rate</I>. E.g. to double the box volume every picosecond, you could
|
||
|
set "x rate M", "y rate M", "z rate M", with M = pow(2,1/3) - 1 =
|
||
|
1.26, since if each box dimension grows by 26%, the box volume
|
||
|
doubles.
|
||
|
</P>
|
||
|
<P>The <I>volume</I> 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 <I>y</I> 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 <I>volume</I>
|
||
|
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 HREF = "fix_npt.html">fix npt aniso</A> with zero applied pressure on those 2
|
||
|
dimensions, so that they respond to the tensile strain dynamically.
|
||
|
</P>
|
||
|
<P>For the <I>scale</I>, <I>vel</I>, <I>rate</I>, and <I>volume</I> styles, the box length is
|
||
|
expanded or compressed around its mid point.
|
||
|
</P>
|
||
|
<HR>
|
||
|
|
||
|
<P>For the <I>xy</I>, <I>xz</I>, and <I>yz</I> 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>For style <I>final</I>, 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 <I>delta</I>, a plus or minus change in the tilt factor is
|
||
|
specified. The value can be in lattice or box distance units. See
|
||
|
the discsussion of the units keyword below.
|
||
|
</P>
|
||
|
<P>For style <I>vel</I>, 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 discsussion
|
||
|
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 <I>rate</I> style changes a tilt factor at a "true constant 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
|
||
|
shear strain rate are 1/time. See the <A HREF = "units.html">units</A> command for
|
||
|
the time units associated with different choices of simulation units,
|
||
|
e.g. picoseconds for "metal" units). Thus if the <I>rate</I> R is 0.01 and
|
||
|
time units are picoseconds, this means the tilt factor will increase
|
||
|
by 1% every picosecond. R = 1 or 2 means the tilt factor will double
|
||
|
or triple every picosecond. R = -0.1 means the tilt factor will
|
||
|
shrink by 10% every picosecond. Note that the change is continuous,
|
||
|
so running with R = 1 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. Also note, that the initial tilt factor must be
|
||
|
non-zero to use the <I>rate</I> option.
|
||
|
</P>
|
||
|
<P>Note that shear strain is defined as the tilt factor divided by the
|
||
|
perpendicular box length. The <I>rate</I> style controls the tilt factor,
|
||
|
but assumes 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>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.
|
||
|
</P>
|
||
|
<P>To obey this constraint and allow for large shear deformations to be
|
||
|
applied via the <I>xy</I>, <I>xz</I>, or <I>yz</I> parameters, the folloiwng
|
||
|
algorithm is used. If <I>prd</I> 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.
|
||
|
</P>
|
||
|
<HR>
|
||
|
|
||
|
<P>Each time the box size or shape is changed, the <I>remap</I> keyword
|
||
|
determines whether atom positions are re-mapped to the new box. If
|
||
|
<I>remap</I> is set to <I>x</I> (the default), atoms in the fix group are
|
||
|
re-mapped; otherwise they are not. If <I>remap</I> is set to <I>v</I>, 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 <I>remap</I> is set to <I>none</I>,
|
||
|
then neither of these remappings take place.
|
||
|
</P>
|
||
|
<P>IMPORTANT NOTE: When non-equilibrium MD (NEMD) simulations are
|
||
|
performed using this fix, the option "remap v" should normally be
|
||
|
used. This is because <A HREF = "fix_nvt_sllod.html">fix nvt/sllod</A> adjusts the
|
||
|
atom positions and velocities to provide 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 when atoms cross periodic boundaries since
|
||
|
that is consistent with maintaining the velocity profile created by
|
||
|
fix nvt/sllod. LAMMPS will warn you if this settings is not
|
||
|
consistent.
|
||
|
</P>
|
||
|
<P>The <I>units</I> keyword determines the meaning of the distance units used
|
||
|
to define various arguments. A <I>box</I> value selects standard distance
|
||
|
units as defined by the <A HREF = "units.html">units</A> command, e.g. Angstroms for
|
||
|
units = real or metal. A <I>lattice</I> value means the distance units are
|
||
|
in lattice spacings. The <A HREF = "lattice.html">lattice</A> command must have
|
||
|
been previously used to define the lattice spacing. Note that the
|
||
|
units choice also affects the <I>vel</I> style parameters since it is
|
||
|
defined in terms of distance/time.
|
||
|
</P>
|
||
|
<HR>
|
||
|
|
||
|
<P><B>Restrictions:</B>
|
||
|
</P>
|
||
|
<P>Any box dimension varied by this fix must be periodic.
|
||
|
</P>
|
||
|
<P><B>Related commands:</B> none
|
||
|
</P>
|
||
|
<P><B>Default:</B>
|
||
|
</P>
|
||
|
<P>The option defaults are remap = x and units = lattice.
|
||
|
</P>
|
||
|
</HTML>
|