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

This commit is contained in:
sjplimp 2010-05-02 00:59:55 +00:00
parent 7cb9a802ad
commit 2fc3c9fbff
8 changed files with 312 additions and 128 deletions

View File

@ -329,9 +329,9 @@ of each style or click on the style itself for a full description:
<TR ALIGN="center"><TD ><A HREF = "fix_move.html">move</A></TD><TD ><A HREF = "fix_nh.html">nph</A></TD><TD ><A HREF = "fix_nph_asphere.html">nph/asphere</A></TD><TD ><A HREF = "fix_nph_sphere.html">nph/sphere</A></TD><TD ><A HREF = "fix_nh.html">npt</A></TD><TD ><A HREF = "fix_npt_asphere.html">npt/asphere</A></TD><TD ><A HREF = "fix_npt_sphere.html">npt/sphere</A></TD><TD ><A HREF = "fix_nve.html">nve</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "fix_nve_asphere.html">nve/asphere</A></TD><TD ><A HREF = "fix_nve_limit.html">nve/limit</A></TD><TD ><A HREF = "fix_nve_noforce.html">nve/noforce</A></TD><TD ><A HREF = "fix_nve_sphere.html">nve/sphere</A></TD><TD ><A HREF = "fix_nh.html">nvt</A></TD><TD ><A HREF = "fix_nvt_asphere.html">nvt/asphere</A></TD><TD ><A HREF = "fix_nvt_sllod.html">nvt/sllod</A></TD><TD ><A HREF = "fix_nvt_sphere.html">nvt/sphere</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "fix_orient_fcc.html">orient/fcc</A></TD><TD ><A HREF = "fix_planeforce.html">planeforce</A></TD><TD ><A HREF = "fix_poems.html">poems</A></TD><TD ><A HREF = "fix_pour.html">pour</A></TD><TD ><A HREF = "fix_press_berendsen.html">press/berendsen</A></TD><TD ><A HREF = "fix_print.html">print</A></TD><TD ><A HREF = "fix_reax_bonds.html">reax/bonds</A></TD><TD ><A HREF = "fix_recenter.html">recenter</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "fix_rigid.html">rigid</A></TD><TD ><A HREF = "fix_setforce.html">setforce</A></TD><TD ><A HREF = "fix_shake.html">shake</A></TD><TD ><A HREF = "fix_spring.html">spring</A></TD><TD ><A HREF = "fix_spring_rg.html">spring/rg</A></TD><TD ><A HREF = "fix_spring_self.html">spring/self</A></TD><TD ><A HREF = "fix_store_coord.html">store/coord</A></TD><TD ><A HREF = "fix_store_force.html">store/force</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "fix_temp_berendsen.html">temp/berendsen</A></TD><TD ><A HREF = "fix_temp_rescale.html">temp/rescale</A></TD><TD ><A HREF = "fix_thermal_conductivity.html">thermal/conductivity</A></TD><TD ><A HREF = "fix_tmd.html">tmd</A></TD><TD ><A HREF = "fix_ttm.html">ttm</A></TD><TD ><A HREF = "fix_viscosity.html">viscosity</A></TD><TD ><A HREF = "fix_viscous.html">viscous</A></TD><TD ><A HREF = "fix_wall.html">wall/colloid</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "fix_wall_gran.html">wall/gran</A></TD><TD ><A HREF = "fix_wall.html">wall/harmonic</A></TD><TD ><A HREF = "fix_wall.html">wall/lj126</A></TD><TD ><A HREF = "fix_wall.html">wall/lj93</A></TD><TD ><A HREF = "fix_wall_reflect.html">wall/reflect</A></TD><TD ><A HREF = "fix_wall_region.html">wall/region</A>
<TR ALIGN="center"><TD ><A HREF = "fix_rigid.html">rigid</A></TD><TD ><A HREF = "fix_rigid.html">rigid/nve</A></TD><TD ><A HREF = "fix_rigid.html">rigid/nvt</A></TD><TD ><A HREF = "fix_setforce.html">setforce</A></TD><TD ><A HREF = "fix_shake.html">shake</A></TD><TD ><A HREF = "fix_spring.html">spring</A></TD><TD ><A HREF = "fix_spring_rg.html">spring/rg</A></TD><TD ><A HREF = "fix_spring_self.html">spring/self</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "fix_store_coord.html">store/coord</A></TD><TD ><A HREF = "fix_store_force.html">store/force</A></TD><TD ><A HREF = "fix_temp_berendsen.html">temp/berendsen</A></TD><TD ><A HREF = "fix_temp_rescale.html">temp/rescale</A></TD><TD ><A HREF = "fix_thermal_conductivity.html">thermal/conductivity</A></TD><TD ><A HREF = "fix_tmd.html">tmd</A></TD><TD ><A HREF = "fix_ttm.html">ttm</A></TD><TD ><A HREF = "fix_viscosity.html">viscosity</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "fix_viscous.html">viscous</A></TD><TD ><A HREF = "fix_wall.html">wall/colloid</A></TD><TD ><A HREF = "fix_wall_gran.html">wall/gran</A></TD><TD ><A HREF = "fix_wall.html">wall/harmonic</A></TD><TD ><A HREF = "fix_wall.html">wall/lj126</A></TD><TD ><A HREF = "fix_wall.html">wall/lj93</A></TD><TD ><A HREF = "fix_wall_reflect.html">wall/reflect</A></TD><TD ><A HREF = "fix_wall_region.html">wall/region</A>
</TD></TR></TABLE></DIV>
<P>These are fix styles contributed by users, which can be used if

