|
|
|
|
@ -20,10 +20,11 @@ style_name = {nvt/uef} or {npt/uef} :l
|
|
|
|
|
one or more keyword/value pairs may be appended :l
|
|
|
|
|
keyword = {ext} or {strain} or {iso} or {x} or {y} or {z} or {tchain} or {pchain} or {tloop} or {ploop} or {mtk}
|
|
|
|
|
{ext} value = {x} or {y} or {z} or {xy} or {yz} or {xz} = external dimensions
|
|
|
|
|
This keyword sets the external dimensions used to calculate the scalar pressure
|
|
|
|
|
sets the external dimensions used to calculate the scalar pressure
|
|
|
|
|
{strain} values = e_x e_y = initial strain
|
|
|
|
|
Use of this keyword is usually not necessary, but may be needed to resume a run with a data file.
|
|
|
|
|
The {iso}, {x}, {y}, {z}, {tchain}, {pchain}, {tloop}, {ploop}, and {mtk} keywords are documented in the "fix npt"_fix_nh.html command. :pre
|
|
|
|
|
usually not needed, but may be needed to resume a run with a data file.
|
|
|
|
|
{iso}, {x}, {y}, {z}, {tchain}, {pchain}, {tloop}, {ploop}, {mtk} keywords
|
|
|
|
|
documented by the "fix npt"_fix_nh.html command :pre
|
|
|
|
|
:ule
|
|
|
|
|
|
|
|
|
|
[Examples:]
|
|
|
|
|
@ -35,84 +36,92 @@ fix biax_npt all npt/uef temp 400 400 100 erate -0.00001 0.000005 x 1 1 3000 :pr
|
|
|
|
|
|
|
|
|
|
[Description:]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This fix is used to simulate non-equilibrium molecular dynamics (NEMD)
|
|
|
|
|
under diagonal flow fields, including uniaxial and biaxial flow.
|
|
|
|
|
Simulations under extensional flow may be carried out for an
|
|
|
|
|
indefinite amount of time. It is an implementation of the boundary
|
|
|
|
|
conditions from "(Dobson)"_#Dobson, and also uses numerical lattice reduction
|
|
|
|
|
as was proposed by "(Hunt)"_#Hunt. The lattice reduction algorithm is from
|
|
|
|
|
"(Semaev)"_Semaev. The fix is intended for simulations of
|
|
|
|
|
homogeneous flows, and integrates the SLLOD equations of motion,
|
|
|
|
|
originally proposed by Hoover and Ladd (see "(Evans and Morriss)"_#Sllod).
|
|
|
|
|
Additional detail about this implementation can be found in
|
|
|
|
|
"(Nicholson and Rutledge)"_#Nicholson.
|
|
|
|
|
under diagonal flow fields, including uniaxial and biaxial flow.
|
|
|
|
|
Simulations under extensional flow may be carried out for an
|
|
|
|
|
indefinite amount of time. It is an implementation of the boundary
|
|
|
|
|
conditions from "(Dobson)"_#Dobson, and also uses numerical lattice
|
|
|
|
|
reduction as was proposed by "(Hunt)"_#Hunt. The lattice reduction
|
|
|
|
|
algorithm is from "(Semaev)"_Semaev. The fix is intended for
|
|
|
|
|
simulations of homogeneous flows, and integrates the SLLOD equations
|
|
|
|
|
of motion, originally proposed by Hoover and Ladd (see "(Evans and
|
|
|
|
|
Morriss)"_#Sllod). Additional detail about this implementation can be
|
|
|
|
|
found in "(Nicholson and Rutledge)"_#Nicholson.
|
|
|
|
|
|
|
|
|
|
The applied flow field is set by the {eps} keyword. The values {edot_x}
|
|
|
|
|
and {edot_y} correspond to the strain rates in the xx and yy directions.
|
|
|
|
|
It is implicitly assumed that the flow field is traceless, and therefore
|
|
|
|
|
the strain rate in the zz direction is eqal to -({edot_x} + {edot_y}).
|
|
|
|
|
The applied flow field is set by the {eps} keyword. The values
|
|
|
|
|
{edot_x} and {edot_y} correspond to the strain rates in the xx and yy
|
|
|
|
|
directions. It is implicitly assumed that the flow field is
|
|
|
|
|
traceless, and therefore the strain rate in the zz direction is eqal
|
|
|
|
|
to -({edot_x} + {edot_y}).
|
|
|
|
|
|
|
|
|
|
NOTE: Due to an instability in the SLLOD equations under extension,
|
|
|
|
|
NOTE: Due to an instability in the SLLOD equations under extension,
|
|
|
|
|
"fix momentum"_fix_momentum.html should be used to regularly reset the
|
|
|
|
|
linear momentum.
|
|
|
|
|
linear momentum.
|
|
|
|
|
|
|
|
|
|
The boundary conditions require a simulation box that does not have a
|
|
|
|
|
consistent alignment relative to the applied flow field. Since LAMMPS
|
|
|
|
|
utilizes an upper-triangular simulation box, it is not possible to express
|
|
|
|
|
the evolving simulation box in the same coordinate system as the flow field.
|
|
|
|
|
This fix keeps track of two coordinate systems: the flow frame, and the
|
|
|
|
|
upper triangular LAMMPS frame. The coordinate systems are related to
|
|
|
|
|
each other through the QR decomposition, as is illustrated in the image below.
|
|
|
|
|
The boundary conditions require a simulation box that does not have a
|
|
|
|
|
consistent alignment relative to the applied flow field. Since LAMMPS
|
|
|
|
|
utilizes an upper-triangular simulation box, it is not possible to
|
|
|
|
|
express the evolving simulation box in the same coordinate system as
|
|
|
|
|
the flow field. This fix keeps track of two coordinate systems: the
|
|
|
|
|
flow frame, and the upper triangular LAMMPS frame. The coordinate
|
|
|
|
|
systems are related to each other through the QR decomposition, as is
|
|
|
|
|
illustrated in the image below.
|
|
|
|
|
|
|
|
|
|
:c,image(JPG/uef_frames.jpg)
|
|
|
|
|
|
|
|
|
|
During most molecular dynamics operations, the system is represented in the
|
|
|
|
|
LAMMPS frame. Only when the positions and velocities are updated is the system
|
|
|
|
|
rotated to the flow frame, and it is rotated back to the LAMMPS frame
|
|
|
|
|
immediately afterwards. For this reason, all vector-valued quantities
|
|
|
|
|
(except for the tensors from "compute_pressure/uef"_compute_pressure_uef.html
|
|
|
|
|
and "compute_temp/uef"_compute_temp_uef.html) will
|
|
|
|
|
be computed in the LAMMPS frame. Rotationally invariant scalar quantities like
|
|
|
|
|
the temperature and hydrostatic pressure are frame-invariant and will be
|
|
|
|
|
computed correctly. Additionally, the system is in the LAMMPS frame during all of the
|
|
|
|
|
output steps, and therefore trajectory files made using the dump command
|
|
|
|
|
will be in the LAMMPS frame unless the "dump_cfg/uef"_dump_cfg_uef.html command is used.
|
|
|
|
|
During most molecular dynamics operations, the system is represented
|
|
|
|
|
in the LAMMPS frame. Only when the positions and velocities are
|
|
|
|
|
updated is the system rotated to the flow frame, and it is rotated
|
|
|
|
|
back to the LAMMPS frame immediately afterwards. For this reason, all
|
|
|
|
|
vector-valued quantities (except for the tensors from
|
|
|
|
|
"compute_pressure/uef"_compute_pressure_uef.html and
|
|
|
|
|
"compute_temp/uef"_compute_temp_uef.html) will be computed in the
|
|
|
|
|
LAMMPS frame. Rotationally invariant scalar quantities like the
|
|
|
|
|
temperature and hydrostatic pressure are frame-invariant and will be
|
|
|
|
|
computed correctly. Additionally, the system is in the LAMMPS frame
|
|
|
|
|
during all of the output steps, and therefore trajectory files made
|
|
|
|
|
using the dump command will be in the LAMMPS frame unless the
|
|
|
|
|
"dump_cfg/uef"_dump_cfg_uef.html command is used.
|
|
|
|
|
|
|
|
|
|
:line
|
|
|
|
|
|
|
|
|
|
Temperature control is achieved with the default Nose-Hoover style
|
|
|
|
|
thermostat documented in "fix npt"_fix_nh.html. When this fix is active,
|
|
|
|
|
only the peculiar velocity of each atom is stored, defined as the velocity
|
|
|
|
|
relative to the streaming velocity. This is in contrast to
|
|
|
|
|
"fix nvt/sllod"_fix_nvt_sllod.html, which uses a lab-frame velocity, and
|
|
|
|
|
removes the contribution from the streaming velocity in order to compute
|
|
|
|
|
the temperature.
|
|
|
|
|
Temperature control is achieved with the default Nose-Hoover style
|
|
|
|
|
thermostat documented in "fix npt"_fix_nh.html. When this fix is
|
|
|
|
|
active, only the peculiar velocity of each atom is stored, defined as
|
|
|
|
|
the velocity relative to the streaming velocity. This is in contrast
|
|
|
|
|
to "fix nvt/sllod"_fix_nvt_sllod.html, which uses a lab-frame
|
|
|
|
|
velocity, and removes the contribution from the streaming velocity in
|
|
|
|
|
order to compute the temperature.
|
|
|
|
|
|
|
|
|
|
Pressure control is achieved using the default Nose-Hoover barostat documented
|
|
|
|
|
in "fix npt"_fix_nh.html. There are two ways to control the pressure using this
|
|
|
|
|
fix. The first method involves using the {ext} keyword along with the {iso} pressure
|
|
|
|
|
style. With this method, the pressure is controlled by scaling the simulation box
|
|
|
|
|
isotropically to achieve the average pressure only in the directions specified by {ext}.
|
|
|
|
|
For example, if the {ext} value is set to {xy}, the average pressure (Pxx+Pyy)/2
|
|
|
|
|
will be controlled.
|
|
|
|
|
Pressure control is achieved using the default Nose-Hoover barostat
|
|
|
|
|
documented in "fix npt"_fix_nh.html. There are two ways to control the
|
|
|
|
|
pressure using this fix. The first method involves using the {ext}
|
|
|
|
|
keyword along with the {iso} pressure style. With this method, the
|
|
|
|
|
pressure is controlled by scaling the simulation box isotropically to
|
|
|
|
|
achieve the average pressure only in the directions specified by
|
|
|
|
|
{ext}. For example, if the {ext} value is set to {xy}, the average
|
|
|
|
|
pressure (Pxx+Pyy)/2 will be controlled.
|
|
|
|
|
|
|
|
|
|
This example command will control the total hydrostatic pressure under uniaxial tension:
|
|
|
|
|
This example command will control the total hydrostatic pressure under
|
|
|
|
|
uniaxial tension:
|
|
|
|
|
|
|
|
|
|
fix f1 all npt/uef temp 0.7 0.7 0.5 iso 1 1 5 erate -0.5 -0.5 ext xyz :pre
|
|
|
|
|
|
|
|
|
|
This example command will control the average stress in compression directions, which would
|
|
|
|
|
typically correspond to free surfaces under drawing with uniaxial tension:
|
|
|
|
|
This example command will control the average stress in compression
|
|
|
|
|
directions, which would typically correspond to free surfaces under
|
|
|
|
|
drawing with uniaxial tension:
|
|
|
|
|
|
|
|
|
|
fix f2 all npt/uef temp 0.7 0.7 0.5 iso 1 1 5 erate -0.5 -0.5 ext xy :pre
|
|
|
|
|
|
|
|
|
|
The second method for pressure control involves setting the normal stresses using
|
|
|
|
|
the {x}, {y} , and/or {z} keywords. When using this method, the same pressure must be
|
|
|
|
|
specified via {Pstart} and {Pstop} for all dimensions controlled. Any choice of
|
|
|
|
|
pressure conditions that would cause LAMMPS to compute a deviatoric stress are not
|
|
|
|
|
permissible and will result in an error. Additionally, all dimensions with
|
|
|
|
|
controlled stress must have the same applied strain rate. The {ext} keyword must be
|
|
|
|
|
set to the default value ({xyz}) when using this method.
|
|
|
|
|
The second method for pressure control involves setting the normal
|
|
|
|
|
stresses using the {x}, {y} , and/or {z} keywords. When using this
|
|
|
|
|
method, the same pressure must be specified via {Pstart} and {Pstop}
|
|
|
|
|
for all dimensions controlled. Any choice of pressure conditions that
|
|
|
|
|
would cause LAMMPS to compute a deviatoric stress are not permissible
|
|
|
|
|
and will result in an error. Additionally, all dimensions with
|
|
|
|
|
controlled stress must have the same applied strain rate. The {ext}
|
|
|
|
|
keyword must be set to the default value ({xyz}) when using this
|
|
|
|
|
method.
|
|
|
|
|
|
|
|
|
|
For example, the following commands will work:
|
|
|
|
|
|
|
|
|
|
@ -127,8 +136,9 @@ fix f6 all npt/uef temp 0.7 0.7 0.5 x 1 1 5 z 2 2 5 erate 0.5 0.5 :pre
|
|
|
|
|
:line
|
|
|
|
|
|
|
|
|
|
These fix computes a temperature and pressure each timestep. To do
|
|
|
|
|
this, it creates its own computes of style "temp/uef" and "pressure/uef",
|
|
|
|
|
as if one of these two sets of commands had been issued:
|
|
|
|
|
this, it creates its own computes of style "temp/uef" and
|
|
|
|
|
"pressure/uef", as if one of these two sets of commands had been
|
|
|
|
|
issued:
|
|
|
|
|
|
|
|
|
|
compute fix-ID_temp group-ID temp/uef
|
|
|
|
|
compute fix-ID_press group-ID pressure/uef fix-ID_temp :pre
|
|
|
|
|
@ -137,61 +147,62 @@ compute fix-ID_temp all temp/uef
|
|
|
|
|
compute fix-ID_press all pressure/uef fix-ID_temp :pre
|
|
|
|
|
|
|
|
|
|
See the "compute temp/uef"_compute_temp_uef.html and "compute
|
|
|
|
|
pressure/uef"_compute_pressure_uef.html commands for details. Note that the
|
|
|
|
|
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
|
|
|
|
|
+ underscore + "press".
|
|
|
|
|
pressure/uef"_compute_pressure_uef.html commands for details. Note
|
|
|
|
|
that the IDs of the new computes are the fix-ID + underscore + "temp"
|
|
|
|
|
or fix_ID + underscore + "press".
|
|
|
|
|
|
|
|
|
|
[Restart, fix_modify, output, run start/stop, minimize info:]
|
|
|
|
|
|
|
|
|
|
The fix writes the state of all the thermostat and barostat
|
|
|
|
|
variables, as well as the cumulative strain applied, to
|
|
|
|
|
"binary restart files"_restart.html. See the
|
|
|
|
|
"read_restart"_read_restart.html command for info on how to re-specify
|
|
|
|
|
a fix in an input script that reads a restart file, so that the
|
|
|
|
|
operation of the fix continues in an uninterrupted fashion.
|
|
|
|
|
The fix writes the state of all the thermostat and barostat variables,
|
|
|
|
|
as well as the cumulative strain applied, to "binary restart
|
|
|
|
|
files"_restart.html. See the "read_restart"_read_restart.html command
|
|
|
|
|
for info on how to re-specify a fix in an input script that reads a
|
|
|
|
|
restart file, so that the operation of the fix continues in an
|
|
|
|
|
uninterrupted fashion.
|
|
|
|
|
|
|
|
|
|
NOTE: It is not necessary to set the {strain} keyword when resuming
|
|
|
|
|
a run from a restart file. Only for resuming from data files,
|
|
|
|
|
which do not contain the cumulative applied strain, will
|
|
|
|
|
this keyword be necessary.
|
|
|
|
|
NOTE: It is not necessary to set the {strain} keyword when resuming a
|
|
|
|
|
run from a restart file. Only for resuming from data files, which do
|
|
|
|
|
not contain the cumulative applied strain, will this keyword be
|
|
|
|
|
necessary.
|
|
|
|
|
|
|
|
|
|
This fix can be used with the "fix_modify"_fix_modify.html
|
|
|
|
|
{temp} and {press} options. The temperature and pressure computes
|
|
|
|
|
used must be of type {temp/uef} and {pressure/uef}.
|
|
|
|
|
This fix can be used with the "fix_modify"_fix_modify.html {temp} and
|
|
|
|
|
{press} options. The temperature and pressure computes used must be of
|
|
|
|
|
type {temp/uef} and {pressure/uef}.
|
|
|
|
|
|
|
|
|
|
This fix computes the same global scalar and vecor quantities
|
|
|
|
|
as "fix npt"_fix_nh.html.
|
|
|
|
|
This fix computes the same global scalar and vecor quantities as "fix
|
|
|
|
|
npt"_fix_nh.html.
|
|
|
|
|
|
|
|
|
|
The fix is not invoked during "energy
|
|
|
|
|
minimization"_minimize.html.
|
|
|
|
|
The fix is not invoked during "energy minimization"_minimize.html.
|
|
|
|
|
|
|
|
|
|
[Restrictions:]
|
|
|
|
|
|
|
|
|
|
This fix is part of the USER-UEF package. It is only enabled if
|
|
|
|
|
LAMMPS was built with that package. See the
|
|
|
|
|
"Making LAMMPS"_Section_start.html#start_3 section for more info.
|
|
|
|
|
This fix is part of the USER-UEF package. It is only enabled if LAMMPS
|
|
|
|
|
was built with that package. See the "Making
|
|
|
|
|
LAMMPS"_Section_start.html#start_3 section for more info.
|
|
|
|
|
|
|
|
|
|
Due to requirements of the boundary conditions, when the {strain} keyword
|
|
|
|
|
is set to zero (or unset), the initial simulation box must be cubic and
|
|
|
|
|
have style triclinic. If the box is initially of type ortho, use
|
|
|
|
|
"change_box"_change_box.html before invoking the fix.
|
|
|
|
|
Due to requirements of the boundary conditions, when the {strain}
|
|
|
|
|
keyword is set to zero (or unset), the initial simulation box must be
|
|
|
|
|
cubic and have style triclinic. If the box is initially of type ortho,
|
|
|
|
|
use "change_box"_change_box.html before invoking the fix.
|
|
|
|
|
|
|
|
|
|
NOTE: When resuming from restart files, you may need to use "box tilt large"_box.html
|
|
|
|
|
since lammps has internal criteria from lattice reduction that are not
|
|
|
|
|
the same as the criteria in the numerical lattice reduction algorithm.
|
|
|
|
|
NOTE: When resuming from restart files, you may need to use "box tilt
|
|
|
|
|
large"_box.html since lammps has internal criteria from lattice
|
|
|
|
|
reduction that are not the same as the criteria in the numerical
|
|
|
|
|
lattice reduction algorithm.
|
|
|
|
|
|
|
|
|
|
[Related commands:]
|
|
|
|
|
"fix nvt"_fix_nh.html,
|
|
|
|
|
"fix nvt/sllod"_fix_nvt_sllod.html,
|
|
|
|
|
"compute temp/uef"_compute_temp_uef.html,
|
|
|
|
|
"compute pressure/uef"_compute_pressure_uef.html,
|
|
|
|
|
"dump cfg/uef"_dump_cfg_uef.html
|
|
|
|
|
|
|
|
|
|
"fix nvt"_fix_nh.html, "fix nvt/sllod"_fix_nvt_sllod.html, "compute
|
|
|
|
|
temp/uef"_compute_temp_uef.html, "compute
|
|
|
|
|
pressure/uef"_compute_pressure_uef.html, "dump
|
|
|
|
|
cfg/uef"_dump_cfg_uef.html
|
|
|
|
|
|
|
|
|
|
[Default:]
|
|
|
|
|
|
|
|
|
|
The default keyword values specific to this fix are exy = xyz, strain = 0 0.
|
|
|
|
|
The remaining defaults are the same as for {fix npt}_fix_nh.html except tchain = 1.
|
|
|
|
|
The reason for this change is given in "fix nvt/sllod"_fix_nvt_sllod.html.
|
|
|
|
|
The default keyword values specific to this fix are exy = xyz, strain
|
|
|
|
|
= 0 0. The remaining defaults are the same as for {fix
|
|
|
|
|
npt}_fix_nh.html except tchain = 1. The reason for this change is
|
|
|
|
|
given in "fix nvt/sllod"_fix_nvt_sllod.html.
|
|
|
|
|
|
|
|
|
|
:line
|
|
|
|
|
|
|
|
|
|
@ -208,4 +219,5 @@ The reason for this change is given in "fix nvt/sllod"_fix_nvt_sllod.html.
|
|
|
|
|
[(Evans and Morriss)] Evans and Morriss, Phys Rev A, 30, 1528 (1984).
|
|
|
|
|
|
|
|
|
|
:link(Nicholson)
|
|
|
|
|
[(Nicholson and Rutledge)] Nicholson and Rutledge, J Chem Phys, 145, 244903 (2016).
|
|
|
|
|
[(Nicholson and Rutledge)] Nicholson and Rutledge, J Chem Phys, 145,
|
|
|
|
|
244903 (2016).
|
|
|
|
|
|