forked from lijiext/lammps
192 lines
8.8 KiB
ReStructuredText
192 lines
8.8 KiB
ReStructuredText
.. index:: thermo_modify
|
|
|
|
thermo_modify command
|
|
=====================
|
|
|
|
Syntax
|
|
""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
thermo_modify keyword value ...
|
|
|
|
* one or more keyword/value pairs may be listed
|
|
|
|
.. parsed-literal::
|
|
|
|
keyword = *lost* or *lost/bond* or *norm* or *flush* or *line* or *format* or *temp* or *press*\ :l
|
|
*lost* value = *error* or *warn* or *ignore*
|
|
*lost/bond* value = *error* or *warn* or *ignore*
|
|
*norm* value = *yes* or *no*
|
|
*flush* value = *yes* or *no*
|
|
*line* value = *one* or *multi*
|
|
*format* values = *line* string, *int* string, *float* string, M string, or *none*
|
|
string = C-style format string
|
|
M = integer from 1 to N, where N = # of quantities being output
|
|
*temp* value = compute ID that calculates a temperature
|
|
*press* value = compute ID that calculates a pressure
|
|
|
|
Examples
|
|
""""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
thermo_modify lost ignore flush yes
|
|
thermo_modify temp myTemp format 3 %15.8g
|
|
thermo_modify temp myTemp format line "%ld %g %g %15.8g"
|
|
thermo_modify line multi format float %g
|
|
|
|
Description
|
|
"""""""""""
|
|
|
|
Set options for how thermodynamic information is computed and printed
|
|
by LAMMPS.
|
|
|
|
.. note::
|
|
|
|
These options apply to the currently defined thermo style. When
|
|
you specify a :doc:`thermo_style <thermo_style>` command, all
|
|
thermodynamic settings are restored to their default values, including
|
|
those previously reset by a thermo_modify command. Thus if your input
|
|
script specifies a thermo_style command, you should use the
|
|
thermo_modify command after it.
|
|
|
|
The *lost* keyword determines whether LAMMPS checks for lost atoms
|
|
each time it computes thermodynamics and what it does if atoms are
|
|
lost. An atom can be "lost" if it moves across a non-periodic
|
|
simulation box :doc:`boundary <boundary>` or if it moves more than a box
|
|
length outside the simulation domain (or more than a processor
|
|
sub-domain length) before reneighboring occurs. The latter case is
|
|
typically due to bad dynamics, e.g. too large a timestep or huge
|
|
forces and velocities. If the value is *ignore*\ , LAMMPS does not
|
|
check for lost atoms. If the value is *error* or *warn*\ , LAMMPS
|
|
checks and either issues an error or warning. The code will exit with
|
|
an error and continue with a warning. A warning will only be issued
|
|
once, the first time an atom is lost. This can be a useful debugging
|
|
option.
|
|
|
|
The *lost/bond* keyword determines whether LAMMPS throws an error or
|
|
not if an atom in a bonded interaction (bond, angle, etc) cannot be
|
|
found when it creates bonded neighbor lists. By default this is a
|
|
fatal error. However in some scenarios it may be desirable to only
|
|
issue a warning or ignore it and skip the computation of the missing
|
|
bond, angle, etc. An example would be when gas molecules in a vapor
|
|
are drifting out of the box through a fixed boundary condition (see
|
|
the :doc:`boundary <boundary>` command). In this case one atom may be
|
|
deleted before the rest of the molecule is, on a later timestep.
|
|
|
|
The *norm* keyword determines whether various thermodynamic output
|
|
values are normalized by the number of atoms or not, depending on
|
|
whether it is set to *yes* or *no*\ . Different unit styles have
|
|
different defaults for this setting (see below). Even if *norm* is
|
|
set to *yes*\ , a value is only normalized if it is an "extensive"
|
|
quantity, meaning that it scales with the number of atoms in the
|
|
system. For the thermo keywords described by the doc page for the
|
|
:doc:`thermo_style <thermo_style>` command, all energy-related keywords
|
|
are extensive, such as *pe* or *ebond* or *enthalpy*\ . Other keywords
|
|
such as *temp* or *press* are "intensive" meaning their value is
|
|
independent (in a statistical sense) of the number of atoms in the
|
|
system and thus are never normalized. For thermodynamic output values
|
|
extracted from fixes and computes in a :doc:`thermo_style custom <thermo_style>` command, the doc page for the individual
|
|
:doc:`fix <fix>` or :doc:`compute <compute>` lists whether the value is
|
|
"extensive" or "intensive" and thus whether it is normalized.
|
|
Thermodynamic output values calculated by a variable formula are
|
|
assumed to be "intensive" and thus are never normalized. You can
|
|
always include a divide by the number of atoms in the variable formula
|
|
if this is not the case.
|
|
|
|
The *flush* keyword invokes a flush operation after thermodynamic info
|
|
is written to the log file. This insures the output in that file is
|
|
current (no buffering by the OS), even if LAMMPS halts before the
|
|
simulation completes.
|
|
|
|
The *line* keyword determines whether thermodynamics will be output as
|
|
a series of numeric values on one line or in a multi-line format with
|
|
3 quantities with text strings per line and a dashed-line header
|
|
containing the timestep and CPU time. This modify option overrides
|
|
the *one* and *multi* thermo_style settings.
|
|
|
|
The *format* keyword can be used to change the default numeric format
|
|
of any of quantities the :doc:`thermo_style <thermo_style>` command
|
|
outputs. All the specified format strings are C-style formats,
|
|
e.g. as used by the C/C++ printf() command. The *line* keyword takes
|
|
a single argument which is the format string for the entire line of
|
|
thermo output, with N fields, which you must enclose in quotes if it
|
|
is more than one field. The *int* and *float* keywords take a single
|
|
format argument and are applied to all integer or floating-point
|
|
quantities output. The setting for *M string* also takes a single
|
|
format argument which is used for the Mth value output in each line,
|
|
e.g. the fifth column is output in high precision for "format 5
|
|
%20.15g".
|
|
|
|
The *format* keyword can be used multiple times. The precedence is
|
|
that for each value in a line of output, the *M* format (if specified)
|
|
is used, else the *int* or *float* setting (if specified) is used,
|
|
else the *line* setting (if specified) for that value is used, else
|
|
the default setting is used. A setting of *none* clears all previous
|
|
settings, reverting all values to their default format.
|
|
|
|
.. note::
|
|
|
|
The thermo output values *step* and *atoms* are stored
|
|
internally as 8-byte signed integers, rather than the usual 4-byte
|
|
signed integers. When specifying the *format int* option you can use
|
|
a "%d"-style format identifier in the format string and LAMMPS will
|
|
convert this to the corresponding 8-byte form when it is applied to
|
|
those keywords. However, when specifying the *line* option or *format
|
|
M string* option for *step* and *natoms*\ , you should specify a format
|
|
string appropriate for an 8-byte signed integer, e.g. one with "%ld".
|
|
|
|
The *temp* keyword is used to determine how thermodynamic temperature
|
|
is calculated, which is used by all thermo quantities that require a
|
|
temperature ("temp", "press", "ke", "etotal", "enthalpy", "pxx", etc).
|
|
The specified compute ID must have been previously defined by the user
|
|
via the :doc:`compute <compute>` command and it must be a style of
|
|
compute that calculates a temperature. As described in the
|
|
:doc:`thermo_style <thermo_style>` command, thermo output uses a default
|
|
compute for temperature with ID = *thermo_temp*. This option allows
|
|
the user to override the default.
|
|
|
|
The *press* keyword is used to determine how thermodynamic pressure is
|
|
calculated, which is used by all thermo quantities that require a
|
|
pressure ("press", "enthalpy", "pxx", etc). The specified compute ID
|
|
must have been previously defined by the user via the
|
|
:doc:`compute <compute>` command and it must be a style of compute that
|
|
calculates a pressure. As described in the
|
|
:doc:`thermo_style <thermo_style>` command, thermo output uses a default
|
|
compute for pressure with ID = *thermo_press*. This option allows the
|
|
user to override the default.
|
|
|
|
.. note::
|
|
|
|
If both the *temp* and *press* keywords are used in a single
|
|
thermo_modify command (or in two separate commands), then the order in
|
|
which the keywords are specified is important. Note that a :doc:`pressure compute <compute_pressure>` defines its own temperature compute as
|
|
an argument when it is specified. The *temp* keyword will override
|
|
this (for the pressure compute being used by thermodynamics), but only
|
|
if the *temp* keyword comes after the *press* keyword. If the *temp*
|
|
keyword comes before the *press* keyword, then the new pressure
|
|
compute specified by the *press* keyword will be unaffected by the
|
|
*temp* setting.
|
|
|
|
Restrictions
|
|
""""""""""""
|
|
none
|
|
|
|
Related commands
|
|
""""""""""""""""
|
|
|
|
:doc:`thermo <thermo>`, :doc:`thermo_style <thermo_style>`
|
|
|
|
Default
|
|
"""""""
|
|
|
|
The option defaults are lost = error, norm = yes for unit style of
|
|
*lj*\ , norm = no for unit style of *real* and *metal*\ , flush = no,
|
|
and temp/press = compute IDs defined by thermo_style.
|
|
|
|
The defaults for the line and format options depend on the thermo
|
|
style. For styles "one" and "custom", the line and format defaults
|
|
are "one", "%8d", and "%12.8g". For style "multi", the line and
|
|
format defaults are "multi", "%8d", and "%14.4f".
|