View File

@ -431,6 +431,8 @@ of each style or click on the style itself for a full description:
"reax/bonds"_fix_reax_bonds.html,
"recenter"_fix_recenter.html,
"rigid"_fix_rigid.html,
"rigid/nve"_fix_rigid.html,
"rigid/nvt"_fix_rigid.html,
"setforce"_fix_setforce.html,
"shake"_fix_shake.html,
"spring"_fix_spring.html,

View File

@ -207,7 +207,9 @@ list of fix styles available in LAMMPS:
<LI><A HREF = "fix_press_berendsen.html">press/berendsen</A> - pressure control by Berendsen barostat
<LI><A HREF = "fix_print.html">print</A> - print text and variables during a simulation
<LI><A HREF = "fix_reax_bonds.html">reax/bonds</A> - write out ReaxFF bond information <A HREF = "fix_recenter.html">recenter</A> - constrain the center-of-mass position of a group of atoms
<LI><A HREF = "fix_rigid.html">rigid</A> - constrain one or more clusters of atoms to move as a rigid body
<LI><A HREF = "fix_rigid.html">rigid</A> - constrain one or more clusters of atoms to move as a rigid body with NVE integration
<LI><A HREF = "fix_rigid.html">rigid/nve</A> - constrain one or more clusters of atoms to move as a rigid body with alternate NVE integration
<LI><A HREF = "fix_rigid.html">rigid/nvt</A> - constrain one or more clusters of atoms to move as a rigid body with NVT integration
<LI><A HREF = "fix_setforce.html">setforce</A> - set the force on each atom
<LI><A HREF = "fix_shake.html">shake</A> - SHAKE constraints on bonds and/or angles
<LI><A HREF = "fix_spring.html">spring</A> - apply harmonic spring force to group of atoms

View File

@ -207,7 +207,11 @@ list of fix styles available in LAMMPS:
"recenter"_fix_recenter.html - constrain the center-of-mass position \
of a group of atoms
"rigid"_fix_rigid.html - constrain one or more clusters of atoms to \
move as a rigid body
move as a rigid body with NVE integration
"rigid/nve"_fix_rigid.html - constrain one or more clusters of atoms to \
move as a rigid body with alternate NVE integration
"rigid/nvt"_fix_rigid.html - constrain one or more clusters of atoms to \
move as a rigid body with NVT integration
"setforce"_fix_setforce.html - set the force on each atom
"shake"_fix_shake.html - SHAKE constraints on bonds and/or angles
"spring"_fix_spring.html - apply harmonic spring force to group of atoms

View File

