forked from lijiext/lammps
git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@3757 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
parent
5c725e3fdf
commit
ad99370f5d
|
@ -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>
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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).
|
||||
|
|
|
@ -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).
|
||||
|
|
Loading…
Reference in New Issue