forked from lijiext/lammps
git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15191 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
parent
503cd82065
commit
8147c8f742
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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*\ .
|
||||
|
||||
|
||||
----------
|
||||
|
|
|
@ -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 — 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 & 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 & 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>
|
||||
|
||||
</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> »</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’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
|
||||
“unscaled”, 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 “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.</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>
|
||||
© 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>
|
|
@ -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’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 “temperature” 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’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’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 “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 <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 “extensive”. 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 “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 <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 “extensive”. 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
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue