lammps/doc/txt/fix_nh_uef.txt

229 lines
9.5 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,Commands_all.html)
:line
fix nvt/uef command :h3
fix npt/uef command :h3
[Syntax:]
fix ID group-ID style_name erate edot_x edot_y temp Tstart Tstop Tdamp keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
style_name = {nvt/uef} or {npt/uef} :l
{Tstart}, {Tstop}, and {Tdamp} are documented in the "fix npt"_fix_nh.html command :l
{edot_x} and {edot_y} are the strain rates in the x and y directions (1/(time units)) :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
sets the external dimensions used to calculate the scalar pressure
{strain} values = e_x e_y = initial strain
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:]
fix uniax_nvt all nvt/uef temp 400 400 100 erate 0.00001 -0.000005
fix biax_nvt all nvt/uef temp 400 400 100 erate 0.000005 0.000005
fix uniax_npt all npt/uef temp 400 400 300 iso 1 1 3000 erate 0.00001 -0.000005 ext yz
fix biax_npt all npt/uef temp 400 400 100 erate -0.00001 0.000005 x 1 1 3000 :pre
[Description:]
This fix can be used to simulate non-equilibrium molecular dynamics
(NEMD) under diagonal flow fields, including uniaxial and bi-axial
flow. Simulations under continuous 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.
Note that NEMD simulations of a continuously strained system can be
performed using the "fix deform"_fix_deform.html, "fix
nvt/sllod"_fix_nvt_sllod.html, and "compute
temp/deform"_compute_temp_deform.html commands.
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,
"fix momentum"_fix_momentum.html should be used to regularly reset the
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.
: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.
: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.
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:
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:
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.
For example, the following commands will work:
fix f3 all npt/uef temp 0.7 0.7 0.5 x 1 1 5 y 1 1 5 erate -0.5 -0.5
fix f4 all npt/uef temp 0.7 0.7 0.5 z 1 1 5 erate 0.5 0.5 :pre
The following commands will not work:
fix f5 all npt/uef temp 0.7 0.7 0.5 x 1 1 5 z 1 1 5 erate -0.5 -0.5
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:
compute fix-ID_temp group-ID temp/uef
compute fix-ID_press group-ID pressure/uef fix-ID_temp :pre
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".
[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.
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 computes the same global scalar and vector quantities as "fix
npt"_fix_nh.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 "Build
package"_Build_package.html doc page 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.
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
[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.
:line
:link(Dobson)
[(Dobson)] Dobson, J Chem Phys, 141, 184103 (2014).
:link(Hunt)
[(Hunt)] Hunt, Mol Simul, 42, 347 (2016).
:link(Semaev)
[(Semaev)] Semaev, Cryptography and Lattices, 181 (2001).
:link(Sllod)
[(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).