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

This commit is contained in:
sjplimp 2016-06-17 21:56:38 +00:00
parent 503cd82065
commit 8147c8f742
8 changed files with 771 additions and 242 deletions

View File

@ -0,0 +1,174 @@
.. index:: compute rigid/local
compute rigid/local command
===========================
Syntax
""""""
.. parsed-literal::
compute ID group-ID rigid/local rigidID input1 input2 ...
* ID, group-ID are documented in :doc:`compute <compute>` command
* rigid/local = style name of this compute command
* rigidID = ID of fix rigid/small command or one of its variants
* input = one or more rigid body attributes
Examples
""""""""
.. parsed-literal::
compute 1 all rigid/local myRigid mol x y z
Description
"""""""""""
Define a computation that simply stores rigid body attributes for
rigid bodies defined by the :doc:`fix rigid/small <fix_rigid>` command
or one of its NVE, NVT, NPT, NPH variants. The data is stored as
local data so it can be accessed by other :ref:`output commands <howto_15>` that process local data, such as
the :doc:`compute reduce <compute_reduce>` or :doc:`dump local <dump>`
commands.
Note that this command only works with the :doc:`fix rigid/small <fix_rigid>` command or its variants, not the fix rigid
command and its variants. The ID of the :doc:`fix rigid/small <fix_rigid>` command used to define rigid bodies must
be specified as *rigidID*\ . The :doc:`fix rigid <fix_rigid>` command is
typically used to define a handful of (potentially very large) rigid
bodies. It outputs similar per-body information as this command
directly from the fix as global data; see the :doc:`fix rigid <fix_rigid>` doc page for details
The local data stored by this command is generated by looping over all
the atoms owned on a processor. If the atom is not in the specified
*group-ID* or is not part of a rigid body it is skipped. If it is not
the atom within a body that is assigned to store the body information
it is skipped (only one atom per body is so assigned). If it is the
assigned atom, then the info for that body is output. This means that
information for N bodies is generated. N may be less than the # of
bodies defined by the fix rigid command, if the atoms in some bodies
are not in the *group-ID*\ .
.. note::
Which atom in a body owns the body info is determined internal
to LAMMPS; it's the one nearest the geometric center of the body.
Typically you should avoid this complication, by defining the group
associated with this fix to include/exclude entire bodies.
Note that as atoms and bodies migrate from processor to processor,
there will be no consistent ordering of the entries within the local
vector or array from one timestep to the next.
Here is an example of how to use this compute to dump rigid body info
to a file:
.. parsed-literal::
compute 1 all rigid/local myRigid mol x y z fx fy fz
dump 1 all local 1000 tmp.dump index c_1[1] c_1[2] c_1[3] c_1[4] c_1[5] c_1[6] c_1[7]
----------
This section explains the rigid body attributes that can be specified.
The *id* attribute is the atomID of the atom which owns the rigid body, which is
assigned by the :doc:`fix rigid/small <fix_rigid>` command.
The *mol* attribute is the molecule ID of the rigid body. It should
be the molecule ID which all of the atoms in the body belong to, since
that is how the :doc:`fix rigid/small <fix_rigid>` command defines its
rigid bodies.
The *mass* attribute is the total mass of the rigid body.
There are two options for outputting the coordinates of the center of
mass (COM) of the body. The *x*\ , *y*\ , *z* attributes write the COM
"unscaled", in the appropriate distance :doc:`units <units>` (Angstroms,
sigma, etc). Use *xu*\ , *yu*\ , *zu* if you want the COM "unwrapped" by
the image flags for each atobody. Unwrapped means that if the body
COM has passed thru a periodic boundary one or more times, the value
is generated what the COM coordinate would be if it had not been
wrapped back into the periodic box.
The image flags for the body can be generated directly using the *ix*\ ,
*iy*\ , *iz* attributes. For periodic dimensions, they specify which
image of the simulation box the COM is considered to be in. An image
of 0 means it is inside the box as defined. A value of 2 means add 2
box lengths to get the true value. A value of -1 means subtract 1 box
length to get the true value. LAMMPS updates these flags as the rigid
body COMs cross periodic boundaries during the simulation.
The *vx*\ , *vy*\ , *vz*\ , *fx*\ , *fy*\ , *fz* attributes are components of
the COM velocity and force on the COM of the body.
The *omegax*\ , *omegay*\ , and *omegaz* attributes are the angular
velocity componennts of the body around its COM.
The *angmomx*\ , *angmomy*\ , and *angmomz* attributes are the angular
momentum components of the body around its COM.
The *quatw*\ , *quati*\ , *quatj*\ , and *quatk* attributes are the
components of the 4-vector quaternion representing the orientation of
the rigid body. See the :doc:`set <set>` command for an explanation of
the quaternion vector.
The *angmomx*\ , *angmomy*\ , and *angmomz* attributes are the angular
momentum components of the body around its COM.
The *tqx*\ , *tqy*\ , *tqz* attributes are components of the torque acting
on the body around its COM.
The *inertiax*\ , *inertiay*\ , *inertiaz* attributes are components of
diagonalized inertia tensor for the body, i.e the 3 moments of inertia
for the body around its principal axes, as computed internally by
LAMMPS.
----------
**Output info:**
This compute calculates a local vector or local array depending on the
number of keywords. The length of the vector or number of rows in the
array is the number of rigid bodies. If a single keyword is
specified, a local vector is produced. If two or more keywords are
specified, a local array is produced where the number of columns = the
number of keywords. The vector or array can be accessed by any
command that uses local values from a compute as input. See :ref:`this section <howto_15>` for an overview of LAMMPS output
options.
The vector or array values will be in whatever :doc:`units <units>` the
corresponding attribute is in:
* id,mol = unitless
* mass = mass units
* x,y,z and xy,yu,zu = distance units
* vx,vy,vz = velocity units
* fx,fy,fz = force units
* omegax,omegay,omegaz = radians/time units
* angmomx,angmomy,angmomz = mass*distance^2/time units
* quatw,quati,quatj,quatk = unitless
* tqx,tqy,tqz = torque units
* inertiax,inertiay,inertiaz = mass*distance^2 units
Restrictions
""""""""""""
none
Related commands
""""""""""""""""
:doc:`dump local <dump>`, :doc:`compute reduce <compute_reduce>`
**Default:** none
.. _lws: http://lammps.sandia.gov
.. _ld: Manual.html
.. _lc: Section_commands.html#comm

View File