@ -9,15 +9,19 @@
<HR>
<H3>fix rigid
<H3>fix rigid command
</H3>
<H3>fix rigid/nve command
</H3>
<H3>fix rigid/nvt 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>
<LI>bodystyle = <I>single</I> or <I>molecule</I> or <I>group</I>
@ -29,9 +33,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 +60,8 @@
</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 torque * off off off
</PRE>
<P><B>Description:</B>
@ -71,26 +86,26 @@ 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>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 +116,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 +187,51 @@ 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>, and <I>tparam</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.
</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 +240,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 +260,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> 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>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,17 +292,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".
<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 fixes 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
@ -248,11 +318,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.
</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,16 @@
:line
fix rigid :h3
fix rigid command :h3
fix rigid/nve command :h3
fix rigid/nvt 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} :l
bodystyle = {single} or {molecule} or {group} :l
{single} args = none
{molecule} args = none
@ -22,7 +24,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 +49,8 @@ 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 torque * off off off :pre
[Description:]
@ -62,26 +75,26 @@ 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
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 +105,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 +176,51 @@ 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}, and {tparam} 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.
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 +229,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 +249,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} 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.
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,17 +281,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".
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 fixes 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
@ -239,10 +307,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.
: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).

View File

@ -109,11 +109,13 @@ since if the maximum tilt factor is 5 (as in this example), then
configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all
equivalent.
</P>
<P>Many crystal structures are defined using three lattice constants <I>a</I>, <I>b</I>,
and <I>c</I>, and three angles <I>alpha</I>, <I>beta</I> and <I>gamma</I>. The relationships between
these quantities and the LAMMPS box dimensions are as follows:
<P>Many crystal structures are defined using three lattice constants <I>a</I>,
<I>b</I>, and <I>c</I>, and three angles <I>alpha</I>, <I>beta</I> and <I>gamma</I>. The
relationships between these quantities and the LAMMPS box dimensions
(lx,ly,lz) = (xhi-zlo,yhi-ylo,zhi-zlo) and tilt factors (xy,xz,yz) are
as follows:
</P>
<CENTER><IMG SRC = "Eqs/box.jpg">
<CENTER><IMG SRC = "Eqs/box.jpg">
</CENTER>
<P>When a triclinic system is used, the simulation domain must be
periodic in any dimensions with a non-zero tilt factor, as defined by
@ -271,7 +273,7 @@ appended to it, which indicate which image of a periodic simulation
box the atom is in. These may be important to include for some kinds
of analysis.
</P>
<DIV ALIGN=center><TABLE WIDTH="0%" BORDER=1 >
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >angle</TD><TD > atom-ID molecule-ID atom-type x y z</TD></TR>
<TR><TD >atomic</TD><TD > atom-ID atom-type x y z</TD></TR>
<TR><TD >bond</TD><TD > atom-ID molecule-ID atom-type x y z</TD></TR>
@ -687,7 +689,7 @@ style dipole or ellipsoid.
<UL><LI>one line per atom
<LI>line syntax: depends on atom style
</UL>
<DIV ALIGN=center><TABLE WIDTH="0%" BORDER=1 >
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >all styles except those listed</TD><TD > atom-ID vx vy vz</TD></TR>
<TR><TD >dipole</TD><TD > atom-ID vx vy vz wx wy wz</TD></TR>
<TR><TD >ellipsoid</TD><TD > atom-ID vx vy vz lx ly lz</TD></TR>

View File

@ -106,11 +106,13 @@ since if the maximum tilt factor is 5 (as in this example), then
configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all
equivalent.
Many crystal structures are defined using three lattice constants {a}, {b},
and {c}, and three angles {alpha}, {beta} and {gamma}. The relationships between
these quantities and the LAMMPS box dimensions are as follows:
Many crystal structures are defined using three lattice constants {a},
{b}, and {c}, and three angles {alpha}, {beta} and {gamma}. The
relationships between these quantities and the LAMMPS box dimensions
(lx,ly,lz) = (xhi-zlo,yhi-ylo,zhi-zlo) and tilt factors (xy,xz,yz) are
as follows:
:c,image(Eqs/box.jpg)
:c,image(Eqs/box.jpg)
When a triclinic system is used, the simulation domain must be
periodic in any dimensions with a non-zero tilt factor, as defined by