Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
0e00440
infer bond type using type labels
jrgissing Oct 26, 2025
45ee372
infer angle type using type labels
jrgissing Oct 26, 2025
a5e6871
infer dihedral using type labels
jrgissing Oct 26, 2025
257363c
infer improper using type labels
jrgissing Oct 26, 2025
3e80978
read+parse wildcard flags
jrgissing Oct 27, 2025
366d075
autotyping for bonds
jrgissing Oct 27, 2025
01f1891
autotyping for angles
jrgissing Oct 27, 2025
daab3db
autotyping for dihedrals
jrgissing Oct 27, 2025
b0ce36e
autotyping for impropers
jrgissing Oct 27, 2025
007fc6d
implement wildcard matching
jrgissing Oct 27, 2025
9d1687a
do not update wildcard atom types
jrgissing Oct 27, 2025
4f045b9
we use hyphen delimiters now
jrgissing Oct 27, 2025
6246330
correct error type
jrgissing Oct 29, 2025
0f8d7a7
refactor neighbor types check
jrgissing Oct 29, 2025
d2b0957
adapt speed-up check for wildcards
jrgissing Oct 29, 2025
12b5789
Merge branch 'lammps:develop' into autotyping
jrgissing Nov 17, 2025
900cb69
Merge remote-tracking branch 'upstream/develop' into autotyping
jrgissing Dec 7, 2025
145fd81
Merge branch 'lammps:develop' into autotyping
jrgissing Dec 28, 2025
ac8f89b
wildcard atoms docs
jrgissing Dec 29, 2025
7ab9892
improper docs: encoded symmetries
jrgissing Dec 30, 2025
3ccdf38
Update fix_bond_react.rst
jrgissing Dec 30, 2025
f596885
update comments
jrgissing Dec 31, 2025
3de111f
update phrasing
jrgissing Dec 31, 2025
c5fb943
robust parser for standard type labels
jrgissing Jan 2, 2026
f75f0e9
more correct phrasing
jrgissing Jan 2, 2026
cbc47cf
update polystyrene examples
jrgissing Jan 3, 2026
9cc4d41
update epoxy example
jrgissing Jan 3, 2026
ccbca5a
bugfix for variable probability
jrgissing Jan 3, 2026
31f09bd
update tiny_nylon example
jrgissing Jan 3, 2026
2baa203
update nylon_melt example
jrgissing Jan 3, 2026
71b49a3
update tiny_nylon_json example
jrgissing Jan 3, 2026
42d723b
infer_improper typo
jrgissing Jan 3, 2026
9b3dc8a
wildcards examples
jrgissing Jan 3, 2026
0912e10
docs typos
jrgissing Jan 3, 2026
103d5a7
first draft generated by gemini pro
alphataubio Jan 5, 2026
02a49a0
remove minimization not implemented in kokkos
alphataubio Jan 5, 2026
4a5333b
remove old orphaned version
alphataubio Jan 5, 2026
16989e3
add if (output_every) and match serial version
alphataubio Jan 5, 2026
3d4deea
add constexpr BIG to kokkos version
alphataubio Jan 5, 2026
8b89d91
fix virial and lambda captures
alphataubio Jan 5, 2026
127dcc5
remove old orphaned min_setup() from header
alphataubio Jan 5, 2026
df36af9
fix lambda captures
alphataubio Jan 5, 2026
c06ca10
double -> KK_FLOAT
alphataubio Jan 5, 2026
c56fc30
add copymode
alphataubio Jan 5, 2026
f8fe49a
tagged kernel instead of kokkos lambda for scatter view
alphataubio Jan 5, 2026
57a75f7
add VFLAG
alphataubio Jan 5, 2026
34f062a
fix ghost forces
alphataubio Jan 6, 2026
7232b8b
reverse comm ghost forces
alphataubio Jan 6, 2026
776863d
fix stats
alphataubio Jan 6, 2026
fc9e741
whitespace
alphataubio Jan 6, 2026
f80069e
first batch of C++ modernizations and optimizations suggested by clan…
akohlmey Jan 11, 2026
e16cd60
use nested namespaces
akohlmey Jan 11, 2026
d66a04d
use [[nodiscard]]
akohlmey Jan 11, 2026
e542cc4
use string literals
akohlmey Jan 11, 2026
47df55a
protect KOKKOS_INLINE_FUNCTION from clang-tidy and ClangAnalyzer
akohlmey Jan 11, 2026
39c5ac6
use [[nodiscard]]
akohlmey Jan 11, 2026
aacefd1
use nested namespaces
akohlmey Jan 11, 2026
932c7ca
also protect KOKKOS_FORCEINLINE_FUNCTION macro from clang-tidy and Cl…
akohlmey Jan 11, 2026
2104ad5
disable clang-tidy warning
akohlmey Jan 11, 2026
595271d
add some more raw string literals
akohlmey Jan 11, 2026
97bbe30
Change tag type from t_int_1d_randomread to t_tagint_1d
chemshift Jan 14, 2026
1684ba1
Merge branch 'develop' into modernize-cplusplus
akohlmey Jan 16, 2026
315448a
address issues reported by coverity scan
akohlmey Jan 18, 2026
7988c48
add movie creation settings to CNT stretch example
akohlmey Jan 18, 2026
a9e8f30
add support for writing TGA/TARGA files as better alternative to PPM …
akohlmey Jan 18, 2026
654479e
support RLE compression with TGA and prohibit using compression pipe …
akohlmey Jan 18, 2026
4f615cd
add water box example with different kinds of arrows
akohlmey Jan 18, 2026
ed41c86
add versionadded tag for TGA support
akohlmey Jan 18, 2026
844c697
simplify and avoid redundant code
akohlmey Jan 18, 2026
672a153
fix typo
akohlmey Jan 18, 2026
a4c7d2a
remove unused variable
akohlmey Jan 18, 2026
1c580ce
Preserve const keyword in variable def
stanmoore1 Jan 19, 2026
c202a59
Merge pull request #4827 from alphataubio/alphataubio-shake-kk
akohlmey Jan 19, 2026
62f75fe
Merge pull request #4837 from chemshift/develop
akohlmey Jan 19, 2026
8b44b9f
Merge pull request #4833 from akohlmey/modernize-cplusplus
akohlmey Jan 19, 2026
c2aedfa
Merge branch 'develop' into collected-small-changes
akohlmey Jan 19, 2026
3eb4a4f
Merge pull request #4843 from akohlmey/collected-small-changes
akohlmey Jan 20, 2026
66da026
Merge pull request #4822 from jrgissing/autotyping
akohlmey Jan 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
41 changes: 24 additions & 17 deletions doc/src/dump_image.rst
Original file line number Diff line number Diff line change
Expand Up @@ -212,13 +212,13 @@ Examples
Description
"""""""""""

Dump a high-quality rendered image of the atom configuration every :math:`N`
timesteps and save the images either as a sequence of JPEG or PNG or
PPM files, or as a single movie file. The options for this command as
well as the :doc:`dump_modify <dump_modify>` command control what is
included in the image or movie and how it appears. A series of such
images can easily be manually converted into an animated movie of your
simulation or the process can be automated without writing the
Dump a high-quality rendered image of the atom configuration every
:math:`N` timesteps and save the images either as a sequence of JPEG,
PNG, TGA, or PPM files, or as a single movie file. The options for this
command as well as the :doc:`dump_modify <dump_modify>` command control
what is included in the image or movie and how it appears. A series of
such images can easily be manually converted into an animated movie of
your simulation or the process can be automated without writing the
intermediate files using the dump movie style; see further details
below. Other dump styles store snapshots of numerical data associated
with atoms in various formats, as discussed on the :doc:`dump <dump>`
Expand Down Expand Up @@ -251,23 +251,30 @@ Here are five sample images, rendered as JPEG or PNG files.
A detailed discussion of advanced graphics settings and workflows
with examples is provided in the :doc:`Howto_viz` howto.

.. versionadded:: TBD

support for writing compressed TGA files

Only atoms in the specified group are rendered in the image. The
:doc:`dump_modify region and thresh <dump_modify>` commands can also
alter what atoms are included in the image. The filename suffix
determines whether a JPEG, PNG, or PPM file is created with the *image*
dump style. If the suffix is ".jpg" or ".jpeg", then a `JPEG format
<jpeg_format_>`_ file is created, if the suffix is ".png", then a `PNG
format <png_format_>`_ is created, else a `PPM (aka NETPBM) format
<ppm_format_>`_ file is created. The JPEG and PNG files are binary; PPM
has a text mode header followed by binary data. JPEG images have lossy
compression, PNG has lossless compression, and PPM files are
uncompressed but can be compressed with a supported compression program,
if LAMMPS has been compiled with :ref:`compression support <gzip>` and a
supported suffix is used.
determines whether a JPEG, PNG, TGA, or PPM file is created with the
*image* dump style. If the suffix is ".jpg" or ".jpeg", then a `JPEG
format <jpeg_format_>`_ file is created, if the suffix is ".png", then a
`PNG format <png_format_>`_ file is created, if the suffix is ".tga",
then a compressed 24-bit RGB `TGA or TARGA format <tga_format_>`_
file is created, else a `PPM (aka NETPBM) format <ppm_format_>`_ file is
created. The JPEG, PNG, and TGA files are binary; PPM has a text mode
header followed by binary data. JPEG images have lossy compression, PNG
and TGA have lossless compression, and PPM files are uncompressed but can
be compressed with a supported compression program, if LAMMPS has been
compiled with :ref:`compression support <gzip>` and a supported suffix
is used.

.. _jpeg_format: https://jpeg.org/jpeg/
.. _png_format: https://en.wikipedia.org/wiki/Portable_Network_Graphics
.. _ppm_format: https://en.wikipedia.org/wiki/Netpbm
.. _tga_format: https://en.wikipedia.org/wiki/Truevision_TGA

Similarly, the format of the resulting movie is chosen with the *movie*
dump style. This is handled by the underlying FFmpeg converter and thus
Expand Down
71 changes: 46 additions & 25 deletions doc/src/fix_bond_react.rst
Original file line number Diff line number Diff line change
Expand Up @@ -363,19 +363,19 @@ contain any atom within three bonds of reacting atoms.
Some atoms in the pre-reacted template that are not reacting may have
missing topology with respect to the simulation. For example, the
pre-reacted template may contain an atom that, in the simulation, is
currently connected to the rest of a long polymer chain. These are
referred to as edge atoms, and are also specified in the map file. All
pre-reaction template atoms should be linked to an initiator atom, via
at least one path that does not involve edge atoms. When the
pre-reaction template contains edge atoms, not all atoms, bonds, etc.
specified in the reaction templates will be updated. Specifically, topology
that involves only atoms that are "too near" to template edges will not be
updated. The definition of "too near the edge" depends on which
interactions are defined in the simulation. If the simulation has defined
dihedrals, atoms within two bonds of edge atoms are considered "too near
the edge." If the simulation defines angles, but not dihedrals, atoms
within one bond of edge atoms are considered "too near the edge." If just
bonds are defined, only edge atoms are considered "too near the edge."
currently connected to the rest of a long polymer chain. These are referred
to as edge atoms, and are specified in the map file in the EdgeIDs section.
All pre-reaction template atoms should be linked to an initiator atom, via
at least one path that does not involve edge atoms. When the pre-reaction
template contains edge atoms, not all atoms, bonds, etc. specified in the
reaction templates will be updated. Specifically, topology that involves
only atoms that are "too near" to template edges will not be updated. The
definition of "too near the edge" depends on which interactions are defined
in the simulation. If the simulation has defined dihedrals, atoms within
two bonds of edge atoms are considered "too near the edge." If the
simulation defines angles, but not dihedrals, atoms within one bond of edge
atoms are considered "too near the edge." If just bonds are defined, only
edge atoms are considered "too near the edge."

.. note::

Expand All @@ -392,6 +392,25 @@ command page. It is highly recommended to use :doc:`Type labels <Howto_type_labe
files, which automates the process of syncing atom types between
different input files.

Wildcard atoms match to any atom type in the simulation. Wildcard atoms
can be used to reduce the number of reaction templates needed to model a
set of similar reactions. Wildcard atoms are specified in the Wildcards
section of the map file. The atom types of wildcard atoms in the
simulation are not updated. Any bond, angle, dihedral, or improper, that
is defined in the reaction templates and contains a wildcard atom, will be
updated by inferring its type from its constituent atom types. To use
wildcard atoms, a specific :doc:`type label <Howto_type_labels>` format is
necessary to infer the types of higher-order interactions. Bond, angle,
dihedral, and improper type labels must contain their constituent atom
types delimited by hyphens, e.g., ‘c2-c2-c2-n’ for a dihedral that contains
three atoms of type 'c2' and one atom of 'n'. Certain symmetries are
considered to account for equivalent ways of writing higher-order
interactions. Type labels for bonds, angles, and dihedrals are assumed to
be equivalent to those written in reverse order. For example, an angle
with type label 'c1-c2-n' is equivalent to 'n-c2-c1'. Symmetries for
impropers are more complex and are described on the doc page for each
improper style in the 'Symmetry convention' section.

The post-reacted molecule template contains a sample of the reaction
site and its surrounding topology after the reaction has occurred. It
must contain the same number of atoms as the pre-reacted template
Expand Down Expand Up @@ -422,12 +441,13 @@ mandatory keyword is *equivalences*\ :

N *equivalences* = # of atoms N in the reaction molecule templates

The optional keywords are *edgeIDs*\ , *deleteIDs*\ , *chiralIDs*\ , and
*constraints*\ :
The optional keywords are *edgeIDs*\ , *wildcards*\ ,*deleteIDs*\ ,
*createIDs*\ , *chiralIDs*\ , and *constraints*\ :

.. parsed-literal::

N *edgeIDs* = # of edge atoms N in the pre-reacted molecule template
N *wildcards* = # of atoms with wildcard atom types N
N *deleteIDs* = # of atoms N that are deleted
N *createIDs* = # of atoms N that are created
N *chiralIDs* = # of chiral centers N
Expand All @@ -443,16 +463,17 @@ templates. The first column is an atom ID of the pre-reacted molecule
template, and the second column is the corresponding atom ID of the
post-reacted molecule template. The first optional section begins with
the keyword "EdgeIDs" and lists the atom IDs of edge atoms in the
pre-reacted molecule template. The second optional section begins with
the keyword "DeleteIDs" and lists the atom IDs of pre-reaction
template atoms to delete. The third optional section begins with the
keyword "CreateIDs" and lists the atom IDs of the post-reaction
template atoms to create. The fourth optional section begins with the
keyword "ChiralIDs" lists the atom IDs of chiral atoms whose
handedness should be enforced. The fifth optional section begins with
the keyword "Constraints" and lists additional criteria that must be
satisfied in order for the reaction to occur. Currently, there are
six types of constraints available, as discussed below: "distance",
pre-reacted molecule template. The second optional section begins with
the keyword "Wildcards" and lists the pre-reaction atom IDs of atoms that
have wildcard atom types. The third optional section begins with the
keyword "DeleteIDs" and lists the atom IDs of pre-reaction template atoms
to delete. The fourth optional section begins with the keyword "CreateIDs"
and lists the atom IDs of the post-reaction template atoms to create. The
fifth optional section begins with the keyword "ChiralIDs" lists the atom
IDs of chiral atoms whose handedness should be enforced. The sixth optional
section begins with the keyword "Constraints" and lists additional criteria
that must be satisfied in order for the reaction to occur. Currently, there
are six types of constraints available, as discussed below: "distance",
"angle", "dihedral", "arrhenius", "rmsd", and "custom".

A sample map file is given below:
Expand Down
11 changes: 10 additions & 1 deletion doc/src/improper_amoeba.rst
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ information about the implementation of AMOEBA and HIPPO in LAMMPS.
If the 4 atoms in an improper quadruplet (listed in the data file read
by the :doc:`read_data <read_data>` command are ordered I,J,K,L then
atoms I,K,L are considered to lie in a plane and atom J is
out-of-place. The angle :math:`\chi_0` is computed as the Allinger
out-of-plane. The angle :math:`\chi_0` is computed as the Allinger
angle which is defined as the angle between the plane of I,K,L, and
the vector from atom I to atom J.

Expand All @@ -58,6 +58,15 @@ Note that the angle :math:`\chi` is computed in radians; hence

----------

Symmetry convention
"""""""""""""""""""

For the *amoeba* improper style, the second atom in the quadruplet is the
atom of symmetry; all other atoms are considered interchangeable. This
convention is relevant for operations that require knowledge of how atoms
are ordered, such as automatic assignment of new improper types by
:doc:`fix bond/react <fix_bond_react>`.

Restrictions
""""""""""""

Expand Down
9 changes: 9 additions & 0 deletions doc/src/improper_class2.rst
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,15 @@ converts them to radians internally; hence the hence the various

----------

Symmetry convention
"""""""""""""""""""

For the *class2* improper style, the second atom in the quadruplet is the
atom of symmetry; all other atoms are considered interchangeable. This
convention is relevant for operations that require knowledge of how atoms
are ordered, such as automatic assignment of new improper types by
:doc:`fix bond/react <fix_bond_react>`.

Restrictions
""""""""""""

Expand Down
9 changes: 9 additions & 0 deletions doc/src/improper_cossq.rst
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,15 @@ commands:

----------

Symmetry convention
"""""""""""""""""""

For the *cossq* improper style, the first atom in the quadruplet is the
atom of symmetry; all other atoms are considered interchangeable. This
convention is relevant for operations that require knowledge of how atoms
are ordered, such as automatic assignment of new improper types by
:doc:`fix bond/react <fix_bond_react>`.

Restrictions
""""""""""""

Expand Down
9 changes: 9 additions & 0 deletions doc/src/improper_cvff.rst
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,15 @@ commands:

----------

Symmetry convention
"""""""""""""""""""

For the *cvff* improper style, the first atom in the quadruplet is the
atom of symmetry; all other atoms are considered interchangeable. This
convention is relevant for operations that require knowledge of how atoms
are ordered, such as automatic assignment of new improper types by
:doc:`fix bond/react <fix_bond_react>`.

Restrictions
""""""""""""

Expand Down
9 changes: 9 additions & 0 deletions doc/src/improper_distance.rst
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,15 @@ file or restart files read by the read_data or read_restart commands:

----------

Symmetry convention
"""""""""""""""""""

For the *distance* improper style, the first atom in the quadruplet is the
atom of symmetry; all other atoms are considered interchangeable. This
convention is relevant for operations that require knowledge of how atoms
are ordered, such as automatic assignment of new improper types by
:doc:`fix bond/react <fix_bond_react>`.

Restrictions
""""""""""""

Expand Down
9 changes: 9 additions & 0 deletions doc/src/improper_distharm.rst
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,15 @@ file or restart files read by the read_data or read_restart commands:

----------

Symmetry convention
"""""""""""""""""""

For the *distharm* improper style, the fourth atom in the quadruplet is the
atom of symmetry; all other atoms are considered interchangeable. This
convention is relevant for operations that require knowledge of how atoms
are ordered, such as automatic assignment of new improper types by
:doc:`fix bond/react <fix_bond_react>`.

Restrictions
""""""""""""

Expand Down
9 changes: 9 additions & 0 deletions doc/src/improper_fourier.rst
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,15 @@ commands:

----------

Symmetry convention
"""""""""""""""""""

For the *fourier* improper style, the first and fourth atoms in the
quadruplet are atoms of symmetry; only the second and third atoms are
considered interchangeable. This convention is relevant for operations
that require knowledge of how atoms are ordered, such as automatic
assignment of new improper types by :doc:`fix bond/react <fix_bond_react>`.

Restrictions
""""""""""""

Expand Down
9 changes: 9 additions & 0 deletions doc/src/improper_harmonic.rst
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,15 @@ radian\^2.

----------

Symmetry convention
"""""""""""""""""""

For the *harmonic* improper style, the first atom in the quadruplet is the
atom of symmetry; all other atoms are considered interchangeable. This
convention is relevant for operations that require knowledge of how atoms
are ordered, such as automatic assignment of new improper types by
:doc:`fix bond/react <fix_bond_react>`.

Restrictions
""""""""""""

Expand Down
9 changes: 9 additions & 0 deletions doc/src/improper_inversion_harmonic.rst
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,15 @@ with a barrier in between.

----------

Symmetry convention
"""""""""""""""""""

For the *inversion/harmonic* improper style, the first atom in the
quadruplet is the atom of symmetry; all other atoms are considered
interchangeable. This convention is relevant for operations that require
knowledge of how atoms are ordered, such as automatic assignment of new
improper types by :doc:`fix bond/react <fix_bond_react>`.

Restrictions
""""""""""""

Expand Down
9 changes: 9 additions & 0 deletions doc/src/improper_ring.rst
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,15 @@ commands:

----------

Symmetry convention
"""""""""""""""""""

For the *ring* improper style, the second atom in the quadruplet is the
atom of symmetry; all other atoms are considered interchangeable. This
convention is relevant for operations that require knowledge of how atoms
are ordered, such as automatic assignment of new improper types by
:doc:`fix bond/react <fix_bond_react>`.

Restrictions
""""""""""""

Expand Down
9 changes: 9 additions & 0 deletions doc/src/improper_sqdistharm.rst
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@ Note that :math:`{d_0}^2` (in units distance\^2) has be provided and not :math:`

----------

Symmetry convention
"""""""""""""""""""

For the *sqdistharm* improper style, the fourth atom in the quadruplet is the
atom of symmetry; all other atoms are considered interchangeable. This
convention is relevant for operations that require knowledge of how atoms
are ordered, such as automatic assignment of new improper types by
:doc:`fix bond/react <fix_bond_react>`.

Restrictions
""""""""""""

Expand Down
9 changes: 9 additions & 0 deletions doc/src/improper_umbrella.rst
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,15 @@ commands:

----------

Symmetry convention
"""""""""""""""""""

For the *umbrella* improper style, the first and fourth atoms in the
quadruplet are atoms of symmetry; only the second and third atoms are
considered interchangeable. This convention is relevant for operations
that require knowledge of how atoms are ordered, such as automatic
assignment of new improper types by :doc:`fix bond/react <fix_bond_react>`.

Restrictions
""""""""""""

Expand Down
1 change: 1 addition & 0 deletions doc/utils/sphinx-config/false_positives.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3883,6 +3883,7 @@ textrm
tfac
tfmc
tfMC
tga
tgnpt
tgnvt
th
Expand Down
10 changes: 10 additions & 0 deletions examples/GRAPHICS/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
*.png
*.tga
*.ppm
*.mp4
*.mkv
*.avi
*.mpg
*.mpeg
*.jpg
*.jpeg
3 changes: 2 additions & 1 deletion examples/GRAPHICS/README
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@ automatically as they are created.

Here is a list of the inputs and which graphics features they demonstrate

- in.cubes-and-pyramids: visualization of body particles
- in.cubes-and-pyramids: visualization of body particles, uses progress bar
- in.breakable: using autobond, color-by-property, adding objects and text
- in.water-arrows: box of water molecules, uses many kinds of arrows
Loading