support for general tri edge vectors in thermo output

This commit is contained in:
Steve Plimpton
2024-04-05 14:31:53 -06:00
parent 905ceb98f1
commit d615d8053b
6 changed files with 355 additions and 204 deletions

View File

@ -94,19 +94,20 @@ restricted triclinic parallelepiped.
simulation boxes in LAMMPS.
Note that the :doc:`thermo_style custom <thermo_style>` command has
keywords for outputting the various parameters that define both
restricted and general triclinic simulation boxes. Thus you can check
the restricted triclinic box parameters LAMMPS generates to rotate a
general triclinic box to restricted triclinic form.
keywords for outputting the various parameters that define the size
and shape of orthogonal, restricted triclinic, and general triclinic
simulation boxes.
For orthogonal boxes there these are the 6 thermo keywords
(xlo,ylo,zlo) and (xhi,yhi,zhi).
For restricted triclinic boxes these are the 9 thermo keywords for
(xlo,ylo,zlo), (xhi,yhi,zhi), and the (xy,xz,yz) tilt factors. For
general triclinic boxes these are the 12 thermo keywords for
(xlo,ylo,zlo), (xhi,yhi,zhi), and the (xy,xz,yz) tilt factors.
For general triclinic boxes these are the 12 thermo keywords for
(xlo,ylo,zhi) and the components of the **A**, **B**, **C** edge
vectors. For both orthogonal and restricted triclinic boxes, the
thermo keywords lx/ly/lz refer to the box sizes, namely lx = xhi -
xlo, etc. Lx,ly,lz are the box edge vector lengths for orthogonal and
restricted/general triclinic simulation boxes.
vectors, namely (avecx,avecy,avecz), (bvecx,bvecy,bvecz), and
(cvecx,cvecy,cvecz),
The remainder of this doc page explains (a) how LAMMPS operates with
general triclinic simulation boxes, (b) mathematical transformations

View File

