lammps/doc/fix_deform.html

311 lines
15 KiB
HTML
Raw Normal View History

<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>