Merge branch 'master' into nparticles
This commit is contained in:
@ -46,7 +46,8 @@ An alphabetic list of all general LAMMPS commands.
|
||||
* :doc:`dimension <dimension>`
|
||||
* :doc:`displace_atoms <displace_atoms>`
|
||||
* :doc:`dump <dump>`
|
||||
* :doc:`dump adios <dump_adios>`
|
||||
* :doc:`dump atom/adios <dump_adios>`
|
||||
* :doc:`dump custom/adios <dump_adios>`
|
||||
* :doc:`dump image <dump_image>`
|
||||
* :doc:`dump movie <dump_image>`
|
||||
* :doc:`dump netcdf <dump_netcdf>`
|
||||
@ -131,11 +132,10 @@ An alphabetic list of all general LAMMPS commands.
|
||||
* :doc:`units <units>`
|
||||
* :doc:`variable <variable>`
|
||||
* :doc:`velocity <velocity>`
|
||||
* :doc:`write_coeff <write_coeff>`
|
||||
* :doc:`write_data <write_data>`
|
||||
* :doc:`write_dump <write_dump>`
|
||||
* :doc:`write_restart <write_restart>`
|
||||
*
|
||||
* :doc:`write\_coeff <write_coeff>`
|
||||
* :doc:`write\_data <write_data>`
|
||||
* :doc:`write\_dump <write_dump>`
|
||||
* :doc:`write\_restart <write_restart>`
|
||||
*
|
||||
*
|
||||
*
|
||||
|
||||
@ -115,6 +115,7 @@ OPT.
|
||||
* :doc:`npt (iko) <fix_nh>`
|
||||
* :doc:`npt/asphere (o) <fix_npt_asphere>`
|
||||
* :doc:`npt/body <fix_npt_body>`
|
||||
* :doc:`npt/cauchy <fix_npt_cauchy>`
|
||||
* :doc:`npt/eff <fix_nh_eff>`
|
||||
* :doc:`npt/sphere (o) <fix_npt_sphere>`
|
||||
* :doc:`npt/uef <fix_nh_uef>`
|
||||
@ -155,6 +156,7 @@ OPT.
|
||||
* :doc:`precession/spin <fix_precession_spin>`
|
||||
* :doc:`press/berendsen <fix_press_berendsen>`
|
||||
* :doc:`print <fix_print>`
|
||||
* :doc:`propel/self <fix_propel_self>`
|
||||
* :doc:`property/atom (k) <fix_property_atom>`
|
||||
* :doc:`python/invoke <fix_python_invoke>`
|
||||
* :doc:`python/move <fix_python_move>`
|
||||
@ -238,3 +240,7 @@ OPT.
|
||||
* :doc:`wall/region <fix_wall_region>`
|
||||
* :doc:`wall/region/ees <fix_wall_ees>`
|
||||
* :doc:`wall/srd <fix_wall_srd>`
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
|
||||
@ -174,6 +174,7 @@ OPT.
|
||||
* :doc:`meam/c <pair_meamc>`
|
||||
* :doc:`meam/spline (o) <pair_meam_spline>`
|
||||
* :doc:`meam/sw/spline <pair_meam_sw_spline>`
|
||||
* :doc:`mesocnt <pair_mesocnt>`
|
||||
* :doc:`mgpt <pair_mgpt>`
|
||||
* :doc:`mie/cut (g) <pair_mie>`
|
||||
* :doc:`mm3/switch3/coulgauss/long <pair_mm3_switch3_coulgauss_long>`
|
||||
@ -257,4 +258,3 @@ OPT.
|
||||
* :doc:`yukawa/colloid (go) <pair_yukawa_colloid>`
|
||||
* :doc:`zbl (gko) <pair_zbl>`
|
||||
*
|
||||
*
|
||||
|
||||
@ -20,6 +20,31 @@ and C and Python codes which show how a driver code can link to LAMMPS
|
||||
as a library, run LAMMPS on a subset of processors, grab data from
|
||||
LAMMPS, change it, and put it back into LAMMPS.
|
||||
|
||||
Thread-safety
|
||||
-------------
|
||||
|
||||
LAMMPS has not initially been conceived as a thread-safe program, but
|
||||
over the years changes have been applied to replace operations that
|
||||
collide with creating multiple LAMMPS instances from multiple-threads
|
||||
of the same process with thread-safe alternatives. This primarily
|
||||
applies to the core LAMMPS code and less so on add-on packages, especially
|
||||
when those packages require additional code in the *lib* folder,
|
||||
interface LAMMPS to Fortran libraries, or the code uses static variables
|
||||
(like the USER-COLVARS package.
|
||||
|
||||
Another major issue to deal with is to correctly handle MPI. Creating
|
||||
a LAMMPS instance requires passing an MPI communicator, or it assumes
|
||||
the MPI\_COMM\_WORLD communicator, which spans all MPI processor ranks.
|
||||
When creating multiple LAMMPS object instances from different threads,
|
||||
this communicator has to be different for each thread or else collisions
|
||||
can happen, or it has to be guaranteed, that only one thread at a time
|
||||
is active. MPI communicators, however, are not a problem, if LAMMPS is
|
||||
compiled with the MPI STUBS library, which implies that there is no MPI
|
||||
communication and only 1 MPI rank.
|
||||
|
||||
Provided APIs
|
||||
-------------
|
||||
|
||||
The file src/library.cpp contains the following functions for creating
|
||||
and destroying an instance of LAMMPS and sending it commands to
|
||||
execute. See the documentation in the src/library.cpp file for
|
||||
|
||||
@ -1096,8 +1096,9 @@ USER-ADIOS package
|
||||
**Contents:**
|
||||
|
||||
ADIOS is a high-performance I/O library. This package implements the
|
||||
dump "atom/adios" and dump "custom/adios" commands to write data using
|
||||
the ADIOS library.
|
||||
:doc:`dump atom/adios <dump_adios>`, :doc:`dump custom/adios <dump_adios>` and
|
||||
:doc:`read_dump ... format adios <read_dump>`
|
||||
commands to write and read data using the ADIOS library.
|
||||
|
||||
**Authors:** Norbert Podhorszki (ORNL) from the ADIOS developer team.
|
||||
|
||||
@ -1111,6 +1112,10 @@ This package has :ref:`specific installation instructions <user-adios>` on the :
|
||||
* src/USER-ADIOS/README
|
||||
* examples/USER/adios
|
||||
* https://github.com/ornladios/ADIOS2
|
||||
* :doc:`dump atom/adios <dump_adios>`
|
||||
* :doc:`dump custom/adios <dump_adios>`
|
||||
* :doc:`read_dump <read_dump>`
|
||||
|
||||
|
||||
|
||||
----------
|
||||
|
||||
@ -21,8 +21,11 @@ dump command
|
||||
:doc:`dump movie <dump_image>` command
|
||||
======================================
|
||||
|
||||
:doc:`dump adios <dump_adios>` command
|
||||
======================================
|
||||
:doc:`dump atom/adios <dump_adios>` command
|
||||
===========================================
|
||||
|
||||
:doc:`dump custom/adios <dump_adios>` command
|
||||
=============================================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
@ -45,12 +48,12 @@ Syntax
|
||||
*atom* args = none
|
||||
*atom/gz* args = none
|
||||
*atom/mpiio* args = none
|
||||
*atom/adios* args = none, discussed on :doc:`dump adios <dump_adios>` doc page
|
||||
*atom/adios* args = none, discussed on :doc:`dump atom/adios <dump_adios>` doc page
|
||||
*cfg* args = same as *custom* args, see below
|
||||
*cfg/gz* args = same as *custom* args, see below
|
||||
*cfg/mpiio* args = same as *custom* args, see below
|
||||
*custom*\ , *custom/gz*\ , *custom/mpiio* args = see below
|
||||
*custom/adios* args = same as *custom* args, discussed on :doc:`dump adios <dump_adios>` doc page
|
||||
*custom/adios* args = same as *custom* args, discussed on :doc:`dump custom/adios <dump_adios>` doc page
|
||||
*dcd* args = none
|
||||
*h5md* args = discussed on :doc:`dump h5md <dump_h5md>` doc page
|
||||
*image* args = discussed on :doc:`dump image <dump_image>` doc page
|
||||
@ -713,7 +716,8 @@ LAMMPS was built with that package. See the :doc:`Build package <Build_package>
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`dump adios <dump_adios>` :doc:`dump h5md <dump_h5md>`, :doc:`dump image <dump_image>`,
|
||||
:doc:`dump atom/adios <dump_adios>`, :doc:`dump custom/adios <dump_adios>`,
|
||||
:doc:`dump h5md <dump_h5md>`, :doc:`dump image <dump_image>`,
|
||||
:doc:`dump molfile <dump_molfile>`, :doc:`dump\_modify <dump_modify>`,
|
||||
:doc:`undump <undump>`
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
.. index:: dump atoms/adios
|
||||
.. index:: dump atom/adios
|
||||
.. index:: dump custom/adios
|
||||
|
||||
dump atoms/adios command
|
||||
dump atom/adios command
|
||||
=========================
|
||||
|
||||
dump custom/adios command
|
||||
@ -12,7 +13,7 @@ Syntax
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
dump ID group-ID atoms/adios N file.bp
|
||||
dump ID group-ID atom/adios N file.bp
|
||||
|
||||
dump ID group-ID custom/adios N file.bp args
|
||||
|
||||
|
||||
@ -267,6 +267,7 @@ accelerated styles exist.
|
||||
* :doc:`npt <fix_nh>` - constant NPT time integration via Nose/Hoover
|
||||
* :doc:`npt/asphere <fix_npt_asphere>` - NPT for aspherical particles
|
||||
* :doc:`npt/body <fix_npt_body>` - NPT for body particles
|
||||
* :doc:`npt/cauchy <fix_npt_cauchy>` - NPT with Cauchy stress
|
||||
* :doc:`npt/eff <fix_nh_eff>` - NPT for nuclei and electrons in the electron force field model
|
||||
* :doc:`npt/sphere <fix_npt_sphere>` - NPT for spherical particles
|
||||
* :doc:`npt/uef <fix_nh_uef>` - NPT style time integration with diagonal flow
|
||||
@ -307,6 +308,7 @@ accelerated styles exist.
|
||||
* :doc:`precession/spin <fix_precession_spin>` -
|
||||
* :doc:`press/berendsen <fix_press_berendsen>` - pressure control by Berendsen barostat
|
||||
* :doc:`print <fix_print>` - print text and variables during a simulation
|
||||
* :doc:`propel/self <fix_propel_self>` - model self-propelled particles
|
||||
* :doc:`property/atom <fix_property_atom>` - add customized per-atom values
|
||||
* :doc:`python/invoke <fix_python_invoke>` - call a Python function during a simulation
|
||||
* :doc:`python/move <fix_python_move>` - call a Python function during a simulation run
|
||||
|
||||
@ -132,7 +132,7 @@ integrators derived by Tuckerman et al in :ref:`(Tuckerman) <nh-Tuckerman>`.
|
||||
----------
|
||||
|
||||
|
||||
The thermostat parameters for fix styles *nvt* and *npt* is specified
|
||||
The thermostat parameters for fix styles *nvt* and *npt* are specified
|
||||
using the *temp* keyword. Other thermostat-related keywords are
|
||||
*tchain*\ , *tloop* and *drag*\ , which are discussed below.
|
||||
|
||||
|
||||
679
doc/src/fix_npt_cauchy.rst
Normal file
679
doc/src/fix_npt_cauchy.rst
Normal file
@ -0,0 +1,679 @@
|
||||
.. index:: fix npt/cauchy
|
||||
|
||||
fix npt/cauchy command
|
||||
======================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
fix ID group-ID style_name keyword value ...
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* style\_name = *npt/cauchy*
|
||||
* one or more keyword/value pairs may be appended
|
||||
* keyword = *temp* or *iso* or *aniso* or *tri* or *x* or *y* or *z* or *xy* or *yz* or *xz* or *couple* or *tchain* or *pchain* or *mtk* or *tloop* or *ploop* or *nreset* or *drag* or *dilate* or *scalexy* or *scaleyz* or *scalexz* or *flip* or *fixedpoint* or *update*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*temp* values = Tstart Tstop Tdamp
|
||||
Tstart,Tstop = external temperature at start/end of run
|
||||
Tdamp = temperature damping parameter (time units)
|
||||
*iso* or *aniso* or *tri* values = Pstart Pstop Pdamp
|
||||
Pstart,Pstop = scalar external pressure at start/end of run (pressure units)
|
||||
Pdamp = pressure damping parameter (time units)
|
||||
*x* or *y* or *z* or *xy* or *yz* or *xz* values = Pstart Pstop Pdamp
|
||||
Pstart,Pstop = external stress tensor component at start/end of run (pressure units)
|
||||
Pdamp = stress damping parameter (time units)
|
||||
*couple* = *none* or *xyz* or *xy* or *yz* or *xz*
|
||||
*tchain* value = N
|
||||
N = length of thermostat chain (1 = single thermostat)
|
||||
*pchain* values = N
|
||||
N length of thermostat chain on barostat (0 = no thermostat)
|
||||
*mtk* value = *yes* or *no* = add in MTK adjustment term or not
|
||||
*tloop* value = M
|
||||
M = number of sub-cycles to perform on thermostat
|
||||
*ploop* value = M
|
||||
M = number of sub-cycles to perform on barostat thermostat
|
||||
*nreset* value = reset reference cell every this many timesteps
|
||||
*drag* value = Df
|
||||
Df = drag factor added to barostat/thermostat (0.0 = no drag)
|
||||
*dilate* value = dilate-group-ID
|
||||
dilate-group-ID = only dilate atoms in this group due to barostat volume changes
|
||||
*scalexy* value = *yes* or *no* = scale xy with ly
|
||||
*scaleyz* value = *yes* or *no* = scale yz with lz
|
||||
*scalexz* value = *yes* or *no* = scale xz with lz
|
||||
*flip* value = *yes* or *no* = allow or disallow box flips when it becomes highly skewed
|
||||
*cauchystat* cauchystat values = alpha continue
|
||||
alpha = strength of Cauchy stress control parameter
|
||||
continue = *yes* or *no* = whether of not to continue from a previous run
|
||||
*fixedpoint* values = x y z
|
||||
x,y,z = perform barostat dilation/contraction around this point (distance units)
|
||||
|
||||
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
fix 1 water npt/cauchy temp 300.0 300.0 100.0 iso 0.0 0.0 1000.0
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
This command performs time integration on Nose-Hoover style
|
||||
non-Hamiltonian equations of motion which are designed to generate
|
||||
positions and velocities sampled from the isothermal-isobaric (npt)
|
||||
ensembles. This updates the position and velocity for atoms in the
|
||||
group each timestep and the box dimensions.
|
||||
|
||||
The thermostatting and barostatting is achieved by adding some dynamic
|
||||
variables which are coupled to the particle velocities
|
||||
(thermostatting) and simulation domain dimensions (barostatting). In
|
||||
addition to basic thermostatting and barostatting, this fix can
|
||||
also create a chain of thermostats coupled to the particle thermostat,
|
||||
and another chain of thermostats coupled to the barostat
|
||||
variables. The barostat can be coupled to the overall box volume, or
|
||||
to individual dimensions, including the *xy*\ , *xz* and *yz* tilt
|
||||
dimensions. The external pressure of the barostat can be specified as
|
||||
either a scalar pressure (isobaric ensemble) or as components of a
|
||||
symmetric stress tensor (constant stress ensemble). When used
|
||||
correctly, the time-averaged temperature and stress tensor of the
|
||||
particles will match the target values specified by Tstart/Tstop and
|
||||
Pstart/Pstop.
|
||||
|
||||
The equations of motion used are those of Shinoda et al in
|
||||
:ref:`(Shinoda) <nc-Shinoda>`, which combine the hydrostatic equations of
|
||||
Martyna, Tobias and Klein in :ref:`(Martyna) <nc-Martyna>` with the strain
|
||||
energy proposed by Parrinello and Rahman in
|
||||
:ref:`(Parrinello) <nc-Parrinello>`. The time integration schemes closely
|
||||
follow the time-reversible measure-preserving Verlet and rRESPA
|
||||
integrators derived by Tuckerman et al in :ref:`(Tuckerman) <nc-Tuckerman>`.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
The thermostat parameters are specified using the *temp* keyword.
|
||||
Other thermostat-related keywords are *tchain*\ , *tloop* and *drag*\ ,
|
||||
which are discussed below.
|
||||
|
||||
The thermostat is applied to only the translational degrees of freedom
|
||||
for the particles. The translational degrees of freedom can also have
|
||||
a bias velocity removed before thermostatting takes place; see the
|
||||
description below. The desired temperature at each timestep is a
|
||||
ramped value during the run from *Tstart* to *Tstop*\ . The *Tdamp*
|
||||
parameter is specified in time units and determines how rapidly the
|
||||
temperature is relaxed. For example, a value of 10.0 means to relax
|
||||
the temperature in a timespan of (roughly) 10 time units (e.g. tau or
|
||||
fmsec or psec - see the :doc:`units <units>` command). The atoms in the
|
||||
fix group are the only ones whose velocities and positions are updated
|
||||
by the velocity/position update portion of the integration.
|
||||
|
||||
.. note::
|
||||
|
||||
A Nose-Hoover thermostat will not work well for arbitrary values
|
||||
of *Tdamp*\ . If *Tdamp* is too small, the temperature can fluctuate
|
||||
wildly; if it is too large, the temperature will take a very long time
|
||||
to equilibrate. A good choice for many models is a *Tdamp* of around
|
||||
100 timesteps. Note that this is NOT the same as 100 time units for
|
||||
most :doc:`units <units>` settings.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
The barostat parameters are specified using one or more of the *iso*\ ,
|
||||
*aniso*\ , *tri*\ , *x*\ , *y*\ , *z*\ , *xy*\ , *xz*\ , *yz*\ , and *couple* keywords.
|
||||
These keywords give you the ability to specify all 6 components of an
|
||||
external stress tensor, and to couple various of these components
|
||||
together so that the dimensions they represent are varied together
|
||||
during a constant-pressure simulation.
|
||||
|
||||
Other barostat-related keywords are *pchain*\ , *mtk*\ , *ploop*\ ,
|
||||
*nreset*\ , *drag*\ , and *dilate*\ , which are discussed below.
|
||||
|
||||
Orthogonal simulation boxes have 3 adjustable dimensions (x,y,z).
|
||||
Triclinic (non-orthogonal) simulation boxes have 6 adjustable
|
||||
dimensions (x,y,z,xy,xz,yz). The :doc:`create\_box <create_box>`, :doc:`read data <read_data>`, and :doc:`read\_restart <read_restart>` commands
|
||||
specify whether the simulation box is orthogonal or non-orthogonal
|
||||
(triclinic) and explain the meaning of the xy,xz,yz tilt factors.
|
||||
|
||||
The target pressures for each of the 6 components of the stress tensor
|
||||
can be specified independently via the *x*\ , *y*\ , *z*\ , *xy*\ , *xz*\ , *yz*
|
||||
keywords, which correspond to the 6 simulation box dimensions. For
|
||||
each component, the external pressure or tensor component at each
|
||||
timestep is a ramped value during the run from *Pstart* to *Pstop*\ .
|
||||
If a target pressure is specified for a component, then the
|
||||
corresponding box dimension will change during a simulation. For
|
||||
example, if the *y* keyword is used, the y-box length will change. If
|
||||
the *xy* keyword is used, the xy tilt factor will change. A box
|
||||
dimension will not change if that component is not specified, although
|
||||
you have the option to change that dimension via the :doc:`fix deform <fix_deform>` command.
|
||||
|
||||
Note that in order to use the *xy*\ , *xz*\ , or *yz* keywords, the
|
||||
simulation box must be triclinic, even if its initial tilt factors are
|
||||
0.0.
|
||||
|
||||
For all barostat keywords, the *Pdamp* parameter operates like the
|
||||
*Tdamp* parameter, determining the time scale on which pressure is
|
||||
relaxed. For example, a value of 10.0 means to relax the pressure in
|
||||
a timespan of (roughly) 10 time units (e.g. tau or fmsec or psec - see
|
||||
the :doc:`units <units>` command).
|
||||
|
||||
.. note::
|
||||
|
||||
A Nose-Hoover barostat will not work well for arbitrary values
|
||||
of *Pdamp*\ . If *Pdamp* is too small, the pressure and volume can
|
||||
fluctuate wildly; if it is too large, the pressure will take a very
|
||||
long time to equilibrate. A good choice for many models is a *Pdamp*
|
||||
of around 1000 timesteps. However, note that *Pdamp* is specified in
|
||||
time units, and that timesteps are NOT the same as time units for most
|
||||
:doc:`units <units>` settings.
|
||||
|
||||
Regardless of what atoms are in the fix group (the only atoms which
|
||||
are time integrated), a global pressure or stress tensor is computed
|
||||
for all atoms. Similarly, when the size of the simulation box is
|
||||
changed, all atoms are re-scaled to new positions, unless the keyword
|
||||
*dilate* is specified with a *dilate-group-ID* for a group that
|
||||
represents a subset of the atoms. This can be useful, for example, to
|
||||
leave the coordinates of atoms in a solid substrate unchanged and
|
||||
controlling the pressure of a surrounding fluid. This option should
|
||||
be used with care, since it can be unphysical to dilate some atoms and
|
||||
not others, because it can introduce large, instantaneous
|
||||
displacements between a pair of atoms (one dilated, one not) that are
|
||||
far from the dilation origin. Also note that for atoms not in the fix
|
||||
group, a separate time integration fix like :doc:`fix nve <fix_nve>` or
|
||||
:doc:`fix nvt <fix_nh>` can be used on them, independent of whether they
|
||||
are dilated or not.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
The *couple* keyword allows two or three of the diagonal components of
|
||||
the pressure tensor to be "coupled" together. The value specified
|
||||
with the keyword determines which are coupled. For example, *xz*
|
||||
means the *Pxx* and *Pzz* components of the stress tensor are coupled.
|
||||
*Xyz* means all 3 diagonal components are coupled. Coupling means two
|
||||
things: the instantaneous stress will be computed as an average of the
|
||||
corresponding diagonal components, and the coupled box dimensions will
|
||||
be changed together in lockstep, meaning coupled dimensions will be
|
||||
dilated or contracted by the same percentage every timestep. The
|
||||
*Pstart*\ , *Pstop*\ , *Pdamp* parameters for any coupled dimensions must
|
||||
be identical. *Couple xyz* can be used for a 2d simulation; the *z*
|
||||
dimension is simply ignored.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
The *iso*\ , *aniso*\ , and *tri* keywords are simply shortcuts that are
|
||||
equivalent to specifying several other keywords together.
|
||||
|
||||
The keyword *iso* means couple all 3 diagonal components together when
|
||||
pressure is computed (hydrostatic pressure), and dilate/contract the
|
||||
dimensions together. Using "iso Pstart Pstop Pdamp" is the same as
|
||||
specifying these 4 keywords:
|
||||
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
x Pstart Pstop Pdamp
|
||||
y Pstart Pstop Pdamp
|
||||
z Pstart Pstop Pdamp
|
||||
couple xyz
|
||||
|
||||
The keyword *aniso* means *x*\ , *y*\ , and *z* dimensions are controlled
|
||||
independently using the *Pxx*\ , *Pyy*\ , and *Pzz* components of the
|
||||
stress tensor as the driving forces, and the specified scalar external
|
||||
pressure. Using "aniso Pstart Pstop Pdamp" is the same as specifying
|
||||
these 4 keywords:
|
||||
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
x Pstart Pstop Pdamp
|
||||
y Pstart Pstop Pdamp
|
||||
z Pstart Pstop Pdamp
|
||||
couple none
|
||||
|
||||
The keyword *tri* means *x*\ , *y*\ , *z*\ , *xy*\ , *xz*\ , and *yz* dimensions
|
||||
are controlled independently using their individual stress components
|
||||
as the driving forces, and the specified scalar pressure as the
|
||||
external normal stress. Using "tri Pstart Pstop Pdamp" is the same as
|
||||
specifying these 7 keywords:
|
||||
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
x Pstart Pstop Pdamp
|
||||
y Pstart Pstop Pdamp
|
||||
z Pstart Pstop Pdamp
|
||||
xy 0.0 0.0 Pdamp
|
||||
yz 0.0 0.0 Pdamp
|
||||
xz 0.0 0.0 Pdamp
|
||||
couple none
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
In some cases (e.g. for solids) the pressure (volume) and/or
|
||||
temperature of the system can oscillate undesirably when a Nose/Hoover
|
||||
barostat and thermostat is applied. The optional *drag* keyword will
|
||||
damp these oscillations, although it alters the Nose/Hoover equations.
|
||||
A value of 0.0 (no drag) leaves the Nose/Hoover formalism unchanged.
|
||||
A non-zero value adds a drag term; the larger the value specified, the
|
||||
greater the damping effect. Performing a short run and monitoring the
|
||||
pressure and temperature is the best way to determine if the drag term
|
||||
is working. Typically a value between 0.2 to 2.0 is sufficient to
|
||||
damp oscillations after a few periods. Note that use of the drag
|
||||
keyword will interfere with energy conservation and will also change
|
||||
the distribution of positions and velocities so that they do not
|
||||
correspond to the nominal NVT, NPT, or NPH ensembles.
|
||||
|
||||
An alternative way to control initial oscillations is to use chain
|
||||
thermostats. The keyword *tchain* determines the number of thermostats
|
||||
in the particle thermostat. A value of 1 corresponds to the original
|
||||
Nose-Hoover thermostat. The keyword *pchain* specifies the number of
|
||||
thermostats in the chain thermostatting the barostat degrees of
|
||||
freedom. A value of 0 corresponds to no thermostatting of the
|
||||
barostat variables.
|
||||
|
||||
The *mtk* keyword controls whether or not the correction terms due to
|
||||
Martyna, Tuckerman, and Klein are included in the equations of motion
|
||||
:ref:`(Martyna) <nc-Martyna>`. Specifying *no* reproduces the original
|
||||
Hoover barostat, whose volume probability distribution function
|
||||
differs from the true NPT and NPH ensembles by a factor of 1/V. Hence
|
||||
using *yes* is more correct, but in many cases the difference is
|
||||
negligible.
|
||||
|
||||
The keyword *tloop* can be used to improve the accuracy of integration
|
||||
scheme at little extra cost. The initial and final updates of the
|
||||
thermostat variables are broken up into *tloop* sub-steps, each of
|
||||
length *dt*\ /\ *tloop*\ . This corresponds to using a first-order
|
||||
Suzuki-Yoshida scheme :ref:`(Tuckerman) <nc-Tuckerman>`. The keyword *ploop*
|
||||
does the same thing for the barostat thermostat.
|
||||
|
||||
The keyword *nreset* controls how often the reference dimensions used
|
||||
to define the strain energy are reset. If this keyword is not used,
|
||||
or is given a value of zero, then the reference dimensions are set to
|
||||
those of the initial simulation domain and are never changed. If the
|
||||
simulation domain changes significantly during the simulation, then
|
||||
the final average pressure tensor will differ significantly from the
|
||||
specified values of the external stress tensor. A value of *nstep*
|
||||
means that every *nstep* timesteps, the reference dimensions are set
|
||||
to those of the current simulation domain.
|
||||
|
||||
The *scaleyz*\ , *scalexz*\ , and *scalexy* keywords control whether or
|
||||
not the corresponding tilt factors are scaled with the associated box
|
||||
dimensions when barostatting triclinic periodic cells. The default
|
||||
values *yes* will turn on scaling, which corresponds to adjusting the
|
||||
linear dimensions of the cell while preserving its shape. Choosing
|
||||
*no* ensures that the tilt factors are not scaled with the box
|
||||
dimensions. See below for restrictions and default values in different
|
||||
situations. In older versions of LAMMPS, scaling of tilt factors was
|
||||
not performed. The old behavior can be recovered by setting all three
|
||||
scale keywords to *no*\ .
|
||||
|
||||
The *flip* keyword allows the tilt factors for a triclinic box to
|
||||
exceed half the distance of the parallel box length, as discussed
|
||||
below. If the *flip* value is set to *yes*\ , the bound is enforced by
|
||||
flipping the box when it is exceeded. If the *flip* value is set to
|
||||
*no*\ , the tilt will continue to change without flipping. Note that if
|
||||
applied stress induces large deformations (e.g. in a liquid), this
|
||||
means the box shape can tilt dramatically and LAMMPS will run less
|
||||
efficiently, due to the large volume of communication needed to
|
||||
acquire ghost atoms around a processor's irregular-shaped sub-domain.
|
||||
For extreme values of tilt, LAMMPS may also lose atoms and generate an
|
||||
error.
|
||||
|
||||
The *fixedpoint* keyword specifies the fixed point for barostat volume
|
||||
changes. By default, it is the center of the box. Whatever point is
|
||||
chosen will not move during the simulation. For example, if the lower
|
||||
periodic boundaries pass through (0,0,0), and this point is provided
|
||||
to *fixedpoint*\ , then the lower periodic boundaries will remain at
|
||||
(0,0,0), while the upper periodic boundaries will move twice as
|
||||
far. In all cases, the particle trajectories are unaffected by the
|
||||
chosen value, except for a time-dependent constant translation of
|
||||
positions.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
Using a barostat coupled to tilt dimensions *xy*\ , *xz*\ , *yz* can
|
||||
sometimes result in arbitrarily large values of the tilt dimensions,
|
||||
i.e. a dramatically deformed simulation box. LAMMPS allows the tilt
|
||||
factors to grow a small amount beyond the normal limit of half the box
|
||||
length (0.6 times the box length), and then performs a box "flip" to
|
||||
an equivalent periodic cell. See the discussion of the *flip* keyword
|
||||
above, to allow this bound to be exceeded, if desired.
|
||||
|
||||
The flip operation is described in more detail in the doc page for
|
||||
:doc:`fix deform <fix_deform>`. Both the barostat dynamics and the atom
|
||||
trajectories are unaffected by this operation. However, if a tilt
|
||||
factor is incremented by a large amount (1.5 times the box length) on
|
||||
a single timestep, LAMMPS can not accommodate this event and will
|
||||
terminate the simulation with an error. This error typically indicates
|
||||
that there is something badly wrong with how the simulation was
|
||||
constructed, such as specifying values of *Pstart* that are too far
|
||||
from the current stress value, or specifying a timestep that is too
|
||||
large. Triclinic barostatting should be used with care. This also is
|
||||
true for other barostat styles, although they tend to be more
|
||||
forgiving of insults. In particular, it is important to recognize that
|
||||
equilibrium liquids can not support a shear stress and that
|
||||
equilibrium solids can not support shear stresses that exceed the
|
||||
yield stress.
|
||||
|
||||
One exception to this rule is if the 1st dimension in the tilt factor
|
||||
(x for xy) is non-periodic. In that case, the limits on the tilt
|
||||
factor are not enforced, since flipping the box in that dimension does
|
||||
not change the atom positions due to non-periodicity. In this mode,
|
||||
if you tilt the system to extreme angles, the simulation will simply
|
||||
become inefficient due to the highly skewed simulation box.
|
||||
|
||||
.. note::
|
||||
|
||||
Unlike the :doc:`fix temp/berendsen <fix_temp_berendsen>` command
|
||||
which performs thermostatting but NO time integration, this fix
|
||||
performs thermostatting/barostatting AND time integration. Thus you
|
||||
should not use any other time integration fix, such as :doc:`fix nve <fix_nve>` on atoms to which this fix is applied. Likewise,
|
||||
fix npt/cauchy should not normally be used on atoms that also
|
||||
have their temperature controlled by another fix - e.g. by :doc:`fix langevin <fix_nh>` or :doc:`fix temp/rescale <fix_temp_rescale>`
|
||||
commands.
|
||||
|
||||
See the :doc:`Howto thermostat <Howto_thermostat>` and :doc:`Howto barostat <Howto_barostat>` doc pages for a discussion of different
|
||||
ways to compute temperature and perform thermostatting and
|
||||
barostatting.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
This fix compute a temperature and pressure each timestep. To do
|
||||
this, the fix creates its own computes of style "temp" and "pressure",
|
||||
as if one of these sets of commands had been issued:
|
||||
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
compute fix-ID_temp all temp
|
||||
compute fix-ID_press all pressure fix-ID_temp
|
||||
|
||||
The group for both the new temperature and pressure compute is "all"
|
||||
since pressure is computed for the entire system. See the :doc:`compute temp <compute_temp>` and :doc:`compute pressure <compute_pressure>`
|
||||
commands for details. Note that the IDs of the new computes are the
|
||||
fix-ID + underscore + "temp" or fix\_ID + underscore + "press".
|
||||
|
||||
Note that these are NOT the computes used by thermodynamic output (see
|
||||
the :doc:`thermo\_style <thermo_style>` command) with ID = *thermo\_temp*
|
||||
and *thermo\_press*. This means you can change the attributes of these
|
||||
fix's temperature or pressure via the
|
||||
:doc:`compute\_modify <compute_modify>` command. Or you can print this
|
||||
temperature or pressure during thermodynamic output via the
|
||||
:doc:`thermo\_style custom <thermo_style>` command using the appropriate
|
||||
compute-ID. It also means that changing attributes of *thermo\_temp*
|
||||
or *thermo\_press* will have no effect on this fix.
|
||||
|
||||
Like other fixes that perform thermostatting, fix npt/cauchy can
|
||||
be used with :doc:`compute commands <compute>` that calculate a
|
||||
temperature after removing a "bias" from the atom velocities.
|
||||
E.g. removing the center-of-mass velocity from a group of atoms or
|
||||
only calculating temperature on the x-component of velocity or only
|
||||
calculating temperature for atoms in a geometric region. This is not
|
||||
done by default, but only if the :doc:`fix\_modify <fix_modify>` command
|
||||
is used to assign a temperature compute to this fix that includes such
|
||||
a bias term. See the doc pages for individual :doc:`compute commands <compute>` to determine which ones include a bias. In
|
||||
this case, the thermostat works in the following manner: the current
|
||||
temperature is calculated taking the bias into account, bias is
|
||||
removed from each atom, thermostatting is performed on the remaining
|
||||
thermal degrees of freedom, and the bias is added back in.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
This fix can be used with either the *verlet* or *respa*
|
||||
:doc:`integrators <run_style>`. When using this fix
|
||||
with *respa*\ , LAMMPS uses an integrator constructed
|
||||
according to the following factorization of the Liouville propagator
|
||||
(for two rRESPA levels):
|
||||
|
||||
.. image:: Eqs/fix_nh1.jpg
|
||||
:align: center
|
||||
|
||||
This factorization differs somewhat from that of Tuckerman et al, in
|
||||
that the barostat is only updated at the outermost rRESPA level,
|
||||
whereas Tuckerman's factorization requires splitting the pressure into
|
||||
pieces corresponding to the forces computed at each rRESPA level. In
|
||||
theory, the latter method will exhibit better numerical stability. In
|
||||
practice, because Pdamp is normally chosen to be a large multiple of
|
||||
the outermost rRESPA timestep, the barostat dynamics are not the
|
||||
limiting factor for numerical stability. Both factorizations are
|
||||
time-reversible and can be shown to preserve the phase space measure
|
||||
of the underlying non-Hamiltonian equations of motion.
|
||||
|
||||
.. note::
|
||||
|
||||
Under NPT dynamics, for a system with zero initial total linear
|
||||
momentum, the total momentum fluctuates close to zero. It may occasionally
|
||||
undergo brief excursions to non-negligible values, before returning close
|
||||
to zero. Over long simulations, this has the effect of causing the
|
||||
center-of-mass to undergo a slow random walk. This can be mitigated by
|
||||
resetting the momentum at infrequent intervals using the
|
||||
:doc:`fix momentum <fix_momentum>` command.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
**Restart, fix\_modify, output, run start/stop, minimize info:**
|
||||
|
||||
This fix writes the state of all the thermostat and barostat
|
||||
variables to :doc:`binary restart files <restart>`. See the
|
||||
:doc:`read\_restart <read_restart>` 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 :doc:`fix\_modify <fix_modify>` *temp* and *press* options are
|
||||
supported by this fix. You can use them to assign a
|
||||
:doc:`compute <compute>` you have defined to this fix which will be used
|
||||
in its thermostatting or barostatting procedure, as described above.
|
||||
If you do this, note that the kinetic energy derived from the compute
|
||||
temperature should be consistent with the virial term computed using
|
||||
all atoms for the pressure. LAMMPS will warn you if you choose to
|
||||
compute temperature on a subset of atoms.
|
||||
|
||||
.. note::
|
||||
|
||||
If both the *temp* and *press* keywords are used in a single
|
||||
thermo\_modify command (or in two separate commands), then the order in
|
||||
which the keywords are specified is important. Note that a :doc:`pressure compute <compute_pressure>` defines its own temperature compute as
|
||||
an argument when it is specified. The *temp* keyword will override
|
||||
this (for the pressure compute being used by fix npt), but only if the
|
||||
*temp* keyword comes after the *press* keyword. If the *temp* keyword
|
||||
comes before the *press* keyword, then the new pressure compute
|
||||
specified by the *press* keyword will be unaffected by the *temp*
|
||||
setting.
|
||||
|
||||
The :doc:`fix\_modify <fix_modify>` *energy* option is supported by this
|
||||
fix to add the energy change induced by Nose/Hoover thermostatting
|
||||
and barostatting to the system's potential energy as part of
|
||||
:doc:`thermodynamic output <thermo_style>`.
|
||||
|
||||
This fix computes a global scalar and a global vector of quantities,
|
||||
which can be accessed by various :doc:`output commands <Howto_output>`.
|
||||
The scalar value calculated by this fix is "extensive"; the vector
|
||||
values are "intensive".
|
||||
|
||||
The scalar is the cumulative energy change due to the fix.
|
||||
|
||||
The vector stores internal Nose/Hoover thermostat and barostat
|
||||
variables. The number and meaning of the vector values depends on
|
||||
which fix is used and the settings for keywords *tchain* and *pchain*\ ,
|
||||
which specify the number of Nose/Hoover chains for the thermostat and
|
||||
barostat. If no thermostatting is done, then *tchain* is 0. If no
|
||||
barostatting is done, then *pchain* is 0. In the following list,
|
||||
"ndof" is 0, 1, 3, or 6, and is the number of degrees of freedom in
|
||||
the barostat. Its value is 0 if no barostat is used, else its value
|
||||
is 6 if any off-diagonal stress tensor component is barostatted, else
|
||||
its value is 1 if *couple xyz* is used or *couple xy* for a 2d
|
||||
simulation, otherwise its value is 3.
|
||||
|
||||
The order of values in the global vector and their meaning is as
|
||||
follows. The notation means there are tchain values for eta, followed
|
||||
by tchain for eta\_dot, followed by ndof for omega, etc:
|
||||
|
||||
* eta[tchain] = particle thermostat displacements (unitless)
|
||||
* eta\_dot[tchain] = particle thermostat velocities (1/time units)
|
||||
* omega[ndof] = barostat displacements (unitless)
|
||||
* omega\_dot[ndof] = barostat velocities (1/time units)
|
||||
* etap[pchain] = barostat thermostat displacements (unitless)
|
||||
* etap\_dot[pchain] = barostat thermostat velocities (1/time units)
|
||||
* PE\_eta[tchain] = potential energy of each particle thermostat displacement (energy units)
|
||||
* KE\_eta\_dot[tchain] = kinetic energy of each particle thermostat velocity (energy units)
|
||||
* PE\_omega[ndof] = potential energy of each barostat displacement (energy units)
|
||||
* KE\_omega\_dot[ndof] = kinetic energy of each barostat velocity (energy units)
|
||||
* PE\_etap[pchain] = potential energy of each barostat thermostat displacement (energy units)
|
||||
* KE\_etap\_dot[pchain] = kinetic energy of each barostat thermostat velocity (energy units)
|
||||
* PE\_strain[1] = scalar strain energy (energy units)
|
||||
|
||||
This fix can ramp its external temperature and pressure over
|
||||
multiple runs, using the *start* and *stop* keywords of the
|
||||
:doc:`run <run>` command. See the :doc:`run <run>` command for details of
|
||||
how to do this.
|
||||
|
||||
This fix is not invoked during :doc:`energy minimization <minimize>`.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
|
||||
This fix is part of the USER-MISC package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package <Build_package>` doc page for more info.
|
||||
|
||||
*X*\ , *y*\ , *z* cannot be barostatted if the associated dimension is not
|
||||
periodic. *Xy*\ , *xz*\ , and *yz* can only be barostatted if the
|
||||
simulation domain is triclinic and the 2nd dimension in the keyword
|
||||
(\ *y* dimension in *xy*\ ) is periodic. *Z*\ , *xz*\ , and *yz*\ , cannot be
|
||||
barostatted for 2D simulations. The :doc:`create\_box <create_box>`,
|
||||
:doc:`read data <read_data>`, and :doc:`read\_restart <read_restart>`
|
||||
commands specify whether the simulation box is orthogonal or
|
||||
non-orthogonal (triclinic) and explain the meaning of the xy,xz,yz
|
||||
tilt factors.
|
||||
|
||||
For the *temp* keyword, the final Tstop cannot be 0.0 since it would
|
||||
make the external T = 0.0 at some timestep during the simulation which
|
||||
is not allowed in the Nose/Hoover formulation.
|
||||
|
||||
The *scaleyz yes* and *scalexz yes* keyword/value pairs can not be used
|
||||
for 2D simulations. *scaleyz yes*\ , *scalexz yes*\ , and *scalexy yes* options
|
||||
can only be used if the 2nd dimension in the keyword is periodic,
|
||||
and if the tilt factor is not coupled to the barostat via keywords
|
||||
*tri*\ , *yz*\ , *xz*\ , and *xy*\ .
|
||||
|
||||
Without the *cauchystat* keyword, the barostat algorithm
|
||||
controls the Second-Piola Kirchhoff stress, which is a stress measure
|
||||
referred to the unmodified (initial) simulation box. If the box
|
||||
deforms substantially during the equilibration, the difference between
|
||||
the set values and the final true (Cauchy) stresses can be
|
||||
considerable.
|
||||
|
||||
The *cauchystat* keyword modifies the barostat as per Miller et
|
||||
al. (Miller)\_"#nc-Miller" so that the Cauchy stress is controlled.
|
||||
*alpha* is the non-dimensional parameter, typically set to 0.001 or
|
||||
0.01 that determines how aggressively the algorithm drives the system
|
||||
towards the set Cauchy stresses. Larger values of *alpha* will modify
|
||||
the system more quickly, but can lead to instabilities. Smaller
|
||||
values will lead to longer convergence time. Since *alpha* also
|
||||
influences how much the stress fluctuations deviate from the
|
||||
equilibrium fluctuations, it should be set as small as possible.
|
||||
|
||||
A *continue* value of *yes* indicates that the fix is subsequent to a
|
||||
previous run with the npt/cauchy fix, and the intention is to continue
|
||||
from the converged stress state at the end of the previous run. This
|
||||
may be required, for example, when implementing a multi-step loading/unloading
|
||||
sequence over several fixes.
|
||||
|
||||
Setting *alpha* to zero is not permitted. To "turn off" the
|
||||
cauchystat control and thus restore the equilibrium stress
|
||||
fluctuations, two subsequent fixes should be used. In the first, the
|
||||
cauchystat flag is used and the simulation box equilibrates to the
|
||||
correct shape for the desired stresses. In the second, the *fix*
|
||||
statement is identical except that the *cauchystat* keyword is removed
|
||||
(along with related *alpha* and *continue* values). This restores the
|
||||
original Parrinello-Rahman algorithm, but now with the correct simulation
|
||||
box shape from the first fix.
|
||||
|
||||
This fix can be used with dynamic groups as defined by the
|
||||
:doc:`group <group>` command. Likewise it can be used with groups to
|
||||
which atoms are added or deleted over time, e.g. a deposition
|
||||
simulation. However, the conservation properties of the thermostat
|
||||
and barostat are defined for systems with a static set of atoms. You
|
||||
may observe odd behavior if the atoms in a group vary dramatically
|
||||
over time or the atom count becomes very small.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix nve <fix_nve>`, :doc:`fix\_modify <fix_modify>`,
|
||||
:doc:`run\_style <run_style>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
The keyword defaults are tchain = 3, pchain = 3, mtk = yes, tloop =
|
||||
ploop = 1, nreset = 0, drag = 0.0, dilate = all, couple = none,
|
||||
cauchystat = no,
|
||||
scaleyz = scalexz = scalexy = yes if periodic in 2nd dimension and
|
||||
not coupled to barostat, otherwise no.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
.. _nc-Martyna:
|
||||
|
||||
|
||||
|
||||
**(Martyna)** Martyna, Tobias and Klein, J Chem Phys, 101, 4177 (1994).
|
||||
|
||||
.. _nc-Parrinello:
|
||||
|
||||
|
||||
|
||||
**(Parrinello)** Parrinello and Rahman, J Appl Phys, 52, 7182 (1981).
|
||||
|
||||
.. _nc-Tuckerman:
|
||||
|
||||
|
||||
|
||||
**(Tuckerman)** Tuckerman, Alejandre, Lopez-Rendon, Jochim, and
|
||||
Martyna, J Phys A: Math Gen, 39, 5629 (2006).
|
||||
|
||||
.. _nc-Shinoda:
|
||||
|
||||
|
||||
|
||||
**(Shinoda)** Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
|
||||
|
||||
.. _nc-Miller:
|
||||
|
||||
|
||||
|
||||
**(Miller)** Miller, Tadmor, Gibson, Bernstein and Pavia, J Chem Phys,
|
||||
144, 184107 (2016).
|
||||
|
||||
|
||||
.. _lws: http://lammps.sandia.gov
|
||||
.. _ld: Manual.html
|
||||
.. _lc: Commands_all.html
|
||||
113
doc/src/fix_propel_self.rst
Normal file
113
doc/src/fix_propel_self.rst
Normal file
@ -0,0 +1,113 @@
|
||||
.. index:: fix propel/self
|
||||
|
||||
fix propel/self command
|
||||
=======================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
fix ID group-ID propel/self mode magnitude keyword values ...
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* propel/self = style name of this fix command
|
||||
* mode = velocity or quat
|
||||
* magnitude = magnitude of the active force
|
||||
* one or more keyword/value pairs may be appended to args
|
||||
* keyword = *types*
|
||||
|
||||
*types* values = one or more atom types
|
||||
|
||||
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
fix active_group all propel/self velocity 1.0
|
||||
fix constant_velocity all viscous 1.0
|
||||
|
||||
fix active_group all propel/self quat 1.0
|
||||
|
||||
fix active all propel/self quat 1.0 types 1 2 4
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Adds a force of a constant magnitude to each atom in the group. The nature in
|
||||
which the force is added depends on the mode.
|
||||
|
||||
For *mode* = *velocity*, the active force acts along the velocity vector of
|
||||
each atom. This can be interpreted as a velocity-dependent friction,
|
||||
such as proposed by :ref:`(Erdmann) <Erdmann>`.
|
||||
|
||||
For *mode* = *quat* the force is applied along the axis obtained
|
||||
by rotating the x-axis along the atom's quaternion. In other words, the
|
||||
force is along the x-axis in the atom's body frame. This mode requires
|
||||
all atoms in the group to have a quaternion, so atom\_style should
|
||||
either be ellipsoid or body. In combination with Langevin thermostat
|
||||
for translation and rotation in the overdamped regime, the quaternion
|
||||
mode corresponds to the active Brownian particle model introduced by
|
||||
:ref:`(Henkes) <Henkes>`, :ref:`(Bialke) <Bialke>` and :ref:`(Fily)
|
||||
<Fily>`.
|
||||
|
||||
By default, this fix is applied to all atoms in the group. You can
|
||||
override this behavior by specifying the atom types the fix should work
|
||||
on through the *types* keyword.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
**Restart, fix\_modify, output, run start/stop, minimize info:**
|
||||
|
||||
No information about this fix is written to :doc:`binary restart files <restart>`.
|
||||
|
||||
This fix is not imposed during minimization.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
|
||||
In quat mode, this fix makes use of per-atom quaternions to take
|
||||
into account the fact that the orientation can rotate and hence the
|
||||
direction of the active force can change. The quat mode
|
||||
of this fix only works with atom\_style ellipsoid.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix setforce <fix_setforce>`, :doc:`fix addforce <fix_addforce>`
|
||||
|
||||
.. _Erdmann:
|
||||
|
||||
|
||||
|
||||
**(Erdmann)** U. Erdmann , W. Ebeling, L. Schimansky-Geier, and F. Schweitzer,
|
||||
Eur. Phys. J. B 15, 105-113, 2000.
|
||||
|
||||
.. _Henkes:
|
||||
|
||||
|
||||
|
||||
**(Henkes)** Henkes, S, Fily, Y., and Marchetti, M. C. Phys. Rev. E, 84, 040301(R), 2011.
|
||||
|
||||
.. _Bialke:
|
||||
|
||||
|
||||
|
||||
**(Bialke)** J. Bialke, T. Speck, and H Loewen, Phys. Rev. Lett. 108, 168301, 2012.
|
||||
|
||||
.. _Fily:
|
||||
|
||||
|
||||
|
||||
**(Fily)** Y. Fily and M.C. Marchetti, Phys. Rev. Lett. 108, 235702, 2012.
|
||||
|
||||
**Default:** types
|
||||
|
||||
|
||||
.. _lws: http://lammps.sandia.gov
|
||||
.. _ld: Manual.html
|
||||
.. _lc: Commands_all.html
|
||||
@ -82,15 +82,15 @@ list for calculating the normals for each atom pair.
|
||||
|
||||
.. note::
|
||||
|
||||
Two new sets of parameters of ILP for two-dimensional hexagonal
|
||||
Materials are presented in :ref:`(Ouyang) <Ouyang>`. These parameters provide
|
||||
a good description in both short- and long-range interaction regimes.
|
||||
Four new sets of parameters of ILP for 2D layered Materials with bilayer and
|
||||
bulk configurations are presented in :ref:`(Ouyang1) <Ouyang1>` and :ref:`(Ouyang2) <Ouyang2>`, respectively.
|
||||
These parameters provide a good description in both short- and long-range interaction regimes.
|
||||
While the old ILP parameters published in :ref:`(Leven2) <Leven2>` and
|
||||
:ref:`(Maaravi) <Maaravi2>` are only suitable for long-range interaction
|
||||
regime. This feature is essential for simulations in high pressure
|
||||
regime (i.e., the interlayer distance is smaller than the equilibrium
|
||||
distance). The benchmark tests and comparison of these parameters can
|
||||
be found in :ref:`(Ouyang) <Ouyang>`.
|
||||
distance). The benchmark tests and comparison of these parameters can
|
||||
be found in :ref:`(Ouyang1) <Ouyang1>` and :ref:`(Ouyang2) <Ouyang2>`.
|
||||
|
||||
This potential must be used in combination with hybrid/overlay.
|
||||
Other interactions can be set to zero using pair\_style *none*\ .
|
||||
@ -185,11 +185,17 @@ Related commands
|
||||
|
||||
**(Kolmogorov)** A. N. Kolmogorov, V. H. Crespi, Phys. Rev. B 71, 235415 (2005).
|
||||
|
||||
.. _Ouyang:
|
||||
.. _Ouyang1:
|
||||
|
||||
|
||||
|
||||
**(Ouyang)** W. Ouyang, D. Mandelli, M. Urbakh and O. Hod, Nano Lett. 18, 6009-6016 (2018).
|
||||
**(Ouyang1)** W. Ouyang, D. Mandelli, M. Urbakh and O. Hod, Nano Lett. 18, 6009-6016 (2018).
|
||||
|
||||
.. _Ouyang2:
|
||||
|
||||
|
||||
|
||||
**(Ouyang2)** W. Ouyang et al., J. Chem. Theory Comput. 16(1), 666-676 (2020).
|
||||
|
||||
|
||||
.. _lws: http://lammps.sandia.gov
|
||||
|
||||
@ -70,7 +70,7 @@ list for calculating the normals for each atom pair.
|
||||
|
||||
Two new sets of parameters of KC potential for hydrocarbons, CH.KC
|
||||
(without the taper function) and CH\_taper.KC (with the taper function)
|
||||
are presented in :ref:`(Ouyang) <Ouyang1>`. The energy for the KC potential
|
||||
are presented in :ref:`(Ouyang1) <Ouyang3>`. The energy for the KC potential
|
||||
with the taper function goes continuously to zero at the cutoff. The
|
||||
parameters in both CH.KC and CH\_taper.KC provide a good description in
|
||||
both short- and long-range interaction regimes. While the original
|
||||
@ -78,7 +78,7 @@ list for calculating the normals for each atom pair.
|
||||
suitable for long-range interaction regime. This feature is essential
|
||||
for simulations in high pressure regime (i.e., the interlayer distance
|
||||
is smaller than the equilibrium distance). The benchmark tests and
|
||||
comparison of these parameters can be found in :ref:`(Ouyang) <Ouyang1>`.
|
||||
comparison of these parameters can be found in :ref:`(Ouyang1) <Ouyang3>` and :ref:`(Ouyang2) <Ouyang4>`.
|
||||
|
||||
This potential must be used in combination with hybrid/overlay.
|
||||
Other interactions can be set to zero using pair\_style *none*\ .
|
||||
@ -154,11 +154,17 @@ Related commands
|
||||
|
||||
**(Kolmogorov)** A. N. Kolmogorov, V. H. Crespi, Phys. Rev. B 71, 235415 (2005)
|
||||
|
||||
.. _Ouyang1:
|
||||
.. _Ouyang3:
|
||||
|
||||
|
||||
|
||||
**(Ouyang)** W. Ouyang, D. Mandelli, M. Urbakh and O. Hod, Nano Lett. 18, 6009-6016 (2018).
|
||||
**(Ouyang1)** W. Ouyang, D. Mandelli, M. Urbakh and O. Hod, Nano Lett. 18, 6009-6016 (2018).
|
||||
|
||||
.. _Ouyang4:
|
||||
|
||||
|
||||
|
||||
**(Ouyang2)** W. Ouyang et al., J. Chem. Theory Comput. 16(1), 666-676 (2020).
|
||||
|
||||
|
||||
.. _lws: http://lammps.sandia.gov
|
||||
|
||||
@ -90,15 +90,15 @@ pair\_style lj/cut/coul/wolf/omp command
|
||||
pair\_style lj/cut/tip4p/cut command
|
||||
====================================
|
||||
|
||||
pair\_style lj/cut/tip4p/cut/gpu command
|
||||
========================================
|
||||
|
||||
pair\_style lj/cut/tip4p/cut/omp command
|
||||
========================================
|
||||
|
||||
pair\_style lj/cut/tip4p/long command
|
||||
=====================================
|
||||
|
||||
pair\_style lj/cut/tip4p/long/gpu command
|
||||
========================================
|
||||
|
||||
pair\_style lj/cut/tip4p/long/omp command
|
||||
=========================================
|
||||
|
||||
|
||||
161
doc/src/pair_mesocnt.rst
Normal file
161
doc/src/pair_mesocnt.rst
Normal file
@ -0,0 +1,161 @@
|
||||
.. index:: pair\_style mesocnt
|
||||
|
||||
pair\_style mesocnt command
|
||||
===========================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
pair_style mesocnt
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
pair_style mesocnt
|
||||
pair_coeff \* \* 10_10.cnt
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Style *mesocnt* implements a mesoscopic potential
|
||||
for the interaction of carbon nanotubes (CNTs). In this potential,
|
||||
CNTs are modelled as chains of cylindrical segments in which
|
||||
each infinitesimal surface element interacts with all other
|
||||
CNT surface elements with the Lennard-Jones (LJ) term adopted from
|
||||
the :doc:`airebo <pair_airebo>` style. The interaction energy
|
||||
is then computed by integrating over the surfaces of all interacting
|
||||
CNTs.
|
||||
|
||||
The potential is based on interactions between one cylindrical
|
||||
segment and infinitely or semi-infinitely long CNTs as described
|
||||
in :ref:`(Volkov1) <Volkov1>`. Chains of segments are
|
||||
converted to these (semi-)infinite CNTs bases on an approximate
|
||||
chain approach outlined in :ref:`(Volkov2) <Volkov2>`.
|
||||
This allows to simplify the computation of the interactions
|
||||
significantly and reduces the computational times to the
|
||||
same order of magnitude as for regular bead spring models
|
||||
where beads interact with the standard :doc:`pair_lj/cut <pair_lj>`
|
||||
potential.
|
||||
|
||||
In LAMMPS, cylindrical segments are represented by bonds. Each
|
||||
segment is defined by its two end points ("nodes") which correspond
|
||||
to atoms in LAMMPS. For the exact functional form of the potential
|
||||
and implementation details, the reader is referred to the
|
||||
original papers :ref:`(Volkov1) <Volkov1>` and
|
||||
:ref:`(Volkov2) <Volkov2>`.
|
||||
|
||||
The potential requires tabulated data provided in a single ASCII
|
||||
text file specified in the :doc:`pair\_coeff <pair_coeff>` command.
|
||||
The first line of the file provides a time stamp and
|
||||
general information. The second line lists four integers giving
|
||||
the number of data points provided in the subsequent four
|
||||
data tables. The third line lists four floating point numbers:
|
||||
the CNT radius R, the LJ parameter sigma and two numerical
|
||||
parameters delta1 and delta2. These four parameters are given
|
||||
in Angstroms. This is followed by four data tables each separated
|
||||
by a single empty line. The first two tables have two columns
|
||||
and list the parameters uInfParallel and Gamma respectively.
|
||||
The last two tables have three columns giving data on a quadratic
|
||||
array and list the parameters Phi and uSemiParallel respectively.
|
||||
uInfParallel and uSemiParallel are given in eV/Angstrom, Phi is
|
||||
given in eV and Gamma is unitless.
|
||||
|
||||
Potential files for CNTs can be readily generated using the freely
|
||||
available code provided on
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
https://github.com/phankl/cntpot
|
||||
|
||||
Using the same approach, it should also be possible to
|
||||
generate potential files for other 1D systems such as
|
||||
boron nitride nanotubes.
|
||||
|
||||
.. note::
|
||||
|
||||
LAMMPS comes with one *mesocnt* style potential file
|
||||
where the default number of data points per table is 1001.
|
||||
This is sufficient for NVT simulations. For proper energy
|
||||
conservation, we recommend using a potential file where
|
||||
the resolution for Phi is at least 2001 data points.
|
||||
|
||||
.. note::
|
||||
|
||||
The *mesocnt* style requires CNTs to be represented
|
||||
as a chain of atoms connected by bonds. Atoms need
|
||||
to be numbered consecutively within one chain.
|
||||
Atoms belonging to different CNTs need to be assigned
|
||||
different molecule IDs.
|
||||
|
||||
A full summary of the method and LAMMPS implementation details
|
||||
is expected to soon become available in Computer Physics
|
||||
Communications.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
**Mixing, shift, table, tail correction, restart, rRESPA info**\ :
|
||||
|
||||
This pair style does not support mixing.
|
||||
|
||||
This pair style does not support the :doc:`pair\_modify <pair_modify>`
|
||||
shift, table, and tail options.
|
||||
|
||||
The *mesocnt* pair style do not write their information to :doc:`binary restart files <restart>`,
|
||||
since it is stored in tabulated potential files.
|
||||
Thus, you need to re-specify the pair\_style and pair\_coeff commands in
|
||||
an input script that reads a restart file.
|
||||
|
||||
This pair style can only be used via the *pair* keyword of the
|
||||
:doc:`run\_style respa <run_style>` command. They do not support the
|
||||
*inner*\ , *middle*\ , *outer* keywords.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
|
||||
This style is part of the USER-MISC package. It is only
|
||||
enabled if LAMMPS was built with that package. See the :doc:`Build package <Build_package>` doc page for more info.
|
||||
|
||||
This pair potential requires the :doc:`newton <newton>` setting to be
|
||||
"on" for pair interactions.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`pair\_coeff <pair_coeff>`
|
||||
|
||||
**Default:** none
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
.. _Volkov1:
|
||||
|
||||
|
||||
|
||||
**(Volkov1)** Volkov and Zhigilei, J Phys Chem C, 114, 5513 (2010).
|
||||
|
||||
.. _Volkov2:
|
||||
|
||||
|
||||
|
||||
**(Volkov2)** Volkov, Simov and Zhigilei, APS Meeting Abstracts,
|
||||
Q31.013 (2008).
|
||||
|
||||
|
||||
.. _lws: http://lammps.sandia.gov
|
||||
.. _ld: Manual.html
|
||||
.. _lc: Commands_all.html
|
||||
@ -244,6 +244,7 @@ accelerated styles exist.
|
||||
* :doc:`meam/c <pair_meamc>` - modified embedded atom method (MEAM) in C
|
||||
* :doc:`meam/spline <pair_meam_spline>` - splined version of MEAM
|
||||
* :doc:`meam/sw/spline <pair_meam_sw_spline>` - splined version of MEAM with a Stillinger-Weber term
|
||||
* :doc:`mesocnt <pair_mesocnt>` - mesoscale model for (carbon) nanotubes
|
||||
* :doc:`mgpt <pair_mgpt>` - simplified model generalized pseudopotential theory (MGPT) potential
|
||||
* :doc:`mie/cut <pair_mie>` - Mie potential
|
||||
* :doc:`mm3/switch3/coulgauss/long <pair_mm3_switch3_coulgauss_long>` - smoothed MM3 vdW potential with Gaussian electrostatics
|
||||
|
||||
@ -356,7 +356,7 @@ to the screen and log file. Note that since the LAMMPS print command
|
||||
itself takes a string in quotes as its argument, the Python string
|
||||
must be delimited with a different style of quotes.
|
||||
|
||||
The :doc:`Pytnon library <Python_library>` doc page describes the syntax
|
||||
The :doc:`Python library <Python_library>` doc page describes the syntax
|
||||
for how Python wraps the various functions included in the LAMMPS
|
||||
library interface.
|
||||
|
||||
|
||||
@ -43,6 +43,9 @@ Syntax
|
||||
*format* values = format of dump file, must be last keyword if used
|
||||
*native* = native LAMMPS dump file
|
||||
*xyz* = XYZ file
|
||||
*adios* [*timeout* value] = dump file written by the :doc:`dump adios <dump_adios>` command
|
||||
*timeout* = specify waiting time for the arrival of the timestep when running concurrently.
|
||||
The value is a float number and is interpreted in seconds.
|
||||
*molfile* style path = VMD molfile plugin interface
|
||||
style = *dcd* or *xyz* or others supported by molfile plugins
|
||||
path = optional path for location of molfile plugins
|
||||
@ -65,6 +68,8 @@ Examples
|
||||
read_dump dump.xyz 10 x y z box no format molfile xyz ../plugins
|
||||
read_dump dump.dcd 0 x y z format molfile dcd
|
||||
read_dump dump.file 1000 x y z vx vy vz format molfile lammpstrj /usr/local/lib/vmd/plugins/LINUXAMD64/plugins/molfile
|
||||
read_dump dump.bp 5000 x y z vx vy vz format adios
|
||||
read_dump dump.bp 5000 x y z vx vy vz format adios timeout 60.0
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
@ -136,6 +141,17 @@ contain multiple directories separated by a colon (or semi-colon on
|
||||
windows). The *path* keyword is optional and defaults to ".",
|
||||
i.e. the current directory.
|
||||
|
||||
The *adios* format supports reading data that was written by the
|
||||
:doc:`dump adios <dump_adios>` command. The
|
||||
entire dump is read in parallel across all the processes, dividing
|
||||
the atoms evenly amongs the processes. The number of writers that
|
||||
has written the dump file does not matter. Using the adios style for
|
||||
dump and read_dump is a convenient way to dump all atoms from *N*
|
||||
writers and read it back by *M* readers. If one is running two
|
||||
LAMMPS instances concurrently where one dumps data and the other is
|
||||
reading it with the rerun command, the timeout option can be specified
|
||||
to wait on the reader side for the arrival of the requested step.
|
||||
|
||||
Support for other dump format readers may be added in the future.
|
||||
|
||||
|
||||
@ -147,7 +163,19 @@ and box information.
|
||||
|
||||
The dump file is scanned for a snapshot with a timestamp that matches
|
||||
the specified *Nstep*\ . This means the LAMMPS timestep the dump file
|
||||
snapshot was written on for the *native* format. Note that the *xyz*
|
||||
snapshot was written on for the *native* or *adios* formats.
|
||||
|
||||
The list of timestamps available in an adios .bp file is stored in the
|
||||
variable *ntimestep*:
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
$ bpls dump.bp -d ntimestep
|
||||
uint64_t ntimestep 5*scalar
|
||||
(0) 0 50 100 150 200
|
||||
|
||||
|
||||
Note that the *xyz*
|
||||
and *molfile* formats do not store the timestep. For these formats,
|
||||
timesteps are numbered logically, in a sequential manner, starting
|
||||
from 0. Thus to access the 10th snapshot in an *xyz* or *mofile*
|
||||
@ -160,7 +188,8 @@ and the current simulation box is orthogonal or vice versa. A warning
|
||||
will be generated if the snapshot box boundary conditions (periodic,
|
||||
shrink-wrapped, etc) do not match the current simulation boundary
|
||||
conditions, but the boundary condition information in the snapshot is
|
||||
otherwise ignored. See the "boundary" command for more details.
|
||||
otherwise ignored. See the "boundary" command for more details. The
|
||||
*adios* reader does the same as the *native* format reader.
|
||||
|
||||
For the *xyz* format, no information about the box is available, so
|
||||
you must set the *box* flag to *no*\ . See details below.
|
||||
@ -231,6 +260,18 @@ consistent from snapshot to snapshot in the molfile dump file.
|
||||
See the :doc:`dump\_modify sort <dump_modify>` command if the dump file
|
||||
was written by LAMMPS.
|
||||
|
||||
The *adios* format supports all fields that the *native* format supports
|
||||
except for the *q* charge field.
|
||||
The list of fields stored in an adios .bp file is recorded in the attributes
|
||||
*columns* (array of short strings) and *columnstr* (space-separated single string).
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
$ bpls -la dump.bp column*
|
||||
string columns attr = {"id", "type", "x", "y", "z", "vx", "vy", "vz"}
|
||||
string columnstr attr = "id type x y z vx vy vz "
|
||||
|
||||
|
||||
|
||||
----------
|
||||
|
||||
@ -357,10 +398,14 @@ The *molfile* dump file formats are part of the USER-MOLFILE package.
|
||||
They are only enabled if LAMMPS was built with that packages. See the
|
||||
:doc:`Build package <Build_package>` doc page for more info.
|
||||
|
||||
To write and read adios .bp files, you must compile LAMMPS with the
|
||||
:ref:`USER-ADIOS <PKG-USER-ADIOS>` package.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`dump <dump>`, :doc:`dump molfile <dump_molfile>`,
|
||||
:doc:`dump adios <dump_adios>`,
|
||||
:doc:`read\_data <read_data>`, :doc:`read\_restart <read_restart>`,
|
||||
:doc:`rerun <rerun>`
|
||||
|
||||
|
||||
@ -44,6 +44,8 @@ Examples
|
||||
rerun dump.vels dump x y z vx vy vz box yes format molfile lammpstrj
|
||||
rerun dump.dcd dump x y z box no format molfile dcd
|
||||
rerun ../run7/dump.file.gz skip 2 dump x y z box yes
|
||||
rerun dump.bp dump x y z box no format adios
|
||||
rerun dump.bp dump x y z vx vy vz format adios timeout 10.0
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Reference in New Issue
Block a user