forked from lijiext/lammps
129 lines
4.5 KiB
HTML
129 lines
4.5 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 uniaxial command
|
||
|
</H3>
|
||
|
<P><B>Syntax:</B>
|
||
|
</P>
|
||
|
<PRE>fix ID group-ID uniaxial N keyword dim amount
|
||
|
</PRE>
|
||
|
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
|
||
|
<LI>uniaxial = style name of this fix command
|
||
|
<LI>N = perform uniaxial rescaling every this many timesteps
|
||
|
<LI>dim = <I>x</I> or <I>y</I> or <I>z</I>
|
||
|
<LI>strain = uniaxial strain in dim (2.0 = 2x larger)
|
||
|
</UL>
|
||
|
<P><B>Examples:</B>
|
||
|
</P>
|
||
|
<PRE>fix 1 all uniaxial 100 x 2.0
|
||
|
</PRE>
|
||
|
<P><B>Description:</B>
|
||
|
</P>
|
||
|
<P>Enable a uniaxial dilation/contraction of the simulation box during a
|
||
|
simulation. For example if the direction is X and the strain is 2,
|
||
|
then the final box size is 2L, L/sqrt(2), L/sqrt(2), where L**3 is a
|
||
|
cube with the same volume as the initial box, which need not be cubic.
|
||
|
</P>
|
||
|
<P>The chosen direction is ramped linearly during the course of the run
|
||
|
to its final value. The <A HREF = "run.html">run</A> command documents how to make
|
||
|
the ramping take place across multiple runs.
|
||
|
</P>
|
||
|
<P>If the two perpendicular box sizes are equal then the deformation
|
||
|
pathway is uniaxial at each timestep. If the two perpendicular box
|
||
|
length sizes differ, then their aspect ratio will be linearily ramped
|
||
|
down to 1. Irregardless of the initial box shape the total volume is
|
||
|
constant during the deformation. Additional details provided by
|
||
|
Carsten Svaneborg (Max Planck Institute for Complex Systems, Dresden,
|
||
|
Germany) who authored this fix, are at the bottom of this page.
|
||
|
</P>
|
||
|
<P>The initial simulation box boundaries 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 at the end of the
|
||
|
previous run. Every Nth timestep during the run, the various
|
||
|
dimensions are expanded or contracted. The coordinates of all atoms
|
||
|
in the group are also scaled to the new box size.
|
||
|
</P>
|
||
|
<P><B>Restrictions:</B>
|
||
|
</P>
|
||
|
<P>To use this fix, all dimensions of the system must be periodic.
|
||
|
</P>
|
||
|
<P><B>Related commands:</B> none
|
||
|
</P>
|
||
|
<P><B>Default:</B> none
|
||
|
</P>
|
||
|
<P><B>Extra Notes:</B>
|
||
|
</P>
|
||
|
<P>The uniaxial deformation is performed as follows:
|
||
|
</P>
|
||
|
<P>For notational simplicity the deformation is assumed to be in
|
||
|
the X direction with final strain lambda. alpha denotes an
|
||
|
arbitrary Cartesian direction.
|
||
|
</P>
|
||
|
<P>The initial strain is obtained from box dimensions:
|
||
|
</P>
|
||
|
<PRE>lambdai_alpha = Box(alpha)/power(Box(0)*Box(1)*Box(2),1/3)
|
||
|
</PRE>
|
||
|
<P>The final strain lambda in dir is specified:
|
||
|
</P>
|
||
|
<PRE>lambdaf_x = lambda
|
||
|
lambda_y = lambda_z = 1/sqrt(lambda)
|
||
|
</PRE>
|
||
|
<P>Volume conservation implies lambda_x(t)*lambda_y(t)lambda_z(t) = 1.0
|
||
|
for all times. Rather than time, let delta is denotes reduced time in
|
||
|
the interval from 0 to 1.
|
||
|
</P>
|
||
|
<P>We want a linear ramp in the specified strain component, such that MD
|
||
|
time steps and uniaxial strain are linearly related:
|
||
|
</P>
|
||
|
<PRE>lambda_x(delta) = lambdai_x (1-delta) + lambdaf_x
|
||
|
</PRE>
|
||
|
<P>The problem that remains is to choose a deformation pathway for
|
||
|
lambda_y(delta) and lambda_z(delta) that agrees with the initial and
|
||
|
final strains, and at all times conserves volume. Secondly the pathway
|
||
|
should be symmetric if the box has y<->z symmetry.
|
||
|
</P>
|
||
|
<P>In the case where the initial box is symmetric in yz, this follows
|
||
|
from volume conservation:
|
||
|
</P>
|
||
|
<PRE>lambda_y(d) = lambda_z(d) = 1/sqrt(lambda_x(d))
|
||
|
</PRE>
|
||
|
<P>However, in general the initial box dimensions in the y and z directions
|
||
|
need not be the same so assume a relation:
|
||
|
</P>
|
||
|
<PRE>lambda_y(d) = alpha(d)lambda_z(d)
|
||
|
</PRE>
|
||
|
<P>From volume conservation it follows that
|
||
|
</P>
|
||
|
<PRE>lambda_y(d) = sqrt(alpha(d)/lambda_x(d))
|
||
|
lambda_z(d) = 1/sqrt(alpha(d)*lambda_x(d))
|
||
|
</PRE>
|
||
|
<P>The asymmetry parameter has to fulfill the following boundary
|
||
|
conditions:
|
||
|
</P>
|
||
|
<PRE>initial alpha(d=0) = lambdai_y/lambdai_z
|
||
|
final alpha(d=1) = 1
|
||
|
</PRE>
|
||
|
<P>Any interpolation that does this will by define a continuous volume
|
||
|
conserving deformation from the initial to the desired final state.
|
||
|
The freedom of choice here is e.g. to relax the asymetry of the box
|
||
|
very fast, and then slowly elongate along x, or to do this more
|
||
|
slowly.
|
||
|
</P>
|
||
|
<P>The choice used in the code is:
|
||
|
</P>
|
||
|
<PRE>alpha(d) = lambdai_y/lambdai_z (1-d) + d
|
||
|
</PRE>
|
||
|
<P>Note in some cases like strain <1 2 0.5> -> strain <2 0.707107
|
||
|
0.707107> the perpendicular strains do not follow a monotonic curve.
|
||
|
</P>
|
||
|
</HTML>
|