2007-02-10 05:40:32 +08:00
< HTML >
< CENTER > < A HREF = "http://lammps.sandia.gov" > LAMMPS WWW Site< / A > - < A HREF = "Manual.html" > LAMMPS Documentation< / A > - < A HREF = "Section_commands.html#comm" > LAMMPS Commands< / A >
< / CENTER >
< HR >
< H3 > compute stress/atom command
< / H3 >
< P > < B > Syntax:< / B >
< / P >
2007-12-01 07:16:45 +08:00
< PRE > compute ID group-ID stress/atom keyword ...
2007-02-10 05:40:32 +08:00
< / PRE >
2007-12-01 07:16:45 +08:00
< UL > < LI > ID, group-ID are documented in < A HREF = "compute.html" > compute< / A > command
< LI > stress/atom = style name of this compute command
< LI > zero or more keywords may be appended
2012-02-15 04:13:00 +08:00
< LI > keyword = < I > ke< / I > or < I > pair< / I > or < I > bond< / I > or < I > angle< / I > or < I > dihedral< / I > or < I > improper< / I > or < I > kspace< / I > or < I > fix< / I > or < I > virial< / I >
2007-02-10 05:40:32 +08:00
< / UL >
< P > < B > Examples:< / B >
< / P >
2008-02-07 23:17:25 +08:00
< PRE > compute 1 mobile stress/atom
compute 1 all stress/atom pair bond
2007-07-03 03:59:42 +08:00
< / PRE >
2007-02-10 05:40:32 +08:00
< P > < B > Description:< / B >
< / P >
2007-12-01 07:16:45 +08:00
< P > Define a computation that computes the symmetric per-atom stress
tensor for each atom in a group. The tensor for each atom has 6
2009-12-04 07:58:11 +08:00
components and is stored as a 6-element vector in the following order:
xx, yy, zz, xy, xz, yz. See the < A HREF = "compute_pressure.html" > compute
2007-12-01 07:16:45 +08:00
pressure< / A > command if you want the stress tensor
2009-12-04 07:58:11 +08:00
(pressure) of the entire system.
2007-02-10 05:40:32 +08:00
< / P >
2007-12-01 07:36:27 +08:00
< P > The stress tensor for atom < I > I< / I > is given by the following formula,
where < I > a< / I > and < I > b< / I > take on values x,y,z to generate the 6 components of
the symmetric tensor:
2007-02-10 05:40:32 +08:00
< / P >
< CENTER > < IMG SRC = "Eqs/stress_tensor.jpg" >
< / CENTER >
2007-07-03 03:59:42 +08:00
< P > The first term is a kinetic energy contribution for atom < I > I< / I > . The
2007-12-01 07:36:27 +08:00
second term is a pairwise energy contribution where < I > n< / I > loops over the
2007-12-01 07:16:45 +08:00
< I > Np< / I > neighbors of atom < I > I< / I > , < I > r1< / I > and < I > r2< / I > are the positions of the 2
2007-12-01 07:36:27 +08:00
atoms in the pairwise interaction, and < I > F1< / I > and < I > F2< / I > are the forces on
the 2 atoms resulting from the pairwise interaction. The third term
is a bond contribution of similar form for the < I > Nb< / I > bonds which atom
2008-01-10 05:57:06 +08:00
< I > I< / I > is part of. There are similar terms for the < I > Na< / I > angle, < I > Nd< / I >
2012-02-15 04:13:00 +08:00
dihedral, and < I > Ni< / I > improper interactions atom < I > I< / I > is part of. There
is also a term for the KSpace contribution from long-range Coulombic
interactions, if defined. Finally, there is a term for the < I > Nf< / I >
< A HREF = "fix.html" > fixes< / A > that apply internal constraint forces to atom < I > I< / I > .
Currently, only the < A HREF = "fix_shake.html" > fix shake< / A > and < A HREF = "fix_rigid.html" > fix
rigid< / A > commands contribute to this term.
2007-12-01 07:16:45 +08:00
< / P >
2007-12-01 07:36:27 +08:00
< P > As the coefficients in the formula imply, a virial contribution
produced by a small set of atoms (e.g. 4 atoms in a dihedral or 3
atoms in a Tersoff 3-body interaction) is assigned in equal portions
to each atom in the set. E.g. 1/4 of the dihedral virial to each of
2008-01-10 05:57:06 +08:00
the 4 atoms, or 1/3 of the fix virial due to SHAKE constraints applied
to atoms in a a water molecule via the < A HREF = "fix_shake.html" > fix shake< / A >
command.
2007-12-01 07:16:45 +08:00
< / P >
< P > If no extra keywords are listed, all of the terms in this formula are
included in the per-atom stress tensor. If any extra keywords are
2009-03-06 05:17:05 +08:00
listed, only those terms are summed to compute the tensor. The
< I > virial< / I > keyword means include all terms except the kinetic energy
< I > ke< / I > .
2007-12-01 07:16:45 +08:00
< / P >
< P > Note that the stress for each atom is due to its interaction with all
other atoms in the simulation, not just with other atoms in the group.
< / P >
< P > The < A HREF = "dihedral_charmm.html" > dihedral_style charmm< / A > style calculates
pairwise interactions between 1-4 atoms. The virial contribution of
these terms is included in the pair virial, not the dihedral virial.
< / P >
2012-02-16 23:49:48 +08:00
< P > The KSpace contribution is calculated using the method in
2013-02-15 00:24:40 +08:00
< A HREF = "#Heyes" > (Heyes)< / A > for the Ewald method and by the methodology described
in < A HREF = "#Sirk" > (Sirk)< / A > for PPPM. The choice of KSpace solver is specified
by the < A HREF = "kspace_style.html" > kspace_style pppm< / A > command. Note that for
PPPM, the calcluation requires 6 extra FFTs each timestep that
2012-02-16 23:49:48 +08:00
per-atom stress is calculated. Thus it can significantly increase the
cost of the PPPM calculation if it is needed on a large fraction of
the simulation timesteps.
2012-02-15 04:13:00 +08:00
< / P >
2007-12-01 07:16:45 +08:00
< P > Note that as defined in the formula, per-atom stress is the negative
2010-01-24 08:08:59 +08:00
of the per-atom pressure tensor. It is also really a stress*volume
2008-02-07 23:17:25 +08:00
formulation, meaning the computed quantity is in units of
2010-01-24 08:08:59 +08:00
pressure*volume. It would need to be divided by a per-atom volume to
2008-02-07 23:17:25 +08:00
have units of stress (pressure), but an individual atom's volume is
2010-01-24 07:33:43 +08:00
not well defined or easy to compute in a deformed solid or a liquid.
Thus, if the diagonal components of the per-atom stress tensor are
summed for all atoms in the system and the sum is divided by dV, where
d = dimension and V is the volume of the system, the result should be
-P, where P is the total pressure of the system.
2007-12-01 07:16:45 +08:00
< / P >
2009-03-04 01:19:44 +08:00
< P > These lines in an input script for a 3d system should yield that
result. I.e. the last 2 columns of thermo output will be the same:
2007-12-01 07:16:45 +08:00
< / P >
2008-01-04 03:03:15 +08:00
< PRE > compute peratom all stress/atom
2008-06-18 21:47:22 +08:00
compute p all reduce sum c_peratom[1] c_peratom[2] c_peratom[3]
2008-01-17 03:17:20 +08:00
variable press equal -(c_p[1]+c_p[2]+c_p[3])/(3*vol)
2008-01-04 03:03:15 +08:00
thermo_style custom step temp etotal press v_press
2007-12-01 07:16:45 +08:00
< / PRE >
2008-01-04 08:56:10 +08:00
< P > < B > Output info:< / B >
< / P >
2009-12-05 05:04:00 +08:00
< P > This compute calculates a per-atom array with 6 columns, which can be
accessed by indices 1-6 by any command that uses per-atom values from
2011-12-14 04:43:36 +08:00
a compute as input. See < A HREF = "Section_howto.html#howto_15" > Section_howto
15< / A > for an overview of LAMMPS output
options.
2008-01-04 08:56:10 +08:00
< / P >
2010-01-24 07:33:43 +08:00
< P > The per-atom array values will be in pressure*volume
< A HREF = "units.html" > units< / A > as discussed above.
2010-01-24 07:20:05 +08:00
< / P >
2008-02-07 23:17:25 +08:00
< P > < B > Restrictions:< / B > none
2007-02-10 05:40:32 +08:00
< / P >
2007-12-01 07:16:45 +08:00
< P > < B > Related commands:< / B >
2007-02-10 05:40:32 +08:00
< / P >
2009-03-04 01:03:38 +08:00
< P > < A HREF = "compute_pe.html" > compute pe< / A > , < A HREF = "compute_pressure.html" > compute pressure< / A >
2007-07-03 03:59:42 +08:00
< / P >
2007-12-01 07:16:45 +08:00
< P > < B > Default:< / B > none
2007-02-10 05:40:32 +08:00
< / P >
2012-02-16 23:49:48 +08:00
< HR >
< A NAME = "Heyes" > < / A >
< P > < B > (Heyes)< / B > Heyes, Phys Rev B 49, 755 (1994),
< / P >
2013-02-15 00:24:40 +08:00
< A NAME = "Sirk" > < / A >
2013-02-15 00:29:54 +08:00
< P > < B > (Sirk)< / B > Sirk, Moore, Brown, J Chem Phys, 138, 064505 (2013).
2013-02-15 00:24:40 +08:00
< / P >
2007-02-10 05:40:32 +08:00
< / HTML >