@ -141,7 +141,7 @@ variants, as their style names indicate.
available for both the *rigid* and *rigid/small* variants. See
details below.
The *rigid* variant is typically the best choice for a system with a
The *rigid* styles are typically the best choice for a system with a
small number of large rigid bodies, each of which can extend across
the domain of many processors. It operates by creating a single
global list of rigid bodies, which all processors contribute to.
@ -150,7 +150,7 @@ contributions from each processor to the force and torque on all the
bodies. This operation will not scale well in parallel if large
numbers of rigid bodies are simulated.
The *rigid/small* variant is typically best for a system with a large
The *rigid/small* styles are typically best for a system with a large
number of small rigid bodies. Each body is assigned to the atom
closest to the geometrical center of the body. The fix operates using
local lists of rigid bodies owned by each processor and information is
@ -159,13 +159,13 @@ processors when ghost atom info is accumlated.
.. note::
To use *rigid/small* the ghost atom cutoff must be large enough
to span the distance between the atom that owns the body and every
other atom in the body. This distance value is printed out when the
rigid bodies are defined. If the :doc:`pair_style <pair_style>` cutoff
plus neighbor skin does not span this distance, then you should use
the :doc:`comm_modify cutoff <comm_modify>` command with a setting
epsilon larger than the distance.
To use the *rigid/small* styles the ghost atom cutoff must be
large enough to span the distance between the atom that owns the body
and every other atom in the body. This distance value is printed out
when the rigid bodies are defined. If the
:doc:`pair_style <pair_style>` cutoff plus neighbor skin does not span
this distance, then you should use the :doc:`comm_modify cutoff <comm_modify>` command with a setting epsilon larger than
the distance.
Which of the two variants is faster for a particular problem is hard
to predict. The best way to decide is to perform a short test run.
@ -196,21 +196,21 @@ differences may accumulate to produce divergent trajectories.
.. note::
The aggregate properties of each rigid body are calculated one
time at the start of the first simulation run after this fix is
time at the start of the first simulation run after these fixes are
specified. The properties include the position and velocity of the
center-of-mass of the body, its moments of inertia, and its angular
momentum. This is done using the properties of the constituent atoms
of the body at that point in time (or see the *infile* keyword
option). Thereafter, changing properties of individual atoms in the
body will have no effect on a rigid body's dynamics, unless they
effect the :doc:`pair_style <pair_style>` interactions that individual
affect the :doc:`pair_style <pair_style>` interactions that individual
particles are part of. For example, you might think you could
displace the atoms in a body or add a large velocity to each atom in a
body to make it move in a desired direction before a 2nd run is
performed, using the :doc:`set <set>` or
:doc:`displace_atoms <displace_atoms>` or :doc:`velocity <velocity>`
command. But these commands will not affect the internal attributes
of the body, and the position and velocity or individual atoms in the
of the body, and the position and velocity of individual atoms in the
body will be reset when time integration starts.
@ -223,29 +223,28 @@ via several options.
.. note::
With fix rigid/small, which requires that *bodystyle* be
With the *rigid/small* styles, which require that *bodystyle* be
specified as *molecule*\ , you can define a system that has no rigid
bodies initially. This is useful when you are using the *mol* keyword
in conjunction with another fix that is adding rigid bodies on-the-fly
as molecules, such as :doc:`fix deposit <fix_deposit>` or :doc:`fix pour <fix_pour>`.
For bodystyle *single* the entire fix group of atoms is treated as one
rigid body. This option is only allowed for fix rigid and its
sub-styles.
rigid body. This option is only allowed for the *rigid* styles.
For bodystyle *molecule*\ , each set of atoms in the fix group with a
different molecule ID is treated as a rigid body. This option is
allowed for fix rigid and fix rigid/small, and their sub-styles. Note
that atoms with a molecule ID = 0 will be treated as a single rigid
body. For a system with atomic solvent (typically this is atoms with
allowed for both the *rigid* and *rigid/small* styles. Note that
atoms with a molecule ID = 0 will be treated as a single rigid body.
For a system with atomic solvent (typically this is atoms with
molecule ID = 0) surrounding rigid bodies, this may not be what you
want. Thus you should be careful to use a fix group that only
includes atoms you want to be part of rigid bodies.
For bodystyle *group*\ , each of the listed groups is treated as a
separate rigid body. Only atoms that are also in the fix group are
included in each rigid body. This option is only allowed for fix
rigid and its sub-styles.
included in each rigid body. This option is only allowed for the
*rigid* styles.
.. note::
@ -262,7 +261,7 @@ rigid and its sub-styles.
dimension, else an error is generated.
The *force* and *torque* keywords discussed next are only allowed for
fix rigid and its sub-styles.
the *rigid* styles.
By default, each rigid body is acted on by other atoms which induce an
external force and torque on its center of mass, causing it to
@ -333,24 +332,27 @@ body.
----------
The *rigid* and *rigid/small* and *rigid/nve* styles perform constant
NVE time integration. The only difference is that the *rigid* and
The *rigid*\ , *rigid/nve*\ , *rigid/small*\ , and *rigid/small/nve* styles
perform constant NVE time integration. They are referred to below as
the 4 NVE rigid styles. The only difference is that the *rigid* and
*rigid/small* styles use an integration technique based on Richardson
iterations. The *rigid/nve* style uses the methods described in the
paper by :ref:`Miller <Miller>`, which are thought to provide better energy
conservation than an iterative approach.
iterations. The *rigid/nve* and *rigid/small/nve* styles uses the
methods described in the paper by :ref:`Miller <Miller>`, which are thought
to provide better energy conservation than an iterative approach.
The *rigid/nvt* and *rigid/nvt/small* styles performs constant NVT
integration using a Nose/Hoover thermostat with chains as described
originally in :ref:`(Hoover) <Hoover>` and :ref:`(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 :ref:`Kamberaj <Kamberaj>`.
of the rigid bodies. They are referred to below as the 2 NVT rigid
styles. The rigid-body algorithm used by *rigid/nvt* is described in
the paper by :ref:`Kamberaj <Kamberaj>`.
The *rigid/npt* and *rigid/nph* (and their /small counterparts) styles
perform constant NPT or NPH integration using a Nose/Hoover barostat
with chains. For the NPT case, the same Nose/Hoover thermostat is also
used as with *rigid/nvt*\ .
The *rigid/npt*\ , *rigid/nph*\ , *rigid/npt/small*\ , and *rigid/nph/small*
styles perform constant NPT or NPH integration using a Nose/Hoover
barostat with chains. They are referred to below as the 4 NPT and NPH
rigid styles. For the NPT case, the same Nose/Hoover thermostat is
also used as with *rigid/nvt* and *rigid/nvt/small*\ .
The barostat parameters are specified using one or more of the *iso*\ ,
*aniso*\ , *x*\ , *y*\ , *z* and *couple* keywords. These keywords give you
@ -362,8 +364,9 @@ defined in :doc:`fix npt/nph <fix_nh>`
.. note::
Currently the *rigid/npt* and *rigid/nph* (and their /small
counterparts) styles do not support triclinic (non-orthongonal) boxes.
Currently the *rigid/npt*\ , *rigid/nph*\ , *rigid/npt/small*\ , and
*rigid/nph/small* styles do not support triclinic (non-orthongonal)
boxes.
The target pressures for each of the 6 components of the stress tensor
can be specified independently via the *x*\ , *y*\ , *z* keywords, which
@ -451,11 +454,12 @@ rigid bodies and how it can be monitored via the fix output is
discussed below.
The *langevin* keyword applies a Langevin thermostat to the constant
NVE time integration performed by either the *rigid* or *rigid/small*
or *rigid/nve* styles. It cannot be used with the *rigid/nvt* 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
NVE time integration performed by any of the 4 NVE rigid styles:
*rigid*\ , *rigid/nve*\ , *rigid/small*\ , *rigid/small/nve*\ . It cannot be
used with the 2 NVT rigid styles: *rigid/nvt*\ , *rigid/small/nvt*\ . 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
:doc:`units <units>` command). The random # *seed* must be a positive
@ -476,14 +480,13 @@ the Langevin thermostat will be applied. See the discussion on the
not be identical, even for a single timestep.
The *temp* and *tparam* keywords apply a Nose/Hoover thermostat to the
NVT time integration performed by the *rigid/nvt* style. They cannot
be used with the *rigid* or *rigid/small* or *rigid/nve* styles. 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
:doc:`units <units>` command).
NVT time integration performed by the 2 NVT rigid styles. They cannot
be used with the 4 NVE rigid styles. 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 :doc:`units <units>` command).
Nose/Hoover chains are used in conjunction with this thermostat. The
*tparam* keyword can optionally be used to change the chain settings
@ -513,18 +516,18 @@ freedom.
----------
The *mol* keyword can only be used with fix rigid/small. It must be
used when other commands, such as :doc:`fix deposit <fix_deposit>` or
:doc:`fix pour <fix_pour>`, add rigid bodies on-the-fly during a
simulation. You specify a *template-ID* previously defined using the
:doc:`molecule <molecule>` command, which reads a file that defines the
molecule. You must use the same *template-ID* that the other fix
which is adding rigid bodies uses. The coordinates, atom types, atom
diameters, center-of-mass, and moments of inertia can be specified in
the molecule file. See the :doc:`molecule <molecule>` command for
details. The only settings required to be in this file are the
coordinates and types of atoms in the molecule, in which case the
molecule command calculates the other quantities itself.
The *mol* keyword can only be used with the *rigid/small* styles. It
must be used when other commands, such as :doc:`fix deposit <fix_deposit>` or :doc:`fix pour <fix_pour>`, add rigid
bodies on-the-fly during a simulation. You specify a *template-ID*
previously defined using the :doc:`molecule <molecule>` command, which
reads a file that defines the molecule. You must use the same
*template-ID* that the other fix which is adding rigid bodies uses.
The coordinates, atom types, atom diameters, center-of-mass, and
moments of inertia can be specified in the molecule file. See the
:doc:`molecule <molecule>` command for details. The only settings
required to be in this file are the coordinates and types of atoms in
the molecule, in which case the molecule command calculates the other
quantities itself.
Note that these other fixes create new rigid bodies, in addition to
those defined initially by this fix via the *bodystyle* setting.
@ -644,37 +647,36 @@ and non-rigid particles (e.g. solvent) there are several ways these
rigid fixes can be used in tandem with :doc:`fix nve <fix_nve>`, :doc:`fix nvt <fix_nh>`, :doc:`fix npt <fix_nh>`, and :doc:`fix nph <fix_nh>`.
If you wish to perform NVE dynamics (no thermostatting or
barostatting), use fix rigid or fix rigid/nve to integrate the rigid
barostatting), use one of 4 NVE rigid styles to integrate the rigid
bodies, and :doc:`fix nve <fix_nve>` to integrate the non-rigid
particles.
If you wish to perform NVT dynamics (thermostatting, but no
barostatting), you can use fix rigid/nvt for the rigid bodies, and any
thermostatting fix for the non-rigid particles (:doc:`fix nvt <fix_nh>`,
:doc:`fix langevin <fix_langevin>`, :doc:`fix temp/berendsen <fix_temp_berendsen>`). You can also use fix rigid
or fix rigid/nve for the rigid bodies and thermostat them using :doc:`fix langevin <fix_langevin>` on the group that contains all the
barostatting), you can use one of the 2 NVT rigid styles for the rigid
bodies, and any thermostatting fix for the non-rigid particles (:doc:`fix nvt <fix_nh>`, :doc:`fix langevin <fix_langevin>`, :doc:`fix temp/berendsen <fix_temp_berendsen>`). You can also use one of the
4 NVE rigid styles for the rigid bodies and thermostat them using :doc:`fix langevin <fix_langevin>` on the group that contains all the
particles in the rigid bodies. The net force added by :doc:`fix langevin <fix_langevin>` to each rigid body effectively thermostats
its translational center-of-mass motion. Not sure how well it does at
thermostatting its rotational motion.
If you with to perform NPT or NPH dynamics (barostatting), you cannot
use both :doc:`fix npt <fix_nh>` and fix rigid/npt (or the nph
variants). This is because there can only be one fix which monitors
the global pressure and changes the simulation box dimensions. So you
have 3 choices:
use both :doc:`fix npt <fix_nh>` and the NPT or NPH rigid styles. This
is because there can only be one fix which monitors the global
pressure and changes the simulation box dimensions. So you have 3
choices:
* Use fix rigid/npt for the rigid bodies. Use the *dilate* all option
so that it will dilate the positions of the non-rigid particles as
well. Use :doc:`fix nvt <fix_nh>` (or any other thermostat) for the
non-rigid particles.
* Use one of the 4 NPT or NPH styles for the rigid bodies. Use the
*dilate* all option so that it will dilate the positions of the
non-rigid particles as well. Use :doc:`fix nvt <fix_nh>` (or any other
thermostat) for the non-rigid particles.
* Use :doc:`fix npt <fix_nh>` for the group of non-rigid particles. Use
the *dilate* all option so that it will dilate the center-of-mass
positions of the rigid bodies as well. Use fix rigid/nvt for the
rigid bodies.
positions of the rigid bodies as well. Use one of the 4 NVE or 2 NVT
rigid styles for the rigid bodies.
* Use :doc:`fix press/berendsen <fix_press_berendsen>` to compute the
pressure and change the box dimensions. Use fix rigid/nvt for the
rigid bodies. Use `fix nvt <fix_nh.thml>`_ (or any other thermostat) for
the non-rigid particles.
pressure and change the box dimensions. Use one of the 4 NVE or 2 NVT
rigid styles for the rigid bodies. Use `fix nvt <fix_nh.thml>`_ (or any
other thermostat) for the non-rigid particles.
In all case, the rigid bodies and non-rigid particles both contribute
to the global pressure and the box is scaled the same by any of the
barostatting fixes.
@ -716,51 +718,57 @@ more instructions on how to use the accelerated styles effectively.
Restart, fix_modify, output, run start/stop, minimize info
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about the *rigid* and *rigid/small* and *rigid/nve*
fixes are written to :doc:`binary restart files <restart>`. The
exception is if the *infile* or *mol* keyword is used, in which case
an auxiliary file is written out with rigid body information each time
a restart file is written, as explained above for the *infile*
keyword. For style *rigid/nvt* the state of the Nose/Hoover
thermostat is written to :doc:`binary restart files <restart>`. See the
No information about the 4 NVE rigid styles is written to :doc:`binary restart files <restart>`. The exception is if the *infile* or
*mol* keyword is used, in which case an auxiliary file is written out
with rigid body information each time a restart file is written, as
explained above for the *infile* keyword. For the 2 NVT rigid styles,
the state of the Nose/Hoover thermostat is written to :doc:`binary restart files <restart>`. Ditto for the 4 NPT and NPH rigid styles, and
the state of the Nose/Hoover barostat. See the
:doc:`read_restart <read_restart>` 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.
The :doc:`fix_modify <fix_modify>` *energy* option is supported by the
rigid/nvt fix to add the energy change induced by the thermostatting
to the system's potential energy as part of :doc:`thermodynamic output <thermo_style>`.
The :doc:`fix_modify <fix_modify>` *energy* option is supported by the 6
NVT, NPT, NPH rigid styles to add the energy change induced by the
thermostatting to the system's potential energy as part of
:doc:`thermodynamic output <thermo_style>`.
The :doc:`fix_modify <fix_modify>` *temp* and *press* options are
supported by the rigid/npt and rigid/nph fixes to change the computes used
to calculate the instantaneous pressure tensor. Note that the rigid/nvt fix
does not use any external compute to compute instantaneous temperature.
supported by the 4 NPT and NPH rigid styles to change the computes
used to calculate the instantaneous pressure tensor. Note that the 2
NVT rigid fixes do not use any external compute to compute
instantaneous temperature.
The *rigid* and *rigid/small* and *rigid/nve* fixes compute a global
scalar which can be accessed by various :ref:`output commands <howto_15>`. The scalar value calculated by
these fixes is "intensive". The scalar is the current temperature of
the collection of rigid bodies. This is averaged over all rigid
bodies and their translational and rotational degrees of freedom. The
translational energy of a rigid body is 1/2 m v^2, where m = total
mass of the body and v = the velocity of its center of mass. The
rotational energy of a rigid body is 1/2 I w^2, where I = the moment
of inertia tensor of the body and w = its angular velocity. Degrees
of freedom constrained by the *force* and *torque* keywords are
removed from this calculation, but only for the *rigid* and
*rigid/nve* fixes.
The 2 NVE rigid fixes compute a global scalar which can be accessed by
various :ref:`output commands <howto_15>`. The scalar
value calculated by these fixes is "intensive". The scalar is the
current temperature of the collection of rigid bodies. This is
averaged over all rigid bodies and their translational and rotational
degrees of freedom. The translational energy of a rigid body is 1/2 m
v^2, where m = total mass of the body and v = the velocity of its
center of mass. The rotational energy of a rigid body is 1/2 I w^2,
where I = the moment of inertia tensor of the body and w = its angular
velocity. Degrees of freedom constrained by the *force* and *torque*
keywords are removed from this calculation, but only for the *rigid*
and *rigid/nve* fixes.
The *rigid/nvt*\ , *rigid/npt*\ , and *rigid/nph* fixes compute a global
scalar which can be accessed by various :ref:`output commands <howto_15>`. The scalar value calculated by
these fixes is "extensive". The scalar is the cumulative energy
change due to the thermostatting and barostatting the fix performs.
The 6 NVT, NPT, NPH rigid fixes compute a global scalar which can be
accessed by various :ref:`output commands <howto_15>`.
The scalar value calculated by these fixes is "extensive". The scalar
is the cumulative energy change due to the thermostatting and
barostatting the fix performs.
All of the *rigid* fixes except *rigid/small* compute a global array
of values which can be accessed by various :ref:`output commands <howto_15>`. The number of rows in the
array is equal to the number of rigid bodies. The number of columns
is 15. Thus for each rigid body, 15 values are stored: the xyz coords
of the center of mass (COM), the xyz components of the COM velocity,
the xyz components of the force acting on the COM, the xyz components
of the torque acting on the COM, and the xyz image flags of the COM.
All of the *rigid* styles (not the *rigid/small* styles) compute a
global array of values which can be accessed by various :ref:`output commands <howto_15>`. Similar information about the
bodies defined by the *rigid/small* styles can be accessed via the
:doc:`compute rigid/local <compute_rigid_local>` command.
The number of rows in the array is equal to the number of rigid
bodies. The number of columns is 15. Thus for each rigid body, 15
values are stored: the xyz coords of the center of mass (COM), the xyz
components of the COM velocity, the xyz components of the force acting
on the COM, the xyz components of the torque acting on the COM, and
the xyz image flags of the COM.
The center of mass (COM) for each body is similar to unwrapped
coordinates written to a dump file. It will always be inside (or

View File

@ -229,11 +229,16 @@ The single() function of these pair styles returns 0.0 for the energy
of a pairwise interaction, since energy is not conserved in these
dissipative potentials. It also returns only the normal component of
the pairwise interaction force. However, the single() function also
calculates 4 extra pairwise quantities. The first 3 are the
calculates 10 extra pairwise quantities. The first 3 are the
components of the tangential force between particles I and J, acting
on particle I. *P4* is the magnitude of this tangential force. These
extra quantites can be accessed by the :doc:`compute pair/local <compute_pair_local>` command, as *p1*\ , *p2*\ , *p3*\ ,
*p4*\ .
on particle I. The 4th is the magnitude of this tangential force.
The next 3 (5-7) are the components of the relative velocity in the
normal direction (along the line joining the 2 sphere centers). The
last 3 (8-10) the components of the relative velocity in the
tangential direction.
These extra quantites can be accessed by the :doc:`compute pair/local <compute_pair_local>` command, as *p1*\ , *p2*\ , ...,
*p10*\ .
----------

View File

@ -0,0 +1,327 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>compute rigid/local command &mdash; LAMMPS documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" />
<link rel="top" title="LAMMPS documentation" href="index.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-nav-search">
<a href="Manual.html" class="icon icon-home"> LAMMPS
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance &amp; scalability</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying &amp; extending LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li>
</ul>
</div>
&nbsp;
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="Manual.html">LAMMPS</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="Manual.html">Docs</a> &raquo;</li>
<li>compute rigid/local command</li>
<li class="wy-breadcrumbs-aside">
<a href="http://lammps.sandia.gov">Website</a>
<a href="Section_commands.html#comm">Commands</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="compute-rigid-local-command">
<span id="index-0"></span><h1>compute rigid/local command</h1>
<div class="section" id="syntax">
<h2>Syntax</h2>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="n">ID</span> <span class="n">group</span><span class="o">-</span><span class="n">ID</span> <span class="n">rigid</span><span class="o">/</span><span class="n">local</span> <span class="n">rigidID</span> <span class="n">input1</span> <span class="n">input2</span> <span class="o">...</span>
</pre></div>
</div>
<ul class="simple">
<li>ID, group-ID are documented in <a class="reference internal" href="compute.html"><span class="doc">compute</span></a> command</li>
<li>rigid/local = style name of this compute command</li>
<li>rigidID = ID of fix rigid/small command or one of its variants</li>
<li>input = one or more rigid body attributes</li>
</ul>
</div>
<div class="section" id="examples">
<h2>Examples</h2>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">rigid</span><span class="o">/</span><span class="n">local</span> <span class="n">myRigid</span> <span class="n">mol</span> <span class="n">x</span> <span class="n">y</span> <span class="n">z</span>
</pre></div>
</div>
</div>
<div class="section" id="description">
<h2>Description</h2>
<p>Define a computation that simply stores rigid body attributes for
rigid bodies defined by the <a class="reference internal" href="fix_rigid.html"><span class="doc">fix rigid/small</span></a> command
or one of its NVE, NVT, NPT, NPH variants. The data is stored as
local data so it can be accessed by other <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a> that process local data, such as
the <a class="reference internal" href="compute_reduce.html"><span class="doc">compute reduce</span></a> or <a class="reference internal" href="dump.html"><span class="doc">dump local</span></a>
commands.</p>
<p>Note that this command only works with the <a class="reference internal" href="fix_rigid.html"><span class="doc">fix rigid/small</span></a> command or its variants, not the fix rigid
command and its variants. The ID of the <a class="reference internal" href="fix_rigid.html"><span class="doc">fix rigid/small</span></a> command used to define rigid bodies must
be specified as <em>rigidID</em>. The <a class="reference internal" href="fix_rigid.html"><span class="doc">fix rigid</span></a> command is
typically used to define a handful of (potentially very large) rigid
bodies. It outputs similar per-body information as this command
directly from the fix as global data; see the <a class="reference internal" href="fix_rigid.html"><span class="doc">fix rigid</span></a> doc page for details</p>
<p>The local data stored by this command is generated by looping over all
the atoms owned on a processor. If the atom is not in the specified
<em>group-ID</em> or is not part of a rigid body it is skipped. If it is not
the atom within a body that is assigned to store the body information
it is skipped (only one atom per body is so assigned). If it is the
assigned atom, then the info for that body is output. This means that
information for N bodies is generated. N may be less than the # of
bodies defined by the fix rigid command, if the atoms in some bodies
are not in the <em>group-ID</em>.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Which atom in a body owns the body info is determined internal
to LAMMPS; it&#8217;s the one nearest the geometric center of the body.
Typically you should avoid this complication, by defining the group
associated with this fix to include/exclude entire bodies.</p>
</div>
<p>Note that as atoms and bodies migrate from processor to processor,
there will be no consistent ordering of the entries within the local
vector or array from one timestep to the next.</p>
<p>Here is an example of how to use this compute to dump rigid body info
to a file:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">compute</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">rigid</span><span class="o">/</span><span class="n">local</span> <span class="n">myRigid</span> <span class="n">mol</span> <span class="n">x</span> <span class="n">y</span> <span class="n">z</span> <span class="n">fx</span> <span class="n">fy</span> <span class="n">fz</span>
<span class="n">dump</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">local</span> <span class="mi">1000</span> <span class="n">tmp</span><span class="o">.</span><span class="n">dump</span> <span class="n">index</span> <span class="n">c_1</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="n">c_1</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="n">c_1</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="n">c_1</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="n">c_1</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="n">c_1</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span> <span class="n">c_1</span><span class="p">[</span><span class="mi">7</span><span class="p">]</span>
</pre></div>
</div>
<hr class="docutils" />
<p>This section explains the rigid body attributes that can be specified.</p>
<p>The <em>id</em> attribute is the atomID of the atom which owns the rigid body, which is
assigned by the <a class="reference internal" href="fix_rigid.html"><span class="doc">fix rigid/small</span></a> command.</p>
<p>The <em>mol</em> attribute is the molecule ID of the rigid body. It should
be the molecule ID which all of the atoms in the body belong to, since
that is how the <a class="reference internal" href="fix_rigid.html"><span class="doc">fix rigid/small</span></a> command defines its
rigid bodies.</p>
<p>The <em>mass</em> attribute is the total mass of the rigid body.</p>
<p>There are two options for outputting the coordinates of the center of
mass (COM) of the body. The <em>x</em>, <em>y</em>, <em>z</em> attributes write the COM
&#8220;unscaled&#8221;, in the appropriate distance <a class="reference internal" href="units.html"><span class="doc">units</span></a> (Angstroms,
sigma, etc). Use <em>xu</em>, <em>yu</em>, <em>zu</em> if you want the COM &#8220;unwrapped&#8221; by
the image flags for each atobody. Unwrapped means that if the body
COM has passed thru a periodic boundary one or more times, the value
is generated what the COM coordinate would be if it had not been
wrapped back into the periodic box.</p>
<p>The image flags for the body can be generated directly using the <em>ix</em>,
<em>iy</em>, <em>iz</em> attributes. For periodic dimensions, they specify which
image of the simulation box the COM is considered to be in. An image
of 0 means it is inside the box as defined. A value of 2 means add 2
box lengths to get the true value. A value of -1 means subtract 1 box
length to get the true value. LAMMPS updates these flags as the rigid
body COMs cross periodic boundaries during the simulation.</p>
<p>The <em>vx</em>, <em>vy</em>, <em>vz</em>, <em>fx</em>, <em>fy</em>, <em>fz</em> attributes are components of
the COM velocity and force on the COM of the body.</p>
<p>The <em>omegax</em>, <em>omegay</em>, and <em>omegaz</em> attributes are the angular
velocity componennts of the body around its COM.</p>
<p>The <em>angmomx</em>, <em>angmomy</em>, and <em>angmomz</em> attributes are the angular
momentum components of the body around its COM.</p>
<p>The <em>quatw</em>, <em>quati</em>, <em>quatj</em>, and <em>quatk</em> attributes are the
components of the 4-vector quaternion representing the orientation of
the rigid body. See the <a class="reference internal" href="set.html"><span class="doc">set</span></a> command for an explanation of
the quaternion vector.</p>
<p>The <em>angmomx</em>, <em>angmomy</em>, and <em>angmomz</em> attributes are the angular
momentum components of the body around its COM.</p>
<p>The <em>tqx</em>, <em>tqy</em>, <em>tqz</em> attributes are components of the torque acting
on the body around its COM.</p>
<p>The <em>inertiax</em>, <em>inertiay</em>, <em>inertiaz</em> attributes are components of
diagonalized inertia tensor for the body, i.e the 3 moments of inertia
for the body around its principal axes, as computed internally by
LAMMPS.</p>
<hr class="docutils" />
<p><strong>Output info:</strong></p>
<p>This compute calculates a local vector or local array depending on the
number of keywords. The length of the vector or number of rows in the
array is the number of rigid bodies. If a single keyword is
specified, a local vector is produced. If two or more keywords are
specified, a local array is produced where the number of columns = the
number of keywords. The vector or array can be accessed by any
command that uses local values from a compute as input. See <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">this section</span></a> for an overview of LAMMPS output
options.</p>
<p>The vector or array values will be in whatever <a class="reference internal" href="units.html"><span class="doc">units</span></a> the
corresponding attribute is in:</p>
<ul class="simple">
<li>id,mol = unitless</li>
<li>mass = mass units</li>
<li>x,y,z and xy,yu,zu = distance units</li>
<li>vx,vy,vz = velocity units</li>
<li>fx,fy,fz = force units</li>
<li>omegax,omegay,omegaz = radians/time units</li>
<li>angmomx,angmomy,angmomz = mass*distance^2/time units</li>
<li>quatw,quati,quatj,quatk = unitless</li>
<li>tqx,tqy,tqz = torque units</li>
<li>inertiax,inertiay,inertiaz = mass*distance^2 units</li>
</ul>
</div>
<div class="section" id="restrictions">
<h2>Restrictions</h2>
<blockquote>
<div>none</div></blockquote>
</div>
<div class="section" id="related-commands">
<h2>Related commands</h2>
<p><a class="reference internal" href="dump.html"><span class="doc">dump local</span></a>, <a class="reference internal" href="compute_reduce.html"><span class="doc">compute reduce</span></a></p>
<p><strong>Default:</strong> none</p>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2013 Sandia Corporation.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script>
<script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -256,7 +256,7 @@ variants, as their style names indicate.</p>
available for both the <em>rigid</em> and <em>rigid/small</em> variants. See
details below.</p>
</div>
<p>The <em>rigid</em> variant is typically the best choice for a system with a
<p>The <em>rigid</em> styles are typically the best choice for a system with a
small number of large rigid bodies, each of which can extend across
the domain of many processors. It operates by creating a single
global list of rigid bodies, which all processors contribute to.
@ -264,7 +264,7 @@ MPI_Allreduce operations are performed each timestep to sum the
contributions from each processor to the force and torque on all the
bodies. This operation will not scale well in parallel if large
numbers of rigid bodies are simulated.</p>
<p>The <em>rigid/small</em> variant is typically best for a system with a large
<p>The <em>rigid/small</em> styles are typically best for a system with a large
number of small rigid bodies. Each body is assigned to the atom
closest to the geometrical center of the body. The fix operates using
local lists of rigid bodies owned by each processor and information is
@ -272,13 +272,13 @@ exchanged and summed via local communication between neighboring
processors when ghost atom info is accumlated.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">To use <em>rigid/small</em> the ghost atom cutoff must be large enough
to span the distance between the atom that owns the body and every
other atom in the body. This distance value is printed out when the
rigid bodies are defined. If the <a class="reference internal" href="pair_style.html"><span class="doc">pair_style</span></a> cutoff
plus neighbor skin does not span this distance, then you should use
the <a class="reference internal" href="comm_modify.html"><span class="doc">comm_modify cutoff</span></a> command with a setting
epsilon larger than the distance.</p>
<p class="last">To use the <em>rigid/small</em> styles the ghost atom cutoff must be
large enough to span the distance between the atom that owns the body
and every other atom in the body. This distance value is printed out
when the rigid bodies are defined. If the
<a class="reference internal" href="pair_style.html"><span class="doc">pair_style</span></a> cutoff plus neighbor skin does not span
this distance, then you should use the <a class="reference internal" href="comm_modify.html"><span class="doc">comm_modify cutoff</span></a> command with a setting epsilon larger than
the distance.</p>
</div>
<p>Which of the two variants is faster for a particular problem is hard
to predict. The best way to decide is to perform a short test run.
@ -308,21 +308,21 @@ setting the force on them to 0.0 (via the <a class="reference internal" href="fi
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The aggregate properties of each rigid body are calculated one
time at the start of the first simulation run after this fix is
time at the start of the first simulation run after these fixes are
specified. The properties include the position and velocity of the
center-of-mass of the body, its moments of inertia, and its angular
momentum. This is done using the properties of the constituent atoms
of the body at that point in time (or see the <em>infile</em> keyword
option). Thereafter, changing properties of individual atoms in the
body will have no effect on a rigid body&#8217;s dynamics, unless they
effect the <a class="reference internal" href="pair_style.html"><span class="doc">pair_style</span></a> interactions that individual
affect the <a class="reference internal" href="pair_style.html"><span class="doc">pair_style</span></a> interactions that individual
particles are part of. For example, you might think you could
displace the atoms in a body or add a large velocity to each atom in a
body to make it move in a desired direction before a 2nd run is
performed, using the <a class="reference internal" href="set.html"><span class="doc">set</span></a> or
<a class="reference internal" href="displace_atoms.html"><span class="doc">displace_atoms</span></a> or <a class="reference internal" href="velocity.html"><span class="doc">velocity</span></a>
command. But these commands will not affect the internal attributes
of the body, and the position and velocity or individual atoms in the
of the body, and the position and velocity of individual atoms in the
body will be reset when time integration starts.</p>
</div>
<hr class="docutils" />
@ -331,27 +331,26 @@ most one rigid body. Which atoms are in which bodies can be defined
via several options.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">With fix rigid/small, which requires that <em>bodystyle</em> be
<p class="last">With the <em>rigid/small</em> styles, which require that <em>bodystyle</em> be
specified as <em>molecule</em>, you can define a system that has no rigid
bodies initially. This is useful when you are using the <em>mol</em> keyword
in conjunction with another fix that is adding rigid bodies on-the-fly
as molecules, such as <a class="reference internal" href="fix_deposit.html"><span class="doc">fix deposit</span></a> or <a class="reference internal" href="fix_pour.html"><span class="doc">fix pour</span></a>.</p>
</div>
<p>For bodystyle <em>single</em> the entire fix group of atoms is treated as one
rigid body. This option is only allowed for fix rigid and its
sub-styles.</p>
rigid body. This option is only allowed for the <em>rigid</em> styles.</p>
<p>For bodystyle <em>molecule</em>, each set of atoms in the fix group with a
different molecule ID is treated as a rigid body. This option is
allowed for fix rigid and fix rigid/small, and their sub-styles. Note
that atoms with a molecule ID = 0 will be treated as a single rigid
body. For a system with atomic solvent (typically this is atoms with
allowed for both the <em>rigid</em> and <em>rigid/small</em> styles. Note that
atoms with a molecule ID = 0 will be treated as a single rigid body.
For a system with atomic solvent (typically this is atoms with
molecule ID = 0) surrounding rigid bodies, this may not be what you
want. Thus you should be careful to use a fix group that only
includes atoms you want to be part of rigid bodies.</p>
<p>For bodystyle <em>group</em>, each of the listed groups is treated as a
separate rigid body. Only atoms that are also in the fix group are
included in each rigid body. This option is only allowed for fix
rigid and its sub-styles.</p>
included in each rigid body. This option is only allowed for the
<em>rigid</em> styles.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">To compute the initial center-of-mass position and other
@ -367,7 +366,7 @@ non-periodic then the image flag of each atom must be 0 in that
dimension, else an error is generated.</p>
</div>
<p>The <em>force</em> and <em>torque</em> keywords discussed next are only allowed for
fix rigid and its sub-styles.</p>
the <em>rigid</em> styles.</p>
<p>By default, each rigid body is acted on by other atoms which induce an
external force and torque on its center of mass, causing it to
translate and rotate. Components of the external center-of-mass force
@ -426,22 +425,25 @@ 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 class="docutils" />
<p>The <em>rigid</em> and <em>rigid/small</em> and <em>rigid/nve</em> styles perform constant
NVE time integration. The only difference is that the <em>rigid</em> and
<p>The <em>rigid</em>, <em>rigid/nve</em>, <em>rigid/small</em>, and <em>rigid/small/nve</em> styles
perform constant NVE time integration. They are referred to below as
the 4 NVE rigid styles. The only difference is that the <em>rigid</em> and
<em>rigid/small</em> styles use an integration technique based on Richardson
iterations. The <em>rigid/nve</em> style uses the methods described in the
paper by <a class="reference internal" href="#miller"><span class="std std-ref">Miller</span></a>, which are thought to provide better energy
conservation than an iterative approach.</p>
iterations. The <em>rigid/nve</em> and <em>rigid/small/nve</em> styles uses the
methods described in the paper by <a class="reference internal" href="#miller"><span class="std std-ref">Miller</span></a>, which are thought
to provide better energy conservation than an iterative approach.</p>
<p>The <em>rigid/nvt</em> and <em>rigid/nvt/small</em> styles performs constant NVT
integration using a Nose/Hoover thermostat with chains as described
originally in <a class="reference internal" href="#hoover"><span class="std std-ref">(Hoover)</span></a> and <a class="reference internal" href="#martyna"><span class="std std-ref">(Martyna)</span></a>, which
thermostats both the translational and rotational degrees of freedom
of the rigid bodies. The rigid-body algorithm used by <em>rigid/nvt</em>
is described in the paper by <a class="reference internal" href="#kamberaj"><span class="std std-ref">Kamberaj</span></a>.</p>
<p>The <em>rigid/npt</em> and <em>rigid/nph</em> (and their /small counterparts) styles
perform constant NPT or NPH integration using a Nose/Hoover barostat
with chains. For the NPT case, the same Nose/Hoover thermostat is also
used as with <em>rigid/nvt</em>.</p>
of the rigid bodies. They are referred to below as the 2 NVT rigid
styles. The rigid-body algorithm used by <em>rigid/nvt</em> is described in
the paper by <a class="reference internal" href="#kamberaj"><span class="std std-ref">Kamberaj</span></a>.</p>
<p>The <em>rigid/npt</em>, <em>rigid/nph</em>, <em>rigid/npt/small</em>, and <em>rigid/nph/small</em>
styles perform constant NPT or NPH integration using a Nose/Hoover
barostat with chains. They are referred to below as the 4 NPT and NPH
rigid styles. For the NPT case, the same Nose/Hoover thermostat is
also used as with <em>rigid/nvt</em> and <em>rigid/nvt/small</em>.</p>
<p>The barostat parameters are specified using one or more of the <em>iso</em>,
<em>aniso</em>, <em>x</em>, <em>y</em>, <em>z</em> and <em>couple</em> keywords. These keywords give you
the ability to specify 3 diagonal components of the external stress
@ -451,8 +453,9 @@ simulation. The effects of these keywords are similar to those
defined in <a class="reference internal" href="fix_nh.html"><span class="doc">fix npt/nph</span></a></p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Currently the <em>rigid/npt</em> and <em>rigid/nph</em> (and their /small
counterparts) styles do not support triclinic (non-orthongonal) boxes.</p>
<p class="last">Currently the <em>rigid/npt</em>, <em>rigid/nph</em>, <em>rigid/npt/small</em>, and
<em>rigid/nph/small</em> styles do not support triclinic (non-orthongonal)
boxes.</p>
</div>
<p>The target pressures for each of the 6 components of the stress tensor
can be specified independently via the <em>x</em>, <em>y</em>, <em>z</em> keywords, which
@ -526,11 +529,12 @@ degrees of freedom. What is meant by &#8220;temperature&#8221; of a collection
rigid bodies and how it can be monitored via the fix output is
discussed below.</p>
<p>The <em>langevin</em> keyword applies a Langevin thermostat to the constant
NVE time integration performed by either the <em>rigid</em> or <em>rigid/small</em>
or <em>rigid/nve</em> styles. It cannot be used with the <em>rigid/nvt</em> style.
The desired temperature at each timestep is a ramped value during the
run from <em>Tstart</em> to <em>Tstop</em>. The <em>Tdamp</em> parameter is specified in
time units and determines how rapidly the temperature is relaxed. For
NVE time integration performed by any of the 4 NVE rigid styles:
<em>rigid</em>, <em>rigid/nve</em>, <em>rigid/small</em>, <em>rigid/small/nve</em>. It cannot be
used with the 2 NVT rigid styles: <em>rigid/nvt</em>, <em>rigid/small/nvt</em>. The
desired temperature at each timestep is a ramped value during the run
from <em>Tstart</em> to <em>Tstop</em>. The <em>Tdamp</em> 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 class="reference internal" href="units.html"><span class="doc">units</span></a> command). The random # <em>seed</em> must be a positive
@ -549,14 +553,13 @@ dynamics for the two cases should be statistically similar, but will
not be identical, even for a single timestep.</p>
</div>
<p>The <em>temp</em> and <em>tparam</em> keywords apply a Nose/Hoover thermostat to the
NVT time integration performed by the <em>rigid/nvt</em> style. They cannot
be used with the <em>rigid</em> or <em>rigid/small</em> or <em>rigid/nve</em> styles. The
desired temperature at each timestep is a ramped value during the run
from <em>Tstart</em> to <em>Tstop</em>. The <em>Tdamp</em> 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 class="reference internal" href="units.html"><span class="doc">units</span></a> command).</p>
NVT time integration performed by the 2 NVT rigid styles. They cannot
be used with the 4 NVE rigid styles. The desired temperature at each
timestep is a ramped value during the run from <em>Tstart</em> to <em>Tstop</em>.
The <em>Tdamp</em> 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 class="reference internal" href="units.html"><span class="doc">units</span></a> command).</p>
<p>Nose/Hoover chains are used in conjunction with this thermostat. The
<em>tparam</em> keyword can optionally be used to change the chain settings
used. <em>Tchain</em> is the number of thermostats in the Nose Hoover chain.
@ -581,18 +584,18 @@ temperature as well without use of the Langevin or Nose/Hoover options
associated with the fix rigid commands.</p>
</div>
<hr class="docutils" />
<p>The <em>mol</em> keyword can only be used with fix rigid/small. It must be
used when other commands, such as <a class="reference internal" href="fix_deposit.html"><span class="doc">fix deposit</span></a> or
<a class="reference internal" href="fix_pour.html"><span class="doc">fix pour</span></a>, add rigid bodies on-the-fly during a
simulation. You specify a <em>template-ID</em> previously defined using the
<a class="reference internal" href="molecule.html"><span class="doc">molecule</span></a> command, which reads a file that defines the
molecule. You must use the same <em>template-ID</em> that the other fix
which is adding rigid bodies uses. The coordinates, atom types, atom
diameters, center-of-mass, and moments of inertia can be specified in
the molecule file. See the <a class="reference internal" href="molecule.html"><span class="doc">molecule</span></a> command for
details. The only settings required to be in this file are the
coordinates and types of atoms in the molecule, in which case the
molecule command calculates the other quantities itself.</p>
<p>The <em>mol</em> keyword can only be used with the <em>rigid/small</em> styles. It
must be used when other commands, such as <a class="reference internal" href="fix_deposit.html"><span class="doc">fix deposit</span></a> or <a class="reference internal" href="fix_pour.html"><span class="doc">fix pour</span></a>, add rigid
bodies on-the-fly during a simulation. You specify a <em>template-ID</em>
previously defined using the <a class="reference internal" href="molecule.html"><span class="doc">molecule</span></a> command, which
reads a file that defines the molecule. You must use the same
<em>template-ID</em> that the other fix which is adding rigid bodies uses.
The coordinates, atom types, atom diameters, center-of-mass, and
moments of inertia can be specified in the molecule file. See the
<a class="reference internal" href="molecule.html"><span class="doc">molecule</span></a> command for details. The only settings
required to be in this file are the coordinates and types of atoms in
the molecule, in which case the molecule command calculates the other
quantities itself.</p>
<p>Note that these other fixes create new rigid bodies, in addition to
those defined initially by this fix via the <em>bodystyle</em> setting.</p>
<p>Also note that when using the <em>mol</em> keyword, extra restart information
@ -688,35 +691,34 @@ also accounted for by this fix.</p>
and non-rigid particles (e.g. solvent) there are several ways these
rigid fixes can be used in tandem with <a class="reference internal" href="fix_nve.html"><span class="doc">fix nve</span></a>, <a class="reference internal" href="fix_nh.html"><span class="doc">fix nvt</span></a>, <a class="reference internal" href="fix_nh.html"><span class="doc">fix npt</span></a>, and <a class="reference internal" href="fix_nh.html"><span class="doc">fix nph</span></a>.</p>
<p>If you wish to perform NVE dynamics (no thermostatting or
barostatting), use fix rigid or fix rigid/nve to integrate the rigid
barostatting), use one of 4 NVE rigid styles to integrate the rigid
bodies, and <a class="reference internal" href="fix_nve.html"><span class="doc">fix nve</span></a> to integrate the non-rigid
particles.</p>
<p>If you wish to perform NVT dynamics (thermostatting, but no
barostatting), you can use fix rigid/nvt for the rigid bodies, and any
thermostatting fix for the non-rigid particles (<a class="reference internal" href="fix_nh.html"><span class="doc">fix nvt</span></a>,
<a class="reference internal" href="fix_langevin.html"><span class="doc">fix langevin</span></a>, <a class="reference internal" href="fix_temp_berendsen.html"><span class="doc">fix temp/berendsen</span></a>). You can also use fix rigid
or fix rigid/nve for the rigid bodies and thermostat them using <a class="reference internal" href="fix_langevin.html"><span class="doc">fix langevin</span></a> on the group that contains all the
barostatting), you can use one of the 2 NVT rigid styles for the rigid
bodies, and any thermostatting fix for the non-rigid particles (<a class="reference internal" href="fix_nh.html"><span class="doc">fix nvt</span></a>, <a class="reference internal" href="fix_langevin.html"><span class="doc">fix langevin</span></a>, <a class="reference internal" href="fix_temp_berendsen.html"><span class="doc">fix temp/berendsen</span></a>). You can also use one of the
4 NVE rigid styles for the rigid bodies and thermostat them using <a class="reference internal" href="fix_langevin.html"><span class="doc">fix langevin</span></a> on the group that contains all the
particles in the rigid bodies. The net force added by <a class="reference internal" href="fix_langevin.html"><span class="doc">fix langevin</span></a> to each rigid body effectively thermostats
its translational center-of-mass motion. Not sure how well it does at
thermostatting its rotational motion.</p>
<p>If you with to perform NPT or NPH dynamics (barostatting), you cannot
use both <a class="reference internal" href="fix_nh.html"><span class="doc">fix npt</span></a> and fix rigid/npt (or the nph
variants). This is because there can only be one fix which monitors
the global pressure and changes the simulation box dimensions. So you
have 3 choices:</p>
use both <a class="reference internal" href="fix_nh.html"><span class="doc">fix npt</span></a> and the NPT or NPH rigid styles. This
is because there can only be one fix which monitors the global
pressure and changes the simulation box dimensions. So you have 3
choices:</p>
<ul class="simple">
<li>Use fix rigid/npt for the rigid bodies. Use the <em>dilate</em> all option
so that it will dilate the positions of the non-rigid particles as
well. Use <a class="reference internal" href="fix_nh.html"><span class="doc">fix nvt</span></a> (or any other thermostat) for the
non-rigid particles.</li>
<li>Use one of the 4 NPT or NPH styles for the rigid bodies. Use the
<em>dilate</em> all option so that it will dilate the positions of the
non-rigid particles as well. Use <a class="reference internal" href="fix_nh.html"><span class="doc">fix nvt</span></a> (or any other
thermostat) for the non-rigid particles.</li>
<li>Use <a class="reference internal" href="fix_nh.html"><span class="doc">fix npt</span></a> for the group of non-rigid particles. Use
the <em>dilate</em> all option so that it will dilate the center-of-mass
positions of the rigid bodies as well. Use fix rigid/nvt for the
rigid bodies.</li>
positions of the rigid bodies as well. Use one of the 4 NVE or 2 NVT
rigid styles for the rigid bodies.</li>
<li>Use <a class="reference internal" href="fix_press_berendsen.html"><span class="doc">fix press/berendsen</span></a> to compute the
pressure and change the box dimensions. Use fix rigid/nvt for the
rigid bodies. Use <a class="reference external" href="fix_nh.thml">fix nvt</a> (or any other thermostat) for
the non-rigid particles.</li>
pressure and change the box dimensions. Use one of the 4 NVE or 2 NVT
rigid styles for the rigid bodies. Use <a class="reference external" href="fix_nh.thml">fix nvt</a> (or any
other thermostat) for the non-rigid particles.</li>
</ul>
<p>In all case, the rigid bodies and non-rigid particles both contribute
to the global pressure and the box is scaled the same by any of the
@ -747,46 +749,51 @@ more instructions on how to use the accelerated styles effectively.</p>
<hr class="docutils" />
<div class="section" id="restart-fix-modify-output-run-start-stop-minimize-info">
<h2>Restart, fix_modify, output, run start/stop, minimize info</h2>
<p>No information about the <em>rigid</em> and <em>rigid/small</em> and <em>rigid/nve</em>
fixes are written to <a class="reference internal" href="restart.html"><span class="doc">binary restart files</span></a>. The
exception is if the <em>infile</em> or <em>mol</em> keyword is used, in which case
an auxiliary file is written out with rigid body information each time
a restart file is written, as explained above for the <em>infile</em>
keyword. For style <em>rigid/nvt</em> the state of the Nose/Hoover
thermostat is written to <a class="reference internal" href="restart.html"><span class="doc">binary restart files</span></a>. See the
<p>No information about the 4 NVE rigid styles is written to <a class="reference internal" href="restart.html"><span class="doc">binary restart files</span></a>. The exception is if the <em>infile</em> or
<em>mol</em> keyword is used, in which case an auxiliary file is written out
with rigid body information each time a restart file is written, as
explained above for the <em>infile</em> keyword. For the 2 NVT rigid styles,
the state of the Nose/Hoover thermostat is written to <a class="reference internal" href="restart.html"><span class="doc">binary restart files</span></a>. Ditto for the 4 NPT and NPH rigid styles, and
the state of the Nose/Hoover barostat. See the
<a class="reference internal" href="read_restart.html"><span class="doc">read_restart</span></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>The <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></a> <em>energy</em> option is supported by the
rigid/nvt fix to add the energy change induced by the thermostatting
to the system&#8217;s potential energy as part of <a class="reference internal" href="thermo_style.html"><span class="doc">thermodynamic output</span></a>.</p>
<p>The <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></a> <em>energy</em> option is supported by the 6
NVT, NPT, NPH rigid styles to add the energy change induced by the
thermostatting to the system&#8217;s potential energy as part of
<a class="reference internal" href="thermo_style.html"><span class="doc">thermodynamic output</span></a>.</p>
<p>The <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></a> <em>temp</em> and <em>press</em> options are
supported by the rigid/npt and rigid/nph fixes to change the computes used
to calculate the instantaneous pressure tensor. Note that the rigid/nvt fix
does not use any external compute to compute instantaneous temperature.</p>
<p>The <em>rigid</em> and <em>rigid/small</em> and <em>rigid/nve</em> fixes compute a global
scalar which can be accessed by various <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a>. The scalar value calculated by
these fixes is &#8220;intensive&#8221;. The scalar is the current temperature of
the collection of rigid bodies. This is averaged over all rigid
bodies and their translational and rotational degrees of freedom. The
translational energy of a rigid body is 1/2 m v^2, where m = total
mass of the body and v = the velocity of its center of mass. The
rotational energy of a rigid body is 1/2 I w^2, where I = the moment
of inertia tensor of the body and w = its angular velocity. Degrees
of freedom constrained by the <em>force</em> and <em>torque</em> keywords are
removed from this calculation, but only for the <em>rigid</em> and
<em>rigid/nve</em> fixes.</p>
<p>The <em>rigid/nvt</em>, <em>rigid/npt</em>, and <em>rigid/nph</em> fixes compute a global
scalar which can be accessed by various <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a>. The scalar value calculated by
these fixes is &#8220;extensive&#8221;. The scalar is the cumulative energy
change due to the thermostatting and barostatting the fix performs.</p>
<p>All of the <em>rigid</em> fixes except <em>rigid/small</em> compute a global array
of values which can be accessed by various <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a>. The number of rows in the
array is equal to the number of rigid bodies. The number of columns
is 15. Thus for each rigid body, 15 values are stored: the xyz coords
of the center of mass (COM), the xyz components of the COM velocity,
the xyz components of the force acting on the COM, the xyz components
of the torque acting on the COM, and the xyz image flags of the COM.</p>
supported by the 4 NPT and NPH rigid styles to change the computes
used to calculate the instantaneous pressure tensor. Note that the 2
NVT rigid fixes do not use any external compute to compute
instantaneous temperature.</p>
<p>The 2 NVE rigid fixes compute a global scalar which can be accessed by
various <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a>. The scalar
value calculated by these fixes is &#8220;intensive&#8221;. The scalar is the
current temperature of the collection of rigid bodies. This is
averaged over all rigid bodies and their translational and rotational
degrees of freedom. The translational energy of a rigid body is 1/2 m
v^2, where m = total mass of the body and v = the velocity of its
center of mass. The rotational energy of a rigid body is 1/2 I w^2,
where I = the moment of inertia tensor of the body and w = its angular
velocity. Degrees of freedom constrained by the <em>force</em> and <em>torque</em>
keywords are removed from this calculation, but only for the <em>rigid</em>
and <em>rigid/nve</em> fixes.</p>
<p>The 6 NVT, NPT, NPH rigid fixes compute a global scalar which can be
accessed by various <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a>.
The scalar value calculated by these fixes is &#8220;extensive&#8221;. The scalar
is the cumulative energy change due to the thermostatting and
barostatting the fix performs.</p>
<p>All of the <em>rigid</em> styles (not the <em>rigid/small</em> styles) compute a
global array of values which can be accessed by various <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a>. Similar information about the
bodies defined by the <em>rigid/small</em> styles can be accessed via the
<a class="reference internal" href="compute_rigid_local.html"><span class="doc">compute rigid/local</span></a> command.</p>
<p>The number of rows in the array is equal to the number of rigid
bodies. The number of columns is 15. Thus for each rigid body, 15
values are stored: the xyz coords of the center of mass (COM), the xyz
components of the COM velocity, the xyz components of the force acting
on the COM, the xyz components of the torque acting on the COM, and
the xyz image flags of the COM.</p>
<p>The center of mass (COM) for each body is similar to unwrapped
coordinates written to a dump file. It will always be inside (or
slightly outside) the simulation box. The image flags have the same

View File

@ -571,12 +571,12 @@
<dt><a href="compute_pair_local.html#index-0">compute pair/local</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="compute_pe.html#index-0">compute pe</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="compute_pe_atom.html#index-0">compute pe/atom</a>
</dt>
@ -610,6 +610,10 @@
</dt>
<dt><a href="compute_rigid_local.html#index-0">compute rigid/local</a>
</dt>
<dt><a href="compute_saed.html#index-0">compute saed</a>
</dt>

View File

@ -319,11 +319,15 @@ specified in an input script that reads a restart file.</p>
of a pairwise interaction, since energy is not conserved in these
dissipative potentials. It also returns only the normal component of
the pairwise interaction force. However, the single() function also
calculates 4 extra pairwise quantities. The first 3 are the
calculates 10 extra pairwise quantities. The first 3 are the
components of the tangential force between particles I and J, acting
on particle I. <em>P4</em> is the magnitude of this tangential force. These
extra quantites can be accessed by the <a class="reference internal" href="compute_pair_local.html"><span class="doc">compute pair/local</span></a> command, as <em>p1</em>, <em>p2</em>, <em>p3</em>,
<em>p4</em>.</p>
on particle I. The 4th is the magnitude of this tangential force.
The next 3 (5-7) are the components of the relative velocity in the
normal direction (along the line joining the 2 sphere centers). The
last 3 (8-10) the components of the relative velocity in the
tangential direction.</p>
<p>These extra quantites can be accessed by the <a class="reference internal" href="compute_pair_local.html"><span class="doc">compute pair/local</span></a> command, as <em>p1</em>, <em>p2</em>, ...,
<em>p10</em>.</p>
</div>
<hr class="docutils" />
<div class="section" id="restrictions">

File diff suppressed because one or more lines are too long