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

This commit is contained in:
sjplimp
2015-02-16 17:46:17 +00:00
parent 71f14d49cc
commit 4052646720
4 changed files with 242 additions and 121 deletions

View File

@ -13,7 +13,7 @@
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp/chunk chunkID keyword value ...
<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
@ -21,9 +21,16 @@
<LI>chunkID = ID of <A HREF = "compute_chunk_atom.html">compute chunk/atom</A> command
<LI>zero or more keyword/value pairs may be appended
<LI>zero or more values can be listed
<LI>keyword = <I>com</I> or <I>bias</I>or <I>adof</I> or <I>cdof</I>
<LI>value = <I>temp</I> or <I>kecom</I> or <I>internal</I>
<LI> 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
zero or more keyword/value pairs may be appended
<LI>keyword = <I>com</I> or <I>bias</I> or <I>adof</I> or <I>cdof</I>
<PRE> <I>com</I> value = <I>yes</I> or <I>no</I>
yes = subtract center-of-mass velocity from each chunk before calculating temperature
@ -40,19 +47,16 @@
<P><B>Examples:</B>
</P>
<PRE>compute 1 fluid temp/chunk molchunk
</PRE>
<PRE>compute 1 fluid temp/chunk molchunk bias tpartial adof 2.0
compute 1 fluid temp/chunk molchunk temp internal
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 multiple
chunks of atoms. Note that unlike other computes with style names
temp/* which calculate the temperature of an entire group of atoms,
this compute cannot be used by any command that uses such a
temperature compute, e.g. <A HREF = "thermo_modify.html">thermo_modify</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, <A HREF = "fix_nh.html">fix npt</A>, etc. That
is because this compute calculates multiple temperatures, one per
chunk.
<P>Define a computation that calculates the temperature of a group of
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
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
@ -64,33 +68,70 @@ chunk/atom</A> doc page and "<A HREF = "Section_howto.html#howto_23">Section_how
defined and examples of how they can be used to measure properties of
a system.
</P>
<P>This compute calculates the temperature for each chunk by the 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 = temperature.
<P>The temperature is calculated by the formula KE = DOF k T, where KE =
total kinetic energy of all atoms both in the group and assigned to
chunks (sum of 1/2 m v^2), DOF = the total number of degrees of
freedom for those atoms, k = Boltzmann constant, and T = temperature.
</P>
<P>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 <A HREF = "dimension.html">dimension</A> command, and cdof =
0.0. This gives the usual formula for temperature.
<P>The DOF is calculated as N*adof + Nchunk*cdof, where N = number of
atoms contributing to the KE, 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 <A HREF = "dimension.html">dimension</A>
command, and cdof = 0.0. This gives the usual formula for
temperature.
</P>
<P>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 subtracted for any velocity 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 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 <I>adof</I> and <I>cdof</I> keywords to adjust the calculated degress of
freedom appropriately, as explained below.
<P>A kinetic energy tensor, stored as a 6-element vector, is also
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,
zz, xy, xz, yz.
</P>
<P>Also note that a bias can be subtracted from atom velocities before
they are used in the above formula for KE, by using the <I>bias</I>
keyword. This allows, for example, a thermal temperature to be
computed after removal of a flow velocity profile.
<P>Note that the number of atoms contributing to the temperature is
calculated each time the temperature is evaluated since it is assumed
the atoms may be dynamically assigned to chunks. Thus there is no
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
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 =
temperature.
</P>
<P>The DOF in this case 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 <A HREF = "dimension.html">dimension</A>
command, and cdof = 0.0. This gives the usual formula for
temperature.
</P>
<P>The <I>kecom</I> value calculates the kinetic energy of each chunk as if
all its atoms were moving with the velocity of the center-of-mass of
the chunk.
</P>
<P>The <I>internal</I> value calculates the internal kinetic energy of each
chunk. The interal KE is summed over the atoms in the chunk using an
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
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
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
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
<I>adof</I> and <I>cdof</I> keywords to adjust the calculated degress of freedom
appropriately, as explained below.
</P>
<P>Note that this compute and the <A HREF = "fix_ave_chunk.html">fix ave/chunk temp</A>
command can calculate different things. This compute calculates the
@ -110,12 +151,12 @@ thus also not contribute to this calculation. You can specify the
"all" group for this command if you simply want to include atoms with
non-zero chunk IDs.
</P>
<P>The simplest way to output the 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>The simplest way to output the pre-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
compute myChunk all temp/chunk cc1
compute myChunk all temp/chunk cc1 temp
fix 1 all ave/time 100 1 100 c_myChunk file tmp.out mode vector
</PRE>
<HR>
@ -124,22 +165,27 @@ fix 1 all ave/time 100 1 100 c_myChunk file tmp.out mode vector
</P>
<P>The <I>com</I> keyword can be used with a value of <I>yes</I> to subtract the
velocity of the center-of-mass for each chunk from the velocity of the
atoms in that chunk, before calculating the temperature. This can be
useful if the atoms are streaming or otherwise moving collectively,
and you wish to calculate only the thermal temperature.
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
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
allows compute temp/chunk 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 velocity profile. Note
that the temperature compute will apply its bias globally to the
entire system, not on a per-chunk basis.
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
of the other per-chunk values, such as <I>kecom</I> or <I>internal</I>, which
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,
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
freedom (DOF) formula used for each chunk, as described above. They
can be used to calculate a more appropriate temperature for some kinds
of chunks. Here are 3 examples.
freedom (DOF) formulas used for the global or per-chunk temperature,
as described above. They can be used to calculate a more appropriate
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
@ -158,15 +204,30 @@ this case).
<P><B>Output info:</B>
</P>
<P>This compute calculates a global vector where the number of rows = the
number of chunks <I>Nchunk</I> as calculated by the specified <A HREF = "compute_chunk_atom.html">compute
chunk/atom</A> command. These values can be
accessed by any command that uses global vector values from a compute
as input. See <A HREF = "Section_howto.html#howto_15">Section_howto 15</A> for an
overview of LAMMPS output options.
<P>This compute calculates a global scalar (the temperature) and a global
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
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>The vector values are "intensive". The vector values will be in
temperature <A HREF = "units.html">units</A>.
<P>This compute also optionally calculates a global array, if one or more
of the optional values are specified. The number of rows in the array
= 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
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
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>

View File

@ -10,13 +10,18 @@ compute temp/chunk command :h3
[Syntax:]
compute ID group-ID temp/chunk chunkID keyword value ... :pre
compute ID group-ID temp/chunk chunkID value1 value2 ... keyword value ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
temp/chunk = style name of this compute command :l
chunkID = ID of "compute chunk/atom"_compute_chunk_atom.html command :l
zero or more values can be listed :l
value = {temp} or {kecom} or {internal} :l
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
zero or more keyword/value pairs may be appended :l
keyword = {com} or {bias}or {adof} or {cdof} :l
keyword = {com} or {bias} or {adof} or {cdof} :l
{com} value = {yes} or {no}
yes = subtract center-of-mass velocity from each chunk before calculating temperature
no = do not subtract center-of-mass velocity
@ -30,19 +35,17 @@ keyword = {com} or {bias}or {adof} or {cdof} :l
[Examples:]
compute 1 fluid temp/chunk molchunk :pre
compute 1 fluid temp/chunk molchunk
compute 1 fluid temp/chunk molchunk temp internal
compute 1 fluid temp/chunk molchunk bias tpartial adof 2.0 :pre
[Description:]
Define a computation that calculates the temperature of multiple
chunks of atoms. Note that unlike other computes with style names
temp/* which calculate the temperature of an entire group of atoms,
this compute cannot be used by any command that uses such a
temperature compute, e.g. "thermo_modify"_thermo_modify.html, "fix
temp/rescale"_fix_temp_rescale.html, "fix npt"_fix_nh.html, etc. That
is because this compute calculates multiple temperatures, one per
chunk.
Define a computation that calculates the temperature of a group of
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
multiple chunks of atoms.
In LAMMPS, chunks are collections of atoms defined by a "compute
chunk/atom"_compute_chunk_atom.html command, which assigns each atom
@ -54,33 +57,70 @@ chunk/atom"_compute_chunk_atom.html doc page and ""Section_howto
defined and examples of how they can be used to measure properties of
a system.
This compute calculates the temperature for each chunk by the 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 = temperature.
The temperature is calculated by the formula KE = DOF k T, where KE =
total kinetic energy of all atoms both in the group and assigned to
chunks (sum of 1/2 m v^2), DOF = the total number of degrees of
freedom for those atoms, k = Boltzmann constant, and T = 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 "dimension"_dimension.html command, and cdof =
0.0. This gives the usual formula for temperature.
The DOF is calculated as N*adof + Nchunk*cdof, where N = number of
atoms contributing to the KE, 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 "dimension"_dimension.html
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 subtracted for any velocity bias or constraints that are applied,
such as "compute temp/partial"_compute_temp_partial.html, or "fix
shake"_fix_shake.html or "fix rigid"_fix_rigid.html. 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 degress of
freedom appropriately, as explained below.
A kinetic energy tensor, stored as a 6-element vector, is also
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,
zz, xy, xz, yz.
Also note that a bias can be subtracted from atom velocities before
they are used in the above formula for KE, by using the {bias}
keyword. This allows, for example, a thermal temperature to be
computed after removal of a flow velocity profile.
Note that the number of atoms contributing to the temperature is
calculated each time the temperature is evaluated since it is assumed
the atoms may be dynamically assigned to chunks. Thus there is no
need to use the {dynamic} option of the
"compute_modify"_compute_modify.html command for this compute style.
If any optional values are specified, then per-chunk quantities are
also calculated and stored in a global array, as described below.
The {temp} value calculates the temperature for each chunk by the
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 =
temperature.
The DOF in this case 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 "dimension"_dimension.html
command, and cdof = 0.0. This gives the usual formula for
temperature.
The {kecom} value calculates the kinetic energy of each chunk as if
all its atoms were moving with the velocity of the center-of-mass of
the chunk.
The {internal} value calculates the internal kinetic energy of each
chunk. The interal KE is summed over the atoms in the chunk using an
internal "thermal" velocity for each atom, which is its velocity minus
the center-of-mass velocity of the chunk.
:line
Note that currently the global and per-chunk temperatures calculated
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
bias or constraints that are applied, such as "compute
temp/partial"_compute_temp_partial.html, or "fix shake"_fix_shake.html
or "fix rigid"_fix_rigid.html. 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 degress of freedom
appropriately, as explained below.
Note that this compute and the "fix ave/chunk temp"_fix_ave_chunk.html
command can calculate different things. This compute calculates the
@ -100,12 +140,12 @@ thus also not contribute to this calculation. You can specify the
"all" group for this command if you simply want to include atoms with
non-zero chunk IDs.
The simplest way to output the results of the compute temp/chunk
calculation to a file is to use the "fix ave/time"_fix_ave_time.html
command, for example:
The simplest way to output the pre-chunk results of the compute
temp/chunk calculation to a file is to use the "fix
ave/time"_fix_ave_time.html command, for example:
compute cc1 all chunk/atom molecule
compute myChunk all temp/chunk cc1
compute myChunk all temp/chunk cc1 temp
fix 1 all ave/time 100 1 100 c_myChunk file tmp.out mode vector :pre
:line
@ -114,22 +154,27 @@ The keyword/value option pairs are used in the following ways.
The {com} keyword can be used with a value of {yes} to subtract the
velocity of the center-of-mass for each chunk from the velocity of the
atoms in that chunk, before calculating the temperature. This can be
useful if the atoms are streaming or otherwise moving collectively,
and you wish to calculate only the thermal temperature.
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
thermal temperature.
For the {bias} keyword, {bias-ID} refers to the ID of a temperature
compute that removes a "bias" velocity from each atom. This also
allows compute temp/chunk 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 velocity profile. Note
that the temperature compute will apply its bias globally to the
entire system, not on a per-chunk basis.
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
of the other per-chunk values, such as {kecom} or {internal}, which
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,
not on a per-chunk basis.
The {adof} and {cdof} keywords define the values used in the degree of
freedom (DOF) formula used for each chunk, as described above. They
can be used to calculate a more appropriate temperature for some kinds
of chunks. Here are 3 examples.
freedom (DOF) formulas used for the global or per-chunk temperature,
as described above. They can be used to calculate a more appropriate
temperature for some kinds of chunks. Here are 3 examples.
If spatially binned chunks contain some number of water molecules and
"fix shake"_fix_shake.html is used to make each molecule rigid, then
@ -148,15 +193,30 @@ this case).
[Output info:]
This compute calculates a global vector where the number of rows = the
number of chunks {Nchunk} as calculated by the specified "compute
chunk/atom"_compute_chunk_atom.html command. These values can be
accessed by any command that uses global vector values from a compute
as input. See "Section_howto 15"_Section_howto.html#howto_15 for an
overview of LAMMPS output options.
This compute calculates a global scalar (the temperature) and a global
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
vector values from a compute as input. See "this
section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The vector values are "intensive". The vector values will be in
temperature "units"_units.html.
This compute also optionally calculates a global array, if one or more
of the optional values are specified. The number of rows in the array
= the number of chunks {Nchunk} as calculated by the specified
"compute chunk/atom"_compute_chunk_atom.html command. The number of
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
compute as input. Again, see "Section_howto
15"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar value calculated by this compute is "intensive". The
vector values are "extensive". The array values are "intensive".
The scalar value will be in temperature "units"_units.html. The
vector values will be in energy "units"_units.html. The array values
will be in temperature "units"_units.html for the {temp} value, and in
energy "units"_units.html for the {kecom} and {internal} values.
[Restrictions:]

View File

@ -53,7 +53,7 @@ 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,
zz, xy, xz, yz.
</P>
<P>The number of atoms contributing to the temperature is compute each
<P>The number of atoms contributing to the temperature is calculated each
time the temperature is evaluated since it is assumed atoms can
enter/leave the region. Thus there is no need to use the <I>dynamic</I>
option of the <A HREF = "compute_modify.html">compute_modify</A> command for this

View File

@ -50,7 +50,7 @@ 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,
zz, xy, xz, yz.
The number of atoms contributing to the temperature is compute each
The number of atoms contributing to the temperature is calculated each
time the temperature is evaluated since it is assumed atoms can
enter/leave the region. Thus there is no need to use the {dynamic}
option of the "compute_modify"_compute_modify.html command for this