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

This commit is contained in:
sjplimp 2010-01-29 16:16:38 +00:00
parent 5c725e3fdf
commit ad99370f5d
6 changed files with 376 additions and 119 deletions

View File

@ -1209,7 +1209,7 @@ vector input could be a column of an array.
<TR><TD ><A HREF = "variable.html">variables</A></TD><TD > global scalars, per-atom vectors</TD><TD > global scalar, per-atom vector</TD><TD ></TD></TR>
<TR><TD ><A HREF = "compute_reduce.html">compute reduce</A></TD><TD > global/per-atom/local vectors</TD><TD > global scalar/vector</TD><TD ></TD></TR>
<TR><TD ><A HREF = "compute_property_atom.html">compute property/atom</A></TD><TD > per-atom vectors</TD><TD > per-atom vector/array</TD><TD ></TD></TR>
<TR><TD ><A HREF = "compute_local_atom.html">compute property/local</A></TD><TD > local vectors</TD><TD > local vector/array</TD><TD ></TD></TR>
<TR><TD ><A HREF = "compute_property_local.html">compute property/local</A></TD><TD > local vectors</TD><TD > local vector/array</TD><TD ></TD></TR>
<TR><TD ><A HREF = "fix_ave_atom.html">fix ave/atom</A></TD><TD > per-atom vectors</TD><TD > per-atom vector/array</TD><TD ></TD></TR>
<TR><TD ><A HREF = "fix_ave_time.html">fix ave/time</A></TD><TD > global scalars/vectors</TD><TD > global scalar/vector/array, file</TD><TD ></TD></TR>
<TR><TD ><A HREF = "fix_ave_spatial.html">fix ave/spatial</A></TD><TD > per-atom vectors</TD><TD > global array, file</TD><TD ></TD></TR>

View File

@ -1199,7 +1199,7 @@ Command: Input: Output:
"variables"_variable.html: global scalars, per-atom vectors: global scalar, per-atom vector:
"compute reduce"_compute_reduce.html: global/per-atom/local vectors: global scalar/vector:
"compute property/atom"_compute_property_atom.html: per-atom vectors: per-atom vector/array:
"compute property/local"_compute_local_atom.html: local vectors: local vector/array:
"compute property/local"_compute_property_local.html: local vectors: local vector/array:
"fix ave/atom"_fix_ave_atom.html: per-atom vectors: per-atom vector/array:
"fix ave/time"_fix_ave_time.html: global scalars/vectors: global scalar/vector/array, file:
"fix ave/spatial"_fix_ave_spatial.html: per-atom vectors: global array, file:

View File

@ -30,7 +30,8 @@ one or more input values can be listed
<LI>value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[N], f_ID, f_ID[N], v_name
<PRE> x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component)c_ID = scalar or vector calculated by a compute with ID
<PRE> x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component)
c_ID = scalar or vector calculated by a compute with ID
c_ID[I] = Ith component of vector or Ith column of array calculated by a compute with ID
f_ID = scalar or vector calculated by a fix with ID
f_ID[I] = Ith component of vector or Ith column of array calculated by a fix with ID

View File

@ -21,7 +21,8 @@ lo,hi = lo/hi bounds within which to histogram
Nbin = # of histogram bins
one or more input values can be listed :l
value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :l
x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component)c_ID = scalar or vector calculated by a compute with ID
x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component)
c_ID = scalar or vector calculated by a compute with ID
c_ID\[I\] = Ith component of vector or Ith column of array calculated by a compute with ID
f_ID = scalar or vector calculated by a fix with ID
f_ID\[I\] = Ith component of vector or Ith column of array calculated by a fix with ID

View File

