reformat, add versionadded marker

This commit is contained in:
Axel Kohlmeyer
2023-06-07 04:33:08 -04:00
parent 8eed55b56c
commit 0f925f7a39

View File

@ -45,92 +45,107 @@ Examples
Description Description
""""""""""" """""""""""
Compute *stress/mop* and compute *stress/mop/profile* define computations that Compute *stress/mop* and compute *stress/mop/profile* define
calculate components of the local stress tensor using the method of computations that calculate components of the local stress tensor using
planes :ref:`(Todd) <mop-todd>`. Specifically in compute *stress/mop* calculates 3 the method of planes :ref:`(Todd) <mop-todd>`. Specifically in compute
components are computed in directions *dir*,\ *x*\ ; *dir*,\ *y*\ ; and *stress/mop* calculates 3 components are computed in directions *dir*,\
*dir*,\ *z*\ ; where *dir* is the direction normal to the plane, while *x*\ ; *dir*,\ *y*\ ; and *dir*,\ *z*\ ; where *dir* is the direction
in compute *stress/mop/profile* the profile of the stress is computed. normal to the plane, while in compute *stress/mop/profile* the profile
of the stress is computed.
Contrary to methods based on histograms of atomic stress (i.e., using Contrary to methods based on histograms of atomic stress (i.e., using
:doc:`compute stress/atom <compute_stress_atom>`), the method of planes is :doc:`compute stress/atom <compute_stress_atom>`), the method of planes
compatible with mechanical balance in heterogeneous systems and at is compatible with mechanical balance in heterogeneous systems and at
interfaces :ref:`(Todd) <mop-todd>`. interfaces :ref:`(Todd) <mop-todd>`.
The stress tensor is the sum of a kinetic term and a configurational The stress tensor is the sum of a kinetic term and a configurational
term, which are given respectively by Eq. (21) and Eq. (16) in term, which are given respectively by Eq. (21) and Eq. (16) in
:ref:`(Todd) <mop-todd>`. For the kinetic part, the algorithm considers that :ref:`(Todd) <mop-todd>`. For the kinetic part, the algorithm considers
atoms have crossed the plane if their positions at times :math:`t-\Delta t` that atoms have crossed the plane if their positions at times
and :math:`t` are one on either side of the plane, and uses the velocity at :math:`t-\Delta t` and :math:`t` are one on either side of the plane,
time :math:`t-\Delta t/2` given by the velocity Verlet algorithm. and uses the velocity at time :math:`t-\Delta t/2` given by the velocity
Verlet algorithm.
Between one and six keywords can be used to indicate which .. versionadded:: TBD
contributions to the stress must be computed: total stress (total), kinetic stress (kin),
configurational stress (conf), stress due to bond stretching (bond),
stress due to angle bending (angle) and/or due to pairwise non-bonded interactions (pair).
The angle keyword is currently available only for the stress/mop command and not the stress/mop/profile.
NOTE 1: The configurational stress is computed considering all pairs of atoms where at least one atom belongs to group group-ID. contributions from bond and angle potentials
Between one and six keywords can be used to indicate which contributions
to the stress must be computed: total stress (total), kinetic stress
(kin), configurational stress (conf), stress due to bond stretching
(bond), stress due to angle bending (angle) and/or due to pairwise
non-bonded interactions (pair). The angle keyword is currently
available only for the *stress/mop* command and **not** the
*stress/mop/profile* command.
NOTE 1: The configurational stress is computed considering all pairs of
atoms where at least one atom belongs to group group-ID.
NOTE 2: The local stress does not include any Lennard-Jones tail NOTE 2: The local stress does not include any Lennard-Jones tail
corrections to the stress added by the :doc:`pair_modify tail yes <pair_modify>` corrections to the stress added by the :doc:`pair_modify tail yes
command, since those are contributions to the global system pressure. <pair_modify>` command, since those are contributions to the global
system pressure.
NOTE 3: The local stress profile generated by compute *stress/mop/profile* NOTE 3: The local stress profile generated by compute
is similar to that obtained by compute *stress/mop/profile* is similar to that obtained by compute
:doc:`stress/cartesian <compute_stress_profile>`. :doc:`stress/cartesian <compute_stress_profile>`. A key difference is
A key difference is that compute *stress/mop/profile* considers particles that compute *stress/mop/profile* considers particles crossing a set of
crossing a set of planes, while compute *stress/cartesian* computes averages planes, while compute *stress/cartesian* computes averages for a set of
for a set of small volumes. More information small volumes. More information on the similarities and differences can
on the similarities and differences can be found in be found in :ref:`(Ikeshoji)<Ikeshoji2>`.
:ref:`(Ikeshoji)<Ikeshoji2>`.
Output info Output info
""""""""""" """""""""""
Compute *stress/mop* calculates a global vector (indices starting at 1), with 3 Compute *stress/mop* calculates a global vector (indices starting at 1),
values for each declared keyword (in the order the keywords have been with 3 values for each declared keyword (in the order the keywords have
declared). For each keyword, the stress tensor components are ordered as been declared). For each keyword, the stress tensor components are
follows: stress_dir,x, stress_dir,y, and stress_dir,z. ordered as follows: stress_dir,x, stress_dir,y, and stress_dir,z.
Compute *stress/mop/profile* instead calculates a global array, with 1 column Compute *stress/mop/profile* instead calculates a global array, with 1
giving the position of the planes where the stress tensor was computed, column giving the position of the planes where the stress tensor was
and with 3 columns of values for each declared keyword (in the order the computed, and with 3 columns of values for each declared keyword (in the
keywords have been declared). For each keyword, the profiles of stress order the keywords have been declared). For each keyword, the profiles
tensor components are ordered as follows: stress_dir,x; stress_dir,y; of stress tensor components are ordered as follows: stress_dir,x;
and stress_dir,z. stress_dir,y; and stress_dir,z.
The values are in pressure :doc:`units <units>`. The values are in pressure :doc:`units <units>`.
The values produced by this compute can be accessed by various :doc:`output commands <Howto_output>`. The values produced by this compute can be accessed by various
For instance, the results can be written to a file using the :doc:`output commands <Howto_output>`. For instance, the results can be
:doc:`fix ave/time <fix_ave_time>` command. Please see the example written to a file using the :doc:`fix ave/time <fix_ave_time>`
in the examples/PACKAGES/mop folder. command. Please see the example in the examples/PACKAGES/mop folder.
Restrictions Restrictions
"""""""""""" """"""""""""
These styles are part of the EXTRA-COMPUTE package. They are only enabled if These styles are part of the EXTRA-COMPUTE package. They are only
LAMMPS is built with that package. See the :doc:`Build package <Build_package>` enabled if LAMMPS is built with that package. See the :doc:`Build
doc page on for more info. package <Build_package>` doc page on for more info.
The method is only implemented for 3d orthogonal simulation boxes whose The method is only implemented for 3d orthogonal simulation boxes whose
size does not change in time, and axis-aligned planes. size does not change in time, and axis-aligned planes.
The method only works with two-body pair interactions, because it The method only works with two-body pair interactions, because it
requires the class method pair->single() to be implemented. In requires the class method ``Pair::single()`` to be implemented, which is
particular, compute *stress/mop/profile* does not work with more than not possible for manybody potentials. In particular, compute
two-body pair interactions, long range (kspace) interactions and angle/dihedral/improper *stress/mop/profile* does not work with more than two-body pair
intramolecular interactions. Similarly, compute *stress/mop* does not work with more than interactions, long range (kspace) interactions and
two-body pair interactions, long range (kspace) interactions and dihedral/improper angle/dihedral/improper intramolecular interactions. Similarly, compute
intramolecular interactions but works with all bond interactions with the class method *stress/mop* does not work with more than two-body pair interactions,
single() implemented and all angle interactions with the class method born_matrix() long range (kspace) interactions and dihedral/improper intramolecular
implemented. interactions but works with all bond interactions with the class method
single() implemented and all angle interactions with the class method
born_matrix() implemented.
Related commands Related commands
"""""""""""""""" """"""""""""""""
:doc:`compute stress/atom <compute_stress_atom>`, :doc:`compute pressure <compute_pressure>`, :doc:`compute stress/cartesian <compute_stress_profile>`, :doc:`compute stress/cylinder <compute_stress_profile>`, :doc:`compute stress/spherical <compute_stress_profile>` :doc:`compute stress/atom <compute_stress_atom>`,
:doc:`compute pressure <compute_pressure>`,
:doc:`compute stress/cartesian <compute_stress_profile>`,
:doc:`compute stress/cylinder <compute_stress_profile>`,
:doc:`compute stress/spherical <compute_stress_profile>`
Default Default
""""""" """""""