2015-07-30 22:38:28 +08:00
|
|
|
<HTML>
|
|
|
|
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
|
|
|
|
</CENTER>
|
2015-02-14 00:54:23 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-07-30 22:38:28 +08:00
|
|
|
<HR>
|
2015-02-14 00:54:23 +08:00
|
|
|
|
2015-07-30 22:38:28 +08:00
|
|
|
<H3>compute temp/chunk command
|
|
|
|
</H3>
|
|
|
|
<P><B>Syntax:</B>
|
|
|
|
</P>
|
|
|
|
<PRE>compute ID group-ID temp/chunk chunkID value1 value2 ... keyword value ...
|
|
|
|
</PRE>
|
|
|
|
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
|
2015-02-14 00:54:23 +08:00
|
|
|
|
2015-07-30 22:38:28 +08:00
|
|
|
<LI>temp/chunk = style name of this compute command
|
2015-02-14 00:54:23 +08:00
|
|
|
|
2015-07-30 22:38:28 +08:00
|
|
|
<LI>chunkID = ID of <A HREF = "compute_chunk_atom.html">compute chunk/atom</A> command
|
2015-02-14 00:54:23 +08:00
|
|
|
|
2015-07-30 22:38:28 +08:00
|
|
|
<LI>zero or more values can be listed as value1,value2,etc
|
2015-02-14 00:54:23 +08:00
|
|
|
|
2015-07-30 22:38:28 +08:00
|
|
|
<LI>value = <I>temp</I> or <I>kecom</I> or <I>internal</I>
|
2015-02-17 01:46:17 +08:00
|
|
|
|
2015-07-30 22:38:28 +08:00
|
|
|
<PRE> temp = temperature of each chunk
|
|
|
|
kecom = kinetic energy of each chunk based on velocity of center of mass
|
|
|
|
internal = internal kinetic energy of each chunk
|
|
|
|
</PRE>
|
|
|
|
<LI>zero or more keyword/value pairs may be appended
|
2015-07-29 04:14:21 +08:00
|
|
|
|
2015-07-30 22:38:28 +08:00
|
|
|
<LI>keyword = <I>com</I> or <I>bias</I> or <I>adof</I> or <I>cdof</I>
|
2015-07-29 04:14:21 +08:00
|
|
|
|
2015-07-30 22:38:28 +08:00
|
|
|
<PRE> <I>com</I> value = <I>yes</I> or <I>no</I>
|
2015-02-14 00:54:23 +08:00
|
|
|
yes = subtract center-of-mass velocity from each chunk before calculating temperature
|
|
|
|
no = do not subtract center-of-mass velocity
|
2015-07-30 22:38:28 +08:00
|
|
|
<I>bias</I> value = bias-ID
|
2015-02-14 00:54:23 +08:00
|
|
|
bias-ID = ID of a temperature compute that removes a velocity bias
|
2015-07-30 22:38:28 +08:00
|
|
|
<I>adof</I> value = dof_per_atom
|
2015-02-14 00:54:23 +08:00
|
|
|
dof_per_atom = define this many degrees-of-freedom per atom
|
2015-07-30 22:38:28 +08:00
|
|
|
<I>cdof</I> value = dof_per_chunk
|
|
|
|
dof_per_chunk = define this many degrees-of-freedom per chunk
|
|
|
|
</PRE>
|
|
|
|
|
|
|
|
</UL>
|
|
|
|
<P><B>Examples:</B>
|
|
|
|
</P>
|
|
|
|
<PRE>compute 1 fluid temp/chunk molchunk
|
2015-02-17 01:46:17 +08:00
|
|
|
compute 1 fluid temp/chunk molchunk temp internal
|
2015-07-30 22:38:28 +08:00
|
|
|
compute 1 fluid temp/chunk molchunk bias tpartial adof 2.0
|
|
|
|
</PRE>
|
|
|
|
<P><B>Description:</B>
|
|
|
|
</P>
|
|
|
|
<P>Define a computation that calculates the temperature of a group of
|
2015-02-17 01:46:17 +08:00
|
|
|
atoms that are also in chunks, after optionally subtracting out the
|
|
|
|
center-of-mass velocity of each chunk. By specifying optional values,
|
|
|
|
it can also calulate the per-chunk temperature or energies of the
|
2015-07-30 22:38:28 +08:00
|
|
|
multiple chunks of atoms.
|
|
|
|
</P>
|
|
|
|
<P>In LAMMPS, chunks are collections of atoms defined by a <A HREF = "compute_chunk_atom.html">compute
|
|
|
|
chunk/atom</A> command, which assigns each atom
|
2015-02-14 00:54:23 +08:00
|
|
|
to a single chunk (or no chunk). The ID for this command is specified
|
|
|
|
as chunkID. For example, a single chunk could be the atoms in a
|
2015-07-30 22:38:28 +08:00
|
|
|
molecule or atoms in a spatial bin. See the <A HREF = "compute_chunk_atom.html">compute
|
|
|
|
chunk/atom</A> doc page and "<A HREF = "Section_howto.html#howto_23">Section_howto
|
|
|
|
23</A> for details of how chunks can be
|
2015-02-14 00:54:23 +08:00
|
|
|
defined and examples of how they can be used to measure properties of
|
2015-07-30 22:38:28 +08:00
|
|
|
a system.
|
|
|
|
</P>
|
|
|
|
<P>The temperature is calculated by the formula KE = DOF/2 k T, where KE =
|
2015-02-17 01:52:45 +08:00
|
|
|
total kinetic energy of all atoms assigned to chunks (sum of 1/2 m
|
|
|
|
v^2), DOF = the total number of degrees of freedom for those atoms, k
|
2015-07-30 22:38:28 +08:00
|
|
|
= Boltzmann constant, and T = temperature.
|
|
|
|
</P>
|
|
|
|
<P>The DOF is calculated as N*adof + Nchunk*cdof, where N = number of
|
2015-02-17 01:46:17 +08:00
|
|
|
atoms contributing to the KE, adof = degrees of freedom per atom, and
|
|
|
|
cdof = degrees of freedom per chunk. By default adof = 2 or 3 =
|
2015-07-30 22:38:28 +08:00
|
|
|
dimensionality of system, as set via the <A HREF = "dimension.html">dimension</A>
|
2015-02-17 01:46:17 +08:00
|
|
|
command, and cdof = 0.0. This gives the usual formula for
|
2015-07-30 22:38:28 +08:00
|
|
|
temperature.
|
|
|
|
</P>
|
|
|
|
<P>A kinetic energy tensor, stored as a 6-element vector, is also
|
2015-02-17 01:46:17 +08:00
|
|
|
calculated by this compute for use in the computation of a pressure
|
|
|
|
tensor. The formula for the components of the tensor is the same as
|
|
|
|
the above formula, except that v^2 is replaced by vx*vy for the xy
|
|
|
|
component, etc. The 6 components of the vector are ordered xx, yy,
|
2015-07-30 22:38:28 +08:00
|
|
|
zz, xy, xz, yz.
|
|
|
|
</P>
|
|
|
|
<P>Note that the number of atoms contributing to the temperature is
|
2015-02-17 01:46:17 +08:00
|
|
|
calculated each time the temperature is evaluated since it is assumed
|
|
|
|
the atoms may be dynamically assigned to chunks. Thus there is no
|
2015-07-30 22:38:28 +08:00
|
|
|
need to use the <I>dynamic</I> option of the
|
|
|
|
<A HREF = "compute_modify.html">compute_modify</A> command for this compute style.
|
|
|
|
</P>
|
|
|
|
<P>If any optional values are specified, then per-chunk quantities are
|
|
|
|
also calculated and stored in a global array, as described below.
|
|
|
|
</P>
|
|
|
|
<P>The <I>temp</I> value calculates the temperature for each chunk by the
|
2015-02-17 01:46:17 +08:00
|
|
|
formula KE = DOF/2 k T, where KE = total kinetic energy of the chunk
|
|
|
|
of atoms (sum of 1/2 m v^2), DOF = the total number of degrees of
|
|
|
|
freedom for all atoms in the chunk, k = Boltzmann constant, and T =
|
2015-07-30 22:38:28 +08:00
|
|
|
temperature.
|
|
|
|
</P>
|
|
|
|
<P>The DOF in this case is calculated as N*adof + cdof, where N = number
|
2015-02-17 01:46:17 +08:00
|
|
|
of atoms in the chunk, adof = degrees of freedom per atom, and cdof =
|
|
|
|
degrees of freedom per chunk. By default adof = 2 or 3 =
|
2015-07-30 22:38:28 +08:00
|
|
|
dimensionality of system, as set via the <A HREF = "dimension.html">dimension</A>
|
2015-02-17 01:46:17 +08:00
|
|
|
command, and cdof = 0.0. This gives the usual formula for
|
2015-07-30 22:38:28 +08:00
|
|
|
temperature.
|
|
|
|
</P>
|
|
|
|
<P>The <I>kecom</I> value calculates the kinetic energy of each chunk as if
|
2015-02-17 01:46:17 +08:00
|
|
|
all its atoms were moving with the velocity of the center-of-mass of
|
2015-07-30 22:38:28 +08:00
|
|
|
the chunk.
|
|
|
|
</P>
|
|
|
|
<P>The <I>internal</I> value calculates the internal kinetic energy of each
|
2015-02-17 01:46:17 +08:00
|
|
|
chunk. The interal KE is summed over the atoms in the chunk using an
|
2015-07-30 22:38:28 +08:00
|
|
|
internal "thermal" velocity for each atom, which is its velocity minus
|
|
|
|
the center-of-mass velocity of the chunk.
|
|
|
|
</P>
|
|
|
|
<HR>
|
|
|
|
|
|
|
|
<P>Note that currently the global and per-chunk temperatures calculated
|
2015-02-17 01:46:17 +08:00
|
|
|
by this compute only include translational degrees of freedom for each
|
|
|
|
atom. No rotational degrees of freedom are included for finite-size
|
|
|
|
particles. Also no degrees of freedom are subtracted for any velocity
|
2015-07-30 22:38:28 +08:00
|
|
|
bias or constraints that are applied, such as <A HREF = "compute_temp_partial.html">compute
|
|
|
|
temp/partial</A>, or <A HREF = "fix_shake.html">fix shake</A>
|
|
|
|
or <A HREF = "fix_rigid.html">fix rigid</A>. This is because those degrees of
|
2015-02-17 01:46:17 +08:00
|
|
|
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
|
2015-07-30 22:38:28 +08:00
|
|
|
<I>adof</I> and <I>cdof</I> keywords to adjust the calculated degress of freedom
|
|
|
|
appropriately, as explained below.
|
|
|
|
</P>
|
|
|
|
<P>Note that the per-chunk temperature calulated by this compute and the
|
|
|
|
<A HREF = "fix_ave_chunk.html">fix ave/chunk temp</A> command can be different.
|
2015-02-17 01:52:45 +08:00
|
|
|
This compute calculates the temperature for each chunk for a single
|
|
|
|
snapshot. Fix ave/chunk 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 together as
|
|
|
|
one set of atoms to calculate their temperature. This compute allows
|
|
|
|
the center-of-mass velocity of each chunk to be subtracted before
|
2015-07-30 22:38:28 +08:00
|
|
|
calculating the temperature; fix ave/chunk does not.
|
|
|
|
</P>
|
|
|
|
<P>IMPORTANT NOTE: Only atoms in the specified group contribute to the
|
|
|
|
calculations performed by this compute. The <A HREF = "compute_chunk_atom.html">compute
|
|
|
|
chunk/atom</A> command defines its own group;
|
2015-02-17 01:52:45 +08:00
|
|
|
atoms will have a chunk ID = 0 if they are not in that group,
|
|
|
|
signifying they are not assigned to a chunk, and will thus also not
|
2015-07-30 22:38:28 +08:00
|
|
|
contribute to this calculation. You can specify the "all" group for
|
2015-02-17 01:52:45 +08:00
|
|
|
this command if you simply want to include atoms with non-zero chunk
|
2015-07-30 22:38:28 +08:00
|
|
|
IDs.
|
|
|
|
</P>
|
|
|
|
<P>The simplest way to output the per-chunk results of the compute
|
|
|
|
temp/chunk calculation to a file is to use the <A HREF = "fix_ave_time.html">fix
|
|
|
|
ave/time</A> command, for example:
|
|
|
|
</P>
|
|
|
|
<PRE>compute cc1 all chunk/atom molecule
|
2015-02-17 01:46:17 +08:00
|
|
|
compute myChunk all temp/chunk cc1 temp
|
2015-07-30 22:38:28 +08:00
|
|
|
fix 1 all ave/time 100 1 100 c_myChunk file tmp.out mode vector
|
|
|
|
</PRE>
|
|
|
|
<HR>
|
|
|
|
|
|
|
|
<P>The keyword/value option pairs are used in the following ways.
|
|
|
|
</P>
|
|
|
|
<P>The <I>com</I> keyword can be used with a value of <I>yes</I> to subtract the
|
2015-02-14 00:54:23 +08:00
|
|
|
velocity of the center-of-mass for each chunk from the velocity of the
|
2015-02-17 01:46:17 +08:00
|
|
|
atoms in that chunk, before calculating either the global or per-chunk
|
|
|
|
temperature. This can be useful if the atoms are streaming or
|
|
|
|
otherwise moving collectively, and you wish to calculate only the
|
2015-07-30 22:38:28 +08:00
|
|
|
thermal temperature.
|
|
|
|
</P>
|
|
|
|
<P>For the <I>bias</I> keyword, <I>bias-ID</I> refers to the ID of a temperature
|
|
|
|
compute that removes a "bias" velocity from each atom. This also
|
2015-02-17 01:46:17 +08:00
|
|
|
allows calculation of the global or per-chunk temperature using only
|
|
|
|
the thermal temperature of atoms in each chunk after the translational
|
|
|
|
kinetic energy components have been altered in a prescribed way,
|
|
|
|
e.g. to remove a velocity profile. It also applies to the calculation
|
2015-07-30 22:38:28 +08:00
|
|
|
of the other per-chunk values, such as <I>kecom</I> or <I>internal</I>, which
|
2015-02-17 01:46:17 +08:00
|
|
|
involve the center-of-mass velocity of each chunk, which is calculated
|
|
|
|
after the velocity bias is removed from each atom. Note that the
|
|
|
|
temperature compute will apply its bias globally to the entire system,
|
2015-07-30 22:38:28 +08:00
|
|
|
not on a per-chunk basis.
|
|
|
|
</P>
|
|
|
|
<P>The <I>adof</I> and <I>cdof</I> keywords define the values used in the degree of
|
2015-02-17 01:46:17 +08:00
|
|
|
freedom (DOF) formulas used for the global or per-chunk temperature,
|
|
|
|
as described above. They can be used to calculate a more appropriate
|
2015-07-30 22:38:28 +08:00
|
|
|
temperature for some kinds of chunks. Here are 3 examples:
|
|
|
|
</P>
|
|
|
|
<P>If spatially binned chunks contain some number of water molecules and
|
|
|
|
<A HREF = "fix_shake.html">fix shake</A> is used to make each molecule rigid, then
|
2015-02-14 00:54:23 +08:00
|
|
|
you could calculate a temperature with 6 degrees of freedom (DOF) (3
|
2015-07-30 22:38:28 +08:00
|
|
|
translational, 3 rotational) per molecule by setting <I>adof</I> to 2.0.
|
|
|
|
</P>
|
|
|
|
<P>If <A HREF = "compute_temp_partial.html">compute temp/partial</A> is used with the
|
|
|
|
<I>bias</I> keyword to only allow the x component of velocity to contribute
|
|
|
|
to the temperature, then <I>adof</I> = 1.0 would be appropriate.
|
|
|
|
</P>
|
|
|
|
<P>If each chunk consists of a large molecule, with some number of its
|
|
|
|
bonds constrained by <A HREF = "fix_shake.html">fix shake</A> or the entire molecule
|
|
|
|
by <A HREF = "fix_rigid.html">fix rigid/small</A>, <I>adof</I> = 0.0 and <I>cdof</I> could be
|
2015-04-12 07:48:54 +08:00
|
|
|
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
|
2015-07-30 22:38:28 +08:00
|
|
|
molecule.
|
|
|
|
</P>
|
|
|
|
<HR>
|
|
|
|
|
|
|
|
<P><B>Output info:</B>
|
|
|
|
</P>
|
|
|
|
<P>This compute calculates a global scalar (the temperature) and a global
|
2015-02-17 01:46:17 +08:00
|
|
|
vector of length 6 (KE tensor), which can be accessed by indices 1-6.
|
|
|
|
These values can be used by any command that uses global scalar or
|
2015-07-30 22:38:28 +08:00
|
|
|
vector values from a compute as input. See <A HREF = "Section_howto.html#howto_15">this
|
|
|
|
section</A> for an overview of LAMMPS output
|
|
|
|
options.
|
|
|
|
</P>
|
|
|
|
<P>This compute also optionally calculates a global array, if one or more
|
2015-02-17 01:46:17 +08:00
|
|
|
of the optional values are specified. The number of rows in the array
|
2015-07-30 22:38:28 +08:00
|
|
|
= the number of chunks <I>Nchunk</I> as calculated by the specified
|
|
|
|
<A HREF = "compute_chunk_atom.html">compute chunk/atom</A> command. The number of
|
2015-02-17 01:46:17 +08:00
|
|
|
columns is the number of specifed values (1 or more). These values
|
|
|
|
can be accessed by any command that uses global array values from a
|
2015-07-30 22:38:28 +08:00
|
|
|
compute as input. Again, see <A HREF = "Section_howto.html#howto_15">Section_howto
|
|
|
|
15</A> for an overview of LAMMPS output
|
|
|
|
options.
|
|
|
|
</P>
|
|
|
|
<P>The scalar value calculated by this compute is "intensive". The
|
|
|
|
vector values are "extensive". The array values are "intensive".
|
|
|
|
</P>
|
|
|
|
<P>The scalar value will be in temperature <A HREF = "units.html">units</A>. The
|
|
|
|
vector values will be in energy <A HREF = "units.html">units</A>. The array values
|
|
|
|
will be in temperature <A HREF = "units.html">units</A> for the <I>temp</I> value, and in
|
|
|
|
energy <A HREF = "units.html">units</A> for the <I>kecom</I> and <I>internal</I> values.
|
|
|
|
</P>
|
|
|
|
<P><B>Restrictions:</B>
|
|
|
|
</P>
|
|
|
|
<P>The <I>com</I> and <I>bias</I> keywords cannot be used together.
|
|
|
|
</P>
|
|
|
|
<P><B>Related commands:</B>
|
|
|
|
</P>
|
|
|
|
<P><A HREF = "compute_temp.html">compute temp</A>, <A HREF = "fix_ave_chunk.html">fix ave/chunk
|
|
|
|
temp</A>
|
|
|
|
</P>
|
|
|
|
<P><B>Default:</B>
|
|
|
|
</P>
|
|
|
|
<P>The option defaults are com no, no bias, adof = dimensionality of the
|
|
|
|
system (2 or 3), and cdof = 0.0.
|
|
|
|
</P>
|
|
|
|
</HTML>
|