@ -9,15 +9,21 @@
<HR>
<H3>fix rigid
<H3>fix rigid command
</H3>
<H3>fix rigid/nve command
</H3>
<H3>fix rigid/nvt command
</H3>
<H3>fix rigid/npt command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID rigid bodystyle args keyword values ...
<PRE>fix ID group-ID style bodystyle args keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>rigid = style name of this fix command
<LI>style = <I>rigid</I> or <I>rigid/nve</I> or <I>rigid/nvt</I> or <I>rigid/npt</I>
<LI>bodystyle = <I>single</I> or <I>molecule</I> or <I>group</I>
@ -29,9 +35,21 @@
</PRE>
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>force</I> or <I>torque</I>
<LI>keyword = <I>temp</I> or <I>press</I> or <I>tparam</I> or <I>pparam</I> or <I>force</I> or <I>torque</I>
<PRE> <I>force</I> values = M xflag yflag zflag
<PRE> <I>temp</I> values = Tstart Tstop Tperiod
Tstart,Tstop = desired temperature at start/stop of run (temperature units)
Tdamp = temperature damping parameter (time units)
<I>press</I> values = Pstart Pstop Pperiod
Pstart,Pstop = desired temperature at start/stop of run (pressure units)
Pdamp = pressure damping parameter (time units)
<I>tparam</I> values = Tchain Titer Torder
Tchain = length of Nose/Hoover thermostat chain
Titer = number of thermostat iterations performed
Torder = 3 or 5 = Yoshida-Suzuki integration parameters
<I>pparam</I> values = Pchain
Pchain = length of Nose/Hoover barostat chain
<I>force</I> values = M xflag yflag zflag
M = which rigid body from 1-Nbody (see asterisk form below)
xflag,yflag,zflag = off/on if component of center-of-mass force is active
<I>torque</I> values = M xflag yflag zflag
@ -44,9 +62,9 @@
</P>
<PRE>fix 1 clump rigid single
fix 1 clump rigid single force 1 off off on
fix 1 polychains rigid molecule
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 2 fluid rigid group 3 clump1 clump2 clump3
fix 2 fluid rigid group 3 clump1 clump2 clump3 temp 300.0 320.0 100.0 press 0.0 0.0 1000.0
fix 2 fluid rigid group 3 clump1 clump2 clump3 torque * off off off
</PRE>
<P><B>Description:</B>
@ -71,26 +89,35 @@ command can also be used to rigidify small molecules of 2, 3, or 4
atoms, e.g. water molecules. That fix treats the constituent atoms as
point masses.
</P>
<P>The constituent particles within a rigid body can be point particles
(the default in LAMMPS) or finite-size particles, such as spheroids
and ellipsoids. See the <A HREF = "shape.html">shape</A> command and <A HREF = "atom_style.html">atom_style
granular</A> for more details on these kinds of
particles. Finite-size particles contribute differently to the moment
of inertia of a rigid body than do point particles. Finite-size
particles can also experience torque (e.g. due to <A HREF = "pair_gran.html">frictional granular
interactions</A>) and have an orientation. These
contributions are accounted for by the fix.
<P>These fixes also update the positions and velocities of the atoms in
each rigid body via time integration. The <I>rigid</I> and <I>rigid/nve</I>
styles do this via constant NVE 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>
<P>Forces between particles within a body do not contribute to the
external force or torque on the body. Thus for computational
efficiency, you may wish to turn off pairwise and bond interactions
between particles within each rigid body. 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. For finite-size particles this also
means the particles can be highly overlapped when creating the rigid
body.
<P>The <I>rigid/nvt</I> style performs constant NVT integration using a
Nose/Hoover thermostat with chains as described originally in
<A HREF = "#Hoover">(Hoover)</A> and <A HREF = "#Martyna">(Martyna)</A>, which thermostats both
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>IMPORTANT NOTE: This fix is overkill if you simply want to hold a
<P>The <I>rigid/npt</I> style performs constant NPT integration using a
Nose/Hoover thermostat and barostat with chains, as described
originally in <A HREF = "#Hoover">(Hoover)</A> and <A HREF = "#Martyna">(Martyna)</A>. As with
<I>rigid/nvt</I>, the thermostat affects both the translational and
rotational degrees of freedom of the rigid bodies. The barostat
adjusts the simulation box size isotropically. The rigid-body
algorithm used by <I>rigid/nvt</I> is described in the paper by
<A HREF = "#Kamberaj">Kamberaj</A>.
</P>
<P>IMPORTANT NOTE: You should not update the atoms in rigid bodies via
other time-integration fixes (e.g. nve, nvt, npt), or you will be
integrating their motion more than once each timestep.
</P>
<P>IMPORTANT NOTE: These fixes are overkill if you simply want to hold a
collection of atoms stationary or have them move with a constant
velocity. A simpler way to hold atoms stationary is to not include
those atoms in your time integration fix. E.g. use "fix 1 mobile nve"
@ -101,9 +128,26 @@ command), setting the force on them to 0.0 (via the <A HREF = "fix_setforce.html
setforce</A> command), and integrating them as usual
(e.g. via the <A HREF = "fix_nve.html">fix nve</A> command).
</P>
<P>IMPORTANT NOTE: This fix updates the positions and velocities of the
rigid atoms with a constant-energy time integration, so you should not
update the same atoms via other fixes (e.g. nve, nvt, npt).
<HR>
<P>The constituent particles within a rigid body can be point particles
(the default in LAMMPS) or finite-size particles, such as spheroids
and ellipsoids. See the <A HREF = "shape.html">shape</A> command and <A HREF = "atom_style.html">atom_style
granular</A> for more details on these kinds of
particles. Finite-size particles contribute differently to the moment
of inertia of a rigid body than do point particles. Finite-size
particles can also experience torque (e.g. due to <A HREF = "pair_gran.html">frictional granular
interactions</A>) and have an orientation. These
contributions are accounted for by these fixes.
</P>
<P>Forces between particles within a body do not contribute to the
external force or torque on the body. Thus for computational
efficiency, you may wish to turn off pairwise and bond interactions
between particles within each rigid body. 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. For finite-size particles this also
means the particles can be highly overlapped when creating the rigid
body.
</P>
<HR>
@ -155,24 +199,82 @@ bond interactions within each rigid body, as they no longer contribute
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 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.
<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.
</P>
<P>This fix uses constant-energy NVE-style integration, so you may need
to impose additional constraints to control the temperature of an
ensemble of rigid bodies. You can use <A HREF = "fix_langevin.html">fix
langevin</A> for this purpose to treat the system as
<HR>
<P>As stated above, the <I>rigid</I> and <I>rigid/nve</I> styles
perform constant NVE time integration. Thus the
<I>temp</I>, <I>press</I>, <I>tparam</I>, and <I>pparam</I> keywords cannot
be used with these styles.
</P>
<P>The <I>rigid/nvt</I> style performs constant NVT time integration, using a
temperature it computes for the rigid bodies which includes their
translational and rotational motion. The <I>temp</I> keyword must be used
with this 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).
</P>
<P>Nose/Hoover chains are used in conjunction with this thermostat. The
<I>tparam</I> keyword can optionally be used to change the chain settings
used. <I>Tchain</I> is the number of thermostats in the Nose Hoover chain.
This value, along with <I>Tdamp</I> can be varied to dampen undesirable
oscillations in temperature that can occur in a simulation. As a rule
of thumb, increasing the chain length should lead to smaller
oscillations. The <I>rigid/nvt</I> style does not allow the use of the
<I>press</I> and <I>pparam</I> keywords.
</P>
<P>The <I>rigid/npt</I> style performs constant NPT time integration, using a
temperature it computes for the rigid bodies which includes their
translational and rotational motion, and a pressure which includes the
conribution of the rigid bodies to the virial of the system. The
<I>temp</I> and <I>press</I> keywords must be used with this 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). Similarly, the desired pressure at each
timestep is a ramped value during the run from <I>Pstart</I> to <I>Pstop</I>.
The <I>Pdamp</I> parameter is specified in time units and determines how
rapidly the presssure is relaxed. For example, a value of 1000.0
means to relax the temperature in a timespan of (roughly) 1000 time
units. The pressure of the system is controlled by varying the box
volume via isotropic rescaling. This means the simulation box retains
its aspect ratio, and the center-of-mass of each rigid body is
rescaled to new coordinates.
</P>
<P>Nose/Hoover chains are used in conjunction with this
thermostat/barostat combination. The <I>pparam</I> keyword can optionally
be used to change the chain settings used. <I>Pchain</I> is the number of
thermostats in the Nose Hoover chain. This value, along with <I>Tdamp</I>
and <I>Pdamp</I> can be varied to dampen undesirable oscillations in
pressure that can occur in a simulation. As a rule of thumb,
increasing the chain length should lead to smaller oscillations. The
<I>rigid/npt</I> style does not allow the use of the <I>tparam</I> keyword.
</P>
<P>There are alternate ways to thermostat a system of rigid bodies. You
can use <A HREF = "fix_langevin.html">fix langevin</A> to treat the system as
effectively immersed in an implicit solvent, e.g. a Brownian dynamics
model. Or you can thermostat only the non-rigid atoms that surround
one or more rigid bodies (i.e. explicit solvent) by appropriate choice
of groups in the compute and fix commands for temperature and
thermostatting.
model. For hybrid systems with both rigid bodies and solvent
particles, you can thermostat only the solvent particles that surround
one or more rigid bodies by appropriate choice of groups in the
compute and fix commands for temperature and thermostatting. The
solvent interactions with the rigid bodies should then effectively
thermostat the rigid body temperature as well.
</P>
<P>If you calculate a temperature for particles in the rigid bodies, the
degrees-of-freedom removed by each rigid body are accounted for in the
temperature (and pressure) computation, but only if the temperature
group includes all the particles in a particular rigid body.
<HR>
<P>If you use a <A HREF = "compute.html">temperature compute</A> with a group that
includes particles in rigid bodies, the degrees-of-freedom removed by
each rigid body are accounted for in the temperature (and pressure)
computation, but only if the temperature group includes all the
particles in a particular rigid body.
</P>
<P>A 3d rigid body has 6 degrees of freedom (3 translational, 3
rotational), except for a collection of point particles lying on a
@ -181,7 +283,7 @@ degrees of freedom (2 translational, 1 rotational).
</P>
<P>IMPORTANT NOTE: You may wish to explicitly subtract additional
degrees-of-freedom if you use the <I>force</I> and <I>torque</I> keywords to
eliminate certain motions of one or more rigid bodies, as LAMMPS does
eliminate certain motions of one or more rigid bodies. LAMMPS does
not do this automatically.
</P>
<P>The rigid body contribution to the pressure of the system (virial) is
@ -201,13 +303,22 @@ between a pair of rigid bodies and the bond straddles a periodic
boundary, you cannot use the <A HREF = "replicate">replicate</A> command to increase
the system size.
</P>
<HR>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>No information about this fix is written to <A HREF = "restart.html">binary restart
files</A>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
<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> and
<I>rigid/npt</I>, the state of the Nose/Hoover thermostat/barostat 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>This fix computes a global array of values which can be accessed by
<P>None of the <A HREF = "fix_modify.html">fix_modify</A> options are relevant to these
fixes.
</P>
<P>These fixes compute a global array of values which can be accessed by
various <A HREF = "Section_howto.html#4_15">output commands</A>. The number of rows
in the array is equal to the number of rigid bodies. The number of
columns is 12. Thus for each rigid body, 12 values are stored: the
@ -224,18 +335,19 @@ For the <I>single</I> keyword there is just one rigid body. For the
For the <I>group</I> keyword, the list of group IDs determines the ordering
of bodies.
</P>
<P>The array values calculated by this fix are "intensive", meaning they
are independent of the number of atoms in the simulation.
<P>The array values calculated by these fixes are "intensive", meaning
they are independent of the number of atoms in the simulation.
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command. This fix is not invoked during <A HREF = "minimize.html">energy
minimization</A>.
<P>No parameter of these fixes can be used with the <I>start/stop</I> keywords
of the <A HREF = "run.html">run</A> command. These fixse are not invoked during
<A HREF = "minimize.html">energy minimization</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This fix performs an MPI_Allreduce each timestep that is proportional
in length to the number of rigid bodies. Hence it will not scale well
in parallel if large numbers of rigid bodies are simulated.
<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>If the atoms in a single rigid body initially straddle a periodic
boundary, the input data file must define the image flags for each
@ -249,11 +361,30 @@ exclude
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are force * on on on and torque * on on on meaning
all rigid bodies are acted on by center-of-mass force and torque.
<P>The option defaults are force * on on on and torque * on on on,
meaning all rigid bodies are acted on by center-of-mass force and
torque. Also Tchain = 10, Titer = 1, Torder = 3, and Pchain = 10.
</P>
<HR>
<A NAME = "Hoover"></A>
<P><B>(Hoover)</B> Hoover, Phys Rev A, 31, 1695 (1985).
</P>
<A NAME = "Kamberaj"></A>
<P><B>(Kamberaj)</B> Kamberaj, Low, Neal, J Chem Phys, 122, 224114 (2005).
</P>
<A NAME = "Martyna"></A>
<P><B>(Martyna)</B> Martyna, Klein, Tuckerman, J Chem Phys, 97, 2635 (1992);
Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117.
</P>
<A NAME = "Miller"></A>
<P><B>(Miller)</B> Miller, Eleftheriou, Pattnaik, Ndirango, and Newns,
J Chem Phys, 116, 8649 (2002).
</P>
<A NAME = "Zhang"></A>
<P><B>(Zhang)</B> Zhang, Glotzer, Nanoletters, 4, 1407-1413 (2004).

