lammps/doc/fix_rigid.html

136 lines
5.6 KiB
HTML
Raw Normal View History

<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix rigid
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID rigid 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>keyword = <I>single</I> or <I>molecule</I> or <I>group</I>
<PRE> <I>single</I> values = none
<I>molecule</I> values = none
<I>group</I> values = list of group IDs
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 clump rigid single
fix 1 polychains rigid molecule
fix 2 fluid rigid group clump1 clump2 clump3
</PRE>
<P><B>Description:</B>
</P>
<P>Treat one or more sets of atoms as an independent rigid body. This
means that each timestep the total force and torque on each rigid body
is computed and the coordinates and velocities of the atoms in each
body are updated so that they move as a rigid body. This can be
useful for freezing one or more portions of a large biomolecule, or
for simulating a system of colloidal particles.
</P>
<P>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).
</P>
<P>Each body must have two or more atoms. Which atoms are in which
bodies can be defined via several options.
</P>
<P>For option <I>single</I> the entire group of atoms is treated as one rigid
body.
</P>
<P>For option <I>molecule</I>, each set of atoms in the group with a different
molecule ID is treated as a rigid body.
</P>
<P>For option <I>group</I>, each of the listed groups is treated as a separate
rigid body. Note that only atoms that are also in the fix group are
included in each rigid body.
</P>
<P>For computational efficiency, you should also turn off pairwise and
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>
<P>The degrees-of-freedom removed by rigid bodies are accounted for in
temperature and pressure computations. Similary, the rigid body
contribution to the pressure virial is also accounted for. The latter
is only correct if forces within the bodies have been turned off, and
there is only a single fix rigid defined. For each linear rigid body
of three or more atoms, one degree-of-freedom must be subtracted using
a <A HREF = "compute_modify.html">compute_modify</A> command (i.e. for a simulation
of 10 such rigid bodies, use "compute_modify thermo_temp extra 13",
after the thermo_style command, where 3 is the default setting and
an additional 10 degrees-of-freedom are subtracted).
</P>
<P>Note that this fix uses constant-energy 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
effectively immersed in an implicit solvent, i.e. a Brownian dynamics
model. Or you can thermostat additional atoms of an explicit solvent
directly.
</P>
<P>IMPORTANT NOTE: The periodic image flags of atoms in rigid bodies are
modified when the center-of-mass of the rigid body moves across a
periodic boundary. They are not incremented/decremented as they would
be for non-rigid atoms. This change does not affect dynamics, but
means that any diagnostic computation based on the atomic image flag
values must be adjusted accordingly. For example, the <A HREF = "fix_msd.html">fix
msd</A> will not compute the expected mean-squared
displacement for such atoms, and the image flag values written to a
<A HREF = "dump.html">dump file</A> will be different than they would be if the
atoms were not in a rigid body.
</P>
<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. No global scalar or vector or per-atom
quantities are stored by this fix for access by various <A HREF = "Section_howto.html#4_15">output
commands</A>. 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>
<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>
<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
atom correctly, so that LAMMPS can "unwrap" the atoms into a valid
rigid body.
</P>
<P>You should not use this fix if you just want to hold group of atoms
stationary. A better way to do this is to not include those atoms in
your time integration fix. E.g. use "fix 1 mobile nve" instead of
"fix 1 all nve", where "mobile" is the group of atoms that you want to
move.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "delete_bonds.html">delete_bonds</A>, <A HREF = "neigh_modify.html">neigh_modify</A>
exclude
</P>
<P><B>Default:</B> none
</P>
</HTML>