Math and other minor edits to some fix style doc pages
This commit is contained in:
@ -6,7 +6,7 @@ fix atc command
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix <fixID> <group> atc <type> <parameter_file>
|
||||
|
||||
@ -40,8 +40,8 @@ This fix is the beginning to creating a coupled FE/MD simulation and/or
|
||||
an on-the-fly estimation of continuum fields. The coupled versions of
|
||||
this fix do Verlet integration and the post-processing does not. After
|
||||
instantiating this fix, several other fix_modify commands will be
|
||||
needed to set up the problem, e.g. define the finite element mesh and
|
||||
prescribe initial and boundary conditions.
|
||||
needed to set up the problem (i.e., define the finite element mesh and
|
||||
prescribe initial and boundary conditions).
|
||||
|
||||
.. image:: JPG/atc_nanotube.jpg
|
||||
:align: center
|
||||
@ -135,7 +135,7 @@ fix are listed below.
|
||||
|
||||
This fix computes a global scalar which can be accessed by various
|
||||
:doc:`output commands <Howto_output>`. The scalar is the energy
|
||||
discussed in the previous paragraph. The scalar value is "extensive".
|
||||
discussed in the previous paragraph. The scalar value is "extensive."
|
||||
|
||||
No parameter of this fix can be used with the
|
||||
*start/stop* keywords of the :doc:`run <run>` command. This fix is not
|
||||
@ -147,7 +147,7 @@ Restrictions
|
||||
Thermal and two_temperature (coupling) types use a Verlet
|
||||
time-integration algorithm. The hardy type does not contain its own
|
||||
time-integrator and must be used with a separate fix that does contain
|
||||
one, e.g. nve, nvt, etc. In addition, currently:
|
||||
one (e.g., nve, nvt). In addition, currently:
|
||||
|
||||
* the coupling is restricted to thermal physics
|
||||
* the FE computations are done in serial on each processor.
|
||||
@ -159,8 +159,8 @@ Related commands
|
||||
|
||||
After specifying this fix in your input script, several
|
||||
:doc:`fix_modify AtC <fix_modify>` commands are used to setup the
|
||||
problem, e.g. define the finite element mesh and prescribe initial and
|
||||
boundary conditions. Each of these options has its own doc page.
|
||||
problem (e.g., define the finite element mesh and prescribe initial and
|
||||
boundary conditions). Each of these options has its own doc page.
|
||||
|
||||
*fix_modify* commands for setup:
|
||||
|
||||
@ -311,6 +311,6 @@ and Computation (2011), 7:1736.
|
||||
as a field variable from molecular dynamics simulations." Journal of
|
||||
Chemical Physics (2013), 139:054115.
|
||||
|
||||
Please refer to the standard finite element (FE) texts, e.g. T.J.R
|
||||
Hughes " The finite element method ", Dover 2003, for the basics of FE
|
||||
simulation.
|
||||
Please refer to the standard finite element (FE) texts (e.g., T.J.R.
|
||||
Hughes, *The Finite Element Method,* Dover 2003) for the basics of FE
|
||||
simulations.
|
||||
|
||||
@ -6,7 +6,7 @@ fix atom/swap command
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix ID group-ID atom/swap N X seed T keyword values ...
|
||||
|
||||
@ -48,7 +48,7 @@ This fix performs Monte Carlo swaps of atoms of one given atom type
|
||||
with atoms of the other given atom types. The specified T is used in
|
||||
the Metropolis criterion dictating swap probabilities.
|
||||
|
||||
Perform X swaps of atoms of one type with atoms of another type
|
||||
Perform :math:`X` swaps of atoms of one type with atoms of another type
|
||||
according to a Monte Carlo probability. Swap candidates must be in the
|
||||
fix group, must be in the region (if specified), and must be of one of
|
||||
the listed types. Swaps are attempted between candidates that are
|
||||
@ -57,7 +57,7 @@ atoms. Swaps are not attempted between atoms of the same type since
|
||||
nothing would happen.
|
||||
|
||||
All atoms in the simulation domain can be moved using regular time
|
||||
integration displacements, e.g. via :doc:`fix nvt <fix_nh>`, resulting
|
||||
integration displacements (e.g., via :doc:`fix nvt <fix_nh>`), resulting
|
||||
in a hybrid MC+MD simulation. A smaller-than-usual timestep size may
|
||||
be needed when running such a hybrid simulation, especially if the
|
||||
swapped atoms are not well equilibrated.
|
||||
@ -83,9 +83,8 @@ canonical ensemble, the composition of the system can change. Note
|
||||
that when using *semi-grand*, atoms in the fix group whose type is not
|
||||
listed in the *types* keyword are ineligible for attempted
|
||||
conversion. An attempt is made to switch the selected atom (if
|
||||
eligible) to one of the other listed types with equal
|
||||
probability. Acceptance of each attempt depends upon the Metropolis
|
||||
criterion.
|
||||
eligible) to one of the other listed types with equal probability.
|
||||
Acceptance of each attempt depends upon the Metropolis criterion.
|
||||
|
||||
The *mu* keyword allows users to specify chemical potentials. This is
|
||||
required and allowed only when using *semi-grand*\ . All chemical
|
||||
@ -97,8 +96,8 @@ amount will have no effect on the simulation.
|
||||
|
||||
This command may optionally use the *region* keyword to define swap
|
||||
volume. The specified region must have been previously defined with a
|
||||
:doc:`region <region>` command. It must be defined with side = *in*\
|
||||
. Swap attempts occur only between atoms that are both within the
|
||||
:doc:`region <region>` command. It must be defined with side = *in*\ .
|
||||
Swap attempts occur only between atoms that are both within the
|
||||
specified region. Swaps are not otherwise attempted.
|
||||
|
||||
You should ensure you do not swap atoms belonging to a molecule, or
|
||||
@ -147,7 +146,7 @@ Restart, fix_modify, output, run start/stop, minimize info
|
||||
This fix writes the state of the fix to :doc:`binary restart files
|
||||
<restart>`. This includes information about the random number
|
||||
generator seed, the next timestep for MC exchanges, the number of
|
||||
exchange attempts and successes etc. See the :doc:`read_restart
|
||||
exchange attempts and successes, etc. 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.
|
||||
@ -168,7 +167,7 @@ the following global cumulative quantities:
|
||||
* 1 = swap attempts
|
||||
* 2 = swap accepts
|
||||
|
||||
The vector values calculated by this fix are "extensive".
|
||||
The vector values calculated by this fix are "extensive."
|
||||
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command. This fix is not invoked during
|
||||
|
||||
@ -6,7 +6,7 @@ fix ave/atom command
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix ID group-ID ave/atom Nevery Nrepeat Nfreq value1 value2 ...
|
||||
|
||||
@ -41,7 +41,9 @@ Description
|
||||
|
||||
Use one or more per-atom vectors as inputs every few timesteps, and
|
||||
average them atom by atom over longer timescales. The resulting
|
||||
per-atom averages can be used by other :doc:`output commands <Howto_output>` such as the :doc:`fix ave/chunk <fix_ave_chunk>` or :doc:`dump custom <dump>` commands.
|
||||
per-atom averages can be used by other :doc:`output commands <Howto_output>`
|
||||
such as the :doc:`fix ave/chunk <fix_ave_chunk>` or :doc:`dump custom <dump>`
|
||||
commands.
|
||||
|
||||
The group specified with the command means only atoms within the group
|
||||
have their averages computed. Results are set to 0.0 for atoms not in
|
||||
@ -53,7 +55,8 @@ component) or can be the result of a :doc:`compute <compute>` or
|
||||
:doc:`variable <variable>`. In the latter cases, the compute, fix, or
|
||||
variable must produce a per-atom vector, not a global quantity or
|
||||
local quantity. If you wish to time-average global quantities from a
|
||||
compute, fix, or variable, then see the :doc:`fix ave/time <fix_ave_time>` command.
|
||||
compute, fix, or variable, then see the :doc:`fix ave/time <fix_ave_time>`
|
||||
command.
|
||||
|
||||
Each per-atom value of each input vector is averaged independently.
|
||||
|
||||
@ -66,18 +69,18 @@ per-atom vectors.
|
||||
|
||||
Note that for values from a compute or fix, the bracketed index I can
|
||||
be specified using a wildcard asterisk with the index to effectively
|
||||
specify multiple values. This takes the form "\*" or "\*n" or "n\*" or
|
||||
"m\*n". If N = the size of the vector (for *mode* = scalar) or the
|
||||
specify multiple values. This takes the form "\*" or "\*n" or "m\*" or
|
||||
"m\*n." If :math:`N` is the size of the vector (for *mode* = scalar) or the
|
||||
number of columns in the array (for *mode* = vector), then an asterisk
|
||||
with no numeric values means all indices from 1 to N. A leading
|
||||
with no numeric values means all indices from 1 to :math:`N`. A leading
|
||||
asterisk means all indices from 1 to n (inclusive). A trailing
|
||||
asterisk means all indices from n to N (inclusive). A middle asterisk
|
||||
asterisk means all indices from m to :math:`N` (inclusive). A middle asterisk
|
||||
means all indices from m to n (inclusive).
|
||||
|
||||
Using a wildcard is the same as if the individual columns of the array
|
||||
had been listed one by one. E.g. these 2 fix ave/atom commands are
|
||||
had been listed one by one. For example, these two fix ave/atom commands are
|
||||
equivalent, since the :doc:`compute stress/atom <compute_stress_atom>`
|
||||
command creates a per-atom array with 6 columns:
|
||||
command creates a per-atom array with six columns:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
@ -96,54 +99,58 @@ that are a multiple of *Nfreq*\ . The average is over *Nrepeat*
|
||||
quantities, computed in the preceding portion of the simulation every
|
||||
*Nevery* timesteps. *Nfreq* must be a multiple of *Nevery* and
|
||||
*Nevery* must be non-zero even if *Nrepeat* is 1. Also, the timesteps
|
||||
contributing to the average value cannot overlap,
|
||||
i.e. Nrepeat\*Nevery can not exceed Nfreq.
|
||||
contributing to the average value cannot overlap;
|
||||
that is, :math:`N_\text{repeat} N_\text{every}` cannot exceed
|
||||
:math:`N_\text{freq}`.
|
||||
|
||||
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
|
||||
timesteps 90,92,94,96,98,100 will be used to compute the final average
|
||||
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
|
||||
timestep 200, etc.
|
||||
For example, if :math:`N_\text{every}=2`, :math:`N_\text{repeat}=6`, and
|
||||
:math:`N_\text{freq}=100`, then values on timesteps 90, 92, 94, 96, 98, and 100
|
||||
will be used to compute the final average on time step 100. Similarly for
|
||||
timesteps 190, 192, 194, 196, 198, and 200 on time step 200, etc.
|
||||
|
||||
----------
|
||||
|
||||
The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are
|
||||
self-explanatory. Note that other atom attributes can be used as
|
||||
inputs to this fix by using the :doc:`compute property/atom <compute_property_atom>` command and then specifying
|
||||
an input value from that compute.
|
||||
The atom attribute values (*x*, *y*, *z*, *vx*, *vy*, *vz*, *fx*, *fy*, and
|
||||
*fz*) are self-explanatory. Note that other atom attributes can be used as
|
||||
inputs to this fix by using the
|
||||
:doc:`compute property/atom <compute_property_atom>` command and then
|
||||
specifying an input value from that compute.
|
||||
|
||||
.. note::
|
||||
|
||||
The x,y,z attributes are values that are re-wrapped inside the
|
||||
periodic box whenever an atom crosses a periodic boundary. Thus if
|
||||
you time average an atom that spends half its time on either side of
|
||||
The *x*,*y*,*z* attributes are values that are re-wrapped inside the
|
||||
periodic box whenever an atom crosses a periodic boundary. Thus, if
|
||||
you time-average an atom that spends half of its time on either side of
|
||||
the periodic box, you will get a value in the middle of the box. If
|
||||
this is not what you want, consider averaging unwrapped coordinates,
|
||||
which can be provided by the :doc:`compute property/atom <compute_property_atom>` command via its xu,yu,zu
|
||||
attributes.
|
||||
which can be provided by the
|
||||
:doc:`compute property/atom <compute_property_atom>`
|
||||
command via its *xu*, *yu*, and *zu* attributes.
|
||||
|
||||
If a value begins with "c\_", a compute ID must follow which has been
|
||||
previously defined in the input script. If no bracketed term is
|
||||
appended, the per-atom vector calculated by the compute is used. If a
|
||||
bracketed term containing an index I is appended, the Ith column of
|
||||
the per-atom array calculated by the compute is used. Users can also
|
||||
write code for their own compute styles and :doc:`add them to LAMMPS <Modify>`. See the discussion above for how I can
|
||||
bracketed term containing an index :math:`I` is appended, the
|
||||
:math:`I^\text{th}` column of the per-atom array calculated by the compute is
|
||||
used. Users can also write code for their own compute styles and
|
||||
:doc:`add them to LAMMPS <Modify>`. See the discussion above for how I can
|
||||
be specified with a wildcard asterisk to effectively specify multiple
|
||||
values.
|
||||
|
||||
If a value begins with "f\_", a fix ID must follow which has been
|
||||
previously defined in the input script. If no bracketed term is
|
||||
appended, the per-atom vector calculated by the fix is used. If a
|
||||
bracketed term containing an index I is appended, the Ith column of
|
||||
the per-atom array calculated by the fix is used. Note that some
|
||||
fixes only produce their values on certain timesteps, which must be
|
||||
compatible with *Nevery*, else an error will result. Users can also
|
||||
write code for their own fix styles and :doc:`add them to LAMMPS <Modify>`. See the discussion above for how I can be
|
||||
specified with a wildcard asterisk to effectively specify multiple
|
||||
values.
|
||||
If a value begins with "f\_," a fix ID must follow which has been previously
|
||||
defined in the input script. If no bracketed term is appended, the per-atom
|
||||
vector calculated by the fix is used. If a bracketed term containing an index
|
||||
:math:`I` is appended, the :math:`I^\text{th}` column of the per-atom array
|
||||
calculated by the fix is used. Note that some fixes only produce their values
|
||||
on certain timesteps, which must be compatible with *Nevery*, else an error
|
||||
will result. Users can also write code for their own fix styles and
|
||||
:doc:`add them to LAMMPS <Modify>`. See the discussion above for how I can be
|
||||
specified with a wildcard asterisk to effectively specify multiple values.
|
||||
|
||||
If a value begins with "v\_", a variable name must follow which has
|
||||
been previously defined in the input script as an :doc:`atom-style variable <variable>` Variables of style *atom* can reference
|
||||
thermodynamic keywords, or invoke other computes, fixes, or variables
|
||||
been previously defined in the input script as an
|
||||
:doc:`atom-style variable <variable>`. Variables of style *atom* can reference
|
||||
thermodynamic keywords or invoke other computes, fixes, or variables
|
||||
when they are evaluated, so this is a very general means of generating
|
||||
per-atom quantities to time average.
|
||||
|
||||
@ -152,9 +159,11 @@ per-atom quantities to time average.
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
|
||||
are relevant to this fix. No global scalar or vector quantities are
|
||||
stored by this fix for access by various :doc:`output commands <Howto_output>`.
|
||||
No information about this fix is written to
|
||||
:doc:`binary restart files <restart>`. None of the
|
||||
:doc:`fix_modify <fix_modify>` options are relevant to this fix.
|
||||
No global scalar or vector quantities are stored by this fix for access by
|
||||
various :doc:`output commands <Howto_output>`.
|
||||
|
||||
This fix produces a per-atom vector or array which can be accessed by
|
||||
various :doc:`output commands <Howto_output>`. A vector is produced if
|
||||
@ -164,7 +173,8 @@ per-atom values can only be accessed on timesteps that are multiples
|
||||
of *Nfreq* since that is when averaging is performed.
|
||||
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
|
||||
the :doc:`run <run>` command. This fix is not invoked during
|
||||
:doc:`energy minimization <minimize>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
@ -173,7 +183,8 @@ Restrictions
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`compute <compute>`, :doc:`fix ave/histo <fix_ave_histo>`, :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/time <fix_ave_time>`,
|
||||
:doc:`compute <compute>`, :doc:`fix ave/histo <fix_ave_histo>`,
|
||||
:doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/time <fix_ave_time>`,
|
||||
:doc:`variable <variable>`,
|
||||
|
||||
Default
|
||||
|
||||
@ -143,19 +143,19 @@ produce global quantities.
|
||||
|
||||
Note that for values from a compute or fix, the bracketed index I can
|
||||
be specified using a wildcard asterisk with the index to effectively
|
||||
specify multiple values. This takes the form "\*" or "\*n" or "n\*" or
|
||||
"m\*n". If N = the size of the vector (for *mode* = scalar) or the
|
||||
specify multiple values. This takes the form "\*" or "\*n" or "m\*" or
|
||||
"m\*n". If :math:`N` is the size of the vector (for *mode* = scalar) or the
|
||||
number of columns in the array (for *mode* = vector), then an asterisk
|
||||
with no numeric values means all indices from 1 to N. A leading
|
||||
with no numeric values means all indices from 1 to :math:`N`. A leading
|
||||
asterisk means all indices from 1 to n (inclusive). A trailing
|
||||
asterisk means all indices from n to N (inclusive). A middle asterisk
|
||||
asterisk means all indices from m to :math:`N` (inclusive). A middle asterisk
|
||||
means all indices from m to n (inclusive).
|
||||
|
||||
Using a wildcard is the same as if the individual columns of the array
|
||||
had been listed one by one. E.g. these 2 fix ave/chunk commands are
|
||||
had been listed one by one. For example, these two fix ave/chunk commands are
|
||||
equivalent, since the :doc:`compute property/atom
|
||||
<compute_property_atom>` command creates, in this case, a per-atom
|
||||
array with 3 columns:
|
||||
array with three columns:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
@ -178,25 +178,26 @@ array with 3 columns:
|
||||
----------
|
||||
|
||||
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what
|
||||
timesteps the input values will be accessed and contribute to the
|
||||
average. The final averaged quantities are generated on timesteps
|
||||
time steps the input values will be accessed and contribute to the
|
||||
average. The final averaged quantities are generated on time steps
|
||||
that are a multiples of *Nfreq*\ . The average is over *Nrepeat*
|
||||
quantities, computed in the preceding portion of the simulation every
|
||||
*Nevery* timesteps. *Nfreq* must be a multiple of *Nevery* and
|
||||
*Nevery* must be non-zero even if *Nrepeat* is 1. Also, the timesteps
|
||||
contributing to the average value cannot overlap, i.e. Nrepeat\*Nevery
|
||||
can not exceed Nfreq.
|
||||
*Nevery* time steps. *Nfreq* must be a multiple of *Nevery* and
|
||||
*Nevery* must be non-zero even if *Nrepeat* is 1. Also, the time steps
|
||||
contributing to the average value cannot overlap (i.e.,
|
||||
:math:`N_\text{repeat}N_\text{every}` cannot exceed :math:`N_\text{freq}`).
|
||||
|
||||
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
|
||||
timesteps 90,92,94,96,98,100 will be used to compute the final average
|
||||
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
|
||||
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time
|
||||
averaging is done; values are simply generated on timesteps
|
||||
100,200,etc.
|
||||
For example, if :math:`N_\text{every}=2`, :math:`N_\text{repeat}=6`, and
|
||||
:math:`N_\text{freq}=100`, then values on
|
||||
time steps 90, 92, 94, 96, 98, 100 will be used to compute the final average
|
||||
on time step 100. Similarly for time steps 190, 192, 194, 196, 198, 200 on
|
||||
time step 200, etc. If :math:`N_\text{repeat}=1` and
|
||||
:math:`N_\text{freq} = 100`, then no time averaging is done; values are simply
|
||||
generated on time steps 100, 200, etc.
|
||||
|
||||
Each input value can also be averaged over the atoms in each chunk.
|
||||
The way the averaging is done across the *Nrepeat* timesteps to
|
||||
produce output on the *Nfreq* timesteps, and across multiple *Nfreq*
|
||||
The way the averaging is done across the *Nrepeat* time steps to
|
||||
produce output on the *Nfreq* time steps, and across multiple *Nfreq*
|
||||
outputs, is determined by the *norm* and *ave* keyword settings, as
|
||||
discussed below.
|
||||
|
||||
@ -218,52 +219,53 @@ discussed below.
|
||||
window, which can affect which atoms are discarded if the
|
||||
simulation box size changes. If its *units* keyword is set to
|
||||
*reduced*, then the number of bins *Nchunk* will still be fixed,
|
||||
but the size of each bin can vary at each timestep if the
|
||||
simulation box size changes, e.g. for an NPT simulation.
|
||||
but the size of each bin can vary at each time step if the
|
||||
simulation box size changes (e.g., for an NPT simulation).
|
||||
|
||||
----------
|
||||
|
||||
The atom attribute values (vx,vy,vz,fx,fy,fz,mass) are
|
||||
The atom attribute values (*vx*, *vy*, *vz*, *fx*, *fy*, *fz*, *mass*) are
|
||||
self-explanatory. As noted above, any other atom attributes can be
|
||||
used as input values to this fix by using the :doc:`compute
|
||||
property/atom <compute_property_atom>` command and then specifying an
|
||||
input value from that compute.
|
||||
|
||||
The *density/number* value means the number density is computed for
|
||||
each chunk, i.e. number/volume. The *density/mass* value means the
|
||||
mass density is computed for each chunk, i.e. total-mass/volume. The
|
||||
output values are in units of 1/volume or density (mass/volume). See
|
||||
each chunk (i.e., number/volume). The *density/mass* value means the
|
||||
mass density is computed for each chunk (i.e., total-mass/volume). The
|
||||
output values are in units of 1/volume or mass density (mass/volume). See
|
||||
the :doc:`units <units>` command page for the definition of density
|
||||
for each choice of units, e.g. gram/cm\^3. If the chunks defined by
|
||||
for each choice of units (e.g., g/cm\ :math:`^3`). If the chunks defined by
|
||||
the :doc:`compute chunk/atom <compute_chunk_atom>` command are spatial
|
||||
bins, the volume is the bin volume. Otherwise it is the volume of the
|
||||
bins, the volume is the bin volume. Otherwise, it is the volume of the
|
||||
entire simulation box.
|
||||
|
||||
The *temp* value means the temperature is computed for each chunk, by
|
||||
the formula
|
||||
The *temp* value means the temperature is computed for each chunk,
|
||||
by the formula
|
||||
|
||||
.. math::
|
||||
|
||||
\text{KE} = \frac{\text{DOF}}{2} k_B T,
|
||||
|
||||
where KE = total kinetic energy of the chunk of atoms (sum of
|
||||
:math:`\frac{1}{2} m v^2`), DOF = the total number of degrees of freedom
|
||||
for all atoms in the chunk, :math:`k_B` = Boltzmann constant, and
|
||||
:math:`T` = temperature.
|
||||
where KE is the total kinetic energy of the chunk of atoms (sum of
|
||||
:math:`\frac{1}{2} m v^2`), DOF is the the total number of degrees of freedom
|
||||
for all atoms in the chunk, :math:`k_B` is the Boltzmann constant, and
|
||||
:math:`T` is the absolute temperature.
|
||||
|
||||
The DOF is calculated as N\*adof + cdof, where N = number of atoms in
|
||||
the chunk, adof = degrees of freedom per atom, and cdof = degrees of
|
||||
freedom per chunk. By default adof = 2 or 3 = dimensionality of
|
||||
system, as set via the :doc:`dimension <dimension>` command, and cdof =
|
||||
0.0. This gives the usual formula for temperature.
|
||||
The DOF is calculated as :math:`N`\ \*adof + cdof, where :math:`N` is the
|
||||
number of atoms in the chunk, adof is the number of degrees of freedom per
|
||||
atom, and cdof is the number of degrees of freedom per chunk. By default,
|
||||
adof = 2 or 3 = dimensionality of system,
|
||||
as set via the :doc:`dimension <dimension>` command, and cdof = 0.0.
|
||||
This gives the usual formula for temperature.
|
||||
|
||||
Note that currently this temperature only includes translational
|
||||
degrees of freedom for each atom. No rotational degrees of freedom
|
||||
are included for finite-size particles. Also no degrees of freedom
|
||||
are included for finite-size particles. Also, no degrees of freedom
|
||||
are subtracted for any velocity bias or constraints that are applied,
|
||||
such as :doc:`compute temp/partial <compute_temp_partial>`, or
|
||||
:doc:`fix shake <fix_shake>` or :doc:`fix rigid <fix_rigid>`. This is
|
||||
because those degrees of freedom (e.g. a constrained bond) could apply
|
||||
such as :doc:`compute temp/partial <compute_temp_partial>`,
|
||||
:doc:`fix shake <fix_shake>`, or :doc:`fix rigid <fix_rigid>`. This is
|
||||
because those degrees of freedom (e.g., a constrained bond) could apply
|
||||
to sets of atoms that are both included and excluded from a specific
|
||||
chunk, and hence the concept is somewhat ill-defined. In some cases,
|
||||
you can use the *adof* and *cdof* keywords to adjust the calculated
|
||||
@ -279,7 +281,7 @@ Note that the per-chunk temperature calculated by this fix and the
|
||||
different. The compute calculates the temperature for each chunk for
|
||||
a single snapshot. This fix can do that but can also time average
|
||||
those values over many snapshots, or it can compute a temperature as
|
||||
if the atoms in the chunk on different timesteps were collected
|
||||
if the atoms in the chunk on different time steps were collected
|
||||
together as one set of atoms to calculate their temperature. The
|
||||
compute allows the center-of-mass velocity of each chunk to be
|
||||
subtracted before calculating the temperature; this fix does not.
|
||||
@ -289,8 +291,8 @@ previously defined in the input script. If no bracketed integer is
|
||||
appended, the per-atom vector calculated by the compute is used. If a
|
||||
bracketed integer is appended, the Ith column of the per-atom array
|
||||
calculated by the compute is used. Users can also write code for
|
||||
their own compute styles and :doc:`add them to LAMMPS <Modify>`. See
|
||||
the discussion above for how I can be specified with a wildcard
|
||||
their own compute styles and :doc:`add them to LAMMPS <Modify>`.
|
||||
See the discussion above for how I can be specified with a wildcard
|
||||
asterisk to effectively specify multiple values.
|
||||
|
||||
If a value begins with "f\_", a fix ID must follow which has been
|
||||
@ -298,7 +300,7 @@ previously defined in the input script. If no bracketed integer is
|
||||
appended, the per-atom vector calculated by the fix is used. If a
|
||||
bracketed integer is appended, the Ith column of the per-atom array
|
||||
calculated by the fix is used. Note that some fixes only produce
|
||||
their values on certain timesteps, which must be compatible with
|
||||
their values on certain time steps, which must be compatible with
|
||||
*Nevery*, else an error results. Users can also write code for their
|
||||
own fix styles and :doc:`add them to LAMMPS <Modify>`. See the
|
||||
discussion above for how I can be specified with a wildcard asterisk
|
||||
@ -317,16 +319,16 @@ Additional optional keywords also affect the operation of this fix
|
||||
and its outputs.
|
||||
|
||||
The *norm* keyword affects how averaging is done for the per-chunk
|
||||
values that are output every *Nfreq* timesteps.
|
||||
values that are output every *Nfreq* time steps.
|
||||
|
||||
It the *norm* setting is *all*, which is the default, a chunk value is
|
||||
summed over all atoms in all *Nrepeat* samples, as is the count of
|
||||
atoms in the chunk. The averaged output value for the chunk on the
|
||||
*Nfreq* timesteps is Total-sum / Total-count. In other words it is an
|
||||
*Nfreq* time steps is Total-sum / Total-count. In other words it is an
|
||||
average over atoms across the entire *Nfreq* timescale. For the
|
||||
*density/number* and *density/mass* values, the volume (bin volume or
|
||||
system volume) used in the final normalization will be the volume at
|
||||
the final *Nfreq* timestep. For the *temp* values, degrees of freedom
|
||||
the final *Nfreq* time step. For the *temp* values, degrees of freedom
|
||||
and kinetic energy are summed separately across the entire *Nfreq*
|
||||
timescale, and the output value is calculated by dividing those two
|
||||
sums.
|
||||
@ -334,9 +336,9 @@ sums.
|
||||
If the *norm* setting is *sample*, the chunk value is summed over
|
||||
atoms for each sample, as is the count, and an "average sample value"
|
||||
is computed for each sample, i.e. Sample-sum / Sample-count. The
|
||||
output value for the chunk on the *Nfreq* timesteps is the average of
|
||||
the *Nrepeat* "average sample values", i.e. the sum of *Nrepeat*
|
||||
"average sample values" divided by *Nrepeat*\ . In other words it is an
|
||||
output value for the chunk on the *Nfreq* time steps is the average of
|
||||
the *Nrepeat* "average sample values" (i.e., the sum of *Nrepeat*
|
||||
"average sample values" divided by *Nrepeat*\ ). In other words, it is an
|
||||
average of an average. For the *density/number* and *density/mass*
|
||||
values, the volume (bin volume or system volume) used in the
|
||||
per-sample normalization will be the current volume at each sampling
|
||||
@ -348,8 +350,8 @@ values" are "summed sample values". A summed sample value is simply
|
||||
the chunk value summed over atoms in the sample, without dividing by
|
||||
the number of atoms in the sample. The output value for the chunk on
|
||||
the *Nfreq* timesteps is the average of the *Nrepeat* "summed sample
|
||||
values", i.e. the sum of *Nrepeat* "summed sample values" divided by
|
||||
*Nrepeat*\ . For the *density/number* and *density/mass* values, the
|
||||
values" (i.e., the sum of *Nrepeat* "summed sample values" divided by
|
||||
*Nrepeat*\ ). For the *density/number* and *density/mass* values, the
|
||||
volume (bin volume or system volume) used in the per-sample sum
|
||||
normalization will be the current volume at each sampling step.
|
||||
|
||||
@ -360,8 +362,7 @@ command or written to a file.
|
||||
|
||||
If the *ave* setting is *one*, which is the default, then the chunk
|
||||
values produced on timesteps that are multiples of *Nfreq* are
|
||||
independent of each other; they are output as-is without further
|
||||
averaging.
|
||||
independent of each other; they are output as-is without further averaging.
|
||||
|
||||
If the *ave* setting is *running*, then the chunk values produced on
|
||||
timesteps that are multiples of *Nfreq* are summed and averaged in a
|
||||
@ -369,48 +370,49 @@ cumulative sense before being output. Each output chunk value is thus
|
||||
the average of the chunk value produced on that timestep with all
|
||||
preceding values for the same chunk. This running average begins when
|
||||
the fix is defined; it can only be restarted by deleting the fix via
|
||||
the :doc:`unfix <unfix>` command, or re-defining the fix by
|
||||
re-specifying it.
|
||||
the :doc:`unfix <unfix>` command, or re-defining the fix by re-specifying it.
|
||||
|
||||
If the *ave* setting is *window*, then the chunk values produced on
|
||||
timesteps that are multiples of *Nfreq* are summed and averaged within
|
||||
a moving "window" of time, so that the last M values for the same
|
||||
chunk are used to produce the output. E.g. if M = 3 and Nfreq = 1000,
|
||||
then the output on step 10000 will be the average of the individual
|
||||
chunk values on steps 8000,9000,10000. Outputs on early steps will
|
||||
average over less than M values if they are not available.
|
||||
a moving "window" of time, so that the last :math:`M` values for the same
|
||||
chunk are used to produce the output. For example, if :math:`M = 3` and
|
||||
:math:`N_\text{freq} = 1000`, then the output on step 10000 will be the average
|
||||
of the individual chunk values on steps 8000,9000,10000. Outputs on early
|
||||
steps will average over less than :math:`M` values if they are not available.
|
||||
|
||||
The *bias* keyword specifies the ID of a temperature compute that
|
||||
removes a "bias" velocity from each atom, specified as *bias-ID*\ . It
|
||||
is only used when the *temp* value is calculated, to compute the
|
||||
removes a "bias" velocity from each atom, specified as *bias-ID*\ .
|
||||
It is only used when the *temp* value is calculated, to compute the
|
||||
thermal temperature of each chunk after the translational kinetic
|
||||
energy components have been altered in a prescribed way, e.g. to
|
||||
remove a flow velocity profile. See the doc pages for individual
|
||||
computes that calculate a temperature to see which ones implement a
|
||||
bias.
|
||||
energy components have been altered in a prescribed way, (e.g., to
|
||||
remove a flow velocity profile). See the doc pages for individual
|
||||
computes that calculate a temperature to see which ones implement a bias.
|
||||
|
||||
The *adof* and *cdof* keywords define the values used in the degree of
|
||||
freedom (DOF) formula described above for temperature calculation
|
||||
for each chunk. They are only used when the *temp* value is
|
||||
calculated. They can be used to calculate a more appropriate
|
||||
temperature for some kinds of chunks. Here are 3 examples:
|
||||
temperature for some kinds of chunks. Here are three examples:
|
||||
|
||||
If spatially binned chunks contain some number of water molecules and
|
||||
:doc:`fix shake <fix_shake>` is used to make each molecule rigid, then
|
||||
you could calculate a temperature with 6 degrees of freedom (DOF) (3
|
||||
translational, 3 rotational) per molecule by setting *adof* to 2.0.
|
||||
you could calculate a temperature with 6 degrees of freedom (DOF) (three
|
||||
translational, three rotational) per molecule by setting *adof* to 2.0.
|
||||
|
||||
If :doc:`compute temp/partial <compute_temp_partial>` is used with the
|
||||
*bias* keyword to only allow the x component of velocity to contribute
|
||||
*bias* keyword to only allow the :math:`x` component of velocity to contribute
|
||||
to the temperature, then *adof* = 1.0 would be appropriate.
|
||||
|
||||
If each chunk consists of a large molecule, with some number of its
|
||||
bonds constrained by :doc:`fix shake <fix_shake>` or the entire molecule
|
||||
by :doc:`fix rigid/small <fix_rigid>`, *adof* = 0.0 and *cdof* could be
|
||||
set to the remaining degrees of freedom for the entire molecule
|
||||
(entire chunk in this case), e.g. 6 for 3d, or 3 for 2d, for a rigid
|
||||
(entire chunk in this case), that is, 6 for 3d or 3 for 2d for a rigid
|
||||
molecule.
|
||||
|
||||
..
|
||||
FIXME need to make *Nfreq* vs. :math:`N_\text{freq}` consistent.
|
||||
|
||||
The *file* keyword allows a filename to be specified. Every *Nfreq*
|
||||
timesteps, a section of chunk info will be written to a text file in
|
||||
the following format. A line with the timestep and number of chunks
|
||||
|
||||
Reference in New Issue
Block a user