git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@9460 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -11,6 +11,8 @@
|
||||
|
||||
<H3>fix rigid command
|
||||
</H3>
|
||||
<H3>fix rigid/small command
|
||||
</H3>
|
||||
<H3>fix rigid/nve command
|
||||
</H3>
|
||||
<H3>fix rigid/nvt command
|
||||
@ -25,7 +27,7 @@
|
||||
</PRE>
|
||||
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
|
||||
|
||||
<LI>style = <I>rigid</I> or <I>rigid/nve</I> or <I>rigid/nvt</I> or <I>rigid/npt</I> or <I>rigid/nph</I>
|
||||
<LI>style = <I>rigid</I> or <I>rigid/small</I> or <I>rigid/nve</I> or <I>rigid/nvt</I> or <I>rigid/npt</I> or <I>rigid/nph</I>
|
||||
|
||||
<LI>bodystyle = <I>single</I> or <I>molecule</I> or <I>group</I>
|
||||
|
||||
@ -75,9 +77,11 @@
|
||||
<P><B>Examples:</B>
|
||||
</P>
|
||||
<PRE>fix 1 clump rigid single
|
||||
fix 1 clump rigid/small molecule
|
||||
fix 1 clump rigid single force 1 off off on langevin 1.0 1.0 1.0 428984
|
||||
fix 1 polychains rigid/nvt molecule temp 1.0 1.0 5.0
|
||||
fix 1 polychains rigid molecule force 1*5 off off off force 6*10 off off on
|
||||
fix 1 polychains rigid/small molecule langevin 1.0 1.0 1.0 428984
|
||||
fix 2 fluid rigid group 3 clump1 clump2 clump3 torque * off off off
|
||||
fix 1 rods rigid/npt molecule temp 300.0 300.0 100.0 iso 0.5 0.5 10.0
|
||||
fix 1 particles rigid/npt molecule temp 1.0 1.0 5.0 x 0.5 0.5 1.0 z 0.5 0.5 1.0 couple xz
|
||||
@ -110,6 +114,41 @@ the constituent atoms as point masses.
|
||||
each rigid body via time integration, in the NVE, NVT, NPT, or NPH
|
||||
ensemble, as described below.
|
||||
</P>
|
||||
<P>There are two main variants of this fix, fix rigid and fix
|
||||
rigid/small. The NVE/NVT/NPT/NHT versions belong to one of the two
|
||||
variants, as their style names indicate.
|
||||
</P>
|
||||
<P>IMPORTANT NOTE: Not all of the bodystyle options and keyword/value
|
||||
options are available for both the <I>rigid</I> and <I>rigid/small</I> variants.
|
||||
See details below.
|
||||
</P>
|
||||
<P>The <I>rigid</I> variant is typically the best choice for a system with a
|
||||
small number of large rigid bodies, each of which can extend across
|
||||
the domain of many processors. It operates by creating a single
|
||||
global list of rigid bodies, which all processors contribute to.
|
||||
MPI_Allreduce operations are performed each timestep to sum the
|
||||
contributions from each processor to the force and torque on all the
|
||||
bodies. This operation will not scale well in parallel if large
|
||||
numbers of rigid bodies are simulated.
|
||||
</P>
|
||||
<P>The <I>rigid/small</I> variant is typically best for a system with a large
|
||||
number of small rigid bodies. Each body is assigned to the atom
|
||||
closest to the geometrical center of the body. The fix operates using
|
||||
local lists of rigid bodies owned by each processor and information is
|
||||
summed and exchanged via local communication between neighboring
|
||||
processors when ghost atom info is accumlated. This means that the
|
||||
ghost atom cutoff be large enough to cover the distance between the
|
||||
atom that owns the body and every other atom in the body. If the
|
||||
<A HREF = "pair_style.html">pair_style</A> cutoff is not of sufficient extent to
|
||||
insure this, then the <A HREF = "communicate.html">communicate cutoff</A> command
|
||||
can be used.
|
||||
</P>
|
||||
<P>Which of the two variants is faster for a particular problem is hard
|
||||
to predict. The best way to decide is to perform a short test run.
|
||||
Both variants should give identical numerical answers for short runs.
|
||||
Long runs should give statistically similar results, but round-off
|
||||
differences will accumulate to produce divergent trajectories.
|
||||
</P>
|
||||
<P>IMPORTANT NOTE: You should not update the atoms in rigid bodies via
|
||||
other time-integration fixes (e.g. <A HREF = "fix_nve.html">fix nve</A>, <A HREF = "fix_nvt.html">fix
|
||||
nvt</A>, <A HREF = "fix_npt.html">fix npt</A>), or you will be integrating
|
||||
@ -136,14 +175,22 @@ most one rigid body. Which atoms are in which bodies can be defined
|
||||
via several options.
|
||||
</P>
|
||||
<P>For bodystyle <I>single</I> the entire fix group of atoms is treated as one
|
||||
rigid body.
|
||||
rigid body. This option is only allowed for fix rigid and its
|
||||
sub-styles.
|
||||
</P>
|
||||
<P>For bodystyle <I>molecule</I>, each set of atoms in the fix group with a
|
||||
different molecule ID is treated as a rigid body.
|
||||
different molecule ID is treated as a rigid body. This option is
|
||||
allowed for fix rigid and fix rigid/small, and their sub-styles. Note
|
||||
that atoms with a molecule ID = 0 will be treated as a single rigid
|
||||
body. For a system with atomic solvent (typically this is atoms with
|
||||
molecule ID = 0) surrounding rigid bodies, this may not be what you
|
||||
want. Thus you should be careful to use a fix group that only
|
||||
includes atoms you want to be part of rigid bodies.
|
||||
</P>
|
||||
<P>For bodystyle <I>group</I>, each of the listed groups is treated as a
|
||||
separate rigid body. Only atoms that are also in the fix group are
|
||||
included in each rigid body.
|
||||
included in each rigid body. This option is only allowed for fix
|
||||
rigid and its sub-styles.
|
||||
</P>
|
||||
<P>IMPORTANT NOTE: To compute the initial center-of-mass position and
|
||||
other properties of each rigid body, the image flags for each atom in
|
||||
@ -157,6 +204,9 @@ the image flags for each atom consistently or that you have used the
|
||||
non-periodic then the image flag of each atom must be 0 in that
|
||||
dimension, else an error is generated.
|
||||
</P>
|
||||
<P>The <I>force</I> and <I>torque</I> keywords discussed next are only allowed for
|
||||
fix rigid and its sub-styles.
|
||||
</P>
|
||||
<P>By default, each rigid body is acted on by other atoms which induce an
|
||||
external force and torque on its center of mass, causing it to
|
||||
translate and rotate. Components of the external center-of-mass force
|
||||
@ -192,8 +242,9 @@ to the motion. The <A HREF = "neigh_modify.html">neigh_modify exclude</A> and
|
||||
<A HREF = "delete_bonds.html">delete_bonds</A> commands are used to do this.
|
||||
</P>
|
||||
<P>For computational efficiency, you should typically define one fix
|
||||
rigid which includes all the desired rigid bodies. LAMMPS will allow
|
||||
multiple rigid fixes to be defined, but it is more expensive.
|
||||
rigid or fix rigid/small command which includes all the desired rigid
|
||||
bodies. LAMMPS will allow multiple rigid fixes to be defined, but it
|
||||
is more expensive.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
@ -218,12 +269,12 @@ body.
|
||||
</P>
|
||||
<HR>
|
||||
|
||||
<P>The <I>rigid</I> and <I>rigid/nve</I> styles perform constant NVE time
|
||||
integration. The only difference is that the <I>rigid</I> style uses an
|
||||
integration technique based on Richardson iterations. The <I>rigid/nve</I>
|
||||
style uses the methods described in the paper by <A HREF = "#Miller">Miller</A>,
|
||||
which are thought to provide better energy conservation than an
|
||||
iterative approach.
|
||||
<P>The <I>rigid</I> and <I>rigid/small</I> and <I>rigid/nve</I> styles perform constant
|
||||
NVE time integration. The only difference is that the <I>rigid</I> and
|
||||
<I>rigid/small</I> styles use an integration technique based on Richardson
|
||||
iterations. The <I>rigid/nve</I> style uses the methods described in the
|
||||
paper by <A HREF = "#Miller">Miller</A>, which are thought to provide better energy
|
||||
conservation than an iterative approach.
|
||||
</P>
|
||||
<P>The <I>rigid/nvt</I> style performs constant NVT integration using a
|
||||
Nose/Hoover thermostat with chains as described originally in
|
||||
@ -232,17 +283,18 @@ the translational and rotational degrees of freedom of the rigid
|
||||
bodies. The rigid-body algorithm used by <I>rigid/nvt</I> is described in
|
||||
the paper by <A HREF = "#Kamberaj">Kamberaj</A>.
|
||||
</P>
|
||||
<P>The <I>rigid/npt</I> and <I>rigid/nph</I> styles performs constant NPT or NPH
|
||||
<P>The <I>rigid/npt</I> and <I>rigid/nph</I> styles perform constant NPT or NPH
|
||||
integration using a Nose/Hoover barostat with chains. For the NPT
|
||||
case, the same Nose/Hoover thermostat is also used as with <I>rigid/nvt</I>.
|
||||
case, the same Nose/Hoover thermostat is also used as with
|
||||
<I>rigid/nvt</I>.
|
||||
</P>
|
||||
<P>The barostat parameters are specified using one or more of the <I>iso</I>,
|
||||
<I>aniso</I>, <I>x</I>, <I>y</I>, <I>z</I> and <I>couple</I> keywords. These keywords give you
|
||||
the ability to specify 3 diagonal components of the external stress
|
||||
tensor, and to couple these components together so that the dimensions
|
||||
they represent are varied together during a constant-pressure
|
||||
simulation. The effects of these keywords are similar to those defined in
|
||||
<A HREF = "fix_nh.html">fix npt/nph</A>
|
||||
simulation. The effects of these keywords are similar to those
|
||||
defined in <A HREF = "fix_nh.html">fix npt/nph</A>
|
||||
</P>
|
||||
<P>NOTE: Currently the <I>rigid/npt</I> and <I>rigid/nph</I> styles do not support
|
||||
triclinic (non-orthongonal) boxes.
|
||||
@ -327,25 +379,31 @@ rigid bodies and how it can be monitored via the fix output is
|
||||
discussed below.
|
||||
</P>
|
||||
<P>The <I>langevin</I> keyword applies a Langevin thermostat to the constant
|
||||
NVE time integration performed by either the <I>rigid</I> or <I>rigid/nve</I>
|
||||
styles. It cannot be used with the <I>rigid/nvt</I> style. The desired
|
||||
temperature at each timestep is a ramped value during the run from
|
||||
<I>Tstart</I> to <I>Tstop</I>. The <I>Tdamp</I> parameter is specified in time units
|
||||
and determines how rapidly the temperature is relaxed. For example, a
|
||||
value of 100.0 means to relax the temperature in a timespan of
|
||||
(roughly) 100 time units (tau or fmsec or psec - see the
|
||||
NVE time integration performed by either the <I>rigid</I> or <I>rigid/small</I>
|
||||
or <I>rigid/nve</I> styles. It cannot be used with the <I>rigid/nvt</I> style.
|
||||
The desired temperature at each timestep is a ramped value during the
|
||||
run from <I>Tstart</I> to <I>Tstop</I>. The <I>Tdamp</I> parameter is specified in
|
||||
time units and determines how rapidly the temperature is relaxed. For
|
||||
example, a value of 100.0 means to relax the temperature in a timespan
|
||||
of (roughly) 100 time units (tau or fmsec or psec - see the
|
||||
<A HREF = "units.html">units</A> command). The random # <I>seed</I> must be a positive
|
||||
integer. The way the Langevin thermostatting operates is explained on
|
||||
the <A HREF = "fix_langevin.html">fix langevin</A> doc page.
|
||||
</P>
|
||||
<P>IMPORTANT NOTE: When the <I>langevin</I> keyword is used with fix rigid
|
||||
versus fix rigid/small, different dynamics will result for parallel
|
||||
runs. This is because of the way random numbers are used in the two
|
||||
cases. The dynamics for the two cases should be statistically
|
||||
similar, but will not be identical, even for a single timestep.
|
||||
</P>
|
||||
<P>The <I>temp</I> and <I>tparam</I> keywords apply a Nose/Hoover thermostat to the
|
||||
NVT time integration performed by the <I>rigid/nvt</I> style. They cannot
|
||||
be used with the <I>rigid</I> or <I>rigid/nve</I> styles. The desired
|
||||
temperature at each timestep is a ramped value during the run from
|
||||
<I>Tstart</I> to <I>Tstop</I>. The <I>Tdamp</I> parameter is specified in time units
|
||||
and determines how rapidly the temperature is relaxed. For example, a
|
||||
value of 100.0 means to relax the temperature in a timespan of
|
||||
(roughly) 100 time units (tau or fmsec or psec - see the
|
||||
be used with the <I>rigid</I> or <I>rigid/small</I> or <I>rigid/nve</I> styles. The
|
||||
desired temperature at each timestep is a ramped value during the run
|
||||
from <I>Tstart</I> to <I>Tstop</I>. The <I>Tdamp</I> parameter is specified in time
|
||||
units and determines how rapidly the temperature is relaxed. For
|
||||
example, a value of 100.0 means to relax the temperature in a timespan
|
||||
of (roughly) 100 time units (tau or fmsec or psec - see the
|
||||
<A HREF = "units.html">units</A> command).
|
||||
</P>
|
||||
<P>Nose/Hoover chains are used in conjunction with this thermostat. The
|
||||
@ -371,8 +429,9 @@ temperature as well without use of the Langevin or Nose/Hoover options
|
||||
associated with the fix rigid commands.
|
||||
</P>
|
||||
<P>The <I>infile</I> keyword allows a file of rigid body attributes to be read
|
||||
in from a file, rather then letting LAMMPS compute them. There are 3
|
||||
such attributes: the total mass of the rigid body, its center-of-mass
|
||||
in from a file, rather then letting LAMMPS compute them. It can only
|
||||
be used with the fix rigid command and its variants. There are 3 such
|
||||
attributes: the total mass of the rigid body, its center-of-mass
|
||||
position, and its 6 moments of inertia. For rigid bodies consisting
|
||||
of point particles or non-overlapping finite-size particles, LAMMPS
|
||||
can compute these values accurately. However, for rigid bodies
|
||||
@ -382,14 +441,13 @@ amount of error this induces depends on the amount of overlap. To
|
||||
avoid this issue, the values can be pre-computed (e.g. using Monte
|
||||
Carlo integration).
|
||||
</P>
|
||||
<P>The format of the file is as follows. Note that The file does not
|
||||
<P>The format of the file is as follows. Note that the file does not
|
||||
have to list attributes for every rigid body integrated by fix rigid.
|
||||
Only bodies which the file specifies will have their computed
|
||||
attributes overridden. The file can contain
|
||||
initial blank lines or comment lines starting with "#" which
|
||||
are ignored. The first non-blank, non-comment line should
|
||||
list N = the number of lines to follow. The N successive lines
|
||||
contain the following information:
|
||||
attributes overridden. The file can contain initial blank lines or
|
||||
comment lines starting with "#" which are ignored. The first
|
||||
non-blank, non-comment line should list N = the number of lines to
|
||||
follow. The N successive lines contain the following information:
|
||||
</P>
|
||||
<PRE>ID1 masstotal xcm ycm zcm ixx iyy izz ixy ixz iyz
|
||||
ID2 masstotal xcm ycm zcm ixx iyy izz ixy ixz iyz
|
||||
@ -525,13 +583,13 @@ rigid/nvt.
|
||||
|
||||
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
|
||||
</P>
|
||||
<P>No information about the <I>rigid</I> and <I>rigid/nve</I> fixes are written to
|
||||
<A HREF = "restart.html">binary restart files</A>. For style <I>rigid/nvt</I> the state
|
||||
of the Nose/Hoover thermostat is written to <A HREF = "restart.html">binary restart
|
||||
files</A>. See the <A HREF = "read_restart.html">read_restart</A> 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.
|
||||
<P>No information about the <I>rigid</I> and <I>rigid/small</I> and <I>rigid/nve</I>
|
||||
fixes are written to <A HREF = "restart.html">binary restart files</A>. For style
|
||||
<I>rigid/nvt</I> the state of the Nose/Hoover thermostat is written to
|
||||
<A HREF = "restart.html">binary restart files</A>. See the
|
||||
<A HREF = "read_restart.html">read_restart</A> 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.
|
||||
</P>
|
||||
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by the
|
||||
rigid/nvt fix to add the energy change induced by the thermostatting
|
||||
@ -543,7 +601,10 @@ supported by the rigid/npt and rigid/nph fixes to change the computes used
|
||||
to calculate the instantaneous pressure tensor. Note that the rigid/nvt fix
|
||||
does not use any external compute to compute instantaneous temperature.
|
||||
</P>
|
||||
<P>The rigid and rigid/nve fixes compute a global scalar which can be
|
||||
<P>No global or per-atom quantities are stored by the <I>rigid/small</I> fix
|
||||
for access by various <A HREF = "Section_howto.html#howto_15">output commands</A>.
|
||||
</P>
|
||||
<P>The <I>rigid</I> and <I>rigid/nve</I> fixes compute a global scalar which can be
|
||||
accessed by various <A HREF = "Section_howto.html#howto_15">output commands</A>.
|
||||
The scalar value calculated by these fixes is "intensive". The scalar
|
||||
is the current temperature of the collection of rigid bodies. This is
|
||||
@ -555,24 +616,25 @@ where I = the moment of inertia tensor of the body and w = its angular
|
||||
velocity. Degrees of freedom constrained by the <I>force</I> and <I>torque</I>
|
||||
keywords are removed from this calculation.
|
||||
</P>
|
||||
<P>The rigid/nvt, rigid/npt and rigid/nph fix compute a global scalar
|
||||
which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
|
||||
<P>The <I>rigid/nvt</I>, <I>rigid/npt</I>, and <I>rigid/nph</I> fixes compute a global
|
||||
scalar which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
|
||||
commands</A>. The scalar value calculated by
|
||||
these fixes is "extensive". The scalar is the cumulative energy
|
||||
change due to the thermostatting and barostatting the fix performs.
|
||||
</P>
|
||||
<P>All of these fixes compute a global array of values which can be
|
||||
accessed by various <A HREF = "Section_howto.html#howto_15">output commands</A>.
|
||||
The number of rows in the array is equal to the number of rigid
|
||||
bodies. The number of columns is 15. Thus for each rigid body, 15
|
||||
values are stored: the xyz coords of the center of mass (COM), the xyz
|
||||
components of the COM velocity, the xyz components of the force acting
|
||||
on the COM, the xyz components of the torque acting on the COM, and
|
||||
the xyz image flags of the COM, which have the same meaning as image
|
||||
flags for atom positions (see the "dump" command). The force and
|
||||
torque values in the array are not affected by the <I>force</I> and
|
||||
<I>torque</I> keywords in the fix rigid command; they reflect values before
|
||||
any changes are made by those keywords.
|
||||
<P>All of the <I>rigid</I> fixes (but not the <I>rigid/small</I> fix) compute a
|
||||
global array of values which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
|
||||
commands</A>. The number of rows in the
|
||||
array is equal to the number of rigid bodies. The number of columns
|
||||
is 15. Thus for each rigid body, 15 values are stored: the xyz coords
|
||||
of the center of mass (COM), the xyz components of the COM velocity,
|
||||
the xyz components of the force acting on the COM, the xyz components
|
||||
of the torque acting on the COM, and the xyz image flags of the COM,
|
||||
which have the same meaning as image flags for atom positions (see the
|
||||
"dump" command). The force and torque values in the array are not
|
||||
affected by the <I>force</I> and <I>torque</I> keywords in the fix rigid
|
||||
command; they reflect values before any changes are made by those
|
||||
keywords.
|
||||
</P>
|
||||
<P>The ordering of the rigid bodies (by row in the array) is as follows.
|
||||
For the <I>single</I> keyword there is just one rigid body. For the
|
||||
@ -595,11 +657,6 @@ of the <A HREF = "run.html">run</A> command. These fixes are not invoked during
|
||||
LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
|
||||
LAMMPS</A> section for more info.
|
||||
</P>
|
||||
<P>These fixes performs an MPI_Allreduce each timestep that is
|
||||
proportional in length to the number of rigid bodies. Hence they will
|
||||
not scale well in parallel if large numbers of rigid bodies are
|
||||
simulated.
|
||||
</P>
|
||||
<P><B>Related commands:</B>
|
||||
</P>
|
||||
<P><A HREF = "delete_bonds.html">delete_bonds</A>, <A HREF = "neigh_modify.html">neigh_modify</A>
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
:line
|
||||
|
||||
fix rigid command :h3
|
||||
fix rigid/small command :h3
|
||||
fix rigid/nve command :h3
|
||||
fix rigid/nvt command :h3
|
||||
fix rigid/npt command :h3
|
||||
@ -17,7 +18,7 @@ fix rigid/nph command :h3
|
||||
fix ID group-ID style bodystyle args keyword values ... :pre
|
||||
|
||||
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
||||
style = {rigid} or {rigid/nve} or {rigid/nvt} or {rigid/npt} or {rigid/nph} :l
|
||||
style = {rigid} or {rigid/small} or {rigid/nve} or {rigid/nvt} or {rigid/npt} or {rigid/nph} :l
|
||||
bodystyle = {single} or {molecule} or {group} :l
|
||||
{single} args = none
|
||||
{molecule} args = none
|
||||
@ -62,9 +63,11 @@ keyword = {langevin} or {temp} or {iso} or {aniso} or {x} or {y} or {z} or {coup
|
||||
[Examples:]
|
||||
|
||||
fix 1 clump rigid single
|
||||
fix 1 clump rigid/small molecule
|
||||
fix 1 clump rigid single force 1 off off on langevin 1.0 1.0 1.0 428984
|
||||
fix 1 polychains rigid/nvt molecule temp 1.0 1.0 5.0
|
||||
fix 1 polychains rigid molecule force 1*5 off off off force 6*10 off off on
|
||||
fix 1 polychains rigid/small molecule langevin 1.0 1.0 1.0 428984
|
||||
fix 2 fluid rigid group 3 clump1 clump2 clump3 torque * off off off
|
||||
fix 1 rods rigid/npt molecule temp 300.0 300.0 100.0 iso 0.5 0.5 10.0
|
||||
fix 1 particles rigid/npt molecule temp 1.0 1.0 5.0 x 0.5 0.5 1.0 z 0.5 0.5 1.0 couple xz
|
||||
@ -97,6 +100,41 @@ These fixes also update the positions and velocities of the atoms in
|
||||
each rigid body via time integration, in the NVE, NVT, NPT, or NPH
|
||||
ensemble, as described below.
|
||||
|
||||
There are two main variants of this fix, fix rigid and fix
|
||||
rigid/small. The NVE/NVT/NPT/NHT versions belong to one of the two
|
||||
variants, as their style names indicate.
|
||||
|
||||
IMPORTANT NOTE: Not all of the bodystyle options and keyword/value
|
||||
options are available for both the {rigid} and {rigid/small} variants.
|
||||
See details below.
|
||||
|
||||
The {rigid} variant is typically the best choice for a system with a
|
||||
small number of large rigid bodies, each of which can extend across
|
||||
the domain of many processors. It operates by creating a single
|
||||
global list of rigid bodies, which all processors contribute to.
|
||||
MPI_Allreduce operations are performed each timestep to sum the
|
||||
contributions from each processor to the force and torque on all the
|
||||
bodies. This operation will not scale well in parallel if large
|
||||
numbers of rigid bodies are simulated.
|
||||
|
||||
The {rigid/small} variant is typically best for a system with a large
|
||||
number of small rigid bodies. Each body is assigned to the atom
|
||||
closest to the geometrical center of the body. The fix operates using
|
||||
local lists of rigid bodies owned by each processor and information is
|
||||
summed and exchanged via local communication between neighboring
|
||||
processors when ghost atom info is accumlated. This means that the
|
||||
ghost atom cutoff be large enough to cover the distance between the
|
||||
atom that owns the body and every other atom in the body. If the
|
||||
"pair_style"_pair_style.html cutoff is not of sufficient extent to
|
||||
insure this, then the "communicate cutoff"_communicate.html command
|
||||
can be used.
|
||||
|
||||
Which of the two variants is faster for a particular problem is hard
|
||||
to predict. The best way to decide is to perform a short test run.
|
||||
Both variants should give identical numerical answers for short runs.
|
||||
Long runs should give statistically similar results, but round-off
|
||||
differences will accumulate to produce divergent trajectories.
|
||||
|
||||
IMPORTANT NOTE: You should not update the atoms in rigid bodies via
|
||||
other time-integration fixes (e.g. "fix nve"_fix_nve.html, "fix
|
||||
nvt"_fix_nvt.html, "fix npt"_fix_npt.html), or you will be integrating
|
||||
@ -123,14 +161,22 @@ most one rigid body. Which atoms are in which bodies can be defined
|
||||
via several options.
|
||||
|
||||
For bodystyle {single} the entire fix group of atoms is treated as one
|
||||
rigid body.
|
||||
rigid body. This option is only allowed for fix rigid and its
|
||||
sub-styles.
|
||||
|
||||
For bodystyle {molecule}, each set of atoms in the fix group with a
|
||||
different molecule ID is treated as a rigid body.
|
||||
different molecule ID is treated as a rigid body. This option is
|
||||
allowed for fix rigid and fix rigid/small, and their sub-styles. Note
|
||||
that atoms with a molecule ID = 0 will be treated as a single rigid
|
||||
body. For a system with atomic solvent (typically this is atoms with
|
||||
molecule ID = 0) surrounding rigid bodies, this may not be what you
|
||||
want. Thus you should be careful to use a fix group that only
|
||||
includes atoms you want to be part of rigid bodies.
|
||||
|
||||
For bodystyle {group}, each of the listed groups is treated as a
|
||||
separate rigid body. Only atoms that are also in the fix group are
|
||||
included in each rigid body.
|
||||
included in each rigid body. This option is only allowed for fix
|
||||
rigid and its sub-styles.
|
||||
|
||||
IMPORTANT NOTE: To compute the initial center-of-mass position and
|
||||
other properties of each rigid body, the image flags for each atom in
|
||||
@ -144,6 +190,9 @@ the image flags for each atom consistently or that you have used the
|
||||
non-periodic then the image flag of each atom must be 0 in that
|
||||
dimension, else an error is generated.
|
||||
|
||||
The {force} and {torque} keywords discussed next are only allowed for
|
||||
fix rigid and its sub-styles.
|
||||
|
||||
By default, each rigid body is acted on by other atoms which induce an
|
||||
external force and torque on its center of mass, causing it to
|
||||
translate and rotate. Components of the external center-of-mass force
|
||||
@ -179,8 +228,9 @@ to the motion. The "neigh_modify exclude"_neigh_modify.html and
|
||||
"delete_bonds"_delete_bonds.html commands are used to do this.
|
||||
|
||||
For computational efficiency, you should typically define one fix
|
||||
rigid which includes all the desired rigid bodies. LAMMPS will allow
|
||||
multiple rigid fixes to be defined, but it is more expensive.
|
||||
rigid or fix rigid/small command which includes all the desired rigid
|
||||
bodies. LAMMPS will allow multiple rigid fixes to be defined, but it
|
||||
is more expensive.
|
||||
|
||||
:line
|
||||
|
||||
@ -205,12 +255,12 @@ body.
|
||||
|
||||
:line
|
||||
|
||||
The {rigid} and {rigid/nve} styles perform constant NVE time
|
||||
integration. The only difference is that the {rigid} style uses an
|
||||
integration technique based on Richardson iterations. The {rigid/nve}
|
||||
style uses the methods described in the paper by "Miller"_#Miller,
|
||||
which are thought to provide better energy conservation than an
|
||||
iterative approach.
|
||||
The {rigid} and {rigid/small} and {rigid/nve} styles perform constant
|
||||
NVE time integration. The only difference is that the {rigid} and
|
||||
{rigid/small} styles use an integration technique based on Richardson
|
||||
iterations. The {rigid/nve} style uses the methods described in the
|
||||
paper by "Miller"_#Miller, which are thought to provide better energy
|
||||
conservation than an iterative approach.
|
||||
|
||||
The {rigid/nvt} style performs constant NVT integration using a
|
||||
Nose/Hoover thermostat with chains as described originally in
|
||||
@ -219,17 +269,18 @@ the translational and rotational degrees of freedom of the rigid
|
||||
bodies. The rigid-body algorithm used by {rigid/nvt} is described in
|
||||
the paper by "Kamberaj"_#Kamberaj.
|
||||
|
||||
The {rigid/npt} and {rigid/nph} styles performs constant NPT or NPH
|
||||
The {rigid/npt} and {rigid/nph} styles perform constant NPT or NPH
|
||||
integration using a Nose/Hoover barostat with chains. For the NPT
|
||||
case, the same Nose/Hoover thermostat is also used as with {rigid/nvt}.
|
||||
case, the same Nose/Hoover thermostat is also used as with
|
||||
{rigid/nvt}.
|
||||
|
||||
The barostat parameters are specified using one or more of the {iso},
|
||||
{aniso}, {x}, {y}, {z} and {couple} keywords. These keywords give you
|
||||
the ability to specify 3 diagonal components of the external stress
|
||||
tensor, and to couple these components together so that the dimensions
|
||||
they represent are varied together during a constant-pressure
|
||||
simulation. The effects of these keywords are similar to those defined in
|
||||
"fix npt/nph"_fix_nh.html
|
||||
simulation. The effects of these keywords are similar to those
|
||||
defined in "fix npt/nph"_fix_nh.html
|
||||
|
||||
NOTE: Currently the {rigid/npt} and {rigid/nph} styles do not support
|
||||
triclinic (non-orthongonal) boxes.
|
||||
@ -314,25 +365,31 @@ rigid bodies and how it can be monitored via the fix output is
|
||||
discussed below.
|
||||
|
||||
The {langevin} keyword applies a Langevin thermostat to the constant
|
||||
NVE time integration performed by either the {rigid} or {rigid/nve}
|
||||
styles. It cannot be used with the {rigid/nvt} style. 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 100.0 means to relax the temperature in a timespan of
|
||||
(roughly) 100 time units (tau or fmsec or psec - see the
|
||||
NVE time integration performed by either the {rigid} or {rigid/small}
|
||||
or {rigid/nve} styles. It cannot be used with the {rigid/nvt} style.
|
||||
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 100.0 means to relax the temperature in a timespan
|
||||
of (roughly) 100 time units (tau or fmsec or psec - see the
|
||||
"units"_units.html command). The random # {seed} must be a positive
|
||||
integer. The way the Langevin thermostatting operates is explained on
|
||||
the "fix langevin"_fix_langevin.html doc page.
|
||||
|
||||
IMPORTANT NOTE: When the {langevin} keyword is used with fix rigid
|
||||
versus fix rigid/small, different dynamics will result for parallel
|
||||
runs. This is because of the way random numbers are used in the two
|
||||
cases. The dynamics for the two cases should be statistically
|
||||
similar, but will not be identical, even for a single timestep.
|
||||
|
||||
The {temp} and {tparam} keywords apply a Nose/Hoover thermostat to the
|
||||
NVT time integration performed by the {rigid/nvt} style. They cannot
|
||||
be used with the {rigid} or {rigid/nve} styles. 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 100.0 means to relax the temperature in a timespan of
|
||||
(roughly) 100 time units (tau or fmsec or psec - see the
|
||||
be used with the {rigid} or {rigid/small} or {rigid/nve} styles. 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 100.0 means to relax the temperature in a timespan
|
||||
of (roughly) 100 time units (tau or fmsec or psec - see the
|
||||
"units"_units.html command).
|
||||
|
||||
Nose/Hoover chains are used in conjunction with this thermostat. The
|
||||
@ -358,8 +415,9 @@ temperature as well without use of the Langevin or Nose/Hoover options
|
||||
associated with the fix rigid commands.
|
||||
|
||||
The {infile} keyword allows a file of rigid body attributes to be read
|
||||
in from a file, rather then letting LAMMPS compute them. There are 3
|
||||
such attributes: the total mass of the rigid body, its center-of-mass
|
||||
in from a file, rather then letting LAMMPS compute them. It can only
|
||||
be used with the fix rigid command and its variants. There are 3 such
|
||||
attributes: the total mass of the rigid body, its center-of-mass
|
||||
position, and its 6 moments of inertia. For rigid bodies consisting
|
||||
of point particles or non-overlapping finite-size particles, LAMMPS
|
||||
can compute these values accurately. However, for rigid bodies
|
||||
@ -369,14 +427,13 @@ amount of error this induces depends on the amount of overlap. To
|
||||
avoid this issue, the values can be pre-computed (e.g. using Monte
|
||||
Carlo integration).
|
||||
|
||||
The format of the file is as follows. Note that The file does not
|
||||
The format of the file is as follows. Note that the file does not
|
||||
have to list attributes for every rigid body integrated by fix rigid.
|
||||
Only bodies which the file specifies will have their computed
|
||||
attributes overridden. The file can contain
|
||||
initial blank lines or comment lines starting with "#" which
|
||||
are ignored. The first non-blank, non-comment line should
|
||||
list N = the number of lines to follow. The N successive lines
|
||||
contain the following information:
|
||||
attributes overridden. The file can contain initial blank lines or
|
||||
comment lines starting with "#" which are ignored. The first
|
||||
non-blank, non-comment line should list N = the number of lines to
|
||||
follow. The N successive lines contain the following information:
|
||||
|
||||
ID1 masstotal xcm ycm zcm ixx iyy izz ixy ixz iyz
|
||||
ID2 masstotal xcm ycm zcm ixx iyy izz ixy ixz iyz
|
||||
@ -512,13 +569,13 @@ rigid/nvt.
|
||||
|
||||
[Restart, fix_modify, output, run start/stop, minimize info:]
|
||||
|
||||
No information about the {rigid} and {rigid/nve} fixes are written to
|
||||
"binary restart files"_restart.html. For style {rigid/nvt} the state
|
||||
of the Nose/Hoover thermostat is written 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.
|
||||
No information about the {rigid} and {rigid/small} and {rigid/nve}
|
||||
fixes are written to "binary restart files"_restart.html. For style
|
||||
{rigid/nvt} the state of the Nose/Hoover thermostat is written 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_modify"_fix_modify.html {energy} option is supported by the
|
||||
rigid/nvt fix to add the energy change induced by the thermostatting
|
||||
@ -530,7 +587,10 @@ supported by the rigid/npt and rigid/nph fixes to change the computes used
|
||||
to calculate the instantaneous pressure tensor. Note that the rigid/nvt fix
|
||||
does not use any external compute to compute instantaneous temperature.
|
||||
|
||||
The rigid and rigid/nve fixes compute a global scalar which can be
|
||||
No global or per-atom quantities are stored by the {rigid/small} fix
|
||||
for access by various "output commands"_Section_howto.html#howto_15.
|
||||
|
||||
The {rigid} and {rigid/nve} fixes compute a global scalar which can be
|
||||
accessed by various "output commands"_Section_howto.html#howto_15.
|
||||
The scalar value calculated by these fixes is "intensive". The scalar
|
||||
is the current temperature of the collection of rigid bodies. This is
|
||||
@ -542,24 +602,25 @@ where I = the moment of inertia tensor of the body and w = its angular
|
||||
velocity. Degrees of freedom constrained by the {force} and {torque}
|
||||
keywords are removed from this calculation.
|
||||
|
||||
The rigid/nvt, rigid/npt and rigid/nph fix compute a global scalar
|
||||
which can be accessed by various "output
|
||||
The {rigid/nvt}, {rigid/npt}, and {rigid/nph} fixes compute a global
|
||||
scalar which can be accessed by various "output
|
||||
commands"_Section_howto.html#howto_15. The scalar value calculated by
|
||||
these fixes is "extensive". The scalar is the cumulative energy
|
||||
change due to the thermostatting and barostatting the fix performs.
|
||||
|
||||
All of these fixes compute a global array of values which can be
|
||||
accessed by various "output commands"_Section_howto.html#howto_15.
|
||||
The number of rows in the array is equal to the number of rigid
|
||||
bodies. The number of columns is 15. Thus for each rigid body, 15
|
||||
values are stored: the xyz coords of the center of mass (COM), the xyz
|
||||
components of the COM velocity, the xyz components of the force acting
|
||||
on the COM, the xyz components of the torque acting on the COM, and
|
||||
the xyz image flags of the COM, which have the same meaning as image
|
||||
flags for atom positions (see the "dump" command). The force and
|
||||
torque values in the array are not affected by the {force} and
|
||||
{torque} keywords in the fix rigid command; they reflect values before
|
||||
any changes are made by those keywords.
|
||||
All of the {rigid} fixes (but not the {rigid/small} fix) compute a
|
||||
global array of values which can be accessed by various "output
|
||||
commands"_Section_howto.html#howto_15. The number of rows in the
|
||||
array is equal to the number of rigid bodies. The number of columns
|
||||
is 15. Thus for each rigid body, 15 values are stored: the xyz coords
|
||||
of the center of mass (COM), the xyz components of the COM velocity,
|
||||
the xyz components of the force acting on the COM, the xyz components
|
||||
of the torque acting on the COM, and the xyz image flags of the COM,
|
||||
which have the same meaning as image flags for atom positions (see the
|
||||
"dump" command). The force and torque values in the array are not
|
||||
affected by the {force} and {torque} keywords in the fix rigid
|
||||
command; they reflect values before any changes are made by those
|
||||
keywords.
|
||||
|
||||
The ordering of the rigid bodies (by row in the array) is as follows.
|
||||
For the {single} keyword there is just one rigid body. For the
|
||||
@ -582,11 +643,6 @@ These fixes are all part of the RIGID 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.
|
||||
|
||||
These fixes performs an MPI_Allreduce each timestep that is
|
||||
proportional in length to the number of rigid bodies. Hence they will
|
||||
not scale well in parallel if large numbers of rigid bodies are
|
||||
simulated.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"delete_bonds"_delete_bonds.html, "neigh_modify"_neigh_modify.html
|
||||
|
||||
Reference in New Issue
Block a user