git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@3757 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -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).
|
||||
|
||||
Reference in New Issue
Block a user