From 6434058b457dea5cb20a90f6fb9e5b2e07c34eed Mon Sep 17 00:00:00 2001 From: erybin Date: Mon, 20 Jul 2026 16:27:08 +0200 Subject: [PATCH 01/54] src/INTEL/TEST: update compute_modify syntax for lc input files Signed-off-by: erybin --- src/INTEL/TEST/in.intel.lc | 2 +- src/INTEL/TEST/in.lc_generate_restart | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/INTEL/TEST/in.intel.lc b/src/INTEL/TEST/in.intel.lc index 411f5d830df..4d5220f0b15 100644 --- a/src/INTEL/TEST/in.intel.lc +++ b/src/INTEL/TEST/in.intel.lc @@ -28,7 +28,7 @@ replicate $x $y $z compute rot all temp/asphere group spheroid type 1 variable dof equal count(spheroid)+3 -compute_modify rot extra ${dof} +compute_modify rot extra/dof ${dof} pair_style gayberne 1.0 3.0 1.0 4.0 pair_coeff 1 1 1.0 1.0 1.0 0.5 0.2 1.0 0.5 0.2 diff --git a/src/INTEL/TEST/in.lc_generate_restart b/src/INTEL/TEST/in.lc_generate_restart index 30d593f2cdb..829b1f3e4ea 100644 --- a/src/INTEL/TEST/in.lc_generate_restart +++ b/src/INTEL/TEST/in.lc_generate_restart @@ -27,7 +27,7 @@ set group all quat/random 982381 compute rot all temp/asphere group spheroid type 1 variable dof equal count(spheroid)+3 -compute_modify rot extra ${dof} +compute_modify rot extra/dof ${dof} velocity all create 2.4 41787 loop geom @@ -41,12 +41,12 @@ thermo 300 # equilibration run fix 1 all npt/asphere temp 2.4 2.4 0.1 iso 5.0 8.0 0.1 -compute_modify 1_temp extra ${dof} +compute_modify 1_temp extra/dof ${dof} run 2000 unfix 1 fix 1 all npt/asphere temp 2.4 2.4 0.1 iso 8.0 8.0 0.1 -compute_modify 1_temp extra ${dof} +compute_modify 1_temp extra/dof ${dof} run 2000 unfix 1 From bfa49d7ab19b8ec76b67b0fcdf56dc35264572a6 Mon Sep 17 00:00:00 2001 From: Chun-Yeol You Date: Tue, 21 Jul 2026 09:04:39 +0900 Subject: [PATCH 02/54] Match hybrid pair styles by prefix so an active suffix does not break sub-style checks hybrid, hybrid/overlay and hybrid/scaled are each registered under two names, the plain one and a /omp alias bound to the same class. With a suffix active, Force::new_pair() finds the aliased name, so Force::store_style() records force->pair_style as e.g. "hybrid/overlay/omp". Three call sites compare that field for exact equality and misbehave under -sf omp: * PairKolmogorovCrespiZ::settings() aborts with "requires hybrid/overlay pair_style" even though hybrid/overlay is what is in use, so `pair_style hybrid/overlay kolmogorov/crespi/z` cannot run under -sf omp. * ComputeFEP::init() and FixAdaptFEP::init() use the comparison to decide whether to validate that the requested type range is served by the named sub-style. Under a suffix that validation is silently skipped. Use a prefix match instead, which is what Force::pair_match() already does to gate its own dynamic_cast. In the two FEP files this also covers hybrid/scaled and hybrid/molecular, which the original two-name test missed; every style matched is a PairHybrid subclass, so the cast stays valid. unittest/force-styles does not catch the first case because it skips its OMP branch when no /omp variant of the sub-style exists. --- src/FEP/compute_fep.cpp | 3 +-- src/FEP/fix_adapt_fep.cpp | 3 +-- src/INTERLAYER/pair_kolmogorov_crespi_z.cpp | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/FEP/compute_fep.cpp b/src/FEP/compute_fep.cpp index d0d346ba6ee..3c118d7a93e 100644 --- a/src/FEP/compute_fep.cpp +++ b/src/FEP/compute_fep.cpp @@ -218,8 +218,7 @@ void ComputeFEP::init() // if pair hybrid, test that ilo,ihi,jlo,jhi are valid for sub-style - if ((strcmp(force->pair_style, "hybrid") == 0 || - strcmp(force->pair_style, "hybrid/overlay") == 0)) { + if (utils::strmatch(force->pair_style, "^hybrid")) { auto *pair = dynamic_cast(force->pair); for (i = pert->ilo; i <= pert->ihi; i++) for (j = MAX(pert->jlo, i); j <= pert->jhi; j++) diff --git a/src/FEP/fix_adapt_fep.cpp b/src/FEP/fix_adapt_fep.cpp index f0c70c645e9..97d2b2f282e 100644 --- a/src/FEP/fix_adapt_fep.cpp +++ b/src/FEP/fix_adapt_fep.cpp @@ -304,8 +304,7 @@ void FixAdaptFEP::init() // if pair hybrid, test that ilo,ihi,jlo,jhi are valid for sub-style - if (ad->pdim == 2 && (strcmp(force->pair_style,"hybrid") == 0 || - strcmp(force->pair_style,"hybrid/overlay") == 0)) { + if (ad->pdim == 2 && utils::strmatch(force->pair_style, "^hybrid")) { auto *pair = dynamic_cast(force->pair); for (i = ad->ilo; i <= ad->ihi; i++) for (j = MAX(ad->jlo,i); j <= ad->jhi; j++) diff --git a/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp b/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp index f0410b81fcf..db8c7e13431 100644 --- a/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp +++ b/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp @@ -203,7 +203,7 @@ void PairKolmogorovCrespiZ::allocate() void PairKolmogorovCrespiZ::settings(int narg, char **arg) { if (narg != 1) error->all(FLERR, "Illegal pair_style command"); - if (strcmp(force->pair_style, "hybrid/overlay") != 0) + if (!utils::strmatch(force->pair_style, "^hybrid/overlay")) error->all(FLERR, "ERROR: requires hybrid/overlay pair_style"); cut_global = utils::numeric(FLERR, arg[0], false, lmp); From 5de018b9744b2a193cb2a3cbb7d67602b0132171 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Jul 2026 14:01:35 -0400 Subject: [PATCH 03/54] more test tweaks to pass on ARM64 --- .../tests/fix-timestep-wall_reflect_stochastic.yaml | 2 +- unittest/graphics/tests/dump-image-ellipsoid-triangles.yaml | 2 +- unittest/graphics/tests/dump-image-ellipsoid-wireframe.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/unittest/force-styles/tests/fix-timestep-wall_reflect_stochastic.yaml b/unittest/force-styles/tests/fix-timestep-wall_reflect_stochastic.yaml index 39e5323b717..f9c935199f5 100644 --- a/unittest/force-styles/tests/fix-timestep-wall_reflect_stochastic.yaml +++ b/unittest/force-styles/tests/fix-timestep-wall_reflect_stochastic.yaml @@ -2,7 +2,7 @@ lammps_version: 4 Jul 2026 tags: no_restart date_generated: Fri Jul 10 18:29:57 2026 -epsilon: 1.5e-13 +epsilon: 2.5e-13 skip_tests: prerequisites: | atom full diff --git a/unittest/graphics/tests/dump-image-ellipsoid-triangles.yaml b/unittest/graphics/tests/dump-image-ellipsoid-triangles.yaml index 8adbcba1486..b6c911cc698 100644 --- a/unittest/graphics/tests/dump-image-ellipsoid-triangles.yaml +++ b/unittest/graphics/tests/dump-image-ellipsoid-triangles.yaml @@ -1,6 +1,6 @@ --- lammps_version: 4 Jul 2026 -tags: graphics +tags: graphics unstable date_generated: Thu Jul 9 14:47:39 2026 epsilon_projection: 0.5 epsilon_blocks: 2 diff --git a/unittest/graphics/tests/dump-image-ellipsoid-wireframe.yaml b/unittest/graphics/tests/dump-image-ellipsoid-wireframe.yaml index 247f0d69c90..6b497975183 100644 --- a/unittest/graphics/tests/dump-image-ellipsoid-wireframe.yaml +++ b/unittest/graphics/tests/dump-image-ellipsoid-wireframe.yaml @@ -1,6 +1,6 @@ --- lammps_version: 4 Jul 2026 -tags: graphics +tags: graphics unstable date_generated: Thu Jul 9 14:47:40 2026 epsilon_projection: 0.5 epsilon_blocks: 2 From 0d9aa4b24dcf5665bbc1a7a13d552e1fd0659b3a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Jul 2026 14:06:56 -0400 Subject: [PATCH 04/54] replace .. deprecated:: with .. versionremoved:: --- doc/src/Commands_removed.rst | 44 +++++++++++++++--------------- doc/src/Fortran.rst | 2 +- doc/src/Intro_portability.rst | 2 +- doc/src/Packages_details.rst | 2 +- doc/src/Run_options.rst | 2 +- doc/src/compute_voronoi_atom.rst | 2 +- doc/src/dump.rst | 2 +- doc/src/fix_atc.rst | 2 +- doc/src/fix_ave_spatial.rst | 2 +- doc/src/fix_ave_spatial_sphere.rst | 2 +- doc/src/fix_dpd_source.rst | 2 +- doc/src/fix_langevin.rst | 2 +- doc/src/fix_poems.rst | 2 +- doc/src/fix_wall_gran.rst | 2 +- doc/src/package.rst | 2 +- doc/src/pair_mgpt.rst | 2 +- doc/src/read_restart.rst | 2 +- src/library.cpp | 8 +++--- 18 files changed, 42 insertions(+), 42 deletions(-) diff --git a/doc/src/Commands_removed.rst b/doc/src/Commands_removed.rst index 72e1e589ac4..a12192fdb28 100644 --- a/doc/src/Commands_removed.rst +++ b/doc/src/Commands_removed.rst @@ -20,7 +20,7 @@ with the direct alternative (if available) and print a warning. amber2lmp tools --------------- -.. deprecated:: 11Feb2026 +.. versionremoved:: 11Feb2026 The tools in the ``tools/amber2lmp`` folder have been removed because they were unmaintained for a long time and required Python 2 which has @@ -32,7 +32,7 @@ purpose. There is an `Howto_amber2lammps` included in this manual. ATC, AWPMD, and POEMS packages ------------------------------ -.. deprecated:: 10Sep2025 +.. versionremoved:: 10Sep2025 The ATC, AWPMD, and POEMS packages are removed because they were unmaintained for a long time and their legacy C++ programming style @@ -50,7 +50,7 @@ and compile this version, if you want to use any of these packages. Neighbor style and comm mode multi/old -------------------------------------- -.. deprecated:: 10Sep2025 +.. versionremoved:: 10Sep2025 The original implementation of neighbor style multi and comm mode multi, most recently available under "multi/old" has been removed. The new @@ -59,7 +59,7 @@ implementation should be used instead. LAMMPS-GUI source code ---------------------- -.. deprecated:: 10Sep2025 +.. versionremoved:: 10Sep2025 The LAMMPS-GUI sources used to be included in LAMMPS but they are now hosted in their own git repository at @@ -69,7 +69,7 @@ documentation is at https://lammps-gui.lammps.org/ GJF formulation in fix langevin ------------------------------- -.. deprecated:: 22Jul2025 +.. versionremoved:: 22Jul2025 The *gjf* keyword in fix langevin has been removed. The GJF functionality has been moved to its own fix style :doc:`fix gjf @@ -79,7 +79,7 @@ functionality has been moved to its own fix style :doc:`fix gjf LAMMPS shell ------------ -.. deprecated:: 29Aug2024 +.. versionremoved:: 29Aug2024 The LAMMPS shell has been removed from the LAMMPS distribution. Users are encouraged to use the :ref:`LAMMPS-GUI ` tool instead. @@ -87,7 +87,7 @@ are encouraged to use the :ref:`LAMMPS-GUI ` tool instead. i-PI tool --------- -.. deprecated:: 27Jun2024 +.. versionremoved:: 27Jun2024 The i-PI tool has been removed from the LAMMPS distribution. Instead, instructions to install i-PI from PyPI via pip are provided. @@ -95,7 +95,7 @@ instructions to install i-PI from PyPI via pip are provided. USER-REAXC package ------------------ -.. deprecated:: 7Feb2024 +.. versionremoved:: 7Feb2024 The USER-REAXC package has been renamed to :ref:`REAXFF `. In the process also the pair style and related fixes were renamed to use @@ -106,7 +106,7 @@ been removed, so using "reaxff" is now *required*. MPIIO package ------------- -.. deprecated:: 21Nov2023 +.. versionremoved:: 21Nov2023 The MPIIO package has been removed from LAMMPS since it was unmaintained for many years and thus not updated to incorporate required changes that @@ -124,7 +124,7 @@ see :doc:`restart `, :doc:`read_restart `, MSCG package ------------ -.. deprecated:: 21Nov2023 +.. versionremoved:: 21Nov2023 The MSCG package has been removed from LAMMPS since it was unmaintained for many years and instead superseded by the `OpenMSCG software @@ -134,7 +134,7 @@ University of Chicago, which can be used independent from LAMMPS. LATTE package ------------- -.. deprecated:: 15Jun2023 +.. versionremoved:: 15Jun2023 The LATTE package with the fix latte command was removed from LAMMPS. This functionality has been superseded by :doc:`fix mdi/qm ` @@ -148,7 +148,7 @@ well as on a different set of MPI processors. Minimize style fire/old ----------------------- -.. deprecated:: 8Feb2023 +.. versionremoved:: 8Feb2023 Minimize style *fire/old* has been removed. Its functionality can be reproduced with style *fire* with specific options. Please see the @@ -157,7 +157,7 @@ reproduced with style *fire* with specific options. Please see the Pair style mesont/tpm, compute style mesont, atom style mesont -------------------------------------------------------------- -.. deprecated:: 8Feb2023 +.. versionremoved:: 8Feb2023 Pair style *mesont/tpm*, compute style *mesont*, and atom style *mesont* have been removed from the :ref:`MESONT package `. @@ -169,7 +169,7 @@ The same functionality is available through Box command ----------- -.. deprecated:: 22Dec2022 +.. versionremoved:: 22Dec2022 The *box* command has been removed and the LAMMPS code changed so it won't be needed. If present, LAMMPS will ignore the command and print a warning. @@ -177,7 +177,7 @@ be needed. If present, LAMMPS will ignore the command and print a warning. Reset_ids, reset_atom_ids, reset_mol_ids commands ------------------------------------------------- -.. deprecated:: 22Dec2022 +.. versionremoved:: 22Dec2022 The *reset_ids*, *reset_atom_ids*, and *reset_mol_ids* commands have been folded into the :doc:`reset_atoms ` command. If @@ -187,7 +187,7 @@ warning. MESSAGE package --------------- -.. deprecated:: 4May2022 +.. versionremoved:: 4May2022 The MESSAGE package has been removed since it was superseded by the :ref:`MDI package `. MDI implements the same functionality @@ -196,7 +196,7 @@ and in a more general way with direct support for more applications. REAX package ------------ -.. deprecated:: 4Jan2019 +.. versionremoved:: 4Jan2019 The REAX package has been removed since it was superseded by the :ref:`REAXFF package `. The REAXFF package has been tested @@ -210,7 +210,7 @@ USER-REAXC. MEAM package ------------ -.. deprecated:: 4Jan2019 +.. versionremoved:: 4Jan2019 The MEAM package in Fortran has been replaced by a C++ implementation. The code in the :ref:`MEAM package ` is a translation of the @@ -224,7 +224,7 @@ coexist with the Fortran version. USER-CUDA package ----------------- -.. deprecated:: 31May2016 +.. versionremoved:: 31May2016 The USER-CUDA package had been removed, since it had been unmaintained for a long time and had known bugs and problems. Significant parts of @@ -237,7 +237,7 @@ and allow running LAMMPS with GPU acceleration. Compute atom/molecule --------------------- -.. deprecated:: 11 Dec2015 +.. versionremoved:: 11 Dec2015 The atom/molecule command has been removed from LAMMPS since it was superseded by the more general and extensible "chunk infrastructure". Here the system is @@ -249,7 +249,7 @@ refer to the :doc:`chunk HOWTO ` section for an overview. Fix ave/spatial and fix ave/spatial/sphere ------------------------------------------ -.. deprecated:: 11Dec2015 +.. versionremoved:: 11Dec2015 The fixes ave/spatial and ave/spatial/sphere have been removed from LAMMPS since they were superseded by the more general and extensible "chunk @@ -261,7 +261,7 @@ Please refer to the :doc:`chunk HOWTO ` section for an overview. restart2data tool ----------------- -.. deprecated:: 23Nov2013 +.. versionremoved:: 23Nov2013 The functionality of the restart2data tool has been folded into the LAMMPS executable directly instead of having a separate tool. A diff --git a/doc/src/Fortran.rst b/doc/src/Fortran.rst index 34bb5b9fedd..4bf19ebf660 100644 --- a/doc/src/Fortran.rst +++ b/doc/src/Fortran.rst @@ -1420,7 +1420,7 @@ Procedures Bound to the :f:type:`lammps` Derived Type Set the value of a string-style variable. - .. deprecated:: 7Feb2024 + .. versionremoved:: 7Feb2024 This function assigns a new value from the string *str* to the string-style variable *name*\ . If *name* does not exist or is not a string-style diff --git a/doc/src/Intro_portability.rst b/doc/src/Intro_portability.rst index 292537ff1a7..74c747127dd 100644 --- a/doc/src/Intro_portability.rst +++ b/doc/src/Intro_portability.rst @@ -22,7 +22,7 @@ C++ standard. Most of the Python code in LAMMPS is written to be compatible with Python 3.6 and later. -.. deprecated:: 2Apr2025 +.. versionremoved:: 2Apr2025 Python 2.x is no longer supported and trying to use it, e.g. for the LAMMPS Python module should result in an error. If you come across diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index 8209024288e..0692d4dbacc 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -1782,7 +1782,7 @@ server when the package is installed for the first time. Maxim V. Shugaev (University of Virginia), Alexey N. Volkov (University of Alabama), Leonid V. Zhigilei (University of Virginia) -.. deprecated:: 8Feb2023 +.. versionremoved:: 8Feb2023 **Author of the C++ styles:** Philipp Kloza (U Cambridge) diff --git a/doc/src/Run_options.rst b/doc/src/Run_options.rst index 78690d3e93c..d031046ede5 100644 --- a/doc/src/Run_options.rst +++ b/doc/src/Run_options.rst @@ -165,7 +165,7 @@ the number of physical cores per node, to use your available hardware optimally. This also sets the number of threads used by the host when LAMMPS is compiled with CUDA=yes. -.. deprecated:: 22Dec2022 +.. versionremoved:: 22Dec2022 Support for the "numa" or "n" option was removed as its functionality was ignored in Kokkos for some time already. diff --git a/doc/src/compute_voronoi_atom.rst b/doc/src/compute_voronoi_atom.rst index 3bada09518c..8e4adf6c4e3 100644 --- a/doc/src/compute_voronoi_atom.rst +++ b/doc/src/compute_voronoi_atom.rst @@ -190,7 +190,7 @@ Voro++ software in the src/VORONOI/README file. Output info """"""""""" -.. deprecated:: 21Nov2023 +.. versionremoved:: 21Nov2023 The *peratom* keyword was removed as it is no longer required. diff --git a/doc/src/dump.rst b/doc/src/dump.rst index 6f0c511cf05..24cf41b2a07 100644 --- a/doc/src/dump.rst +++ b/doc/src/dump.rst @@ -640,7 +640,7 @@ when running on large numbers of processors. Note that using the "\*" and "%" characters together can produce a large number of small dump files! -.. deprecated:: 21Nov2023 +.. versionremoved:: 21Nov2023 The MPIIO package and the the corresponding "/mpiio" dump styles, except for the unrelated "netcdf/mpiio" style were removed from LAMMPS. diff --git a/doc/src/fix_atc.rst b/doc/src/fix_atc.rst index c4c5d5684e6..0a0a1783197 100644 --- a/doc/src/fix_atc.rst +++ b/doc/src/fix_atc.rst @@ -4,6 +4,6 @@ fix atc command .. meta:: :http-equiv=Refresh: 5; url=Commands_removed.html#atc-awpmd-and-poems-packages -.. deprecated:: 10Sep2025 +.. versionremoved:: 10Sep2025 The ATC package and the `fix atc` command have been removed from LAMMPS. diff --git a/doc/src/fix_ave_spatial.rst b/doc/src/fix_ave_spatial.rst index 1e596e3ee22..821e9cdca73 100644 --- a/doc/src/fix_ave_spatial.rst +++ b/doc/src/fix_ave_spatial.rst @@ -4,6 +4,6 @@ fix ave/spatial command .. meta:: :http-equiv=Refresh: 5; url=Commands_removed.html#fix-ave-spatial-and-fix-ave-spatial-sphere -.. deprecated:: 11Dec2015 +.. versionremoved:: 11Dec2015 The `fix ave/spatial` command has been superseded by :doc:`fix ave/chunk `. diff --git a/doc/src/fix_ave_spatial_sphere.rst b/doc/src/fix_ave_spatial_sphere.rst index 470bd49797c..78ef8d06d17 100644 --- a/doc/src/fix_ave_spatial_sphere.rst +++ b/doc/src/fix_ave_spatial_sphere.rst @@ -4,6 +4,6 @@ fix ave/spatial/sphere command .. meta:: :http-equiv=Refresh: 5; url=https://docs.lammps.org/Commands_removed.html#fix-ave-spatial-and-fix-ave-spatial-sphere -.. deprecated:: 11Dec2015 +.. versionremoved:: 11Dec2015 The `fix ave/spatial/sphere` command has been superseded by :doc:`fix ave/chunk `. diff --git a/doc/src/fix_dpd_source.rst b/doc/src/fix_dpd_source.rst index 8ec51638541..9963d1f4fe1 100644 --- a/doc/src/fix_dpd_source.rst +++ b/doc/src/fix_dpd_source.rst @@ -61,7 +61,7 @@ heat conduction with a source term (see Fig.12 in :ref:`(Li2014) `) or diffusion with a source term (see Fig.1 in :ref:`(Li2015) `), as an analog of a periodic Poiseuille flow problem. -.. deprecated:: 15Jun2023 +.. versionremoved:: 15Jun2023 The *sphere* and *cuboid* keywords will be removed in a future version of LAMMPS. The same functionality and more can be achieved with a region. diff --git a/doc/src/fix_langevin.rst b/doc/src/fix_langevin.rst index bfeb944b6a8..49adeb90529 100644 --- a/doc/src/fix_langevin.rst +++ b/doc/src/fix_langevin.rst @@ -237,7 +237,7 @@ to zero by subtracting off an equal part of it from each atom in the group. As a result, the center-of-mass of a system with zero initial momentum will not drift over time. -.. deprecated:: 22Jul2025 +.. versionremoved:: 22Jul2025 The *gjf* keyword in fix langevin has been removed and the GJF functionality has been moved to its own fix style :doc:`fix gjf diff --git a/doc/src/fix_poems.rst b/doc/src/fix_poems.rst index 39f8f33acf5..ffcbb3f00ea 100644 --- a/doc/src/fix_poems.rst +++ b/doc/src/fix_poems.rst @@ -4,6 +4,6 @@ fix poems command .. meta:: :http-equiv=Refresh: 5; url=Commands_removed.html#atc-awpmd-and-poems-packages -.. deprecated:: 10Sep2025 +.. versionremoved:: 10Sep2025 The POEMS package and the `fix poems` command have been removed from LAMMPS. diff --git a/doc/src/fix_wall_gran.rst b/doc/src/fix_wall_gran.rst index 6eccda3e585..08d384ab6a0 100644 --- a/doc/src/fix_wall_gran.rst +++ b/doc/src/fix_wall_gran.rst @@ -168,7 +168,7 @@ pair of walls in a dimension. Wall positions are given by *lo* and *hi*\ . Either of the values can be specified as NULL if a single wall is desired. -.. deprecated:: 11Feb2026 +.. versionremoved:: 11Feb2026 The *zcylinder* wallstyle has been removed. Pleas use :doc:`fix wall/gran/region ` instead. diff --git a/doc/src/package.rst b/doc/src/package.rst index 9f1db01cd41..ef14bd0f4ba 100644 --- a/doc/src/package.rst +++ b/doc/src/package.rst @@ -377,7 +377,7 @@ INTEL package settings The *intel* style invokes settings associated with the use of the INTEL package. -.. deprecated:: 4Jul2026 +.. versionremoved:: 4Jul2026 Support for offloading to Intel(R) Xeon Phi(TM) co-processors was removed. The leading numeric argument (formerly the number of diff --git a/doc/src/pair_mgpt.rst b/doc/src/pair_mgpt.rst index 2abeb8f266d..ab1e49a04c7 100644 --- a/doc/src/pair_mgpt.rst +++ b/doc/src/pair_mgpt.rst @@ -139,7 +139,7 @@ before proceeding to more complex simulations. compilers, LAMMPS should be built with the compiler flags "-O3 -msse3 -funroll-loops" when including this pair style. - .. deprecated:: 4Jul2026 + .. versionremoved:: 4Jul2026 Support for (obsolete) IBM BlueGene machines has been removed. diff --git a/doc/src/read_restart.rst b/doc/src/read_restart.rst index eb7f577e4d3..4ab9079625c 100644 --- a/doc/src/read_restart.rst +++ b/doc/src/read_restart.rst @@ -36,7 +36,7 @@ processors in the current simulation and the settings of the changed by the :doc:`balance ` or :doc:`fix balance ` commands. -.. deprecated:: 23Jun2022 +.. versionremoved:: 23Jun2022 Atom coordinates that are found to be outside the simulation box when reading the restart will be remapped back into the box and their image diff --git a/src/library.cpp b/src/library.cpp index 4021fd701aa..e77179789cd 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -162,7 +162,7 @@ fails a null pointer is returned. possible to provide the address of a pointer variable as final argument *ptr*\ . -.. deprecated:: 18Sep2020 +.. versionremoved:: 18Sep2020 The *ptr* argument will be removed in a future release of LAMMPS. It should be set to ``NULL`` instead. @@ -237,7 +237,7 @@ fails a null pointer is returned. possible to provide the address of a pointer variable as final argument *ptr*\ . -.. deprecated:: 18Sep2020 +.. versionremoved:: 18Sep2020 The *ptr* argument will be removed in a future release of LAMMPS. It should be set to ``NULL`` instead. @@ -3264,7 +3264,7 @@ static int set_variable_deprecated_flag = 1; /** Set the value of a string-style variable. \verbatim embed:rst -.. deprecated:: 7Feb2024 +.. versionremoved:: 7Feb2024 This function assigns a new value from the string str to the string-style variable *name*. This is a way to directly change the @@ -6830,7 +6830,7 @@ int lammps_config_has_curl_support() { * \verbatim embed:rst -.. deprecated:: 21Nov2023 +.. versionremoved:: 21Nov2023 LAMMPS has now exceptions always enabled, so this function will now always return 1 and can be removed from applications From 36e1610deb4dd21bb8c017da856ea576cf94285c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Jul 2026 14:42:33 -0400 Subject: [PATCH 05/54] add tool to check fix adapt and fix adapt/fep docs for completeness of their extract tables --- doc/Makefile | 8 + doc/utils/check-fix-adapt-tables.py | 344 ++++++++++++++++++++++++++++ 2 files changed, 352 insertions(+) create mode 100755 doc/utils/check-fix-adapt-tables.py diff --git a/doc/Makefile b/doc/Makefile index 9733a06c3cf..3dc8be25ae3 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -76,6 +76,7 @@ help: @echo " char_check check for non-ASCII characters" @echo " role_check check for misformatted role keywords" @echo " link_check check external links in the manual" + @echo " extract_check check extract() function consistency with tables in the manual" @echo " spelling spell-check the manual" # ------------------------------------------ @@ -276,6 +277,13 @@ role_check : @( env LC_ALL=C grep -n -E '^ *\.\. [a-z0-9]+:(\s+.*|)$$' \ $(RSTDIR)/*.rst ../src/*.{cpp,h} ../src/*/*.{cpp,h} && exit 1 || : ) +extract_check : $(VENV) + @(\ + . $(VENV)/bin/activate ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \ + $(PYTHON) utils/check-fix-adapt-tables.py --root .. ;\ + deactivate ;\ + ) + upgrade: $(VENV) @(\ . $(VENV)/bin/activate; \ diff --git a/doc/utils/check-fix-adapt-tables.py b/doc/utils/check-fix-adapt-tables.py new file mode 100755 index 00000000000..58377a5bb11 --- /dev/null +++ b/doc/utils/check-fix-adapt-tables.py @@ -0,0 +1,344 @@ +#!/usr/bin/env python3 +# Validate the style/parameter tables in doc/src/fix_adapt.rst and +# doc/src/fix_adapt_fep.rst against the extract() implementations in src/. +# +# For every table row this checks that: +# - the style name is a registered style (PairStyle/BondStyle/... macro) +# - the style class (or a base class) implements extract() +# - every listed parameter is an extract() keyword (exact, case-sensitive) +# - the keyword's dim is compatible with the fix: +# fix adapt: pair dim 0 or 2; bond/angle/dihedral/improper dim 1 +# fix adapt/fep: pair dim 2 only +# - (pair tables) the scope column matches the dim (type pairs <-> dim 2) +# +# It then reports the reverse direction: extract() keywords with a +# compatible dim and double type that are NOT listed in the tables, +# skipping accelerator (/gpu /intel /kk /omp /opt), internal (ALL-CAPS), +# hybrid, and deprecated styles. Styles matching a pattern in +# SKIP_STYLES (or given via --skip) are also left out of that report; +# table rows that DO list such a style are still validated. +# +# Messages use the GNU compiler format "file:line: level: text" so +# tools parsing compiler output (e.g. the emacs compilation mode) can +# jump to the location: doc table problems point to the table row in +# the .rst file, missing-entry notes to the extract() implementation. + +import argparse +import difflib +import fnmatch +import os +import re +import sys +from collections import defaultdict + +KINDS = ('pair', 'bond', 'angle', 'dihedral', 'improper') +BASE_CLASSES = {'Pair', 'Bond', 'Angle', 'Dihedral', 'Improper'} +VALID_DIMS = { + 'fix_adapt.rst': {'pair': {0, 2}, 'bond': {1}, 'angle': {1}, + 'dihedral': {1}, 'improper': {1}}, + 'fix_adapt_fep.rst': {'pair': {2}}, +} +SUFFIXES = ('/gpu', '/intel', '/kk', '/kk/device', '/kk/host', '/omp', '/opt') +# fnmatch() glob patterns of style names to leave out of the +# missing-entry report (any style kind); extend ad hoc with --skip +SKIP_STYLES = ( + 'oxdna*', # CG-DNA package + 'oxrna*', # CG-DNA package +) +NUMERIC_TYPES = ('double', 'float') +OTHER_TYPES = ('int', 'bigint', 'tagint', 'imageint', 'bool', 'char') + +STYLE_RE = re.compile(r'^\s*(Pair|Bond|Angle|Dihedral|Improper)Style\(\s*([^,\s)]+)\s*,\s*(\w+)', re.M) +CLASS_RE = re.compile(r'\bclass\s+(\w+)\s*(?::\s*(?:public|protected|private)\s+(\w+))?[^;{]*\{') +EXTRACT_RE = re.compile(r'\bvoid\s*\*\s*(\w+)::extract\s*\(') +DIM_RE = re.compile(r'\bdim\s*=\s*(\d+)') +STRCMP_RE = re.compile(r'strcmp\(\s*str\s*,\s*"([^"]+)"\s*\)\s*[!=]=\s*0') +RETURN_ID_RE = re.compile(r'return\s*\(\s*void\s*\*\s*\)\s*&?\s*([A-Za-z_]\w*)') + +SECTION_RE = re.compile(r'^The \*(\w+)\* keyword') +ROW_RE = re.compile(r'^\|\s*:doc:`([^<`]+)<[^>]*>`\s*\|([^|]*)\|([^|]*)\|') + + +def walk_files(top, ext): + for root, dirs, files in os.walk(top): + dirs[:] = [d for d in dirs if d not in ('STUBS', 'MAKE')] + for f in sorted(files): + if f.endswith(ext): + yield os.path.join(root, f) + + +def scan_source(srcdir): + """Collect style registrations, class hierarchy, and extract() keywords.""" + styles = {k: {} for k in KINDS} # kind -> style name -> class + parent = {} # class -> base class + class_header = {} # class -> header path + for path in walk_files(srcdir, '.h'): + try: + text = open(path, encoding='utf-8', errors='replace').read() + except OSError: + continue + for m in STYLE_RE.finditer(text): + kind, name, cls = m.group(1).lower(), m.group(2), m.group(3) + styles[kind].setdefault(name, cls) + for m in CLASS_RE.finditer(text): + cls, base = m.group(1), m.group(2) + if cls not in class_header: + class_header[cls] = path + if base: + parent[cls] = base + + extracts = {} # class -> (keywords, file, line) + for path in walk_files(srcdir, '.cpp'): + try: + text = open(path, encoding='utf-8', errors='replace').read() + except OSError: + continue + for m in EXTRACT_RE.finditer(text): + cls = m.group(1) + body = function_body(text, m.end()) + if body is not None: + line = text.count('\n', 0, m.start()) + 1 + extracts[cls] = (parse_extract_body(body), path, line) + return styles, parent, class_header, extracts + + +def function_body(text, pos): + """Return the text of the brace-delimited body starting at/after pos.""" + start = text.find('{', pos) + if start < 0: + return None + depth = 0 + for i in range(start, len(text)): + if text[i] == '{': + depth += 1 + elif text[i] == '}': + depth -= 1 + if depth == 0: + return text[start:i + 1] + return None + + +def parse_extract_body(body): + """Map extract() keywords to (dim, returned identifier). + + Two 'dim = N' placements occur in the sources: a running assignment + before a group of strcmp() tests, or an assignment inside the matched + if-block between the strcmp() and its return. For each keyword the + in-block dim wins; otherwise the closest preceding top-level dim + applies. Keywords with neither (e.g. pair_table's early-return + style) get the first dim assigned anywhere in the body. + """ + kws = [] # (start, end-of-return, keyword, ident) + for m in STRCMP_RE.finditer(body): + rpos = body.find('return', m.end()) + end = body.find(';', rpos) if rpos >= 0 else -1 + end = end if end >= 0 else m.end() + rm = RETURN_ID_RE.search(body, m.end(), end + 1) + kws.append((m.start(), end, m.group(1), rm.group(1) if rm else None)) + dims = [(m.start(), int(m.group(1))) for m in DIM_RE.finditer(body)] + toplevel = [(p, d) for p, d in dims + if not any(s < p <= e for s, e, _, _ in kws)] + keywords = {} + for start, end, kw, ident in kws: + inblock = [d for p, d in dims if start < p <= end] + before = [d for p, d in toplevel if p < start] + if inblock: + dim = inblock[-1] + elif before: + dim = before[-1] + else: + dim = dims[0][1] if dims else None + keywords.setdefault(kw, (dim, ident)) + return keywords + + +def class_chain(cls, parent): + chain = [] + while cls and cls not in BASE_CLASSES and cls not in chain: + chain.append(cls) + cls = parent.get(cls) + return chain + + +def find_extract(cls, parent, extracts): + """Return (implementing class, keywords, (file, line)) or (None, {}, None).""" + for c in class_chain(cls, parent): + if c in extracts: + keywords, path, line = extracts[c] + return c, keywords, (path, line) + return None, {}, None + + +def member_type(ident, cls, parent, class_header, cache={}): + """Best-effort C++ type of a class member; None if not found.""" + if ident is None: + return None + key = (cls, ident) + if key not in cache: + result = None + decl = re.compile(r'^\s*(?:static\s+|const\s+)*(%s)\b[^;()=]*\b%s\b[^;()]*;' + % ('|'.join(NUMERIC_TYPES + OTHER_TYPES), re.escape(ident)), re.M) + for c in class_chain(cls, parent): + hdr = class_header.get(c) + if not hdr: + continue + m = decl.search(open(hdr, encoding='utf-8', errors='replace').read()) + if m: + result = m.group(1) + break + cache[key] = result + return cache[key] + + +def parse_doc_tables(path): + """Yield (kind, lineno, [styles], [params], scope) for each table row.""" + section = None + rows = [] + for lineno, line in enumerate(open(path, encoding='utf-8', errors='replace'), 1): + m = SECTION_RE.match(line) + if m: + section = m.group(1) if m.group(1) in KINDS else section + continue + m = ROW_RE.match(line) + if m and section in KINDS: + names = [s.strip() for s in m.group(1).split(',') if s.strip()] + params = [p.strip() for p in m.group(2).split(',') if p.strip()] + rows.append((section, lineno, names, params, m.group(3).strip())) + return rows + + +def check_doc_file(rst, rows, styles, parent, extracts, class_header, report): + valid_dims = VALID_DIMS[os.path.basename(rst)] + documented = defaultdict(set) # (kind, style) -> set(params) + + for kind, lineno, names, params, scope in rows: + for name in names: + documented[(kind, name)].update(params) + loc = (rst, lineno) + cls = styles[kind].get(name) + if cls is None: + sugg = suggest(name, styles[kind]) + report('error:', loc, '%s style "%s" is not a registered style%s' + % (kind, name, sugg)) + continue + impl, keywords, _ = find_extract(cls, parent, extracts) + if impl is None: + report('error:', loc, '%s style "%s" (%s) has no extract() method ' + 'but is listed with: %s' % (kind, name, cls, ','.join(params))) + continue + for p in params: + if p not in keywords: + sugg = suggest(p, keywords) + report('error:', loc, '%s style "%s": param "%s" is not an extract() ' + 'keyword of %s%s' % (kind, name, p, impl, sugg)) + continue + dim, ident = keywords[p] + mtype = member_type(ident, cls, parent, class_header) + if mtype in OTHER_TYPES: + report('warning:', loc, '%s style "%s": param "%s" is backed by ' + 'variable "%s" of type %s; fix adapt writes double ' + 'values through this pointer' % (kind, name, p, ident, mtype)) + if dim not in valid_dims[kind]: + report('error:', loc, '%s style "%s": param "%s" has dim %s; ' + '%s supports dim %s for %s styles' + % (kind, name, p, dim, + 'fix adapt/fep' if 'fep' in rst else 'fix adapt', + '/'.join(map(str, sorted(valid_dims[kind]))), kind)) + elif kind == 'pair': + is_global = 'global' in scope + if dim == 2 and is_global: + report('warning:', loc, 'pair style "%s": param "%s" is per-type ' + '(dim 2) but scope column says "%s"' % (name, p, scope)) + if dim == 0 and not is_global: + report('warning:', loc, 'pair style "%s": param "%s" is global ' + '(dim 0) but scope column says "%s"' % (name, p, scope)) + return documented + + +def report_missing(rst, documented, styles, parent, extracts, class_header, + skip, report): + valid_dims = VALID_DIMS[os.path.basename(rst)] + groups = defaultdict(list) # (kind, impl, missing) -> [styles] + skipped = [] + for kind in valid_dims: + for name, cls in sorted(styles[kind].items()): + if (name.endswith(SUFFIXES) or re.fullmatch(r'[A-Z0-9_/]+', name) + or name.startswith('hybrid') or 'Deprecated' in cls): + continue + if any(fnmatch.fnmatchcase(name, pat) for pat in skip): + skipped.append(name) + continue + impl, keywords, loc = find_extract(cls, parent, extracts) + if impl is None: + continue + adaptable = set() + for kw, (dim, ident) in keywords.items(): + mtype = member_type(ident, cls, parent, class_header) + if dim in valid_dims[kind] and mtype in NUMERIC_TYPES + (None,): + adaptable.add((kw, dim)) + missing = {(kw, dim) for kw, dim in adaptable + if kw not in documented.get((kind, name), set())} + if missing: + groups[(kind, impl, loc, frozenset(missing))].append(name) + for (kind, impl, loc, missing), names in sorted(groups.items(), key=lambda g: g[1]): + kws = ', '.join('%s (dim %d)' % (kw, dim) for kw, dim in sorted(missing)) + report('note:', loc, '%s table in %s has no entry for style%s %s (%s): %s' + % (kind, os.path.basename(rst), 's' if len(names) > 1 else '', + ', '.join(names), impl, kws)) + if skipped: + print('%d styles matching skip patterns (%s) were not checked ' + 'for missing entries' % (len(skipped), ', '.join(skip))) + + +def suggest(word, candidates): + folded = [c for c in candidates if c.lower() == word.lower()] + match = folded or difflib.get_close_matches(word, list(candidates), 1, 0.5) + return '; did you mean "%s"?' % match[0] if match else '' + + +def main(): + argp = argparse.ArgumentParser(description=__doc__) + argp.add_argument('--root', default=os.path.dirname(os.path.abspath(__file__)), + help='LAMMPS repository root (default: script location)') + argp.add_argument('--no-missing', action='store_true', + help='skip the code -> doc missing-entry report') + argp.add_argument('--skip', action='append', default=[], metavar='PATTERN', + help='add a style name glob pattern to leave out of the ' + 'missing-entry report (repeatable); table rows listing ' + 'a matching style are still validated') + args = argp.parse_args() + skip = list(SKIP_STYLES) + args.skip + + srcdir = os.path.join(args.root, 'src') + docdir = os.path.join(args.root, 'doc', 'src') + if not (os.path.isdir(srcdir) and os.path.isdir(docdir)): + sys.exit('cannot find src/ and doc/src/ under ' + args.root) + + print('scanning %s ...' % srcdir) + styles, parent, class_header, extracts = scan_source(srcdir) + print('found %s registered styles, %d extract() implementations' + % ('/'.join(str(len(styles[k])) for k in KINDS), len(extracts))) + + counts = defaultdict(int) + for rst in ('fix_adapt.rst', 'fix_adapt_fep.rst'): + path = os.path.join(docdir, rst) + rows = parse_doc_tables(path) + print('\n===== %s (%d table rows) =====' % (rst, len(rows))) + + def report(level, loc, msg): + counts[level] += 1 + print('%s:%d: %s %s' % (os.path.relpath(loc[0]), loc[1], level, msg)) + + documented = check_doc_file(path, rows, styles, parent, extracts, + class_header, report) + if not args.no_missing: + report_missing(path, documented, styles, parent, extracts, + class_header, skip, report) + + print('\nsummary: %d errors, %d warnings, %d missing entries' + % (counts['error:'], counts['warning:'], counts['note:'])) + return 1 if counts['error:'] or counts['note:'] else 0 + + +if __name__ == '__main__': + sys.exit(main()) From 41f17c4c3148acc06a26468b91c89b8abe0358de Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Jul 2026 14:42:57 -0400 Subject: [PATCH 06/54] first pass at correcting pair style tables and reformatting them --- doc/src/fix_adapt.rst | 374 ++++++++++++++++++++------------------ doc/src/fix_adapt_fep.rst | 166 +++++++++-------- 2 files changed, 287 insertions(+), 253 deletions(-) diff --git a/doc/src/fix_adapt.rst b/doc/src/fix_adapt.rst index 014474070c3..dae666014db 100644 --- a/doc/src/fix_adapt.rst +++ b/doc/src/fix_adapt.rst @@ -149,115 +149,133 @@ current list of pair styles and parameters that can be varied by this fix. See the doc pages for individual pair styles and their energy formulas for the meaning of these parameters: -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`born ` | a,b,c | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`born/coul/long, born/coul/msm ` | coulombic_cutoff | type global | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`born/gauss ` | biga0,biga1,r0 | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`buck, buck/coul/cut ` | a,c | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`buck/coul/long, buck/coul/msm ` | a,c,coulombic_cutoff | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`buck/mdf ` | a,c | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`coul/cut, coul/cut/global ` | scale | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`coul/cut/soft ` | lambda | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`coul/debye ` | scale | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`coul/dsf ` | coulombic_cutoff | type global | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`coul/long, coul/msm ` | coulombic_cutoff, scale | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`coul/long/soft ` | scale, lambda, coulombic_cutoff | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`coul/slater/long ` | scale | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`coul/streitz ` | scale | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`eam, eam/alloy, eam/fs ` | scale | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`gauss ` | a | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`harmonic/cut ` | k, cutoff | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`kim ` | scale | type global | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lennard/mdf ` | A,B | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj96/cut ` | epsilon,sigma | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/class2 ` | epsilon,sigma | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/class2/coul/cut, lj/class2/coul/long ` | epsilon,sigma,coulombic_cutoff | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/cubic ` | epsilon,sigma | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/cut ` | epsilon,sigma | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/cut/coul/cut, lj/cut/coul/long, lj/cut/coul/msm ` | epsilon,sigma,coulombic_cutoff | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/cut/coul/cut/soft, lj/cut/coul/long/soft ` | epsilon,sigma,lambda,coulombic_cutoff | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/cut/coul/dsf ` | cutoff | type global | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/cut/tip4p/cut ` | epsilon,sigma,coulombic_cutoff | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/cut/soft ` | epsilon,sigma,lambda | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/expand ` | epsilon,sigma,delta | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/lj/gromacs ` | epsilon,sigma | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/mdf ` | epsilon,sigma | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/pirani ` | alpha, beta, gamma, rm, epsilon | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lj/sf/dipole/sf ` | epsilon,sigma,scale | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`lubricate ` | mu | global | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`meam ` | scale | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`mie/cut ` | epsilon,sigma,gamma_repulsive,gamma_attractive | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`morse, morse/smooth/linear ` | D0,R0,alpha | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`morse/soft ` | D0,R0,alpha,lambda | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`nm/cut ` | E0,R0,m,n | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`nm/cut/coul/cut, nm/cut/coul/long ` | E0,R0,m,n,coulombic_cutoff | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`pace, pace/extrapolation ` | scale | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`pedone ` | c0,d0,r0,alpha | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`quip ` | scale | type global | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`snap ` | scale | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`spin/dmi ` | coulombic_cutoff | type global | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`spin/exchange ` | coulombic_cutoff | type global | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`spin/magelec ` | coulombic_cutoff | type global | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`spin/neel ` | coulombic_cutoff | type global | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`soft ` | a | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`table ` | table_cutoff | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`ufm ` | epsilon,sigma,scale | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`wf/cut ` | epsilon,sigma,nu,mu | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ -| :doc:`yukawa ` | alpha | type pairs | -+------------------------------------------------------------------------------+--------------------------------------------------+-------------+ ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`born ` | a, c, d | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`born/coul/long, born/coul/msm ` | cut_coul | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`born/gauss ` | biga0, biga1, r0 | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`buck, buck/coul/cut, buck/coul/long, buck/coul/msm ` | a, c | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`buck/coul/long, buck/coul/msm ` | cut_coul | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`buck/mdf ` | a, c | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`colloid ` | a12, sigma, d1, d2, diameter | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/cut, coul/cut/global ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/cut/soft ` | lambda | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/debye ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/dsf ` | cut_coul | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/long, coul/msm ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/long, coul/msm ` | cut_coul | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/long/soft ` | scale, lambda | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/long/soft ` | cut_coul | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/slater/long ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/streitz ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`eam, eam/alloy, eam/fs ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`gauss ` | a | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`harmonic/cut ` | k, cut | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`kim ` | scale | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lennard/mdf ` | a, b | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj96/cut ` | epsilon, sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/class2, lj/class2/coul/long ` | epsilon, sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/class2/coul/cut, ` | epsilon, sigma, cut_coul | type pair | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/class2/coul/long ` | cut_coul | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cubic ` | epsilon, sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut ` | epsilon, sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/coul/long, lj/cut/coul/msm ` | epsilon, sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/coul/cut ` | epsilon, sigma, cut_coul | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/coul/long, lj/cut/coul/msm ` | cut_coul | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/coul/cut/soft, lj/cut/coul/long/soft ` | epsilon, sigma, lambda | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/coul/cut/soft, lj/cut/coul/long/soft ` | cut_coul | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/coul/dsf ` | cut_coul | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/tip4p/cut, lj/cut/tip4p/long ` | epsilon, sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/tip4p/cut, lj/cut/tip4p/long ` | cut_coul | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/soft ` | epsilon, sigma, lambda | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/expand ` | epsilon, sigma, delta | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/gromacs ` | epsilon,sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/mdf ` | epsilon,sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/pirani ` | alpha, beta, gamma, rm, epsilon | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/sf/dipole/sf ` | epsilon,sigma,scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`meam ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`mie/cut ` | epsilon,sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`morse, morse/smooth/linear ` | d0,r0,alpha | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`morse/soft ` | d0,r0,alpha,lambda | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`nm/cut ` | e0,r0,mm,nn | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`nm/cut/coul/cut, nm/cut/coul/long ` | e0,r0,mm,nn | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`nm/cut/coul/cut ` | cut_coul | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`nm/cut/coul/long ` | cut_coul | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`pace, pace/extrapolation ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`pedone ` | c0,d0,r0,alpha | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`quip ` | scale | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`snap ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`spin/dmi ` | cut | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`spin/exchange ` | cut | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`spin/magelec ` | cut | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`spin/neel ` | cut | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`soft ` | a | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`table ` | cut_coul | type global | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`ufm ` | epsilon,sigma,scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`wf/cut ` | epsilon,sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`yukawa ` | alpha | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ .. note:: @@ -352,33 +370,33 @@ all types from 1 to :math:`N`. A leading asterisk means all types from If :doc:`bond_style hybrid ` is used, *bstyle* should be a sub-style name. The bond styles that currently work with fix adapt are: -+-----------------------------------------------------+---------------------------+------------+ -| :doc:`class2 ` | k2,k3,k4,r0 | type bonds | -+-----------------------------------------------------+---------------------------+------------+ -| :doc:`fene ` | k,r0 | type bonds | -+-----------------------------------------------------+---------------------------+------------+ -| :doc:`fene/expand ` | k,r0,epsilon,sigma,shift | type bonds | -+-----------------------------------------------------+---------------------------+------------+ -| :doc:`fene/nm ` | k,r0 | type bonds | -+-----------------------------------------------------+---------------------------+------------+ -| :doc:`gaussian ` | alpha,width,r0 | type bonds | -+-----------------------------------------------------+---------------------------+------------+ -| :doc:`gromos ` | k,r0 | type bonds | -+-----------------------------------------------------+---------------------------+------------+ -| :doc:`harmonic ` | k,r0 | type bonds | -+-----------------------------------------------------+---------------------------+------------+ -| :doc:`harmonic/restrain ` | k | type bonds | -+-----------------------------------------------------+---------------------------+------------+ -| :doc:`harmonic/shift ` | k,r0,r1 | type bonds | -+-----------------------------------------------------+---------------------------+------------+ -| :doc:`harmonic/shift/cut ` | k,r0,r1 | type bonds | -+-----------------------------------------------------+---------------------------+------------+ -| :doc:`mm3 ` | k,r0 | type bonds | -+-----------------------------------------------------+---------------------------+------------+ -| :doc:`morse ` | d0,alpha,r0 | type bonds | -+-----------------------------------------------------+---------------------------+------------+ -| :doc:`nonlinear ` | lamda,epsilon,r0 | type bonds | -+-----------------------------------------------------+---------------------------+------------+ ++-----------------------------------------------------+--------------------------+------------+ +| :doc:`class2 ` | k2,k3,k4,r0 | type bonds | ++-----------------------------------------------------+--------------------------+------------+ +| :doc:`fene ` | k,r0 | type bonds | ++-----------------------------------------------------+--------------------------+------------+ +| :doc:`fene/expand ` | k,r0,epsilon,sigma,shift | type bonds | ++-----------------------------------------------------+--------------------------+------------+ +| :doc:`fene/nm ` | k,r0 | type bonds | ++-----------------------------------------------------+--------------------------+------------+ +| :doc:`gaussian ` | alpha,width,r0 | type bonds | ++-----------------------------------------------------+--------------------------+------------+ +| :doc:`gromos ` | k,r0 | type bonds | ++-----------------------------------------------------+--------------------------+------------+ +| :doc:`harmonic ` | k,r0 | type bonds | ++-----------------------------------------------------+--------------------------+------------+ +| :doc:`harmonic/restrain ` | k | type bonds | ++-----------------------------------------------------+--------------------------+------------+ +| :doc:`harmonic/shift ` | k,r0,r1 | type bonds | ++-----------------------------------------------------+--------------------------+------------+ +| :doc:`harmonic/shift/cut ` | k,r0,r1 | type bonds | ++-----------------------------------------------------+--------------------------+------------+ +| :doc:`mm3 ` | k,r0 | type bonds | ++-----------------------------------------------------+--------------------------+------------+ +| :doc:`morse ` | d0,alpha,r0 | type bonds | ++-----------------------------------------------------+--------------------------+------------+ +| :doc:`nonlinear ` | lamda,epsilon,r0 | type bonds | ++-----------------------------------------------------+--------------------------+------------+ ---------- @@ -459,23 +477,23 @@ all types from 1 to :math:`N`. A leading asterisk means all types from If :doc:`dihedral_style hybrid ` is used, *dstyle* should be a sub-style name. The dihedral styles that currently work with fix adapt are: -+------------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`charmm ` | k,n,d | type dihedrals | -+------------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`charmmfsw ` | k,n,d | type dihedrals | -+------------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`class2 ` | k1,k2,k3,phi1,phi2,phi3 | type dihedrals | -+------------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`cosine/squared/restricted ` | k,phi0 | type dihedrals | -+------------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`helix ` | a,b,c | type dihedrals | -+------------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`multi/harmonic ` | a1,a2,a3,a4,a5 | type dihedrals | -+------------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`opls ` | k1,k2,k3,k4 | type dihedrals | -+------------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`quadratic ` | k,phi0 | type dihedrals | -+------------------------------------------------------------------------+-------------------------+----------------+ ++-----------------------------------------------------------------------+-------------------------+----------------+ +| :doc:`charmm ` | k,n,d | type dihedrals | ++-----------------------------------------------------------------------+-------------------------+----------------+ +| :doc:`charmmfsw ` | k,n,d | type dihedrals | ++-----------------------------------------------------------------------+-------------------------+----------------+ +| :doc:`class2 ` | k1,k2,k3,phi1,phi2,phi3 | type dihedrals | ++-----------------------------------------------------------------------+-------------------------+----------------+ +| :doc:`cosine/squared/restricted ` | k,phi0 | type dihedrals | ++-----------------------------------------------------------------------+-------------------------+----------------+ +| :doc:`helix ` | a,b,c | type dihedrals | ++-----------------------------------------------------------------------+-------------------------+----------------+ +| :doc:`multi/harmonic ` | a1,a2,a3,a4,a5 | type dihedrals | ++-----------------------------------------------------------------------+-------------------------+----------------+ +| :doc:`opls ` | k1,k2,k3,k4 | type dihedrals | ++-----------------------------------------------------------------------+-------------------------+----------------+ +| :doc:`quadratic ` | k,phi0 | type dihedrals | ++-----------------------------------------------------------------------+-------------------------+----------------+ Note that internally, phi0 is stored in radians, so the variable this fix use to reset phi0 needs to generate values in radians. @@ -501,31 +519,31 @@ all types from 1 to :math:`N`. A leading asterisk means all types from If :doc:`improper_style hybrid ` is used, *istyle* should be a sub-style name. The improper styles that currently work with fix adapt are: -+---------------------------------------------------------+----------------+----------------+ -| :doc:`amoeba ` | k | type impropers | -+---------------------------------------------------------+----------------+----------------+ -| :doc:`class2 ` | k,chi0 | type impropers | -+---------------------------------------------------------+----------------+----------------+ -| :doc:`cossq ` | k,chi0 | type impropers | -+---------------------------------------------------------+----------------+----------------+ -| :doc:`cvff ` | k,d,n | type impropers | -+---------------------------------------------------------+----------------+----------------+ -| :doc:`distance ` | k2,k4 | type impropers | -+---------------------------------------------------------+----------------+----------------+ -| :doc:`distharm ` | k,d0 | type impropers | -+---------------------------------------------------------+----------------+----------------+ -| :doc:`fourier ` | k,C0,C1,C2 | type impropers | -+---------------------------------------------------------+----------------+----------------+ -| :doc:`harmonic ` | k,chi0 | type impropers | -+---------------------------------------------------------+----------------+----------------+ -| :doc:`inversion/harmonic ` | k,w0 | type impropers | -+---------------------------------------------------------+----------------+----------------+ -| :doc:`ring ` | k,theta0 | type impropers | -+---------------------------------------------------------+----------------+----------------+ -| :doc:`umbrella ` | k,w0 | type impropers | -+---------------------------------------------------------+----------------+----------------+ -| :doc:`sqdistharm ` | k | type impropers | -+---------------------------------------------------------+----------------+----------------+ ++---------------------------------------------------------+------------+----------------+ +| :doc:`amoeba ` | k | type impropers | ++---------------------------------------------------------+------------+----------------+ +| :doc:`class2 ` | k,chi0 | type impropers | ++---------------------------------------------------------+------------+----------------+ +| :doc:`cossq ` | k,chi0 | type impropers | ++---------------------------------------------------------+------------+----------------+ +| :doc:`cvff ` | k,d,n | type impropers | ++---------------------------------------------------------+------------+----------------+ +| :doc:`distance ` | k2,k4 | type impropers | ++---------------------------------------------------------+------------+----------------+ +| :doc:`distharm ` | k,d0 | type impropers | ++---------------------------------------------------------+------------+----------------+ +| :doc:`fourier ` | k,C0,C1,C2 | type impropers | ++---------------------------------------------------------+------------+----------------+ +| :doc:`harmonic ` | k,chi0 | type impropers | ++---------------------------------------------------------+------------+----------------+ +| :doc:`inversion/harmonic ` | k,w0 | type impropers | ++---------------------------------------------------------+------------+----------------+ +| :doc:`ring ` | k,theta0 | type impropers | ++---------------------------------------------------------+------------+----------------+ +| :doc:`umbrella ` | k,w0 | type impropers | ++---------------------------------------------------------+------------+----------------+ +| :doc:`sqdistharm ` | k | type impropers | ++---------------------------------------------------------+------------+----------------+ Note that internally, chi0 and theta0 are stored in radians, so the variable this fix use to reset chi0 or theta0 needs to generate values in radians. diff --git a/doc/src/fix_adapt_fep.rst b/doc/src/fix_adapt_fep.rst index 981a1c52987..d6f163ac072 100644 --- a/doc/src/fix_adapt_fep.rst +++ b/doc/src/fix_adapt_fep.rst @@ -133,81 +133,97 @@ parameters that can be varied by this fix. See the doc pages for individual pair styles and their energy formulas for the meaning of these parameters: -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`born ` | a,b,c | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`born/gauss ` | biga0,biga1,r0 | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`buck, buck/coul/cut, buck/coul/long, buck/coul/msm ` | a,c | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`buck/mdf ` | a,c | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`coul/cut, coul/cut/global ` | scale | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`coul/cut/soft ` | lambda | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`coul/debye ` | scale | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`coul/long, coul/msm ` | scale | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`coul/long/soft ` | scale, lambda | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`coul/slater/long ` | scale | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`coul/streitz ` | scale | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`eam, eam/alloy, eam/fs ` | scale | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`harmonic/cut ` | k | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`gauss ` | a | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`lennard/mdf ` | a,b | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`lj/class2 ` | epsilon,sigma | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`lj/class2/coul/cut, lj/class2/coul/long ` | epsilon,sigma | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`lj/cut ` | epsilon,sigma | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`lj/cut/soft ` | epsilon,sigma,lambda | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`lj/cut/coul/cut, lj/cut/coul/long, lj/cut/coul/msm ` | epsilon,sigma | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`lj/cut/coul/cut/soft, lj/cut/coul/long/soft ` | epsilon,sigma,lambda | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`lj/cut/tip4p/cut, lj/cut/tip4p/long ` | epsilon,sigma | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`lj/cut/tip4p/long/soft ` | epsilon,sigma,lambda | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`lj/expand ` | epsilon,sigma,delta | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`lj/mdf ` | epsilon,sigma | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`lj/sf/dipole/sf ` | epsilon,sigma,scale | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`meam ` | scale | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`mie/cut ` | epsilon,sigma,gamR,gamA | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`morse, morse/smooth/linear ` | d0,r0,alpha | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`morse/soft ` | d0,r0,alpha,lambda | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`nm/cut ` | e0,r0,nn,mm | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`nm/cut/coul/cut, nm/cut/coul/long ` | e0,r0,nn,mm | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`pace, pace/extrapolation ` | scale | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`snap ` | scale | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`soft ` | a | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`ufm ` | epsilon,sigma,scale | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ -| :doc:`wf/cut ` | epsilon,sigma,nu,mu | type pairs | -+------------------------------------------------------------------------------+-------------------------+------------+ ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`born ` | a, c, d | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`born/gauss ` | biga0, biga1, r0 | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`buck, buck/coul/cut, buck/coul/long, buck/coul/msm ` | a, c | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`buck/mdf ` | a, c | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`colloid ` | a12, sigma, d1, d2, diameter | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/cut, coul/cut/global ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/cut/soft ` | lambda | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/debye ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/long, coul/msm ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/long/soft ` | scale, lambda | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/slater/long ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/streitz ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`eam, eam/alloy, eam/fs ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`gauss ` | a | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`harmonic/cut ` | k, cut | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lennard/mdf ` | a, b | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj96/cut ` | epsilon, sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/class2, lj/class2/coul/long ` | epsilon, sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/class2/coul/cut, ` | epsilon, sigma, cut_coul | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cubic ` | epsilon, sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut ` | epsilon, sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/coul/long, lj/cut/coul/msm ` | epsilon, sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/coul/cut ` | epsilon, sigma, cut_coul | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/coul/cut/soft, lj/cut/coul/long/soft ` | epsilon, sigma, lambda | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/tip4p/cut ` | epsilon, sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/cut/soft ` | epsilon, sigma, lambda | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/expand ` | epsilon, sigma, delta | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/gromacs ` | epsilon,sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/mdf ` | epsilon,sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/pirani ` | alpha, beta, gamma, rm, epsilon | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/sf/dipole/sf ` | epsilon,sigma,scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`meam ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`mie/cut ` | epsilon,sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`morse, morse/smooth/linear ` | d0,r0,alpha | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`morse/soft ` | d0,r0,alpha,lambda | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`nm/cut ` | e0,r0,mm,nn | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`nm/cut/coul/cut, nm/cut/coul/long ` | e0,r0,mm,nn | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`nm/cut/coul/cut ` | cut_coul | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`pace, pace/extrapolation ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`pedone ` | c0,d0,r0,alpha | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`snap ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`soft ` | a | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`ufm ` | epsilon,sigma,scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`wf/cut ` | epsilon,sigma | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`yukawa ` | alpha | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ .. note:: From 5467148ad37a0a52deaed2d30dcece8aa8f79fff Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Jul 2026 15:38:14 -0400 Subject: [PATCH 07/54] ML-RANN is no longer part of the distribution --- cmake/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index e10229a5dff..1a3ad08e640 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -320,7 +320,6 @@ set(STANDARD_PACKAGES ML-POD ML-QUIP ML-RUNNER - ML-RANN ML-SNAP ML-UF3 MOFFF From 2b0b361e181505a7da466f13dcfe56ee02092c4e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 Jul 2026 17:53:51 -0400 Subject: [PATCH 08/54] all errors and warnings are handled. now starting with missing entries --- doc/src/fix_adapt.rst | 164 ++++++++++++++-------------- doc/utils/check-fix-adapt-tables.py | 1 + 2 files changed, 81 insertions(+), 84 deletions(-) diff --git a/doc/src/fix_adapt.rst b/doc/src/fix_adapt.rst index dae666014db..d2ea48f0b51 100644 --- a/doc/src/fix_adapt.rst +++ b/doc/src/fix_adapt.rst @@ -370,33 +370,31 @@ all types from 1 to :math:`N`. A leading asterisk means all types from If :doc:`bond_style hybrid ` is used, *bstyle* should be a sub-style name. The bond styles that currently work with fix adapt are: -+-----------------------------------------------------+--------------------------+------------+ -| :doc:`class2 ` | k2,k3,k4,r0 | type bonds | -+-----------------------------------------------------+--------------------------+------------+ -| :doc:`fene ` | k,r0 | type bonds | -+-----------------------------------------------------+--------------------------+------------+ -| :doc:`fene/expand ` | k,r0,epsilon,sigma,shift | type bonds | -+-----------------------------------------------------+--------------------------+------------+ -| :doc:`fene/nm ` | k,r0 | type bonds | -+-----------------------------------------------------+--------------------------+------------+ -| :doc:`gaussian ` | alpha,width,r0 | type bonds | -+-----------------------------------------------------+--------------------------+------------+ -| :doc:`gromos ` | k,r0 | type bonds | -+-----------------------------------------------------+--------------------------+------------+ -| :doc:`harmonic ` | k,r0 | type bonds | -+-----------------------------------------------------+--------------------------+------------+ -| :doc:`harmonic/restrain ` | k | type bonds | -+-----------------------------------------------------+--------------------------+------------+ -| :doc:`harmonic/shift ` | k,r0,r1 | type bonds | -+-----------------------------------------------------+--------------------------+------------+ -| :doc:`harmonic/shift/cut ` | k,r0,r1 | type bonds | -+-----------------------------------------------------+--------------------------+------------+ -| :doc:`mm3 ` | k,r0 | type bonds | -+-----------------------------------------------------+--------------------------+------------+ -| :doc:`morse ` | d0,alpha,r0 | type bonds | -+-----------------------------------------------------+--------------------------+------------+ -| :doc:`nonlinear ` | lamda,epsilon,r0 | type bonds | -+-----------------------------------------------------+--------------------------+------------+ ++-----------------------------------------------------+------------------------------+------------+ +| :doc:`class2 ` | k2, k3, k4, r0 | type bonds | ++-----------------------------------------------------+------------------------------+------------+ +| :doc:`fene ` | k, r0 | type bonds | ++-----------------------------------------------------+------------------------------+------------+ +| :doc:`fene/expand ` | k, r0, epsilon, sigma, shift | type bonds | ++-----------------------------------------------------+------------------------------+------------+ +| :doc:`fene/nm ` | k, r0 | type bonds | ++-----------------------------------------------------+------------------------------+------------+ +| :doc:`gromos ` | k, r0 | type bonds | ++-----------------------------------------------------+------------------------------+------------+ +| :doc:`harmonic ` | k, r0 | type bonds | ++-----------------------------------------------------+------------------------------+------------+ +| :doc:`harmonic/restrain ` | k | type bonds | ++-----------------------------------------------------+------------------------------+------------+ +| :doc:`harmonic/shift ` | k, r0, r1 | type bonds | ++-----------------------------------------------------+------------------------------+------------+ +| :doc:`harmonic/shift/cut ` | k, r0, r1 | type bonds | ++-----------------------------------------------------+------------------------------+------------+ +| :doc:`mm3 ` | k2, r0 | type bonds | ++-----------------------------------------------------+------------------------------+------------+ +| :doc:`morse ` | d0, alpha, r0 | type bonds | ++-----------------------------------------------------+------------------------------+------------+ +| :doc:`nonlinear ` | lamda, epsilon, r0 | type bonds | ++-----------------------------------------------------+------------------------------+------------+ ---------- @@ -420,37 +418,35 @@ If :doc:`angle_style hybrid ` is used, *astyle* should be a sub-style name. The angle styles that currently work with fix adapt are: +--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`harmonic ` | k,theta0 | type angles | +| :doc:`harmonic ` | k, theta0 | type angles | +--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`charmm ` | k,theta0 | type angles | +| :doc:`charmm ` | k, theta0 | type angles | +--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`class2 ` | k2,k3,k4,theta0 | type angles | +| :doc:`class2 ` | k2, k3, k4, theta0 | type angles | +--------------------------------------------------------------------+--------------------+-------------+ | :doc:`cosine ` | k | type angles | +--------------------------------------------------------------------+--------------------+-------------+ | :doc:`cosine/delta ` | k | type angles | +--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`cosine/periodic ` | k,b,n | type angles | +| :doc:`cosine/periodic ` | k | type angles | +--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`cosine/squared ` | k,theta0 | type angles | +| :doc:`cosine/squared ` | k, theta0 | type angles | +--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`cosine/squared/restricted ` | k,theta0 | type angles | +| :doc:`cosine/squared/restricted ` | k, theta0 | type angles | +--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`dipole ` | k,gamma0 | type angles | +| :doc:`dipole ` | k, gamma0 | type angles | +--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`fourier ` | k,c0,c1,c2 | type angles | +| :doc:`fourier ` | k, C0, C1, C2 | type angles | +--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`fourier/simple ` | k,c,n | type angles | +| :doc:`fourier/simple ` | k, C, N | type angles | +--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`gaussian ` | alpha,width,theta0 | type angles | +| :doc:`mm3 ` | k2, theta0 | type angles | +--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`mm3 ` | k,theta0 | type angles | +| :doc:`mwlc ` | k1, k2, mu, temp | type angles | +--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`mwlc ` | k1,k2,mu,T | type angles | +| :doc:`quartic ` | k2, k3, k4, theta0 | type angles | +--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`quartic ` | k2,k3,k4,theta0 | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`spica ` | k,theta0 | type angles | +| :doc:`spica ` | k, theta0 | type angles | +--------------------------------------------------------------------+--------------------+-------------+ Note that internally, theta0 is stored in radians, so the variable @@ -477,23 +473,23 @@ all types from 1 to :math:`N`. A leading asterisk means all types from If :doc:`dihedral_style hybrid ` is used, *dstyle* should be a sub-style name. The dihedral styles that currently work with fix adapt are: -+-----------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`charmm ` | k,n,d | type dihedrals | -+-----------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`charmmfsw ` | k,n,d | type dihedrals | -+-----------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`class2 ` | k1,k2,k3,phi1,phi2,phi3 | type dihedrals | -+-----------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`cosine/squared/restricted ` | k,phi0 | type dihedrals | -+-----------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`helix ` | a,b,c | type dihedrals | -+-----------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`multi/harmonic ` | a1,a2,a3,a4,a5 | type dihedrals | -+-----------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`opls ` | k1,k2,k3,k4 | type dihedrals | -+-----------------------------------------------------------------------+-------------------------+----------------+ -| :doc:`quadratic ` | k,phi0 | type dihedrals | -+-----------------------------------------------------------------------+-------------------------+----------------+ ++-----------------------------------------------------------------------+------------------------------+----------------+ +| :doc:`charmm ` | k | type dihedrals | ++-----------------------------------------------------------------------+------------------------------+----------------+ +| :doc:`charmmfsw ` | k | type dihedrals | ++-----------------------------------------------------------------------+------------------------------+----------------+ +| :doc:`class2 ` | k1, k2, k3, phi1, phi2, phi3 | type dihedrals | ++-----------------------------------------------------------------------+------------------------------+----------------+ +| :doc:`cosine/squared/restricted ` | k, phi0 | type dihedrals | ++-----------------------------------------------------------------------+------------------------------+----------------+ +| :doc:`helix ` | a, b, c | type dihedrals | ++-----------------------------------------------------------------------+------------------------------+----------------+ +| :doc:`multi/harmonic ` | a1, a2, a3, a4, a5 | type dihedrals | ++-----------------------------------------------------------------------+------------------------------+----------------+ +| :doc:`opls ` | k1, k2, k3, k4 | type dihedrals | ++-----------------------------------------------------------------------+------------------------------+----------------+ +| :doc:`quadratic ` | k, phi0 | type dihedrals | ++-----------------------------------------------------------------------+------------------------------+----------------+ Note that internally, phi0 is stored in radians, so the variable this fix use to reset phi0 needs to generate values in radians. @@ -519,31 +515,31 @@ all types from 1 to :math:`N`. A leading asterisk means all types from If :doc:`improper_style hybrid ` is used, *istyle* should be a sub-style name. The improper styles that currently work with fix adapt are: -+---------------------------------------------------------+------------+----------------+ -| :doc:`amoeba ` | k | type impropers | -+---------------------------------------------------------+------------+----------------+ -| :doc:`class2 ` | k,chi0 | type impropers | -+---------------------------------------------------------+------------+----------------+ -| :doc:`cossq ` | k,chi0 | type impropers | -+---------------------------------------------------------+------------+----------------+ -| :doc:`cvff ` | k,d,n | type impropers | -+---------------------------------------------------------+------------+----------------+ -| :doc:`distance ` | k2,k4 | type impropers | -+---------------------------------------------------------+------------+----------------+ -| :doc:`distharm ` | k,d0 | type impropers | -+---------------------------------------------------------+------------+----------------+ -| :doc:`fourier ` | k,C0,C1,C2 | type impropers | -+---------------------------------------------------------+------------+----------------+ -| :doc:`harmonic ` | k,chi0 | type impropers | -+---------------------------------------------------------+------------+----------------+ -| :doc:`inversion/harmonic ` | k,w0 | type impropers | -+---------------------------------------------------------+------------+----------------+ -| :doc:`ring ` | k,theta0 | type impropers | -+---------------------------------------------------------+------------+----------------+ -| :doc:`umbrella ` | k,w0 | type impropers | -+---------------------------------------------------------+------------+----------------+ -| :doc:`sqdistharm ` | k | type impropers | -+---------------------------------------------------------+------------+----------------+ ++---------------------------------------------------------+---------------+----------------+ +| :doc:`amoeba ` | k | type impropers | ++---------------------------------------------------------+---------------+----------------+ +| :doc:`class2 ` | k, chi0 | type impropers | ++---------------------------------------------------------+---------------+----------------+ +| :doc:`cossq ` | k, chi0 | type impropers | ++---------------------------------------------------------+---------------+----------------+ +| :doc:`cvff ` | k, | type impropers | ++---------------------------------------------------------+---------------+----------------+ +| :doc:`distance ` | k2, k4 | type impropers | ++---------------------------------------------------------+---------------+----------------+ +| :doc:`distharm ` | k, d0 | type impropers | ++---------------------------------------------------------+---------------+----------------+ +| :doc:`fourier ` | k, C0, C1, C2 | type impropers | ++---------------------------------------------------------+---------------+----------------+ +| :doc:`harmonic ` | k, chi0 | type impropers | ++---------------------------------------------------------+---------------+----------------+ +| :doc:`inversion/harmonic ` | k, w0 | type impropers | ++---------------------------------------------------------+---------------+----------------+ +| :doc:`ring ` | k, theta0 | type impropers | ++---------------------------------------------------------+---------------+----------------+ +| :doc:`umbrella ` | k, w0 | type impropers | ++---------------------------------------------------------+---------------+----------------+ +| :doc:`sqdistharm ` | k | type impropers | ++---------------------------------------------------------+---------------+----------------+ Note that internally, chi0 and theta0 are stored in radians, so the variable this fix use to reset chi0 or theta0 needs to generate values in radians. diff --git a/doc/utils/check-fix-adapt-tables.py b/doc/utils/check-fix-adapt-tables.py index 58377a5bb11..e34f1180078 100755 --- a/doc/utils/check-fix-adapt-tables.py +++ b/doc/utils/check-fix-adapt-tables.py @@ -44,6 +44,7 @@ SKIP_STYLES = ( 'oxdna*', # CG-DNA package 'oxrna*', # CG-DNA package + 'buck6d*, # MOFFF package ) NUMERIC_TYPES = ('double', 'float') OTHER_TYPES = ('int', 'bigint', 'tagint', 'imageint', 'bool', 'char') From 6b6fa3b4e220c7c691dd2917a552967c9eed60ca Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 22 Jul 2026 00:30:47 -0400 Subject: [PATCH 09/54] add some more entries --- doc/src/fix_adapt.rst | 102 ++++++++++++++++------------ doc/src/fix_adapt_fep.rst | 2 +- doc/utils/check-fix-adapt-tables.py | 7 +- 3 files changed, 64 insertions(+), 47 deletions(-) diff --git a/doc/src/fix_adapt.rst b/doc/src/fix_adapt.rst index d2ea48f0b51..36f3589d07b 100644 --- a/doc/src/fix_adapt.rst +++ b/doc/src/fix_adapt.rst @@ -152,7 +152,7 @@ formulas for the meaning of these parameters: +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`born ` | a, c, d | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`born/coul/long, born/coul/msm ` | cut_coul | type global | +| :doc:`born/coul/long, born/coul/long, born/coul/msm ` | cut_coul | type global | +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`born/gauss ` | biga0, biga1, r0 | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ @@ -164,7 +164,11 @@ formulas for the meaning of these parameters: +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`colloid ` | a12, sigma, d1, d2, diameter | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`coul/cut, coul/cut/global ` | scale | type pairs | +| :doc:`coul/cut ` | cut_coul, scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/cut/global ` | scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`coul/cut/global ` | cut_coul | type global | +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`coul/cut/soft ` | lambda | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ @@ -226,25 +230,27 @@ formulas for the meaning of these parameters: +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`lj/expand ` | epsilon, sigma, delta | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`lj/gromacs ` | epsilon,sigma | type pairs | +| :doc:`lj/gromacs ` | epsilon, sigma | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`lj/mdf ` | epsilon,sigma | type pairs | +| :doc:`lj/mdf ` | epsilon, sigma | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`lj/pirani ` | alpha, beta, gamma, rm, epsilon | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`lj/sf/dipole/sf ` | epsilon,sigma,scale | type pairs | +| :doc:`lj/sf/dipole/sf ` | epsilon, sigma, scale | type pairs | ++-----------------------------------------------------------------------+---------------------------------+-------------+ +| :doc:`lj/smooth ` | epsilon, sigma | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`meam ` | scale | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`mie/cut ` | epsilon,sigma | type pairs | +| :doc:`mie/cut ` | epsilon, sigma | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`morse, morse/smooth/linear ` | d0,r0,alpha | type pairs | +| :doc:`morse, morse/smooth/linear ` | d0, r0, alpha | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`morse/soft ` | d0,r0,alpha,lambda | type pairs | +| :doc:`morse/soft ` | d0, r0, alpha, lambda | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`nm/cut ` | e0,r0,mm,nn | type pairs | +| :doc:`nm/cut ` | e0, r0, mm, nn | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`nm/cut/coul/cut, nm/cut/coul/long ` | e0,r0,mm,nn | type pairs | +| :doc:`nm/cut/coul/cut, nm/cut/coul/long ` | e0, r0, mm, nn | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`nm/cut/coul/cut ` | cut_coul | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ @@ -252,7 +258,7 @@ formulas for the meaning of these parameters: +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`pace, pace/extrapolation ` | scale | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`pedone ` | c0,d0,r0,alpha | type pairs | +| :doc:`pedone ` | c0, d0, r0, alpha | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`quip ` | scale | type global | +-----------------------------------------------------------------------+---------------------------------+-------------+ @@ -270,9 +276,9 @@ formulas for the meaning of these parameters: +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`table ` | cut_coul | type global | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`ufm ` | epsilon,sigma,scale | type pairs | +| :doc:`ufm ` | epsilon, sigma, scale | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`wf/cut ` | epsilon,sigma | type pairs | +| :doc:`wf/cut ` | epsilon, sigma | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`yukawa ` | alpha | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ @@ -417,37 +423,43 @@ all types from 1 to :math:`N`. A leading asterisk means all types from If :doc:`angle_style hybrid ` is used, *astyle* should be a sub-style name. The angle styles that currently work with fix adapt are: -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`harmonic ` | k, theta0 | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`charmm ` | k, theta0 | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`class2 ` | k2, k3, k4, theta0 | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`cosine ` | k | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`cosine/delta ` | k | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`cosine/periodic ` | k | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`cosine/squared ` | k, theta0 | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`cosine/squared/restricted ` | k, theta0 | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`dipole ` | k, gamma0 | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`fourier ` | k, C0, C1, C2 | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`fourier/simple ` | k, C, N | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`mm3 ` | k2, theta0 | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`mwlc ` | k1, k2, mu, temp | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`quartic ` | k2, k3, k4, theta0 | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ -| :doc:`spica ` | k, theta0 | type angles | -+--------------------------------------------------------------------+--------------------+-------------+ ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`amoeba ` | k2, k3, k4, k5, k6, theta0 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`charmm ` | k, theta0 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`class2, class2xe ` | k2, k3, k4, theta0 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`class2/p6 ` | k2, k3, k4, k5, k6, theta0 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`cosine ` | k | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`cosine/buck6d ` | k, th0 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`cosine/delta ` | k, theta0 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`cosine/periodic ` | k | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`cosine/squared ` | k, theta0 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`cosine/squared/restricted ` | k, theta0 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`dipole ` | k, gamma0 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`fourier ` | k, C0, C1, C2 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`fourier/simple ` | k, C, N | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`harmonic ` | k, theta0 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`mm3 ` | k2, theta0 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`mwlc ` | k1, k2, mu, temp | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`quartic ` | k2, k3, k4, theta0 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ +| :doc:`spica ` | k, theta0 | type angles | ++--------------------------------------------------------------------+----------------------------+-------------+ Note that internally, theta0 is stored in radians, so the variable this fix uses to reset theta0 needs to generate values in radians. @@ -478,7 +490,7 @@ sub-style name. The dihedral styles that currently work with fix adapt are: +-----------------------------------------------------------------------+------------------------------+----------------+ | :doc:`charmmfsw ` | k | type dihedrals | +-----------------------------------------------------------------------+------------------------------+----------------+ -| :doc:`class2 ` | k1, k2, k3, phi1, phi2, phi3 | type dihedrals | +| :doc:`class2, class2xe ` | k1, k2, k3, phi1, phi2, phi3 | type dihedrals | +-----------------------------------------------------------------------+------------------------------+----------------+ | :doc:`cosine/squared/restricted ` | k, phi0 | type dihedrals | +-----------------------------------------------------------------------+------------------------------+----------------+ diff --git a/doc/src/fix_adapt_fep.rst b/doc/src/fix_adapt_fep.rst index d6f163ac072..136e597e67e 100644 --- a/doc/src/fix_adapt_fep.rst +++ b/doc/src/fix_adapt_fep.rst @@ -222,7 +222,7 @@ these parameters: +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`wf/cut ` | epsilon,sigma | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`yukawa ` | alpha | type pairs | +| :doc:`yukawa, yukawa/colloid ` | alpha | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ .. note:: diff --git a/doc/utils/check-fix-adapt-tables.py b/doc/utils/check-fix-adapt-tables.py index e34f1180078..89aebc468af 100755 --- a/doc/utils/check-fix-adapt-tables.py +++ b/doc/utils/check-fix-adapt-tables.py @@ -44,7 +44,12 @@ SKIP_STYLES = ( 'oxdna*', # CG-DNA package 'oxrna*', # CG-DNA package - 'buck6d*, # MOFFF package + 'buck6d*', # MOFFF package + 'amoeba*', # AMOEBA package + 'thole*', # DRUDE package + '*/cs', # CORESHELL package + '*/soft', # FEP package + 'zero' ) NUMERIC_TYPES = ('double', 'float') OTHER_TYPES = ('int', 'bigint', 'tagint', 'imageint', 'bool', 'char') From 24d47cd47608728f65b998c6a145f6287328320f Mon Sep 17 00:00:00 2001 From: Giacomo Fiorin Date: Wed, 22 Jul 2026 17:52:09 -0400 Subject: [PATCH 10/54] fix: correctly implement the wrap function for orientation_angle See original PR: https://github.com/Colvars/colvars/pull/943 --- lib/colvars/colvarcomp_rotations.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/colvars/colvarcomp_rotations.cpp b/lib/colvars/colvarcomp_rotations.cpp index 8290d3efb35..c2f9ff85f35 100644 --- a/lib/colvars/colvarcomp_rotations.cpp +++ b/lib/colvars/colvarcomp_rotations.cpp @@ -251,8 +251,9 @@ colvarvalue colvar::orientation_angle::dist2_rgrad(colvarvalue const &x1, } -void colvar::orientation_angle::wrap(colvarvalue & /* x_unwrapped */) const {} - +void colvar::orientation_angle::wrap(colvarvalue &x_unwrapped) const { + return cvc::wrap(x_unwrapped); +} colvar::orientation_proj::orientation_proj() From bd5ca58964a5a2d82dfbffc4cd87088a0ee1261c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 22 Jul 2026 20:11:22 -0400 Subject: [PATCH 11/54] add visualization to in.powerlaw example --- examples/multi/in.powerlaw | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/examples/multi/in.powerlaw b/examples/multi/in.powerlaw index b69e6a56a38..8f361455da6 100644 --- a/examples/multi/in.powerlaw +++ b/examples/multi/in.powerlaw @@ -25,6 +25,14 @@ fix 3 all deform 1 xy erate 1e-4 # dump 1 all custom 20000 dump.granular id x y z radius +#variable dumpfreq index 1000 +#fix cmap all graphics/labels ${dumpfreq} colorscale viz "Neighbor list diameter intervals" 450 50 0 & +# length 1200 size 28 +#dump viz all image ${dumpfreq} powerlaw-*.ppm diameter diameter size 900 600 & +# zoom 1.4 shiny 0.4 fsaa yes box yes 0.025 center s 0.5 0.4 0 fix cmap const 1 0 +#dump_modify viz pad 6 backcolor black boxcolor gray & +# amap 0 200 da 0.0 6 0 1.5 red 1.5 3 yellow 3 10 green 10 30 cyan 30 100 blue min max purple + thermo_style custom step temp epair etotal press vol pxy thermo 100 From bd8b57d313c53dac2fb6af71808fb1e7f93406ff Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 22 Jul 2026 21:52:44 -0400 Subject: [PATCH 12/54] force using non-accellerated version of fix NEIGH_HISTORY with pair granular --- src/GRANULAR/pair_granular.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index 32e13cad3f6..c79d2906f83 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -492,7 +492,9 @@ void PairGranular::init_style() // this is so its order in the fix list is preserved if (use_history && fix_history == nullptr) { - fix_history = dynamic_cast(modify->replace_fix(id_dummy, fmt::format("{} all NEIGH_HISTORY {}", id_history, size_history),1)); + // since pair style granular does not support any form of acceleration + // we must not try using an accerated version of fix NEIGH_HISTORY. + fix_history = dynamic_cast(modify->replace_fix(id_dummy, fmt::format("{} all NEIGH_HISTORY {}", id_history, size_history),0)); fix_history->pair = this; } else if (use_history) { fix_history = dynamic_cast(modify->get_fix_by_id(id_history)); From 2de5c76eb37b02dfc1f6ba4de0f59e6c96435079 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 22 Jul 2026 22:43:36 -0400 Subject: [PATCH 13/54] for using non-accellerated history fix for pair styles that don't have OpenMP support --- src/ASPHERE/pair_granular_superellipsoid.cpp | 2 +- src/MISC/pair_tracker.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ASPHERE/pair_granular_superellipsoid.cpp b/src/ASPHERE/pair_granular_superellipsoid.cpp index fa2260d3313..0bced8e1fac 100644 --- a/src/ASPHERE/pair_granular_superellipsoid.cpp +++ b/src/ASPHERE/pair_granular_superellipsoid.cpp @@ -579,7 +579,7 @@ void PairGranularSuperellipsoid::init_style() "NEIGH_HISTORY_GRANULAR_SE" " all NEIGH_HISTORY " + std::to_string(size_history), - 1)); + 0)); fix_history->pair = this; } else { fix_history = diff --git a/src/MISC/pair_tracker.cpp b/src/MISC/pair_tracker.cpp index 7670c33e29d..8723267e15c 100644 --- a/src/MISC/pair_tracker.cpp +++ b/src/MISC/pair_tracker.cpp @@ -392,7 +392,7 @@ void PairTracker::init_style() if (fix_history == nullptr) { modify->replace_fix("NEIGH_HISTORY_TRACK_DUMMY", - fmt::format("NEIGH_HISTORY_TRACK all NEIGH_HISTORY {}", size_history), 1); + fmt::format("NEIGH_HISTORY_TRACK all NEIGH_HISTORY {}", size_history), 0); fix_history = dynamic_cast(modify->get_fix_by_id("NEIGH_HISTORY_TRACK")); fix_history->pair = this; fix_history->use_bit_flag = 0; From 590a092c9bc402db26328902fba235018b24707a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 22 Jul 2026 22:44:17 -0400 Subject: [PATCH 14/54] fix bugs in OPENMP version of fix NEIGH_HISTORY leading to crashes or data corruption --- src/OPENMP/fix_neigh_history_omp.cpp | 61 +++++++++++++--------------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/src/OPENMP/fix_neigh_history_omp.cpp b/src/OPENMP/fix_neigh_history_omp.cpp index e84c311d7c8..20b24671ca6 100644 --- a/src/OPENMP/fix_neigh_history_omp.cpp +++ b/src/OPENMP/fix_neigh_history_omp.cpp @@ -174,8 +174,10 @@ void FixNeighHistoryOMP::pre_exchange_onesided() // set maxpartner = max # of partners of any owned atom // maxexchange = max # of values for any Comm::exchange() atom + // maxpartner is zeroed before the parallel region; do not reset it + // here since another thread may already have merged its result - maxpartner = m = 0; + m = 0; for (i = lfrom; i < lto; i++) m = MAX(m, npartner[i]); #if defined(_OPENMP) @@ -197,8 +199,13 @@ void FixNeighHistoryOMP::pre_exchange_newton() { const int nthreads = comm->nthreads; + // ensure npartner is zeroed for all current atoms: nall can be larger than + // nall_neigh when restart files are written that involve communication calls + // but modify->post_neighbor() isn't called + maxpartner = 0; - for (int i = 0; i < nall_neigh; i++) npartner[i] = 0; + const int nall = atom->nlocal + atom->nghost; + for (int i = 0; i < MAX(nall_neigh, nall); i++) npartner[i] = 0; #if defined(_OPENMP) #pragma omp parallel LMP_DEFAULT_NONE @@ -234,8 +241,6 @@ void FixNeighHistoryOMP::pre_exchange_newton() firstneigh = list->firstneigh; // each thread works on a fixed chunk of local and ghost atoms. - // Ensure npartner is zeroed across all atoms, nall_neigh can be less than nall - // when restart files are written that involve communication calls but modify->post_neighbor() isn't called const int ldelta = 1 + nall_neigh / nthreads; const int lfrom = tid * ldelta; const int lmax = lfrom + ldelta; @@ -259,9 +264,6 @@ void FixNeighHistoryOMP::pre_exchange_newton() } #if defined(_OPENMP) #pragma omp barrier - { - ; - } // perform reverse comm to augment owned npartner counts with ghost counts @@ -272,31 +274,22 @@ void FixNeighHistoryOMP::pre_exchange_newton() comm->reverse_comm(this, 0); } - // get page chunks to store atom IDs and shear history for my atoms - - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - if ((i >= lfrom) && (i < lto)) { - n = npartner[i]; - partner[i] = ipg.get(n); - valuepartner[i] = dpg.get(dnum * n); - if (partner[i] == nullptr || valuepartner[i] == nullptr) - error->one(FLERR, Error::NOLASTLINE, "Neighbor history overflow, boost neigh_modify one" + utils::errorurl(36)); - } - } + // wait for the reverse comm to complete: the augmented npartner counts + // of owned atoms determine the sizes of the page chunks allocated below #if defined(_OPENMP) -#pragma omp master +#pragma omp barrier #endif - { - for (i = lfrom; i < lto; i++) { - n = npartner[i]; - partner[i] = ipg.get(n); - valuepartner[i] = dpg.get(dnum * n); - if (partner[i] == nullptr || valuepartner[i] == nullptr) { - error->one(FLERR, Error::NOLASTLINE, "Neighbor history overflow, boost neigh_modify one" + utils::errorurl(36)); - } - } + + // get page chunks to store atom IDs and shear history for + // this thread's chunk of owned and ghost atoms + + for (i = lfrom; i < lto; i++) { + n = npartner[i]; + partner[i] = ipg.get(n); + valuepartner[i] = dpg.get(dnum * n); + if (partner[i] == nullptr || valuepartner[i] == nullptr) + error->one(FLERR, Error::NOLASTLINE, "Neighbor history overflow, boost neigh_modify one" + utils::errorurl(36)); } // 2nd loop over neighbor list @@ -338,9 +331,6 @@ void FixNeighHistoryOMP::pre_exchange_newton() } #if defined(_OPENMP) #pragma omp barrier - { - ; - } #pragma omp master #endif @@ -354,6 +344,13 @@ void FixNeighHistoryOMP::pre_exchange_newton() comm->reverse_comm_variable(this); } + // wait for the reverse comm to complete: it appends the ghost atom + // contributions to partner, valuepartner, and npartner of owned atoms + +#if defined(_OPENMP) +#pragma omp barrier +#endif + // set maxpartner = max # of partners of any owned atom // maxexchange = max # of values for any Comm::exchange() atom m = 0; From fab0ebbcb763b2bac0cf0aec1f2f83ee6e1fb8d5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 00:22:04 -0400 Subject: [PATCH 15/54] fix broken rigid body update for tri and line particles --- src/RIGID/fix_rigid.cpp | 14 +++++---- src/RIGID/fix_rigid_small.cpp | 14 +++++---- src/SRD/fix_srd.cpp | 56 +++++++++++++++++++---------------- 3 files changed, 47 insertions(+), 37 deletions(-) diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index 1022557f35d..1f01d280a5a 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -1681,13 +1681,11 @@ void FixRigid::setup_bodies_static() eflags[i] = 0; if (body[i] < 0) continue; - // set to POINT or SPHERE or ELLIPSOID or LINE + // set to POINT or SPHERE or ELLIPSOID or LINE or TRIANGLE + // check for bonus data before radius: line and tri particles + // also store a bounding-sphere radius for neighboring purposes - if (radius && radius[i] > 0.0) { - eflags[i] |= SPHERE; - eflags[i] |= OMEGA; - eflags[i] |= TORQUE; - } else if (ellipsoid && ellipsoid[i] >= 0) { + if (ellipsoid && ellipsoid[i] >= 0) { eflags[i] |= ELLIPSOID; eflags[i] |= ANGMOM; eflags[i] |= TORQUE; @@ -1699,6 +1697,10 @@ void FixRigid::setup_bodies_static() eflags[i] |= TRIANGLE; eflags[i] |= ANGMOM; eflags[i] |= TORQUE; + } else if (radius && radius[i] > 0.0) { + eflags[i] |= SPHERE; + eflags[i] |= OMEGA; + eflags[i] |= TORQUE; } else eflags[i] |= POINT; // set DIPOLE if atom->mu and mu[3] > 0.0 diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index 0869f02ee00..89b8581e24e 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -1823,13 +1823,11 @@ void FixRigidSmall::setup_bodies_static() eflags[i] = 0; if (bodytag[i] == 0) continue; - // set to POINT or SPHERE or ELLIPSOID or LINE + // set to POINT or SPHERE or ELLIPSOID or LINE or TRIANGLE + // check for bonus data before radius: line and tri particles + // also store a bounding-sphere radius for neighboring purposes - if (radius && radius[i] > 0.0) { - eflags[i] |= SPHERE; - eflags[i] |= OMEGA; - eflags[i] |= TORQUE; - } else if (ellipsoid && ellipsoid[i] >= 0) { + if (ellipsoid && ellipsoid[i] >= 0) { eflags[i] |= ELLIPSOID; eflags[i] |= ANGMOM; eflags[i] |= TORQUE; @@ -1841,6 +1839,10 @@ void FixRigidSmall::setup_bodies_static() eflags[i] |= TRIANGLE; eflags[i] |= ANGMOM; eflags[i] |= TORQUE; + } else if (radius && radius[i] > 0.0) { + eflags[i] |= SPHERE; + eflags[i] |= OMEGA; + eflags[i] |= TORQUE; } else eflags[i] |= POINT; // set DIPOLE if atom->mu and mu[3] > 0.0 diff --git a/src/SRD/fix_srd.cpp b/src/SRD/fix_srd.cpp index ca45b211e91..1e96fd49297 100644 --- a/src/SRD/fix_srd.cpp +++ b/src/SRD/fix_srd.cpp @@ -2535,12 +2535,12 @@ void FixSRD::parameterize() maxbigdiam = 0.0; minbigdiam = BIG; + // check for bonus data before radius: line and tri particles + // also store a bounding-sphere radius for neighboring purposes + for (int i = 0; i < nlocal; i++) if (mask[i] & biggroupbit) { - if (radius && radius[i] > 0.0) { - maxbigdiam = MAX(maxbigdiam, 2.0 * radius[i]); - minbigdiam = MIN(minbigdiam, 2.0 * radius[i]); - } else if (ellipsoid && ellipsoid[i] >= 0) { + if (ellipsoid && ellipsoid[i] >= 0) { any_ellipsoids = 1; double *shape = ebonus[ellipsoid[i]].shape; maxbigdiam = MAX(maxbigdiam, 2.0 * shape[0]); @@ -2563,6 +2563,9 @@ void FixSRD::parameterize() length = MAX(length, length3); maxbigdiam = MAX(maxbigdiam, length); minbigdiam = MIN(minbigdiam, length); + } else if (radius && radius[i] > 0.0) { + maxbigdiam = MAX(maxbigdiam, 2.0 * radius[i]); + minbigdiam = MIN(minbigdiam, 2.0 * radius[i]); } else error->one(FLERR, "Big particle in fix srd cannot be point particle"); } @@ -2649,10 +2652,7 @@ void FixSRD::parameterize() if (dimension == 3) { for (int i = 0; i < nlocal; i++) if (mask[i] & biggroupbit) { - if (radius && radius[i] > 0.0) { - double r = radfactor * radius[i]; - volbig += 4.0 / 3.0 * MY_PI * r * r * r; - } else if (ellipsoid && ellipsoid[i] >= 0) { + if (ellipsoid && ellipsoid[i] >= 0) { double *shape = ebonus[ellipsoid[i]].shape; volbig += 4.0 / 3.0 * MY_PI * shape[0] * shape[1] * shape[2] * radfactor * radfactor * radfactor; @@ -2665,20 +2665,23 @@ void FixSRD::parameterize() MathExtra::sub3(c3, c1, c3mc1); MathExtra::cross3(c2mc1, c3mc1, cross); volbig += 0.5 * MathExtra::len3(cross) * WIDTH; + } else if (radius && radius[i] > 0.0) { + double r = radfactor * radius[i]; + volbig += 4.0 / 3.0 * MY_PI * r * r * r; } } } else { for (int i = 0; i < nlocal; i++) if (mask[i] & biggroupbit) { - if (radius && radius[i] > 0.0) { - double r = radfactor * radius[i]; - volbig += MY_PI * r * r; - } else if (ellipsoid && ellipsoid[i] >= 0) { + if (ellipsoid && ellipsoid[i] >= 0) { double *shape = ebonus[ellipsoid[i]].shape; volbig += MY_PI * shape[0] * shape[1] * radfactor * radfactor; } else if (line && line[i] >= 0) { double length = lbonus[line[i]].length; volbig += length * WIDTH; + } else if (radius && radius[i] > 0.0) { + double r = radfactor * radius[i]; + volbig += MY_PI * r * r; } } } @@ -2864,23 +2867,16 @@ void FixSRD::big_static() double skinhalf = 0.5 * neighbor->skin; + // check for bonus data before radius: line and tri particles + // also store a bounding-sphere radius for neighboring purposes + for (int k = 0; k < nbig; k++) { i = biglist[k].index; - // sphere - // set radius and radsq and cutoff based on radius - - if (radius && radius[i] > 0.0) { - biglist[k].type = SPHERE; - rad = radfactor * radius[i]; - biglist[k].radius = rad; - biglist[k].radsq = rad * rad; - biglist[k].cutbinsq = (rad + skinhalf) * (rad + skinhalf); - - // ellipsoid - // set abc radsqinv and cutoff based on max radius + // ellipsoid + // set abc radsqinv and cutoff based on max radius - } else if (ellipsoid && ellipsoid[i] >= 0) { + if (ellipsoid && ellipsoid[i] >= 0) { shape = ebonus[ellipsoid[i]].shape; biglist[k].type = ELLIPSOID; arad = radfactor * shape[0]; @@ -2921,6 +2917,16 @@ void FixSRD::big_static() rad = MAX(length1, length2); rad = MAX(rad, length3); biglist[k].cutbinsq = (rad + skinhalf) * (rad + skinhalf); + + // sphere + // set radius and radsq and cutoff based on radius + + } else if (radius && radius[i] > 0.0) { + biglist[k].type = SPHERE; + rad = radfactor * radius[i]; + biglist[k].radius = rad; + biglist[k].radsq = rad * rad; + biglist[k].cutbinsq = (rad + skinhalf) * (rad + skinhalf); } } } From 3c5370f69cf8e2fcd8a44a64260c6e08f12d8fc5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 00:22:44 -0400 Subject: [PATCH 16/54] fix rotation issue with line particles --- src/RIGID/fix_rigid.cpp | 12 ++++++++++++ src/RIGID/fix_rigid_small.cpp | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index 1f01d280a5a..564504e648f 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -1973,6 +1973,18 @@ void FixRigid::setup_bodies_static() if (MathExtra::dot3(cross,ez_space[ibody]) < 0.0) MathExtra::negate3(ez_space[ibody]); + // for 2d, ensure ez points in the +z direction + // negate both ey and ez to keep the eigenbasis right-handed + // the theta-based orientation bookkeeping for line particles requires + // the body frame to be a pure rotation around the +z axis + + if (domain->dimension == 2) { + if (ez_space[ibody][2] < 0.0) { + MathExtra::negate3(ey_space[ibody]); + MathExtra::negate3(ez_space[ibody]); + } + } + // create initial quaternion MathExtra::exyz_to_q(ex_space[ibody],ey_space[ibody],ez_space[ibody], diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index 89b8581e24e..df83a063064 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -2125,6 +2125,18 @@ void FixRigidSmall::setup_bodies_static() MathExtra::cross3(ex,ey,cross); if (MathExtra::dot3(cross,ez) < 0.0) MathExtra::negate3(ez); + // for 2d, ensure ez points in the +z direction + // negate both ey and ez to keep the eigenbasis right-handed + // the theta-based orientation bookkeeping for line particles requires + // the body frame to be a pure rotation around the +z axis + + if (domain->dimension == 2) { + if (ez[2] < 0.0) { + MathExtra::negate3(ey); + MathExtra::negate3(ez); + } + } + // create initial quaternion MathExtra::exyz_to_q(ex,ey,ez,body[ibody].quat); From b0efb8c76008bd1c9d8957d981cbcc68ac2a450b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 01:34:32 -0400 Subject: [PATCH 17/54] fix minor documentation issues --- doc/src/dump.rst | 2 +- doc/src/fix_adapt.rst | 4 ++-- doc/src/fix_wall_gran.rst | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/src/dump.rst b/doc/src/dump.rst index 24cf41b2a07..d12a274c51e 100644 --- a/doc/src/dump.rst +++ b/doc/src/dump.rst @@ -642,7 +642,7 @@ large number of small dump files! .. versionremoved:: 21Nov2023 -The MPIIO package and the the corresponding "/mpiio" dump styles, except +The MPIIO package and the corresponding "/mpiio" dump styles, except for the unrelated "netcdf/mpiio" style were removed from LAMMPS. ---------- diff --git a/doc/src/fix_adapt.rst b/doc/src/fix_adapt.rst index 36f3589d07b..91853ec791c 100644 --- a/doc/src/fix_adapt.rst +++ b/doc/src/fix_adapt.rst @@ -152,7 +152,7 @@ formulas for the meaning of these parameters: +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`born ` | a, c, d | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`born/coul/long, born/coul/long, born/coul/msm ` | cut_coul | type global | +| :doc:`born/coul/long, born/coul/msm ` | cut_coul | type global | +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`born/gauss ` | biga0, biga1, r0 | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ @@ -202,7 +202,7 @@ formulas for the meaning of these parameters: +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`lj/class2, lj/class2/coul/long ` | epsilon, sigma | type pairs | +-----------------------------------------------------------------------+---------------------------------+-------------+ -| :doc:`lj/class2/coul/cut, ` | epsilon, sigma, cut_coul | type pair | +| :doc:`lj/class2/coul/cut ` | epsilon, sigma, cut_coul | type pair | +-----------------------------------------------------------------------+---------------------------------+-------------+ | :doc:`lj/class2/coul/long ` | cut_coul | type global | +-----------------------------------------------------------------------+---------------------------------+-------------+ diff --git a/doc/src/fix_wall_gran.rst b/doc/src/fix_wall_gran.rst index 08d384ab6a0..f6803751f97 100644 --- a/doc/src/fix_wall_gran.rst +++ b/doc/src/fix_wall_gran.rst @@ -170,7 +170,7 @@ is desired. .. versionremoved:: 11Feb2026 -The *zcylinder* wallstyle has been removed. Pleas use :doc:`fix +The *zcylinder* wallstyle has been removed. Please use :doc:`fix wall/gran/region ` instead. .. versionadded:: TBD From cd2ad6bbe4c2a75ca5500f699159ce781b677b87 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 01:34:48 -0400 Subject: [PATCH 18/54] always require the --root flag --- doc/utils/check-fix-adapt-tables.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/utils/check-fix-adapt-tables.py b/doc/utils/check-fix-adapt-tables.py index 89aebc468af..6cc74d110c0 100755 --- a/doc/utils/check-fix-adapt-tables.py +++ b/doc/utils/check-fix-adapt-tables.py @@ -304,8 +304,7 @@ def suggest(word, candidates): def main(): argp = argparse.ArgumentParser(description=__doc__) - argp.add_argument('--root', default=os.path.dirname(os.path.abspath(__file__)), - help='LAMMPS repository root (default: script location)') + argp.add_argument('--root', help='LAMMPS repository root (default: script location)') argp.add_argument('--no-missing', action='store_true', help='skip the code -> doc missing-entry report') argp.add_argument('--skip', action='append', default=[], metavar='PATTERN', From 42f263ca7f956f8e98c2bd3e29c2882b51d56ce6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 01:35:11 -0400 Subject: [PATCH 19/54] remove excessive comment --- src/GRANULAR/pair_granular.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index c79d2906f83..ab18e25ee53 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -492,8 +492,6 @@ void PairGranular::init_style() // this is so its order in the fix list is preserved if (use_history && fix_history == nullptr) { - // since pair style granular does not support any form of acceleration - // we must not try using an accerated version of fix NEIGH_HISTORY. fix_history = dynamic_cast(modify->replace_fix(id_dummy, fmt::format("{} all NEIGH_HISTORY {}", id_history, size_history),0)); fix_history->pair = this; } else if (use_history) { From 15e9b1acbd2184d047875cc75c2e323e8364e867 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 01:40:41 -0400 Subject: [PATCH 20/54] spelling --- doc/src/Howto_peri.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/Howto_peri.rst b/doc/src/Howto_peri.rst index 865abeb2301..65a650bf4cd 100644 --- a/doc/src/Howto_peri.rst +++ b/doc/src/Howto_peri.rst @@ -206,8 +206,8 @@ return mapping that is stable under sustained plastic flow. Performance expectations ^^^^^^^^^^^^^^^^^^^^^^^^ -The BPM implementation is found to be consistently faster than the -legacy PERI pair styles by a significant marging. On a periodic +The based BPM implementation is found to be consistently faster than +the legacy PERI pair styles by a significant margin. On a periodic 16x16x16 simple-cubic block (4096 nodes, 122 bonds per node) the per-step force cost is roughly 3.6x (pmb), 5.4x (lps), 4.4x (ves) and 5.9x (eps) lower than the corresponding ``peri/*`` pair style on a From 52c504f2bc87cdacdc297c272c68507cb3c2c362 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 01:46:00 -0400 Subject: [PATCH 21/54] add commented out visualization --- examples/ASPHERE/line/in.line | 12 ++++++++++++ examples/ASPHERE/line/in.line.srd | 12 ++++++++++++ examples/ASPHERE/tri/in.tri.srd | 15 ++++++++++++++- 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/examples/ASPHERE/line/in.line b/examples/ASPHERE/line/in.line index 8d2678aded2..1e7af286481 100644 --- a/examples/ASPHERE/line/in.line +++ b/examples/ASPHERE/line/in.line @@ -25,6 +25,11 @@ compute 10 all property/atom end1x end1y end2x end2y #dump 1 all custom 500 dump1.atom id type x y z ix iy iz #dump 2 all custom 500 dump1.line id type & # c_10[1] c_10[2] c_10[3] c_10[4] +#dump viz all image 500 line-*.png type type line atom 0.4 box yes 0.015 & +# size 600 600 zoom 4.0 center s 0.5 0.5 0.5 & +# shiny 0.3 fsaa yes ssao yes 453983 0.3 +#dump_modify viz pad 6 color someorange 0.897993 0.646998 0.0390021 & +# acolor 1 someorange boxcolor steelblue lights 0.1 0.9 0.45 0.9 timestep 0.001 @@ -44,11 +49,18 @@ run 10000 #undump 2 unfix 3 +#undump viz + + change_box all triclinic #dump 1 all custom 500 dump2.atom id type x y z ix iy iz #dump 2 all custom 500 dump2.line id type & # c_10[1] c_10[2] c_10[3] c_10[4] +#dump viz all image 500 line-*.png type type line atom 0.4 box yes 0.015 & +# size 600 600 zoom 1.6 shiny 0.3 fsaa yes ssao yes 453983 0.3 +#dump_modify viz pad 6 color someorange 0.897993 0.646998 0.0390021 & +# acolor 1 someorange boxcolor steelblue lights 0.1 0.9 0.45 0.9 fix 3 all deform 1 xy erate 0.01 units box diff --git a/examples/ASPHERE/line/in.line.srd b/examples/ASPHERE/line/in.line.srd index c5eb4d2b73f..9d104c7a16e 100644 --- a/examples/ASPHERE/line/in.line.srd +++ b/examples/ASPHERE/line/in.line.srd @@ -85,6 +85,12 @@ compute 10 big property/atom end1x end1y end2x end2y #dump 1 all custom 500 dump1.atom.srd id type x y z ix iy iz #dump 2 all custom 500 dump1.line.srd id type & # c_10[1] c_10[2] c_10[3] c_10[4] +#dump viz all image 500 line.srd-*.png type type line atom 0.4 box yes 0.015 & +# size 600 600 zoom 2.0 center s 0.5 0.5 0.5 & +# shiny 0.3 fsaa yes ssao yes 453983 0.3 +#dump_modify viz pad 6 color someorange 0.897993 0.646998 0.0390021 & +# acolor 1 someorange boxcolor steelblue lights 0.1 0.9 0.45 0.9 & +# adiam 2 0.3 acolor 2 forestgreen run 10000 @@ -92,6 +98,7 @@ run 10000 #undump 2 unfix 3 +#undump viz change_box all triclinic fix 2 small srd 20 big 1.0 0.25 49894 & @@ -104,4 +111,9 @@ fix 2 small srd 20 big 1.0 0.25 49894 & fix 3 all deform 1 xy erate 0.0002 units box remap v +# size 600 600 zoom 1.6 center s 0.5 0.5 0.5 & +# shiny 0.3 fsaa yes ssao yes 453983 0.3 +#dump_modify viz pad 6 color someorange 0.897993 0.646998 0.0390021 & +# acolor 1 someorange boxcolor steelblue lights 0.1 0.9 0.45 0.9 & +# adiam 2 0.3 acolor 2 forestgreen run 30000 diff --git a/examples/ASPHERE/tri/in.tri.srd b/examples/ASPHERE/tri/in.tri.srd index b09ff05503e..ef954893302 100644 --- a/examples/ASPHERE/tri/in.tri.srd +++ b/examples/ASPHERE/tri/in.tri.srd @@ -85,12 +85,19 @@ compute 10 all property/atom corner1x corner1y corner1z & # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] & # c_10[7] c_10[8] c_10[9] +#dump viz all image 500 tri.srd-*.png type type tri atom 1 0.0 & +# size 800 600 zoom 1.667 shiny 0.1 fsaa yes view 179 89 & +# ssao yes 453983 0.15 box yes 0.02 +#dump_modify viz pad 6 backcolor black backcolor2 white & +# acolor 2 goldenrod acolor 1 violet boxcolor steelblue & +# lights 0.25 0.9 0.6 0.9 adiam 2 0.16 + run 1000 #undump 1 #undump 2 unfix 3 - +#undump viz change_box all triclinic fix 2 small srd 20 big 1.0 1.0 49894 & @@ -102,6 +109,12 @@ fix 2 small srd 20 big 1.0 1.0 49894 & # c_10[1] c_10[2] c_10[3] c_10[4] c_10[5] c_10[6] & # c_10[7] c_10[8] c_10[9] +#dump viz all image 500 tri.srd-*.png type type tri atom 1 0.0 & +# size 800 600 zoom 1.333 shiny 0.1 fsaa yes view 179 89 & +# ssao yes 453983 0.15 box yes 0.02 +#dump_modify viz pad 6 backcolor black backcolor2 white & +# acolor 2 goldenrod acolor 1 violet boxcolor steelblue & +# lights 0.25 0.9 0.6 0.9 adiam 2 0.16 fix 3 all deform 1 xy erate 0.05 units box remap v run 2000 From 2a78c0fa26b510312a610e1ef17843aea8d33cd3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 10:28:41 -0400 Subject: [PATCH 22/54] add custom visualization --- examples/pour/in.pour | 73 +++++++++++++++++------------- examples/pour/in.pour.2d.molecule | 75 +++++++++++++------------------ 2 files changed, 73 insertions(+), 75 deletions(-) diff --git a/examples/pour/in.pour b/examples/pour/in.pour index 332ccf8b62d..2c3053c6a19 100644 --- a/examples/pour/in.pour +++ b/examples/pour/in.pour @@ -1,15 +1,15 @@ # Pour granular particles into chute container, then induce flow -atom_style sphere -boundary p p fm -newton off -comm_modify vel yes +atom_style sphere +boundary p p fm +newton off +comm_modify vel yes -region reg block -10 10 -10 10 -0.5 16 units box -create_box 1 reg +region reg block -10 10 -10 10 -0.5 16 units box +create_box 1 reg -neighbor 0.2 bin -neigh_modify delay 0 +neighbor 0.2 bin +neigh_modify delay 0 # IMPORTANT NOTE: these values of stiffness (2000) and timestep (0.001) # are used in this example file to produce a quick simulation and movie. @@ -17,36 +17,45 @@ neigh_modify delay 0 # k = 2.0e5 and dt = 0.0001, as in bench/in.chute. pair_style gran/hooke/history 2000.0 NULL 50.0 NULL 0.5 0 -pair_coeff * * +pair_coeff * * -timestep 0.001 +timestep 0.001 -fix 1 all nve/sphere -fix 2 all gravity 1.0 spherical 0.0 -180.0 -fix zlower all wall/gran hooke/history 2000.0 NULL 50.0 NULL 0.5 0 & - zplane 0.0 2000.0 +fix 1 all nve/sphere +fix 2 all gravity 1.0 spherical 0.0 -180.0 +fix zlower all wall/gran hooke/history 2000.0 NULL 50.0 NULL 0.5 0 & + zplane 0.0 2000.0 -region slab block -9.0 9.0 -9.0 9.0 10.0 15.0 units box -fix ins all pour 3000 1 300719 vol 0.13 50 region slab +region slab block -9.0 9.0 -9.0 9.0 10.0 15.0 units box +fix ins all pour 3000 1 300719 vol 0.13 50 region slab -compute 1 all erotate/sphere -thermo_style custom step atoms ke c_1 vol -thermo 1000 -thermo_modify lost ignore norm no -compute_modify thermo_temp dynamic/dof yes +compute 1 all erotate/sphere +thermo_style custom step atoms ke c_1 vol +thermo 1000 +thermo_modify lost ignore norm no +compute_modify thermo_temp dynamic/dof yes -#dump id all atom 1000 dump.pour +#dump id all atom 1000 dump.pour -#dump 2 all image 1000 image.*.jpg type type & -# axes yes 0.8 0.02 view 80 -30 -#dump_modify 2 pad 5 +#dump 2 all image 1000 image.*.jpg type type & +# axes yes 0.8 0.02 view 80 -30 +#dump_modify 2 pad 5 -#dump 3 all movie 1000 movie.mpg type type & -# axes yes 0.8 0.02 view 80 -30 -#dump_modify 3 pad 5 +#dump 3 all movie 1000 movie.mpg type type & +# axes yes 0.8 0.02 view 80 -30 +#dump_modify 3 pad 5 -run 25000 +#variable dumpfreq index 200 +#fix grav all graphics/objects ${dumpfreq} arrow 1 -8 0 12 8 0 12 0.5 0.2 +#dump viz all image 200 pour-*.png type type size 800 600 zoom 1.6 view 80 -30 & +# shiny 0.2 fsaa yes ssao yes 453983 0.6 box yes 0.025 axes yes 0.5 0.05 & +# center s 0.5 0.4 0.5 fix grav const 0.0 0.0 +#dump_modify viz pad 6 color brown 0.596002 0.416007 0.267002 fcolor grav orange & +# acolor 1 brown boxcolor slategray backcolor2 white ftrans grav 0 -unfix ins -fix 2 all gravity 1.0 chute 26.0 -run 25000 +run 25000 + +unfix ins +fix 2 all gravity 1.0 chute 26.0 +#dump_modify viz ftrans grav 1.0 +run 25000 diff --git a/examples/pour/in.pour.2d.molecule b/examples/pour/in.pour.2d.molecule index ce791756628..dd7a47bf705 100644 --- a/examples/pour/in.pour.2d.molecule +++ b/examples/pour/in.pour.2d.molecule @@ -1,19 +1,19 @@ # Pour 2d granular particles into container -dimension 2 -atom_style sphere +dimension 2 +atom_style sphere atom_modify map array -boundary f fm p -newton off -comm_modify vel yes cutoff 2.5 +boundary f fm p +newton off +comm_modify vel yes cutoff 2.5 fix prop all property/atom mol ghost yes -region reg block 0 100 0 50 -0.5 0.5 units box -create_box 1 reg +region reg block 0 100 0 50 -0.5 0.5 units box +create_box 1 reg -neighbor 0.2 bin -neigh_modify delay 0 +neighbor 0.2 bin +neigh_modify delay 0 # IMPORTANT NOTE: these values of stiffness (4000) and timestep (0.001) # are used in this example file to produce a quick simulation and movie. @@ -21,15 +21,15 @@ neigh_modify delay 0 # k = 4.0e5 and dt = 0.0001, as in bench/in.chute (if it were Hertzian). pair_style gran/hertz/history 4000.0 NULL 100.0 NULL 0.5 0 -pair_coeff * * +pair_coeff * * -timestep 0.001 +timestep 0.001 -fix 2 all gravity 1.0 spherical 0.0 -180.0 -fix xwalls all wall/gran hertz/history 4000.0 NULL 100.0 NULL 0 1 & - xplane 0 100 -fix ywalls all wall/gran hertz/history 4000.0 NULL 100.0 NULL 0 1 & - yplane 0 NULL +fix 2 all gravity 1.0 spherical 0.0 -180.0 +fix xwalls all wall/gran hertz/history 4000.0 NULL 100.0 NULL 0 1 & + xplane 0 100 +fix ywalls all wall/gran hertz/history 4000.0 NULL 100.0 NULL 0 1 & + yplane 0 NULL molecule object molecule.vshape fix 3 all rigid/small molecule mol object @@ -38,34 +38,23 @@ fix 3 all rigid/small molecule mol object region slab block 3.0 97.0 30 34.5 -0.5 0.5 units box fix ins all pour 500 0 4767548 vol 0.8 10 & - region slab mol object rigid 3 + region slab mol object rigid 3 fix 4 all enforce2d -compute 1 all erotate/sphere +compute 1 all erotate/sphere compute Tsphere all temp/sphere -thermo_style custom step atoms ke c_1 vol -thermo_modify lost ignore norm no temp Tsphere -compute_modify Tsphere dynamic/dof yes - -thermo 1000 - -#dump id all atom 100 tmp.dump - -#variable colors string & -# "red green blue yellow white & -# purple pink orange lime gray" -#variable mol2 atom mol%10 -#dump 2 all image 250 image.*.jpg v_mol2 type & -# zoom 1.6 adiam 1.5 -#dump_modify 2 pad 5 amap 0 10 sa 1 10 ${colors} - -#variable colors string & -# "red green blue yellow white & -# purple pink orange lime gray" -#variable mol3 atom mol%10 -#dump 3 all movie 250 movie.mpg v_mol3 type & -# zoom 1.6 adiam 1.5 -#dump_modify 3 pad 5 amap 0 10 sa 1 10 ${colors} - -run 25000 +thermo_style custom step atoms ke c_1 vol +thermo_modify lost ignore norm no temp Tsphere +compute_modify Tsphere dynamic/dof yes + +thermo 1000 + +#dump id all atom 100 tmp.dump + +#dump viz all image 250 pour.2d.molecule-*.png mol type size 800 600 zoom 2.5 & +# shiny 0.2 fsaa yes ssao yes 453983 0.5 box yes 0.02 +#dump_modify viz pad 6 boxcolor slategray adiam 1 1.4 & +# amap 1 1000 sa 1.0 10 firebrick darkcyan forestgreen darkgray violet midnightblue yellow purple silver orange + +run 25000 From 1a6cfbd66b203448b9f4b0f9ce6ab3aae66aeade Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 11:03:13 -0400 Subject: [PATCH 23/54] relax epsilon --- unittest/force-styles/tests/atomic-pair-yukawa_colloid.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unittest/force-styles/tests/atomic-pair-yukawa_colloid.yaml b/unittest/force-styles/tests/atomic-pair-yukawa_colloid.yaml index b0dc86ce0ca..10ad4cd7b30 100644 --- a/unittest/force-styles/tests/atomic-pair-yukawa_colloid.yaml +++ b/unittest/force-styles/tests/atomic-pair-yukawa_colloid.yaml @@ -1,7 +1,7 @@ --- lammps_version: 17 Feb 2022 date_generated: Fri Mar 18 22:17:42 2022 -epsilon: 2e-13 +epsilon: 2.5e-13 skip_tests: single prerequisites: ! | atom sphere From ba900364412d8b02462ecb26088918f7e901dd02 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 22:43:17 -0400 Subject: [PATCH 24/54] improve error messages --- src/INTERLAYER/pair_kolmogorov_crespi_z.cpp | 4 ++-- src/INTERLAYER/pair_lebedeva_z.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp b/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp index db8c7e13431..1a7dbb0a87e 100644 --- a/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp +++ b/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp @@ -202,9 +202,9 @@ void PairKolmogorovCrespiZ::allocate() void PairKolmogorovCrespiZ::settings(int narg, char **arg) { - if (narg != 1) error->all(FLERR, "Illegal pair_style command"); + if (narg != 1) error->all(FLERR, "Pair style kolmogorov/crespi/z requires exactly one argument"); if (!utils::strmatch(force->pair_style, "^hybrid/overlay")) - error->all(FLERR, "ERROR: requires hybrid/overlay pair_style"); + error->all(FLERR, "Pair style kolmogorov/crespi/z must be used as hybrid/overlay sub-style"); cut_global = utils::numeric(FLERR, arg[0], false, lmp); } diff --git a/src/INTERLAYER/pair_lebedeva_z.cpp b/src/INTERLAYER/pair_lebedeva_z.cpp index 955473853b3..42f96fbe9ac 100644 --- a/src/INTERLAYER/pair_lebedeva_z.cpp +++ b/src/INTERLAYER/pair_lebedeva_z.cpp @@ -199,9 +199,9 @@ void PairLebedevaZ::allocate() void PairLebedevaZ::settings(int narg, char **arg) { - if (narg != 1) error->all(FLERR,"Illegal pair_style command"); + if (narg != 1) error->all(FLERR,"Pair style lebedeva/z requires exactly one argument"); if (!utils::strmatch(force->pair_style,"^hybrid/overlay")) - error->all(FLERR,"Pair style lebedeva/z requires using hybrid/overlay"); + error->all(FLERR,"Pair style lebedeva/z must be used as hybrid/overlay sub-style"); cut_global = utils::numeric(FLERR,arg[0],false,lmp); } From 35648c465617fc2bb7b39098517d9a3ccf5d0a55 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 23:25:24 -0400 Subject: [PATCH 25/54] add small comment to auto-generated files --- cmake/Modules/StyleHeaderUtils.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Modules/StyleHeaderUtils.cmake b/cmake/Modules/StyleHeaderUtils.cmake index d4644bd0429..cd34a757e25 100644 --- a/cmake/Modules/StyleHeaderUtils.cmake +++ b/cmake/Modules/StyleHeaderUtils.cmake @@ -45,7 +45,7 @@ function(FindStyleHeadersExt path style_class extension headers sources) endfunction(FindStyleHeadersExt) function(CreateStyleHeader path filename) - set(temp "") + set(temp "// File autogenerated by CMake\n") if(ARGC GREATER 2) list(REMOVE_AT ARGV 0 1) set(header_list) @@ -223,7 +223,7 @@ function(RegisterPackages search_path) endfunction(RegisterPackages) function(CreatePackagesHeader path filename) - set(temp "") + set(temp "// File autogenerated by CMake\n") if(ARGC GREATER 2) list(REMOVE_AT ARGV 0 1) foreach(FNAME ${ARGV}) From 814989e128391c031f6e65e2e056ebfd26137fc3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 23:54:08 -0400 Subject: [PATCH 26/54] initialize all pointers to null in initializer list --- src/REPLICA/fix_pimd_nvt.cpp | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/src/REPLICA/fix_pimd_nvt.cpp b/src/REPLICA/fix_pimd_nvt.cpp index f764ab86ec9..bfb519405cb 100644 --- a/src/REPLICA/fix_pimd_nvt.cpp +++ b/src/REPLICA/fix_pimd_nvt.cpp @@ -45,31 +45,15 @@ using MathSpecial::powint; /* ---------------------------------------------------------------------- */ -FixPIMDNVT::FixPIMDNVT(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), comm_ptr(nullptr) +FixPIMDNVT::FixPIMDNVT(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), mass(nullptr), tag_send(nullptr), buf_send(nullptr), buf_recv(nullptr), + buf_beads(nullptr), plan_send(nullptr), plan_recv(nullptr), comm_ptr(nullptr), lam(nullptr), + M_x2xp(nullptr), M_xp2x(nullptr), M_f2fp(nullptr), M_fp2f(nullptr), mode_index(nullptr), + nhc_eta(nullptr), nhc_eta_dot(nullptr), nhc_eta_dotdot(nullptr), nhc_eta_mass(nullptr) { max_nsend = 0; - tag_send = nullptr; - buf_send = nullptr; - max_nlocal = 0; - buf_recv = nullptr; - buf_beads = nullptr; - size_plan = 0; - plan_send = plan_recv = nullptr; - - M_x2xp = M_xp2x = M_f2fp = M_fp2f = nullptr; - lam = nullptr; - mode_index = nullptr; - - mass = nullptr; - - array_atom = nullptr; - nhc_eta = nullptr; - nhc_eta_dot = nullptr; - nhc_eta_dotdot = nullptr; - nhc_eta_mass = nullptr; - spring_energy = t_sys = virial = 0.0; method = PIMD; From a989d4d43773bf6ddcd62792851093b733dbc8e3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 23:55:04 -0400 Subject: [PATCH 27/54] must reset max_nlocal to 0 when deleting buf_beads[i] so it gets reallocated --- src/REPLICA/fix_pimd_nvt.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/REPLICA/fix_pimd_nvt.cpp b/src/REPLICA/fix_pimd_nvt.cpp index bfb519405cb..38392c08735 100644 --- a/src/REPLICA/fix_pimd_nvt.cpp +++ b/src/REPLICA/fix_pimd_nvt.cpp @@ -643,6 +643,7 @@ void FixPIMDNVT::comm_init() buf_beads = new double *[np]; for (int i = 0; i < np; i++) buf_beads[i] = nullptr; + max_nlocal = 0; } /* ---------------------------------------------------------------------- */ From 58eb0b303a68a7eded115401ef9e14fdadfeeab9 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 23 Jul 2026 23:55:19 -0400 Subject: [PATCH 28/54] apply clang-format --- src/REPLICA/fix_pimd_nvt.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/REPLICA/fix_pimd_nvt.cpp b/src/REPLICA/fix_pimd_nvt.cpp index 38392c08735..fca52ab14b2 100644 --- a/src/REPLICA/fix_pimd_nvt.cpp +++ b/src/REPLICA/fix_pimd_nvt.cpp @@ -577,9 +577,9 @@ void FixPIMDNVT::spring_force() double dy = dely1 + dely2; double dz = delz1 + delz2; - f[i][0] -= dx*ff; - f[i][1] -= dy*ff; - f[i][2] -= dz*ff; + f[i][0] -= dx * ff; + f[i][1] -= dy * ff; + f[i][2] -= dz * ff; spring_energy += -0.5 * ff * (delx2 * delx2 + dely2 * dely2 + delz2 * delz2); } @@ -672,8 +672,8 @@ void FixPIMDNVT::comm_exec(double **ptr) int nsend; - MPI_Sendrecv(&nlocal, 1, MPI_INT, plan_send[iplan], 0, &nsend, 1, MPI_INT, plan_recv[iplan], - 0, universe->uworld, MPI_STATUS_IGNORE); + MPI_Sendrecv(&nlocal, 1, MPI_INT, plan_send[iplan], 0, &nsend, 1, MPI_INT, plan_recv[iplan], 0, + universe->uworld, MPI_STATUS_IGNORE); // allocate arrays From 3bb87d51c2df8e62ae00aeb72913b1667e3aa3f3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Jul 2026 01:24:31 -0400 Subject: [PATCH 29/54] make compatible with std::string --- src/group.cpp | 2 +- src/group.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/group.cpp b/src/group.cpp index 71e3ac824e6..11f96c615a3 100644 --- a/src/group.cpp +++ b/src/group.cpp @@ -623,7 +623,7 @@ int Group::find(const std::string &name) return group index ------------------------------------------------------------------------- */ -int Group::find_or_create(const char *name) +int Group::find_or_create(const std::string &name) { int igroup = find(name); if (igroup >= 0) return igroup; diff --git a/src/group.h b/src/group.h index fd2c15857ad..9c70d308b78 100644 --- a/src/group.h +++ b/src/group.h @@ -37,7 +37,7 @@ class Group : protected Pointers { void assign(const std::string &); // convenience function void create(const std::string &, int *); // add flagged atoms to a group int find(const std::string &); // lookup name in list of groups - int find_or_create(const char *); // lookup name or create new group + int find_or_create(const std::string &); // lookup name or create new group int get_bitmask_by_id(const std::string &, int, const std::string &, const std::string &); int get_inversemask_by_id(const std::string &, int, const std::string &, const std::string &); void write_restart(FILE *); From 06f04cfa15338b5c22d946c6614509781b99df3b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Jul 2026 01:25:03 -0400 Subject: [PATCH 30/54] replicate the fix group from replica 0 to all replica --- doc/src/fix_graphics_replica.rst | 4 +- src/GRAPHICS/fix_graphics_replica.cpp | 104 ++++++++++++++++---------- src/GRAPHICS/fix_graphics_replica.h | 3 +- 3 files changed, 70 insertions(+), 41 deletions(-) diff --git a/doc/src/fix_graphics_replica.rst b/doc/src/fix_graphics_replica.rst index 927afe218c9..a7792a33ba9 100644 --- a/doc/src/fix_graphics_replica.rst +++ b/doc/src/fix_graphics_replica.rst @@ -37,7 +37,9 @@ This fix allows to add spheres to images rendered with :doc:`dump image replicas of a multi-replica simulation. The *group-ID* sets the group ID of the atoms selected to be -represented. This may be a dynamic group. +represented. This may be a dynamic group. Since a dynamic group may +select different atoms on different replicas, the selection of atoms +from the first replica is applied to all replicas. The *Nevery* keyword determines how often the replica graphics data is updated. This should be the same value as the corresponding *N* diff --git a/src/GRAPHICS/fix_graphics_replica.cpp b/src/GRAPHICS/fix_graphics_replica.cpp index ada73048afd..91f754a8275 100644 --- a/src/GRAPHICS/fix_graphics_replica.cpp +++ b/src/GRAPHICS/fix_graphics_replica.cpp @@ -75,6 +75,8 @@ FixGraphicsReplica::FixGraphicsReplica(LAMMPS *lmp, int narg, char **arg) : if (atom->map_style == Atom::MAP_NONE) error->universe_all(FLERR, "Fix graphics/replica requires an atom map, see atom_modify"); + imggroup = fmt::format("GRAPHICS/REPLICA:{}", id); + group->find_or_create(imggroup); numobjs = 0; } @@ -84,6 +86,18 @@ FixGraphicsReplica::~FixGraphicsReplica() { memory->destroy(imgobjs); memory->destroy(imgparms); + + // delete group created by the constructor, + // unless the Group class has already been deleted at program exit + + if (group) { + try { + group->assign(imggroup + " delete"); + } catch (std::exception &e) { + if (comm->me == 0) + fprintf(stderr, "Error deleting group %s: %s\n", imggroup.c_str(), e.what()); + } + } } /* ---------------------------------------------------------------------- */ @@ -95,8 +109,9 @@ int FixGraphicsReplica::setmask() /* ---------------------------------------------------------------------- */ -void FixGraphicsReplica::init() +void FixGraphicsReplica::setup(int /*vflag*/) { + // must come after any dynamic group is updated for the first time end_of_step(); } @@ -118,56 +133,67 @@ void FixGraphicsReplica::end_of_step() memory->destroy(imgobjs); memory->destroy(imgparms); - // count atoms in group and across replica - - bigint nper = group->count(igroup); - nper = (me == 0) ? nper : 0; - bigint nall = 0; - MPI_Allreduce(&nper, &nall, 1, MPI_LMP_BIGINT, MPI_SUM, universe->uworld); - MPI_Bcast(&nper, 1, MPI_LMP_BIGINT, 0, world); + // per-atom data of local atoms - // ensure the group has the same number of atoms on each replica + const auto *const *const x = atom->x; + const auto *const tag = atom->tag; + const auto *const type = atom->type; + const auto *const image = atom->image; + int *const mask = atom->mask; + const auto nlocal = atom->nlocal; - bigint nminmax = 0; - MPI_Allreduce(&nper, &nminmax, 1, MPI_LMP_BIGINT, MPI_MIN, universe->uworld); - if (nminmax != nper) - error->universe_all(FLERR, "Fix group must have the same number of atoms for each replica"); - MPI_Allreduce(&nper, &nminmax, 1, MPI_LMP_BIGINT, MPI_MAX, universe->uworld); - if (nminmax != nper) - error->universe_all(FLERR, "Fix group must have the same number of atoms for each replica"); + // clear assignment of atoms to the custom group on all ranks + + const int repgroup = group->find_or_create(imggroup); + const int repbit = group->bitmask[repgroup]; + group->assign(imggroup + " clear"); + + // create sorted list of the IDs of all fix group atoms on replica 0 + + bigint nper = 0; + std::vector taglist; + if (universe->iworld == 0) { + std::vector tagme; + for (int i = 0; i < nlocal; ++i) + if (mask[i] & groupbit) tagme.emplace_back(tag[i]); + const int ngroup = (int) tagme.size(); + std::vector recvcounts(nprocs, 0); + std::vector displs(nprocs, 0); + MPI_Allgather(&ngroup, 1, MPI_INT, recvcounts.data(), 1, MPI_INT, world); + for (int i = 1; i < nprocs; ++i) displs[i] = displs[i - 1] + recvcounts[i - 1]; + taglist.resize(displs[nprocs - 1] + recvcounts[nprocs - 1], 0); + MPI_Allgatherv(tagme.data(), ngroup, MPI_LMP_TAGINT, taglist.data(), recvcounts.data(), + displs.data(), MPI_LMP_TAGINT, world); + std::sort(taglist.begin(), taglist.end()); + nper = (bigint) taglist.size(); + } + MPI_Bcast(&nper, 1, MPI_LMP_BIGINT, 0, universe->uworld); // determine number of spheres to draw and check for overflow bigint numtotal = 0; - if (dflag) numtotal += nall; + if (dflag) numtotal += nper * universe->nworlds; if (aflag) numtotal += nper; if (numtotal >= MAXSMALLINT) error->universe_all(FLERR, "Too many graphics objects"); numobjs = (int) numtotal; - // create sorted map of atom-IDs + // broadcast ID list to all replicas and assign matching local atoms to the + // custom group. the custom group now contains the same atoms on all replicas, + // even if a dynamic fix group selects different atoms on different replicas. - const auto *const *const x = atom->x; - const auto *const tag = atom->tag; - const auto *const mask = atom->mask; - const auto *const type = atom->type; - const auto *const image = atom->image; - const auto nlocal = atom->nlocal; + taglist.resize(nper, 0); + MPI_Bcast(taglist.data(), (int) nper, MPI_LMP_TAGINT, 0, universe->uworld); + for (const auto id : taglist) { + const int i = atom->map(id); + if ((i >= 0) && (i < nlocal)) mask[i] |= repbit; + } + + // consistency check: all atoms in the ID list must exist on all replicas - std::vector recvcounts(nprocs, 0); - std::vector displs(nprocs, 0); - int ngroup = 0; - for (int i = 0; i < nlocal; ++i) - if (mask[i] & groupbit) ++ngroup; - MPI_Allgather(&ngroup, 1, MPI_INT, recvcounts.data(), 1, MPI_INT, world); - for (int i = 1; i < nprocs; ++i) displs[i] = displs[i - 1] + recvcounts[i - 1]; - - std::vector tagme; - std::vector taglist(nper, 0); - for (int i = 0; i < nlocal; ++i) - if (mask[i] & groupbit) tagme.emplace_back(tag[i]); - MPI_Allgatherv(tagme.data(), tagme.size(), MPI_LMP_TAGINT, taglist.data(), recvcounts.data(), - displs.data(), MPI_LMP_TAGINT, world); - std::sort(taglist.begin(), taglist.end()); + int missing = (group->count(repgroup) != nper) ? 1 : 0; + MPI_Allreduce(MPI_IN_PLACE, &missing, 1, MPI_INT, MPI_MAX, universe->uworld); + if (missing) + error->universe_all(FLERR, "Atoms in fix group on replica 0 must exist on all replicas"); // collect unwrapped positions and atom type data // for selected atoms sorted by ID on the root of each replica diff --git a/src/GRAPHICS/fix_graphics_replica.h b/src/GRAPHICS/fix_graphics_replica.h index 751a88e1961..0fd92dfe786 100644 --- a/src/GRAPHICS/fix_graphics_replica.h +++ b/src/GRAPHICS/fix_graphics_replica.h @@ -29,7 +29,7 @@ class FixGraphicsReplica : public Fix { FixGraphicsReplica(class LAMMPS *, int, char **); ~FixGraphicsReplica() override; int setmask() override; - void init() override; + void setup(int) override; void min_post_force(int) override; void end_of_step() override; @@ -41,6 +41,7 @@ class FixGraphicsReplica : public Fix { double dradius; double aradius; + std::string imggroup; int numobjs; int *imgobjs; double **imgparms; From 7f91ab1153b782567449d91a4e994cc1b704ca29 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Jul 2026 02:04:43 -0400 Subject: [PATCH 31/54] add PIMD example --- examples/GRAPHICS/README | 4 ++ examples/GRAPHICS/in.peptide-pimd | 70 +++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 examples/GRAPHICS/in.peptide-pimd diff --git a/examples/GRAPHICS/README b/examples/GRAPHICS/README index 8c305744747..a71032c6e75 100644 --- a/examples/GRAPHICS/README +++ b/examples/GRAPHICS/README @@ -28,6 +28,10 @@ Here is a list of the inputs and which graphics features they demonstrate overlay graphics from image without background https://youtube.com/shorts/Q6KBE08AG8c +- in.peptide-pimd: peptide with surrounding water molecules + visualize atoms from replica of a PIMD simulation + https://youtube.com/shorts/BoIUo0psKB4 + - in.rhodo-delauney: transmembrane protein where most atoms are not shown but rather a triangulated surface is shown. Also, the surface is truncated diff --git a/examples/GRAPHICS/in.peptide-pimd b/examples/GRAPHICS/in.peptide-pimd new file mode 100644 index 00000000000..84b8a6fde9d --- /dev/null +++ b/examples/GRAPHICS/in.peptide-pimd @@ -0,0 +1,70 @@ +# Visualize 5-mer peptide with solvation shell using PIMD + +# output dump image every this many steps +variable vizsteps index 100 +# run for this many steps +variable runsteps index 10000 + +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + +neighbor 2.0 bin +neigh_modify delay 2 every 1 + +timestep 0.05 + +thermo_style multi +thermo 1000 + +fix 1 all pimd/langevin method nmpimd ensemble npt integrator obabo thermostat PILE_L 1234 tau 1000.0 temp 275.0 iso 1.0 barostat BZP taup 1000.0 fixcom no + +# fix PIMD is incompatible with fix SHAKE +#fix 2 all shake 0.0001 10 1000 b 4 6 8 10 12 14 18 a 31 + +group peptide type <= 12 + +# recenter system so the peptide is in the center of the box for that we compute the center +# of mass of the peptide and the center of the box and displace atoms so that they will match +variable comx equal xcm(peptide,x) +variable comy equal xcm(peptide,y) +variable comz equal xcm(peptide,z) +variable midx equal 0.5*(xhi+xlo) +variable midy equal 0.5*(yhi+ylo) +variable midz equal 0.5*(zhi+zlo) +displace_atoms all move $(-v_comx+v_midx) $(-v_comy+v_midy) $(-v_comz+v_midz) +variable comx delete +variable comy delete +variable comz delete +variable midx delete +variable midy delete +variable midz delete + +# select atoms for visualization: peptide and water molecules within 2.5 angstrom +group viz dynamic peptide within 2.5 include molecule every ${vizsteps} + +# display atoms from other replica +fix rep viz graphics/replica ${vizsteps} display 0.4 + +# create visualization only on partition 1 +# we must color bonds by type instead of by atom color so that hiding +# atoms by making them transparent does not also hide part of the bond +partition yes 1 dump viz viz image ${vizsteps} pimd-*.ppm element element & + size 800 800 zoom 2.0 view 80 0 bond type 0.25 fix rep element 0 0 & + fsaa yes ssao yes 12384 0.4 shiny 0.1 box no 0.1 center s 0.65 0.45 0.5 & + +# set hydrogen atoms to be transparent, so we can see their fix graphics/replica representations +# the replica of the heavy atoms will all be inside their regular spheres to limit distractions +partition yes 1 dump_modify viz pad 5 boxcolor white backcolor darkgray backcolor2 silver & + element C C O H N C C C O H H S O H bcolor * darkslategray & + atrans 4 0.0 atrans 10 0.0 atrans 11 0.0 atrans 14 0.0 + +run ${runsteps} From d1d52ac786113b9d6e24db186b9f6bfb05668638 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Jul 2026 02:35:42 -0400 Subject: [PATCH 32/54] make compatible with STUBS --- src/GRAPHICS/fix_graphics_replica.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/GRAPHICS/fix_graphics_replica.cpp b/src/GRAPHICS/fix_graphics_replica.cpp index 91f754a8275..cafcea1c880 100644 --- a/src/GRAPHICS/fix_graphics_replica.cpp +++ b/src/GRAPHICS/fix_graphics_replica.cpp @@ -156,7 +156,7 @@ void FixGraphicsReplica::end_of_step() std::vector tagme; for (int i = 0; i < nlocal; ++i) if (mask[i] & groupbit) tagme.emplace_back(tag[i]); - const int ngroup = (int) tagme.size(); + int ngroup = (int) tagme.size(); std::vector recvcounts(nprocs, 0); std::vector displs(nprocs, 0); MPI_Allgather(&ngroup, 1, MPI_INT, recvcounts.data(), 1, MPI_INT, world); From 7727555f189a309d17cbfba3ad1a1d3c650ff971 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Jul 2026 11:43:50 -0400 Subject: [PATCH 33/54] make quat_external a class member and not a pointer that is borrowed from other classes instead of assigning a pointer, we now copy the data. --- src/GRANULAR/fix_pour.cpp | 2 +- src/create_atoms.cpp | 3 +-- src/fix_deposit.cpp | 2 +- src/molecule.cpp | 3 ++- src/molecule.h | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/GRANULAR/fix_pour.cpp b/src/GRANULAR/fix_pour.cpp index 3c269f47935..278967e8991 100644 --- a/src/GRANULAR/fix_pour.cpp +++ b/src/GRANULAR/fix_pour.cpp @@ -668,7 +668,7 @@ void FixPour::pre_exchange() atom->radius[n] = radtmp; atom->rmass[n] = 4.0 * MY_PI / 3.0 * radtmp * radtmp * radtmp * denstmp; } else { - onemols[imol]->quat_external = quat; + memcpy(onemols[imol]->quat_external, quat, 4 * sizeof(double)); atom->add_molecule_atom(onemols[imol], m, n, maxtag_all); } diff --git a/src/create_atoms.cpp b/src/create_atoms.cpp index 8e9d923e965..df3fe1b6214 100644 --- a/src/create_atoms.cpp +++ b/src/create_atoms.cpp @@ -1492,8 +1492,7 @@ void CreateAtoms::get_xmol(double *center) MathExtra::quat_to_mat(quatone, rotmat); // onemol->quat_external is used by atom->add_moleclue_atom() - - onemol->quat_external = quatone; + if (onemol->muflag) memcpy(onemol->quat_external, quatone, 4*sizeof(double)); int natoms = onemol->natoms; double xnew[3]; diff --git a/src/fix_deposit.cpp b/src/fix_deposit.cpp index a12a23fe56a..6742328c699 100644 --- a/src/fix_deposit.cpp +++ b/src/fix_deposit.cpp @@ -570,7 +570,7 @@ void FixDeposit::pre_exchange() atom->v[n][1] = vnew[1]; atom->v[n][2] = vnew[2]; if (mode == MOLECULE) { - onemols[imol]->quat_external = quat; + memcpy(onemols[imol]->quat_external,quat,4*sizeof(double)); atom->add_molecule_atom(onemols[imol],m,n,maxtag_all); } modify->create_attribute(n); diff --git a/src/molecule.cpp b/src/molecule.cpp index bf0566710ce..475c7848e0f 100644 --- a/src/molecule.cpp +++ b/src/molecule.cpp @@ -59,7 +59,7 @@ Molecule::Molecule(LAMMPS *lmp) : improper_atom4(nullptr), nspecial(nullptr), special(nullptr), shake_flag(nullptr), shake_atom(nullptr), shake_type(nullptr), avec_body(nullptr), ibodyparams(nullptr), dbodyparams(nullptr), fragmentmask(nullptr), dx(nullptr), dxcom(nullptr), dxbody(nullptr), - quat_external(nullptr), count(nullptr) + count(nullptr) { // parse args until reach unknown arg (next file) @@ -68,6 +68,7 @@ Molecule::Molecule(LAMMPS *lmp) : sizescale = 1.0; for (int i = 0; i < 4; i++) check_which_labels[i] = 0; json_format = 0; + quat_external[0] = quat_external[1] = quat_external[2] = quat_external[3] = 0.0; // initialize all fields to empty diff --git a/src/molecule.h b/src/molecule.h index 52205b01a1d..8430568f354 100644 --- a/src/molecule.h +++ b/src/molecule.h @@ -137,8 +137,8 @@ class Molecule : protected Pointers { double **dxbody; // displacement of each atom relative to COM // in body frame (diagonalized interia tensor) - double *quat_external; // orientation imposed by external class - // e.g. FixPour or CreateAtoms + double quat_external[4]; // orientation imposed by external class + // e.g. FixPour or CreateAtoms Molecule(class LAMMPS *); ~Molecule() override; From 319da3daf97c080702feb93af9551ff47865fdac Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Jul 2026 12:07:34 -0400 Subject: [PATCH 34/54] also broadcast the molecule orientation --- src/create_atoms.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/create_atoms.cpp b/src/create_atoms.cpp index df3fe1b6214..ed4191a93e2 100644 --- a/src/create_atoms.cpp +++ b/src/create_atoms.cpp @@ -880,6 +880,7 @@ void CreateAtoms::add_random() } else { if (comm->me == 0) get_xmol(xone); MPI_Bcast(&xmol[0][0], onemol->natoms * 3, MPI_DOUBLE, 0, world); + MPI_Bcast(onemol->quat_external, 4, MPI_DOUBLE, 0, world); for (int i = 0; i < nlocal; i++) { for (int j = 0; j < onemol->natoms; j++) { From 463a2cd53bc5b217efc67b247fe9d539f6f602bd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Jul 2026 12:07:42 -0400 Subject: [PATCH 35/54] apply clang-format --- src/molecule.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/molecule.h b/src/molecule.h index 8430568f354..d9e25e31555 100644 --- a/src/molecule.h +++ b/src/molecule.h @@ -40,7 +40,7 @@ class Molecule : protected Pointers { int ntypes, nmolecules, nfragments; int nbondtypes, nangletypes, ndihedraltypes, nimpropertypes; int nibody, ndbody; - int nlines,ntris; + int nlines, ntris; // max bond,angle,etc per atom @@ -79,12 +79,12 @@ class Molecule : protected Pointers { double *rmass; // mass of each atom double **mu; // dipole vector of each atom - int *molline; // molecule-ID of each line - int *typeline; // type of each line - double **lines; // line end points - int *moltri; // molecule-ID of each triangles - int *typetri; // type of each triangle - double **tris; // triangle corner points + int *molline; // molecule-ID of each line + int *typeline; // type of each line + double **lines; // line end points + int *moltri; // molecule-ID of each triangles + int *typetri; // type of each triangle + double **tris; // triangle corner points int *num_bond; // bonds, angles, dihedrals, impropers for each atom int **bond_type; @@ -155,7 +155,7 @@ class Molecule : protected Pointers { void check_attributes(); double memory_usage(); - void print(FILE *fp=stdout); + void print(FILE *fp = stdout); private: SafeFilePtr fp; From d8c06e1cf08be755ffcdcf429aac12416ae103c1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Jul 2026 13:22:38 -0400 Subject: [PATCH 36/54] must count allocated funcfl data only after a successful read --- src/MANYBODY/pair_eam.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MANYBODY/pair_eam.cpp b/src/MANYBODY/pair_eam.cpp index dcfa22a5891..9bb2e2ed6a1 100644 --- a/src/MANYBODY/pair_eam.cpp +++ b/src/MANYBODY/pair_eam.cpp @@ -504,10 +504,10 @@ void PairEAM::coeff_funcfl(int narg, char **arg) if (strcmp(arg[2],funcfl[ifuncfl].file) == 0) break; if (ifuncfl == nfuncfl) { - nfuncfl++; funcfl = (Funcfl *) - memory->srealloc(funcfl,nfuncfl*sizeof(Funcfl),"pair:funcfl"); + memory->srealloc(funcfl,(nfuncfl+1)*sizeof(Funcfl),"pair:funcfl"); read_file(arg[2]); + nfuncfl++; funcfl[ifuncfl].file = utils::strdup(arg[2]); } From 8f6d21400fea6e0439a7e5c966bec5ec99f9d20f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Jul 2026 13:23:22 -0400 Subject: [PATCH 37/54] delete allocated temporary storage if potential file read fails. --- src/MANYBODY/pair_eam.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/MANYBODY/pair_eam.cpp b/src/MANYBODY/pair_eam.cpp index 9bb2e2ed6a1..aceb20c737d 100644 --- a/src/MANYBODY/pair_eam.cpp +++ b/src/MANYBODY/pair_eam.cpp @@ -89,7 +89,7 @@ PairEAM::~PairEAM() if (allocated) { memory->destroy(setflag); memory->destroy(cutsq); - delete [] type2frho; + delete[] type2frho; type2frho = nullptr; memory->destroy(type2rhor); memory->destroy(type2z2r); @@ -98,7 +98,7 @@ PairEAM::~PairEAM() if (funcfl) { for (int i = 0; i < nfuncfl; i++) { - delete [] funcfl[i].file; + delete[] funcfl[i].file; memory->destroy(funcfl[i].frho); memory->destroy(funcfl[i].rhor); memory->destroy(funcfl[i].zr); @@ -706,6 +706,9 @@ void PairEAM::read_funcfl(char *filename) file->zr[j] *= sqrt_conv; } } catch (TokenizerException &e) { + memory->destroy(file->frho); + memory->destroy(file->rhor); + memory->destroy(file->zr); error->one(FLERR, e.what()); } } @@ -796,6 +799,10 @@ void PairEAM::read_setfl(char *filename) } } } catch (TokenizerException &e) { + memory->destroy(file->mass); + memory->destroy(file->frho); + memory->destroy(file->rhor); + memory->destroy(file->z2r); error->one(FLERR, e.what()); } } @@ -917,6 +924,10 @@ void PairEAM::read_fs(char *filename) } } } catch (TokenizerException &e) { + memory->destroy(file->mass); + memory->destroy(file->frho); + memory->destroy(file->rhor); + memory->destroy(file->z2r); error->one(FLERR, e.what()); } } From b674547b3ccf46a24c8f655fa7c65dadee08164e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 Jul 2026 19:05:20 -0400 Subject: [PATCH 38/54] fix off-by-one issue --- src/MANYBODY/pair_eam.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MANYBODY/pair_eam.cpp b/src/MANYBODY/pair_eam.cpp index aceb20c737d..b4336b290de 100644 --- a/src/MANYBODY/pair_eam.cpp +++ b/src/MANYBODY/pair_eam.cpp @@ -662,7 +662,7 @@ void PairEAM::read_file(char *filename) void PairEAM::read_funcfl(char *filename) { - Funcfl *file = &funcfl[nfuncfl-1]; + Funcfl *file = &funcfl[nfuncfl]; // read potential file if (comm->me == 0) { From 71ba4557e35a31ed89eccd09a77072d856551991 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 25 Jul 2026 07:17:46 -0400 Subject: [PATCH 39/54] using std::string::c_str() is no longer needed --- src/REACTION/fix_bond_react.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/REACTION/fix_bond_react.cpp b/src/REACTION/fix_bond_react.cpp index f9aa48d9e55..b615a00903e 100644 --- a/src/REACTION/fix_bond_react.cpp +++ b/src/REACTION/fix_bond_react.cpp @@ -716,7 +716,7 @@ void FixBondReact::post_constructor() // create master_group if not already existing // NOTE: limit_tags and react_tags automaticaly intitialized to zero (unless read from restart) - group->find_or_create(master_group.c_str()); + group->find_or_create(master_group); std::string cmd = fmt::format("{} dynamic all property limit_tags",master_group); group->assign(cmd); @@ -737,7 +737,7 @@ void FixBondReact::post_constructor() std::string exclude_PARENT_group = exclude_group; exclude_group = exclude_PARENT_group + "_REACT"; - group->find_or_create(exclude_group.c_str()); + group->find_or_create(exclude_group); if (groupid == -1) cmd = fmt::format("{} dynamic all property statted_tags", exclude_group); else From 6e04a7234dab22aa095a714614c1379ba5c28701 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 25 Jul 2026 14:02:20 -0400 Subject: [PATCH 40/54] ML-IAP: skip pairs with a non-local i atom in the unified force update With "pair_style mliap unified 1" the pair style requests a neighbor list that includes neighbors of ghost atoms, so the pair list also contains entries where i is a ghost. update_pair_forces() applied forces and tallied the virial for those entries as well, which counts interactions that the owning atoms already account for. Commit 61993d1643 dropped the guard against this from both update_pair_energy() and update_pair_forces(). It was restored for the energy in commit 1c40cd1c22, but not for forces and virial, leaving the energy correct while forces and pressure were not: for the LJ melt test the initial pressure came out as -100.6 instead of -3.78. Restore the guard in the plain and the KOKKOS version, which makes the ghost neighbor list tests in TestMliapPyUnified pass again. This is not a backport, the same defect is present in the development branch. --- src/KOKKOS/mliap_unified_kokkos.cpp | 3 +++ src/ML-IAP/mliap_unified.cpp | 20 +++++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/KOKKOS/mliap_unified_kokkos.cpp b/src/KOKKOS/mliap_unified_kokkos.cpp index 802a111bc87..a75e1ea3e2f 100644 --- a/src/KOKKOS/mliap_unified_kokkos.cpp +++ b/src/KOKKOS/mliap_unified_kokkos.cpp @@ -296,6 +296,7 @@ void LAMMPS_NS::update_pair_forces(MLIAPDataKokkosDevice *data, double *fij) auto j_atoms = data->jatoms; auto vflag = data->vflag; auto rij = data->rij; + const auto nlocal = data->nlocal; int vflag_global = data->pairmliap->vflag_global; int vflag_atom = data->pairmliap->vflag_atom; if (vflag_atom) { @@ -312,6 +313,7 @@ void LAMMPS_NS::update_pair_forces(MLIAPDataKokkosDevice *data, double *fij) int i = pair_i[ii]; int j = j_atoms[ii]; // must not count any contribution where i is not a local atom + if (i < nlocal) { Kokkos::atomic_add(&f[i*3+0], fij[ii3+0]); Kokkos::atomic_add(&f[i*3+1], fij[ii3+1]); Kokkos::atomic_add(&f[i*3+2], fij[ii3+2]); @@ -348,6 +350,7 @@ void LAMMPS_NS::update_pair_forces(MLIAPDataKokkosDevice *data, double *fij) Kokkos::atomic_add(&d_vatom(j,3), 0.5*v[3]); Kokkos::atomic_add(&d_vatom(j,4), 0.5*v[4]); Kokkos::atomic_add(&d_vatom(j,5), 0.5*v[5]); + } } } }); diff --git a/src/ML-IAP/mliap_unified.cpp b/src/ML-IAP/mliap_unified.cpp index ae6455f3a9e..131b92e0961 100644 --- a/src/ML-IAP/mliap_unified.cpp +++ b/src/ML-IAP/mliap_unified.cpp @@ -263,22 +263,24 @@ void LAMMPS_NS::update_pair_energy(MLIAPData *data, double *eij) void LAMMPS_NS::update_pair_forces(MLIAPData *data, double *fij) { - //Bugfix: need to account for Null atoms in local atoms - //const auto nlistatoms = data->nlistatoms; double **f = data->f; for (int ii = 0; ii < data->npairs; ii++) { int ii3 = ii * 3; int i = data->pair_i[ii]; int j = data->jatoms[ii]; - f[i][0] += fij[ii3]; - f[i][1] += fij[ii3 + 1]; - f[i][2] += fij[ii3 + 2]; - f[j][0] -= fij[ii3]; - f[j][1] -= fij[ii3 + 1]; - f[j][2] -= fij[ii3 + 2]; + // must not count any contribution where i is not a local atom - if (data->vflag) data->pairmliap->v_tally(i, j, &fij[ii3], data->rij[ii]); + if (i < data->nlocal) { + f[i][0] += fij[ii3]; + f[i][1] += fij[ii3 + 1]; + f[i][2] += fij[ii3 + 2]; + f[j][0] -= fij[ii3]; + f[j][1] -= fij[ii3 + 1]; + f[j][2] -= fij[ii3 + 2]; + + if (data->vflag) data->pairmliap->v_tally(i, j, &fij[ii3], data->rij[ii]); + } } } From bb4dd708f7d8e9a31b8dec5405426b93b9ec1645 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 25 Jul 2026 20:33:26 -0400 Subject: [PATCH 41/54] document the STLReader class --- doc/doxygen/Doxyfile.in | 2 + doc/src/Developer_utils.rst | 24 +++++++++++- src/stl_reader.cpp | 60 +++++++++++++++++++++++------- src/stl_reader.h | 73 ++++++++++++++++++++++++++++++------- 4 files changed, 131 insertions(+), 28 deletions(-) diff --git a/doc/doxygen/Doxyfile.in b/doc/doxygen/Doxyfile.in index dacbb088d4c..4046631e297 100644 --- a/doc/doxygen/Doxyfile.in +++ b/doc/doxygen/Doxyfile.in @@ -431,6 +431,8 @@ INPUT = @LAMMPS_SOURCE_DIR@/utils.cpp \ @LAMMPS_SOURCE_DIR@/text_file_reader.h \ @LAMMPS_SOURCE_DIR@/potential_file_reader.cpp \ @LAMMPS_SOURCE_DIR@/potential_file_reader.h \ + @LAMMPS_SOURCE_DIR@/stl_reader.cpp \ + @LAMMPS_SOURCE_DIR@/stl_reader.h \ @LAMMPS_SOURCE_DIR@/label_map.cpp \ @LAMMPS_SOURCE_DIR@/label_map.h \ @LAMMPS_SOURCE_DIR@/my_page.cpp \ diff --git a/doc/src/Developer_utils.rst b/doc/src/Developer_utils.rst index 0ce2bd31f62..9931a2b0dcc 100644 --- a/doc/src/Developer_utils.rst +++ b/doc/src/Developer_utils.rst @@ -532,7 +532,8 @@ run on MPI rank 0 only, will use the ` function to look up and open the file, and will call the :cpp:class:`LAMMPS_NS::Error` class in case of failures to read or to convert numbers, so that LAMMPS will be -aborted. +aborted. A third class, :cpp:class:`STLReader `, +is specialized on reading triangle mesh data from files in STL format. .. code-block:: c++ :caption: Use of PotentialFileReader class in pair style coul/streitz @@ -592,6 +593,27 @@ A file that would be parsed by the reader code fragment looks like this: ---------- +The :cpp:class:`STLReader ` class reads triangle +meshes from files in STL format, as used, for example, by the +:doc:`create_atoms mesh ` command or the :doc:`fix +surface/global ` command. Files in the plain text +variant of the format are parsed with the help of the +:cpp:class:`TextFileReader ` and +:cpp:class:`ValueTokenizer ` classes, while +files in the binary variant are read directly. Unlike the other file +reader classes, the mesh data is not returned line by line, but the +entire file is read and its triangles are returned in one call. + +.. doxygenclass:: LAMMPS_NS::STLReader + :project: progguide + :members: + +.. doxygenclass:: LAMMPS_NS::STLReaderException + :project: progguide + :members: + +---------- + Type label support ------------------ diff --git a/src/stl_reader.cpp b/src/stl_reader.cpp index 65ee9609d29..1bad6d4cb71 100644 --- a/src/stl_reader.cpp +++ b/src/stl_reader.cpp @@ -31,7 +31,14 @@ using namespace LAMMPS_NS; static constexpr long STL_BIN_HEADER = 80 + sizeof(uint32_t); // 84 static constexpr long STL_BIN_PER_TRI = 12 * sizeof(float) + sizeof(uint16_t); // 50 -/* ---------------------------------------------------------------------- */ +/** Create an STL reader class instance + * + * A class instance is only required for the STLReader::read_file() member + * function. It owns the storage for the triangle vertices that this + * function returns, so the instance must be kept until the data has been + * copied or is no longer needed. + * + * \param lmp Pointer to LAMMPS instance */ STLReader::STLReader(LAMMPS *lmp) : Pointers(lmp) { @@ -39,18 +46,32 @@ STLReader::STLReader(LAMMPS *lmp) : Pointers(lmp) tris = nullptr; } -/* ---------------------------------------------------------------------- */ +/** Free the storage for the triangle vertices */ STLReader::~STLReader() { memory->destroy(tris); } -/* ---------------------------------------------------------------------- - read triangles on rank 0, broadcast vertex coords to all ranks - caller_tris is filled with 9 doubles per triangle (3 vertices, no normal) - allow for 9*ntris to exceed the max allowed size of a single MPI_Bcast() -------------------------------------------------------------------------- */ +/** Read an STL file on MPI rank 0 and communicate the vertices to all ranks + * + * The file is read and parsed on MPI rank 0 only and then the vertex + * coordinates are broadcast to all MPI processes; the facet normals are + * discarded. The storage for the vertices is allocated and owned by the + * class instance and thus freed by its destructor. Reading an empty or + * unreadable file aborts LAMMPS with an error message. + * +\verbatim embed:rst + +*See also* + :cpp:func:`STLReader::parse() ` + +\endverbatim + * + * \param filename Name of the STL file to be read + * \param caller_tris Reference to a pointer that is set to the storage + * with 9 coordinates (3 vertices) per triangle + * \return Number of triangles read */ int STLReader::read_file(const char *filename, double **&caller_tris) { @@ -81,6 +102,8 @@ int STLReader::read_file(const char *filename, double **&caller_tris) if (ntris == 0) error->all(FLERR, "STL file {} has no triangles", filename); if (me) memory->create(tris, ntris, 9, "stl_reader:tris"); + // allow for 9*ntris to exceed the max allowed size of a single MPI_Bcast() + bigint ntotal = (bigint) ntris * 9; if (ntotal < MAXSMALLINT) MPI_Bcast(&tris[0][0], 9*ntris, MPI_DOUBLE, 0, world); @@ -98,12 +121,23 @@ int STLReader::read_file(const char *filename, double **&caller_tris) return ntris; } -/* ---------------------------------------------------------------------- - stand-alone STL parser: auto-detect ASCII vs binary and return triangles - a binary STL file is exactly STL_BIN_HEADER + STL_BIN_PER_TRI*ntri bytes, - which is the robust way to distinguish it from an ASCII file (whose header - may legally also start with the word "solid") -------------------------------------------------------------------------- */ +/** Read and parse an STL file and return its triangles + * + * This function is independent from any LAMMPS instance and does not + * communicate, so it can be called from anywhere. It detects whether the + * file is in text or binary format from its contents: a binary STL file has + * a size of exactly 84 + 50*N bytes for N triangles, which is a more robust + * test than looking for the word "solid" at the beginning of the file, since + * the header of a binary file may legally start with that word, too. + * + * Any error while opening, reading, or parsing the file is reported by + * throwing an STLReaderException with a suitable message. Files with zero + * triangles are *not* an error and result in an empty vector. + * + * \param filename Name of the STL file to be read + * \param title_out Optional pointer to a string that is set to the name of + * the mesh stored in the file (may be an empty string) + * \return Vector with the triangles read from the file */ std::vector STLReader::parse(const std::string &filename, std::string *title_out) { diff --git a/src/stl_reader.h b/src/stl_reader.h index 65ad4b1ba96..deb5c96944d 100644 --- a/src/stl_reader.h +++ b/src/stl_reader.h @@ -23,7 +23,7 @@ namespace LAMMPS_NS { -// exception thrown for malformed or unreadable STL files +/** Exception thrown by the STLReader class for malformed or unreadable files */ class STLReaderException : public std::exception { std::string message; @@ -33,30 +33,75 @@ class STLReaderException : public std::exception { [[nodiscard]] const char *what() const noexcept override { return message.c_str(); } }; +/** Class for reading triangle meshes from files in STL format + +\verbatim embed:rst + +A file in `STL (stereolithography) format +`_ stores a triangle +mesh as a flat list of triangles. Each triangle consists of an outward +facing normal vector and the coordinates of its three vertices. There +are two variants of the format: a plain text ("ASCII") version and a +binary version. This class transparently supports both: the format is +detected from the file contents and *not* from the file name. + +Most functionality is in the static :cpp:func:`STLReader::parse() +` function, which is independent from any +LAMMPS instance and thus can also be called from code that has no access +to one. It reads and parses the entire file and returns the triangles +as a vector of :cpp:struct:`STLReader::Triangle +` data structures. All error conditions +are reported by throwing an :cpp:class:`STLReaderException +`, so the calling code decides how errors +are handled. Since the file is read in its entirety by every MPI +process calling it, this is best suited for small to medium sized +meshes. + +.. code-block:: c++ + :caption: Use of the STLReader class in the create_atoms command + + #include "stl_reader.h" + + std::vector triangles; + try { + std::string title; + triangles = STLReader::parse(filename, &title); + if (comm->me == 0) + utils::logmesg(lmp, "Reading STL object {} with {} triangles from file {}\n", + title.empty() ? "(unnamed)" : title, triangles.size(), filename); + } catch (std::exception &e) { + error->all(FLERR, Error::NOLASTLINE, "{}", e.what()); + } + + for (const auto &tri : triangles) { + // process tri.normal[3] and tri.vert[3][3] + } + +The :cpp:func:`STLReader::read_file() ` +member function is an alternative for the case where the mesh should be +read on MPI rank 0 only and then communicated to all MPI processes. It +requires a class instance and thus a LAMMPS instance, aborts LAMMPS with +an error message when the file cannot be read, and stores the vertices in +an array that is managed by the class instance. + +\endverbatim +*/ + class STLReader : protected Pointers { public: - // a single STL triangle: outward facet normal + 3 vertices (x,y,z each) + /** Storage for a single triangle of an STL mesh */ struct Triangle { - double normal[3]; - double vert[3][3]; + double normal[3]; //!< outward facing normal vector of the facet + double vert[3][3]; //!< x-, y-, and z-coordinates of the 3 vertices }; STLReader(class LAMMPS *); ~STLReader() override; - // read triangle vertices from an STL file on rank 0 and broadcast to all ranks - // caller_tris is filled with 9 doubles per triangle (3 vertices, normal omitted) - // returns the number of triangles. Used by fix surface/global. - int read_file(const char *filename, double **&caller_tris); - // stand-alone parser (no MPI, no other LAMMPS state): auto-detects ASCII vs - // binary STL format and returns the list of triangles. Throws an - // STLReaderException on any malformed or unreadable input. This routine is - // covered by the unit tests and is shared by all STL consumers in LAMMPS. - - static std::vector parse(const std::string &filename, std::string *title = nullptr); + static std::vector parse(const std::string &filename, std::string *title_out = nullptr); private: static std::vector parse_text(const std::string &filename, std::string &title); From e2e3fa8a7313adb2e5ce88cc9d8132d86add1d81 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 26 Jul 2026 03:50:57 -0400 Subject: [PATCH 42/54] drop or fix broken links --- doc/src/Bibliography.rst | 2 +- doc/src/Howto_viz.rst | 2 +- doc/src/create_atoms.rst | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/Bibliography.rst b/doc/src/Bibliography.rst index 221a613e28d..c2e31d620e8 100644 --- a/doc/src/Bibliography.rst +++ b/doc/src/Bibliography.rst @@ -1210,7 +1210,7 @@ Bibliography S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 6141 **(Roberts)** - R. Roberts (2019) "Evenly Distributing Points in a Triangle." Extreme Learning. ``_ + R. Roberts (2019) "Evenly Distributing Points in a Triangle." Extreme Learning. **(Rohart)** Rohart and Thiaville, Physical Review B, 88(18), 184422. (2013). diff --git a/doc/src/Howto_viz.rst b/doc/src/Howto_viz.rst index d3770abf933..ad0cb65fb06 100644 --- a/doc/src/Howto_viz.rst +++ b/doc/src/Howto_viz.rst @@ -471,7 +471,7 @@ Play the movie: Load the animated GIF or MP4 movie file #. Use the freely available `VideoLAN media player (vlc) - `_ or `FFMpeg player tool (ffplay) + `_ or `FFMpeg player tool (ffplay) `_ to view a movie. Both are available for multiple operating systems and support a large diff --git a/doc/src/create_atoms.rst b/doc/src/create_atoms.rst index 2ccf82ba5b4..f2913639aea 100644 --- a/doc/src/create_atoms.rst +++ b/doc/src/create_atoms.rst @@ -660,4 +660,4 @@ checked, *maxtry* = 10, and *units* = lattice. .. _Roberts2019: -**(Roberts)** R. Roberts (2019) "Evenly Distributing Points in a Triangle." Extreme Learning. ``_ +**(Roberts)** R. Roberts (2019) "Evenly Distributing Points in a Triangle." Extreme Learning. From 8a3266e89a0c6510756c16a82c2927921cb39962 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 26 Jul 2026 04:09:46 -0400 Subject: [PATCH 43/54] update URLs to cppreference.com --- doc/src/Developer_code_design.rst | 18 +++++++++--------- doc/src/Developer_notes.rst | 2 +- doc/src/Developer_platform.rst | 4 ++-- doc/src/Modify_requirements.rst | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/doc/src/Developer_code_design.rst b/doc/src/Developer_code_design.rst index 04ca8e7ad9e..38835efbe17 100644 --- a/doc/src/Developer_code_design.rst +++ b/doc/src/Developer_code_design.rst @@ -278,10 +278,10 @@ I/O and output formatting C-style stdio versus C++ style iostreams ======================================== -LAMMPS uses the `stdio ` +LAMMPS uses the `stdio ` library of the standard C library for reading from and writing to files and console instead of C++ `iostreams -`_. This is mainly motivated +`_. This is mainly motivated by better performance, better control over formatting, and less effort to achieve specific formatting. @@ -295,9 +295,9 @@ Furthermore, output should generally only be done by MPI rank 0 function `. We strongly discourage the use of `stringstreams -`_ because +`_ because the bundled `{fmt} library `_ or the `C++ format -library `_ (for +library `_ (for C++20 and later) and the customized tokenizer classes provide the same functionality in a cleaner way with better performance. This also helps maintain a consistent programming syntax with code from many different @@ -310,7 +310,7 @@ The LAMMPS source code currently includes a slightly modified copy of the `{fmt} library `_, which is preferred over formatting with the "printf()" family of functions. When compiling for C++20 and later we switch to using the `C++ format library -`_. The namespace +`_. The namespace prefix currently remains ``fmt::`` through a small wrapper. In the future, this will be switched to ``std::`` when LAMMPS requires the C++20 standard as the minimum C++ standard. Thus only functionality @@ -318,7 +318,7 @@ compatible with the C++ format library for C++20 is accepted. Using ``std::format`` requires a fully C++20 compatible compiler (e.g. GCC 13 and later, Clang 14 and later, or MSVC 16.10 and later) and we `use the __cpp_lib_format feature test macro -`_ to confirm +`_ to confirm the availability of ``std::format``. The primary reason for this choice is that it allows a typesafe default @@ -341,7 +341,7 @@ choose the default format based on the data type of the argument. Otherwise, the :cpp:func:`utils::print() ` function may be used instead of ``printf()`` or ``fprintf()``. The equivalent `std::print() function -`_ will become +`_ will become available in C++ 23. In addition, several LAMMPS output functions, that originally accepted a single string as argument have been overloaded to accept a format string with optional arguments as well (e.g., @@ -413,11 +413,11 @@ first will be the value shown and the second the minimum width. For more details and examples, please consult the `{fmt} syntax documentation `_ website or the `corresponding C++ syntax reference -`_. Since +`_. Since we plan to eventually transition from {fmt} to using ``std::format()`` of the C++ standard library, it is advisable to avoid using any extensions beyond what the `C++20 standard offers -`_. +`_. JSON format input and output ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/doc/src/Developer_notes.rst b/doc/src/Developer_notes.rst index 6da4fd7395a..c6f80d9b11e 100644 --- a/doc/src/Developer_notes.rst +++ b/doc/src/Developer_notes.rst @@ -291,7 +291,7 @@ with a format string using '{}' placeholders and followed by a variable number of arguments, one for each placeholder. This format string and the arguments are then handed for formatting to the `{fmt} library `_ (which is bundled with LAMMPS) or the `C++ format -library `_ (for +library `_ (for C++20 and later) and thus allow processing similar to the "format()" functionality in Python. diff --git a/doc/src/Developer_platform.rst b/doc/src/Developer_platform.rst index f004be2b306..a3feeaaaf4c 100644 --- a/doc/src/Developer_platform.rst +++ b/doc/src/Developer_platform.rst @@ -51,12 +51,12 @@ File and path functions and global constants Since we are requiring C++17 to compile LAMMPS, you can also make use of the functionality of the `C++ filesystem library -`_. The following +`_. The following functions are in part convenience functions or emulate the behavior of similar Python functions or Unix shell commands. Please note that the you need to use the ``string()`` member function of the `std::filesystem::path class -`_ to get access +`_ to get access to the path as a C++ string class instance. .. doxygenvariable:: filepathsep diff --git a/doc/src/Modify_requirements.rst b/doc/src/Modify_requirements.rst index 2c257f7528c..7f3f30c2e68 100644 --- a/doc/src/Modify_requirements.rst +++ b/doc/src/Modify_requirements.rst @@ -321,11 +321,11 @@ The new policy encourages more specific error messages that ideally indicate the cause directly, and requiring no further lookup. This is aided by either the `{fmt} library `_ or the `C++ format library -`_ (for C++20 +`_ (for C++20 and later) enabling :cpp:class:`LAMMPS_NS::Error` class methods that take a variable number of arguments and an error text that will be treated like a `C++ format string -`_. Error +`_. Error messages should still preferably be kept to a single line or two lines at most. From 073acb06caf063dcc63952979c610c934d5172b5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 26 Jul 2026 04:34:06 -0400 Subject: [PATCH 44/54] make citation entries consistent to help updating the bibliography file --- doc/src/Howto_apip.rst | 18 +++++++++--------- doc/src/Howto_bioFF.rst | 2 +- doc/src/compute_group_group.rst | 2 +- doc/src/fix_lambda_la_csp_apip.rst | 10 +++++----- doc/src/fix_nvt_sllod.rst | 2 +- doc/src/pair_born.rst | 2 +- doc/src/pair_pace_apip.rst | 4 ++-- doc/src/pair_reaxff.rst | 2 +- 8 files changed, 21 insertions(+), 21 deletions(-) diff --git a/doc/src/Howto_apip.rst b/doc/src/Howto_apip.rst index 674620e0191..450c7b84a6a 100644 --- a/doc/src/Howto_apip.rst +++ b/doc/src/Howto_apip.rst @@ -2,8 +2,8 @@ Adaptive-precision interatomic potentials (APIP) ================================================ The :ref:`PKG-APIP ` enables use of adaptive-precision potentials -as described in :ref:`(Immel2025) ` and -:ref:`(Immel2026) `. +as described in :ref:`(Immel) ` and +:ref:`(Immel2) `. In the context of this package, precision refers to the accuracy of an interatomic potential. @@ -30,7 +30,7 @@ kept constant as explained below. The potential energy :math:`E_i` of an atom :math:`i` described by an adaptive-precision -interatomic potential is given by :ref:`(Immel2025) ` +interatomic potential is given by :ref:`(Immel) ` .. math:: @@ -68,12 +68,12 @@ can be dynamically calculated during a simulation. There are two ways to calculate dynamic switching parameters. -1. according to :ref:`(Immel2026) ` with a differentiable +1. according to :ref:`(Immel2) ` with a differentiable switching parameter that results in a conservative potential. Energy and momentum are (in the absence of external forces) conserved by design. -2. according to :ref:`(Immel2025) ` with a non-differentiable +2. according to :ref:`(Immel) ` with a non-differentiable switching parameter. In this case, the implementation can be optimized for performance by using the switching parameters of the previous timestep. Thereby, one can perform most of the switching-parameter calculation within @@ -130,8 +130,8 @@ Example .. note:: How to select the values of the parameters of an adaptive-precision - interatomic potential is discussed in detail in :ref:`(Immel2025) ` - and :ref:`(Immel2026) `. + interatomic potential is discussed in detail in :ref:`(Immel) ` + and :ref:`(Immel2) `. .. tabs:: @@ -298,8 +298,8 @@ of new adaptive-precision potentials. .. _Immel2025_1: -**(Immel2025)** Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025) +**(Immel)** Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025) .. _Immel2026_2: -**(Immel2026)** Immel, Drautz and Sutmann, arXiv:2512.07693 +**(Immel2)** Immel, Drautz and Sutmann, arXiv:2512.07693 diff --git a/doc/src/Howto_bioFF.rst b/doc/src/Howto_bioFF.rst index 87795a6f2d6..81ef6ac0f76 100644 --- a/doc/src/Howto_bioFF.rst +++ b/doc/src/Howto_bioFF.rst @@ -358,7 +358,7 @@ compatible with a subset of OPLS interactions. .. _howto-MacKerell: -**(MacKerell)** MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field, Fischer, Gao, Guo, Ha, et al (1998). J Phys Chem, 102, 3586 . https://doi.org/10.1021/jp973084f +**(MacKerell)** MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field, Fischer, Gao, Guo, Ha, et al (1998). J Phys Chem B, 102, 3586. https://doi.org/10.1021/jp973084f .. _howto-Cornell: diff --git a/doc/src/compute_group_group.rst b/doc/src/compute_group_group.rst index b4eccf959f2..facc8fecd33 100644 --- a/doc/src/compute_group_group.rst +++ b/doc/src/compute_group_group.rst @@ -173,4 +173,4 @@ molecule = off. .. _Bogusz: -Bogusz et al, J Chem Phys, 108, 7070 (1998) +**(Bogusz)** Bogusz et al, J Chem Phys, 108, 7070 (1998) diff --git a/doc/src/fix_lambda_la_csp_apip.rst b/doc/src/fix_lambda_la_csp_apip.rst index ee7a541f8a8..10541c0f78b 100644 --- a/doc/src/fix_lambda_la_csp_apip.rst +++ b/doc/src/fix_lambda_la_csp_apip.rst @@ -51,7 +51,7 @@ Description .. versionadded:: 30Mar2026 The potential energy :math:`E_i` of an atom :math:`i` according to an -adaptive-precision potential is given by :ref:`(Immel2025) ` +adaptive-precision potential is given by :ref:`(Immel) ` .. math:: @@ -64,14 +64,14 @@ precise interatomic potential and :math:`\lambda_i\in[0,1]` is the switching parameter that decides which potential energy is used. This fix calculates the switching parameter :math:`\lambda_i` based on -local averaging of a descriptor according to :ref:`(Immel2026) +local averaging of a descriptor according to :ref:`(Immel2) ` and parts of the conservatively calculated force as will be discussed later. The descriptor is averaged within the cutoff radius provided as *cut_hi*. Per default, a differentiable version of the centro-symmetry parameter (CSP) is used as descriptor. This differentiable version is described in -detail in :ref:`(Immel2026) `. The usage of a +detail in :ref:`(Immel2) `. The usage of a differentiable CSP results in a conservative potential, that conserves (in the absence of external forces) energy and momentum by design. The force :math:`\pmb{F}_i=-\nabla_i\sum_kE_k` following from the @@ -191,11 +191,11 @@ Default .. _Immel2025_8: -**(Immel2025)** Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025) +**(Immel)** Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025) .. _Immel2026_1: -**(Immel2026)** Immel, Drautz and Sutmann, arXiv:2512.07693 +**(Immel2)** Immel, Drautz and Sutmann, arXiv:2512.07693 .. _Kelchner_3: diff --git a/doc/src/fix_nvt_sllod.rst b/doc/src/fix_nvt_sllod.rst index d0e97dc3f19..1e867731b7a 100644 --- a/doc/src/fix_nvt_sllod.rst +++ b/doc/src/fix_nvt_sllod.rst @@ -324,7 +324,7 @@ Cambridge University Press, (2017) https://doi.org/10.1017/9781139017848. .. _Tuckerman: -**(Tuckerman et al.)** Tuckerman, Mundy, Balasubramanian, and Klein, J Chem Phys 106, 5615 (1997). +**(Tuckerman2)** Tuckerman, Mundy, Balasubramanian, and Klein, J Chem Phys 106, 5615 (1997). .. _Edwards: diff --git a/doc/src/pair_born.rst b/doc/src/pair_born.rst index 9d5d023d4b9..28b91bc4cc6 100644 --- a/doc/src/pair_born.rst +++ b/doc/src/pair_born.rst @@ -216,5 +216,5 @@ none .. _FumiTosi: -Fumi and Tosi, J Phys Chem Solids, 25, 31 (1964), +**(FumiTosi)** Fumi and Tosi, J Phys Chem Solids, 25, 31 (1964), Fumi and Tosi, J Phys Chem Solids, 25, 45 (1964). diff --git a/doc/src/pair_pace_apip.rst b/doc/src/pair_pace_apip.rst index 0b1e3c8bbd3..826d7fd3feb 100644 --- a/doc/src/pair_pace_apip.rst +++ b/doc/src/pair_pace_apip.rst @@ -57,7 +57,7 @@ this paper :ref:`(Lysogorskiy21) `. The potential energy :math:`E_i` of an atom :math:`i` of an adaptive-precision interatomic potential (APIP) according to -:ref:`(Immel25) ` is given by +:ref:`(Immel) ` is given by .. math:: @@ -144,4 +144,4 @@ See :doc:`pair_style pace `. .. _Immel2025_7: -**(Immel25)** Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025) +**(Immel)** Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025) diff --git a/doc/src/pair_reaxff.rst b/doc/src/pair_reaxff.rst index 45532bc2a6c..15fcb0cbc6d 100644 --- a/doc/src/pair_reaxff.rst +++ b/doc/src/pair_reaxff.rst @@ -419,7 +419,7 @@ Journal of Physical Chemistry A, 112, 1040-1053 (2008). .. _Aktulga: -(Aktulga) Aktulga, Fogarty, Pandit, Grama, Parallel Computing, 38, +**(Aktulga)** Aktulga, Fogarty, Pandit, Grama, Parallel Computing, 38, 245-259 (2012). .. _Liu_2011: From b191cc69672faa3cc19b25cda8f14f4aeef2634a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 26 Jul 2026 05:38:33 -0400 Subject: [PATCH 45/54] consolidate bibliography references and update Bibliography.rst --- doc/src/Bibliography.rst | 919 +++++++++++++++++---------- doc/src/Howto_bioFF.rst | 2 +- doc/src/Howto_bpm.rst | 4 +- doc/src/Howto_kappa.rst | 2 +- doc/src/Howto_ldd.rst | 8 +- doc/src/Howto_tip5p.rst | 4 +- doc/src/bond_bpm_peri.rst | 6 +- doc/src/bond_bpm_rotational.rst | 10 +- doc/src/bond_bpm_spring.rst | 4 +- doc/src/bond_bpm_spring_plastic.rst | 4 +- doc/src/bond_oxdna.rst | 4 +- doc/src/compute_pace.rst | 14 +- doc/src/compute_sna_atom.rst | 10 +- doc/src/fix_box_relax.rst | 4 +- doc/src/fix_drude_transform.rst | 4 +- doc/src/fix_ehex.rst | 4 +- doc/src/fix_ffl.rst | 8 +- doc/src/fix_msst.rst | 6 +- doc/src/fix_npt_cauchy.rst | 2 +- doc/src/fix_nvt_sllod.rst | 8 +- doc/src/fix_nvt_sllod_eff.rst | 2 +- doc/src/fix_pimd.rst | 14 +- doc/src/fix_qbmsst.rst | 4 +- doc/src/fix_qeq.rst | 16 +- doc/src/fix_qeq_comb.rst | 12 +- doc/src/fix_reaxff_species.rst | 4 +- doc/src/fix_rheo.rst | 4 +- doc/src/fix_rigid.rst | 6 +- doc/src/fix_sgcmc.rst | 16 +- doc/src/fix_shardlow.rst | 2 +- doc/src/fix_temp_csvr.rst | 4 +- doc/src/fix_thermal_conductivity.rst | 2 +- doc/src/fix_ttm.rst | 4 +- doc/src/fix_viscosity.rst | 2 +- doc/src/kspace_modify.rst | 8 +- doc/src/kspace_style.rst | 18 +- doc/src/neb.rst | 14 +- doc/src/pair_buck6d_coul_gauss.rst | 4 +- doc/src/pair_dipole.rst | 4 +- doc/src/pair_e3b.rst | 10 +- doc/src/pair_eim.rst | 4 +- doc/src/pair_gran.rst | 12 +- doc/src/pair_granular.rst | 2 +- doc/src/pair_hbond_dreiding.rst | 4 +- doc/src/pair_lj_cubic.rst | 4 +- doc/src/pair_local_density.rst | 4 +- doc/src/pair_meam.rst | 4 +- doc/src/pair_meam_spline.rst | 4 +- doc/src/pair_mesodpd.rst | 16 +- doc/src/pair_mliap.rst | 2 +- doc/src/pair_momb.rst | 4 +- doc/src/pair_oxrna2.rst | 6 +- doc/src/pair_peri.rst | 6 +- doc/src/pair_polymorphic.rst | 4 +- doc/src/pair_reaxff.rst | 4 +- doc/src/pair_smatb.rst | 4 +- doc/src/pair_snap.rst | 4 +- doc/src/pair_spica.rst | 4 +- doc/src/pair_spin_dmi.rst | 4 +- doc/src/pair_srp.rst | 4 +- doc/src/pair_tersoff.rst | 12 +- doc/src/pair_tersoff_zbl.rst | 6 +- doc/src/pair_ylz.rst | 4 +- doc/src/run_style.rst | 4 +- 64 files changed, 783 insertions(+), 520 deletions(-) diff --git a/doc/src/Bibliography.rst b/doc/src/Bibliography.rst index c2e31d620e8..b064f723f38 100644 --- a/doc/src/Bibliography.rst +++ b/doc/src/Bibliography.rst @@ -28,12 +28,12 @@ Bibliography **(Agnolin and Roux 2007)** Agnolin, I. & Roux, J-N. (2007). Internal states of model isotropic granular packings. I. Assembling process, geometry, and contact networks. Phys. Rev. E, 76, 061302. -**(Ahrens-Iwers2022)** - Ahrens-Iwers *et al.*, J. Chem. Phys. 157, 084801 (2022). - **(Ahrens-Iwers)** Ahrens-Iwers and Meissner, J. Chem. Phys. 155, 104104 (2021). +**(Ahrens-Iwers2022)** + Ahrens-Iwers *et al.*, J. Chem. Phys. 157, 084801 (2022). + **(Aktulga)** Aktulga, Fogarty, Pandit, Grama, Parallel Computing, 38, 245-259 (2012). @@ -43,6 +43,9 @@ Bibliography **(Albe1)** K.\ Albe, K. Nordlund, J. Nord, and A. Kuronen, Phys. Rev. B, 66, 035205 (2002). +**(Alkuino et al)** + Alkuino, Clemmer, Santangelo, and Zhang, arXiv:2603.27279 (2026). + **(Allen)** Allen and Germano, Mol Phys 104, 3225-3235 (2006). @@ -58,6 +61,9 @@ Bibliography **(Appshaw)** Appshaw, Seddon, Hanna, Soft. Matter,18, 1747(2022). +**(Artrith, Morawietz and Behler 2011)** + Artrith, N.; Morawietz, T.; Behler, J., Phys. Rev. B 2011, 83 (15), 153101. + **(Avendano)** C.\ Avendano, T. Lafitte, A. Galindo, C. S. Adjiman, G. Jackson, E. Muller, J Phys Chem B, 115, 11154 (2011). @@ -70,9 +76,15 @@ Bibliography **(Babadi2)** Babadi and Ejtehadi, EPL, 77 (2007) 23002. +**(Baconnier2025)** + P. Baconnier, O. Dauchot, V. Demery, G. Duering, S. Henkes, C. Huepe, and A. Shee, Self-aligning polar active matter, Rev. Mod. Phys. 97, 015007 (2025). + **(Baczewski)** A.D. Baczewski and S.D. Bond, J. Chem. Phys. 139, 044107 (2013). +**(Baer)** + B Baer and D G Walker, J. Mol. Model, 31, 220 (2025) + **(Bal)** K.\ M Bal and E. C. Neyts, J. Chem. Phys. 141, 204104 (2014). @@ -85,17 +97,17 @@ Bibliography **(Barrat)** Barrat and Rodney, J. Stat. Phys, 144, 679 (2011). +**(Barraud)** + Barraud, Dalmazzone, Moureta, De Bruin, Creton, Pasquier, Lachet and Nieto-Draghi, Langmuir, 41 (11), 7272-7282 (2025). + **(Barrett)** Barrett, Tschopp, El Kadiri, Scripta Mat. 66, p.666 (2012). **(Barros)** Barros, Sinkovits, Luijten, J. Chem. Phys, 140, 064903 (2014) -**(Bartok)** - Bartok, Payne, Risi, Csanyi, Phys Rev Lett, 104, 136403 (2010). - **(Bartok2010)** - Bartok, Payne, Risi, Csanyi, Phys Rev Lett, 104, 136403 (2010). + AP Bartok, MC Payne, R Kondor, and G Csanyi, Physical Review Letters 104, 136403 (2010). **(Bartok2013)** Bartok, Kondor, Csanyi, Phys Rev B, 87, 184115 (2013). @@ -109,12 +121,21 @@ Bibliography **(Baskes2)** Baskes, Phys Rev B, 75, 094113 (2007). +**(Batatia)** + I.\ Batatia, *et al.*, arXiv:2401.0096 (2023). + **(Beck)** Beck, Molecular Physics, 14, 311 (1968). **(Becton)** Becton, Averett, Wang, Biomech. Model. Mechanobiology, 18, 425-433(2019). +**(Behler 2011)** + Behler, J., J. Chem. Phys. 2011, 134 (7), 074106. + +**(Behler 2021)** + Behler, J., Chem. Rev. 2021, 121 (16), 10037-10072. + **(Behler and Parrinello 2007)** Behler, J.; Parrinello, M. Phys. Rev. Lett. 2007, 98 (14), 146401. @@ -142,33 +163,33 @@ Bibliography **(Bitzek)** Bitzek, Koskinen, Gahler, Moseler, Gumbsch, Phys Rev Lett, 97, 170201 (2006). +**(Bogusz)** + Bogusz et al, J Chem Phys, 108, 7070 (1998) + **(Bolintineanu1)** Bolintineanu, Lechman, Plimpton, Grest, Phys Rev E, 86, 066703 (2012). **(Bolintineanu2)** - Bolintineanu, Grest, Lechman, Pierce, Plimpton, Schunk, Comp Particle Mechanics, 1, 321-356 (2014). + Bolintineanu, Grest, Lechman, Pierce, Plimpton, Schunk, Comp Particle Mechanics, 1, 321-356 (2014). **(Bomont)** Bomont, Bretonnet, J. Chem. Phys. 124, 054504 (2006). +**(Bonato)** + A.\ Bonato, T.E. Ouldridge, A.A. Louis, J.P.K. Doye, L. Rovigatti, M. Matthies, O.Henrich, in preparation. + **(Bond)** Bond and Leimkuhler, SIAM J Sci Comput, 30, p 134 (2007). +**(Bonny)** + Bonny, Pasianot, Terentyev, Malerba, Philosophical Magazine, 91, 1724 (2011). + **(Boone)** Boone, Babaei, Wilmer, J Chem Theory Comput, 15, 5579--5587 (2019). **(BoreschKarplus)** Boresch and Karplus, J Phys Chem A, 103, 103 (1999). -**(Botu1)** - V.\ Botu and R. Ramprasad, Int. J. Quant. Chem., 115(16), 1074 (2015). - -**(Botu2)** - V.\ Botu and R. Ramprasad, Phys. Rev. B, 92(9), 094306 (2015). - -**(Botu3)** - V.\ Botu, R. Batra, J. Chapman and R. Ramprasad, https://arxiv.org/abs/1610.02098 (2016). - **(Branicio2009)** Branicio, Rino, Gan and Tsuzuki, J. Phys Condensed Matter 21 (2009) 095002 @@ -178,23 +199,32 @@ Bibliography **(Brenner)** Brenner, Shenderova, Harrison, Stuart, Ni, Sinnott, J Physics: Condensed Matter, 14, 783-802 (2002). -**(Brilliantov)** - Brilliantov, Spahn, Hertzsch, Poschel, Phys Rev E, 53, p 5382-5392 (1996). +**(Brilliantov et al, 1996)** + Brilliantov, N. V., Spahn, F., Hertzsch, J. M., & Poschel, T. (1996). Model for collisions in granular gases. Physical review E, 53(5), 5382. **(Brooks)** - Brooks, Brooks, MacKerell Jr., J Comput Chem, 30, 1545 (2009). - -**(Brooks)** - Brooks, et al, J Comput Chem, 30, 1545 (2009). + Brooks, et al (2009). J Comput Chem, 30, 1545. https://onlinelibrary.wiley.com/doi/10.1002/jcc.21287 **(Brown)** Brown et al. International Tables for Crystallography Volume C: Mathematical and Chemical Tables, 554-95 (2004). +**(Brown1)** + I.\ D. Brown, *Chem. Rev.*, **109**, 6858 (2009). + +**(Brown2)** + I.\ Brown and R. Shannon, *Acta Crystallogr. A*, **29**, 266 (1973). + +**(Brown3)** + I.\ Brown and K. K. Wu, *Acta Crystallogr. B*, **32**, 1957 (1976). + +**(Bruenger)** + Bruenger, Brooks, and Karplus, Chem. Phys. Lett. 105, 495 (1982). [Previously attributed to Schneider and Stoll, Phys. Rev. B 17, 1302 (1978). Implementation remains unchanged.] + **(Buck)** Buck, Bouguet-Bonnet, Pastor, MacKerell Jr., Biophys J, 90, L36 (2006). **(Bulacu)** - Bulacu, Goga, Zhao, Rossi, Monticelli, Periole, Tieleman, Marrink, J Chem Theory Comput, 9, 3282-3292 + Bulacu, Goga, Zhao, Rossi, Monticelli, Periole, Tieleman, Marrink, J Chem Theory Comput, 9, 3282-3292 (2013). **(Bussi)** G. Bussi, T. Zykova-Timan, M. Parrinello, J Chem Phys, 130, 074101 (2009). @@ -205,20 +235,11 @@ Bibliography **(Bussi2)** Bussi and Parrinello, Phys. Rev. E 75, 056707 (2007) -**(COMB_1)** - J.\ Yu, S. B. Sinnott, S. R. Phillpot, Phys Rev B, 75, 085311 (2007), - -**(COMB_2)** - T.-R. Shan, B. D. Devine, T. W. Kemper, S. B. Sinnott, and S. R. Phillpot, Phys. Rev. B 81, 125328 (2010) - -**(COMB3)** - T.\ Liang, T.-R. Shan, Y.-T. Cheng, B. D. Devine, M. Noordhoek, Y. Li, Z. Lu, S. R. Phillpot, and S. B. Sinnott, Mat. Sci. & Eng: R 74, 255-279 (2013). - **(Calhoun)** A.\ Calhoun, M. Pavese, G. Voth, Chem Phys Letters, 262, 415 (1996). **(Campana)** - C.\ Campana and M. H. Muser, Phys. Rev. B [74], 075420 (2006). + C. Campana and M. H. Muser, *Practical Green's function approach to the simulation of elastic semi-infinite solids*, `Phys. Rev. B [74], 075420 (2006) `_ **(Cao1)** J.\ Cao and B. Berne, J Chem Phys, 99, 2902 (1993). @@ -232,9 +253,6 @@ Bibliography **(CasP)** CasP webpage: https://lief.if.ufrgs.br/pub/CasP/ -**(Cawkwell2012)** - A.\ M. N. Niklasson, M. J. Cawkwell, Phys. Rev. B, 86 (17), 174308 (2012). - **(Cercignani)** C.\ Cercignani and M. Lampis. Trans. Theory Stat. Phys. 1, 2, 101 (1971). @@ -242,23 +260,38 @@ Bibliography Cerda, Ballenegger, Lenz, Holm, J Chem Phys 129, 234104 (2008) **(Ceriotti)** - M. Ceriotti, M. Parrinello, T. Markland, D. Manolopoulos, J. Chem. Phys. 133, 124104 (2010). - -**(Ceriotti1)** Ceriotti, Bussi and Parrinello, J Chem Theory Comput 6, 1170-80 (2010) **(Ceriotti2)** Ceriotti, Bussi and Parrinello, Phys Rev Lett 103, 030603 (2009) +**(Ceriotti3)** + M. Ceriotti, M. Parrinello, T. Markland, D. Manolopoulos, J. Chem. Phys. 133, 124104 (2010). + **(Cerutti)** Cerutti, Duke, Darden, Lybrand, Journal of Chemical Theory and Computation 5, 2322 (2009) +**(Chaimovich1)** + A.\ Chaimovich, C. Peter and K. Kremer, J. Chem. Phys. 143, 243107 (2015). + +**(Chaimovich2)** + M. Chaimovich and A. Chaimovich, J. Chem. Theory Comput. 17, 1045-1059 (2021). + **(Chen)** + Chen, Jiahao. Theory and applications of fluctuating-charge models. University of Illinois at Urbana-Champaign, 2009. + +**(Chen2)** J Chen, D Tzou and J Beraun, Int. J. Heat Mass Transfer, 49, 307-316 (2006). **(Chenoweth_2008)** Chenoweth, van Duin and Goddard, Journal of Physical Chemistry A, 112, 1040-1053 (2008). +**(Chirac)** + Chirac, Theophile, et al. Ultrafast antiferromagnetic switching in NiO induced by spin transfer torques. Physical Review B 102.13 (2020): 134415. + +**(Chung and Ooi, 2011)** + Y. C. Chung and J. Y. Ooi, Benchmark tests for verifying discrete element modelling codes at particle impact level, Granular Matter, 13, 643-656 (2011), https://doi.org/10.1007/s10035-011-0277-0 + **(Clarke)** Clarke and Smith, J Chem Phys, 84, 2290 (1986). @@ -266,13 +299,16 @@ Bibliography G. Clavier, N. Desbiens, E. Bourasseau, V. Lachet, N. Brusselle-Dupend and B. Rousseau, Mol Sim, 43, 1413 (2017). **(Clemmer)** - Clemmer and Robbins, Phys. Rev. Lett. (2022). + Clemmer, Pierce, O'Connor, Nevins, Jones, Lechman, Tencer, Appl. Math. Model., 130, 310-326 (2024). -**(Clemmer1)** +**(Clemmer2)** Clemmer, Monti, Lechman, Soft Matter, 20, 1702 (2024). -**(Clemmer2)** - Clemmer, Pierce, O'Connor, Nevins, Jones, Lechman, Tencer, Appl. Math. Model., 130, 310-326 (2024). +**(Clemmer3)** + Clemmer and Robbins, Phys. Rev. Lett. (2022). + +**(Clemmer4)** + Clemmer and Lechman, Powder Technology (2025). **(Coleman)** Coleman, Spearot, Capolungo, MSMSE, 21, 055020 (2013). @@ -280,30 +316,48 @@ Bibliography **(Colliex)** Colliex et al. International Tables for Crystallography Volume C: Mathematical and Chemical Tables, 249-429 (2004). +**(COMB)** + T.-R. Shan, B. D. Devine, T. W. Kemper, S. B. Sinnott, and S. R. Phillpot, Phys. Rev. B 81, 125328 (2010) + +**(COMB3)** + T.\ Liang, T.-R. Shan, Y.-T. Cheng, B. D. Devine, M. Noordhoek, Y. Li, Z. Lu, S. R. Phillpot, and S. B. Sinnott, Mat. Sci. & Eng: R 74, 255-279 (2013). + +**(COMB_1)** + J.\ Yu, S. B. Sinnott, S. R. Phillpot, Phys Rev B, 75, 085311 (2007), + **(Cooke)** "Cooke, Kremer and Deserno, Phys. Rev. E, 72, 011506 (2005)" **(Cornell)** - Cornell, Cieplak, Bayly, Gould, Merz, Ferguson, Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995). + Cornell, Cieplak, Bayly, Gould, Merz, Ferguson, Spellmeyer, Fox, Caldwell, Kollman (1995). JACS 117, 5179-5197. https://doi.org/10.1021/ja00124a002 + +**(Cramer)** + Cramer, Mathematical Methods of Statistics, Princeton University Press (1946). + +**(CTIP)** + G. Plummer, J. P. Tavenner, M. I. Mendelev, Z. Wu, J. W. Lawson, J Chemical Physics, 162, 054709 (2025) **(Cundall, 1987)** - Cundall, P. A. Distinct Element Models of Rock and Soil + Cundall, P. A. Distinct Element Models of Rock and Soil Structure, in Analytical and Computational Methods in Engineering Rock Mechanics, Ch. 4, pp. 129-163. E. T. Brown, ed. London: Allen & Unwin., 1987. **(Curk1)** - T. Curk, J. Yuan, and E. Luijten, JCP 156 (2022). + T. Curk, J. Yuan, and E. Luijten, "Accelerated simulation method for charge regulation effects", JCP 156 (2022). **(Curk2)** - T. Curk and E. Luijten, PRL 126 (2021) + T. Curk and E. Luijten, "Charge-regulation effects in nanoparticle self-assembly", PRL 126 (2021) **(Cusentino)** Cusentino, Wood, Thompson, J Phys Chem A, 124, 5456, (2020) -**(Daivis and Todd)** - Daivis and Todd, J Chem Phys, 124, 194103 (2006). +**(Cyrot)** + Cyrot-Lackmann and Ducastelle, Phys Rev. B, 4, 2406-2412 (1971). **(Daivis and Todd)** Daivis and Todd, Nonequilibrium Molecular Dynamics (book), Cambridge University Press, https://doi.org/10.1017/9781139017848, (2017). +**(Daivis and Todd2)** + Daivis and Todd, J Chem Phys, 124, 194103 (2006). + **(Dammak)** Dammak, Chalopin, Laroche, Hayoun, and Greffet, Phys Rev Lett, 103, 190601 (2009). @@ -316,23 +370,41 @@ Bibliography **(Davidchack)** R.L Davidchack, T.E. Ouldridge, and M.V. Tretyakov. J. Chem. Phys. 142, 144114 (2015). -**(Daw1)** +**(Daw)** Daw, Baskes, Phys Rev Lett, 50, 1285 (1983). Daw, Baskes, Phys Rev B, 29, 6443 (1984). -**(Daw2)** - M.\ S. Daw, and M. I. Baskes, Phys. Rev. B, 29, 6443 (1984). +**(de Boer)** + J. de Boer, "Quantum Effects and Exchange Effects on the Thermodynamic Properties of Liquid Helium," Progress in Low Temperature Physics, Volume 2, Pages 1-58 (1957). **(de Buyl)** - de Buyl, Colberg and Hofling, Comp. Phys. Comm. 185(6), 1546-1553 (2014) - + de Buyl, Colberg and Hofling, H5MD: A structured, efficient, and portable file format for molecular data, Comp. Phys. Comm. 185(6), 1546-1553 (2014) - `[arXiv:1308.6382] `_. + +**(de Koning)** + de Koning and Antonelli, Phys Rev E, 53, 465 (1996). **(Deissenbeck)** Deissenbeck *et al.*, Phys. Rev. Letters 126, 136803 (2021). -**(de Koning)** - de Koning and Antonelli, Phys Rev E, 53, 465 (1996). +**(Delong)** + Delong, Usabiaga, Donev, Journal of Chemical Physics. 143, 144107 (2015). -**(DeVane)** - Shinoda, DeVane, Klein, Soft Matter, 4, 2453-2462 (2008). +**(DeLyser)** + DeLyser, Noid "Coarse-grained models for local density gradients" The Journal of Chemical Physics 156, 034106 (2021) + +**(DeLyser2)** + DeLyser, Noid. "Extending Pressure-Matching to Inhomogeneous Systems via Local-Density Potentials." The Journal of Chemical Physics, 147, no. 13: 134111 (2017) + +**(DeLyser3)** + DeLyser, Noid. "Analysis of local density potentials." The Journal of Chemical Physics, 151, no. 22:224106 (2019) + +**(DeLyser4)** + DeLyser, Noid "Bottom-up coarse-grained models for external fields and interfaces" The Journal of Chemical Physics 153, 224103 (2020) + +**(Denniston et al.)** + Denniston, C., Afrasiabian, N., Cole-Andre, M.G., Mackay, F. E., Ollila, S.T.T., and Whitehead, T., LAMMPS lb/fluid fix version 2: Improved Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 275 (2022) `108318 `_ . + +**(Derjaguin et al, 1975)** + Derjaguin, B. V., Muller, V. M., & Toporov, Y. P. (1975). Effect of contact deformations on the adhesion of particles. Journal of Colloid and interface science, 53(2), 314-326. **(Deserno)** Deserno and Holm, J Chem Phys, 109, 7694 (1998). @@ -340,8 +412,8 @@ Bibliography **(Destree)** M.\ Destree, F. Laupretre, A. Lyulin, and J.-P. Ryckaert, J Chem Phys, 112, 9632 (2000). -**(Dickel)** - Dickel, Francis, and Barrett, Computational Materials Science 171 (2020): 109157. +**(DeVane)** + Shinoda, DeVane, Klein, Soft Matter, 4, 2453-2462 (2008). **(Dietz)** Dietz and Hoy, J. Chem Phys, 156, 014103 (2022). @@ -349,7 +421,7 @@ Bibliography **(Dobson)** Dobson, J Chem Phys, 141, 184103 (2014). -**(Drautz)** +**(Drautz19)** Drautz, Phys Rev B, 99, 014104 (2019). **(Duffy)** @@ -370,15 +442,27 @@ Bibliography **(Dunweg)** Dunweg and Paul, Int J of Modern Physics C, 2, 817-27 (1991). +**(Dutta)** + Dutta, Lesniewski, Qaisrani, Noid, Andrienko, Nikoubashman. "Accurate coarse-graining of conjugated organic molecules in melts and thin films using density-dependent potentials". The Journal of Chemical Theory and Computation, 22, 7, 3697-3708 (2026) + +**(Eberly)** + Eberly, Geometric Tools: Dynamic Collision Detection Using Oriented Bounding Boxes (2008). + **(EcheverriRestrepo)** - Echeverri Restrepo, Andric, Comput Mater Sci, 218, 111978 (2023). + Echeverri Restrepo, Andric, Comput Mater Sci, 218, 111978 (2023). **(EDIP)** J F Justo et al, Phys Rev B 58, 2539 (1998). +**(Edwards)** + Edwards, Baig, and Keffer, J Chem Phys 124, 194104 (2006). + **(Eike)** Eike and Maginn, Journal of Chemical Physics, 124, 164503 (2006). +**(electronic stopping)** + Wikipedia - Electronic Stopping Power: https://en.wikipedia.org/wiki/Stopping_power_%28particle_radiation%29 + **(Elliott)** Elliott, Tadmor and Bernstein, `https://openkim.org/kim-api/ `_ (2011) doi: `https://doi.org/10.25950/FF8F563A `_ @@ -388,27 +472,21 @@ Bibliography **(Emmrich)** Emmrich, Weckner, Commun. Math. Sci., 5, 851-864 (2007), -**(Elstner)** - M.\ Elstner, D. Poresag, G. Jungnickel, J. Elsner, M. Haugk, T. Frauenheim, S. Suhai, and G. Seifert, Phys. Rev. B, 58, 7260 (1998). - **(Erdmann)** U.\ Erdmann , W. Ebeling, L. Schimansky-Geier, and F. Schweitzer, Eur. Phys. J. B 15, 105-113, 2000. -**(Eshelby)** - J.D. Eshelby, Philos. Trans. Royal Soc. London A, Math. Phys. Sci., Vol. 244, No. 877 (1951) pp. 87-112; J. Elasticity, Vol. 5, Nos. 3-4 (1975) pp. 321-335] +**(Espanol1997)** + Espanol, Europhys Lett, 40(6): 631-636 (1997). DOI:10.1209/epl/i1997-00515-8 **(Espanol and Revenga)** Espanol, Revenga, Physical Review E, 67, 026705 (2003). -**(Espanol1997)** - Espanol, Europhys Lett, 40(6): 631-636 (1997). DOI:10.1209/epl/i1997-00515-8 +**(Evans)** + Evans and Morriss, Phys Rev Lett, 56, 2172-2175 (1986). **(Evans and Morriss)** Evans and Morriss, Phys Rev A, 30, 1528 (1984). -**(Evans)** - Evans and Morriss, Phys. Rev. Lett. 56, 2172 (1986). - **(Everaers)** Everaers and Ejtehadi, Phys Rev E, 67, 041710 (2003). @@ -418,9 +496,15 @@ Bibliography **(Falk)** Falk and Langer PRE, 57, 7192 (1998). +**(Farrell)** + `Farrell, Dobnikar, Podgornik, Curk, Phys Rev Lett, 133, 148101 (2024). `_ + **(Fath)** Fath, Hochbruck, Singh, J Comp Phys, 333, 180-198 (2017). +**(Feldman)** + Y. M. Y. Feldman and B. Hirshberg, "Quadratic scaling bosonic path integral molecular dynamics," J. Chem. Phys. 159, 154107 (2023) + **(Feng1)** Z. Feng, ..., and W. Ouyang, J. Phys. Chem. C. 127(18), 8704-8713 (2023). @@ -436,20 +520,23 @@ Bibliography **(Fichthorn)** Fichthorn, Balankura, Qi, CrystEngComm, 18(29), 5410-5417 (2016). -**(Fily)** - Y.\ Fily and M.C. Marchetti, Phys. Rev. Lett. 108, 235702, 2012. Default +**(Fiedler)** + Fiedler, Modine, Schmerler, Vogel, Popoola, Thompson, Rajamanickam, and Cangi, `npj Comp. Mater., 9, 115 (2023) `_ **(Fincham)** Fincham, Mackrodt and Mitchell, J Phys Condensed Matter, 6, 393-404 (1994). -**(Finnis1)** - Finnis, Sinclair, Philosophical Magazine A, 50, 45 (1984). +**(Finkelstein)** + Finkelstein, Cheng, Fiorin, Seibold, Gronbech-Jensen, J. Chem. Phys., 155, 18 (2021) -**(Finnis2)** - M.\ W. Finnis, A. T. Paxton, M. Methfessel, and M. van Schilfgarde, Phys. Rev. Lett., 81, 5149 (1998). +**(Finnis)** + Finnis, Sinclair, Philosophical Magazine A, 50, 45 (1984). **(Fiorin)** - Fiorin, Klein, Henin, Mol. Phys., DOI:10.1080/00268976.2013.813594 + Fiorin, Klein, Henin, Mol. Phys. 111, 3345 (2013) https://doi.org/10.1080/00268976.2013.813594 + +**(Foster 2010)** + Foster, Silling, Chen, Viscoplasticity using peridynamics, Int J Numer Methods Eng, 81(10), 1242-1258 (2010). **(Fox)** Fox, O'Keefe, Tabbernor, Acta Crystallogr. A, 45, 786-93 (1989). @@ -466,23 +553,47 @@ Bibliography **(Fu)** Fu, Peng, Yuan, Kfoury, Young, Comput. Phys. Commun, 210, 193-203(2017). +**(FumiTosi)** + Fumi and Tosi, J Phys Chem Solids, 25, 31 (1964), Fumi and Tosi, J Phys Chem Solids, 25, 45 (1964). + +**(Gan2025)** + Gan, Gao, Liang, Xu, SIAM J Sci Comput, 47, B846-B874 (2025). https://doi.org/10.1137/24M1655809 + **(Gao)** Gao and Weber, Nuclear Instruments and Methods in Physics Research B 191 (2012) 504. +**(Gao2025)** + Gao, Zhou, Gan, Liang, J Chem Theory Comput, 21, 5890-5904 (2025). https://doi.org/10.1021/acs.jctc.5c00438 + +**(Gapsys)** + Gapsys, Seeliger, de Groot, J Chem Theor Comput, 8, 2373 (2012). + +**(Garg et al., 2012)** + R. Garg, J. Galvin, T. Li, and S. Pannala, Open-source MFIX-DEM software for gas-solids flows: Part I -- Verification studies, Powder Technology, 220, 122-137 (2012), https://doi.org/10.1016/j.powtec.2011.09.019 + +**(Ghoufi)** + A.\ Ghoufi, P. Malfreyt, "Mesoscale modeling of the water liquid-vapor interface: A surface tension calculation.", Phys. Rev. E, 83, 051601 (2011). + **(Gingrich)** Gingrich, `MSc thesis` ` (2010). +**(Gissinger)** + J. R. Gissinger, I. Nikiforov, Y. Afshar, B. Waters, M. Choi, D. S. Karls, A. Stukowski, W. Im, H. Heinz, A. Kohlmeyer, and E. B. Tadmor, J Phys Chem B, 128, 3282-3297 (2024). + +**(Gissinger2)** + Jacob R. Gissinger, Scott R. Zavada, Joseph G. Smith, Josh Kemppainen, Ivan Gallegos, Gregory M. Odegard, Emilie J. Siochi, and Kristopher E. Wise, Carbon, 202, 336-347 (2023). + **(Gissinger2017)** Gissinger, Jensen and Wise, Polymer, 128, 211-217 (2017). **(Gissinger2020)** Gissinger, Jensen and Wise, Macromolecules, 53, 22, 9953-9961 (2020). -**(Gissinger)** - Jacob R. Gissinger, Scott R. Zavada, Joseph G. Smith, Josh Kemppainen, Ivan Gallegos, Gregory M. Odegard, Emilie J. Siochi, and Kristopher E. Wise, Carbon, 202, 336-347 (2023). - **(Gissinger2024)** - J. R. Gissinger, I. Nikiforov, Y. Afshar, B. Waters, M. Choi, D. S. Karls, A. Stukowski, W. Im, H. Heinz, A. Kohlmeyer, and E. B. Tadmor, J Phys Chem B, 128, 3282-3297 (2024). + Gissinger, Jensen and Wise, Computer Physics Communications, 304, 109287 (2024). + +**(GLE4MD)** + `https://gle4md.org/ `_ **(Gloor)** Gloor, J Chem Phys, 123, 134703 (2005) @@ -493,11 +604,11 @@ Bibliography **(Goff)** Goff, Zhang, Negre, Rohskopf, Niklasson, Journal of Chemical Theory and Computation 19, no. 13 (2023). -**(Goldman1)** - Goldman, Reed and Fried, J. Chem. Phys. 131, 204103 (2009) +**(Goldman)** + Goldman, Srinivasan, Hamel, Fried, Gaus, and Elstner, J. Phys. Chem. C, 117, 7885 (2013). **(Goldman2)** - Goldman, Srinivasan, Hamel, Fried, Gaus, and Elstner, J. Phys. Chem. C, 117, 7885 (2013). + Goldman, Reed and Fried, J. Chem. Phys. 131, 204103 (2009) **(Grime)** Grime and Voth, to appear in J Chem Theory & Computation (2014). @@ -505,28 +616,55 @@ Bibliography **(Grimme)** Grimme, J Comput Chem, 27(15), 1787-1799 (2006). -**(Gronbech-Jensen1)** +**(Grimme1)** + S. Grimme, J. Antony, S. Ehrlich, and H. Krieg, J. Chem. Phys. 132, 154104 (2010). + +**(Grimme2)** + S. Grimme, S. Ehrlich and L. Goerigk, J. Comput. Chem. 32, 1456 (2011). + +**(Grinberg)** + I.\ Grinberg, V. R. Cooper, and A. M. Rappe, *Nature*, **419**, 909 (2002). + +**(Groger)** + R. Groger, J. Fikar, Acta Mater. (2026) in review. + +**(Gronbech)** + Gronbech-Jensen, Farago, J Chem Phys, 141, 194108 (2014). + +**(Gronbech Jensen/Gronbech-Jensen)** Gronbech Jensen and Gronbech-Jensen, Mol Phys, 117, 2511 (2019) -**(Gronbech-Jensen2)** - Gronbech-Jensen and Farago, Mol Phys, 111, 983 (2013) +**(Gronbech-Jensen-2020)** + Gronbech-Jensen, Mol Phys 118, e1662506 (2020). + +**(Gronbech-Jensen-2023)** + Gronbech-Jensen, J. Stat. Phys. 190, 96 (2023). -**(Gronbech-Jensen3)** - Hayre, and Farago, Comp Phys Comm, 185, 524 (2014) +**(Gronbech-Jensen-2024)** + Gronbech-Jensen, J. Stat. Phys. 191, 137 (2024). + +**(Gronbech-Jensen/Farago)** + Gronbech-Jensen and Farago, Mol Phys, 111, 983 (2013) **(Groot)** Groot and Warren, J Chem Phys, 107: 4423-4435 (1997). DOI:10.1063/1.474784 +**(Gubler et al 2024)** + Gubler, M.; Finkler, J. A.; Schaefer, M. R.; Behler, J.; Goedecker S., J. Chem. Theory Comput. 2024, 20 (16), 7264-7271. + **(Guenole)** Guenole, Noehring, Vaid, Houlle, Xie, Prakash, Bitzek, Comput Mater Sci, 175, 109584 (2020). **(Gullet)** - Gullet, Wagner, Slepoy, SANDIA Report 2003-8782 (2003). DOI:10.2172/918395 + Gullet, Wagner, Slepoy, SANDIA Report 2003-8782 (2003). DOI:10.2172/918395 This report may be accessed on-line via `this link `_. **(Guo)** Guo and Thirumalai, Journal of Molecular Biology, 263, 323-43 (1996). **(Gupta)** + S. Gupta, E. Bull-Vulpe, H. Agnew, S. Iyer, X. Zhu, R. Zhou, C. Knight, F. Paesani, J. Chem. Theory Comput. 21, 1938 (2025) + +**(Gupta2)** Gupta ,Phys Rev. B, 23, 6265-6270 (1981). **(Hardy)** @@ -544,9 +682,6 @@ Bibliography **(Henkelman2)** Henkelman, Uberuaga, Jonsson, J Chem Phys, 113, 9901-9904 (2000). -**(Henkes)** - Henkes, S, Fily, Y., and Marchetti, M. C. Phys. Rev. E, 84, 040301(R), 2011. - **(Henrich)** O.\ Henrich, Y. A. Gutierrez-Fosado, T. Curk, T. E. Ouldridge, Eur. Phys. J. E 41, 57 (2018). @@ -559,12 +694,24 @@ Bibliography **(Heyes)** Heyes, Phys Rev B, 49, 755 (1994). +**(Higer)** + J. Higer, Y. M. Y. Feldman, and B. Hirshberg, "Periodic Boundary Conditions for Bosonic Path Integral Molecular Dynamics," J. Chem. Phys. 163, 024101 (2025) + **(Hijazi)** M.\ Hijazi, D. M. Wilkins, M. Ceriotti, J. Chem. Phys. 148, 184109 (2018) +**(Hirshberg1)** + B. Hirshberg, V. Rizzi, and M. Parrinello, "Path integral molecular dynamics for bosons," Proc. Natl. Acad. Sci. U. S. A. 116, 21445 (2019) + +**(Hirshberg2)** + B. Hirshberg, M. Invernizzi, and M. Parrinello, "Path integral molecular dynamics for fermions: Alleviating the sign problem with the Bogoliubov inequality," J Chem Phys, 152, 171102 (2020) + **(Hockney)** Hockney and Eastwood, Computer Simulation Using Particles, Adam Hilger, NY (1989). +**(Hoefling)** + :math:`\mathrm{H\ddot{o}fling}` and Straube, Physical Review Research, 7, 043034 (2025). + **(Holian)** Holian and Ravelo, Phys Rev B, 51, 11275 (1995). @@ -574,42 +721,57 @@ Bibliography **(Hoover)** Hoover, Phys Rev A, 31, 1695 (1985). +**(Houlsby)** + Houlsby, Computers and Geotechnics, 36, 953-959 (2009). + +**(Hu)** + Hu, J. Chem. Theory Comput. 10, 5254 (2014). + +**(Hu2)** + Hu, and Adams J. Comp. Physics, 213, 844-861 (2006). + **(Huang)** Huang, Zhang, Yuan, Gao, Zhang, Nano Lett. 13, 4546(2013). **(Huang2014)** X. Huang, "Exploring critical-state behavior using DEM", Doctoral dissertation, Imperial College. (2014). https://doi.org/10.25560/25316 -**(Hu)** - Hu, and Adams J. Comp. Physics, 213, 844-861 (2006). - -**(Hu)** - Hu, J. Chem. Theory Comput. 10, 5254 (2014). - **(Hummer)** Hummer, Gronbech-Jensen, Neumann, J Chem Phys, 109, 2791 (1998) **(Hunt)** Hunt, Mol Simul, 42, 347 (2016). +**(Hur)** + Hur and Stuart, J. Chem. Phys. 137, 054102 (2012). + **(Ikeshoji)** - Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261 (1994). + Ikeshoji, Hafskjold, Furuholt, Mol Sim, 29, 101-109, (2003). **(Ikeshoji2)** - Ikeshoji, Hafskjold, Furuholt, Mol Sim, 29, 101-109, (2003). + Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261 (1994). **(Ilie)** Ilie, Briels, den Otter, Journal of Chemical Physics, 142, 114103 (2015). +**(Immel)** + Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025) + +**(Immel2)** + Immel, Drautz and Sutmann, arXiv:2512.07693 + **(In 't Veld)** - In 't Veld, Ismail, Grest, J Chem Phys (accepted) (2007). + In 't Veld, Ismail, Grest, J Chem Phys, 127, 144711 (2007). **(IPI)** - `https://ipi-code.org/ ` + `https://ipi-code.org `_ -**(IPI-CPC)** +**(IPI-CPC-2014)** Ceriotti, More and Manolopoulos, Comp Phys Comm, 185, 1019-1026 (2014). +**(IPI-CPC-2019)** + Kapil et al., Comp Phys Comm 236, 214-223 (2019). + **(Isele-Holder)** Isele-Holder, Mitchell, Ismail, J Chem Phys, 137, 174107 (2012). @@ -622,11 +784,11 @@ Bibliography **(Ivanov)** Ivanov, Uzdin, Jonsson. arXiv preprint arXiv:1904.02669, (2019). -**(Izrailev)** - Izrailev, Stepaniants, Isralewitz, Kosztin, Lu, Molnar, Wriggers, Schulten. Computational Molecular Dynamics: Challenges, Methods, Ideas, volume 4 of Lecture Notes in Computational Science and +**(Izadi)** + Izadi, Anandakrishnan, Onufriev, J. Phys. Chem. Lett., 5, 21, 3863 (2014) https://doi.org/10.1021/jz501780a -**(Izvekov)** - Izvekov, Voth, J Chem Phys 123, 134105 (2005). +**(Izrailev)** + Izrailev, Stepaniants, Isralewitz, Kosztin, Lu, Molnar, Wriggers, Schulten. Computational Molecular Dynamics: Challenges, Methods, Ideas, volume 4 of Lecture Notes in Computational Science and Engineering, pp. 39-65. Springer-Verlag, Berlin, 1998. **(Jadhao)** Jadhao, Solis, Olvera de la Cruz, J Chem Phys, 138, 054119 (2013) @@ -635,14 +797,11 @@ Bibliography Janssens, Olmsted, Holm, Foiles, Plimpton, Derlet, Nature Materials, 5, 124-127 (2006). **(Jaramillo-Botero)** - Jaramillo-Botero, Su, Qi, Goddard, Large-scale, Long-term Non-adiabatic Electron Molecular Dynamics for Describing Material Properties and Phenomena in Extreme Environments, J Comp + Jaramillo-Botero, Su, Qi, Goddard, Large-scale, Long-term Non-adiabatic Electron Molecular Dynamics for Describing Material Properties and Phenomena in Extreme Environments, J Comp Chem, 32, 497-512 (2011). **(Jarzynski)** Jarzynski, Phys. Rev. Lett. 78, 2690 (1997) -**(Jiang)** - Jiang, Hardy, Phillips, MacKerell, Schulten, and Roux, J Phys Chem Lett, 2, 87-92 (2011). - **(Jiang1)** Jiang, Hardy, Phillips, MacKerell, Schulten, and Roux, J Phys Chem Lett, 2, 87-92 (2011). @@ -652,18 +811,33 @@ Bibliography **(Jiang3)** J.-W. Jiang, Acta Mech. Solida. Sin 32, 17 (2019). +**(Jiang4)** + W. Jiang, ... , W. Ouyang, et al., J. Phys. Chem. A, 127, 46, 9820-9830 (2023). + +**(Jiang5)** + W. Jiang, ..., W. Ouyang, J. Phys. Chem. C, 129, 2, 1417-1427 (2024). + +**(Joanes)** + Joanes, Gill, The Statistician, 47, 183--189 (1998). + +**(Johansson)** + A.\ Johansson, E. Weinberg, C. Trott, M. McCarthy, and S. Moore. LAMMPS-KOKKOS: Performance portable molecular dynamics across exascale architectures. In Proceedings of the SC '25 Workshops of the International Conference for High Performance Computing, Networking, Storage and Analysis, page 1217-1232, 2025. + **(Johnson et al, 1971)** Johnson, K. L., Kendall, K., & Roberts, A. D. (1971). Surface energy and the contact of elastic solids. Proc. R. Soc. Lond. A, 324(1558), 301-313. -**(Jones)** - Jones, RE; Templeton, JA; Wagner, GJ; Olmsted, D; Modine, JA, "Electron transport enhanced molecular dynamics for metals and semi-metals." International Journal for Numerical Methods in Engineering (2010), 83:940. - **(Jonsson)** Jonsson, Mills and Jacobsen, in Classical and Quantum Dynamics in Condensed Phase Simulations, edited by Berne, Ciccotti, and Coker World Scientific, Singapore, 1998, p 385. **(Jorgensen)** Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem Phys, 79, 926 (1983). +**(Jorgensen2)** + Jorgensen, Tirado-Rives (1988). J Am Chem Soc, 110, 1657-1666. https://doi.org/10.1021/ja00214a001 + +**(Junghans)** + Junghans, Praprotnik and Kremer, Soft Matter 4, 156, 1119-1128 (2008). + **(Jusufi)** Jusufi, Hynninen, and Panagiotopoulos, J Phys Chem B, 112, 13783 (2008). @@ -676,6 +850,9 @@ Bibliography **(Kelchner)** Kelchner, Plimpton, Hamilton, Phys Rev B, 58, 11085 (1998). +**(Kemppainen)** + Kemppainen, npj Computational Materials 11, 341 (2025). https://doi.org/10.1038/s41524-025-01838-5 + **(Khrapak)** Khrapak, Chaudhuri, and Morfill, J Chem Phys, 134, 054120 (2011). @@ -685,6 +862,9 @@ Bibliography **(Klapp)** Klapp, Schoen, J Chem Phys, 117, 8050 (2002). +**(Ko et al 2021)** + Ko, T. W.; Finkler, J. A.; Goedecker, S.; Behler, J., Nat. Commun. 2021, 12, 398. + **(Kolafa)** Kolafa and Perram, Molecular Simulation, 9, 351 (1992). @@ -692,10 +872,13 @@ Bibliography A.\ N. Kolmogorov, V. H. Crespi, Phys. Rev. B 71, 235415 (2005). **(Kong)** - L.T. Kong, G. Bartels, C. Campana, C. Denniston, and Martin H. Muser, `Computer Physics Communications [180](6):1004-1010 (2009). `_ + L.T. Kong, G. Bartels, C. Campana, C. Denniston, and Martin H. Muser, *Implementation of Green's function molecular dynamics: An extension to LAMMPS*, `Computer Physics Communications [180](6):1004-1010 (2009). `_ **(Kong2011)** - L.T. Kong, `Computer Physics Communications [182](10):2201-2207, (2011). `_ + L.T. Kong, *Phonon dispersion measured directly from molecular dynamics simulations*, `Computer Physics Communications [182](10):2201-2207, (2011). `_ + +**(Koziol1)** + Z. Koziol, G. Gawlik and J. Jagielski, Chinese Phys. B 28, 096101 (2019). **(Kremer)** Kremer, Grest, J Chem Phys, 92, 5057 (1990). @@ -707,29 +890,29 @@ Bibliography T.\ Kumagai, S. Izumi, S. Hara, S. Sakai, Comp. Mat. Science, 39, 457 (2007). **(Kumar)** - Kumar and Higdon, Phys Rev E, 82, 051401 (2010). + Kumar and Higdon, Phys Rev E, 82, 051401 (2010). See also his thesis for more details: A. Kumar, "Microscale Dynamics in Suspensions of Non-spherical Particles", Thesis, University of Illinois Urbana-Champaign, (2010). (`https://www.ideals.illinois.edu/handle/2142/16032 `_) -**(Kumar)** +**(Kumar2)** Kumar and Skinner, J. Phys. Chem. B, 112, 8311 (2008) **(Lafourcade)** - Lafourcade, Maillet, Denoual, Duval, Allera, Goryaeva, and Marinica, `Comp. Mat. Science, 230, 112534 (2023) `_ + Lafourcade, Maillet, Denoual, Duval, Allera, Goryaeva, and Marinica, `Comp. Mat. Science, 230, 112534 (2023) `_ -**(Lamoureux and Roux)** - G.\ Lamoureux, B. Roux, J. Chem. Phys 119, 3025 (2003) +**(Lalli)** + Lalli and Giusti, Journal of Chemical Physics, 162, 174311 (2025). -**(Lamoureux)** +**(Lamoureux and Roux)** Lamoureux and Roux, J Chem Phys, 119, 3025-3039 (2003). **(Landsgesell)** - J. Landsgesell, P. Hebbeker, O. Rud, R. Lunkad, P. Kosovan, and C. Holm, Macromolecules 53, 3007-3020 (2020). + J. Landsgesell, P. Hebbeker, O. Rud, R. Lunkad, P. Kosovan, and C. Holm, "Grand-reaction method for simulations of ionization equilibria coupled to ion partitioning", Macromolecules 53, 3007-3020 (2020). + +**(Larentzos)** + J.P. Larentzos, J.K. Brennan, J.D. Moore, and W.D. Mattson, "LAMMPS Implementation of Constant Energy Dissipative Particle Dynamics (DPD-E)", ARL-TR-6863, U.S. Army Research Laboratory, Aberdeen Proving Ground, MD (2014). **(Larentzos1)** J.P. Larentzos, J.K. Brennan, J.D. Moore, M. Lisal and W.D. Mattson, Comput. Phys. Commun., 185, 1987-1998 (2014). -**(Larentzos2)** - J.P. Larentzos, J.K. Brennan, J.D. Moore, and W.D. Mattson, ARL-TR-6863, U.S. Army Research Laboratory, Aberdeen Proving Ground, MD (2014). - **(Larsen)** Larsen, Schmidt, Schiotz, Modelling Simul Mater Sci Eng, 24, 055007 (2016). @@ -737,10 +920,7 @@ Bibliography I.\ V. Lebedeva, A. A. Knizhnik, A. M. Popov, Y. E. Lozovik, B. V. Potapkin, Phys. Rev. B, 84, 245437 (2011) **(Lebedeva2)** - I. V. Lebedeva, A. A. Knizhnik, A. M. Popov, Y. E. Lozovik, B. V. Potapkin, Physica E: 44, 949-954 (2012) - -**(Lechman)** - Lechman, et al, in preparation (2010). + I.\ V. Lebedeva, A. A. Knizhnik, A. M. Popov, Y. E. Lozovik, B. V. Potapkin, Physica E: 44, 949-954 (2012) **(Lee)** Lee, Baskes, Phys. Rev. B, 62, 8564-8567 (2000). @@ -751,12 +931,27 @@ Bibliography **(Lee2020)** C.W. Lee, et al. (2020) Physical Review B, 102(2), 024107. +**(Leimkuhler)** + B. Leimkuhler and C. Matthews, "Rational Construction of Stochastic Numerical Methods for Molecular Sampling", Appl. Math. Res. Express, 2013(1), 34-56 (2013). https://doi.org/10.1093/amrx/abs010 + **(Lenart)** Lenart , Jusufi, and Panagiotopoulos, J Chem Phys, 126, 044509 (2007). **(Lenosky)** Lenosky, Sadigh, Alonso, Bulatov, de la Rubia, Kim, Voter, Kress, Modelling Simulation Materials Science Engineering, 8, 825 (2000). +**(Leoni_1)** + F. Leoni et al., Phys Rev Lett, 134, 128201 (2025). + +**(Leoni_2)** + F. Leoni et al., Phys Rev Lett, 134, Supplementary Material (2025). + +**(Lesniewski)** + Lesniewski, Remsing, Noid "Revisiting what we lose by coarse-graining: Modeling cooperative hydrophobic phenomena with short-ranged, pair-additive forces." The Journal of Chemical Physics, 164, 204111 (2026) + +**(Lesniewski2)** + Lesniewski, DeLyser, W. G. Noid "Progress toward a better BOCS: systematic coarse-graining with local density potentials" In Prep 2026 + **(Leven1)** I.\ Leven, I. Azuri, L. Kronik and O. Hod, J. Chem. Phys. 140, 104106 (2014). @@ -766,38 +961,56 @@ Bibliography **(Li2013_POF)** Li, Hu, Wang, Ma, Zhou, Phys Fluids, 25: 072103 (2013). DOI:10.1063/1.4812366. -**(Li2014_JCP)** - Li, Tang, Lei, Caswell, Karniadakis, J Comput Phys, 265: 113-127 (2014). DOI:10.1016/j.jcp.2014.02.003. +**(Li2014)** + Z. Li, Y.-H. Tang, H. Lei, B. Caswell and G.E. Karniadakis, "Energy-conserving dissipative particle dynamics with temperature-dependent properties", J. Comput. Phys., 265: 113-127 (2014). DOI: 10.1016/j.jcp.2014.02.003 + +**(Li2015)** + Z. Li, A. Yazdani, A. Tartakovsky and G.E. Karniadakis, "Transport dissipative particle dynamics model for mesoscopic advection-diffusion-reaction problems", J. Chem. Phys., 143: 014101 (2015). DOI: 10.1063/1.4923254 **(Li2015_CC)** Li, Tang, Li, Karniadakis, Chem Commun, 51: 11038-11040 (2015). DOI:10.1039/C5CC01684C. -**(Li2015_JCP)** - Li, Yazdani, Tartakovsky, Karniadakis, J Chem Phys, 143: 014101 (2015). DOI:10.1063/1.4923254. - **(Liang)** Liang, Phillpot, Sinnott Phys. Rev. B79 245110, (2009), Erratum: Phys. Rev. B85 199903(E), (2012) +**(Liang2025)** + Liang, Lu, Barnett, Greengard, Jiang, arXiv:2505.09727 (2025). + **(Lisal)** M.\ Lisal, J.K. Brennan, J. Bonet Avalos, J. Chem. Phys., 135, 204105 (2011). +**(Liu)** + J. Liu, D. Li, X. Liu, J. Chem. Phys. 145, 024103 (2016). + **(Liu1)** - L.\ Liu, Y. Liu, S. V. Zybin, H. Sun and W. A. Goddard, Journal of Physical Chemistry A, 115, 11016-11022 (2011). + S. Liu, I. Grinberg, and A. M. Rappe, *J. Phys.: Condens. Matter*, **25**, 102202 (2013). **(Liu2)** + S. Liu, I. Grinberg, H. Takenaka, and A. M. Rappe, *Phys. Rev. B*, **88**, 104102 (2013). + +**(Liu3)** Liu, Bryantsev, Diallo, Goddard III, J. Am. Chem. Soc 131 (8) 2798 (2009) -**(Los and Fasolino)** - J.\ H. Los and A. Fasolino, Phys. Rev. B 68, 024107 (2003). +**(Liu4)** + L.\ Liu, Y. Liu, S. V. Zybin, H. Sun and W. A. Goddard, Journal of Physical Chemistry A, 115, 11016-11022 (2011). + +**(Lopez-Villellas)** + L. Lopez-Villellas, C. C. K. Mikkelsen, J. J. Galano-Frutos, S. Marco-Sola, J. Alastruey-Benede, P. Ibanez, P. Echenique, M. Moreto, M. C. De Rosa, and P. Garcia-Risueno, "ILVES: Accurate and Efficient Bond Length and Angle Constraints in Molecular Dynamics", J. Chem. Theory Comput. 21, 8711-8719 (2025), https://doi.org/10.1021/acs.jctc.5c01376 **(Los2017)** J.\ H. Los et al. "Extended Tersoff potential for boron nitride: Energetics and elastic properties of pristine and defective h-BN", Phys. Rev. B 96 (184108), 2017. +**(Los and Fasolino)** + J.\ H. Los and A. Fasolino, Phys. Rev. B 68, 024107 (2003). + +**(Lucy)** + L. B. Lucy, "A numerical approach to the testing of the fission hypothesis.", Astronomical Journal, 82, 1013-1024 (1977). + **(Luding, 2008)** Luding, S. (2008). Cohesive, frictional powders: contact models for tension. Granular matter, 10(4), 235. -**(Lysogorskiy)** - Lysogorskiy, van der Oord, Bochkarev, Menon, Rinaldi, Hammerschmidt, Mrovec, Thompson, Csanyi, Ortner, Drautz, npj Comp Mat, 7, 97 (2021). +**(Lutsko)** + J. F. Lutsko, J Appl Phys, 65, 2991-2997 (1989). **(Lysogorskiy21)** Lysogorskiy, van der Oord, Bochkarev, Menon, Rinaldi, Hammerschmidt, Mrovec, Thompson, Csanyi, Ortner, Drautz, npj Comp Mat, 7, 97 (2021). @@ -808,14 +1021,11 @@ Bibliography **(Maaravi)** T.\ Maaravi et al, J. Phys. Chem. C 121, 22826-22835 (2017). -**(MacKerell)** - MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field, Fischer, Gao, Guo, Ha, et al, J Phys Chem B, 102, 3586 (1998). - **(Mackay and Denniston)** Mackay, F. E., and Denniston, C., Coupling MD particles to a lattice-Boltzmann fluid through the use of conservative forces, J. Comput. Phys. 237 (2013) 289-298. -**(Mackay et al.)** - Mackay, F. E., Ollila, S.T.T., and Denniston, C., Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 184 (2013) 2021-2031. +**(MacKerell)** + MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field, Fischer, Gao, Guo, Ha, et al (1998). J Phys Chem B, 102, 3586. https://doi.org/10.1021/jp973084f **(Magda)** Magda, Tirrell, Davis, J Chem Phys, 83, 1888-1901 (1985); erratum in JCP 84, 2901 (1986). @@ -829,12 +1039,12 @@ Bibliography **(Malolepsza)** Malolepsza, Secor, Keyes, J Phys Chem B 119 (42), 13379-13384 (2015). -**(Mandadapu)** - Mandadapu, KK; Templeton, JA; Lee, JW, "Polarization as a field variable from molecular dynamics simulations." Journal of Chemical Physics (2013), 139:054115. Please refer to the standard finite element (FE) texts, e.g. T.J.R Hughes " The finite element method ", Dover 2003, for the basics of FE simulation. - **(Mandelli_1)** D. Mandelli, W. Ouyang, M. Urbakh, and O. Hod, ACS Nano 13(7), 7603-7609 (2019). +**(Maple)** + Maple, Journal of Computational Chemistry, 15, 162-182 (1994). https://doi.org/10.1002/jcc.540150207 + **(Maras)** Maras, Trushin, Stukowski, Ala-Nissila, Jonsson, Comp Phys Comm, 205, 13-21 (2016). @@ -844,14 +1054,14 @@ Bibliography **(Marshall, 2009)** Marshall, J. S. (2009). Discrete-element modeling of particulate aerosol flows. Journal of Computational Physics, 228(5), 1541-1561. -**(Martyna1992)** - Martyna, Klein, Tuckerman, J Chem Phys, 97, 2635 (1992); Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117. - -**(Martyna1994)** - Martyna, Tobias and Klein, J Chem Phys, 101, 4177 (1994). +**(Martyna)** + G. Martyna, D. Tobias, M. Klein, J. Chem. Phys. 101, 4177 (1994). **(Martyna2)** - G. Martyna, A. Hughes, M. Tuckerman, J. Chem. Phys. 110, 3275 (1999). + G. Martyna, A. Hughes, M. Tuckerman, J. Chem. Phys. 110, 3275 (1999). + +**(Martyna3)** + Martyna, Klein, Tuckerman, J Chem Phys, 97, 2635 (1992); Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117. **(Mason)** J.\ K. Mason, Acta Cryst A65, 259 (2009). @@ -866,11 +1076,17 @@ Bibliography I.D. Mayergoyz, G. Bertotti, C. Serpico (2009). Elsevier (2009) **(Mayo)** - Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909 (1990). + Mayo, Olfason, Goddard III (1990). J Phys Chem, 94, 8897-8909. https://doi.org/10.1021/j100389a010 **(Mees)** M.\ J. Mees, G. Pourtois, E. C. Neyts, B. J. Thijsse, and A. Stesmans, Phys. Rev. B 85, 134301 (2012). +**(Mehlig1)** + Mehlig, B., Heermann, D. W., & Forrest, B. M. (1992). Hybrid Monte Carlo method for condensed-matter systems. Physical Review B, 45(2), 679. + +**(Mehlig2)** + Mehlig, B., Heermann, D. W., & Forrest, B. M. (1992). Exact langevin algorithms. Molecular Physics, 76(6), 1347-1357. + **(Mei)** Mei, Davenport, Fernando, Phys Rev B, 43 4653 (1991) @@ -895,7 +1111,7 @@ Bibliography **(Milano)** G. Milano, S. Goudeau, F. Mueller-Plathe, J. Polym. Sci. B Polym. Phys. 43, 871 (2005). -**(Miller1)** +**(Miller)** T.\ F. Miller III, M. Eleftheriou, P. Pattnaik, A. Ndirango, G. J. Martyna, J. Chem. Phys., 116, 8649-8659 (2002). **(Miller2)** @@ -916,20 +1132,23 @@ Bibliography **(Mishin)** Mishin, Mehl, and Papaconstantopoulos, Acta Mater, 53, 4029 (2005). -**(Mitchell and Fincham)** - Mitchell, Fincham, J Phys Condensed Matter, 5, 1031-1038 (1993). - -**(Mitchell2011)** +**(Mitchell)** Mitchell. A non-local, ordinary-state-based viscoelasticity model for peridynamics. Sandia National Lab Report, 8064:1-28 (2011). -**(Mitchell2011a)** +**(Mitchell2)** Mitchell. A Nonlocal, Ordinary, State-Based Plasticity Model for Peridynamics. Sandia National Lab Report, 3166:1-34 (2011). +**(Mitchell and Fincham)** + Mitchell, Fincham, J Phys Condensed Matter, 5, 1031-1038 (1993). + **(Miyazaki)** Miyazaki, Okazaki, Shinoda, J Chem Theory Comput, 16, 782-793 (2020). -**(Mniszewski)** - S.\ M. Mniszewski, M. J. Cawkwell, M. E. Wall, J. Mohd-Yusof, N. Bock, T. C. Germann, and A. M. N. Niklasson, J. Chem. Theory Comput., 11, 4644 (2015). +**(Mohajeri et al., 2024)** + M. J. Mohajeri, C. Coetzee, and D. L. Schott, A software-agnostic benchmark for DEM simulation of cohesive and non-cohesive materials, Powder Technology, 447, 120136 (2024), https://doi.org/10.1016/j.powtec.2024.120136 + +**(Moltemplate)** + Jewett et al., J. Mol. Biol., 433(11), 166841 (2021) **(Monaghan)** Monaghan and Gingold, Journal of Computational Physics, 52, 374-389 (1983). @@ -955,10 +1174,13 @@ Bibliography **(Morris)** Morris, Fox, Zhu, J Comp Physics, 136, 214-226 (1997). +**(Morse)** + Morse, Physical review, 34, 57 (1929). https://doi.org/10.1103/PhysRev.34.57 + **(Moustafa)** - Sabry G. Moustafa, Andrew J. Schultz, and David A. Kofke, `Phys. Rev. E [92], 043303 (2015) `_ + Sabry G. Moustafa, Andrew J. Schultz, and David A. Kofke, *Very fast averaging of thermal properties of crystals by molecular simulation*, `Phys. Rev. E [92], 043303 (2015) `_ -**(Muller-Plathe1)** +**(Muller-Plathe)** Muller-Plathe, J Chem Phys, 106, 6082 (1997). **(Muller-Plathe2)** @@ -973,6 +1195,9 @@ Bibliography **(Nakano)** A.\ Nakano, Computer Physics Communications, 104, 59-69 (1997). +**(Nakano2)** + Nakano, Comp Phys Comm, 178, 280-289 (2008). + **(Neelov)** Neelov, Holm, J Chem Phys 132, 234103 (2010) @@ -992,7 +1217,7 @@ Bibliography Nguyen, Journal of Computational Physics, 113102, (2024). **(Nguyen and Rohskopf)** - Nguyen and Rohskopf, Journal of Computational Physics, 480, 112030, (2023). + Nguyen and Rohskopf, Journal of Computational Physics, 480, 112030, (2023). **(Nguyen and Sema)** Nguyen and Sema, https://arxiv.org/abs/2405.00306, (2024). @@ -1003,23 +1228,8 @@ Bibliography **(Nicholson and Rutledge)** Nicholson and Rutledge, J Chem Phys, 145, 244903 (2016). -**(Niklasson2002)** - A.\ M. N. Niklasson, Phys. Rev. B, 66, 155115 (2002). - -**(Niklasson2008)** - A.\ M. N. Niklasson, Phys. Rev. Lett., 100, 123004 (2008). - -**(Niklasson2014)** - A.\ M. N. Niklasson and M. Cawkwell, J. Chem. Phys., 141, 164123, (2014). - -**(Niklasson2017)** - A.\ M. N. Niklasson, J. Chem. Phys., 147, 054103 (2017). - -**(Nitol)** - Nitol, Dickel, and Barrett, Computational Materials Science 188 (2021): 110207. - -**(Noid)** - Noid, Chu, Ayton, Krishna, Izvekov, Voth, Das, Andersen, J Chem Phys 128, 134105 (2008). +**(Nicklas)** + The spline-based MEAM+SW format was first devised and used to develop potentials for bcc transition metals by Jeremy Nicklas, Michael Fellinger, and Hyoungki Park at The Ohio State University. **(Nordlund95)** Nordlund, Kai. Computational materials science 3.4 (1995): 448-456. @@ -1045,13 +1255,14 @@ Bibliography **(Okabe)** T.\ Okabe, M. Kawata, Y. Okamoto, M. Masuhiro, Chem. Phys. Lett., 335, 435-439 (2001). -**(Ollila et al.)** - Ollila, S.T.T., Denniston, C., Karttunen, M., and Ala-Nissila, T., Fluctuating lattice-Boltzmann model for complex fluids, J. Chem. Phys. 134 (2011) 064902. +**(Olsson)** + Olsson, Wallenius, Domain, Nordlund, Malerba, Physical Review B, 72, 214119 (2005). **(Omelyan)** Omelyan, Mryglod, and Folk. Phys. Rev. Lett. 86(5), 898. (2001). -**(OPLS-AA96)** Jorgensen, Maxwell, Tirado-Rives, J Am Chem Soc, 118(45), 11225-11236 (1996). +**(OPLS-AA)** + Jorgensen, W.L., Ghahremanpour, M.M., Saar, A., Tirado-Rives, J., J. Phys. Chem. B, 128(1), 250-262 (2024). **(Oppelstrup)** Oppelstrup, unpublished, 2015. Oppelstrup and Moriarty, to be published. @@ -1062,6 +1273,9 @@ Bibliography **(Otis R. Walton)** Walton, O.R., Personal Communication +**(Ouadfel)** + Ouadfel and Rothenburg "Stress-force-fabric relationship for assemblies of ellipsoids", Mechanics of Materials (2001). (`link to paper `_) + **(Ouldridge)** T.E. Ouldridge, A.A. Louis, J.P.K. Doye, J. Chem. Phys. 134, 085101 (2011). @@ -1072,9 +1286,6 @@ Bibliography W.\ Ouyang, D. Mandelli, M. Urbakh and O. Hod, Nano Lett. 18, 6009-6016 (2018). **(Ouyang2)** - W.\ Ouyang et al., J. Chem. Theory Comput. 16(1), 666-676 (2020). - -**(Ouyang_1)** W. Ouyang et al., J. Chem. Theory Comput. 16(1), 666-676 (2020). **(Ouyang6)** @@ -1083,6 +1294,12 @@ Bibliography **(Ouyang7)** W. Ouyang, et al., J. Chem. Theory Comput. 17, 7237 (2021). +**(Pagonabarraga)** + I.\ Pagonabarraga, D. Frenkel. "Dissipative particle dynamics for interacting systems.", J. Chem. Phys., 115, 5015 (2001). + +**(Palermo)** + Palermo, Wolf, Clemmer, O'Connor, Phys. Fluids, 36, 113337 (2024). + **(Palkar)** Palkar V, Kuksenok O, J. Phys. Chem. B, 126 (1), 336-346, 2022 @@ -1105,7 +1322,7 @@ Bibliography Paula Leite, Santos-Florez, and de Koning, Phys Rev E, 96, 32115 (2017). **(Pavlov1)** - D Pavlov, V Galigerov, D Kolotinskii, V Nikolskiy, V Stegailov, International Journal of High Performance Computing Applications, 38, 34-49 (2024). + Pavlov, Kolotinskii, Stegailov, "GPU-Based Molecular Dynamics of Turbulent Liquid Flows with OpenMM", Proceedings of PPAM-2022, LNCS (Springer), vol. 13826, pp. 346-358 (2023) **(Pavlov2)** Pavlov, Galigerov, Kolotinskii, Nikolskiy, Stegailov, "GPU-based Molecular Dynamics of Fluid Flows: Reaching for Turbulence", Int. J. High Perf. Comp. Appl., (2024) @@ -1117,7 +1334,7 @@ Bibliography Pedersen, J. Chem. Phys., 139, 104102 (2013). **(Pedone)** - A. Pedone, G. Malavasi, M. C. Menziani, A. N. Cormack, and U. Segre, J. Phys. Chem. B, 110, 11780 (2006) + A.\ Pedone, G. Malavasi, M. C. Menziani, A. N. Cormack, and U. Segre, J. Phys. Chem. B, 110, 11780 (2006) **(Peng)** Peng, Ren, Dudarev, Whelan, Acta Crystallogr. A, 52, 257-76 (1996). @@ -1125,12 +1342,12 @@ Bibliography **(Perram)** Perram and Rasmussen, Phys Rev E, 54, 6565-6572 (1996). -**(Petersen)** - Petersen, J Chem Phys, 103, 3668 (1995). - **(Petersen)** Petersen, Lechman, Plimpton, Grest, in' t Veld, Schunk, J Chem Phys, 132, 174106 (2010). +**(Petersen2)** + Petersen, J Chem Phys, 103, 3668 (1995). + **(Pettifor_1)** D.G. Pettifor and I.I. Oleinik, Phys. Rev. B, 59, 8487 (1999). @@ -1149,14 +1366,20 @@ Bibliography **(Piaggi)** Piaggi and Parrinello, J Chem Phys, 147, 114112 (2017). +**(Pirani)** + F. Pirani, S. Brizi, L. Roncaratti, P. Casavecchia, D. Cappelletti and F. Vecchiocattivi, Phys. Chem. Chem. Phys., 2008, 10, 5489-5503. + **(Pisarev)** V V Pisarev and S V Starikov, J. Phys.: Condens. Matter, 26, 475401 (2014). **(Plimpton)** Plimpton and Knight, JPDC, 147, 184-195 (2021). -**(PLUMED)** - G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014) +**(Plummer)** + G. Plummer, J. P. Tavenner, M. I. Mendelev, Z. Wu, J. W. Lawson, J Chemical Physics, 162, 054709 (2025). + +**(Podlozhnyuk)** + Podlozhnyuk, Pirker, Kloss, Comp. Part. Mech., 4:101-118 (2017). **(Pollock)** Pollock and Glosli, Comp Phys Comm, 95, 93 (1996). @@ -1167,27 +1390,39 @@ Bibliography **(Popov1)** A.M. Popov, I. V. Lebedeva, A. A. Knizhnik, Y. E. Lozovik and B. V. Potapkin, Chem. Phys. Lett. 536, 82-86 (2012). -**(Price1)** +**(Price)** Price and Brooks, J Chem Phys, 121, 10096 (2004). **(Price2)** Price, Stone and Alderton, Mol Phys, 52, 987 (1984). +**(Qamar)** + M. Qamar, M. Mrovec, T. Lysogorskiy, A. Bochkarev, and R. Drautz, J. Chem. Theory Comput. 19, 5151 (2023). + **(QEq/Fire)** T.-R. Shan, A. P. Thompson, S. J. Plimpton, in preparation **(Qi)** Qi and Reed, J. Phys. Chem. A 116, 10451 (2012). +**(Rackers)** + Rackers, Silva, Wang, Ponder, J Chem Theory Comput, 17, 7056-7084 (2021). + +**(Rahman)** + Rahman, Foster, Implementation of linear viscoelasticity model in PDLAMMPS (2013) and Implementation of elastic-plastic model in PDLAMMPS, technical reports, University of Texas at San Antonio (included in the LAMMPS distribution as `PDLammps_VES.pdf `_ and `PDLammps_EPS.pdf `_; see also the PDLAMMPS overview `PDLammps_overview.pdf `_). + **(Ramirez)** J.\ Ramirez, S.K. Sukumaran, B. Vorselaars and A.E. Likhtman, J. Chem. Phys. 133, 154103 (2010). **(Rappe)** - Rappe and Goddard III, Journal of Physical Chemistry, 95, 3358-3363 (1991). + A.\ K. Rappe and W. A. Goddard III, J Physical Chemistry, 95, 3358-3363 (1991). **(Ravelo)** Ravelo, Holian, Germann and Lomdahl, Phys Rev B, 70, 014103 (2004). +**(Ray)** + J. R. Ray and A. Rahman, J Chem Phys, 80, 4423 (1984). + **(ReaxFF)** A.\ C. T. van Duin, S. Dasgupta, F. Lorant, W. A. Goddard III, J Physical Chemistry, 105, 9396-9049 (2001) @@ -1198,16 +1433,25 @@ Bibliography Ree, Journal of Chemical Physics, 73, 5401 (1980). **(Reed)** - Reed, Fried, and Joannopoulos, Phys. Rev. Lett., 90, 235503 (2003). + Reed *et al.*, J. Chem. Phys. 126, 084704 (2007). **(Reed2)** Reed, J. Phys. Chem. C, 116, 2205 (2012). +**(Reed3)** + Reed, Fried, and Joannopoulos, Phys. Rev. Lett., 90, 235503 (2003). + +**(Ren)** + Ren and Ponder, J Phys Chem B, 107, 5933 (2003). + **(Rick)** S.\ W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 16141 (1994). **(Rick2)** - S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 6141 + Rick, J Chem Phys 120, 6085 (2004) + +**(Riera)** + M. Riera, C. Knight, E. Bull-Vulpe, X. Zhu, H. Agnew, D. Smith, A. Simmonett, F. Paesani, J. Chem. Phys. 159, 054802 (2023) **(Roberts)** R. Roberts (2019) "Evenly Distributing Points in a Triangle." Extreme Learning. @@ -1215,44 +1459,23 @@ Bibliography **(Rohart)** Rohart and Thiaville, Physical Review B, 88(18), 184422. (2013). +**(Rosato)** + Rosato and Guillope and Legrand, Philosophical Magazine A, 59.2, 321-336 (1989). + **(Rosenberger)** Rosenberger, Sanyal, Shell and van der Vegt, Journal of Chemical Physics, 2019, 151 (4), 044111. -**(Rubensson)** - E.\ H. Rubensson, A. M. N. Niklasson, SIAM J. Sci. Comput. 36 (2), 147-170, (2014). - **(Rutherford)** A M Rutherford and D M Duffy, J. Phys.: Condens. Matter, 19, 496201-496210 (2007). **(Ryckaert)** J.-P. Ryckaert, G. Ciccotti and H. J. C. Berendsen, J of Comp Phys, 23, 327-341 (1977). -**(SMTB-Q_1)** - N.\ Salles, O. Politano, E. Amzallag, R. Tetot, Comput. Mater. Sci. 111 (2016) 181-189 - -**(SMTB-Q_2)** - E.\ Maras, N. Salles, R. Tetot, T. Ala-Nissila, H. Jonsson, J. Phys. Chem. C 2015, 119, 10391-10399 - -**(SMTB-Q_3)** - R.\ Tetot, N. Salles, S. Landron, E. Amzallag, Surface Science 616, 19-8722 28 (2013) - -**(SRIM)** - SRIM webpage: http://www.srim.org/ - -**(SW)** - F.\ H. Stillinger, and T. A. Weber, Phys. Rev. B, 31, 5262 (1985). - -**(SWM4-NDP)** - Lamoureux, Harder, Vorobyov, Roux, MacKerell, Chem Phys Let, 418, 245-249 (2006) - **(Sadigh)** - B Sadigh, P Erhart, A Stukowski, A Caro, E Martinez, and L Zepeda-Ruiz, Phys. Rev. B, 85, 184203 (2012). - -**(Sadigh1)** B. Sadigh, P. Erhart, A. Stukowski, A. Caro, E. Martinez, and L. Zepeda-Ruiz, Phys. Rev. B **85**, 184203 (2012) **(Sadigh2)** - B. Sadigh and P. Erhart, Phys. Rev. B **86**, 134204 (2012) + B. Sadigh and P. Erhart, Phys. Rev. B **86**, 134204 (2012) **(Safran)** Safran, Statistical Thermodynamics of Surfaces, Interfaces, And Membranes, Westview Press, ISBN: 978-0813340791 (2003). @@ -1260,8 +1483,11 @@ Bibliography **(Salanne)** Salanne, Rotenberg, Jahn, Vuilleumier, Simon, Christian and Madden, Theor Chem Acc, 131, 1143 (2012). -**(Salerno)** - Salerno, Bernstein, J Chem Theory Comput, --, ---- (2018). +**(Sanderson and Searles)** + Sanderson and Searles, J Chem Phys, 164, 084121 (2026) https://doi.org/10.1063/5.0315430. + +**(Sanyal)** + T. Sanyal, M. S. Shell, "Coarse-grained models using local-density potentials optimized with the relative entropy: Application to implicit solvation.", J. Chem. Phys., 145, 034109 (2016). **(Sanyal1)** Sanyal and Shell, Journal of Chemical Physics, 2016, 145 (3), 034109. @@ -1269,6 +1495,9 @@ Bibliography **(Sanyal2)** Sanyal and Shell, Journal of Physical Chemistry B, 122 (21), 5678-5693. +**(Saomoto et al., 2023)** + H. Saomoto, N. Kikkawa, S. Moriguchi, Y. Nakata, et al., Round robin test on angle of repose: DEM simulation results collected from 16 groups around the world, Soils and Foundations, 63, 101272 (2023), https://doi.org/10.1016/j.sandf.2023.101272 + **(Scalfi)** Scalfi *et al.*, J. Chem. Phys., 153, 174704 (2020). @@ -1311,15 +1540,27 @@ Bibliography **(Sheppard)** Sheppard, Terrell, Henkelman, J Chem Phys, 128, 134106 (2008). See ref 1 in this paper for original reference to Qmin in Jonsson, Mills, Jacobsen. +**(Sherrill)** + D. G. A. Smith, L. A. Burns, K. Patkowski, and C. D. Sherrill, J. Phys. Chem. Lett., 7, 2197, (2016). + **(Shi)** Shi, Xia, Zhang, Best, Wu, Ponder, Ren, J Chem Theory Comp, 9, 4046, 2013. -**(Shinoda)** - Shinoda, DeVane, Klein, Mol Sim, 33, 27 (2007). +**(Shimoyama1996)** + N. Shimoyama, K. Sugawara, T. Mizuguchi, Y. Hayakawa, and M. Sano, Collective Motion in a System of Motile Elements, Phys. Rev. Lett. 76, 3870 (1996). + +**(Shin1)** + Y.-H. Shin, J.-Y. Son, B.-J. Lee, I. Grinberg, and A. M. Rappe, *J. Phys.: Condens. Matter*, **20**, 015224 (2008). + +**(Shin2)** + Y.-H. Shin, V. R. Cooper, I. Grinberg, and A. M. Rappe, *Phys. Rev. B*, **71**, 054104 (2005). **(Shinoda)** Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004). +**(Shinoda2)** + Shinoda, DeVane, Klein, Mol Sim, 33, 27-36 (2007). + **(Shire)** Shire, Hanley and Stratford, Comp. Part. Mech., (2020). @@ -1329,11 +1570,8 @@ Bibliography **(Siepmann)** Siepmann and Sprik, J. Chem. Phys. 102, 511 (1995). -**(Silbert)** - Silbert, Ertas, Grest, Halsey, Levine, Plimpton, Phys Rev E, 64, p 051302 (2001). - **(Silbert, 2001)** - Silbert, L. E., Ertas, D., Grest, G. S., Halsey, T. C., Levine, D., & Plimpton, S. J. (2001). Granular flow down an inclined plane: Bagnold scaling and rheology. Physical Review E, + Silbert, L. E., Ertas, D., Grest, G. S., Halsey, T. C., Levine, D., & Plimpton, S. J. (2001). Granular flow down an inclined plane: Bagnold scaling and rheology. Physical Review E, 64(5), 051302. **(Silling 2000)** Silling, J Mech Phys Solids, 48, 175-209 (2000). @@ -1347,32 +1585,47 @@ Bibliography **(Singh)** Singh and Warner, Acta Mater, 58, 5797-5805 (2010), -**(Singraber, Behler and Dellago 2019)** - Singraber, A.; Behler, J.; Dellago, C. J., Chem. Theory Comput. 2019, 15 (3), 1827-1840 - **(Singraber et al 2019)** Singraber, A.; Morawietz, T.; Behler, J.; Dellago, C., J. Chem. Theory Comput. 2019, 15 (5), 3075-3092. -**(Sirk1)** - Sirk TW, Sliozberg YR, Brennan JK, Lisal M, Andzelm JW, J Chem Phys, 136 (13) 134903, 2012. +**(Singraber, Behler and Dellago 2019)** + Singraber, A.; Behler, J.; Dellago, C. J., Chem. Theory Comput. 2019, 15 (3), 1827-1840 -**(Sirk2)** +**(Sirk)** Sirk, Moore, Brown, J Chem Phys, 138, 064505 (2013). +**(Sirk2)** + Sirk TW, Sliozberg YR, Brennan JK, Lisal M, Andzelm JW, J Chem Phys, 136 (13) 134903, 2012. + **(Skomski)** Skomski, R. (2008). Simple models of magnetism. Oxford University Press. +**(SMTB-Q_0)** + A.\ Hallil, E. Amzallag, S. Landron, R. Tetot, Surface Science 605 738-745 (2011); R. Tetot, A. Hallil, J. Creuze and I. Braems, EPL, 83 40001 (2008) + +**(SMTB-Q_1)** + N.\ Salles, O. Politano, E. Amzallag, R. Tetot, Comput. Mater. Sci. 111 (2016) 181-189 + +**(SMTB-Q_2)** + E.\ Maras, N. Salles, R. Tetot, T. Ala-Nissila, H. Jonsson, J. Phys. Chem. C 2015, 119, 10391-10399 + +**(SMTB-Q_3)** + R.\ Tetot, N. Salles, S. Landron, E. Amzallag, Surface Science 616, 19-8722 28 (2013) + **(Snodin)** B.E. Snodin, F. Randisi, M. Mosayebi, et al., J. Chem. Phys. 142, 234901 (2015). **(Son)** Son, McDaniel, Cui and Yethiraj, J Phys Chem Lett, 10, 7523 (2019). +**(SRIM)** + SRIM webpage: http://www.srim.org/ + **(Srivastava)** - Zhigilei, Wei, Srivastava, Phys. Rev. B 71, 165417 (2005). + Zhigilei, Wei and Srivastava, Phys. Rev. B 71, 165417 (2005). **(Steinbach)** - Steinbach, Brooks, J Comput Chem, 15, 667 (1994). + Steinbach, Brooks (1994). J Comput Chem, 15, 667. https://doi.org/10.1002/jcc.540150702 **(Steinhardt)** P.\ Steinhardt, D. Nelson, and M. Ronchetti, Phys. Rev. B 28, 784 (1983). @@ -1387,7 +1640,7 @@ Bibliography Stiles , Hubbard, and Kayser, J Chem Phys, 77, 6189 (1982). **(Stillinger)** - Stillinger, Weber, Phys. Rev. B 31, 5262 (1985). + Stillinger and Weber, Phys Rev B, 31, 5262 (1985). **(Stoddard)** Stoddard and Ford, Phys Rev A, 8, 1504 (1973). @@ -1407,14 +1660,14 @@ Bibliography **(Su)** Su and Goddard, Excited Electron Dynamics Modeling of Warm Dense Matter, Phys Rev Lett, 99:185003 (2007). +**(Sulc)** + P.\ Sulc, F. Romano, T.E. Ouldridge, L. Rovigatti, J.P.K. Doye, A.A. Louis, J. Chem. Phys. 137, 135101 (2012). + **(Sulc1)** P.\ Sulc, F. Romano, T. E. Ouldridge, et al., J. Chem. Phys. 140, 235102 (2014). -**(Sulc2)** - P.\ Sulc, F. Romano, T.E. Ouldridge, L. Rovigatti, J.P.K. Doye, A.A. Louis, J. Chem. Phys. 137, 135101 (2012). - **(Sun)** - Sun, J. Phys. Chem. B, 102, 7338-7364 (1998). + Sun (1998). J. Phys. Chem. B, 102, 7338-7364. https://doi.org/10.1021/jp980939v **(Surblys2019)** Surblys, Matsubara, Kikugawa, Ohara, Phys Rev E, 99, 051301(R) (2019). @@ -1425,12 +1678,21 @@ Bibliography **(Sutmann)** Sutmann, Arnold, Fahrenberger, et. al., Physical review / E 88(6), 063308 (2013) -**(Sutmann)** G. Sutmann. ScaFaCoS - a Scalable library of Fast Coulomb Solvers for particle Systems. - In Bajaj, Zavattieri, Koslowski, Siegmund, Proceedings of the Society of Engineering Science 51st Annual Technical Meeting. 2014. +**(Sutmann2)** + G. Sutmann. ScaFaCoS - a Scalable library of Fast Coulomb Solvers for particle Systems. In Bajaj, Zavattieri, Koslowski, Siegmund, Proceedings of the Society of Engineering Science 51st Annual Technical Meeting. 2014. + +**(SW)** + F.\ H. Stillinger, and T. A. Weber, Phys. Rev. B, 31, 5262 (1985). **(Swinburne)** Swinburne and Marinica, Physical Review Letters, 120, 1 (2018) +**(SWM4-NDP)** + Lamoureux, Harder, Vorobyov, Roux, MacKerell, Chem Phys Let, 418, 245-249 (2006) + +**(Szukalo)** + Szukalo, Noid "A temperature-dependent length-scale for transferable local density potentials". The Journal of Chemical Physics, 159, 074104 (2023) + **(Tadmor)** Tadmor, Elliott, Sethna, Miller and Becker, JOM, 63, 17 (2011). doi: `https://doi.org/10.1007/s11837-011-0102-6 `_ @@ -1443,45 +1705,45 @@ Bibliography **(Tang and Toennies)** J Chem Phys, 80, 3726 (1984). +**(Tavenner 2023)** + J Tavenner, M Mendelev, J Lawson, Computational Materials Science, 218, 111929 (2023). + **(Tee)** Tee and Searles, J. Chem. Phys. 156, 184101 (2022). -**(Templeton2010)** - Templeton, JA; Jones, RE; Wagner, GJ, "Application of a field-based method to spatially varying thermal transport problems in molecular dynamics." Modelling and Simulation in Materials Science and Engineering (2010), 18:085007. - -**(Templeton2011)** - Templeton, JA; Jones, RE; Lee, JW; Zimmerman, JA; Wong, BM, "A long-range electric field solver for molecular dynamics based on atomistic-to-continuum modeling." Journal of Chemical Theory and Computation (2011), 7:1736. - **(tenWolde)** P.\ R. ten Wolde, M. J. Ruiz-Montero, D. Frenkel, J. Chem. Phys. 104, 9932 (1996). +**(Tersoff)** + J.\ Tersoff, Phys Rev B, 39, 5566 (1989); errata (PRB 41, 3248) + **(Tersoff_1)** J.\ Tersoff, Phys Rev B, 37, 6991 (1988). **(Tersoff_2)** J.\ Tersoff, Phys Rev B, 38, 9902 (1988). -**(Tersoff_3)** - J.\ Tersoff, Phys Rev B, 39, 5566 (1989); errata (PRB 41, 3248) - **(Theodorou)** Theodorou, Suter, Macromolecules, 18, 1206 (1985). **(Thole)** Chem Phys, 59, 341 (1981). -**(Thompson1)** +**(Thompson)** Thompson, Plimpton, Mattson, J Chem Phys, 131, 154107 (2009). **(Thompson2)** Thompson, Swiler, Trott, Foiles, Tucker, J Comp Phys, 285, 316 (2015). **(Thornton et al, 2013)** - Thornton, C., Cummins, S. J., & Cleary, P. W. (2013). An investigation of the comparative behavior of alternative contact force models during inelastic collisions. Powder + Thornton, C., Cummins, S. J., & Cleary, P. W. (2013). An investigation of the comparative behavior of alternative contact force models during inelastic collisions. Powder Technology, 233, 30-46. **(Thornton, 1991)** Thornton, C. (1991). Interparticle sliding in the presence of adhesion. J. Phys. D: Appl. Phys. 24 1942 +**(Tkatchenko and Scheffler 2009)** + Tkatchenko, A.; Scheffler, M., Phys. Rev. Lett. 2009, 102 (7), 073005. + **(To)** Q.D. To, V.H. Vu, G. Lauriat, and C. Leonard. J. Math. Phys. 56, 103101 (2015). @@ -1501,22 +1763,22 @@ Bibliography G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014) **(Tsuji et al, 1992)** - Tsuji, Y., Tanaka, T., & Ishida, T. (1992). Lagrangian numerical simulation of plug flow of cohesionless particles in a horizontal pipe. Powder technology, 71(3), + Tsuji, Y., Tanaka, T., & Ishida, T. (1992). Lagrangian numerical simulation of plug flow of cohesionless particles in a horizontal pipe. Powder technology, 71(3), 239-250. **(Tsuzuki)** Tsuzuki, Branicio, Rino, Comput Phys Comm, 177, 518 (2007). -**(Tuckerman1)** - M.\ Tuckerman and B. Berne, J Chem Phys, 99, 2796 (1993). +**(Tuckerman)** + Tuckerman, Alejandre, Lopez-Rendon, Jochim, and Martyna, J Phys A: Math Gen, 39, 5629 (2006). **(Tuckerman2)** - Tuckerman, Alejandre, Lopez-Rendon, Jochim, and Martyna, J Phys A: Math Gen, 39, 5629 (2006). + Tuckerman, Mundy, Balasubramanian, and Klein, J Chem Phys 106, 5615 (1997). **(Tuckerman3)** - Tuckerman, Berne and Martyna, J Chem Phys, 97, p 1990 (1992). + M.\ Tuckerman and B. Berne, J Chem Phys, 99, 2796 (1993). **(Tuckerman4)** - Tuckerman, Mundy, Balasubramanian, Klein, J Chem Phys, 106, 5615 (1997). + Tuckerman, Berne and Martyna, J Chem Phys, 97, p 1990 (1992). **(Tyagi)** Tyagi, Suzen, Sega, Barbosa, Kantorovich, Holm, J Chem Phys, 132, 154112 (2010) @@ -1530,14 +1792,14 @@ Bibliography **(Valone)** Valone, Baskes, Martin, Phys. Rev. B, 73, 214209 (2006). -**(vanWijk)** - M. M. van Wijk, A. Schuring, M. I. Katsnelson, and A. Fasolino, Physical Review Letters, 113, 135504 (2014) - **(Van Workum)** K. Van Workum et al., J. Chem. Phys. 125 144506 (2006) +**(vanWijk)** + M. M. van Wijk, A. Schuring, M. I. Katsnelson, and A. Fasolino, Physical Review Letters, 113, 135504 (2014) + **(Vargas and McCarthy 2001)** - Vargas, W.L. and McCarthy, J.J. (2001). + Vargas, W.L. and McCarthy, J.J. (2001). Heat conduction in granular materials. AIChE Journal, 47(5), 1052-1059. **(Varshalovich)** Varshalovich, Moskalev, Khersonskii, Quantum Theory of Angular Momentum, World Scientific, Singapore (1987). @@ -1548,9 +1810,6 @@ Bibliography **(Vashishta2007)** P.\ Vashishta, R. K. Kalia, A. Nakano, J. P. Rino. J. Appl. Phys. 101, 103515 (2007). -**(Veld)** - In 't Veld, Ismail, Grest, J Chem Phys, 127, 144711 (2007). - **(Verstraelen)** Verstraelen, Ayers, Speybroeck, Waroquier, J. Chem. Phys. 138, 074108 (2013). @@ -1572,20 +1831,14 @@ Bibliography **(Voter2013)** S.\ Y. Kim, D. Perez, A. F. Voter, J Chem Phys, 139, 144110 (2013). -**(Wagner)** - Wagner, GJ; Jones, RE; Templeton, JA; Parks, MA, "An atomistic-to-continuum coupling method for heat transfer in solids." Special Issue of Computer Methods and Applied Mechanics (2008) 197:3351. +**(Vyas et al, 2025)** + Vyas D. R., Ottino J. M., Lueptow R. M., & Umbanhowar P. B. (2025). Improved Velocity-Verlet Algorithm for the Discrete Element Method. Computer Physics Communications, 109524. -**(Wang et al, 2015)** - Wang, Y., Alonso-Marroquin, F., & Guo, W. W. (2015). Rolling and sliding in 3-D discrete element models. Particuology, 23, 49-55. - -**(Wang2020)** - X. Wang, S. Ramirez-Hinestrosa, J. Dobnikar, and D. Frenkel, Phys. Chem. Chem. Phys. 22, 10624 (2020). - -**(Wang1)** +**(Wang)** J.\ Wang, H. S. Yu, P. A. Langston, F. Y. Fraige, Granular Matter, 13, 1 (2011). **(Wang2)** - J.\ Wang, and A. Rockett, Phys. Rev. B, 43, 12571 (1991). + Wang, Acta Geotechnica, 4, p 117-127 (2009). **(Wang3)** Wang and Holm, J Chem Phys, 115, 6277 (2001). @@ -1593,11 +1846,23 @@ Bibliography **(Wang4)** Wang, Van Hove, Ross, Baskes, J. Chem. Phys., 121, 5410 (2004). +**(Wang5)** + J.\ Wang, and A. Rockett, Phys. Rev. B, 43, 12571 (1991). + +**(Wang2020)** + X. Wang, S. Ramirez-Hinestrosa, J. Dobnikar, and D. Frenkel, Phys. Chem. Chem. Phys. 22, 10624 (2020). + +**(Wang and Mora)** + Wang and Mora, Advances in Geocomputing, 119, p 183-228 (2009). + +**(Wang et al, 2015)** + Wang, Y., Alonso-Marroquin, F., & Guo, W. W. (2015). Rolling and sliding in 3-D discrete element models. Particuology, 23, 49-55. + **(Ward)** D.K. Ward, X.W. Zhou, B.M. Wong, F.P. Doty, and J.A. Zimmerman, Phys. Rev. B, 85,115206 (2012). **(Warren)** - Warren, Phys Rev E, 68, 066702 (2003). + P. B. Warren, "Vapor-liquid coexistence in many-body dissipative particle dynamics.", Phys. Rev. E, 68, 066702 (2003). **(Watkins)** Watkins and Jorgensen, J Phys Chem A, 105, 4118-4125 (2001). @@ -1639,11 +1904,23 @@ Bibliography Xie, S.R., Rupp, M. & Hennig, R.G. Ultra-fast interpretable machine-learning potentials. npj Comput Mater 9, 162 (2023). https://doi.org/10.1038/s41524-023-01092-7 **(Yade-DEM)** - V. Smilauer et al. (2021), Yade Documentation 3rd ed. + V. Smilauer et al. (2021), Yade Documentation 3rd ed. The Yade Project. DOI:10.5281/zenodo.5705394 (https://yade-dem.org/doc/) + +**(Yan)** + `Yan, Marko, Phys Rev Lett, 93, 108108 (2004). `_ + +**(Yang)** + Yang, Rakhsha, Hu, Negrut, J. Comp. Physics, 458, 111079 (2022). **(Yanxon2020)** Yanxon, Zagaceta, Tang, Matteson, Zhu, Mach. Learn.: Sci. Technol. 2, 027001 (2020). +**(Yao1)** + Y. Yao, ..., W. Ouyang, J. Phys. Chem. C, 128, 6836 (2024). + +**(Yao2)** + Y. Yao, ..., W. Ouyang, Adv. Sci. 12, 2415884 (2025). + **(Yeh)** Yeh and Berkowitz, J Chem Phys, 111, 3155 (1999). @@ -1659,53 +1936,32 @@ Bibliography **(ZBL)** J.F. Ziegler, J.P. Biersack, U. Littmark, 'Stopping and Ranges of Ions in Matter' Vol 1, 1985, Pergamon Press. -**(Zhang1)** - Zhang and Makse, Phys Rev E, 72, p 011301 (2005). +**(Zhang)** + Zhang, J Chem Phys, 106, 6102 (1997). **(Zhang2)** - Zhang and Trinkle, Computational Materials Science, 124, 204-210 (2016). + Zhang, Glotzer, Nanoletters, 4, 1407-1413 (2004). **(Zhang3)** - Zhang, Glotzer, Nanoletters, 4, 1407-1413 (2004). + Zhang, Lussetti, de Souza, Muller-Plathe, J Phys Chem B, 109, 15060-15067 (2005). **(Zhang4)** - Zhang, J Chem Phys, 106, 6102 (1997). + Zhang and Makse, Phys Rev E, 72, p 011301 (2005). **(Zhang5)** - Zhang, Lussetti, de Souza, Muller-Plathe, J Phys Chem B, 109, 15060-15067 (2005). - -**(Zhigilei1)** - Volkov and Zhigilei, ACS Nano 4, 6187 (2010). - -**(Zhigilei2)** - Volkov, Simov, Zhigilei, ASME paper IMECE2008, 68021 (2008). - -**(Zhigilei3)** - Volkov, Zhigilei, J. Phys. Chem. C 114, 5513 (2010). - -**(Zhigilei4)** - Wittmaack, Banna, Volkov, Zhigilei, Carbon 130, 69 (2018). - -**(Zhigilei5)** - Wittmaack, Volkov, Zhigilei, Compos. Sci. Technol. 166, 66 (2018). - -**(Zhigilei6)** - Wittmaack, Volkov, Zhigilei, Carbon 143, 587 (2019). - -**(Zhigilei7)** - Volkov, Zhigilei, Phys. Rev. Lett. 104, 215902 (2010). + Zhang and Trinkle, Computational Materials Science, 124, 204-210 (2016). -**(Zhigilei8)** - Volkov, Shiga, Nicholson, Shiomi, Zhigilei, J. Appl. Phys. 111, 053501 (2012). +**(Zhen)** + Y. Zhen, C. Chu, Comp Phys Comm, 183, 261-265 (2012). -**(Zhigilei9)** - Volkov, Zhigilei, Appl. Phys. Lett. 101, 043113 (2012). +**(Zhigilei)** + Volkov and Zhigilei, ACS Nano 4, 6187 (2010). -**(Zhigilei10)** - Jacobs, Nicholson, Zemer, Volkov, Zhigilei, Phys. Rev. B 86, 165414 (2012). +**(Zhou)** + X.W. Zhou, D.K. Ward, M. Foster (TBP). -**(Zhou1)** - Zhou, Saidi, Fichthorn, J Phys Chem C, 118(6), 3366-3374 (2014). +**(Zhou2)** + Zhou, submitted for publication (2010). Please contact Xiaowang Zhou (Sandia) for details via email at xzhou at sandia.gov. **(Zhou3)** X.\ W. Zhou, M. E. Foster, R. E. Jones, P. Yang, H. Fan, and F. P. Doty, J. Mater. Sci. Res., 4, 15 (2015). @@ -1713,18 +1969,23 @@ Bibliography **(Zhou4)** X.\ W. Zhou, M. E. Foster, J. A. Ronevich, and C. W. San Marchi, J. Comp. Chem., 41, 1299 (2020). +**(Zhou5)** + Zhou, Saidi, Fichthorn, J Phys Chem C, 118(6), 3366-3374 (2014). + +**(Zhou6)** + Zhou, Bartelt, Sills, Physical Review B, 103, 014108 (2021). + **(Zhu)** Zhu, Tajkhorshid, and Schulten, Biophys. J. 83, 154 (2002). **(Ziegler)** J.F. Ziegler, J. P. Biersack and U. Littmark, "The Stopping and Range of Ions in Matter", Volume 1, Pergamon, 1985. -**(Zimmerman2004)** - Zimmerman, JA; Webb, EB; Hoyt, JJ;. Jones, RE; Klein, PA; Bammann, DJ, "Calculation of stress in atomistic simulation." Special Issue of Modelling and Simulation in Materials Science and Engineering (2004),12:S319. - -**(Zimmerman2010)** - Zimmerman, JA; Jones, RE; Templeton, JA, "A material frame approach for evaluating continuum variables in atomistic simulations." Journal of Computational Physics (2010), 229:2364. +**(Zunker and Kamrin, 2024)** + Zunker, W., & Kamrin, K. (2024). A mechanically-derived contact model for adhesive elastic-perfectly plastic particles, Part I: Utilizing the method of dimensionality reduction. Journal of the Mechanics and Physics of Solids, 183, 105492. -**(electronic stopping)** - Wikipedia - Electronic Stopping Power: https://en.wikipedia.org/wiki/Stopping_power_%28particle_radiation%29 +**(Zunker and Kamrin, 2024b)** + Zunker, W., & Kamrin, K. (2024). A mechanically-derived contact model for adhesive elastic-perfectly plastic particles, Part II: Contact under high compaction-modeling a bulk elastic response. Journal of the Mechanics and Physics of Solids, 183, 105493. +**(Zunker et al, 2025)** + Zunker, W., Dunatunga, S., Thakur, S., Tang, P., & Kamrin, K. (2025). Experimentally validated DEM for large deformation powder compaction: Mechanically-derived contact model and screening of non-physical contacts. Powder Technology, 120972. diff --git a/doc/src/Howto_bioFF.rst b/doc/src/Howto_bioFF.rst index 81ef6ac0f76..5aa9b71cef5 100644 --- a/doc/src/Howto_bioFF.rst +++ b/doc/src/Howto_bioFF.rst @@ -382,7 +382,7 @@ compatible with a subset of OPLS interactions. .. _howto-Jorgensen: -**(Jorgensen)** Jorgensen, Tirado-Rives (1988). J Am Chem Soc, 110, 1657-1666. https://doi.org/10.1021/ja00214a001 +**(Jorgensen2)** Jorgensen, Tirado-Rives (1988). J Am Chem Soc, 110, 1657-1666. https://doi.org/10.1021/ja00214a001 .. _howto-Maple: diff --git a/doc/src/Howto_bpm.rst b/doc/src/Howto_bpm.rst index cbf20941143..2a27a2904a8 100644 --- a/doc/src/Howto_bpm.rst +++ b/doc/src/Howto_bpm.rst @@ -19,7 +19,7 @@ orientation for rotational models. This produces a stress-free initial state. Furthermore, bonds are allowed to break under large strains, producing fracture. The examples/bpm directory has sample input scripts for simulations of the fragmentation of an impacted plate and the -pouring of extended, elastic bodies. See :ref:`(Clemmer) ` +pouring of extended, elastic bodies. See :ref:`(Clemmer2) ` for more general information on the approach and the LAMMPS implementation. Example movies illustrating some of these capabilities are found at https://www.lammps.org/gallery/bpmpackage/. @@ -181,4 +181,4 @@ the following are currently compatible with BPM bond styles: .. _howto-Clemmer: -**(Clemmer)** Clemmer, Monti, Lechman, Soft Matter, 20, 1702 (2024). +**(Clemmer2)** Clemmer, Monti, Lechman, Soft Matter, 20, 1702 (2024). diff --git a/doc/src/Howto_kappa.rst b/doc/src/Howto_kappa.rst index d4dc5e92a81..933738e9a33 100644 --- a/doc/src/Howto_kappa.rst +++ b/doc/src/Howto_kappa.rst @@ -68,7 +68,7 @@ formalism. .. _howto-Ikeshoji: -**(Ikeshoji)** Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261 +**(Ikeshoji2)** Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261 (1994). .. _howto-Wirnsberger: diff --git a/doc/src/Howto_ldd.rst b/doc/src/Howto_ldd.rst index 9edf4b3d928..57990d619d7 100644 --- a/doc/src/Howto_ldd.rst +++ b/doc/src/Howto_ldd.rst @@ -371,15 +371,15 @@ different CG studies and are listed below: .. _DeLyser1: -**(DeLyser)** DeLyser, Noid. "Extending Pressure-Matching to Inhomogeneous Systems via Local-Density Potentials." The Journal of Chemical Physics, 147, no. 13: 134111 (2017) +**(DeLyser2)** DeLyser, Noid. "Extending Pressure-Matching to Inhomogeneous Systems via Local-Density Potentials." The Journal of Chemical Physics, 147, no. 13: 134111 (2017) .. _DeLyser2: -**(DeLyser)** DeLyser, Noid. "Analysis of local density potentials." The Journal of Chemical Physics, 151, no. 22:224106 (2019) +**(DeLyser3)** DeLyser, Noid. "Analysis of local density potentials." The Journal of Chemical Physics, 151, no. 22:224106 (2019) .. _DeLyser3: -**(DeLyser)** DeLyser, Noid "Bottom-up coarse-grained models for external fields and interfaces" The Journal of Chemical Physics 153, 224103 (2020) +**(DeLyser4)** DeLyser, Noid "Bottom-up coarse-grained models for external fields and interfaces" The Journal of Chemical Physics 153, 224103 (2020) .. _DeLyser4: @@ -399,4 +399,4 @@ different CG studies and are listed below: .. _Lesniewski2: -**(Lesniewski)** Lesniewski, DeLyser, W. G. Noid "Progress toward a better BOCS: systematic coarse-graining with local density potentials" In Prep 2026 +**(Lesniewski2)** Lesniewski, DeLyser, W. G. Noid "Progress toward a better BOCS: systematic coarse-graining with local density potentials" In Prep 2026 diff --git a/doc/src/Howto_tip5p.rst b/doc/src/Howto_tip5p.rst index 9956b6fa0cf..08de026cef0 100644 --- a/doc/src/Howto_tip5p.rst +++ b/doc/src/Howto_tip5p.rst @@ -29,7 +29,7 @@ sites, those need to be assigned a tiny non-zero mass. The table below lists the force field parameters (in real :doc:`units `) to for a the TIP5P model with a cutoff :ref:`(Mahoney) -` and the TIP5P-E model :ref:`(Rick) ` for use with a +` and the TIP5P-E model :ref:`(Rick2) ` for use with a long-range Coulombic solver (e.g. Ewald or PPPM in LAMMPS). .. list-table:: @@ -163,4 +163,4 @@ Wikipedia also has a nice article on `water models `, :ref:`(Silling 2007) `, and :ref:`(Parks) `. The *ves* and *eps* formulations are from -:ref:`(Mitchell 2011a) ` and :ref:`(Mitchell 2011b) +:ref:`(Mitchell) ` and :ref:`(Mitchell2) `; the underlying state-based viscoplasticity theory is :ref:`(Foster 2010) `, and the original PDLAMMPS implementations of these two models by Rahman and Foster are described in @@ -274,13 +274,13 @@ none .. _Mitchell2011-bpm: -**(Mitchell 2011a)** Mitchell. A non-local, ordinary-state-based +**(Mitchell)** Mitchell. A non-local, ordinary-state-based viscoelasticity model for peridynamics. Sandia National Lab Report, 8064:1-28 (2011). .. _Mitchell2011a-bpm: -**(Mitchell 2011b)** Mitchell. A Nonlocal, Ordinary, State-Based +**(Mitchell2)** Mitchell. A Nonlocal, Ordinary, State-Based Plasticity Model for Peridynamics. Sandia National Lab Report, 3166:1-34 (2011). diff --git a/doc/src/bond_bpm_rotational.rst b/doc/src/bond_bpm_rotational.rst index e9a3570def5..967c9881645 100644 --- a/doc/src/bond_bpm_rotational.rst +++ b/doc/src/bond_bpm_rotational.rst @@ -87,7 +87,7 @@ In addition, bending and twisting torques, proportional to angular bending and twisting displacements with stiffnesses of :math:`k_\mathrm{bend}` and :math:`k_\mathrm{twist}`, respectively, are also applied to particles. Details on the calculations of shear and -angular displacements can be found in :ref:`(Wang) `, +angular displacements can be found in :ref:`(Wang2) `, :ref:`(Wang and Mora) `, and/or :ref:`(Alkuino et al) ` depending on the *frame* (discussed below). @@ -126,7 +126,7 @@ respectively. Finally, additional damping forces and torques are applied to the two particles. A force is applied proportional to the difference in the normal velocity of particles using a similar construction to that of -dissipative particle dynamics :ref:`(Groot and Warren) `: +dissipative particle dynamics :ref:`(Groot) `: .. math:: @@ -202,7 +202,7 @@ details can be found in the :doc:`how to ` page on BPMs. The *frame* setting determines the reference used to calculate the relative displacement and rotation. The *particle* option uses the -frame of one particle as described in :ref:`(Wang) ` and +frame of one particle as described in :ref:`(Wang2) ` and :ref:`(Wang and Mora) `. This determination is based on particle ID in LAMMPS. The *average* option (the default) defines a central frame across the two particles as described in :ref:`(Alkuino et @@ -333,7 +333,7 @@ The option defaults are *overlay/pair* = *no*, *smooth* = *yes*, *normalize* = * .. _Wang2009: -**(Wang)** Wang, Acta Geotechnica, 4, +**(Wang2)** Wang, Acta Geotechnica, 4, p 117-127 (2009). .. _Wang2009b: @@ -348,7 +348,7 @@ p 117-127 (2009). .. _Groot3: -**(Groot and Warren)** Groot and Warren, J Chem Phys, 107, 4423-35 (1997). +**(Groot)** Groot and Warren, J Chem Phys, 107, 4423-35 (1997). .. _Wang20152: diff --git a/doc/src/bond_bpm_spring.rst b/doc/src/bond_bpm_spring.rst index f99d2f3777a..ddef6e14a07 100644 --- a/doc/src/bond_bpm_spring.rst +++ b/doc/src/bond_bpm_spring.rst @@ -69,7 +69,7 @@ the system will not reset the reference state of a bond. This bond style only applies central-body forces which conserve the translational and rotational degrees of freedom of a bonded set of particles based on a model described by Clemmer and Robbins -:ref:`(Clemmer) `. The force has a magnitude of +:ref:`(Clemmer3) `. The force has a magnitude of .. math:: @@ -265,7 +265,7 @@ The option defaults are *overlay/pair* = *no*, *smooth* = *yes*, *normalize* = * .. _fragment-Clemmer: -**(Clemmer)** Clemmer and Robbins, Phys. Rev. Lett. (2022). +**(Clemmer3)** Clemmer and Robbins, Phys. Rev. Lett. (2022). .. _Groot4: diff --git a/doc/src/bond_bpm_spring_plastic.rst b/doc/src/bond_bpm_spring_plastic.rst index e287247a6bc..0c2ede35588 100644 --- a/doc/src/bond_bpm_spring_plastic.rst +++ b/doc/src/bond_bpm_spring_plastic.rst @@ -77,7 +77,7 @@ or extension, it will plastically activate and :math:`r_\mathrm{eq}` will evolve to ensure :math:`|(r-r_\mathrm{eq})/r_\mathrm{eq}|` never exceeds :math:`\epsilon_p`. Therefore, if a bond is continually loaded in either tension or compression, the force will initially grow elastically before plateauing. See -:ref:`(Clemmer) ` for more details on these mechanics. +:ref:`(Clemmer4) ` for more details on these mechanics. Bonds will break at a strain of :math:`\epsilon_c`. This is done by setting the bond type to 0 such that forces are no longer computed. @@ -185,5 +185,5 @@ The option defaults are *overlay/pair* = *no*, *smooth* = *yes*, *normalize* = * .. _plastic-Clemmer: -**(Clemmer)** Clemmer and Lechman, Powder Technology (2025). +**(Clemmer4)** Clemmer and Lechman, Powder Technology (2025). diff --git a/doc/src/bond_oxdna.rst b/doc/src/bond_oxdna.rst index 9bbc28a5534..cb102522bc8 100644 --- a/doc/src/bond_oxdna.rst +++ b/doc/src/bond_oxdna.rst @@ -143,7 +143,7 @@ Please cite also the relevant oxDNA/oxRNA publications. These are :ref:`(Bonato) ` for oxDNA3, :ref:`(Sulc1) ` for oxRNA2 and for sequence-specific hydrogen-bonding and stacking interactions -:ref:`(Sulc2) `. +:ref:`(Sulc) `. ---------- @@ -228,4 +228,4 @@ none .. _Sulc02: -**(Sulc2)** P. Sulc, F. Romano, T.E. Ouldridge, L. Rovigatti, J.P.K. Doye, A.A. Louis, J. Chem. Phys. 137, 135101 (2012). +**(Sulc)** P. Sulc, F. Romano, T.E. Ouldridge, L. Rovigatti, J.P.K. Doye, A.A. Louis, J. Chem. Phys. 137, 135101 (2012). diff --git a/doc/src/compute_pace.rst b/doc/src/compute_pace.rst index b18903f5540..d328c5f7748 100644 --- a/doc/src/compute_pace.rst +++ b/doc/src/compute_pace.rst @@ -43,7 +43,7 @@ cluster expansion (ACE) descriptors of the atoms in a group. ACE descriptors are highly general atomic descriptors, encoding the radial and angular distribution of neighbor atoms, up to arbitrary bond order (rank). The detailed mathematical definition is given in the paper by -:ref:`(Drautz) `. These descriptors are used in the +:ref:`(Drautz19) `. These descriptors are used in the :doc:`pace pair_style `. Quantities obtained from `compute pace` are related to those used in :doc:`pace pair_style ` to evaluate atomic energies, forces, and stresses for linear ACE models. @@ -53,13 +53,13 @@ For example, the energy for a linear ACE model is calculated as: B_{i,\boldsymbol{\boldsymbol{\nu}}}`. The ACE descriptors for atom `i` :math:`B_{i,\boldsymbol{\nu}}`, and :math:`c_{\nu}` are linear model parameters. The detailed definition and indexing convention for ACE -descriptors is given in :ref:`(Drautz) `. In short, body +descriptors is given in :ref:`(Drautz19) `. In short, body order :math:`N`, angular character, radial character, and chemical elements in the *N-body* descriptor are encoded by :math:`\nu`. In the :doc:`pace pair_style `, the linear model parameters and the ACE descriptors are combined for efficient evaluation of energies and forces. The details and benefits of this efficient implementation are -given in :ref:`(Lysogorskiy) `, but the combined +given in :ref:`(Lysogorskiy21) `, but the combined descriptors and linear model parameters for the purposes of `compute pace` may be expressed in terms of the ACE descriptors mentioned above. @@ -68,7 +68,7 @@ pace` may be expressed in terms of the ACE descriptors mentioned above. where the bracketed terms on the right-hand side are the combined functions with linear model parameters typically provided in the `.yace` potential file for `pace pair_style`. When these bracketed terms are multiplied by the -products of the atomic base from :ref:`(Drautz) `, +products of the atomic base from :ref:`(Drautz19) `, :math:`A_{i,\boldsymbol{\nu'}}`, the ACE descriptors are recovered but they are also scaled by linear model parameters. The generalized coupling coefficients, written in short-hand here as :math:`C(\boldsymbol{\nu}')`, are the generalized @@ -92,7 +92,7 @@ The coefficient file, `.yace`, ultimately defines the number of ACE descriptors to be computed, their maximum body-order, the degree of angular character they have, the degree of radial character they have, the chemical character (which element-element interactions are encoded by descriptors), -and other hyper-parameters defined in :ref:`(Drautz) `. These may +and other hyper-parameters defined in :ref:`(Drautz19) `. These may be modeled after the potential files in :doc:`pace pair_style `, and have the same format. Details on how to generate the coefficient files to train ACE models may be found in `FitSNAP `_. @@ -242,11 +242,11 @@ The optional keyword defaults are *bikflag* = 0, .. _Drautz19: -**(Drautz)** Drautz, Phys Rev B, 99, 014104 (2019). +**(Drautz19)** Drautz, Phys Rev B, 99, 014104 (2019). .. _Lysogorskiy21: -**(Lysogorskiy)** Lysogorskiy, van der Oord, Bochkarev, Menon, Rinaldi, Hammerschmidt, Mrovec, Thompson, Csanyi, Ortner, Drautz, npj Comp Mat, 7, 97 (2021). +**(Lysogorskiy21)** Lysogorskiy, van der Oord, Bochkarev, Menon, Rinaldi, Hammerschmidt, Mrovec, Thompson, Csanyi, Ortner, Drautz, npj Comp Mat, 7, 97 (2021). .. _Goff23: diff --git a/doc/src/compute_sna_atom.rst b/doc/src/compute_sna_atom.rst index d80f779f1a4..885939cb497 100644 --- a/doc/src/compute_sna_atom.rst +++ b/doc/src/compute_sna_atom.rst @@ -123,13 +123,13 @@ target data. Bispectrum components of an atom are order parameters characterizing the radial and angular distribution of neighbor atoms. The detailed mathematical definition is given in the paper by Thompson et -al. :ref:`(Thompson) ` +al. :ref:`(Thompson2) ` The position of a neighbor atom *i'* relative to a central atom *i* is a point within the 3D ball of radius :math:`R_{ii'}` = *rcutfac* :math:`(R_i + R_i')` -Bartok et al. :ref:`(Bartok) `, proposed mapping this 3D +Bartok et al. :ref:`(Bartok2010) `, proposed mapping this 3D ball onto the 3-sphere, the surface of the unit ball in a four-dimensional space. The radial distance *r* within *R_ii'* is mapped on to a third polar angle :math:`\theta_0` defined by, @@ -172,7 +172,7 @@ The expansion coefficients :math:`u^j_{m,m'}` are complex-valued and they are not directly useful as descriptors, because they are not invariant under rotation of the polar coordinate frame. However, the following scalar triple products of expansion coefficients can be shown -to be real-valued and invariant under rotation :ref:`(Bartok) +to be real-valued and invariant under rotation :ref:`(Bartok2010) `. .. math:: @@ -640,11 +640,11 @@ The optional keyword defaults are *rmin0* = 0, .. _Thompson20141: -**(Thompson)** Thompson, Swiler, Trott, Foiles, Tucker, J Comp Phys, 285, 316, (2015). +**(Thompson2)** Thompson, Swiler, Trott, Foiles, Tucker, J Comp Phys, 285, 316, (2015). .. _Bartok20101: -**(Bartok)** Bartok, Payne, Risi, Csanyi, Phys Rev Lett, 104, 136403 (2010). +**(Bartok2010)** Bartok, Payne, Kondor, Csanyi, Phys Rev Lett, 104, 136403 (2010). .. _Meremianin2006: diff --git a/doc/src/fix_box_relax.rst b/doc/src/fix_box_relax.rst index 7e9ccb2c2d8..1bb8c0c47dd 100644 --- a/doc/src/fix_box_relax.rst +++ b/doc/src/fix_box_relax.rst @@ -206,7 +206,7 @@ function then is: where *U* is the system potential energy, :math:`P_t` is the desired hydrostatic pressure, :math:`V` and :math:`V_0` are the system and reference volumes, respectively. :math:`E_{strain}` is the strain energy expression -proposed by Parrinello and Rahman :ref:`(Parrinello1981) `. +proposed by Parrinello and Rahman :ref:`(Parrinello) `. Taking derivatives of *E* w.r.t. the box dimensions, and setting these to zero, we find that at the minimum of the objective function, the global system stress tensor **P** will satisfy the relation: @@ -378,4 +378,4 @@ The keyword defaults are dilate = all, vmax = 0.0001, nreset = 0. .. _Parrinello1981: -**(Parrinello1981)** Parrinello and Rahman, J Appl Phys, 52, 7182 (1981). +**(Parrinello)** Parrinello and Rahman, J Appl Phys, 52, 7182 (1981). diff --git a/doc/src/fix_drude_transform.rst b/doc/src/fix_drude_transform.rst index f24dad2555d..c7f49a7b152 100644 --- a/doc/src/fix_drude_transform.rst +++ b/doc/src/fix_drude_transform.rst @@ -32,7 +32,7 @@ Description Transform the coordinates of Drude oscillators from real to reduced and back for thermalizing the Drude oscillators as described in -:ref:`(Lamoureux) ` using a Nose-Hoover thermostat. This fix is +:ref:`(Lamoureux and Roux) ` using a Nose-Hoover thermostat. This fix is designed to be used with the :doc:`thermalized Drude oscillator model `. Polarizable models in LAMMPS are described on the :doc:`Howto polarizable ` doc page. @@ -211,4 +211,4 @@ none .. _Lamoureux1: -**(Lamoureux)** Lamoureux and Roux, J Chem Phys, 119, 3025-3039 (2003). +**(Lamoureux and Roux)** Lamoureux and Roux, J Chem Phys, 119, 3025-3039 (2003). diff --git a/doc/src/fix_ehex.rst b/doc/src/fix_ehex.rst index 7af88c36fde..3234a33a79b 100644 --- a/doc/src/fix_ehex.rst +++ b/doc/src/fix_ehex.rst @@ -54,7 +54,7 @@ Description This fix implements the asymmetric version of the enhanced heat exchange algorithm :ref:`(Wirnsberger) `. The eHEX algorithm is -an extension of the heat exchange algorithm :ref:`(Ikeshoji) ` and +an extension of the heat exchange algorithm :ref:`(Ikeshoji2) ` and adds an additional coordinate integration to account for higher-order truncation terms in the operator splitting. The original HEX algorithm (implemented as :doc:`fix heat `) is known to @@ -198,7 +198,7 @@ none .. _Ikeshoji: -**(Ikeshoji)** Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261 (1994). +**(Ikeshoji2)** Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261 (1994). .. _Wirnsberger: diff --git a/doc/src/fix_ffl.rst b/doc/src/fix_ffl.rst index 04e4d9be909..5cc3df02a57 100644 --- a/doc/src/fix_ffl.rst +++ b/doc/src/fix_ffl.rst @@ -70,7 +70,7 @@ The flipping type *flip-type* can be chosen between 4 types described in :ref:`(Hijazi) `. The flipping operation occurs during the thermostatting step and it flips the momenta of the atoms. If no_flip is chosen, no flip will be executed and the integration will be the same as a standard -Langevin thermostat :ref:`(Bussi) `. The other flipping types are : rescale - hard - soft. +Langevin thermostat :ref:`(Bussi2) `. The other flipping types are : rescale - hard - soft. Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -122,8 +122,8 @@ Related commands .. _Hijazi: -.. _Bussi3: - **(Hijazi)** M. Hijazi, D. M. Wilkins, M. Ceriotti, J. Chem. Phys. 148, 184109 (2018) -**(Bussi)** G. Bussi, M. Parrinello, Phs. Rev. E 75, 056707 (2007) +.. _Bussi3: + +**(Bussi2)** G. Bussi, M. Parrinello, Phs. Rev. E 75, 056707 (2007) diff --git a/doc/src/fix_msst.rst b/doc/src/fix_msst.rst index 6750934f615..ee517407dfd 100644 --- a/doc/src/fix_msst.rst +++ b/doc/src/fix_msst.rst @@ -42,7 +42,7 @@ Description This command performs the Multi-Scale Shock Technique (MSST) integration to update positions and velocities each timestep to mimic -a compressive shock wave passing over the system. See :ref:`(Reed) ` +a compressive shock wave passing over the system. See :ref:`(Reed3) ` for a detailed description of this method. The MSST varies the cell volume and temperature in such a way as to restrain the system to the shock Hugoniot and the Rayleigh line. These restraints correspond to @@ -79,7 +79,7 @@ equations, but is used in calculating the deviation from the Hugoniot. The keyword *beta* is a scaling term that can be added to the MSST ionic equations of motion to account for drift in the conserved quantity during long timescale simulations, similar to a Berendsen -thermostat. See :ref:`(Reed) ` and :ref:`(Goldman) ` for more +thermostat. See :ref:`(Reed3) ` and :ref:`(Goldman) ` for more details. The value of *beta* must be between 0.0 and 1.0 inclusive. A value of 0.0 means no contribution, a value of 1.0 means a full contribution. @@ -199,7 +199,7 @@ timestep. .. _Reed: -**(Reed)** Reed, Fried, and Joannopoulos, Phys. Rev. Lett., 90, 235503 +**(Reed3)** Reed, Fried, and Joannopoulos, Phys. Rev. Lett., 90, 235503 (2003). .. _Reed2: diff --git a/doc/src/fix_npt_cauchy.rst b/doc/src/fix_npt_cauchy.rst index 862a0b546e7..78f932847bd 100644 --- a/doc/src/fix_npt_cauchy.rst +++ b/doc/src/fix_npt_cauchy.rst @@ -647,5 +647,5 @@ Martyna, J Phys A: Math Gen, 39, 5629 (2006). .. _nc-Miller: -**(Miller)** Miller, Tadmor, Gibson, Bernstein and Pavia, J Chem Phys, +**(Miller2)** Miller, Tadmor, Gibson, Bernstein and Pavia, J Chem Phys, 144, 184107 (2016). diff --git a/doc/src/fix_nvt_sllod.rst b/doc/src/fix_nvt_sllod.rst index 1e867731b7a..21be206240d 100644 --- a/doc/src/fix_nvt_sllod.rst +++ b/doc/src/fix_nvt_sllod.rst @@ -80,7 +80,7 @@ The SLLOD equations of motion, originally proposed by Hoover and Ladd to Newton's equations of motion for shear flow by :ref:`(Evans and Morriss) `. They were later shown to generate the desired velocity gradient and the correct production of work by stresses for all -forms of homogeneous flow by :ref:`(Daivis and Todd) `. +forms of homogeneous flow by :ref:`(Daivis and Todd2) `. .. versionchanged:: 8Feb2023 @@ -96,7 +96,7 @@ command. .. note:: - A recent (2017) book by :ref:`(Todd and Daivis) ` + A recent (2017) book by :ref:`(Daivis and Todd) ` discusses use of the SLLOD method and non-equilibrium MD (NEMD) thermostatting generally, for both simple and complex fluids, e.g. molecular systems. The latter can be tricky to do correctly. @@ -315,11 +315,11 @@ Same as :doc:`fix nvt `, except *tchain* = 1, *psllod* = *no*, .. _Daivis: -**(Daivis and Todd)** Daivis and Todd, J Chem Phys, 124, 194103 (2006). +**(Daivis and Todd2)** Daivis and Todd, J Chem Phys, 124, 194103 (2006). .. _Todd-sllod: -**(Todd and Daivis)** Todd and Daivis, Nonequilibrium Molecular Dynamics (book), +**(Daivis and Todd)** Todd and Daivis, Nonequilibrium Molecular Dynamics (book), Cambridge University Press, (2017) https://doi.org/10.1017/9781139017848. .. _Tuckerman: diff --git a/doc/src/fix_nvt_sllod_eff.rst b/doc/src/fix_nvt_sllod_eff.rst index 42ca4c35286..5d83dfe05f5 100644 --- a/doc/src/fix_nvt_sllod_eff.rst +++ b/doc/src/fix_nvt_sllod_eff.rst @@ -106,5 +106,5 @@ Same as :doc:`fix nvt/eff `, except *tchain* = 1, *psllod* = *no*, .. _Tuckerman2: -**(Tuckerman)** Tuckerman, Mundy, Balasubramanian, Klein, J Chem Phys, +**(Tuckerman2)** Tuckerman, Mundy, Balasubramanian, Klein, J Chem Phys, 106, 5615 (1997). diff --git a/doc/src/fix_pimd.rst b/doc/src/fix_pimd.rst index 1f92fd47d69..149603578a1 100644 --- a/doc/src/fix_pimd.rst +++ b/doc/src/fix_pimd.rst @@ -135,7 +135,7 @@ discussion of the validity of the approximation is available in To sample the canonical ensemble, any thermostat can be applied. Fix *pimd/nvt* applies a Nose-Hoover massive chain thermostat -:ref:`(Tuckerman) `. With the massive chain +:ref:`(Tuckerman3) `. With the massive chain algorithm, a chain of NH thermostats is coupled to each degree of freedom for each quasi-bead. The keyword *temp* sets the target temperature for the system and the keyword *nhc* sets the number *Nc* of @@ -205,7 +205,7 @@ which is the default in this fix. These restrictions are related to the use of normal modes, which change in bosons. The keyword *integrator* specifies the Trotter splitting method used by *fix -pimd/langevin*. See :ref:`(Liu) ` for a discussion on the OBABO and BAOAB +pimd/langevin*. See :ref:`(Liu3) ` for a discussion on the OBABO and BAOAB splitting schemes. Typically either of the two should work fine. The keyword *fmass* sets a further scaling factor for the fictitious @@ -294,7 +294,7 @@ number. The keyword *thermostat* reads *style* and *seed* of thermostat for fix style *pimd/langevin*. *style* can only be *PILE_L* (path integral -Langevin equation local thermostat, as described in :ref:`Ceriotti +Langevin equation local thermostat, as described in :ref:`Ceriotti3 `), and *seed* should a positive integer number, which serves as the seed of the pseudo random number generator. @@ -331,7 +331,7 @@ pressure. These parameters are not supported in The keyword *barostat* reads *style* of barostat for fix style *pimd/langevin*. *style* can be *BZP* (Bussi-Zykova-Parrinello, as described in :ref:`Bussi `) or *MTTK* -(Martyna-Tuckerman-Tobias-Klein, as described in :ref:`Martyna1 +(Martyna-Tuckerman-Tobias-Klein, as described in :ref:`Martyna ` and :ref:`Martyna2 `). The keyword *taup* specifies the barostat damping time parameter for fix @@ -593,7 +593,7 @@ Path Integrals, McGraw-Hill, New York (1965). .. _pimd-Tuckerman: -**(Tuckerman)** M. Tuckerman and B. Berne, J Chem Phys, 99, 2796 (1993). +**(Tuckerman3)** M. Tuckerman and B. Berne, J Chem Phys, 99, 2796 (1993). .. _Cao1: @@ -627,11 +627,11 @@ Path Integrals, McGraw-Hill, New York (1965). .. _Ceriotti3: -**(Ceriotti)** M. Ceriotti, M. Parrinello, T. Markland, D. Manolopoulos, J. Chem. Phys. 133, 124104 (2010). +**(Ceriotti3)** M. Ceriotti, M. Parrinello, T. Markland, D. Manolopoulos, J. Chem. Phys. 133, 124104 (2010). .. _Martyna3: -**(Martyna1)** G. Martyna, D. Tobias, M. Klein, J. Chem. Phys. 101, 4177 (1994). +**(Martyna)** G. Martyna, D. Tobias, M. Klein, J. Chem. Phys. 101, 4177 (1994). .. _Martyna4: diff --git a/doc/src/fix_qbmsst.rst b/doc/src/fix_qbmsst.rst index 3234335b6b7..26bc6d48872 100644 --- a/doc/src/fix_qbmsst.rst +++ b/doc/src/fix_qbmsst.rst @@ -86,7 +86,7 @@ especially when the temperature of the initial state is below the classical limit or there is a great change in the zero point energies between the initial and final states. Theoretical post processing quantum corrections of shock compressed water and methane have been -reported as much as 30% of the temperatures :ref:`(Goldman) `. A +reported as much as 30% of the temperatures :ref:`(Goldman2) `. A self-consistent method that couples the shock to a quantum thermal bath described by a colored noise Langevin thermostat has been developed by Qi et al :ref:`(Qi) ` and applied to shocked methane. The @@ -236,7 +236,7 @@ T_init=300.0. e0, p0, and v0 are calculated on the first step. .. _Goldman1: -**(Goldman)** Goldman, Reed and Fried, J. Chem. Phys. 131, 204103 (2009) +**(Goldman2)** Goldman, Reed and Fried, J. Chem. Phys. 131, 204103 (2009) .. _Qi: diff --git a/doc/src/fix_qeq.rst b/doc/src/fix_qeq.rst index b55200aacc7..94da46dcbd3 100644 --- a/doc/src/fix_qeq.rst +++ b/doc/src/fix_qeq.rst @@ -89,9 +89,9 @@ Description """"""""""" Perform the charge equilibration (QEq) method as described in -:ref:`(Rappe and Goddard) ` and formulated in :ref:`(Nakano) +:ref:`(Rappe) ` and formulated in :ref:`(Nakano) ` (also known as the matrix inversion method) and in -:ref:`(Rick and Stuart) ` (also known as the extended Lagrangian +:ref:`(Rick) ` (also known as the extended Lagrangian method) based on the electronegativity equilization principle. These fixes can be used with any :doc:`pair style ` in @@ -164,7 +164,7 @@ line are required. * *chi* = electronegativity in energy units * *eta* = self-Coulomb potential in energy units * *gamma* = shielded Coulomb constant defined by :ref:`ReaxFF force field ` in distance units -* *zeta* = Slater type orbital exponent defined by the :ref:`Streitz-Mintmire ` potential in reverse distance units +* *zeta* = Slater type orbital exponent defined by the :ref:`Streitz ` potential in reverse distance units * *qcore* = charge of the nucleus defined by the :ref:`Streitz-Mintmire potential ` potential in charge units * *qmin* = lower bound on the allowed charge defined by the :ref:`CTIP ` potential in charge units * *qmax* = upper bound on the allowed charge defined by the :ref:`CTIP ` potential in charge units @@ -205,7 +205,7 @@ The *qeq/slater* style describes partial charges on atoms as spherical charge densities centered around atoms via the Slater 1\ *s* orbital, so that the interaction between a pair of charged particles is the product of two Slater 1\ *s* orbitals. The expression for the Slater 1\ *s* -orbital is given under equation (6) of the :ref:`Streitz-Mintmire +orbital is given under equation (6) of the :ref:`Streitz ` paper. Only the *chi*, *eta*, *zeta*, and *qcore* parameters from the *qfile* file are used. When using the string *coul/streitz* as filename, these parameters are extracted directly from @@ -332,7 +332,7 @@ warn yes .. _Rappe1: -**(Rappe and Goddard)** A. K. Rappe and W. A. Goddard III, J Physical +**(Rappe)** A. K. Rappe and W. A. Goddard III, J Physical Chemistry, 95, 3358-3363 (1991). .. _Nakano1: @@ -341,12 +341,12 @@ Chemistry, 95, 3358-3363 (1991). .. _Rick1: -**(Rick and Stuart)** S. W. Rick, S. J. Stuart, B. J. Berne, J Chemical Physics -101, 16141 (1994). +**(Rick)** S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, +6141 (1994). .. _Streitz1: -**(Streitz-Mintmire)** F. H. Streitz, J. W. Mintmire, Physical Review B, 50, +**(Streitz)** F. H. Streitz, J. W. Mintmire, Physical Review B, 50, 16, 11996 (1994) .. _CTIP1: diff --git a/doc/src/fix_qeq_comb.rst b/doc/src/fix_qeq_comb.rst index f93a650c172..95f0ef4c38d 100644 --- a/doc/src/fix_qeq_comb.rst +++ b/doc/src/fix_qeq_comb.rst @@ -37,7 +37,7 @@ Description Perform charge equilibration (QeQ) in conjunction with the COMB (Charge-Optimized Many-Body) potential as described in -:ref:`(COMB_1) ` and :ref:`(COMB_2) `. It performs the charge +:ref:`(COMB_1) ` and :ref:`(COMB) `. It performs the charge equilibration portion of the calculation using the so-called QEq method, whereby the charge on each atom is adjusted to minimize the energy of the system. This fix can only be used with the COMB @@ -50,8 +50,8 @@ per-atom electronegativity (effective force on the charges). An electronegativity equalization calculation (or QEq) is performed in an iterative fashion, which in parallel requires communication at each iteration for processors to exchange charge information about nearby -atoms with each other. See :ref:`Rappe_and_Goddard ` and -:ref:`Rick_and_Stuart ` for details. +atoms with each other. See :ref:`Rappe ` and +:ref:`Rick ` for details. During a run, charge equilibration is performed every *Nevery* time steps. Charge equilibration is also always enforced on the first step @@ -120,15 +120,15 @@ No file output is performed. .. _COMB_2: -**(COMB_2)** T.-R. Shan, B. D. Devine, T. W. Kemper, S. B. Sinnott, S. R. +**(COMB)** T.-R. Shan, B. D. Devine, T. W. Kemper, S. B. Sinnott, S. R. Phillpot, Phys Rev B, 81, 125328 (2010). .. _Rappe_and_Goddard: -**(Rappe_and_Goddard)** A. K. Rappe, W. A. Goddard, J Phys Chem 95, 3358 +**(Rappe)** A. K. Rappe, W. A. Goddard, J Phys Chem 95, 3358 (1991). .. _Rick_and_Stuart: -**(Rick_and_Stuart)** S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys +**(Rick)** S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 16141 (1994). diff --git a/doc/src/fix_reaxff_species.rst b/doc/src/fix_reaxff_species.rst index 42b93badefe..2e072c584c0 100644 --- a/doc/src/fix_reaxff_species.rst +++ b/doc/src/fix_reaxff_species.rst @@ -138,7 +138,7 @@ value. For example, AuO.pos.\* becomes AuO.pos.0, AuO.pos.1000, etc. .. versionadded:: 3Aug2022 The optional keyword *delete* enables the periodic removal of molecules -from the system :ref:`(Gissinger) `. Criteria for deletion can +from the system :ref:`(Gissinger2) `. Criteria for deletion can be either a list of specific chemical formulae or a range of molecular weights. Molecules are deleted every *Nfreq* timesteps, and bond connectivity is determined using the *Nevery* and *Nrepeat* keywords. The @@ -315,4 +315,4 @@ Position files are not written by default. .. _Delete: -**(Gissinger)** Jacob R. Gissinger, Scott R. Zavada, Joseph G. Smith, Josh Kemppainen, Ivan Gallegos, Gregory M. Odegard, Emilie J. Siochi, and Kristopher E. Wise, Carbon, 202, 336-347 (2023). +**(Gissinger2)** Jacob R. Gissinger, Scott R. Zavada, Joseph G. Smith, Josh Kemppainen, Ivan Gallegos, Gregory M. Odegard, Emilie J. Siochi, and Kristopher E. Wise, Carbon, 202, 336-347 (2023). diff --git a/doc/src/fix_rheo.rst b/doc/src/fix_rheo.rst index ba4452fd46b..2cbc09141ad 100644 --- a/doc/src/fix_rheo.rst +++ b/doc/src/fix_rheo.rst @@ -165,7 +165,7 @@ which modifies the behavior of the density summation. Typically, the density where :math:`W_{ij}` is the kernel, and :math:`M_j` is the mass of particle :math:`j`. The *self/mass* keyword augments this expression by replacing :math:`M_j` with :math:`M_i`. This may be useful in simulations of multiple fluid phases with large -differences in density, :ref:`(Hu) `. +differences in density, :ref:`(Hu2) `. The *density* keyword is used to specify the equilibrium density of each of the N particle types. It must be followed by N numerical values specifying each type's @@ -228,4 +228,4 @@ Default .. _fix_rheo_hu: -**(Hu)** Hu, and Adams, J. Comp. Physics, 213, 844-861 (2006). +**(Hu2)** Hu, and Adams, J. Comp. Physics, 213, 844-861 (2006). diff --git a/doc/src/fix_rigid.rst b/doc/src/fix_rigid.rst index 0277793d0f6..276fed0c442 100644 --- a/doc/src/fix_rigid.rst +++ b/doc/src/fix_rigid.rst @@ -417,7 +417,7 @@ approach. The *rigid/nvt* and *rigid/nvt/small* styles performs constant NVT integration using a Nose/Hoover thermostat with chains as described -originally in :ref:`(Hoover) ` and :ref:`(Martyna) +originally in :ref:`(Hoover) ` and :ref:`(Martyna3) `, which thermostats both the translational and rotational degrees of freedom of the rigid bodies. They are referred to below as the 2 NVT rigid styles. The rigid-body algorithm used by *rigid/nvt* @@ -949,7 +949,7 @@ torque. Also Tchain = Pchain = 10, Titer = 1, Torder = 3, reinit = yes. .. _Martyna2: -**(Martyna)** Martyna, Klein, Tuckerman, J Chem Phys, 97, 2635 (1992); +**(Martyna3)** Martyna, Klein, Tuckerman, J Chem Phys, 97, 2635 (1992); Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117. .. _Miller3: @@ -959,4 +959,4 @@ J Chem Phys, 116, 8649 (2002). .. _Zhang1: -**(Zhang)** Zhang, Glotzer, Nanoletters, 4, 1407-1413 (2004). +**(Zhang2)** Zhang, Glotzer, Nanoletters, 4, 1407-1413 (2004). diff --git a/doc/src/fix_sgcmc.rst b/doc/src/fix_sgcmc.rst index 272b6d30c0b..ccddfeb2b4f 100644 --- a/doc/src/fix_sgcmc.rst +++ b/doc/src/fix_sgcmc.rst @@ -50,7 +50,7 @@ Description This command allows to carry out parallel hybrid molecular dynamics/Monte Carlo (MD/MC) simulations using the algorithms described -in :ref:`(Sadigh1) `. Simulations can be carried out in either +in :ref:`(Sadigh) `. Simulations can be carried out in either the semi-grand canonical (SGC) or variance constrained semi-grand canonical (VC-SGC) ensemble :ref:`(Sadigh2) `. Only atom type swaps are performed by the SGCMC fix. Relaxations are accounted for by @@ -93,7 +93,7 @@ the simulation, e.g., to speed up equilibration at low temperatures. ------------ The parameter *deltamu* is used to set the chemical potential differences -in the SGC MC algorithm (see Eq. 16 in :ref:`Sadigh1 `). +in the SGC MC algorithm (see Eq. 16 in :ref:`Sadigh `). The `N-1` differences are defined as :math:`\mu_1-\mu_2, \ldots, \mu_1-\mu_N`, where `N` is the number of atom types. @@ -102,11 +102,11 @@ where `N` is the number of atom types. The variance-constrained SGC MC algorithm is activated if the keyword *variance* is used. In that case the fix parameter *deltamu* determines the effective average constraint in the parallel VC-SGC MC algorithm -(parameter :math:`\delta\mu_0` in Eq. (20) of :ref:`Sadigh1 +(parameter :math:`\delta\mu_0` in Eq. (20) of :ref:`Sadigh `). The parameter *kappa* specifies the variance constraint -(see Eqs. (20-21) in :ref:`Sadigh1 `). +(see Eqs. (20-21) in :ref:`Sadigh `). The parameter *conc* sets the `N-1` target atomic concentration -fractions (parameter :math:`c_0` in Eqs. (20-21) of :ref:`Sadigh1 `) +fractions (parameter :math:`c_0` in Eqs. (20-21) of :ref:`Sadigh `) :math:`0 \le c_2, \ldots, c_N \le 1`, with :math:`c_1 = 1 - \Sigma_{i=2}^N c_i`. When the simulation includes `N` atom types (elements), @@ -123,10 +123,10 @@ to initialize the random number generator on each processor. simulation. The size has to lie between 0.5 and 1.0. Normally, this parameter should be left unspecified which instructs the code to choose the optimal window size automatically (see Sect. III.B and Figure 6 in -:ref:`Sadigh1 ` for details). +:ref:`Sadigh ` for details). The number of times the window is moved during a MC cycle is set using -the parameter *window_moves* (see Sect. III.B in :ref:`Sadigh1 +the parameter *window_moves* (see Sect. III.B in :ref:`Sadigh ` for details). The *atomic/energy* keyword controls which method is used for calculating @@ -208,7 +208,7 @@ The optional parameters default to the following values: .. _Sadigh1: -**(Sadigh1)** B. Sadigh, P. Erhart, A. Stukowski, A. Caro, E. Martinez, and L. Zepeda-Ruiz, Phys. Rev. B **85**, 184203 (2012) +**(Sadigh)** B. Sadigh, P. Erhart, A. Stukowski, A. Caro, E. Martinez, and L. Zepeda-Ruiz, Phys. Rev. B **85**, 184203 (2012) .. _Sadigh2: diff --git a/doc/src/fix_shardlow.rst b/doc/src/fix_shardlow.rst index 3cbb4ae441d..a3fbef8613e 100644 --- a/doc/src/fix_shardlow.rst +++ b/doc/src/fix_shardlow.rst @@ -99,4 +99,4 @@ none .. _Larentzos2sh: -**(Larentzos2)** J.P. Larentzos, J.K. Brennan, J.D. Moore, and W.D. Mattson, ARL-TR-6863, U.S. Army Research Laboratory, Aberdeen Proving Ground, MD (2014). +**(Larentzos)** J.P. Larentzos, J.K. Brennan, J.D. Moore, and W.D. Mattson, ARL-TR-6863, U.S. Army Research Laboratory, Aberdeen Proving Ground, MD (2014). diff --git a/doc/src/fix_temp_csvr.rst b/doc/src/fix_temp_csvr.rst index 781ce97d96d..534eb16119b 100644 --- a/doc/src/fix_temp_csvr.rst +++ b/doc/src/fix_temp_csvr.rst @@ -206,8 +206,8 @@ none .. _Bussi1: -.. _Bussi2: - **(Bussi1)** Bussi, Donadio and Parrinello, J. Chem. Phys. 126, 014101(2007) +.. _Bussi2: + **(Bussi2)** Bussi and Parrinello, Phys. Rev. E 75, 056707 (2007) diff --git a/doc/src/fix_thermal_conductivity.rst b/doc/src/fix_thermal_conductivity.rst index 53eace03406..897a3054670 100644 --- a/doc/src/fix_thermal_conductivity.rst +++ b/doc/src/fix_thermal_conductivity.rst @@ -165,5 +165,5 @@ The option defaults are swap = 1. .. _Zhang2: -**(Zhang)** Zhang, Lussetti, de Souza, Muller-Plathe, J Phys Chem B, +**(Zhang3)** Zhang, Lussetti, de Souza, Muller-Plathe, J Phys Chem B, 109, 15060-15067 (2005). diff --git a/doc/src/fix_ttm.rst b/doc/src/fix_ttm.rst index 0e6b24ef4c4..c2b0af0b66c 100644 --- a/doc/src/fix_ttm.rst +++ b/doc/src/fix_ttm.rst @@ -313,7 +313,7 @@ defined as :math:`\kappa_e = D_e \cdot rho_e \cdot C_e`, where Electronic pressure effects are included in the TTM model to account for the blast force acting on ions because of electronic pressure gradient -(see :ref:`(Chen) `, :ref:`(Norman) `). The total force +(see :ref:`(Chen2) `, :ref:`(Norman) `). The total force acting on an ion is: .. math:: @@ -543,7 +543,7 @@ Condens. Matter, 19, 496201-496210 (2007). .. _Chen: -**(Chen)** J Chen, D Tzou and J Beraun, Int. J. Heat +**(Chen2)** J Chen, D Tzou and J Beraun, Int. J. Heat Mass Transfer, 49, 307-316 (2006). .. _Norman: diff --git a/doc/src/fix_viscosity.rst b/doc/src/fix_viscosity.rst index 187d723d681..be193dece69 100644 --- a/doc/src/fix_viscosity.rst +++ b/doc/src/fix_viscosity.rst @@ -168,7 +168,7 @@ The option defaults are swap = 1 and vtarget = INF. .. _Muller-Plathe2: -**(Muller-Plathe)** Muller-Plathe, Phys Rev E, 59, 4894-4898 (1999). +**(Muller-Plathe2)** Muller-Plathe, Phys Rev E, 59, 4894-4898 (1999). .. _Maginn: diff --git a/doc/src/kspace_modify.rst b/doc/src/kspace_modify.rst index 7eccced6342..06384545bcb 100644 --- a/doc/src/kspace_modify.rst +++ b/doc/src/kspace_modify.rst @@ -187,7 +187,7 @@ later than it would if this option were off. The *force/disp/real* and *force/disp/kspace* keywords set the force accuracy for the real and reciprocal space computations for the dispersion -part of pppm/disp. As shown in :ref:`(Isele-Holder) `, +part of pppm/disp. As shown in :ref:`(Isele-Holder2) `, optimal performance and accuracy in the results is obtained when these values are different. @@ -280,7 +280,7 @@ mixing rule, this will speed-up the simulations but introduces some error in the force computations, as shown in :ref:`(Wennberg) `. With *none*, it is assumed that no mixing rule is applicable. Splitting of the dispersion coefficients will be performed -as described in :ref:`(Isele-Holder) `. The *none* +as described in :ref:`(Isele-Holder2) `. The *none* splitting is only available with the PPPM dispersion solver; with *ewald/disp* the *none* value is rejected, while *pair* (the default) and *geom* are honored. @@ -494,7 +494,7 @@ This dipole slab correction is currently limited to orthogonal The *force/disp/real* and *force/disp/kspace* keywords set the force accuracy for the real and reciprocal space computations for the dispersion -part of pppm/disp. As shown in :ref:`(Isele-Holder) `, +part of pppm/disp. As shown in :ref:`(Isele-Holder2) `, optimal performance and accuracy in the results is obtained when these values are different. @@ -601,7 +601,7 @@ Illinois at Urbana-Champaign, (2006). .. _Isele-Holder1: -**(Isele-Holder)** Isele-Holder, Mitchell, Hammond, Kohlmeyer, Ismail, J +**(Isele-Holder2)** Isele-Holder, Mitchell, Hammond, Kohlmeyer, Ismail, J Chem Theory Comput, 9, 5412 (2013). .. _Wennberg: diff --git a/doc/src/kspace_style.rst b/doc/src/kspace_style.rst index 7a55288df6e..e516cc4a07e 100644 --- a/doc/src/kspace_style.rst +++ b/doc/src/kspace_style.rst @@ -210,7 +210,7 @@ because of round-off in the structure-factor sums. The *ewald/disp* style adds a long-range dispersion sum option for :math:`1/r^6` potentials and is useful for simulation of interfaces -:ref:`(Veld) `. It also performs standard Coulombic Ewald summations, +:ref:`(In 't Veld) `. It also performs standard Coulombic Ewald summations, but in a more efficient manner than the *ewald* style. The :math:`1/r^6` capability means that Lennard-Jones or Buckingham potentials can be used without a cutoff, i.e. they become full long-range potentials. @@ -405,7 +405,7 @@ pressure simulation with MSM will cause the code to run slower. The *scafacos* style is a wrapper on the `ScaFaCoS Coulomb solver library `_ which provides a variety of solver -methods which can be used with LAMMPS. The paper by :ref:`(Sutman) +methods which can be used with LAMMPS. The paper by :ref:`(Sutmann2) ` gives an overview of ScaFaCoS. ScaFaCoS was developed by a consortium of German research facilities @@ -517,8 +517,8 @@ will be "too accurate" for some portion of the run. RMS force errors in real space for *ewald* and *pppm* are estimated using equation 18 of :ref:`(Kolafa) `, which is also referenced as -equation 9 of :ref:`(Petersen) `. RMS force errors in K-space for -*ewald* are estimated using equation 11 of :ref:`(Petersen) `, +equation 9 of :ref:`(Petersen2) `. RMS force errors in K-space for +*ewald* are estimated using equation 11 of :ref:`(Petersen2) `, which is similar to equation 32 of :ref:`(Kolafa) `. RMS force errors in K-space for *pppm* are estimated using equation 38 of :ref:`(Deserno) `. RMS force errors for *msm* are estimated @@ -527,7 +527,7 @@ of particular note. When using *msm* with non-periodic boundary conditions, it is expected that the error estimation will be too pessimistic. RMS force errors for dipoles when using *ewald/disp* or *ewald/dipole* are estimated using equations 33 and 46 of -:ref:`(Wang) `. The RMS force errors for *pppm/dipole* are estimated +:ref:`(Wang3) `. The RMS force errors for *pppm/dipole* are estimated using the equations in :ref:`(Cerda) `. See the :doc:`kspace_modify ` command for additional @@ -663,11 +663,11 @@ Adam Hilger, NY (1989). .. _Petersen: -**(Petersen)** Petersen, J Chem Phys, 103, 3668 (1995). +**(Petersen2)** Petersen, J Chem Phys, 103, 3668 (1995). .. _Wang: -**(Wang)** Wang and Holm, J Chem Phys, 115, 6277 (2001). +**(Wang3)** Wang and Holm, J Chem Phys, 115, 6277 (2001). .. _Pollock: @@ -684,7 +684,7 @@ and Computation 5, 2322 (2009) .. _Veld: -**(Veld)** In 't Veld, Ismail, Grest, J Chem Phys, 127, 144711 (2007). +**(In 't Veld)** In 't Veld, Ismail, Grest, J Chem Phys, 127, 144711 (2007). .. _Toukmaji: @@ -722,5 +722,5 @@ Illinois at Urbana-Champaign, (2006). .. _Sutmann2014: -**(Sutmann)** G. Sutmann. ScaFaCoS - a Scalable library of Fast Coulomb Solvers for particle Systems. +**(Sutmann2)** G. Sutmann. ScaFaCoS - a Scalable library of Fast Coulomb Solvers for particle Systems. In Bajaj, Zavattieri, Koslowski, Siegmund, Proceedings of the Society of Engineering Science 51st Annual Technical Meeting. 2014. diff --git a/doc/src/neb.rst b/doc/src/neb.rst index 6dd5c88f203..a10569be2d2 100644 --- a/doc/src/neb.rst +++ b/doc/src/neb.rst @@ -59,8 +59,8 @@ NEB is a method for finding both the atomic configurations and height of the energy barrier associated with a transition state, e.g. for an atom to perform a diffusive hop from one energy basin to another in a coordinated fashion with its neighbors. The implementation in LAMMPS -follows the discussion in these 4 papers: :ref:`(HenkelmanA) -`, :ref:`(HenkelmanB) `, :ref:`(Nakano) +follows the discussion in these 4 papers: :ref:`(Henkelman1) +`, :ref:`(Henkelman2) `, :ref:`(Nakano2) ` and :ref:`(Maras) `. Each replica runs on a partition of one or more processors. Processor @@ -240,7 +240,7 @@ In the second stage of NEB, the replica with the highest energy is selected and the inter-replica forces on it are converted to a force that drives its atom coordinates to the top or saddle point of the barrier, via the barrier-climbing calculation described in -:ref:`(HenkelmanB) `. As before, the other replicas rearrange +:ref:`(Henkelman2) `. As before, the other replicas rearrange themselves along the MEP so as to be roughly equally spaced. When both stages are complete, if the NEB calculation was successful, @@ -362,7 +362,7 @@ between the 3N-length vectors :math:`(R_{i-1} - R_i)` and replica *i*). A "path angle" of 180 indicates that replicas *i*\ -1, *i* and *i*\ +1 are aligned. "angletangrad" is the angle between the 3N-length tangent vector and the 3N-length force vector at image -*i*. The tangent vector is calculated as in :ref:`(HenkelmanA) +*i*. The tangent vector is calculated as in :ref:`(Henkelman1) ` for all intermediate replicas and at R2 - R1 and RM - RM-1 for the first and last replica, respectively. "anglegrad" is the angle between the 3N-length energy gradient vector of replica *i* and that of @@ -462,16 +462,16 @@ Default .. _HenkelmanA: -**(HenkelmanA)** Henkelman and Jonsson, J Chem Phys, 113, 9978-9985 (2000). +**(Henkelman1)** Henkelman and Jonsson, J Chem Phys, 113, 9978-9985 (2000). .. _HenkelmanB: -**(HenkelmanB)** Henkelman, Uberuaga, Jonsson, J Chem Phys, 113, +**(Henkelman2)** Henkelman, Uberuaga, Jonsson, J Chem Phys, 113, 9901-9904 (2000). .. _Nakano3: -**(Nakano)** Nakano, Comp Phys Comm, 178, 280-289 (2008). +**(Nakano2)** Nakano, Comp Phys Comm, 178, 280-289 (2008). .. _Maras2: diff --git a/doc/src/pair_buck6d_coul_gauss.rst b/doc/src/pair_buck6d_coul_gauss.rst index ce015163adf..8ec2157008d 100644 --- a/doc/src/pair_buck6d_coul_gauss.rst +++ b/doc/src/pair_buck6d_coul_gauss.rst @@ -162,8 +162,8 @@ none .. _Schmid: -.. _Fennell: - **(Schmid)** S. Bureekaew, S. Amirjalayer, M. Tafipolsky, C. Spickermann, T.K. Roy and R. Schmid, Phys. Status Solidi B, 6, 1128 (2013). +.. _Fennell: + **(Fennell)** C. J. Fennell, J. D. Gezelter, J Chem Phys, 124, 234104 (2006). diff --git a/doc/src/pair_dipole.rst b/doc/src/pair_dipole.rst index fbd532f4597..a5212429194 100644 --- a/doc/src/pair_dipole.rst +++ b/doc/src/pair_dipole.rst @@ -221,7 +221,7 @@ and Tij != -Tji since the torques do not act symmetrically. The shifted-force formula for the Lennard-Jones potential is reported in :ref:`(Stoddard) `. The original (non-shifted) formulas for the electrostatic potentials, forces and torques can be found in -:ref:`(Price) `. The shifted-force electrostatic potentials +:ref:`(Price2) `. The shifted-force electrostatic potentials have been obtained by applying equation 5.13 of :ref:`(AllenTildesley) `. The formulas for the corresponding forces and torques have been obtained by applying the 'chain rule' as in appendix C.3 of @@ -393,4 +393,4 @@ Clarendon Press, Oxford, 1987. .. _Price2: -**(Price)** Price, Stone and Alderton, Mol Phys, 52, 987 (1984). +**(Price2)** Price, Stone and Alderton, Mol Phys, 52, 987 (1984). diff --git a/doc/src/pair_e3b.rst b/doc/src/pair_e3b.rst index a890ba24ae5..2ba043c44d0 100644 --- a/doc/src/pair_e3b.rst +++ b/doc/src/pair_e3b.rst @@ -66,7 +66,7 @@ Used in example input script: Description """"""""""" -The *e3b* style computes an \"explicit three-body\" (E3B) potential for water :ref:`(Kumar 2008) `. +The *e3b* style computes an \"explicit three-body\" (E3B) potential for water :ref:`(Kumar2) `. .. math:: @@ -95,7 +95,7 @@ s(r) between Rs and Rc3. The two-body interactions are designed to correct for the effective many-body interactions implicitly included in the conventional two-body potential. The two-body interactions are cut off sharply at Rc2, because K3 is typically significantly smaller than -K2. See :ref:`(Kumar 2008) ` for more details. +K2. See :ref:`(Kumar2) ` for more details. Only a single :doc:`pair_coeff ` command is used with the *e3b* style and the first two arguments must be \* \*. The oxygen atom @@ -201,12 +201,12 @@ The option default for the *neigh* keyword is 10. .. _Kumar: +**(Kumar2)** Kumar and Skinner, J. Phys. Chem. B, 112, 8311 (2008) + .. _Tainter2011: -**(Kumar)** Kumar and Skinner, J. Phys. Chem. B, 112, 8311 (2008) +**(Tainter 2011)** Tainter, Pieniazek, Lin, and Skinner, J. Chem. Phys., 134, 184501 (2011) .. _Tainter2015: -**(Tainter 2011)** Tainter, Pieniazek, Lin, and Skinner, J. Chem. Phys., 134, 184501 (2011) - **(Tainter 2015)** Tainter, Shi, and Skinner, 11, 2268 (2015) diff --git a/doc/src/pair_eim.rst b/doc/src/pair_eim.rst index 2de2a124e26..a4457a7fe9f 100644 --- a/doc/src/pair_eim.rst +++ b/doc/src/pair_eim.rst @@ -29,7 +29,7 @@ Description """"""""""" Style *eim* computes pairwise interactions for ionic compounds -using embedded-ion method (EIM) potentials :ref:`(Zhou) `. The +using embedded-ion method (EIM) potentials :ref:`(Zhou2) `. The energy of the system E is given by .. math:: @@ -181,5 +181,5 @@ none .. _Zhou2: -**(Zhou)** Zhou, submitted for publication (2010). Please contact +**(Zhou2)** Zhou, submitted for publication (2010). Please contact Xiaowang Zhou (Sandia) for details via email at xzhou at sandia.gov. diff --git a/doc/src/pair_gran.rst b/doc/src/pair_gran.rst index 14f996f7c08..10d3b3cb91f 100644 --- a/doc/src/pair_gran.rst +++ b/doc/src/pair_gran.rst @@ -69,8 +69,8 @@ Description The *gran* styles use the following formulas for the frictional force between two granular particles, as described in -:ref:`(Brilliantov) `, :ref:`(Silbert) `, and -:ref:`(Zhang) `, when the distance r between two particles of radii +:ref:`(Brilliantov et al, 1996) `, :ref:`(Silbert, 2001) `, and +:ref:`(Zhang4) `, when the distance r between two particles of radii Ri and Rj is less than their contact distance d = Ri + Rj. There is no force between the particles when r > d. @@ -152,7 +152,7 @@ units of (1/(time\*distance)), :math:`K_t` is in units of (pressure), and Note that in the Hookean case, :math:`K_n` can be thought of as a linear spring constant with units of force/distance. In the Hertzian case, :math:`K_n` is like a non-linear spring constant with units of -force/area or pressure, and as shown in the :ref:`(Zhang) ` +force/area or pressure, and as shown in the :ref:`(Zhang4) ` paper, :math:`K_n = 4G / (3(1-\nu))` where :math:`\nu =` the Poisson ratio, G = shear modulus = :math:`E / (2(1+\nu))`, and E = Young's modulus. Similarly, :math:`K_t = 4G / (2-\nu)`. (NOTE: in an earlier version of the manual, we incorrectly @@ -298,14 +298,14 @@ none .. _Brilliantov: -**(Brilliantov)** Brilliantov, Spahn, Hertzsch, Poschel, Phys Rev E, 53, +**(Brilliantov et al, 1996)** Brilliantov, Spahn, Hertzsch, Poschel, Phys Rev E, 53, p 5382-5392 (1996). .. _Silbert: -**(Silbert)** Silbert, Ertas, Grest, Halsey, Levine, Plimpton, Phys Rev +**(Silbert, 2001)** Silbert, Ertas, Grest, Halsey, Levine, Plimpton, Phys Rev E, 64, p 051302 (2001). .. _Zhang3: -**(Zhang)** Zhang and Makse, Phys Rev E, 72, p 011301 (2005). +**(Zhang4)** Zhang and Makse, Phys Rev E, 72, p 011301 (2005). diff --git a/doc/src/pair_granular.rst b/doc/src/pair_granular.rst index e2d20354108..d304f875fed 100644 --- a/doc/src/pair_granular.rst +++ b/doc/src/pair_granular.rst @@ -1130,7 +1130,7 @@ reduction. Journal of the Mechanics and Physics of Solids, 183, 105492. .. _Zunker2024II: -**(Zunker and Kamrin, 2024)** Zunker, W., & Kamrin, K. (2024). +**(Zunker and Kamrin, 2024b)** Zunker, W., & Kamrin, K. (2024). A mechanically-derived contact model for adhesive elastic-perfectly plastic particles, Part II: Contact under high compaction-modeling a bulk elastic response. Journal of the Mechanics and Physics of Solids, diff --git a/doc/src/pair_hbond_dreiding.rst b/doc/src/pair_hbond_dreiding.rst index 1a411796bac..af191619509 100644 --- a/doc/src/pair_hbond_dreiding.rst +++ b/doc/src/pair_hbond_dreiding.rst @@ -106,7 +106,7 @@ Donor-Acceptor interactions. To match the results in the original paper, use n = 4. Style *hbond/dreiding/morse* is an improved version using a Morse -potential for the Donor-Acceptor interactions. :ref:`(Liu) ` showed +potential for the Donor-Acceptor interactions. :ref:`(Liu3) ` showed that the Morse form gives improved results for Dendrimer simulations, when n = 2. @@ -306,5 +306,5 @@ none .. _Liu: -**(Liu)** Liu, Bryantsev, Diallo, Goddard III, J. Am. Chem. Soc 131 (8) +**(Liu3)** Liu, Bryantsev, Diallo, Goddard III, J. Am. Chem. Soc 131 (8) 2798 (2009) diff --git a/doc/src/pair_lj_cubic.rst b/doc/src/pair_lj_cubic.rst index 1bb2eaadbfd..d47db1364ba 100644 --- a/doc/src/pair_lj_cubic.rst +++ b/doc/src/pair_lj_cubic.rst @@ -123,8 +123,8 @@ none .. _Holian: -.. _Ravelo2: - **(Holian)** Holian and Ravelo, Phys Rev B, 51, 11275 (1995). +.. _Ravelo2: + **(Ravelo)** Ravelo, Holian, Germann and Lomdahl, Phys Rev B, 70, 014103 (2004). diff --git a/doc/src/pair_local_density.rst b/doc/src/pair_local_density.rst index 75b5ea11b6d..38f356d1288 100644 --- a/doc/src/pair_local_density.rst +++ b/doc/src/pair_local_density.rst @@ -247,10 +247,10 @@ none .. _Sanyal1: -.. _Sanyal2: - **(Sanyal1)** Sanyal and Shell, Journal of Chemical Physics, 2016, 145 (3), 034109. +.. _Sanyal2: + **(Sanyal2)** Sanyal and Shell, Journal of Physical Chemistry B, 122 (21), 5678-5693. .. _Rosenberger: diff --git a/doc/src/pair_meam.rst b/doc/src/pair_meam.rst index 7363dafe308..b3d8d75075e 100644 --- a/doc/src/pair_meam.rst +++ b/doc/src/pair_meam.rst @@ -329,7 +329,7 @@ The *augt1* parameter is related to modifications in the MEAM formulation of the partial electron density function. In recent literature, an extra term is included in the expression for the third-order density in order to make the densities orthogonal (see for -example :ref:`(Wang) `, equation 3d); this term is included in the +example :ref:`(Wang4) `, equation 3d); this term is included in the MEAM implementation in LAMMPS. However, in earlier published work this term was not included when deriving parameters, including most of those provided in the ``library.meam`` file included with LAMMPS, and to @@ -472,7 +472,7 @@ This report may be accessed on-line via `this link `, where +modified embedded-atom method (MEAM) potential :ref:`(Zhang5) `, where the total energy E is given by .. math:: @@ -168,4 +168,4 @@ Kress, Modelling Simulation Materials Science Engineering, 8, 825 .. _Zhang4: -**(Zhang)** Zhang and Trinkle, Computational Materials Science, 124, 204-210 (2016). +**(Zhang5)** Zhang and Trinkle, Computational Materials Science, 124, 204-210 (2016). diff --git a/doc/src/pair_mesodpd.rst b/doc/src/pair_mesodpd.rst index 269701ee27d..47a446c1316 100644 --- a/doc/src/pair_mesodpd.rst +++ b/doc/src/pair_mesodpd.rst @@ -69,7 +69,7 @@ Description The *edpd* style computes the pairwise interactions and heat fluxes for eDPD particles following the formulations in -:ref:`(Li2014_JCP) ` and :ref:`Li2015_CC `. The time +:ref:`(Li2014) ` and :ref:`Li2015_CC `. The time evolution of an eDPD particle is governed by the conservation of momentum and energy given by @@ -115,7 +115,7 @@ where the mesoscopic heat friction :math:`\kappa` is given by \kappa = \frac{315k_B\upsilon }{2\pi \rho C_v r_{ct}^5}\frac{1}{Pr}, with :math:`\upsilon` being the kinematic viscosity. For more details, -see Eq.(15) in :ref:`(Li2014_JCP) `. +see Eq.(15) in :ref:`(Li2014) `. The following coefficients must be defined in eDPD system for each pair of atom types via the :doc:`pair_coeff ` command as in @@ -182,7 +182,7 @@ The following coefficients must be defined for each pair of atom types via the The *tdpd* style computes the pairwise interactions and chemical concentration fluxes for tDPD particles following the formulations in -:ref:`(Li2015_JCP) `. The time evolution of a tDPD particle is +:ref:`(Li2015) `. The time evolution of a tDPD particle is governed by the conservation of momentum and concentration given by .. math:: @@ -217,7 +217,7 @@ by where the parameters kappa and epsilon determine the strength of the Fickian and random fluxes. :math:`m_s` is the mass of a single solute molecule. In general, :math:`m_s` is much smaller than the mass of a -tDPD particle *m*\ . For more details, see :ref:`(Li2015_JCP) +tDPD particle *m*\ . For more details, see :ref:`(Li2015) `. The following coefficients must be defined for each pair of atom types via the @@ -246,7 +246,7 @@ Example scripts There are example scripts for using all these pair styles in examples/PACKAGES/mesodpd. The example for an eDPD simulation models heat conduction with source terms analog of periodic Poiseuille flow -problem. The setup follows Fig.12 in :ref:`(Li2014_JCP) `. The +problem. The setup follows Fig.12 in :ref:`(Li2014) `. The output of the short eDPD simulation (about 2 minutes on a single core) gives a temperature and density profiles as @@ -278,7 +278,7 @@ The example for a tDPD simulation computes the effective diffusion coefficient of a tDPD system using a method analogous to the periodic Poiseuille flow. The tDPD system is specified with two chemical species, and the setup follows Fig.1 in -:ref:`(Li2015_JCP) `. The output of the short tDPD simulation +:ref:`(Li2015) `. The output of the short tDPD simulation (about one and a half minutes on a single core) gives the concentration profiles of the two chemical species as @@ -331,7 +331,7 @@ none .. _Li2014_JCP: -**(Li2014_JCP)** Li, Tang, Lei, Caswell, Karniadakis, J Comput Phys, +**(Li2014)** Li, Tang, Lei, Caswell, Karniadakis, J Comput Phys, 265: 113-127 (2014). DOI: 10.1016/j.jcp.2014.02.003. .. _Li2015_CC: @@ -346,5 +346,5 @@ DOI: 10.1063/1.4812366. .. _Li2015_JCP: -**(Li2015_JCP)** Li, Yazdani, Tartakovsky, Karniadakis, J Chem Phys, +**(Li2015)** Li, Yazdani, Tartakovsky, Karniadakis, J Chem Phys, 143: 014101 (2015). DOI: 10.1063/1.4923254. diff --git a/doc/src/pair_mliap.rst b/doc/src/pair_mliap.rst index 39bdbb5fdea..73f80e60eb5 100644 --- a/doc/src/pair_mliap.rst +++ b/doc/src/pair_mliap.rst @@ -77,7 +77,7 @@ The available models are *linear* and *nn*. The descriptor style *ace* is a class of highly general atomic descriptors, atomic cluster expansion descriptors (ACE) from -:ref:`(Drautz) `, that include a radial basis, an angular +:ref:`(Drautz19) `, that include a radial basis, an angular basis, and bases for other variables (such as chemical species) if relevant. In descriptor style *ace*, the *ace* descriptors may be defined up to an arbitrary body order. This descriptor style is the same diff --git a/doc/src/pair_momb.rst b/doc/src/pair_momb.rst index 4fc8075d875..841abc68714 100644 --- a/doc/src/pair_momb.rst +++ b/doc/src/pair_momb.rst @@ -35,7 +35,7 @@ Style *momb* computes pairwise van der Waals (vdW) and short-range interactions using the Morse potential and :ref:`(Grimme) ` method implemented in the Many-Body Metal-Organic (MOMB) force field described comprehensively in :ref:`(Fichthorn) ` and -:ref:`(Zhou) `. Grimme's method is widely used to correct for +:ref:`(Zhou5) `. Grimme's method is widely used to correct for dispersion in density functional theory calculations. .. math:: @@ -89,4 +89,4 @@ none .. _Zhou5: -**(Zhou)** Zhou, Saidi, Fichthorn, J Phys Chem C, 118(6), 3366-3374 (2014). +**(Zhou5)** Zhou, Saidi, Fichthorn, J Phys Chem C, 118(6), 3366-3374 (2014). diff --git a/doc/src/pair_oxrna2.rst b/doc/src/pair_oxrna2.rst index b605088de0f..5d6a8a7b9b0 100644 --- a/doc/src/pair_oxrna2.rst +++ b/doc/src/pair_oxrna2.rst @@ -124,7 +124,7 @@ cross-stacking *oxrna2/xstk* and coaxial stacking interaction well as the hydrogen-bonding interaction *oxrna2/hbond* between complementary pairs of nucleotides on opposite strands. Average sequence or sequence-dependent stacking and base-pairing strengths are supported -:ref:`(Sulc2) `. +:ref:`(Sulc) `. The exact functional form of the pair styles is rather complex. The individual potentials consist of products of modulation factors, which @@ -181,7 +181,7 @@ this implementation. The article contains general information on the model, its implementation and performance as well as the structure of the data and input file. The preprint version of the article can be found `here `_. Please cite also the relevant oxRNA2 -publications :ref:`(Sulc1) ` and :ref:`(Sulc2) `. +publications :ref:`(Sulc1) ` and :ref:`(Sulc) `. ---------- @@ -334,7 +334,7 @@ none .. _Sulc32: -**(Sulc2)** P. Sulc, F. Romano, T.E. Ouldridge, L. Rovigatti, J.P.K. Doye, A.A. Louis, J. Chem. Phys. 137, 135101 (2012). +**(Sulc)** P. Sulc, F. Romano, T.E. Ouldridge, L. Rovigatti, J.P.K. Doye, A.A. Louis, J. Chem. Phys. 137, 135101 (2012). .. _Ouldridge-DPhil3: diff --git a/doc/src/pair_peri.rst b/doc/src/pair_peri.rst index 9b5ece4247c..7b9bbdca062 100644 --- a/doc/src/pair_peri.rst +++ b/doc/src/pair_peri.rst @@ -164,7 +164,7 @@ details please see the description in "(Mitchell2011a)". .. note:: Prior versions of LAMMPS, had an incorrect the plasticity model in style - *peri/eps* relative to the source report :ref:`(Mitchell2011a) `. + *peri/eps* relative to the source report :ref:`(Mitchell2) `. These affected the evolution of the plastic deviatoric extension and caused significant overshooting of the yield surface. These have since been corrected, however, there is still no radial return rule to ensure the plastic deviatoric @@ -271,12 +271,12 @@ none .. _Mitchell2011: -**(Mitchell2011)** Mitchell. A non-local, ordinary-state-based +**(Mitchell)** Mitchell. A non-local, ordinary-state-based viscoelasticity model for peridynamics. Sandia National Lab Report, 8064:1-28 (2011). .. _Mitchell2011a: -**(Mitchell2011a)** Mitchell. A Nonlocal, Ordinary, State-Based +**(Mitchell2)** Mitchell. A Nonlocal, Ordinary, State-Based Plasticity Model for Peridynamics. Sandia National Lab Report, 3166:1-34 (2011). diff --git a/doc/src/pair_polymorphic.rst b/doc/src/pair_polymorphic.rst index 2c9f118a866..bc8dfeea5f3 100644 --- a/doc/src/pair_polymorphic.rst +++ b/doc/src/pair_polymorphic.rst @@ -110,7 +110,7 @@ The potential reduces to a modified Stillinger-Weber potential W_{IJ}\left(r\right) & = u_{IJ}\left(r\right) \\ G_{JIK}\left(\cos\theta\right) & = g_{JIK}\left(\cos\theta\right) -The potential reduces to a Rockett-Tersoff potential (:ref:`Wang3 +The potential reduces to a Rockett-Tersoff potential (:ref:`(Wang5) `) if we set .. math:: @@ -355,7 +355,7 @@ Related commands .. _Wang3: -**(Wang)** J. Wang, and A. Rockett, Phys. Rev. B, 43, 12571 (1991). +**(Wang5)** J. Wang, and A. Rockett, Phys. Rev. B, 43, 12571 (1991). .. _poly-Daw: diff --git a/doc/src/pair_reaxff.rst b/doc/src/pair_reaxff.rst index 15fcb0cbc6d..6b1db547769 100644 --- a/doc/src/pair_reaxff.rst +++ b/doc/src/pair_reaxff.rst @@ -139,7 +139,7 @@ the system. Using the optional keyword *lgvdw* with the value *yes* turns on the low-gradient correction of ReaxFF for long-range London Dispersion, -as described in the :ref:`(Liu) ` paper. The bundled force +as described in the :ref:`(Liu4) ` paper. The bundled force field file *ffield.reax.lg* is designed for this correction, and is trained for several energetic materials (see "Liu"). When using *lgvdw yes*, the recommended value for parameter *thb* is 0.01, which can be set in the @@ -424,5 +424,5 @@ Journal of Physical Chemistry A, 112, 1040-1053 (2008). .. _Liu_2011: -**(Liu)** L. Liu, Y. Liu, S. V. Zybin, H. Sun and W. A. Goddard, Journal +**(Liu4)** L. Liu, Y. Liu, S. V. Zybin, H. Sun and W. A. Goddard, Journal of Physical Chemistry A, 115, 11016-11022 (2011). diff --git a/doc/src/pair_smatb.rst b/doc/src/pair_smatb.rst index f6aa9447e05..f7244873c27 100644 --- a/doc/src/pair_smatb.rst +++ b/doc/src/pair_smatb.rst @@ -36,7 +36,7 @@ Description The *smatb* and *smatb/single* styles compute the Second Moment Approximation to the Tight Binding :ref:`(Cyrot) `, -:ref:`(Gupta) `, :ref:`(Rosato) `, given by +:ref:`(Gupta2) `, :ref:`(Rosato) `, given by .. math:: E_{i} = \sum_{j,R_{ij}\leq R_{c}} \alpha(R_{ij}) - \sqrt{\sum_{j,R_{ij}\leq R_{c}}\Xi^2(R_{ij})} @@ -126,7 +126,7 @@ none .. _Gupta: -**(Gupta)** Gupta ,Phys Rev. B, 23, 6265-6270 (1981). +**(Gupta2)** Gupta ,Phys Rev. B, 23, 6265-6270 (1981). .. _Rosato: diff --git a/doc/src/pair_snap.rst b/doc/src/pair_snap.rst index 146313d2ebe..8a0c912593c 100644 --- a/doc/src/pair_snap.rst +++ b/doc/src/pair_snap.rst @@ -26,7 +26,7 @@ Description """"""""""" Pair style *snap* defines the spectral neighbor analysis potential -(SNAP), a machine-learning interatomic potential :ref:`(Thompson) +(SNAP), a machine-learning interatomic potential :ref:`(Thompson2) `. Like the GAP framework of Bartok et al. :ref:`(Bartok2010) `, SNAP uses bispectrum components to characterize the local neighborhood of each atom in a very general @@ -286,7 +286,7 @@ none .. _Thompson20142: -**(Thompson)** Thompson, Swiler, Trott, Foiles, Tucker, J Comp Phys, 285, 316 (2015). +**(Thompson2)** Thompson, Swiler, Trott, Foiles, Tucker, J Comp Phys, 285, 316 (2015). .. _Bartok20102: diff --git a/doc/src/pair_spica.rst b/doc/src/pair_spica.rst index b86639e8060..9f5737bead3 100644 --- a/doc/src/pair_spica.rst +++ b/doc/src/pair_spica.rst @@ -81,7 +81,7 @@ given by \qquad r < r_c as required for the SPICA (formerly called SDK) and the pSPICA Coarse-grained MD parameterization discussed in -:ref:`(Shinoda) `, :ref:`(DeVane) `, :ref:`(Seo) `, and :ref:`(Miyazaki) `. +:ref:`(Shinoda2) `, :ref:`(DeVane) `, :ref:`(Seo) `, and :ref:`(Miyazaki) `. :math:`r_c` is the cutoff. Summary information on these force fields can be found at https://www.spica-ff.org @@ -179,7 +179,7 @@ none .. _Shinoda3: -**(Shinoda)** Shinoda, DeVane, Klein, Mol Sim, 33, 27-36 (2007). +**(Shinoda2)** Shinoda, DeVane, Klein, Mol Sim, 33, 27-36 (2007). .. _DeVane: diff --git a/doc/src/pair_spin_dmi.rst b/doc/src/pair_spin_dmi.rst index bb98c72d84f..ede7bd2ec0d 100644 --- a/doc/src/pair_spin_dmi.rst +++ b/doc/src/pair_spin_dmi.rst @@ -98,8 +98,8 @@ none .. _Rohart: -.. _Tranchida5: - **(Rohart)** Rohart and Thiaville, Physical Review B, 88(18), 184422. (2013). +.. _Tranchida5: + **(Tranchida)** Tranchida, Plimpton, Thibaudeau and Thompson, Journal of Computational Physics, 372, 406-425, (2018). diff --git a/doc/src/pair_srp.rst b/doc/src/pair_srp.rst index 97795f8fa87..a2767eecb66 100644 --- a/doc/src/pair_srp.rst +++ b/doc/src/pair_srp.rst @@ -91,7 +91,7 @@ lever rule, where *L* is the normalized distance from the atom to the point of closest approach of bond *i* and *j*\ . The *mid* option takes *L* as -0.5 for each interaction as described in :ref:`(Sirk) `. +0.5 for each interaction as described in :ref:`(Sirk2) `. The following coefficients must be defined via the :doc:`pair_coeff ` command as in the examples above, or in @@ -211,7 +211,7 @@ The default keyword value is exclude = yes. .. _Sirk2: -**(Sirk)** Sirk TW, Sliozberg YR, Brennan JK, Lisal M, Andzelm JW, J +**(Sirk2)** Sirk TW, Sliozberg YR, Brennan JK, Lisal M, Andzelm JW, J Chem Phys, 136 (13) 134903, 2012. .. _Palkar: diff --git a/doc/src/pair_tersoff.rst b/doc/src/pair_tersoff.rst index 38a0262f5d3..e1e373a6e30 100644 --- a/doc/src/pair_tersoff.rst +++ b/doc/src/pair_tersoff.rst @@ -176,14 +176,14 @@ be set to 0.0 if desired. Note that the twobody parameters in entries such as SiCC and CSiSi are often the same, due to the common use of symmetric mixing rules, but this is not always the case. For example, the beta and n parameters in -Tersoff_2 :ref:`(Tersoff_2) ` are not symmetric. +Tersoff_2 :ref:`(Tersoff) ` are not symmetric. Similarly, the threebody parameters in entries such as SiCSi and SiSiC are often the same, but this is not always the case, particularly the value of R, which is sometimes typed on the first and second elements, sometimes on the first and third elements. Hence the need to specify R and D explicitly for all element triples. For example, while Tersoff's notation -in Tersoff_2 :ref:`(Tersoff_2) ` is ambiguous on this point, +in Tersoff_2 :ref:`(Tersoff) ` is ambiguous on this point, and properties of the zincblende lattice are the same for either choice, Tersoff's results for rocksalt are consistent with typing on the first and third elements. :ref:`Albe et al. ` adopts the same convention. @@ -197,7 +197,7 @@ it reduces to the form of :ref:`Albe et al. ` when beta = 1 and m = 1. Note that in the current Tersoff implementation in LAMMPS, m must be specified as either 3 or 1. Tersoff used a slightly different but equivalent form for alloys, which we will refer to as Tersoff_2 -potential :ref:`(Tersoff_2) `. +potential :ref:`(Tersoff) `. The *tersoff/table* style implements Tersoff_2 parameterization only. @@ -251,7 +251,7 @@ periodic supercell. To minimize the effect of strain on simulation results, the *shift* keyword allows adjusting the equilibrium bond length of one of the two materials (e.g., h-BN). Validation, benchmark tests, and applications of the *shift* keyword can be found in -:ref:`(Mandelli_1) ` and :ref:`(Ouyang_1) `. +:ref:`(Mandelli_1) ` and :ref:`(Ouyang2) `. For the specific case discussed above, the force field can be defined as @@ -340,7 +340,7 @@ Condens. Matter, 15, 5649(2003). .. _Tersoff_21: -**(Tersoff_2)** J. Tersoff, Phys Rev B, 39, 5566 (1989); errata (PRB 41, 3248) +**(Tersoff)** J. Tersoff, Phys Rev B, 39, 5566 (1989); errata (PRB 41, 3248) .. _Mandelli1: @@ -348,4 +348,4 @@ Condens. Matter, 15, 5649(2003). .. _Ouyang5: -**(Ouyang_1)** W. Ouyang et al., J. Chem. Theory Comput. 16(1), 666-676 (2020). +**(Ouyang2)** W. Ouyang et al., J. Chem. Theory Comput. 16(1), 666-676 (2020). diff --git a/doc/src/pair_tersoff_zbl.rst b/doc/src/pair_tersoff_zbl.rst index 276905163f2..cb70f73bc3b 100644 --- a/doc/src/pair_tersoff_zbl.rst +++ b/doc/src/pair_tersoff_zbl.rst @@ -194,7 +194,7 @@ be set to 0.0 if desired. Note that the twobody parameters in entries such as SiCC and CSiSi are often the same, due to the common use of symmetric mixing rules, but this is not always the case. For example, the beta and n parameters in -Tersoff_2 :ref:`(Tersoff_2) ` are not symmetric. +Tersoff_2 :ref:`(Tersoff) ` are not symmetric. We chose the above form so as to enable users to define all commonly used variants of the Tersoff portion of the potential. In particular, @@ -203,7 +203,7 @@ our form reduces to the original Tersoff form when m = 3 and gamma = and m = 1. Note that in the current Tersoff implementation in LAMMPS, m must be specified as either 3 or 1. Tersoff used a slightly different but equivalent form for alloys, which we will refer to as -Tersoff_2 potential :ref:`(Tersoff_2) `. +Tersoff_2 potential :ref:`(Tersoff) `. LAMMPS parameter values for Tersoff_2 can be obtained as follows: :math:`\gamma = \omega_{ijk}`, :math:`\lambda_3 = 0` and the value of @@ -323,4 +323,4 @@ Condens. Matter, 15, 5649(2003). .. _zbl-Tersoff_2: -**(Tersoff_2)** J. Tersoff, Phys Rev B, 39, 5566 (1989); errata (PRB 41, 3248) +**(Tersoff)** J. Tersoff, Phys Rev B, 39, 5566 (1989); errata (PRB 41, 3248) diff --git a/doc/src/pair_ylz.rst b/doc/src/pair_ylz.rst index 1081a0b915c..425e8ac77de 100644 --- a/doc/src/pair_ylz.rst +++ b/doc/src/pair_ylz.rst @@ -67,7 +67,7 @@ is the length unit. This pair style is suited for solvent-free coarse-grained simulations of biological systems involving lipid bilayer membranes, such as vesicle -shape transformations :ref:`(Yuan2010b) `, nanoparticle +shape transformations :ref:`(Yuan2010b) `, nanoparticle endocytosis :ref:`(Huang) `, modeling of red blood cell membranes :ref:`(Fu) `, :ref:`(Appshaw) `, and modeling of cell elasticity :ref:`(Becton) `. @@ -167,6 +167,8 @@ none **(Yuan2010a)** Yuan, Huang, Li, Lykotrafitis, Zhang, Phys. Rev. E, 82, 011905(2010). +.. _Yuan2: + **(Yuan2010b)** Yuan, Huang, Zhang, Soft. Matter, 6, 4571(2010). .. _Huang: diff --git a/doc/src/run_style.rst b/doc/src/run_style.rst index 2527e136ac6..af43a9b244d 100644 --- a/doc/src/run_style.rst +++ b/doc/src/run_style.rst @@ -196,7 +196,7 @@ This approach is based on the enhanced baseline decomposition of ---------- The *respa* style implements the rRESPA multi-timescale integrator -:ref:`(Tuckerman) ` with N hierarchical levels, where level +:ref:`(Tuckerman4) ` with N hierarchical levels, where level 1 is the innermost loop (shortest timestep) and level N is the outermost loop (largest timestep). The loop factor arguments specify what the looping factor is between levels. N1 specifies the number of iterations @@ -415,5 +415,5 @@ June 3-7, (2025). .. _Tuckerman3: -**(Tuckerman)** Tuckerman, Berne and Martyna, J Chem Phys, 97, p 1990 +**(Tuckerman4)** Tuckerman, Berne and Martyna, J Chem Phys, 97, p 1990 (1992). From c2fe55ad4995a9eb4cc24e6ef0220ec181dd72c1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 26 Jul 2026 16:23:19 -0400 Subject: [PATCH 46/54] send buffers should accept const pointers --- src/STUBS/mpi.cpp | 28 ++++++++++++++-------------- src/STUBS/mpi.h | 28 ++++++++++++++-------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/STUBS/mpi.cpp b/src/STUBS/mpi.cpp index d8aee042a97..466c2753ef0 100644 --- a/src/STUBS/mpi.cpp +++ b/src/STUBS/mpi.cpp @@ -560,7 +560,7 @@ int MPI_Ibcast(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm c /* copy values from data1 to data2 */ -int MPI_Allreduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, +int MPI_Allreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { int n = count * stubtypesize(datatype); @@ -574,7 +574,7 @@ int MPI_Allreduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype /* copy values from data1 to data2 */ -int MPI_Reduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, +int MPI_Reduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm) { int n = count * stubtypesize(datatype); @@ -586,7 +586,7 @@ int MPI_Reduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, M /* ---------------------------------------------------------------------- */ -int MPI_Scan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, +int MPI_Scan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { int n = count * stubtypesize(datatype); @@ -600,7 +600,7 @@ int MPI_Scan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI /* copy values from data1 to data2 */ -int MPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, +int MPI_Allgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) { int n = sendcount * stubtypesize(sendtype); @@ -614,7 +614,7 @@ int MPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *rec /* copy values from data1 to data2 */ -int MPI_Allgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, +int MPI_Allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, MPI_Comm comm) { int n = sendcount * stubtypesize(sendtype); @@ -628,7 +628,7 @@ int MPI_Allgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *re /* copy values from data1 to data2 */ -int MPI_Reduce_scatter(void *sendbuf, void *recvbuf, int *recvcounts, MPI_Datatype datatype, +int MPI_Reduce_scatter(const void *sendbuf, void *recvbuf, int *recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm) { int n = *recvcounts * stubtypesize(datatype); @@ -642,7 +642,7 @@ int MPI_Reduce_scatter(void *sendbuf, void *recvbuf, int *recvcounts, MPI_Dataty /* copy values from data1 to data2 */ -int MPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, +int MPI_Gather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) { int n = sendcount * stubtypesize(sendtype); @@ -656,7 +656,7 @@ int MPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbu /* copy values from data1 to data2 */ -int MPI_Gatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, +int MPI_Gatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm) { int n = sendcount * stubtypesize(sendtype); @@ -668,7 +668,7 @@ int MPI_Gatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvb /* ---------------------------------------------------------------------- */ -int MPI_Igatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, +int MPI_Igatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *req) { @@ -680,7 +680,7 @@ int MPI_Igatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recv /* copy values from data1 to data2 */ -int MPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, +int MPI_Scatter(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) { int n = recvcount * stubtypesize(recvtype); @@ -694,7 +694,7 @@ int MPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvb /* copy values from data1 to data2 */ -int MPI_Scatterv(void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void *recvbuf, +int MPI_Scatterv(const void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm) { int n = recvcount * stubtypesize(recvtype); @@ -706,7 +706,7 @@ int MPI_Scatterv(void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendt /* ---------------------------------------------------------------------- */ -int MPI_Iscatterv(void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void *recvbuf, +int MPI_Iscatterv(const void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcounts, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *req) { return MPI_Scatterv(sendbuf, sendcounts, displs, sendtype, recvbuf, recvcounts, recvtype, root, @@ -717,7 +717,7 @@ int MPI_Iscatterv(void *sendbuf, int *sendcounts, int *displs, MPI_Datatype send /* copy values from data1 to data2 */ -int MPI_Alltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, +int MPI_Alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm) { int n = sendcount * stubtypesize(sendtype); @@ -731,7 +731,7 @@ int MPI_Alltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recv /* copy values from data1 to data2 */ -int MPI_Alltoallv(void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype sendtype, +int MPI_Alltoallv(const void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *rdispls, MPI_Datatype recvtype, MPI_Comm comm) { diff --git a/src/STUBS/mpi.h b/src/STUBS/mpi.h index 176627f3d13..419856a1283 100644 --- a/src/STUBS/mpi.h +++ b/src/STUBS/mpi.h @@ -143,34 +143,34 @@ int MPI_Barrier(MPI_Comm comm); int MPI_Bcast(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm comm); int MPI_Ibcast(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Request *req); -int MPI_Allreduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, +int MPI_Allreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); -int MPI_Reduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, +int MPI_Reduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm); -int MPI_Scan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, +int MPI_Scan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); -int MPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, +int MPI_Allgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm); -int MPI_Allgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, +int MPI_Allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, MPI_Comm comm); -int MPI_Reduce_scatter(void *sendbuf, void *recvbuf, int *recvcounts, MPI_Datatype datatype, +int MPI_Reduce_scatter(const void *sendbuf, void *recvbuf, int *recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); -int MPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, +int MPI_Gather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm); -int MPI_Gatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, +int MPI_Gatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm); -int MPI_Igatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, +int MPI_Igatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *req); -int MPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, +int MPI_Scatter(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm); -int MPI_Scatterv(void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void *recvbuf, +int MPI_Scatterv(const void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm); -int MPI_Iscatterv(void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void *recvbuf, +int MPI_Iscatterv(const void *sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *req); -int MPI_Alltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, +int MPI_Alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm); -int MPI_Alltoallv(void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype sendtype, +int MPI_Alltoallv(const void *sendbuf, int *sendcounts, int *sdispls, MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *rdispls, MPI_Datatype recvtype, MPI_Comm comm); /* ---------------------------------------------------------------------- */ From af1b9a5cfc02e1366e5876e0514b97ba80792207 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 26 Jul 2026 18:26:53 -0400 Subject: [PATCH 47/54] update for automated online docs update --- .github/release_steps.md | 19 ++----------------- .github/update_release_docs.sh | 27 --------------------------- 2 files changed, 2 insertions(+), 44 deletions(-) delete mode 100644 .github/update_release_docs.sh diff --git a/.github/release_steps.md b/.github/release_steps.md index e0b992c1725..ab01729b0ca 100644 --- a/.github/release_steps.md +++ b/.github/release_steps.md @@ -187,23 +187,8 @@ attached to the GitHub release page. #### LAMMPS Online Manual -Creating the online docs requires setting some environment variables to have -the extra box at the bottom of the navigation bar included that allows to -switch between release, stable, and develop branch versions of the manual. -Also the search box should use Google search instead of the javascript search. - -``` sh -cd lammps-release -make -C doc clean -make -C doc upgrade -env LAMMPS_WEBSITE_BUILD=1 LAMMPS_WEBSITE_BUILD_VERSION=release LAMMPS_WEBSITE_BASEURL="https://docs.lammps.org/" \ - make -C doc html WEB_SEARCH=YES -make -C doc pdf -mv doc/Manual.pdf doc/html -rsync -arpv doc/html/ www.lammps.org:/var/www/lammps/docs/release-new - -Then log into www.lammps.org and move the current folder away and -the new folder in its place and update permissions. +The online manual pages are now automatically updated by the scripts in +the [lammps-docs](https://github.com/lammps/lammps-docs/) repository. #### Clean up: diff --git a/.github/update_release_docs.sh b/.github/update_release_docs.sh deleted file mode 100644 index 0ef93404229..00000000000 --- a/.github/update_release_docs.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -# check out LAMMPS release version -git checkout release || exit 1 - -# make sure we are in the LAMMPS root directory -if [ ! -e README ] || [ ! -e LICENSE ] || [ ! -e SECURITY.md ] || [ ! -e CITATION.cff ] -then - echo "Must be in the LAMMPS root folder to run this script" - exit 2 -fi - -export LC_ALL=C -export webserver=publish@www.lammps.org -export webroot=/var/www/lammps/download -export docroot=/var/www/lammps/docs - -# build documentation using its own virtual environment -export LAMMPS_WEBSITE_BUILD=1 -export LAMMPS_WEBSITE_BUILD_VERSION=release -export LAMMPS_WEBSITE_BASEURL="https://docs.lammps.org/release/" -make -C doc clean -make -C doc upgrade -make -C doc html WEB_SEARCH=YES -make -C doc pdf -rsync -arp doc/html/* ${webserver}:${docroot}/release/ -rsync -p doc/Manual.pdf ${webserver}:${docroot}/release/ From 3a5bbd2c61eb67acb1b7349ad0842592a556f191 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Jul 2026 07:41:36 -0400 Subject: [PATCH 48/54] tweak ML-QUIP library compiler settings to be clang compatible --- cmake/Modules/Packages/ML-QUIP.cmake | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cmake/Modules/Packages/ML-QUIP.cmake b/cmake/Modules/Packages/ML-QUIP.cmake index df3f66d744c..819e64d4f60 100644 --- a/cmake/Modules/Packages/ML-QUIP.cmake +++ b/cmake/Modules/Packages/ML-QUIP.cmake @@ -20,16 +20,16 @@ if(DOWNLOAD_QUIP) set(temp "${temp}F95_PRE_FILENAME_FLAG = -Tf\n") elseif(CMAKE_Fortran_COMPILER_ID STREQUAL GNU) # quip library uses GNU fortran extensions. If any more restrictive standards are set, reset them - string(REGEX REPLACE -std=f[0-9]+ -std=gnu _fopt "${CMAKE_Fortran_FLAGS_${BTYPE}}") - set(temp "${temp}FPP=${CMAKE_Fortran_COMPILER} -E -x f95-cpp-input\nOPTIM=${_fopt} -fmax-stack-var-size=6553600\n") + string(REGEX REPLACE -std=f[0-9]+ "" _fopt "${CMAKE_Fortran_FLAGS_${BTYPE}}") + set(temp "${temp}FPP=${CMAKE_Fortran_COMPILER} -E -x f95-cpp-input\nOPTIM=${_fopt}\n") set(temp "${temp}DEFINES += -DGETARG_F2003 -DGETENV_F2003 -DGFORTRAN -DFORTRAN_UNDERSCORE\n") - set(temp "${temp}F90FLAGS += -x f95-cpp-input -ffree-line-length-none -ffree-form -fno-second-underscore -fPIC\n") - set(temp "${temp}F95FLAGS += -x f95-cpp-input -ffree-line-length-none -ffree-form -fno-second-underscore -fPIC\n") - set(temp "${temp}F77FLAGS += -x f77-cpp-input -fno-second-underscore -fPIC\n") + set(temp "${temp}F90FLAGS += -std=gnu -x f95-cpp-input -ffree-line-length-none -ffree-form -fno-second-underscore -fmax-stack-var-size=6553600 -fPIC\n") + set(temp "${temp}F95FLAGS += -std=gnu -x f95-cpp-input -ffree-line-length-none -ffree-form -fno-second-underscore -fmax-stack-var-size=6553600 -fPIC\n") + set(temp "${temp}F77FLAGS += -std=gnu -x f77-cpp-input -fno-second-underscore -fmax-stack-var-size=6553600 -fPIC\n") else() message(FATAL_ERROR "The ${CMAKE_Fortran_COMPILER_ID} Fortran compiler is not (yet) supported for building QUIP") endif() - set(temp "${temp}CFLAGS += -fPIC -Wno-return-mismatch -DPROTOTYPES=1\nCPLUSPLUSFLAGS += -fPIC -Wno-return-mismatch\nAR_ADD=src\n") + set(temp "${temp}CFLAGS += -std=gnu89 -fPIC -Wno-return-mismatch -DPROTOTYPES=1\nCPLUSPLUSFLAGS += -fPIC -Wno-return-mismatch\nAR_ADD=src\n") set(temp "${temp}MATH_LINKOPTS=") foreach(flag ${BLAS_LIBRARIES}) set(temp "${temp} ${flag}") From 5d685b02c9f938e5b9e7345943a7d97fe6dccd75 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Jul 2026 09:27:35 -0400 Subject: [PATCH 49/54] add missing override --- src/ML-QUIP/pair_quip.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ML-QUIP/pair_quip.h b/src/ML-QUIP/pair_quip.h index 7f23ab44788..3db133daa6c 100644 --- a/src/ML-QUIP/pair_quip.h +++ b/src/ML-QUIP/pair_quip.h @@ -42,7 +42,7 @@ class PairQUIP : public Pair { void init_style() override; double init_one(int, int) override; void allocate(); - void *extract(const char *, int &); + void *extract(const char *, int &) override; protected: double scale; From 1aa7a3f30cbf902223e1a31961d7a1e4f83eaa90 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Jul 2026 12:36:28 -0400 Subject: [PATCH 50/54] add command line flags to regression test merge script to include commit hash and branch info --- tools/regression-tests/merge_results.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/regression-tests/merge_results.py b/tools/regression-tests/merge_results.py index 398709d64e6..589bbd9279f 100755 --- a/tools/regression-tests/merge_results.py +++ b/tools/regression-tests/merge_results.py @@ -126,6 +126,8 @@ def markdown_list(keys, tests, maxlen=50): parser.add_argument("--json", dest="json_file", default="", help="JSON output file with results and metadata") parser.add_argument("--summary", dest="summary", default="", help="Markdown summary output file ('-' for stdout)") parser.add_argument("--compare", dest="compare", default="", help="JSON file from a previous run to compare against") + parser.add_argument("--commit", dest="commit", default="", help="Commit hash for git revision that was tested") + parser.add_argument("--branch", dest="branch", default="", help="Git branch of revision that was tested") args = parser.parse_args() # merge the shards @@ -159,12 +161,16 @@ def markdown_list(keys, tests, maxlen=50): data = { 'metadata': { 'title': args.title, - 'generated': datetime.datetime.now().isoformat(timespec='seconds'), + 'generated': datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%dT%H:%M:%SZ'), 'properties': properties, 'counts': counts, }, 'tests': tests, } + if args.commit: + data['metadata']['commit'] = commit + if args.branch: + data['metadata']['branch'] = branch with open(args.json_file, 'w') as f: json.dump(data, f, indent=2) f.write('\n') From 6b16f05dcb5f585c3c7faf10422425a1c4679069 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Jul 2026 12:57:39 -0400 Subject: [PATCH 51/54] more reliably derive bench folder from example toplevel instead of LAMMPS binary --- tools/regression-tests/run_tests.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/regression-tests/run_tests.py b/tools/regression-tests/run_tests.py index 24d28583c38..cd946ca853f 100755 --- a/tools/regression-tests/run_tests.py +++ b/tools/regression-tests/run_tests.py @@ -1017,7 +1017,7 @@ def execute(lmp_binary, config, input_file_name, generate_ref=False): get the reference walltime by running the lmp_binary with config with an input script in the bench/ folder in.lj is suitable as it doesn't need any potential file, nor any extra packages ''' -def get_reference_walltime(lmp_binary, config): +def get_reference_walltime(lmp_binary, config, example_toplevel): cmd_str = "" # check if mpiexec/mpirun is used if config['mpiexec']: @@ -1027,7 +1027,7 @@ def get_reference_walltime(lmp_binary, config): lmp_build_folder = lmp_binary.rsplit('/', 1)[0] # guess the bench folder - lmp_bench_folder = lmp_build_folder + "/../bench/" + lmp_bench_folder = example_toplevel + "/../bench/" # run with replicate for a copple of seconds long run cmd_str += lmp_binary + " -in " + lmp_bench_folder + "in.lj -v x 2 -v y 2 -v z 1 " + config['args'] @@ -1486,7 +1486,7 @@ def divide_into_N(original_list, N): print(f" Cannot open progress file {progress_file_abs} to resume, rerun all the tests") # get a reference walltime - walltime_ref = get_reference_walltime(lmp_binary, config) + walltime_ref = get_reference_walltime(lmp_binary, config, example_toplevel) # record all the failure cases (overwrite if the file exists) failure_file_abs = pwd + "/" + failure_file From 02f138576f50438ea5895e66fb770edf091e9796 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 Jul 2026 13:29:41 -0400 Subject: [PATCH 52/54] correct stupid mistake --- tools/regression-tests/merge_results.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/regression-tests/merge_results.py b/tools/regression-tests/merge_results.py index 589bbd9279f..3655f7b4f11 100755 --- a/tools/regression-tests/merge_results.py +++ b/tools/regression-tests/merge_results.py @@ -168,9 +168,9 @@ def markdown_list(keys, tests, maxlen=50): 'tests': tests, } if args.commit: - data['metadata']['commit'] = commit + data['metadata']['commit'] = args.commit if args.branch: - data['metadata']['branch'] = branch + data['metadata']['branch'] = args.branch with open(args.json_file, 'w') as f: json.dump(data, f, indent=2) f.write('\n') From fdfa7ef72122a70791d50ac04c2fffbcc4ea89f0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 29 Jul 2026 23:30:03 -0400 Subject: [PATCH 53/54] fix typo --- doc/src/Howto_python.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/Howto_python.rst b/doc/src/Howto_python.rst index 62d38ae4c25..ce97a2d5290 100644 --- a/doc/src/Howto_python.rst +++ b/doc/src/Howto_python.rst @@ -247,7 +247,7 @@ lammps.numpy module. Those represent the *local* atoms of the individual sub-domain for the current MPI process and may contain information for the local ghost atoms or not depending on the property. Both can be accessed as lists, but for the ctypes list object the size -is not known and hast to be retrieved first to avoid out-of-bounds +is not known and has to be retrieved first to avoid out-of-bounds accesses. .. code-block:: python From 1b9059e42c0f1c595aa39f43189720697bbc4ef2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 29 Jul 2026 23:30:36 -0400 Subject: [PATCH 54/54] add false positives for spell checker --- doc/utils/sphinx-config/false_positives.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index c57d5d83393..e58892c0594 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -903,6 +903,7 @@ dimdim dimensionally dimensionality dimensioned +dimer dimgray dipolar dipoleflag @@ -1166,6 +1167,7 @@ erotate errno Ertas ervel +es eshelby Eshelby eskm @@ -1412,6 +1414,7 @@ Ganzenmuller Gao Gapsys Garg +gasses Gathert Gaus gauss @@ -2105,6 +2108,7 @@ lars latboltz LATBOLTZ latencies +LaTeX Latour latourr lattce @@ -2547,6 +2551,7 @@ molindex MolPairStyle moltemplate momb +momenta mon Monaghan Monaghans @@ -2596,6 +2601,7 @@ mps mradius Mrovec Mryglod +ms mscg MSCG msd @@ -3984,6 +3990,7 @@ sublo Subramaniyan subscripted subscripting +subsubsection sudo Sugaku Sugawara @@ -4659,6 +4666,8 @@ Zemer zenodo Zentrum Zepeda +Zeroes +zeroes zerom zflag Zhang