forked from lijiext/lammps
124 lines
4.1 KiB
Plaintext
124 lines
4.1 KiB
Plaintext
|
"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 uniaxial command :h3
|
||
|
|
||
|
[Syntax:]
|
||
|
|
||
|
fix ID group-ID uniaxial N keyword dim amount :pre
|
||
|
|
||
|
ID, group-ID are documented in "fix"_fix.html command
|
||
|
uniaxial = style name of this fix command
|
||
|
N = perform uniaxial rescaling every this many timesteps
|
||
|
dim = {x} or {y} or {z}
|
||
|
strain = uniaxial strain in dim (2.0 = 2x larger) :ul
|
||
|
|
||
|
[Examples:]
|
||
|
|
||
|
fix 1 all uniaxial 100 x 2.0 :pre
|
||
|
|
||
|
[Description:]
|
||
|
|
||
|
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.
|
||
|
|
||
|
The chosen direction is ramped linearly during the course of the run
|
||
|
to its final value. The "run"_run.html command documents how to make
|
||
|
the ramping take place across multiple runs.
|
||
|
|
||
|
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.
|
||
|
|
||
|
The initial simulation box boundaries at the beginning of a run are
|
||
|
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, 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.
|
||
|
|
||
|
[Restrictions:]
|
||
|
|
||
|
To use this fix, all dimensions of the system must be periodic.
|
||
|
|
||
|
[Related commands:] none
|
||
|
|
||
|
[Default:] none
|
||
|
|
||
|
[Extra Notes:]
|
||
|
|
||
|
The uniaxial deformation is performed as follows:
|
||
|
|
||
|
For notational simplicity the deformation is assumed to be in
|
||
|
the X direction with final strain lambda. alpha denotes an
|
||
|
arbitrary Cartesian direction.
|
||
|
|
||
|
The initial strain is obtained from box dimensions:
|
||
|
|
||
|
lambdai_alpha = Box(alpha)/power(Box(0)*Box(1)*Box(2),1/3) :pre
|
||
|
|
||
|
The final strain lambda in dir is specified:
|
||
|
|
||
|
lambdaf_x = lambda
|
||
|
lambda_y = lambda_z = 1/sqrt(lambda) :pre
|
||
|
|
||
|
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.
|
||
|
|
||
|
We want a linear ramp in the specified strain component, such that MD
|
||
|
time steps and uniaxial strain are linearly related:
|
||
|
|
||
|
lambda_x(delta) = lambdai_x (1-delta) + lambdaf_x :pre
|
||
|
|
||
|
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.
|
||
|
|
||
|
In the case where the initial box is symmetric in yz, this follows
|
||
|
from volume conservation:
|
||
|
|
||
|
lambda_y(d) = lambda_z(d) = 1/sqrt(lambda_x(d)) :pre
|
||
|
|
||
|
However, in general the initial box dimensions in the y and z directions
|
||
|
need not be the same so assume a relation:
|
||
|
|
||
|
lambda_y(d) = alpha(d)lambda_z(d) :pre
|
||
|
|
||
|
From volume conservation it follows that
|
||
|
|
||
|
lambda_y(d) = sqrt(alpha(d)/lambda_x(d))
|
||
|
lambda_z(d) = 1/sqrt(alpha(d)*lambda_x(d)) :pre
|
||
|
|
||
|
The asymmetry parameter has to fulfill the following boundary
|
||
|
conditions:
|
||
|
|
||
|
initial alpha(d=0) = lambdai_y/lambdai_z
|
||
|
final alpha(d=1) = 1 :pre
|
||
|
|
||
|
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.
|
||
|
|
||
|
The choice used in the code is:
|
||
|
|
||
|
alpha(d) = lambdai_y/lambdai_z (1-d) + d :pre
|
||
|
|
||
|
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.
|