169 lines
6.4 KiB
ReStructuredText
169 lines
6.4 KiB
ReStructuredText
.. index:: compute stress/mop
|
|
.. index:: compute stress/mop/profile
|
|
|
|
compute stress/mop command
|
|
==========================
|
|
|
|
compute stress/mop/profile command
|
|
==================================
|
|
|
|
Syntax
|
|
""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
compute ID group-ID style dir args keywords ...
|
|
|
|
* ID, group-ID are documented in :doc:`compute <compute>` command
|
|
* style = *stress/mop* or *stress/mop/profile*
|
|
* dir = *x* or *y* or *z* is the direction normal to the plane
|
|
* args = argument specific to the compute style
|
|
* keywords = *kin* or *conf* or *total* or *pair* or *bond* or *angle* or *dihedral* (one or more can be specified)
|
|
|
|
.. parsed-literal::
|
|
|
|
*stress/mop* args = pos
|
|
pos = *lower* or *center* or *upper* or coordinate value (distance units) is the position of the plane
|
|
*stress/mop/profile* args = origin delta
|
|
origin = *lower* or *center* or *upper* or coordinate value (distance units) is the position of the first plane
|
|
delta = value (distance units) is the distance between planes
|
|
|
|
Examples
|
|
""""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
compute 1 all stress/mop x lower total
|
|
compute 1 liquid stress/mop z 0.0 kin conf
|
|
fix 1 all ave/time 10 1000 10000 c_1[*] file mop.time
|
|
fix 1 all ave/time 10 1000 10000 c_1[2] file mop.time
|
|
|
|
compute 1 all stress/mop/profile x lower 0.1 total
|
|
compute 1 liquid stress/mop/profile z 0.0 0.25 kin conf
|
|
fix 1 all ave/time 500 20 10000 c_1[*] ave running overwrite file mopp.time mode vector
|
|
|
|
Description
|
|
"""""""""""
|
|
|
|
Compute *stress/mop* and compute *stress/mop/profile* define
|
|
computations that calculate components of the local stress tensor using
|
|
the method of planes :ref:`(Todd) <mop-todd>`. Specifically in compute
|
|
*stress/mop* calculates 3 components are computed in directions *dir*,\
|
|
*x*\ ; *dir*,\ *y*\ ; and *dir*,\ *z*\ ; where *dir* is the direction
|
|
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
|
|
:doc:`compute stress/atom <compute_stress_atom>`), the method of planes
|
|
is compatible with mechanical balance in heterogeneous systems and at
|
|
interfaces :ref:`(Todd) <mop-todd>`.
|
|
|
|
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
|
|
:ref:`(Todd) <mop-todd>`. For the kinetic part, the algorithm considers
|
|
that atoms have crossed the plane if their positions at times
|
|
:math:`t-\Delta t` and :math:`t` are one on either side of the plane,
|
|
and uses the velocity at time :math:`t-\Delta t/2` given by the velocity
|
|
Verlet algorithm.
|
|
|
|
.. versionadded:: 15Jun2023
|
|
|
|
contributions from bond, angle and dihedral potentials
|
|
|
|
Between one and seven 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), stress due to dihedral terms (dihedral)
|
|
and/or due to pairwise non-bonded interactions (pair).
|
|
|
|
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
|
|
corrections to the stress added by the :doc:`pair_modify tail yes
|
|
<pair_modify>` command, since those are contributions to the global
|
|
system pressure.
|
|
|
|
NOTE 3: The local stress profile generated by compute
|
|
*stress/mop/profile* is similar to that obtained by compute
|
|
:doc:`stress/cartesian <compute_stress_cartesian>`.
|
|
A key difference is that compute *stress/mop/profile*
|
|
considers particles crossing a set of planes, while
|
|
*stress/cartesian* computes averages for a set
|
|
of small volumes.
|
|
Moreover, *stress/cartesian* compute computes the diagonal components of the stress
|
|
tensor :math:`P_{xx}`, :math:`P_{yy}`, and :math:`P_{zz}`, while
|
|
*stress/mop/profile* computes the components
|
|
:math:`P_{ix}`, :math:`P_{iy}`, and :math:`P_{iz}`, where :math:`i` is the
|
|
direction normal to the plane.
|
|
|
|
Output info
|
|
"""""""""""
|
|
|
|
Compute *stress/mop* calculates a global vector (indices starting at 1),
|
|
with 3 values for each declared keyword (in the order the keywords have
|
|
been declared). For each keyword, the stress tensor components are
|
|
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 giving the position of the planes where the stress tensor was
|
|
computed, and with 3 columns of values for each declared keyword (in the
|
|
order the keywords have been declared). For each keyword, the profiles
|
|
of stress tensor components are ordered as follows: stress_dir,x;
|
|
stress_dir,y; and stress_dir,z.
|
|
|
|
The values are in pressure :doc:`units <units>`.
|
|
|
|
The values produced by this compute can be accessed by various
|
|
:doc:`output commands <Howto_output>`. For instance, the results can be
|
|
written to a file using the :doc:`fix ave/time <fix_ave_time>`
|
|
command. Please see the example in the examples/PACKAGES/mop folder.
|
|
|
|
Restrictions
|
|
""""""""""""
|
|
|
|
These styles are part of the EXTRA-COMPUTE package. They are only
|
|
enabled if LAMMPS is built with that package. See the :doc:`Build
|
|
package <Build_package>` doc page on for more info.
|
|
|
|
The method is implemented for orthogonal simulation boxes whose
|
|
size does not change in time, and axis-aligned planes.
|
|
|
|
Contributions from bonds, angles, and dihedrals are not compatible
|
|
with MPI parallel runs.
|
|
|
|
The method only works with two-body pair interactions, because it
|
|
requires the class method ``Pair::single()`` to be implemented, which is
|
|
not possible for manybody potentials. In particular, compute
|
|
*stress/mop/profile* and *stress/mop* do not work with more than two-body
|
|
pair interactions, long range (kspace) interactions and
|
|
improper intramolecular interactions.
|
|
|
|
The impact of fixes that affect the stress (e.g. fix langevin) is
|
|
also not included in the stress computed here.
|
|
|
|
Related commands
|
|
""""""""""""""""
|
|
|
|
:doc:`compute stress/atom <compute_stress_atom>`,
|
|
:doc:`compute pressure <compute_pressure>`,
|
|
:doc:`compute stress/cartesian <compute_stress_cartesian>`,
|
|
:doc:`compute stress/cylinder <compute_stress_curvilinear>`,
|
|
:doc:`compute stress/spherical <compute_stress_curvilinear>`
|
|
|
|
Default
|
|
"""""""
|
|
|
|
none
|
|
|
|
----------
|
|
|
|
.. _mop-todd:
|
|
|
|
**(Todd)** B. D. Todd, Denis J. Evans, and Peter J. Daivis: "Pressure tensor for inhomogeneous fluids",
|
|
Phys. Rev. E 52, 1627 (1995).
|
|
|
|
.. _Ikeshoji3:
|
|
|
|
**(Ikeshoji)** Ikeshoji, Hafskjold, Furuholt, Mol Sim, 29, 101-109, (2003).
|