diff --git a/doc/compute_temp_chunk.html b/doc/compute_temp_chunk.html index a242277cb9..9d1b8d1f56 100644 --- a/doc/compute_temp_chunk.html +++ b/doc/compute_temp_chunk.html @@ -13,7 +13,7 @@

Syntax:

-
compute ID group-ID temp/chunk chunkID keyword value ... 
+
compute ID group-ID temp/chunk chunkID value1 value2 ... keyword value ... 
 

Examples:

-
compute 1 fluid temp/chunk molchunk 
-
-
compute 1 fluid temp/chunk molchunk bias tpartial adof 2.0 
+
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 
 

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, fix -temp/rescale, fix npt, 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 command, which assigns each atom @@ -64,33 +68,70 @@ chunk/atom doc page and "Section_how 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 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 +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, or fix -shake or 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 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 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 +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. +

+
+ +

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, or fix shake +or 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 degress of freedom +appropriately, as explained below.

Note that this compute and the fix ave/chunk temp 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.

-

The simplest way to output the results of the compute temp/chunk -calculation to a file is to use the fix ave/time -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 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 
 

@@ -124,22 +165,27 @@ fix 1 all ave/time 100 1 100 c_myChunk file tmp.out mode vector

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 is used to make each molecule rigid, then @@ -158,15 +204,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 command. These values can be -accessed by any command that uses global vector values from a compute -as input. See Section_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 for an overview of LAMMPS output +options.

-

The vector values are "intensive". The vector values will be in -temperature units. +

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 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 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. The +vector values will be in energy units. The array values +will be in temperature units for the temp value, and in +energy units for the kecom and internal values.

Restrictions:

diff --git a/doc/compute_temp_chunk.txt b/doc/compute_temp_chunk.txt index cfb9e96933..fe066e9f1a 100644 --- a/doc/compute_temp_chunk.txt +++ b/doc/compute_temp_chunk.txt @@ -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:] diff --git a/doc/compute_temp_region.html b/doc/compute_temp_region.html index c2e2d86c8f..06a5250926 100644 --- a/doc/compute_temp_region.html +++ b/doc/compute_temp_region.html @@ -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.

-

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 command for this diff --git a/doc/compute_temp_region.txt b/doc/compute_temp_region.txt index faf95ab34f..903187c408 100644 --- a/doc/compute_temp_region.txt +++ b/doc/compute_temp_region.txt @@ -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