@ -25,12 +25,18 @@ Syntax
evdwl, ecoul, epair, ebond, eangle, edihed, eimp,
emol, elong, etail,
enthalpy, ecouple, econserve,
vol, density, lx, ly, lz, xlo, xhi, ylo, yhi, zlo, zhi,
xy, xz, yz, xlat, ylat, zlat,
bonds, angles, dihedrals, impropers,
pxx, pyy, pzz, pxy, pxz, pyz,
fmax, fnorm, nbuild, ndanger,
vol, density,
xlo, xhi, ylo, yhi, zlo, zhi,
xy, xz, yz,
avecx, avecy, avecz,
bvecx, bvecy, bvecz,
cvecx, cvecy, cvecz,
lx, ly, lz,
xlat, ylat, zlat,
cella, cellb, cellc, cellalpha, cellbeta, cellgamma,
pxx, pyy, pzz, pxy, pxz, pyz,
bonds, angles, dihedrals, impropers,
fmax, fnorm, nbuild, ndanger,
c_ID, c_ID[I], c_ID[I][J],
f_ID, f_ID[I], f_ID[I][J],
v_name, v_name[I]
@ -66,18 +72,21 @@ Syntax
econserve = pe + ke + ecouple = etotal + ecouple
vol = volume
density = mass density of system
lx,ly,lz = box lengths in x,y,z
xlo,xhi,ylo,yhi,zlo,zhi = box boundaries
xy,xz,yz = box tilt for restricted triclinic (non-orthogonal) simulation boxes
avecx,avecy,avecz = components of edge vector A for general triclinic simulation boxes
bvecx,bvecy,bvecz = components of edge vector B for general triclinic simulation boxes
cvecx,cvecy,cvecz = components of edge vector C for general triclinic simulation boxes
lx,ly,lz = box lengths in x,y,z
xlat,ylat,zlat = lattice spacings as calculated by :doc:`lattice <lattice>` command
bonds,angles,dihedrals,impropers = # of these interactions defined
cella,cellb,cellc = periodic cell lattice constants a,b,c
cellalpha, cellbeta, cellgamma = periodic cell angles alpha,beta,gamma
pxx,pyy,pzz,pxy,pxz,pyz = 6 components of pressure tensor
bonds,angles,dihedrals,impropers = # of these interactions defined
fmax = max component of force on any atom in any dimension
fnorm = length of force vector for all atoms
nbuild = # of neighbor list builds
ndanger = # of dangerous neighbor list builds
cella,cellb,cellc = periodic cell lattice constants a,b,c
cellalpha, cellbeta, cellgamma = periodic cell angles alpha,beta,gamma
c_ID = global scalar value calculated by a compute with ID
c_ID[I] = Ith component of global vector calculated by a compute with ID, I can include wildcard (see below)
c_ID[I][J] = I,J component of global array calculated by a compute with ID
@ -248,7 +257,7 @@ and *pxx*, *pyy*, etc.
----------
Here is more information on other keywords whose meaning may not be
clear:
clear.
The *step*, *elapsed*, and *elaplong* keywords refer to timestep
count. *Step* is the current timestep, or iteration count when a
@ -322,6 +331,38 @@ thermostatting or barostatting to their coupling reservoirs -- that is,
the NVT, NPH, or NPT ensembles, the *econserve* quantity should remain
constant over time even though *etotal* may change.
In LAMMPS, the simulation box can be defined as orthogonal or
triclinic (non-orthogonal). See the :doc:`Howto_triclinic
<Howto_triclinic>` doc page for a detailed explanation of orthogonal,
restricted triclinic, and general triclinic simulation boxes and how
LAMMPS rotates a general triclinic box to be restricted triclinic
internally.
The *lx*, *ly*, *lz* keywords are the extent of the simulation box in
each dimension. The *xlo*, *xhi*, *ylo*, *yhi*, *zlo*, *zhi* keywords
are the lower and upper bounds of the simulation box in each
dimension. I.e. *lx* = *xhi* - *xlo). These 9 values are the same
for all 3 kinds of boxes. I.e. for a restricted triclinic box, they
are the values as if the box were not tilted. For a general triclinic
box, they are the values after it is internally rotated to be a
restricted triclinic box.
THe *xy*, *xz*, *yz* are the current tilt factors for a triclinic box.
They are the same for restricted and general triclinic boxes.
The *avecx*, *avecy*, *avecz*, *bvecx*, *bvecy*, *bvecz*, *cvecx*,
*cvecy*, *cvecz* are the components of the 3 edge vectors of the
current general triclinic box. They are only non-zero if a general
triclinic box was defined when the simultion box was created.
The *cella*, *cellb*, *cellc*, *cellalpha*, *cellbeta*, *cellgamma*
keywords correspond to the usual crystallographic quantities that
define the periodic simulation box of a crystalline system. See the
:doc:`Howto triclinic <Howto_triclinic>` page for a precise definition
of these quantities in terms of the LAMMPS representation of a
restricted triclinic simulation box via *lx*, *ly*, *lz*, *yz*, *xz*,
*xy*\ .
The *pxx,pyy,pzz,pxy,pxz,pyz* keywords are the 6 components of the
symmetric pressure tensor for the system. See the :doc:`compute
pressure <compute_pressure>` command doc page for details of how it is
@ -329,7 +370,7 @@ calculated.
If the :doc:`thermo_modify triclinic/general <thermo_modify>` option
is set and the simulation box was created as a general triclinic box,
then the components will be output as values consistent with the
then the 6 components will be output as values consistent with the
orientation of the general triclinic box relative to the standard xyz
coordinate axes. If this keyword is not used, the values will be
consistent with the orientation of the restricted triclinic box (which
@ -362,14 +403,6 @@ to reduce the delay factor to ensure no force interactions are missed
by atoms moving beyond the neighbor skin distance before a rebuild
takes place.
The keywords *cella*, *cellb*, *cellc*, *cellalpha*, *cellbeta*,
*cellgamma*, correspond to the usual crystallographic quantities that
define the periodic unit cell of a crystal. See the :doc:`Howto
triclinic <Howto_triclinic>` page for a geometric description of
restricted triclinic periodic cells, including a precise definition of
these quantities in terms of the internal LAMMPS cell dimensions *lx*,
*ly*, *lz*, *yz*, *xz*, *xy*\ .
----------
For output values from a compute or fix or variable, the bracketed