git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@9460 f3b2605a-c512-4ea7-a41b-209d697bcdaa

This commit is contained in:
sjplimp
2013-02-12 23:17:45 +00:00
parent c521201ea5
commit 13a59d2573
2 changed files with 241 additions and 128 deletions

View File

@ -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>

View File

@ -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