View File

@ -6,14 +6,17 @@
:line
fix rigid :h3
fix rigid command :h3
fix rigid/nve command :h3
fix rigid/nvt command :h3
fix rigid/npt command :h3
[Syntax:]
fix ID group-ID rigid bodystyle args keyword values ... :pre
fix ID group-ID style bodystyle args keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
rigid = style name of this fix command :l
style = {rigid} or {rigid/nve} or {rigid/nvt} or {rigid/npt} :l
bodystyle = {single} or {molecule} or {group} :l
{single} args = none
{molecule} args = none
@ -22,7 +25,19 @@ bodystyle = {single} or {molecule} or {group} :l
groupID1, groupID2, ... = list of N group IDs :pre
zero or more keyword/value pairs may be appended :l
keyword = {force} or {torque} :l
keyword = {temp} or {press} or {tparam} or {pparam} or {force} or {torque} :l
{temp} values = Tstart Tstop Tperiod
Tstart,Tstop = desired temperature at start/stop of run (temperature units)
Tdamp = temperature damping parameter (time units)
{press} values = Pstart Pstop Pperiod
Pstart,Pstop = desired temperature at start/stop of run (pressure units)
Pdamp = pressure damping parameter (time units)
{tparam} values = Tchain Titer Torder
Tchain = length of Nose/Hoover thermostat chain
Titer = number of thermostat iterations performed
Torder = 3 or 5 = Yoshida-Suzuki integration parameters
{pparam} values = Pchain
Pchain = length of Nose/Hoover barostat chain
{force} values = M xflag yflag zflag
M = which rigid body from 1-Nbody (see asterisk form below)
xflag,yflag,zflag = off/on if component of center-of-mass force is active
@ -35,9 +50,9 @@ keyword = {force} or {torque} :l
fix 1 clump rigid single
fix 1 clump rigid single force 1 off off on
fix 1 polychains rigid molecule
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 2 fluid rigid group 3 clump1 clump2 clump3
fix 2 fluid rigid group 3 clump1 clump2 clump3 temp 300.0 320.0 100.0 press 0.0 0.0 1000.0
fix 2 fluid rigid group 3 clump1 clump2 clump3 torque * off off off :pre
[Description:]
@ -62,26 +77,35 @@ command can also be used to rigidify small molecules of 2, 3, or 4
atoms, e.g. water molecules. That fix treats the constituent atoms as
point masses.
The constituent particles within a rigid body can be point particles
(the default in LAMMPS) or finite-size particles, such as spheroids
and ellipsoids. See the "shape"_shape.html command and "atom_style
granular"_atom_style.html for more details on these kinds of
particles. Finite-size particles contribute differently to the moment
of inertia of a rigid body than do point particles. Finite-size
particles can also experience torque (e.g. due to "frictional granular
interactions"_pair_gran.html) and have an orientation. These
contributions are accounted for by the fix.
These fixes also update the positions and velocities of the atoms in
each rigid body via time integration. The {rigid} and {rigid/nve}
styles do this via constant NVE 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.
Forces between particles within a body do not contribute to the
external force or torque on the body. Thus for computational
efficiency, you may wish to turn off pairwise and bond interactions
between particles within each rigid body. The "neigh_modify
exclude"_neigh_modify.html and "delete_bonds"_delete_bonds.html
commands are used to do this. For finite-size particles this also
means the particles can be highly overlapped when creating the rigid
body.
The {rigid/nvt} style performs constant NVT integration using a
Nose/Hoover thermostat with chains as described originally in
"(Hoover)"_#Hoover and "(Martyna)"_#Martyna, which thermostats both
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.
IMPORTANT NOTE: This fix is overkill if you simply want to hold a
The {rigid/npt} style performs constant NPT integration using a
Nose/Hoover thermostat and barostat with chains, as described
originally in "(Hoover)"_#Hoover and "(Martyna)"_#Martyna. As with
{rigid/nvt}, the thermostat affects both the translational and
rotational degrees of freedom of the rigid bodies. The barostat
adjusts the simulation box size isotropically. The rigid-body
algorithm used by {rigid/nvt} is described in the paper by
"Kamberaj"_#Kamberaj.
IMPORTANT NOTE: You should not update the atoms in rigid bodies via
other time-integration fixes (e.g. nve, nvt, npt), or you will be
integrating their motion more than once each timestep.
IMPORTANT NOTE: These fixes are overkill if you simply want to hold a
collection of atoms stationary or have them move with a constant
velocity. A simpler way to hold atoms stationary is to not include
those atoms in your time integration fix. E.g. use "fix 1 mobile nve"
@ -92,9 +116,26 @@ command), setting the force on them to 0.0 (via the "fix
setforce"_fix_setforce.html command), and integrating them as usual
(e.g. via the "fix nve"_fix_nve.html command).
IMPORTANT NOTE: This fix updates the positions and velocities of the
rigid atoms with a constant-energy time integration, so you should not
update the same atoms via other fixes (e.g. nve, nvt, npt).
:line
The constituent particles within a rigid body can be point particles
(the default in LAMMPS) or finite-size particles, such as spheroids
and ellipsoids. See the "shape"_shape.html command and "atom_style
granular"_atom_style.html for more details on these kinds of
particles. Finite-size particles contribute differently to the moment
of inertia of a rigid body than do point particles. Finite-size
particles can also experience torque (e.g. due to "frictional granular
interactions"_pair_gran.html) and have an orientation. These
contributions are accounted for by these fixes.
Forces between particles within a body do not contribute to the
external force or torque on the body. Thus for computational
efficiency, you may wish to turn off pairwise and bond interactions
between particles within each rigid body. The "neigh_modify
exclude"_neigh_modify.html and "delete_bonds"_delete_bonds.html
commands are used to do this. For finite-size particles this also
means the particles can be highly overlapped when creating the rigid
body.
:line
@ -146,24 +187,82 @@ bond interactions within each rigid body, as they no longer contribute
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 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.
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.
This fix uses constant-energy NVE-style integration, so you may need
to impose additional constraints to control the temperature of an
ensemble of rigid bodies. You can use "fix
langevin"_fix_langevin.html for this purpose to treat the system as
:line
As stated above, the {rigid} and {rigid/nve} styles
perform constant NVE time integration. Thus the
{temp}, {press}, {tparam}, and {pparam} keywords cannot
be used with these styles.
The {rigid/nvt} style performs constant NVT time integration, using a
temperature it computes for the rigid bodies which includes their
translational and rotational motion. The {temp} keyword must be used
with this 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).
Nose/Hoover chains are used in conjunction with this thermostat. The
{tparam} keyword can optionally be used to change the chain settings
used. {Tchain} is the number of thermostats in the Nose Hoover chain.
This value, along with {Tdamp} can be varied to dampen undesirable
oscillations in temperature that can occur in a simulation. As a rule
of thumb, increasing the chain length should lead to smaller
oscillations. The {rigid/nvt} style does not allow the use of the
{press} and {pparam} keywords.
The {rigid/npt} style performs constant NPT time integration, using a
temperature it computes for the rigid bodies which includes their
translational and rotational motion, and a pressure which includes the
conribution of the rigid bodies to the virial of the system. The
{temp} and {press} keywords must be used with this 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). Similarly, the desired pressure at each
timestep is a ramped value during the run from {Pstart} to {Pstop}.
The {Pdamp} parameter is specified in time units and determines how
rapidly the presssure is relaxed. For example, a value of 1000.0
means to relax the temperature in a timespan of (roughly) 1000 time
units. The pressure of the system is controlled by varying the box
volume via isotropic rescaling. This means the simulation box retains
its aspect ratio, and the center-of-mass of each rigid body is
rescaled to new coordinates.
Nose/Hoover chains are used in conjunction with this
thermostat/barostat combination. The {pparam} keyword can optionally
be used to change the chain settings used. {Pchain} is the number of
thermostats in the Nose Hoover chain. This value, along with {Tdamp}
and {Pdamp} can be varied to dampen undesirable oscillations in
pressure that can occur in a simulation. As a rule of thumb,
increasing the chain length should lead to smaller oscillations. The
{rigid/npt} style does not allow the use of the {tparam} keyword.
There are alternate ways to thermostat a system of rigid bodies. You
can use "fix langevin"_fix_langevin.html to treat the system as
effectively immersed in an implicit solvent, e.g. a Brownian dynamics
model. Or you can thermostat only the non-rigid atoms that surround
one or more rigid bodies (i.e. explicit solvent) by appropriate choice
of groups in the compute and fix commands for temperature and
thermostatting.
model. For hybrid systems with both rigid bodies and solvent
particles, you can thermostat only the solvent particles that surround
one or more rigid bodies by appropriate choice of groups in the
compute and fix commands for temperature and thermostatting. The
solvent interactions with the rigid bodies should then effectively
thermostat the rigid body temperature as well.
If you calculate a temperature for particles in the rigid bodies, the
degrees-of-freedom removed by each rigid body are accounted for in the
temperature (and pressure) computation, but only if the temperature
group includes all the particles in a particular rigid body.
:line
If you use a "temperature compute"_compute.html with a group that
includes particles in rigid bodies, the degrees-of-freedom removed by
each rigid body are accounted for in the temperature (and pressure)
computation, but only if the temperature group includes all the
particles in a particular rigid body.
A 3d rigid body has 6 degrees of freedom (3 translational, 3
rotational), except for a collection of point particles lying on a
@ -172,7 +271,7 @@ degrees of freedom (2 translational, 1 rotational).
IMPORTANT NOTE: You may wish to explicitly subtract additional
degrees-of-freedom if you use the {force} and {torque} keywords to
eliminate certain motions of one or more rigid bodies, as LAMMPS does
eliminate certain motions of one or more rigid bodies. LAMMPS does
not do this automatically.
The rigid body contribution to the pressure of the system (virial) is
@ -192,13 +291,22 @@ between a pair of rigid bodies and the bond straddles a periodic
boundary, you cannot use the "replicate"_replicate command to increase
the system size.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
No information about the {rigid} and {rigid/nve} fixes are written to
"binary restart files"_restart.html. For style {rigid/nvt} and
{rigid/npt}, the state of the Nose/Hoover thermostat/barostat 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.
This fix computes a global array of values which can be accessed by
None of the "fix_modify"_fix_modify.html options are relevant to these
fixes.
These fixes compute a global array of values which can be accessed by
various "output commands"_Section_howto.html#4_15. The number of rows
in the array is equal to the number of rigid bodies. The number of
columns is 12. Thus for each rigid body, 12 values are stored: the
@ -215,18 +323,19 @@ For the {single} keyword there is just one rigid body. For the
For the {group} keyword, the list of group IDs determines the ordering
of bodies.
The array values calculated by this fix are "intensive", meaning they
are independent of the number of atoms in the simulation.
The array values calculated by these fixes are "intensive", meaning
they are independent of the number of atoms in the simulation.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
No parameter of these fixes can be used with the {start/stop} keywords
of the "run"_run.html command. These fixse are not invoked during
"energy minimization"_minimize.html.
[Restrictions:]
This fix performs an MPI_Allreduce each timestep that is proportional
in length to the number of rigid bodies. Hence it will not scale well
in parallel if large numbers of rigid bodies are simulated.
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.
If the atoms in a single rigid body initially straddle a periodic
boundary, the input data file must define the image flags for each
@ -240,10 +349,25 @@ exclude
[Default:]
The option defaults are force * on on on and torque * on on on meaning
all rigid bodies are acted on by center-of-mass force and torque.
The option defaults are force * on on on and torque * on on on,
meaning all rigid bodies are acted on by center-of-mass force and
torque. Also Tchain = 10, Titer = 1, Torder = 3, and Pchain = 10.
:line
:link(Hoover)
[(Hoover)] Hoover, Phys Rev A, 31, 1695 (1985).
:link(Kamberaj)
[(Kamberaj)] Kamberaj, Low, Neal, J Chem Phys, 122, 224114 (2005).
:link(Martyna)
[(Martyna)] Martyna, Klein, Tuckerman, J Chem Phys, 97, 2635 (1992);
Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117.
:link(Miller)
[(Miller)] Miller, Eleftheriou, Pattnaik, Ndirango, and Newns,
J Chem Phys, 116, 8649 (2002).
:link(Zhang)
[(Zhang)] Zhang, Glotzer, Nanoletters, 4, 1407-1413 (2004).