Compare commits

...

778 Commits

Author SHA1 Message Date
254a849a29 Merge pull request #4077 from akohlmey/fix_ewald_const_issue
Fix compilation issue for some pair styles using ewald_const.h
2024-02-13 18:51:38 -05:00
5b645b631b add detection for CrayClang to the OpenMP compatibility check 2024-02-13 11:09:25 -05:00
0273fb4ad4 flag as update 1 version 2024-02-13 08:22:05 -05:00
a48da5b1e4 move ewald_const.h to src and apply it to a few more files 2024-02-13 08:02:32 -05:00
c6a8f1fe58 Merge pull request #4073 from akohlmey/collected-small-changes
Collected small changes and fixes
2024-02-12 14:14:04 -05:00
8f848d9a81 update to use modernized APIs without directly accessing internal data of Modify 2024-02-09 15:36:15 -05:00
17ea598613 update API access to fixes and computes. improve error messages. 2024-02-09 15:30:57 -05:00
5aca8099e6 avoid installing libraries and headers for downloaded add-on libraries 2024-02-09 13:38:12 -05:00
1421d53b8c fix bug with assigning molecule IDs in parallel 2024-02-09 11:04:07 -05:00
524470f9fc document restriction for molecule sets. improve warning message. 2024-02-09 11:03:44 -05:00
245f8c2fad silence compiler warnings 2024-02-09 10:43:38 -05:00
69a999e565 remove dead code 2024-02-09 08:19:58 -05:00
a2ae9dce64 apply clang-tidy fixes 2024-02-09 06:29:08 -05:00
f8885cb266 implement clang-tidy fixes 2024-02-09 06:22:10 -05:00
9c6e88f575 use plumed version 2.8.3 by default 2024-02-09 05:09:47 -05:00
801c62dbde updated library for better Windows portability 2024-02-09 04:14:14 -05:00
953e01d2c4 Linux to Windows cross-compilation is only supported by CMake 2024-02-09 03:44:01 -05:00
11580aea57 update OpenCL loader library to latest upstream version 2024-02-09 03:39:44 -05:00
c967a5e6cc flag development version 2024-02-08 12:47:52 -05:00
ae666de3f7 small optimization and portability to Solaris/OpenIndiana 2024-02-07 22:57:12 -05:00
77ec384620 include kk suffix 2024-02-07 19:58:05 -05:00
843fe4f9e8 remove dead code 2024-02-07 19:57:51 -05:00
b5a1c1abba Merge pull request #4071 from akohlmey/next_release
Update version tags and strings for the next feature release
2024-02-07 18:49:29 -05:00
c81d3ecb06 Merge pull request #4072 from stanmoore1/fft_issue
Fix issue from #4007
2024-02-07 17:32:49 -05:00
420498edbc Remove duplicated code; MIN/MAX defined in pointers.h 2024-02-07 14:51:05 -07:00
700011f19f Merge branch 'develop' into fft_issue 2024-02-07 14:49:32 -05:00
9f8d7d2956 replace random_external_state.h include from fix_shardlow.h with type declaration 2024-02-07 14:49:05 -05:00
72e3dc50ac Merge pull request #4070 from akohlmey/silence-warnings
Silence some compiler warnings and remove dead code
2024-02-07 14:22:48 -05:00
35fe562bdf Fix issue from #4007 2024-02-07 11:47:44 -07:00
1eeb7ab19e update version tags for feature release 2024-02-07 05:03:20 -05:00
ff5aa34f5a remove some dead code 2024-02-07 04:39:42 -05:00
6ecc348a66 final changes so MGPT compiles without warnings with and without timings enabled 2024-02-07 04:22:09 -05:00
9921338ee1 update log files for MGPT package 2024-02-07 03:57:12 -05:00
7886327243 reduce warnings in MGPT package 2024-02-06 20:45:49 -05:00
031cef558e silence unused parameter warnings in the gpu lib tree 2024-02-06 20:18:43 -05:00
b9ec85427d Merge pull request #4007 from hagertnl/issue3775_fft_kokkos
KSPACE: decouple KOKKOS and non-KOKKOS FFT
2024-02-06 19:01:15 -05:00
c1024c811f Fix name issue 2024-02-06 14:05:04 -07:00
2f4dbdceb6 Remove redundant checks 2024-02-06 13:28:33 -07:00
19a5de1be6 silence compiler warning 2024-02-06 15:11:31 -05:00
5adbc09b71 Move warning to avoid multiple instances 2024-02-06 12:33:01 -07:00
d3784154bf Merge pull request #4041 from akohlmey/test-fix-numdiff
Add fix numdiff based tests for bonded interactions
2024-02-06 14:15:28 -05:00
4b0c1f2605 Merge branch 'develop' of github.com:lammps/lammps into issue3775_fft_kokkos 2024-02-06 12:09:55 -07:00
beaab56826 Move define checks 2024-02-06 12:08:00 -07:00
46b39d2ca4 Add warning 2024-02-06 12:07:48 -07:00
98876e0e2f Merge pull request #4067 from akohlmey/remove_unused_const
Remove unused constants
2024-02-06 13:38:24 -05:00
431788db49 Need bifactor duplicated code 2024-02-06 11:31:16 -07:00
34cd8ad3bc Small cleanup 2024-02-06 11:01:42 -07:00
7fdc09608b add notes about using static constexpr to programming style guide 2024-02-06 12:16:57 -05:00
e95d52780c fix grammar error 2024-02-06 11:47:58 -05:00
0bb6be5dd9 provide a more detailed description of the bundled tests 2024-02-06 11:37:41 -05:00
5773e35892 recover compilation of MPI stubs on older systems that don't default to C++11 2024-02-06 09:36:35 -05:00
def362ffa4 a few final updates 2024-02-06 05:45:58 -05:00
d2def08778 a few more define to constexpr translations 2024-02-06 05:38:14 -05:00
2059b85e22 avoid uninitialized data access 2024-02-06 05:13:32 -05:00
f6ce3ae45e some more constant cleanups 2024-02-06 05:13:12 -05:00
eb9412f507 even more constant cleanup 2024-02-06 00:57:46 -05:00
2760480630 more constant cleanups 2024-02-06 00:28:58 -05:00
187a35d7b2 convert a few more defines to static constexpr 2024-02-05 23:57:41 -05:00
d1f1cf4012 silence compiler warnings 2024-02-05 23:22:07 -05:00
ad855ad7ea remove unused constants 2024-02-05 20:26:23 -05:00
de39bcc1fd update documentation 2024-02-05 17:37:53 -05:00
11b2538cdb print fft info also with -help flag, using single function to create string 2024-02-05 17:32:45 -05:00
efbc0e0579 whitespace 2024-02-05 17:22:53 -05:00
3c184aac84 add fft support to info command 2024-02-05 16:45:01 -05:00
960b22763d Merge branch 'develop' into issue3775_fft_kokkos 2024-02-05 16:05:59 -05:00
8d673bdfcf Merge pull request #4063 from akohlmey/collected-small-changes
Collected small changes and fixes
2024-02-05 11:00:17 -05:00
094d099699 update author credits 2024-02-05 10:11:01 -05:00
e5abfda823 cosmetic 2024-02-03 17:47:00 -05:00
ac8f02ec5a correct comment 2024-02-02 12:17:58 -05:00
82f106c12a ensure that the "timeremain" thermo keyword never reports a negative remaining time 2024-02-02 11:53:40 -05:00
33e57e50e8 cosmetic 2024-02-01 20:15:15 -05:00
2c9e652772 fix uninitialized data bug when using a child class 2024-02-01 20:15:04 -05:00
8a9dfe8d11 silence compiler warning 2024-02-01 12:30:43 -05:00
ccd50a8958 add workaround for Cray's Clang based compiler to compile fmtlib 2024-02-01 12:12:03 -05:00
d490d24bba update CMake script code to automatically chose heFFTe backed based on FFT choice 2024-02-01 12:10:53 -05:00
06521d9d0d Merge pull request #4062 from rbberger/update_hip_detection
Remove HIP_PATH requirement from CMake build
2024-02-01 08:34:15 -05:00
adc79272c9 update log files for current code 2024-02-01 00:12:04 -05:00
17f869bf5e fix issues with reading and writing data files for systems without atom IDs 2024-01-31 20:20:35 -05:00
5599d1843a update syntax 2024-01-31 19:56:36 -05:00
677c8258e2 fix cmake issues: always build static heFFTe libs, fixup git hash, cmake output 2024-01-31 16:19:55 -05:00
de7c459b2f consolidate FFT settings in headers 2024-01-31 13:28:41 -05:00
e319555f64 merge lmpfftsettings_kokkos.h into lmpfftsettings.h 2024-01-31 12:54:03 -05:00
23ed9a0980 Merge branch 'develop' into issue3775_fft_kokkos 2024-01-31 12:39:02 -05:00
1cecfb9df1 Merge branch 'develop' into test-fix-numdiff 2024-01-30 04:30:48 -05:00
c0b16acb7e Merge branch 'develop' into collected-small-changes 2024-01-30 00:23:01 -05:00
52de76d97b Merge pull request #4015 from srtee/develop
add border information to Atom::add_custom and Atom::find_custom
2024-01-29 22:46:05 -05:00
6927934243 make estimated accuracy output more readable 2024-01-29 21:12:41 -05:00
c43b10f952 Merge branch 'develop' into srtee_develop 2024-01-29 17:37:54 -05:00
87fd1c63df whitespace 2024-01-29 15:52:04 -05:00
ef1857d50d programming style updates 2024-01-29 15:48:30 -05:00
a83a5165ee simplify 2024-01-28 11:30:11 -05:00
75c20aa5a5 Merge branch 'develop' into test-fix-numdiff 2024-01-26 23:21:44 -05:00
84f86c2c15 improve error message 2024-01-26 23:18:15 -05:00
a2b7a49c90 Remove HIP_PATH requirement from CMake build
It is not recommended to set the HIP_PATH environment variable anymore as it
may break hipcc in some cases.

We only used it for adding the necessary CMAKE_PREFIX_PATH, which after the
folder structure reorganization in 5.x was pointing to the same location
anyway.

Closes issue #3986
2024-01-26 15:19:41 -07:00
5c43b56699 silence compiler warning 2024-01-26 16:47:22 -05:00
2ea200dc01 add ghost check to redID in pair_amoeba.cpp 2024-01-27 07:26:47 +10:00
0a1362654b make compiling QUIP library more reliable
- replace any -std=f* flags when using GNU fortran with -std=gnu
- cancel parallel make and require serial compile to avoid race condition accessing modules
- increase maximum allowed size for arrays on the stack 100 times
2024-01-26 16:23:14 -05:00
14bf502abe correct headings 2024-01-26 15:51:17 -05:00
28de91a2cc avoid uninitialized pointers 2024-01-26 15:51:16 -05:00
7d53f8d1c5 Merge pull request #4054 from akohlmey/consolidate-sphere-omega-flag
Remove sphere_flag and replace with radius_flag and omega_flag as needed
2024-01-26 15:50:32 -05:00
40782fec09 fix spelling issues 2024-01-26 14:55:09 -05:00
6bfe0ca573 remove accidentally included file 2024-01-26 14:46:55 -05:00
e84adc630b adjustements to atom_style doc page 2024-01-26 10:11:35 -07:00
4082ca077e Merge branch 'develop' into consolidate-sphere-omega-flag
# Conflicts:
#	src/compute_temp_sphere.cpp
2024-01-25 17:57:53 -05:00
3941baeda1 Merge pull request #4051 from akohlmey/collected-small-changes
Collected small changes and fixes
2024-01-25 17:55:13 -05:00
d7e8530503 Merge pull request #4058 from akohlmey/internal_variable_interface
Add function to library interfaces to set internal style variable values
2024-01-25 16:15:56 -05:00
1016e28f98 avoid redundant checks and accessing uninitialized data 2024-01-25 14:02:03 -05:00
9813abe428 whitespace 2024-01-25 12:49:01 -05:00
4134c82117 say more explicitly what the added function calls do 2024-01-25 12:47:06 -05:00
9d68b0ecc5 Merge branch 'develop' into issue3775_fft_kokkos 2024-01-25 09:03:52 -05:00
104af8bba4 simplify 2024-01-25 04:25:48 -05:00
6442e05988 even more define to static constexpr conversions 2024-01-25 02:17:28 -05:00
7cb907da58 remove unused variables 2024-01-24 21:19:25 -05:00
d2170cedec rename functions to avoid overloading polymorph functions 2024-01-24 21:15:02 -05:00
a6261d75b9 some more define to static constexpr conversions 2024-01-24 21:14:19 -05:00
ebd493ea77 update atom_style command documentation 2024-01-24 16:11:29 -05:00
77e7a71ded Fixed typo in NEB documentation (energy units --> dimensionless) 2024-01-24 14:52:42 -05:00
4a13fe68e0 add tests for new library APIs 2024-01-24 04:47:59 -05:00
7b210dd97e add documentation for new library APIs to set variables and changes to the old API 2024-01-24 04:14:03 -05:00
c7a3571974 add library interface to Variable::internal_set() 2024-01-24 03:59:29 -05:00
7023723e05 remove accidentally added files 2024-01-23 21:23:36 -05:00
f7fdad8bc5 update external MDI library to version 1.4.26 2024-01-23 21:21:04 -05:00
039ad4f4ae change Atom_KOKKOS::add_custom to match Atom, and tidy headers in atom.h 2024-01-22 15:11:52 +10:00
de35784c93 update cache action to v4 2024-01-21 21:16:33 -05:00
1f863cd4a3 simplify since constexpr should conver to FFT_SCALAR at compile time 2024-01-21 15:59:09 -05:00
12422ff510 replace defines with static constexpr declarations 2024-01-21 15:53:35 -05:00
a473d6f347 refactor dump code to no longer need access to internal Modify class data 2024-01-21 14:42:57 -05:00
fd0507bded fix refactoring bug 2024-01-21 14:22:41 -05:00
6339dfad09 replace references to fix ave/spatial with correct equivalents 2024-01-21 12:24:38 -05:00
722452657c avoid direct access to internal data of Modify class instance 2024-01-21 12:19:28 -05:00
35124fdef3 simplify and avoid direct access to the list of fixes in Modify 2024-01-21 11:50:29 -05:00
5b80899fa4 simplify and avoid direct access to the list of computes in Modify 2024-01-21 11:50:17 -05:00
5ece2139e8 remove tabs and trailing whitespace 2024-01-21 10:02:41 -05:00
aedc061c45 change skip inflag check logic to avoid error opening non-existant file 2024-01-21 09:42:24 -05:00
795d6e4420 silence some more compiler warnings in CUDA code 2024-01-21 09:36:10 -05:00
2760452c68 suppress warnings about reading from stdin for flags that do not process an input 2024-01-21 09:26:42 -05:00
b8ba3da4e2 silence a few more compiler warnings 2024-01-21 00:35:36 -05:00
80ef8656e8 remove some more dead code to silence compiler warnings 2024-01-20 23:11:20 -05:00
35a6bf0cac silence compiler warning 2024-01-20 22:59:23 -05:00
930a717f5e silence CMake warning about FindCUDA.cmake being obsolete 2024-01-20 22:59:13 -05:00
88e384037f make sure both NEB class constructors are consistently initialized 2024-01-20 14:49:57 -05:00
5a67c4d704 add check for another kind of broken references in ReST files 2024-01-20 10:53:41 -05:00
52e76502f4 formatting update, correct references 2024-01-20 10:53:04 -05:00
d6d8a2cd8a correctly determine when to create "rootworld" communicator 2024-01-20 10:52:20 -05:00
0d1234e63a modernize by replacing Modify::find_compute() with Modify::get_compute_by_id() 2024-01-19 15:16:23 -05:00
ae2c17d3ad remove unused code 2024-01-19 15:01:53 -05:00
300b75fbff remove references to sphere_flag 2024-01-19 15:01:19 -05:00
0efff49bdf capitalize constants 2024-01-19 13:00:41 -05:00
39d21473a0 various coding style updates 2024-01-19 13:00:29 -05:00
e0967af6e8 move fix wall style enumerator to header and import from there for consistency 2024-01-19 12:58:48 -05:00
0d8f549e33 remove sphere_flag and replace with radius_flag and omega_flag as needed 2024-01-19 12:50:31 -05:00
3b4b7eb919 there is no support for dipoles in fix npt/cauchy 2024-01-19 09:48:27 -05:00
f73cb28ed4 modernize and apply clang-format 2024-01-19 05:54:54 -05:00
e28f93dca4 programming style updates 2024-01-19 00:03:13 -05:00
4015d1bb39 initialize static string buffers to empty strings 2024-01-19 00:02:50 -05:00
3ae4779c7f convert defines into static constexpr 2024-01-18 23:59:33 -05:00
48e83b2298 remove unused parameter and silence compiler warnings 2024-01-18 22:55:02 -05:00
991663feff Avoid (harmless) errors when shutting down the GPU. 2024-01-18 22:42:32 -05:00
54794a45de Merge pull request #4030 from alphataubio/alphataubio-charmmfsw-kk
Kokkos charmmfsw pair and dihedral styles
2024-01-18 18:10:12 -05:00
4b561d5f8e fix typo 2024-01-18 17:06:58 -05:00
fb9ae23516 revert more general doc changes. those are moved to a separate branch for further edits. 2024-01-18 16:46:47 -05:00
01973ddf23 Merge branch 'develop' into alphataubio-charmmfsw-kk 2024-01-18 16:37:27 -05:00
af60285a3f Merge pull request #4048 from akohlmey/lepton_updates
Update LEPTON styles for more flexibility
2024-01-18 16:34:38 -05:00
0ad1d29c4d Merge pull request #4047 from stanmoore1/kk_fix_exchange_bug
Fix bug in some Kokkos fixes' unpack exchange on device
2024-01-18 14:58:09 -05:00
fe1b568241 Merge pull request #4046 from akohlmey/molecule-dipole
Add support for Dipoles section to molecule files
2024-01-18 14:57:01 -05:00
14abc184f8 Merge pull request #4040 from alphataubio/cgdna
[CG-DNA examples/util] fixed indentations and ported python 2 code to python 3
2024-01-18 14:55:41 -05:00
bf9b8606ef Merge pull request #3905 from jrgissing/bond_react_fixes_aug23
Assorted bond/react fixes
2024-01-18 14:41:01 -05:00
3b3ab4207b Merge pull request #4042 from akohlmey/fmtlib-10.2.1
Update embedded fmtlib code to version 10.2.1
2024-01-18 14:33:28 -05:00
425421c1ca fix typo, cut-n-paste error, and add clarification 2024-01-18 14:32:40 -05:00
90a79d9a4b change unit test to include expressions with constant force or potential 2024-01-18 11:06:52 -05:00
73194764e9 add optional keywords "auto_offset" and "no_offset" to bond/angle style lepton 2024-01-18 11:05:52 -05:00
f3c5002634 Merge branch 'lammps:develop' into bond_react_fixes_aug23 2024-01-18 10:00:00 -05:00
57db9be64f add support for Lepton expressions with constant force or constant potential 2024-01-18 09:46:23 -05:00
5304c43fef add test for exceptions and evaluation of compiled expressions 2024-01-18 04:32:20 -05:00
2d8f622c6a Merge pull request #4039 from akohlmey/collected-small-changes
Collected small changes and fixes
2024-01-17 19:28:48 -05:00
189b08b4a5 Fix bug in some Kokkos fixes' unpack exchange on device 2024-01-17 14:47:59 -07:00
9c4597b5e9 more GPU package cleanup from Trung 2024-01-17 16:12:36 -05:00
6e2df52c8f remove dead code and align better with LAMMPS programming style 2024-01-17 16:09:16 -05:00
16d4811592 move fix bond/history back to src folder 2024-01-17 15:48:03 -05:00
d5da47cf33 Revert "adjust a few more fix styles for fix bond/history being optional"
This reverts commit 497c48bd80.
2024-01-17 15:47:11 -05:00
b47ad7acf4 Revert "make delete_bonds command code compatible with BPM package not being installed"
This reverts commit 715b030bd6.
2024-01-17 15:46:03 -05:00
f78f596d9d document using enumerator constants in Atom and AtomVec classes 2024-01-17 14:58:09 -05:00
ff0d18114e silence compiler warnings 2024-01-17 13:25:46 -05:00
d30483fa67 fix MPI issue with PairAmoeba::print_settings() 2024-01-17 12:31:58 -05:00
6f6a08c251 add ghost checking for custom peratom quantities amgroup and pval 2024-01-17 15:54:47 +10:00
f23ba8fbad make certain temporary test files are deleted 2024-01-16 17:54:08 -05:00
f5cbef8b12 fix typo 2024-01-16 15:57:42 -05:00
deb8416630 update tests for echoing the title line of molecule files 2024-01-16 13:53:07 -05:00
b6d27dfb96 add versionadded tag 2024-01-16 13:06:00 -05:00
103d8cadb9 add unit tests for dipoles in molecule files 2024-01-16 13:05:49 -05:00
9312ce0beb store and print title line of molecule 2024-01-16 12:20:02 -05:00
f6f7392595 make more user friendly 2024-01-16 12:04:13 -05:00
87297902a3 Add support for "Dipoles" section in molecule file 2024-01-16 12:04:00 -05:00
99e38ba55a fix whitespace 2024-01-16 23:44:00 +10:00
90b682834f Merge branch 'develop' of https://github.com/lammps/lammps into develop 2024-01-16 23:36:24 +10:00
b95706ca64 make separate find_custom_ghost() and use four separate ghost info arrays 2024-01-16 23:35:40 +10:00
89fd9ec531 improve ghost keyword comments in fix_property_atom.cpp 2024-01-16 23:04:59 +10:00
e3f81a2513 correct typo 2024-01-16 04:11:56 -05:00
e82ba61183 loop over all neighbor lists for created bonds same as for broken bonds 2024-01-16 04:02:38 -05:00
6f0fab8b08 bugfix for pair style coul/slater/long/gpu from Trung 2024-01-15 12:29:05 -05:00
74656f4e04 silence compiler warnings 2024-01-15 12:27:05 -05:00
4d830f1450 Merge branch 'develop' into collected-small-changes 2024-01-15 09:23:35 -05:00
8076d89422 Merge pull request #4037 from akohlmey/bigint_dof_computation
Make computation of PPPM grid counts and DOFs removed by fixes compatible with large systems
2024-01-15 09:22:43 -05:00
07876b5d1a this limitation no longer applies 2024-01-14 07:53:33 -05:00
b6b2c029b6 improve description of testing 2024-01-14 07:33:31 -05:00
9587e92a3c increase numdiff fudge factor so that individual epsilons need to be changed less 2024-01-13 10:33:13 -05:00
3c40f9fda2 remove obsolete machine makefiles 2024-01-13 10:23:58 -05:00
3668c0fc1b Merge branch 'develop' into fmtlib-10.2.1 2024-01-13 05:06:52 -05:00
a3682e1bd5 retain compatibility with python 2.x 2024-01-13 04:56:16 -05:00
497c48bd80 adjust a few more fix styles for fix bond/history being optional 2024-01-13 04:50:28 -05:00
f93032b903 skip failing numdiff tests for now 2024-01-13 04:26:08 -05:00
0d64aa375d tweak epsilon to pass numdiff tests 2024-01-13 04:05:34 -05:00
c340accb0a skip numdiff tests for linear tables (for now?) 2024-01-12 19:00:07 -05:00
e51a44862c add fix numdiff test to check consistency between energy and force for bonded interactions 2024-01-12 18:59:43 -05:00
a6b0c349d8 update unit test data for corrected angle style cosine/periodic 2024-01-12 18:45:10 -05:00
39579d21c8 correct factor 2 force error for m=1 in angle style cosine/periodic 2024-01-12 18:45:10 -05:00
2b04d23504 update unit test data for corrected angle style cosine/periodic 2024-01-12 18:43:19 -05:00
7a7492b757 cosmetic 2024-01-12 18:42:16 -05:00
6329d491dc correct factor 2 force error for m=1 in angle style cosine/periodic 2024-01-12 18:40:30 -05:00
f9eadacf6d correct factor 2 force error for m=1 in angle style cosine/periodic 2024-01-12 18:37:45 -05:00
5b05112aab fixed indentations and ported python 2 code to python 3 2024-01-12 18:19:50 -05:00
715b030bd6 make delete_bonds command code compatible with BPM package not being installed 2024-01-12 16:26:43 -05:00
a131b90962 make delete_bonds command code compatible with BPM package not being installed 2024-01-12 16:19:11 -05:00
01a3656eaf correct factor 2 force error for m=1 in angle style cosine/periodic 2024-01-12 15:25:42 -05:00
72ba7f6535 whitespace/clang-format 2024-01-12 15:25:42 -05:00
7c744f170e improve error message 2024-01-12 15:25:41 -05:00
02d2509e68 Merge branch 'develop' into bigint_dof_computation 2024-01-12 15:25:09 -05:00
df5461c27e Merge pull request #4021 from jtclemm/BPM
Bug fixes for BPM package
2024-01-12 15:24:24 -05:00
92481b546e Merge pull request #4036 from akohlmey/collected-kokkos-changes
Collected small KOKKOS changes
2024-01-12 15:12:56 -05:00
dd7ce5fbaa remove one more source of 32-bit integer overflow 2024-01-12 14:57:26 -05:00
b041ac7454 backport bugfix for Kokkos with SYCL from upstream 2024-01-12 13:30:16 -05:00
5ef8e8cf9a remove variables that are set but not used 2024-01-11 18:53:14 -05:00
d4bd385f5e remove unused function parameters and corresponding variables 2024-01-11 18:52:47 -05:00
b5aa04c36a remove unused variable 2024-01-11 18:52:23 -05:00
4cb82408c3 Merge branch 'develop' into fmtlib-10.2.1 2024-01-11 18:04:41 -05:00
18d140a96e Small tweak 2024-01-11 15:51:50 -07:00
22d50b32e7 Fix more warnings and remove deprecated Kokkos code 2024-01-11 15:40:45 -07:00
b5dbc4ebf6 Add missing dependency 2024-01-11 09:29:54 -07:00
4bda4621bb check whether total number of replica is too large for 32-bit int 2024-01-11 11:12:27 -05:00
22c7f0f150 redid plots to not be misleading with y axis not at 0 2024-01-11 10:57:00 -05:00
4d74c62325 silence some more warnings 2024-01-10 20:17:17 -05:00
62cf534de0 whitespace 2024-01-10 20:07:01 -05:00
c088681bf0 more large system shake stats fixes 2024-01-10 20:04:47 -05:00
768163865e avoid 32-bit integer overflow for PPPM grid 2024-01-10 19:54:29 -05:00
0b0b35856c remove unnecessary newton_bond considerations
related issue: fix bond/react may need modifications to work as expected when certain special_bond settings are used or when specials are defined explicitly in molecule templates and do not include all neighbors
2024-01-10 19:49:15 -05:00
f6649762e2 Moving files to BPM dir, skipping copy lists 2024-01-10 16:58:29 -07:00
c60217123a Merge branch 'lammps:develop' into bond_react_fixes_aug23 2024-01-10 18:45:29 -05:00
4bc77bc4ab Fix potential integer overflow in PPPM 2024-01-10 16:23:58 -07:00
0cfb6a058c make SHAKE stats output 64-bit compatible 2024-01-10 16:42:21 -05:00
8b89c330e6 make removed DOF computation large system compatible 2024-01-10 15:32:02 -05:00
93b7c6e380 Fix warnings 2024-01-10 12:21:22 -07:00
db45c23d69 silence compiler warnings 2024-01-10 11:52:09 -05:00
bd0c4f3979 remove dead code and silence compiler warning 2024-01-10 11:52:08 -05:00
7ca2dcac62 Merge pull request #4034 from jorge-ramirez-upm/correct-fix-ave-correlate-long
Small correction to fix/ave/correlate/long to show the right output after a restart
2024-01-08 17:01:22 -05:00
e280a2660f removed files generated bycharmmgui but not needed by example 2024-01-08 15:22:57 -05:00
cc957c6713 Fix another bug 2024-01-08 10:56:32 -07:00
7b4334695d Fix another bug from #4003 2024-01-08 10:29:48 -07:00
547024a0b1 Fix bug from #4003 2024-01-08 09:52:05 -07:00
1b6dc1fe8c Small correction to fix/ave/correlate/long to show the right output after a restart 2024-01-07 18:38:47 +01:00
2643a94f79 minor math formatting changes after phone readability testing, and added note box to use tip3 with charmm 2024-01-06 19:49:43 -05:00
9a97906fe5 fixed Trailing whitespaces in rst 2024-01-06 17:29:37 -05:00
0d431f74d2 fixed latex missing $ error and added little bit of negative spaces 2024-01-06 17:22:28 -05:00
b784d4aadd added 1HVN example into new examples/charmm directory
checked in as a separate commit, if maintainer doesnt approve, then easy to revert atomically.

if maintainer approves, then ill add mentions to examples/README and Examples.rst, and anywhere else needed
2024-01-06 09:04:15 -05:00
8f0c8592a9 updated charmm docs as requested by @akohlmey
- gathered all  tutorial like discussion, equations, and plot for old charmm and new charmmfsw into howto

- added equations and another plot for charmmfsw

- charmmgui 1HVN and 2CV5 examples
2024-01-06 09:01:22 -05:00
bd27903e8c Remove debug comments, small tweaks 2024-01-05 16:32:46 -07:00
404b579396 integrate into manual and add cross-references for CHARMM styles 2024-01-05 18:17:36 -05:00
aa5a4f5f64 Merge branch 'alphataubio-charmmfsw-kk' of https://github.com/alphataubio/lammps-alphataubio into alphataubio-charmmfsw-kk 2024-01-05 17:25:00 -05:00
c7521c44ef Revert "updated pair_charmm.rst"
This reverts commit f113ec84be.
2024-01-05 17:23:57 -05:00
cc3eb56c13 Fix FIXME 2024-01-05 13:12:35 -07:00
ac2c852121 integration into documentation 2024-01-05 13:45:40 -05:00
fc2d78fc0a Update Makefiles 2024-01-05 09:25:32 -07:00
10c0922588 Add author attribution 2024-01-05 09:24:34 -07:00
f113ec84be updated pair_charmm.rst 2024-01-05 11:17:26 -05:00
ec84580d41 fix whitespace styling 2024-01-05 05:11:33 -05:00
624bab71c6 Merge branch 'lammps:develop' into alphataubio-charmmfsw-kk 2024-01-05 04:41:31 -05:00
43642a6040 Kokkos 4 checks for compatible compilers so this is no longer needed. 2024-01-05 02:51:41 -05:00
45e0d5be0e Merge branch 'fmtlib-10.2.1' of github.com:akohlmey/lammps into fmtlib-10.2.1 2024-01-05 02:50:58 -05:00
0e148174ae update fmtlib to version 10.2.1 2024-01-05 02:49:57 -05:00
8ae9151b30 must include fmt/ranges.h for fmt::join() 2024-01-05 02:49:56 -05:00
1e9eb933be Merge pull request #4031 from stanmoore1/kk_pace_opt
Optimize Kokkos PACE pair style for GPUs
2024-01-05 02:48:45 -05:00
01482e7a2e update fmtlib to version 10.2.1 2024-01-04 22:46:40 -05:00
f9aafff992 must include fmt/ranges.h for fmt::join() 2024-01-04 22:45:53 -05:00
8090af5649 Merge branch 'develop' into issue3775_fft_kokkos 2024-01-04 21:11:54 -05:00
9d95c51b0b Merge branch 'develop' into kk_pace_opt
# Conflicts:
#	src/ML-PACE/compute_pace.cpp
2024-01-04 21:08:50 -05:00
0e2a065f6b Merge pull request #4003 from stanmoore1/kk_half_thread
Thread over neighbors in addition to atoms when using a half neighlist
2024-01-04 21:04:31 -05:00
3076f1c5f8 Merge pull request #4018 from akohlmey/collected-small-fixes
Collected small fixes and updates
2024-01-04 17:47:23 -05:00
4b4e796c19 Revert " // FIXME:"
This reverts commit de1f6eefd7.

my first idea to reset back force->qqr2e = force->qqr2e_charmm_real didnt work because class destructor gets called first THEN superclass destructor gets called
2024-01-04 16:09:04 -05:00
e26a762f88 improve compatibility of oneapi.cmake preset 2024-01-04 11:21:38 -05:00
c065d4bac6 // FIXME: destructor from this class resets
//
    // force->qqr2e = force->qqr2e_lammps_real
    //
    // at end of timestep 0 causing ~E-6 errors for steps 1,2,...
    // everywhere in pair_lj_charmmfsw_coul_long_kokkos when
    // running kokkos with openmp (and probably with GPUs also).
    //
    // WORKAROUND: for now until guidance from lammps devs is to
    // comment out this line here (commit to be reversed later).

    //force->qqr2e = force->qqr2e_lammps_real;
2024-01-04 00:50:06 -05:00
de1f6eefd7 // FIXME:
// superclass destructor from KSPACE/pair_lj_charmmfsw_coul_long.cpp:81
  // resets force->qqr2e = force->qqr2e_lammps_real at end of timestep 0
  // causing ~E-6 errors for steps 1,2,... everywhere in this class when
  // running kokkos with openmp (and probably with GPUs also).
  //
  // WORKAROUND: for now until guidance from lammps devs is to
  // reset it back force->qqr2e = force->qqr2e_charmm_real here.
2024-01-03 23:00:07 -05:00
13b6d40062 tiny_epoxy example correction
not sure why this issue showed up in recent LAMMPS versions
2024-01-03 20:38:10 -05:00
a6b00a60b2 additional check/warning for valid templates 2024-01-03 20:31:22 -05:00
fd846d539d Merge branch 'develop' of github.com:lammps/lammps into issue3775_fft_kokkos 2024-01-03 17:57:41 -07:00
9d7582ec1b Small tweak for readability 2024-01-03 16:59:11 -07:00
55784019f7 Fix CPU issue 2024-01-03 16:46:06 -07:00
e00fc992fc skip python tests using numpy that fail randomly on macOS 2024-01-03 15:10:37 -07:00
4fbb913425 skip python tests using numpy that fail randomly on macOS 2024-01-03 15:07:41 -07:00
600eaf837b update preferred contact info 2024-01-03 16:20:04 -05:00
66a5f56682 whitespace 2024-01-03 14:13:11 -07:00
377450882e Port changes to pair_pace_extrapolation_kokkos, unify code 2024-01-03 14:10:29 -07:00
5020861cbc Fix compiler warnings 2024-01-03 13:22:52 -07:00
163805bc33 removed scaffolding comments and fixed "(STACKPARAMS?m_params[itype][jtype].lj3:params(itype,jtype).lj3)" in compute_evdwl 2024-01-03 15:18:34 -05:00
d9ea10ca24 Merge branch 'lammps:develop' into bond_react_fixes_aug23 2024-01-03 14:59:26 -05:00
817c7bac18 Optimize Kokkos PACE pair style for GPUs 2024-01-03 10:11:30 -07:00
3a1d3bb64d second draft... applied changes to compute methods 2024-01-03 03:00:10 -05:00
c1446ddd92 improve error messages 2024-01-02 11:02:59 -05:00
94a124eb23 Merge branch 'lammps:develop' into alphataubio-charmmfsw-kk 2024-01-02 04:52:25 -05:00
0562c31138 added pair/lj/charmmfsw/coul/long/kk and dihedral/charmmfsw/kk so that lammps scripts generated by charmm-gui.org can be run without tweaks 2024-01-02 04:51:10 -05:00
ded160cd41 Generalizing fix update/special/bonds for pair hybrid 2023-12-31 10:49:59 -07:00
9546fd89e5 adjust heading levels 2023-12-23 12:16:53 -05:00
05bbb94345 add graph to show relation between branches and versions of LAMMPS 2023-12-23 12:06:38 -05:00
5d9f384338 recreate graphvis images with graphviz 8.1 2023-12-23 11:58:40 -05:00
b01065b398 use "neato" layout only for lammps-classes.dot to avoid issues with recent graphviz versions 2023-12-23 11:57:58 -05:00
bdb0fc6b7a replace non-ASCII character 2023-12-23 11:35:39 -05:00
0515f07172 whitespace 2023-12-23 03:00:11 -05:00
d080a1c218 Merge branch 'aip-water-update' of github.com:oywg11/lammps into collected-small-fixes 2023-12-23 02:46:55 -05:00
0822a49cfc Merge branch 'develop' into collected-small-fixes 2023-12-23 02:45:37 -05:00
35214120ad Merge pull request #4025 from oywg11/ilp-tmd-update
Add a new potential file for ilp/tmd
2023-12-22 21:06:27 -05:00
6a636d5491 Merge pull request #4023 from ndtrung81/unittest-debug
Updated the Developer unittest section for debugging failed unit tests individually
2023-12-22 19:59:14 -05:00
f147df8b44 add full list of atom pairs 2023-12-23 08:29:15 +08:00
6489e475b9 Merge pull request #4022 from akohlmey/cmap-fixes-for-charmm-gui
Corrections for fix cmap to be compatible with CMAP files created by CHARMM-GUI
2023-12-22 19:19:52 -05:00
4ea40ed2fd Merge branch 'ilp-tmd-update' of github.com:oywg11/lammps into collected-small-fixes 2023-12-22 14:45:43 -05:00
8cf958e241 Merge branch 'aip-water-update' of github.com:oywg11/lammps into collected-small-fixes 2023-12-22 14:44:27 -05:00
7cfbe77532 report incompatibility of verlet/split with INTEL package kspace styles 2023-12-22 13:42:56 -05:00
5b00ad8f71 flag error if using INTEL package kspace styles with run style verlet/split 2023-12-22 13:37:20 -05:00
c964d8cda8 skip python tests using numpy that fail randomly on macOS 2023-12-22 11:35:35 -05:00
efa37fff7f remove cached copy of "layout" since this was not always initialized when used 2023-12-22 11:31:31 -05:00
c4124c0995 correct statement about Xeon Phi support 2023-12-22 10:28:45 -05:00
a16a1a768c fix cut-n-paste bug and avoid uninitialized data access 2023-12-22 00:04:16 -05:00
f8495eaf75 make certain nbonds is initialized 2023-12-21 23:59:35 -05:00
2b31a2bed5 gracefully handle reaxff parameter files without hydrogen bond parameters 2023-12-21 16:07:58 -05:00
3b15594707 update citation comment 2023-12-21 15:58:29 -05:00
dedbd8f6db improvements from clang-tidy 2023-12-21 14:25:31 -05:00
b857cd9e39 update the doc file 2023-12-21 11:31:26 +08:00
b58203fc52 update the doc file 2023-12-21 10:44:03 +08:00
aa221e2f2b add new potential file for aip/water/2dm 2023-12-21 10:28:53 +08:00
e72f186123 check ghost vel in pair bpm/spring 2023-12-19 22:01:18 -07:00
86f87e0f7b Update docs 2023-12-19 10:46:41 -07:00
ab29200c60 More tuning 2023-12-19 10:26:52 -07:00
e98df7018b update the example files 2023-12-19 08:17:43 +08:00
6c798412b4 fix typo and remove unnecessary quotes 2023-12-18 18:52:42 -05:00
8e4871c5e1 Tune team params 2023-12-18 16:37:31 -07:00
af222711ae Added text to explain the output of ctest -V a bit more 2023-12-18 15:52:30 -06:00
3237c30117 reorganize the LAMMPS version and development description 2023-12-18 15:48:03 -05:00
c0c64e812f Enable default threading over neighbors for half list 2023-12-18 11:29:42 -07:00
dd1ac640ae Added declaration for FFT_KOKKOS variable 2023-12-18 12:56:30 -05:00
cddce67931 Merge branch 'develop' into issue3775_fft_kokkos 2023-12-18 12:14:15 -05:00
bc7050ab50 Added LMP_HEFFTE to CMakeLists.txt to attempt to fix a merge conflict 2023-12-18 12:11:31 -05:00
d02ffb0e70 Updated Summit & Frontier template Makefiles 2023-12-18 12:06:41 -05:00
bc47f4f3a3 Updated CMake preset files for kokkos-cuda and kokkos-hip 2023-12-18 11:56:23 -05:00
a6addbc907 Updated documentation for FFT_KOKKOS_ flags and CMake variable selection 2023-12-18 11:30:56 -05:00
4d2aed8937 bug fix
for when reaction site has angles, but post-reaction template has none (same for dihedrals, impropers)
2023-12-18 11:15:56 -05:00
7414fdaa47 Merge branch 'develop' of github.com:lammps/lammps into kk_half_thread 2023-12-18 09:03:39 -07:00
40f27eb7cf update doc file for ilp/tmd 2023-12-18 17:36:04 +08:00
20183ac9cc update potential file for ilp/tmd 2023-12-18 16:56:24 +08:00
8dcf980d0a update doc of ilp/tmd 2023-12-18 16:55:10 +08:00
ba4ac991b6 small fix for ilp/tmd and KC/full 2023-12-18 16:06:36 +08:00
94b62fa98b tweak epsilon 2023-12-17 21:22:33 -05:00
4c34bc2b9b upgrade CodeQL GitHub action scripts to latest version 2023-12-17 20:25:39 -05:00
188e1090e9 add some corrections and clarifications 2023-12-17 20:01:47 -05:00
e6a510ddc5 Merge branch 'lammps:develop' into bond_react_fixes_aug23 2023-12-17 17:02:18 -05:00
58ed034d7a Updated Developer unittest for debugging failed unit tests individually 2023-12-17 15:42:10 -06:00
d2ca1fe354 avoid that mliappy is initialized multiple times 2023-12-16 23:15:56 -05:00
4ae4c8103d step LAMMPS-GUI patch level 2023-12-16 22:46:02 -05:00
695a81ef70 avoid uninitialized data access 2023-12-16 21:50:38 -05:00
15a7b93361 relax epsilon to be compatible with most recent GCC compilers on Fedora 39 2023-12-16 17:40:31 -05:00
1ab406ee1a read CMAP data blocks one at a time and catch EOF exception to stop reading 2023-12-16 17:16:06 -05:00
4bf1b1d9c0 some refactoring and modernization 2023-12-16 17:15:31 -05:00
fb6a5843b9 handle comments in CMAP coeff assignments 2023-12-16 17:14:47 -05:00
96ef731f06 remove unused items 2023-12-16 17:14:19 -05:00
e100a42087 (re)throw EOF exception when next_dvector() has not yet read any items 2023-12-16 17:07:37 -05:00
41495579a6 update list 2023-12-16 00:18:05 -05:00
1f540772af Merge branch 'develop' into BPM 2023-12-15 15:25:35 -07:00
95d1a41ee4 Fixing bpm/sphere error in fix move, displace atoms 2023-12-15 13:33:45 -07:00
84af9e3476 remove hack 2023-12-14 22:02:39 -05:00
e36a764db2 add array and vector STL headers 2023-12-15 12:44:55 +10:00
abe6356716 update help index table for recently added or changed styles 2023-12-14 21:34:11 -05:00
a873106790 improve AMOEBA fix property/atom checks 2023-12-15 12:27:24 +10:00
09c87040b5 add border arguments to FixPropertyAtom add_custom functions 2023-12-15 11:54:15 +10:00
61ca9b79db add custom_border to Atom and AtomKokkos 2023-12-15 11:48:46 +10:00
5358a1b3b1 Merge remote-tracking branch 'github/develop' into collected-small-fixes 2023-12-14 20:16:11 -05:00
df7f3b8dea Merge pull request #3938 from rbberger/compute_reaxff_bonds_local
new compute: reaxff/atom
2023-12-14 20:10:52 -05:00
01ab951ff3 Merge pull request #3833 from evoyiatzis/master
Implementation of analytical expressions for Born matrix of some potentials & inclusion of angle contribution to stress/mop/profile
2023-12-14 20:08:12 -05:00
44fbcf7bfe reorder "ghost" processing in fix property/atom 2023-12-15 11:01:50 +10:00
54089fb5ab Revert "add extract function to fix_property_atom"
This reverts commit b199368c19.
2023-12-15 10:58:06 +10:00
1df91f21a1 workaround hack for macOS 2023-12-14 18:07:32 -05:00
172238f4ca workaround hack for macOS 2023-12-14 17:59:18 -05:00
c4626e982f revert bogus change 2023-12-14 17:19:45 -05:00
5f0bdca3f2 add missing override 2023-12-14 17:09:37 -05:00
ff0553e859 fix typos 2023-12-14 16:50:30 -05:00
7dab2b7eee add new package files to .gitignore 2023-12-14 16:21:17 -05:00
603837c96c add versionadded tag 2023-12-14 16:21:04 -05:00
5a9c9981e7 replace include file with forward declaration 2023-12-14 16:18:41 -05:00
a98ea8c3b2 Merge branch 'develop' into compute_reaxff_bonds_local 2023-12-14 16:16:34 -05:00
c45183d45c Updated CMake build system to allow for FFT_KOKKOS parameter. Updated CMakeLists.txt to print the correct value when summarizing. 2023-12-14 15:38:45 -05:00
ae58fe2732 silence compiler warning 2023-12-14 15:30:13 -05:00
4d6e70600e some more small changes for portability and clarity 2023-12-14 15:03:13 -05:00
eb4c85566e fix up port of platform::disk_free() to Windows 2023-12-14 13:06:20 -05:00
45ca21da3b fix typo 2023-12-14 11:21:16 -05:00
54ff3cf78f include new platform call in docs 2023-12-14 11:21:09 -05:00
298ce1863c coding style updates 2023-12-14 11:15:28 -05:00
727c3c9572 move call to determine free disk space to platform namespace 2023-12-14 11:15:11 -05:00
757f28f8bf correct info about fix halt default setting 2023-12-14 10:59:30 -05:00
9c01d64804 avoid accessing uninitialized data 2023-12-13 22:39:14 -05:00
48b5e16f5d remove unused class members, initialize pointers, adjust programming style 2023-12-13 22:39:14 -05:00
61fd4d643b correct logic for "cannot happen" case 2023-12-13 22:39:13 -05:00
00c3f14a63 Merge pull request #3430 from jtclemm/consolidate_neigh_classes
Reducing the number of npair and nstencil classes
2023-12-13 22:37:45 -05:00
b199368c19 add extract function to fix_property_atom 2023-12-14 11:10:33 +10:00
1420cd6879 Merge branch 'develop' of github.com:lammps/lammps into kk_half_thread 2023-12-13 15:42:49 -07:00
6d1d515f3a Fix compile issue 2023-12-13 15:32:32 -07:00
68c53886b8 Revert some name changes 2023-12-13 15:09:02 -07:00
1e0d0e327c Merge pull request #4004 from akohlmey/collected-small-changes
Collected small changes and updates
2023-12-13 16:25:16 -05:00
89c5ee7079 Merge pull request #3996 from lafourcadep/snann_slcsa
Compute sna/atom on fixed number of neighbors and compute slcsa/atom (Supervised Learning Crystal Structure Analysis tool)
2023-12-13 14:36:49 -05:00
37cb1ce30f Merge branch 'develop' of github.com:lammps/lammps into compute_reaxff_bonds_local 2023-12-13 11:14:45 -07:00
0cf4c9e7a3 Whitespace 2023-12-13 11:07:42 -07:00
0c4a1cb21d Merge pull request #4009 from ndtrung81/gpu-updates-Dec23
GPU package updates Dec 2023
2023-12-13 11:59:10 -05:00
754041ee36 minor fix 2023-12-13 11:57:03 -05:00
304e141f24 add missing define to GNU make based build of pace library as well 2023-12-13 11:46:01 -05:00
0b35b98722 add missing define to fix building ML-PACE with conventional build 2023-12-13 11:30:17 -05:00
f53e2c3398 update details about unittests 2023-12-13 00:49:41 -05:00
1cff1deedc add valgrind suppressions for MPICH on Fedora 39 2023-12-13 00:24:49 -05:00
5543912a12 add missing potential file 2023-12-12 23:58:43 -05:00
c2dbd7dc9d plug one more memory leak 2023-12-12 23:56:36 -05:00
569c23a1e6 Fixed typo with the kernel names in lj/cut/coul/cut/soft 2023-12-12 22:54:50 -06:00
29cf012061 re-use existing potential file, fix screen/log output, plug memory leaks 2023-12-12 23:28:09 -05:00
e7c330db9d Merge branch 'develop' into snann_slcsa 2023-12-12 22:30:20 -05:00
26d0671337 update compute slcsa example to better align with LAMMPS conventions and move to more appropriate folder 2023-12-12 22:30:15 -05:00
3a89af4469 silence preprocessor warning from leaking internal define in cython generated code 2023-12-12 21:52:45 -05:00
8f7d7f9178 Fixed typo in the pair style lj/cut/coul/cut/soft/gpu header 2023-12-12 20:15:05 -06:00
6923c04e47 spelling and formatting fixes. small clarifications 2023-12-12 21:01:20 -05:00
710776d4e8 Merge branch 'develop' into collected-small-changes 2023-12-12 20:35:55 -05:00
98feaa00cb Merge pull request #4012 from stanmoore1/kk_fix_temp
Port Fix temp berendsen and rescale to use Kokkos
2023-12-12 20:34:48 -05:00
ecc460b358 Added the new pair styles to Command_pairs.rst and pair_style.rst 2023-12-12 17:17:32 -06:00
9100f486cb Clarify and fix logic in multi, simplify skip 2023-12-12 15:51:02 -07:00
2a152eb078 Merge pull request #4011 from rbberger/python3.12_update
Use PyConfig to initialize Python
2023-12-12 17:27:24 -05:00
8104f68bc1 Merge pull request #3963 from mkstoyanov/heffte_integration
Heffte integration
2023-12-12 17:27:02 -05:00
75c3959cea Merge pull request #4006 from Birfy/develop
Fixing typos in fix_nh_uef.rst
2023-12-12 16:26:16 -05:00
c33d950ac3 Merge pull request #3869 from jmgoff/compute-pace-update
Compute pace update
2023-12-12 16:19:41 -05:00
e80c3d3215 Revert FFT_AT name change 2023-12-12 12:20:24 -07:00
d3eed12071 include documentation integration checks into "make check" in the src folder 2023-12-12 13:43:10 -05:00
7ed8779d28 tweak another epsilon for new GPU pair style 2023-12-11 23:18:08 -05:00
7881eeaa1c silence warnings about unused variables 2023-12-11 23:15:13 -05:00
669782cd5f Saved some exp operations 2023-12-11 21:26:12 -06:00
93f8ada8dc Fixed ecoul issue with the coul/slater/long kernels 2023-12-11 21:21:31 -06:00
1651a7741a relax epsilon for coul/slater long test a little for GPU forces 2023-12-11 18:51:09 -05:00
6e0e1dc44f Fixed atom force issues with the coul/long/slater kernels 2023-12-11 17:10:43 -06:00
354db72a10 update github action script for setting up python 2023-12-11 17:42:06 -05:00
930fbe8c5d reaxff/atom: First attempt of filtering by group 2023-12-11 14:07:48 -07:00
e241f08cfe Finish first version of compute reaxff/atom docs 2023-12-11 14:05:42 -07:00
e147d131fb Fix issue with temp compute 2023-12-11 12:58:15 -07:00
9d51d9c0e9 Update docs 2023-12-11 12:55:06 -07:00
48c85f7718 Port Fix temp berendsen and rescale to use Kokkos 2023-12-11 12:42:45 -07:00
1a3d36fdbf Use PyConfig to initialize Python 2023-12-11 12:39:31 -07:00
15f8488fc4 update developer contact email 2023-12-11 13:43:13 -05:00
af74afdf62 Editing intel files (to be templated) 2023-12-11 09:02:55 -07:00
25bb1633c3 fix typo and be more precise in describing what "Loop" time means 2023-12-11 09:48:07 -05:00
7c40170182 Fixing errors in headers 2023-12-10 21:37:13 -07:00
76bf35fa4d Added -allow-unsupported-compiler to nvcc for both CMake and traditional CUDA builds 2023-12-10 14:42:27 -06:00
37535267da clarify docs about fix phonon dependency on KSPACE 2023-12-10 15:27:50 -05:00
9a625b715a use Langevin thermostat with fix rigid/small instead of fix rigid/nvt/small
also intra-molecular non-bonded interactions are excluded now
2023-12-10 09:50:51 -05:00
bab9fc5533 Consolidating some skip npair classes 2023-12-09 22:00:22 -07:00
e727ec1eac Fixed compiling bugs revealed by CUDA builds, removed unused variables 2023-12-09 16:46:10 -06:00
267e360bac Fixed bugs with acquiring depsh from lib/gpu, updated the doc page 2023-12-09 15:39:54 -06:00
a365cb15b0 Updating class names in Intel 2023-12-09 14:18:20 -07:00
3830711dec Added the GPU version of sph/heatconduction 2023-12-09 15:15:13 -06:00
7679043793 Merge conflicts 2023-12-08 22:45:17 -07:00
010a7a4d44 check for out-of-range or invalid numbers more thoroughly 2023-12-08 21:07:38 -05:00
54a6143e9e Updated the doc pages for sph/lj/gpu and sph/taitwater/gpu 2023-12-08 14:27:00 -06:00
46a670889d Added BaseSPH for sph pair styles, fixed bugs with per-type arrays 2023-12-08 14:09:39 -06:00
0f78afc66f Added atom tag for dpd to work with tag and v 2023-12-08 00:20:53 -06:00
7fad795141 Added pair sph/taitwater/gpu in src/GPU 2023-12-08 00:10:01 -06:00
cad4c25750 Adding sph/taitwater in lib/gpu 2023-12-07 17:22:45 -06:00
6fe16c7606 Added pair style sph/lj/gpu in src/GPU, removed commented codes 2023-12-07 14:33:47 -06:00
e51a8ccfbf Removed the unnecessary line since CUDA_BUILD_MULTIARCH is ON by default 2023-12-07 12:00:24 -06:00
fef28c9daa Updated sph_lj kernels 2023-12-07 11:41:37 -06:00
379d3c8e20 Updated host_esph to extra data and cut to coeff 2023-12-07 11:06:17 -06:00
26c7358a84 Working on sph_lj kernels 2023-12-07 10:24:25 -06:00
1849df15e0 Removed unused member functions in edpd 2023-12-07 10:16:40 -06:00
0940793537 Updated the coul_soft and coul_long_soft kernels with forces as acctyp3 2023-12-07 09:23:49 -06:00
52f576fd1c update fix adapt/fep from fix adapt. only supports 2-d parameters for pair styles 2023-12-06 13:54:44 -05:00
884af7e88c update list of supported pair styles and parameters 2023-12-06 13:53:45 -05:00
51eebf311f Added fft settings to Install.sh, fixed typo in HIPFFT_C2C and HIPFFT_Z2Z 2023-12-06 12:40:11 -05:00
48ef968dd2 Decoupled all variable typenames from the non-kokkos FFT 2023-12-06 12:01:06 -05:00
0e98e706c6 Added LMPFFT settings for Kokkos-specific FFTs 2023-12-06 11:49:54 -05:00
fc897512a0 Initial conversion of all FFT_ settings in the KOKKOS subdirectory to FFT_KOKKOS_ 2023-12-06 11:13:34 -05:00
e05751f487 Update fix_nh_uef.rst
Fixing typo
2023-12-06 08:14:12 -05:00
9edf553332 flag development branch 2023-12-06 07:22:23 -05:00
9c103ff6e2 fix some accumulated formatting and spelling issues in the manual 2023-12-06 02:59:47 -05:00
b94642ccf8 Merge branch 'develop' into collected-small-changes 2023-12-06 02:51:51 -05:00
30051ec260 Merge pull request #3858 from jtclemm/new-computes
Adding tools to identify rattlers and measure nonaffine displacement
2023-12-06 02:51:21 -05:00
c092de9bc3 Merge pull request #3985 from yury-lysogorskiy/feature/zbl
ACE/ZBL core repulsion (+Kokkos implementation)
2023-12-06 01:22:06 -05:00
131f3cee20 fix typo 2023-12-05 22:09:06 -05:00
c90999a083 cosmetic 2023-12-05 21:56:29 -05:00
3e3454e3e1 Merge pull request #4005 from jibril-b-coulibaly/small_changes
Add doc to partially or undocumented features
2023-12-05 16:59:44 -05:00
21027d660d Clarify exception handling some more. 2023-12-05 16:35:07 -05:00
e53b3c76f5 Updated doc pages for the added pair styles, added a cmake preset for gpu-cuda, added "comm_modify vel yes" to in.mdpd 2023-12-05 15:32:57 -06:00
fe96d9f836 Added the GPU version of pair edpd and mdpd 2023-12-05 13:34:37 -06:00
086cf49a8c Added the GPU version of coul/slater/long 2023-12-05 13:32:33 -06:00
9588ddabf6 Added the GPU versions of lj/cut/coul/cut/soft and lj/cut/coul/long/soft 2023-12-05 13:30:26 -06:00
17ffd5c228 remove misplaced file 2023-12-05 06:16:48 -05:00
e5ae46a01a update compute pace example to follow usual conventions 2023-12-05 06:15:40 -05:00
73f1bac827 remove commented out code. print warnings only on mpi rank 0 2023-12-05 06:09:34 -05:00
7d8de8301f Merge branch 'develop' into compute-pace-update 2023-12-05 06:05:34 -05:00
a5894d8ab3 clarify 2023-12-05 03:18:56 -05:00
250307f7c6 add description for undocumented Body entries in molecule command 2023-12-04 21:29:37 -07:00
69fb814b33 Remove duplicated code, small whitespace tweaks 2023-12-04 17:31:38 -07:00
1f7d262bd7 add mol keyword to fix rigid doc 2023-12-04 16:01:39 -07:00
e0862c6618 must do region check only when region is active 2023-12-03 11:22:03 -05:00
2a245f780a initialize class members 2023-12-03 04:45:53 -05:00
47edf5effa use memory class for memory allocation consistently 2023-12-03 04:33:00 -05:00
c0cab665e4 complete printf format 2023-12-03 04:18:44 -05:00
21701a5eac correct dpi to get proper image scaling in PDF output 2023-12-02 16:34:32 -05:00
8389e2eb80 Merge pull request #4000 from akohlmey/collected-small-changes
Collected small changes
2023-12-02 12:15:36 -05:00
d77ba37128 Merge pull request #3962 from ndtrung81/amoeba-pppm-accuracy
AMOEBA/HIPPO RMS force accuracy estimate
2023-12-02 10:39:54 -05:00
7f3af781fa remove superflous class member. 2023-12-02 09:37:36 -05:00
318556497f refactor balance and fix balance to std::string to avoid buffer overflows 2023-12-02 09:32:53 -05:00
2970d73d22 cosmetic 2023-12-02 08:53:20 -05:00
cace83e30d improve error handling to make coverity scan happy 2023-12-02 08:53:05 -05:00
4035291a48 Merge branch 'develop' into collected-small-changes 2023-12-02 08:17:11 -05:00
f0d8a70757 Merge pull request #4002 from akohlmey/moltemplate-howto
Add moltemplate tutorial to HowTo section
2023-12-02 07:58:09 -05:00
95c2ad5150 Merge pull request #3998 from Bibobu/replicate_labelmap
Adding copy of label maps while using replicate command
2023-12-02 06:06:54 -05:00
a3d44e0048 make map types to merge explicit 2023-12-02 05:13:44 -05:00
1b282ad3fd Merge pull request #4001 from akohlmey/remove-reaxc
Remove "reax/c" alias for sources and examples and require to use "reaxff"
2023-12-02 02:32:12 -05:00
41a5fbc025 ensure must_check is initialized 2023-12-01 20:14:22 -05:00
ef2a420aeb modernize 2023-12-01 17:16:25 -05:00
782ca9e0ff Thread over neighbors in addition to atoms when using a half neighbor list 2023-12-01 14:46:30 -07:00
e41d9cb746 added explanations about the stock backend to the cmake 2023-12-01 15:21:23 -05:00
3c331321b3 update the naming convention 2023-12-01 15:12:23 -05:00
bc7d0f5d50 renamed cmake option 2023-12-01 15:12:23 -05:00
d0ae489dda addressed some pr comments 2023-12-01 15:12:23 -05:00
f75648030f document traditional make 2023-12-01 15:12:23 -05:00
a6e629f4e4 update variable names 2023-12-01 15:12:23 -05:00
77ad067458 added documentation 2023-12-01 15:12:23 -05:00
03b6b2d030 enable automatically downlowding of heffte 2023-12-01 15:12:23 -05:00
5bbdfe5b4f enabled the use of heffte for the cpu backend 2023-12-01 15:12:23 -05:00
303f365435 Added reference to the related enum in the Atom class. 2023-12-01 17:12:15 +01:00
1f86706710 make more cases specifying cutoff Rc/r_c consistent 2023-12-01 05:49:20 -05:00
0d3f111627 use r_c consistently 2023-12-01 05:43:42 -05:00
42ac8a9e9b use r_c consistently 2023-12-01 05:36:25 -05:00
e3574e84ec correct spelling of r_c 2023-12-01 04:31:06 -05:00
14d08f0284 recreate compute xrd mesh image with reasonable dpi setting and used PNG format 2023-12-01 00:37:42 -05:00
97a0885145 Merge pull request #3997 from ConnorSA/mlquip
adding the scale feature of quip calculator, allows fix adapt functio…
2023-11-30 17:10:25 -05:00
28e22862c8 reformat 2023-11-30 16:57:43 -05:00
9aaa38d912 mention tutorial files location 2023-11-30 16:48:19 -05:00
f6b644388c add moltemplate tutorial to HowTo section 2023-11-30 16:41:19 -05:00
6c992ee511 rearrange and rewformulate content of the tip4p pair style docs to make it more obvious 2023-11-30 14:53:24 -05:00
605dc08e73 whitespace 2023-11-30 11:35:44 -07:00
049fd06bdf handle thermo_modify energy yes correctly 2023-11-30 10:31:30 -05:00
00be75e084 update example inputs and logs for change in ReaxFF required name 2023-11-30 10:31:08 -05:00
6ff87f5c39 remove reax/c aliases and related code checking for them 2023-11-30 05:41:05 -05:00
a377f2a271 document removal of "reax/c" aliases for ReaxFF pair styles and fixes 2023-11-30 05:39:50 -05:00
368ea39816 fully integrate additions into distribution 2023-11-29 02:12:23 -05:00
fe418bbe77 spelling 2023-11-29 02:11:54 -05:00
918cddfb90 reformat to conform to LAMMPS writing style 2023-11-29 02:11:44 -05:00
d39cd265ae make citations consistent 2023-11-29 02:11:18 -05:00
a38fade483 whitespace fixes 2023-11-29 01:35:49 -05:00
28a89100e8 Merge branch 'develop' into snann_slcsa 2023-11-29 01:34:17 -05:00
f36f846e19 Merge branch 'develop' into mlquip 2023-11-28 09:23:53 -05:00
f83a3dd989 whitespace one more time 2023-11-28 09:23:31 -05:00
7631f2baa2 follow LAMMPS programming style more closely 2023-11-28 09:22:31 -05:00
34e373d114 removed tabs and unsused itype variable 2023-11-28 13:33:03 +00:00
8c34f7f7b8 switched 2D array out for scalar, and updated documentation 2023-11-28 11:37:59 +00:00
d57979eede Merge branch 'develop' of github.com:lammps/lammps into replicate_labelmap 2023-11-28 12:09:57 +01:00
dcb4127631 Added label map copy to replicate.cpp 2023-11-28 12:05:51 +01:00
2825aeff48 apply changes suggested by coverity scan 2023-11-28 05:26:45 -05:00
87c9891c07 Merge remote-tracking branch 'public-lammps/develop' into feature/zbl 2023-11-28 09:13:37 +01:00
4fd63612f8 correct misformatted tables 2023-11-27 23:21:13 -05:00
92220140ab indicate if Intel package SIMD directives are enabled 2023-11-27 22:20:50 -05:00
664ffbedac fixed a missed scale of vdw via quip_energy 2023-11-28 03:16:37 +00:00
bbef545675 Merge pull request #3988 from akohlmey/collected-small-changes
Collected small changes and fixes
2023-11-27 21:41:03 -05:00
631dcc36de BUGFIX: TagPairPACEComputeNeigh - explicitly check if atom has neighbours (ncount>0), only them run parallel_reduce, otherwise set d_d_min and d_jj_min to default values 2023-11-27 23:51:51 +01:00
99f0a7aa8e upd version string in ML-PACE package 2023-11-27 22:38:35 +01:00
d76230c490 Merge pull request #3993 from alphataubio/patch-1
Update atom_map_kokkos.cpp to fix overflow warning
2023-11-27 15:09:39 -05:00
b03bee49b3 Small tweak to fix warning 2023-11-27 11:48:42 -07:00
7249aea5e5 error out when no per-type masses are set. warn if both per-type and per-atom masses are used. 2023-11-27 07:47:08 -05:00
7dbd649683 fix cut-n-paste bug 2023-11-27 05:31:30 -05:00
9e1f85518c avoid segfault with immediate variables 2023-11-27 05:31:12 -05:00
a1d2256e60 Added example for use of compute sna/atom on a fixed number of neighbors + use of compute slcsa/atom for crystal structure classification on a case of HCP to BCC phase transition in Zr 2023-11-27 09:22:03 +01:00
1d25862146 update documentation for the fact that exceptions in LAMMPS are always used 2023-11-26 13:11:18 -05:00
b90d63a192 add versionaddded tag for new feature 2023-11-26 11:00:02 -05:00
088c5d72a8 correct fix mvv/* compatibility checks in DPD-MESO package 2023-11-26 10:31:24 -05:00
7ac5f590ee Merge branch 'develop' into collected-small-changes 2023-11-25 22:36:39 -05:00
d4fe21f34d update pair_pace.rst documentation page 2023-11-25 23:37:01 +01:00
c0631c9bd2 add per-atom array corerep_factor to all four pair styles: pace, pace/extrapolation, pace/kk, pace/extrapolation/kk
upd PACELIB_URL to v.2023.11.25 (+md5sum) in ML-PACE.cmake and Install.py
2023-11-25 23:04:18 +01:00
b7376e3459 Merge pull request #3990 from lammps/variable-custom-atom-properties
Enable direct custom atom property references in variable formulas
2023-11-25 10:03:17 -05:00
e3ba19c145 Merge branch 'develop' into variable-custom-atom-properties 2023-11-25 06:42:38 -05:00
e4149035fa restore using nvcc_wrapper with kokkos-cude.cmake preset 2023-11-25 05:58:43 -05:00
e15aef290d Update atom_map_kokkos.cpp to fix overflow warning
fix overflow compile warning while building KOKKOS package with -D LAMMPS_SIZES=bigbig:

/home/XXXX/lammps-2Aug2023/src/KOKKOS/atom_map_kokkos.cpp: In lambda function:
/home/XXXX/lammps-2Aug2023/src/KOKKOS/atom_map_kokkos.cpp:218:21: warning: overflow in conversion from ‘long int’ to ‘int’ changes value from ‘9223372036854775807’ to ‘-1’ [-Woverflow]
  218 |     int i_closest = MAXTAGINT;
      |                     ^~~~~~~~~
2023-11-25 03:06:10 -05:00
b4c09a3d65 Merge branch 'develop' into collected-small-changes 2023-11-25 02:57:03 -05:00
4380806a30 Merge pull request #3987 from lammps/variable-ternary-function
Add a ternary math function to equal- and vector- and atom-style variables
2023-11-25 02:56:27 -05:00
10f207b986 Merge pull request #3992 from akohlmey/linalg-lapack-3.12
Update internal linear algebra library to LAPACK 3.12
2023-11-24 19:16:02 -05:00
239407c4eb Merge pull request #3983 from stanmoore1/kk_update_4.2
Update Kokkos library bundled in LAMMPS to v4.2
2023-11-24 18:51:39 -05:00
2a1af662d4 update to LAPACK 3.12 2023-11-24 15:29:14 -05:00
ea7f0deb42 some compilers require a code block to follow OpenMP pragmas, even if empty. 2023-11-24 14:46:49 -05:00
ab31a532e2 Possibility to compute bispectrum on a fixed target number of neighbors using compute_sna_atom for crystal structure classification purpose. Add of a compute_slcsa_atom compute style that takes the newly computed bispectrum as an input and performs dimension reduction + logistic regression classification. Documentation has been modified/added and code cleaned. 2023-11-24 19:09:30 +01:00
351fc63f27 use const reference instead of copy 2023-11-24 01:20:10 -05:00
cea1528765 update list of packages included in coverity runs 2023-11-24 01:08:34 -05:00
1f6f612bb6 remove redundant code and fix memory leaks 2023-11-24 01:02:00 -05:00
09acf1b409 add versionadded tag 2023-11-23 19:56:51 -05:00
a76b02dd57 correct broken link 2023-11-23 19:53:12 -05:00
0f5d24cd1a fix table format 2023-11-23 16:21:41 -05:00
dc32efe9be whitespace 2023-11-23 16:19:43 -05:00
35103df86b make compatible with Kokkos 3.7 2023-11-23 14:25:30 -05:00
4cf8045f81 add check and document that "scale yes" is not supported for scaling atomic parameters with fix adapt/fep 2023-11-23 12:37:49 -05:00
961cbfbe10 add custom atom property refs to variable syntax 2023-11-22 22:40:58 -07:00
9c19495392 detect newer OpenMP standard versions 2023-11-23 00:37:26 -05:00
742a772767 report Kokkos library version and OpenMP standard version 2023-11-23 00:24:34 -05:00
85ac2dc5fd correct formatting of table 2023-11-22 19:52:44 -05:00
64573b7b32 add unit tests for new variable function 2023-11-22 19:47:51 -05:00
0db826ae77 whitespace 2023-11-22 19:39:29 -05:00
0dd19b2cbf doc page update 2023-11-22 15:25:19 -07:00
eb6c101d94 add ternary math function 2023-11-22 09:49:11 -07:00
bf498022cc use inum instead of list->inum 2023-11-22 14:44:49 +01:00
2e421b2eac fix ML_PACE.cmake 2023-11-22 10:36:39 +01:00
77549414ae - implementation of ZBL-core repulsion with smooth transition from ACE to ZBL + Kokkos implementation
- automatic BBasis(.yaml) to CTildeBasis(.yace) conversion for pair_pace
2023-11-22 10:19:18 +01:00
83f91d4ac7 Update docs 2023-11-21 18:50:13 -07:00
6b822c1d0e Update CMake 2023-11-21 15:13:56 -07:00
3306b95589 Update Kokkos library in LAMMPS to v4.2 2023-11-21 15:02:12 -07:00
b72c34d497 compute reaxff/atom: return tag[i] instead of i 2023-11-21 14:20:17 -07:00
a5cc181358 Start with compute reaxff/atom documentation 2023-11-21 14:03:10 -07:00
fd83ed4004 compute reaxff/atom: add support for pair hybrid 2023-11-21 13:42:51 -07:00
16f0806da0 Rename compute to reaxff/atom 2023-11-21 11:19:47 -07:00
f25075db6c adding the scale feature of quip calculator, allows fix adapt functionallity 2023-11-21 13:57:34 +00:00
afd0107f01 Add new files to makefile build system 2023-11-20 11:14:05 -07:00
9bffeb9512 Next iteration 2023-11-20 11:14:05 -07:00
717e7b0649 Address comments 2023-11-20 11:14:05 -07:00
ca143e6ba8 undo minor change 2023-11-20 11:14:05 -07:00
a72a3ed50d Kokkos version of compute reaxff/bonds 2023-11-20 11:14:05 -07:00
fea5f5a243 First serial version of Steve's suggestion 2023-11-20 11:14:05 -07:00
bbc2794df2 add reaxff/bonds/local/kk 2023-11-20 11:14:05 -07:00
5830dec742 new compute: reaxff/bonds/local 2023-11-20 11:14:05 -07:00
f512a37173 add versionadded tag 2023-11-15 10:45:37 -05:00
e39a52879c update .gitignore 2023-11-15 10:44:05 -05:00
4760c02182 Merge branch 'develop' into compute-pace-update 2023-11-15 10:29:19 -05:00
ae3c332667 Tested a coarser PME mesh with a lower accuracy (2e-4) 2023-11-10 16:16:49 -06:00
64fa32cf1e Removed commented lines 2023-11-09 10:13:23 -06:00
745f2e6c54 Changing logic for self-bin check, newton+ortho 2023-11-01 12:22:30 -06:00
9807316e7c Cleaned up and added comments 2023-10-31 11:15:24 -05:00
288629bd13 Added an RMS accuracy estimate for AMOEBA/HIPPO 2023-10-31 11:03:37 -05:00
8f14cdcb34 Cleaning up ghost stencils 2023-10-24 13:55:43 -06:00
0f94e6030f Adding separate ghost stencil for intel 2023-10-24 12:26:37 -06:00
8054d2807a Adding full atomonly bin npair style 2023-10-23 16:54:56 -06:00
51577eff2c Merging atomonly npair styles, minor fixes 2023-10-23 16:14:56 -06:00
3536cf9db9 Adding triclinic patch to intel stencil 2023-10-23 12:59:13 -06:00
14f0045567 Fixing missing variable in multi 2023-10-23 10:27:18 -06:00
9ba20864ca Merge conflicts + intel 2023-10-22 22:34:33 -06:00
1571c96480 Adding triclinic patch (except for intel) 2023-10-22 21:52:43 -06:00
5ed10f9127 doc fix 2023-10-19 18:19:55 -06:00
83186a50b0 Update compute_pace.rst
typo fix
2023-10-19 16:37:45 -06:00
decb47cc15 Merge branch 'compute-pace-update' of github.com:jmgoff/lammps_compute_PACE into compute-pace-update 2023-10-19 12:25:21 -06:00
ac59f47ea0 Merge remote-tracking branch 'upstream/develop' into compute-pace-update 2023-10-19 12:22:10 -06:00
e0ef4f15ee Merge branch 'lammps:develop' into compute-pace-update 2023-10-19 12:18:32 -06:00
2ac32872e2 compute pace docs 2023-10-19 12:18:07 -06:00
fc12f86ea9 Update compute_pace.h
Header style fix
2023-10-11 16:47:35 -06:00
aff10deeb7 Merge branch 'lammps:develop' into compute-pace-update 2023-10-11 14:19:49 -06:00
f5f8df55b8 Merge branch 'lammps:develop' into compute-pace-update 2023-10-04 10:16:17 -06:00
d84ee0c4f1 Update compute_stress_mop_profile.cpp 2023-09-28 17:48:17 +03:00
dc84ab5e5f Update compute_stress_mop.rst 2023-09-28 17:06:11 +03:00
bbd6b2846f implementation of compute_dihedral() in compute_stress_mop.cpp 2023-09-28 16:59:03 +03:00
d062541177 remove whitespace from compute_stress_mop.cpp 2023-09-28 16:29:15 +03:00
ca449f1ea8 Prepare for inclusion of dihedral contribution in compute_stress_mop.cpp 2023-09-28 16:25:52 +03:00
ac435319fd Definition of compute_dihedral and related variables in compute_stress_mop.h 2023-09-28 16:15:03 +03:00
3445330cf1 remove whitespace from compute_stress_mop.cpp 2023-09-28 16:13:13 +03:00
1591b21617 remove whitespaces from compute_stress_mop_profile.cpp 2023-09-26 16:53:16 +03:00
b86d1f6553 Update compute_stress_mop.rst for dihedral interactions 2023-09-26 16:48:45 +03:00
d40fb4a337 method implementation for dihedral contribution to compute_stress_mop_profile.cpp 2023-09-26 16:45:46 +03:00
ec458e2861 method and member variables definition for dihedrals in compute_stress_mop_profile.h 2023-09-26 16:32:26 +03:00
381d8de017 initialization of angleflag in constructor compute_stress_mop_profile.cpp 2023-09-26 16:22:09 +03:00
e819b38a18 undo dihedral changes in compute_stress_mop_profile.h 2023-09-26 16:15:12 +03:00
b81df7c21b Include methods and variables for dihedral contribution to compute_stress_mop_profile.h 2023-09-26 16:12:09 +03:00
c22d6a9e4e update to doc pages 2023-09-21 22:13:16 +02:00
c5deb581c2 Updates to address PR comments 2023-09-21 22:12:58 +02:00
db4f55b76f compatibility with new lammps-user-pace library and cleanup 2023-09-19 17:24:15 -06:00
f9cc60cfd5 Merge branch 'lammps:develop' into compute-pace-update 2023-09-19 11:14:14 -06:00
6e539da050 Merge branch 'lammps:develop' into compute-pace-update 2023-09-12 13:01:10 -06:00
7a1466671b Merge branch 'develop' into BPM 2023-08-31 10:28:47 -06:00
a206072520 Merge branch 'develop' into master 2023-08-29 19:04:58 +03:00
1039f86037 remove unnecessary restriction
do not check for comm cutoff when initiator atoms are directly bonded
2023-08-26 14:29:07 -04:00
999c364b83 better way to list rxn counts 2023-08-25 21:44:42 -04:00
cd5ebb86c8 inserting atoms: correct logic for per-atom mass 2023-08-25 21:37:57 -04:00
1b86d647de cleaned up headers and used PIMPL namespace instead, fixed whitespace, fixed homepage 2023-08-24 17:08:31 -06:00
d54fb3eb47 Merge branch 'lammps:develop' into compute-pace-update 2023-08-24 16:47:28 -06:00
2c897df841 Merge branch 'develop' into new-computes 2023-08-24 09:38:05 -04:00
9ab79c745b no executable permissions on source code 2023-08-18 07:03:02 -04:00
f5361b49be Merge branch 'develop' into new-computes 2023-08-18 06:58:14 -04:00
9702a7a9d4 don't need to list utils.h as include as it is always included for styles 2023-08-18 06:58:06 -04:00
67f42fa84f add version tags, sort out spelling issues 2023-08-18 06:58:00 -04:00
bb2c286f27 fix whitespace 2023-08-18 06:46:10 -04:00
e3792616ad Moving line break in BPM doc pages for link, fixing prop/atom syntax 2023-08-01 12:54:23 -06:00
0a5aa5b1d2 Merge branch 'lammps:develop' into compute-pace-update 2023-07-24 10:05:05 -06:00
3c2ba879ef Merge branch 'lammps:develop' into compute-pace-update 2023-07-20 08:55:35 -06:00
e9223fc5af Fixing LAMMPS headers 2023-07-17 14:34:46 -06:00
2d897ac8f3 Fixing doc build errors 2023-07-17 14:22:22 -06:00
1ffb2289be explicitly zeroing arrays 2023-07-17 11:59:50 -06:00
f4000efd8a Adding reference section to doc pages, update misc error messages 2023-07-17 11:52:06 -06:00
a80739c537 Doc and gitignore updates 2023-07-15 22:12:10 -06:00
7fa1f4b3b4 Various clean ups, moving files 2023-07-15 22:10:19 -06:00
63be267a94 Merge branch 'lammps:develop' into compute-pace-update 2023-07-13 08:38:20 -06:00
7b40576b2b Merge branch 'lammps:develop' into compute-pace-update 2023-07-12 18:12:31 -06:00
9fde61fc4e Update compute_stress_mop_profile.cpp 2023-07-05 16:59:02 +03:00
78f4e4f1a1 Update compute_stress_mop.rst 2023-07-05 16:51:41 +03:00
9aa9bdd3ba Implementation of compute_angles in compute_stress_mop_profile.cpp and related adjustments to flags/memory allocations 2023-07-05 16:45:53 +03:00
79ed2d9e8b Definition of compute_angle and related variables in compute_stress_mop_profile.h 2023-07-05 16:35:25 +03:00
94fa2f51c9 compute kinetic contribution without assuming orthogonal geometry 2023-07-05 13:38:56 +03:00
005c15c07b compute kinetic contribution without assuming orthogonal geometry 2023-07-05 13:26:47 +03:00
484e7ad0e3 clean up of originflag from compute_stress_mop_profile.h 2023-06-29 08:54:30 +03:00
6e32d29322 clean up of originflag variable in compute_stress_mop_profile.cpp 2023-06-29 08:53:50 +03:00
8e1711c803 Implement born_matrix in dihedral_quadratic.cpp 2023-06-22 17:00:10 +03:00
ae96c9bd47 Define born_matrix() in dihedral_quadratic.h 2023-06-22 16:58:00 +03:00
7ab9da0212 Implementation of born_matrix in dihedral_helix.cpp 2023-06-21 10:59:13 +03:00
fb31ffe17c Definition of born_matrix() in dihedral_helix.h 2023-06-21 10:56:53 +03:00
7f3a930d89 Implement born_matrix() in angle_cosine_periodic.cpp 2023-06-20 16:21:57 +03:00
345a834c7e Include definition of born_matrix() in angle_cosine_periodic.h 2023-06-20 16:20:57 +03:00
bb2d691e78 implement born_matrix in angle_mm3.cpp 2023-06-20 15:42:47 +03:00
2631a159af define born_matrix in angle_mm3.h 2023-06-20 15:41:09 +03:00
24fbff2c03 Merge branch 'lammps:develop' into master 2023-06-20 11:50:30 +03:00
dc1eb43cf2 Cleaning coord and coordp vectors in compute_stress_mop_profile.cpp 2023-06-19 19:47:34 +03:00
ad3752431f Regular pointer for coord and coordp in compute_stress_mop_profile.h 2023-06-19 19:42:01 +03:00
f6b259b186 Implementing born_matrix in bond_harmonic_shift_cut.cpp 2023-06-19 19:40:11 +03:00
6c9d42b7c3 Include born_matrix() definition in bond_harmonic_shift_cut.h 2023-06-19 19:38:50 +03:00
bfc969d5c5 implementation of born_matrix in bond_mm3.cpp 2023-06-19 16:39:49 +03:00
2f22761461 born_matrix() method in bond_mm3.h 2023-06-19 16:38:34 +03:00
365f4bc559 non-zero born_matrix_enable flag in angle_fourier.cpp 2023-06-18 18:44:28 +03:00
eb8512ba2a implementation of born_matrix() for angle_quartic.cpp 2023-06-18 18:26:48 +03:00
4e17cc551e inlcude born_matrix() definition in in angle_quartic.h 2023-06-18 18:25:35 +03:00
42c843ff4f remove iostream from bond_gaussian.cpp 2023-06-18 18:24:24 +03:00
c7ac1c1d5a Merge branch 'lammps:develop' into master 2023-06-18 18:22:24 +03:00
2a432bdaf1 Clarifying output as sqrt 2023-06-16 16:32:15 -06:00
ca636ffa7d Adding d2min doc 2023-06-16 16:28:48 -06:00
a1513a7d3b rattler documentation 2023-06-15 23:06:50 -06:00
7012e6ddd4 Debugging and cleaning up D2min calculation 2023-06-15 19:06:14 -06:00
2fbaeb4fc7 Fixing merge conflict 2023-06-15 16:03:30 -06:00
2905016f9a Updating to develop 2023-06-15 16:00:48 -06:00
25f5e74e9a updating args and D2min calculation in nonaffine fix 2023-06-15 15:51:59 -06:00
a05fcc326e Implement born_matrix() in bond_gaussian.cpp 2023-06-12 12:47:21 +03:00
85765a2bf3 Include born_matrix() definition in bond_gaussian.h 2023-06-12 12:45:52 +03:00
74cf149aef Merge branch 'lammps:develop' into main 2023-04-24 09:00:00 -06:00
b456beb62f Reorganizing intel npair to work with cmake, adding intel stencil 2023-03-28 13:55:12 -06:00
781eb934c1 Adding mass to python numpy unittest of KE 2023-03-27 16:37:11 -06:00
c319231395 Merge branch 'develop' into consolidate_neigh_classes 2023-03-27 10:33:04 -06:00
cc7c4bed76 Merge branch 'develop' into consolidate_neigh_classes 2023-03-16 20:30:38 -06:00
c4676aabfd Adding missing variables from omp npair halffull 2022-11-23 09:58:46 -07:00
58f9553bf1 Copying fixes to omp 2022-11-23 08:52:21 -07:00
8f81cd80b6 Fixing a few errors in npair/stencil classes 2022-11-22 21:31:31 -07:00
f3d5941301 Updating logic for multi 2022-11-14 20:48:02 -07:00
b3e6a0bfa3 Fixing mistake in multi stencil 2022-11-12 20:44:45 -07:00
b0dcaa3823 Updating OPENMP package 2022-11-12 16:18:11 -07:00
213df2e2d5 Merge branch 'develop' into consolidate_neigh_classes 2022-11-11 20:41:19 -07:00
11f3195b0c Fixing more oversights in npair classes 2022-11-11 20:35:52 -07:00
c5181bb7c8 Fixing various oversights in npair classes 2022-11-11 16:56:21 -07:00
48a957f333 Remove screen print 2022-11-03 09:04:50 -06:00
02370fa25e Include headers in ace-evaluator directory 2022-11-02 14:51:00 -06:00
301877c6db Merge branch 'compute-pace' of https://github.com/jmgoff/lammps_compute_PACE into compute-pace 2022-11-02 14:11:15 -06:00
f8b29e09cd Merge branch 'lammps:develop' into compute-pace 2022-11-02 14:10:53 -06:00
6544fbd248 Fixing compilation mistake, updating dev reference 2022-10-30 21:04:31 -06:00
33c84963e9 Merging with develop 2022-10-30 12:45:33 -06:00
fcc47158b3 Adding other npair classes 2022-10-29 20:35:04 -06:00
9cff8b4ae6 Merge branch 'compute-pace' of github.com:jmgoff/lammps_compute_PACE into compute-pace
Updated with new PRs from Yuri
2022-10-28 14:18:42 -06:00
5c6dedae52 fixed bug for bikflag 1 dgradflag 0 2022-10-28 14:17:24 -06:00
e74b6769a9 No need to populate map in constructor 2022-10-28 14:17:24 -06:00
9130f0a327 Working multi-element example 2022-10-28 14:17:24 -06:00
0159810cc8 add examples 2022-10-28 14:17:24 -06:00
3a57f5185d add examples 2022-10-28 14:17:24 -06:00
40b76b24a0 Merge branch 'develop' of https://github.com/lammps/lammps into develop 2022-10-28 14:16:42 -06:00
e8cd992891 fixed bug for bikflag 1 dgradflag 0 2022-10-18 17:29:56 -06:00
614fb3cbdd Adding other nstencil classes 2022-10-16 21:02:02 -06:00
079ab1946f No need to populate map in constructor 2022-10-06 10:38:43 -06:00
a7d16f486f Working multi-element example 2022-10-06 10:38:43 -06:00
bc6a419dd4 add examples 2022-10-06 10:38:43 -06:00
ca98afea7a add examples 2022-10-06 10:38:43 -06:00
39f0051de6 Merge branch 'develop' of github.com:lammps/lammps into develop
Update the ML-PACE code to include recent updates from lammps-user-pace
including gamma pair fix.
2022-10-06 10:36:29 -06:00
80da41efc9 No need to populate map in constructor 2022-09-29 10:53:28 -06:00
85da521642 Working multi-element example 2022-09-29 10:07:22 -06:00
b4eab5e9b0 add examples 2022-09-28 13:08:56 -06:00
43698824f1 add examples 2022-09-28 13:07:50 -06:00
a03a6a9692 compute pace for ACE descriptor calculations 2022-09-28 10:12:00 -06:00
25b89473b2 changing order of central bin 2022-09-03 16:46:55 -06:00
fb2cf0c32a Prototyping new nstencil/npair classes 2022-08-04 14:05:18 -06:00
2055 changed files with 95059 additions and 49437 deletions

View File

@ -30,12 +30,12 @@ jobs:
fetch-depth: 2
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
config-file: ./.github/codeql/${{ matrix.language }}.yml
@ -55,4 +55,4 @@ jobs:
cmake --build . --parallel 2
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3

View File

@ -24,7 +24,7 @@ jobs:
fetch-depth: 2
- name: Select Python version
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.11'

View File

@ -25,7 +25,7 @@ jobs:
- name: Cache Coverity
id: cache-coverity
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ./download/
key: ${{ runner.os }}-download-${{ hashFiles('**/coverity_tool.*') }}
@ -59,16 +59,13 @@ jobs:
-D BUILD_SHARED_LIBS=on \
-D LAMMPS_SIZES=SMALLBIG \
-D LAMMPS_EXCEPTIONS=off \
-D PKG_MESSAGE=on \
-D PKG_MPIIO=on \
-D PKG_ATC=on \
-D PKG_AWPMD=on \
-D PKG_BOCS=on \
-D PKG_EFF=on \
-D PKG_H5MD=on \
-D PKG_INTEL=on \
-D PKG_LATBOLTZ=on \
-D PKG_MANIFOLD=on \
-D PKG_MDI=on \
-D PKG_MGPT=on \
-D PKG_ML-PACE=on \
-D PKG_ML-RANN=on \
@ -77,7 +74,6 @@ jobs:
-D PKG_PTM=on \
-D PKG_QTB=on \
-D PKG_SMTBQ=on \
-D PKG_TALLY=on \
../cmake
- name: Run Coverity Scan

View File

@ -32,7 +32,7 @@ jobs:
run: mkdir build
- name: Set up ccache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: macos-ccache-${{ github.sha }}

View File

@ -120,6 +120,19 @@ if((CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_CXX_COMPILER_ID STREQUAL "
set(CMAKE_TUNE_DEFAULT "-Minform=severe")
endif()
# this hack is required to compile fmt lib with CrayClang version 15.0.2
# CrayClang is only directly recognized by version 3.28 and later
if(CMAKE_VERSION VERSION_LESS 3.28)
get_filename_component(_exe "${CMAKE_CXX_COMPILER}" NAME)
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (_exe STREQUAL "crayCC"))
set(CMAKE_TUNE_DEFAULT "-DFMT_STATIC_THOUSANDS_SEPARATOR")
endif()
else()
if(CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang")
set(CMAKE_TUNE_DEFAULT "-DFMT_STATIC_THOUSANDS_SEPARATOR")
endif()
endif()
# silence nvcc warnings
if((PKG_KOKKOS) AND (Kokkos_ENABLE_CUDA) AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))
set(CMAKE_TUNE_DEFAULT "${CMAKE_TUNE_DEFAULT} -Xcudafe --diag_suppress=unrecognized_pragma")
@ -415,6 +428,7 @@ if(BUILD_OMP)
(CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM") OR (CMAKE_CXX_COMPILER_ID STREQUAL "XLClang") OR
((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR
((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR
((CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR
((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0)))
# GCC 9.x and later plus Clang 10.x and later implement strict OpenMP 4.0 semantics for consts.
# Intel 18.0 was tested to support both, so we switch to OpenMP 4+ from 19.x onward to be safe.
@ -971,34 +985,37 @@ if(PKG_KOKKOS)
endif()
endif()
if(PKG_KSPACE)
message(STATUS "<<< FFT settings >>>
if (FFT_USE_HEFFTE)
message(STATUS "<<< FFT settings >>>
-- Primary FFT lib: heFFTe")
if (FFT_HEFFTE_BACKEND)
message(STATUS "heFFTe backend: ${FFT_HEFFTE_BACKEND}")
else()
message(STATUS "heFFTe backend: stock (builtin FFT implementation, tested for corrected but not optimized for production)")
endif()
message(STATUS "Using distributed FFT algorithms from heFTTe")
if(FFT_SINGLE)
message(STATUS "Using single precision FFTs")
else()
message(STATUS "Using double precision FFTs")
endif()
else()
message(STATUS "<<< FFT settings >>>
-- Primary FFT lib: ${FFT}")
if(FFT_SINGLE)
message(STATUS "Using single precision FFTs")
else()
message(STATUS "Using double precision FFTs")
endif()
if(FFT_FFTW_THREADS OR FFT_MKL_THREADS)
message(STATUS "Using threaded FFTs")
else()
message(STATUS "Using non-threaded FFTs")
if(FFT_SINGLE)
message(STATUS "Using single precision FFTs")
else()
message(STATUS "Using double precision FFTs")
endif()
if(FFT_FFTW_THREADS OR FFT_MKL_THREADS)
message(STATUS "Using threaded FFTs")
else()
message(STATUS "Using non-threaded FFTs")
endif()
message(STATUS "Using builtin distributed FFT algorithms")
endif()
if(PKG_KOKKOS)
if(Kokkos_ENABLE_CUDA)
if(FFT STREQUAL "KISS")
message(STATUS "Kokkos FFT: KISS")
else()
message(STATUS "Kokkos FFT: cuFFT")
endif()
elseif(Kokkos_ENABLE_HIP)
if(FFT STREQUAL "KISS")
message(STATUS "Kokkos FFT: KISS")
else()
message(STATUS "Kokkos FFT: hipFFT")
endif()
else()
message(STATUS "Kokkos FFT: ${FFT}")
endif()
message(STATUS "Kokkos FFT: ${FFT_KOKKOS}")
endif()
endif()
if(BUILD_DOC)

View File

@ -1,11 +1,3 @@
if(NOT DEFINED HIP_PATH)
if(NOT DEFINED ENV{HIP_PATH})
message(FATAL_ERROR "HIP support requires HIP_PATH to be defined.\n"
"Either pass the HIP_PATH as a CMake option via -DHIP_PATH=... or set the HIP_PATH environment variable.")
else()
set(HIP_PATH $ENV{HIP_PATH} CACHE PATH "Path to HIP installation")
endif()
endif()
if(NOT DEFINED ROCM_PATH)
if(NOT DEFINED ENV{ROCM_PATH})
set(ROCM_PATH "/opt/rocm" CACHE PATH "Path to ROCm installation")
@ -13,4 +5,4 @@ if(NOT DEFINED ROCM_PATH)
set(ROCM_PATH $ENV{ROCM_PATH} CACHE PATH "Path to ROCm installation")
endif()
endif()
list(APPEND CMAKE_PREFIX_PATH ${HIP_PATH} ${ROCM_PATH})
list(APPEND CMAKE_PREFIX_PATH ${ROCM_PATH})

View File

@ -43,5 +43,5 @@ function(ExternalCMakeProject target url hash basedir cmakedir cmakefile)
"${CMAKE_BINARY_DIR}/_deps/${target}-src/${cmakedir}/CMakeLists.txt")
endif()
add_subdirectory("${CMAKE_BINARY_DIR}/_deps/${target}-src/${cmakedir}"
"${CMAKE_BINARY_DIR}/_deps/${target}-build")
"${CMAKE_BINARY_DIR}/_deps/${target}-build" EXCLUDE_FROM_ALL)
endfunction(ExternalCMakeProject)

View File

@ -1,6 +1,6 @@
message(STATUS "Downloading and building OpenCL loader library")
set(OPENCL_LOADER_URL "${LAMMPS_THIRDPARTY_URL}/opencl-loader-2022.01.04.tar.gz" CACHE STRING "URL for OpenCL loader tarball")
set(OPENCL_LOADER_MD5 "8d3a801e87a2c6653bf0e27707063914" CACHE STRING "MD5 checksum of OpenCL loader tarball")
set(OPENCL_LOADER_URL "${LAMMPS_THIRDPARTY_URL}/opencl-loader-2024.02.09.tar.gz" CACHE STRING "URL for OpenCL loader tarball")
set(OPENCL_LOADER_MD5 "f3573cf9daa3558ba46fd5866517f38f" CACHE STRING "MD5 checksum of OpenCL loader tarball")
mark_as_advanced(OPENCL_LOADER_URL)
mark_as_advanced(OPENCL_LOADER_MD5)
@ -8,4 +8,3 @@ set(INSTALL_LIBOPENCL OFF CACHE BOOL "" FORCE)
include(ExternalCMakeProject)
ExternalCMakeProject(opencl_loader ${OPENCL_LOADER_URL} ${OPENCL_LOADER_MD5} opencl-loader . "")
add_library(OpenCL::OpenCL ALIAS OpenCL)

View File

@ -1,3 +1,10 @@
# Silence CMake warnings about FindCUDA being obsolete.
# We may need to eventually rewrite this section to use enable_language(CUDA)
if(POLICY CMP0146)
cmake_policy(SET CMP0146 OLD)
endif()
set(GPU_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/GPU)
set(GPU_SOURCES ${GPU_SOURCES_DIR}/gpu_extra.h
${GPU_SOURCES_DIR}/fix_gpu.h
@ -151,10 +158,10 @@ if(GPU_API STREQUAL "CUDA")
endif()
cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS ${CUDA_REQUEST_PIC}
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES})
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -allow-unsupported-compiler -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES})
cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC}
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES})
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -allow-unsupported-compiler -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES})
foreach(CU_OBJ ${GPU_GEN_OBJS})
get_filename_component(CU_NAME ${CU_OBJ} NAME_WE)

View File

@ -16,11 +16,6 @@ endif()
if(Kokkos_ENABLE_OPENMP)
if(NOT BUILD_OMP)
message(FATAL_ERROR "Must enable BUILD_OMP with Kokkos_ENABLE_OPENMP")
else()
# NVHPC/(AMD)Clang does not seem to provide a detectable OpenMP version, but is far beyond version 3.1
if((OpenMP_CXX_VERSION VERSION_LESS 3.1) AND NOT ((CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")))
message(FATAL_ERROR "Compiler must support OpenMP 3.1 or later with Kokkos_ENABLE_OPENMP")
endif()
endif()
endif()
########################################################################
@ -50,8 +45,8 @@ if(DOWNLOAD_KOKKOS)
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}")
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}")
include(ExternalProject)
set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/4.1.00.tar.gz" CACHE STRING "URL for KOKKOS tarball")
set(KOKKOS_MD5 "a5f096bd8ad01b97fdc7a32583b17a33" CACHE STRING "MD5 checksum of KOKKOS tarball")
set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/4.2.00.tar.gz" CACHE STRING "URL for KOKKOS tarball")
set(KOKKOS_MD5 "731647b61a4233f568d583702e9cd6d1" CACHE STRING "MD5 checksum of KOKKOS tarball")
mark_as_advanced(KOKKOS_URL)
mark_as_advanced(KOKKOS_MD5)
GetFallbackURL(KOKKOS_URL KOKKOS_FALLBACK)
@ -76,7 +71,7 @@ if(DOWNLOAD_KOKKOS)
add_dependencies(LAMMPS::KOKKOSCORE kokkos_build)
add_dependencies(LAMMPS::KOKKOSCONTAINERS kokkos_build)
elseif(EXTERNAL_KOKKOS)
find_package(Kokkos 4.1.00 REQUIRED CONFIG)
find_package(Kokkos 4.2.00 REQUIRED CONFIG)
target_link_libraries(lammps PRIVATE Kokkos::kokkos)
else()
set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos)
@ -131,16 +126,32 @@ if(PKG_KSPACE)
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/fft3d_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/grid3d_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp)
set(FFT_KOKKOS "KISS" CACHE STRING "FFT library for Kokkos-enabled KSPACE package")
set(FFT_KOKKOS_VALUES KISS FFTW3 MKL HIPFFT CUFFT)
set_property(CACHE FFT_KOKKOS PROPERTY STRINGS ${FFT_KOKKOS_VALUES})
validate_option(FFT_KOKKOS FFT_KOKKOS_VALUES)
string(TOUPPER ${FFT_KOKKOS} FFT_KOKKOS)
if(Kokkos_ENABLE_CUDA)
if(NOT (FFT STREQUAL "KISS"))
target_compile_definitions(lammps PRIVATE -DFFT_CUFFT)
if(NOT ((FFT_KOKKOS STREQUAL "KISS") OR (FFT_KOKKOS STREQUAL "CUFFT")))
message(FATAL_ERROR "The CUDA backend of Kokkos requires either KISS FFT or CUFFT.")
elseif(FFT_KOKKOS STREQUAL "KISS")
message(WARNING "Using KISS FFT with the CUDA backend of Kokkos may be sub-optimal.")
target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_KISS)
elseif(FFT_KOKKOS STREQUAL "CUFFT")
target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_CUFFT)
target_link_libraries(lammps PRIVATE cufft)
endif()
elseif(Kokkos_ENABLE_HIP)
if(NOT (FFT STREQUAL "KISS"))
if(NOT ((FFT_KOKKOS STREQUAL "KISS") OR (FFT_KOKKOS STREQUAL "HIPFFT")))
message(FATAL_ERROR "The HIP backend of Kokkos requires either KISS FFT or HIPFFT.")
elseif(FFT_KOKKOS STREQUAL "KISS")
message(WARNING "Using KISS FFT with the HIP backend of Kokkos may be sub-optimal.")
target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_KISS)
elseif(FFT_KOKKOS STREQUAL "HIPFFT")
include(DetectHIPInstallation)
find_package(hipfft REQUIRED)
target_compile_definitions(lammps PRIVATE -DFFT_HIPFFT)
target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_HIPFFT)
target_link_libraries(lammps PRIVATE hip::hipfft)
endif()
endif()

View File

@ -46,6 +46,61 @@ else()
target_compile_definitions(lammps PRIVATE -DFFT_KISS)
endif()
option(FFT_USE_HEFFTE "Use heFFTe as the distributed FFT engine, overrides the FFT option." OFF)
if(FFT_USE_HEFFTE)
# if FFT_HEFFTE is enabled, use the heFFTe parallel engine instead of the builtin fftMPI engine
# map standard FFT choices to available heFFTe backends: FFTW3 -> FFTW, KISS -> BUILTIN
set(FFT_HEFFTE_BACKEND_VALUES FFTW MKL BUILTIN)
string(REPLACE FFTW3 FFTW FFT_HEFFTE_BACKEND_DEFAULT ${FFT})
string(REPLACE KISS BUILTIN FFT_HEFFTE_BACKEND_DEFAULT ${FFT_HEFFTE_BACKEND_DEFAULT})
set(FFT_HEFFTE_BACKEND "${FFT_HEFFTE_BACKEND_DEFAULT}" CACHE STRING "Select heFFTe backend, e.g., FFTW or MKL")
set_property(CACHE FFT_HEFFTE_BACKEND PROPERTY STRINGS ${FFT_HEFFTE_BACKEND_VALUES})
validate_option(FFT_HEFFTE_BACKEND FFT_HEFFTE_BACKEND_VALUES)
if(FFT_HEFFTE_BACKEND STREQUAL "FFTW") # respect the backend choice, FFTW or MKL
set(HEFFTE_COMPONENTS "FFTW")
set(Heffte_ENABLE_FFTW "ON" CACHE BOOL "Enables FFTW backend for heFFTe")
elseif(FFT_HEFFTE_BACKEND STREQUAL "MKL")
set(HEFFTE_COMPONENTS "MKL")
set(Heffte_ENABLE_MKL "ON" CACHE BOOL "Enables MKL backend for heFFTe")
else()
set(HEFFTE_COMPONENTS "BUILTIN")
message(WARNING "FFT_HEFFTE_BACKEND not selected, defaulting to the builtin 'stock' backend, which is intended for testing and is not optimized for production runs")
endif()
find_package(Heffte 2.4.0 QUIET COMPONENTS ${HEFFTE_COMPONENTS})
if (NOT Heffte_FOUND) # download and build
if(BUILD_SHARED_LIBS)
set(BUILD_SHARED_LIBS_WAS_ON YES)
set(BUILD_SHARED_LIBS OFF)
endif()
if(CMAKE_REQUEST_PIC)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
set(Heffte_ENABLE_${FFT_HEFFTE_BACKEND} ON)
include(FetchContent)
FetchContent_Declare(HEFFTE_PROJECT # using v2.4.0
URL "https://github.com/icl-utk-edu/heffte/archive/refs/tags/v2.4.0.tar.gz"
URL_HASH SHA256=02310fb4f9688df02f7181667e61c3adb7e38baf79611d80919d47452ff7881d
)
FetchContent_Populate(HEFFTE_PROJECT)
# fixup git hash to show "(unknown)" to avoid compilation failures.
file(READ ${heffte_project_SOURCE_DIR}/include/heffte_config.cmake.h HEFFTE_CFG_FILE_TEXT)
string(REPLACE "@Heffte_GIT_HASH@" "(unknown)" HEFFTE_CFG_FILE_TEXT "${HEFFTE_CFG_FILE_TEXT}")
file(WRITE ${heffte_project_SOURCE_DIR}/include/heffte_config.cmake.h "${HEFFTE_CFG_FILE_TEXT}")
add_subdirectory(${heffte_project_SOURCE_DIR} ${heffte_project_BINARY_DIR} EXCLUDE_FROM_ALL)
add_library(Heffte::Heffte ALIAS Heffte)
if(BUILD_SHARED_LIBS_WAS_ON)
set(BUILD_SHARED_LIBS ON)
endif()
endif()
target_compile_definitions(lammps PRIVATE -DFFT_HEFFTE "-DFFT_HEFFTE_${FFT_HEFFTE_BACKEND}")
target_link_libraries(lammps PRIVATE Heffte::Heffte)
endif()
set(FFT_PACK "array" CACHE STRING "Optimization for FFT")
set(FFT_PACK_VALUES array pointer memcpy)
set_property(CACHE FFT_PACK PROPERTY STRINGS ${FFT_PACK_VALUES})

View File

@ -8,8 +8,8 @@ option(DOWNLOAD_MDI "Download and compile the MDI library instead of using an al
if(DOWNLOAD_MDI)
message(STATUS "MDI download requested - we will build our own")
set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.16.tar.gz" CACHE STRING "URL for MDI tarball")
set(MDI_MD5 "407db44e2d79447ab5c1233af1965f65" CACHE STRING "MD5 checksum for MDI tarball")
set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.26.tar.gz" CACHE STRING "URL for MDI tarball")
set(MDI_MD5 "3124bb85259471e2a53a891f04bf697a" CACHE STRING "MD5 checksum for MDI tarball")
mark_as_advanced(MDI_URL)
mark_as_advanced(MDI_MD5)
GetFallbackURL(MDI_URL MDI_FALLBACK)

View File

@ -1,33 +1,40 @@
set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2023.10.04.tar.gz" CACHE STRING "URL for PACE evaluator library sources")
set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2023.11.25.fix.tar.gz" CACHE STRING "URL for PACE evaluator library sources")
set(PACELIB_MD5 "70ff79f4e59af175e55d24f3243ad1ff" CACHE STRING "MD5 checksum of PACE evaluator library tarball")
set(PACELIB_MD5 "b45de9a633f42ed65422567e3ce56f9f" CACHE STRING "MD5 checksum of PACE evaluator library tarball")
mark_as_advanced(PACELIB_URL)
mark_as_advanced(PACELIB_MD5)
GetFallbackURL(PACELIB_URL PACELIB_FALLBACK)
# download library sources to build folder
if(EXISTS ${CMAKE_BINARY_DIR}/libpace.tar.gz)
file(MD5 ${CMAKE_BINARY_DIR}/libpace.tar.gz DL_MD5)
endif()
if(NOT "${DL_MD5}" STREQUAL "${PACELIB_MD5}")
message(STATUS "Downloading ${PACELIB_URL}")
file(DOWNLOAD ${PACELIB_URL} ${CMAKE_BINARY_DIR}/libpace.tar.gz STATUS DL_STATUS SHOW_PROGRESS)
file(MD5 ${CMAKE_BINARY_DIR}/libpace.tar.gz DL_MD5)
if((NOT DL_STATUS EQUAL 0) OR (NOT "${DL_MD5}" STREQUAL "${PACELIB_MD5}"))
message(WARNING "Download from primary URL ${PACELIB_URL} failed\nTrying fallback URL ${PACELIB_FALLBACK}")
file(DOWNLOAD ${PACELIB_FALLBACK} ${CMAKE_BINARY_DIR}/libpace.tar.gz EXPECTED_HASH MD5=${PACELIB_MD5} SHOW_PROGRESS)
endif()
# LOCAL_ML-PACE points to top-level dir with local lammps-user-pace repo,
# to make it easier to check local build without going through the public github releases
if(LOCAL_ML-PACE)
set(lib-pace "${LOCAL_ML-PACE}")
else()
message(STATUS "Using already downloaded archive ${CMAKE_BINARY_DIR}/libpace.tar.gz")
endif()
# download library sources to build folder
if(EXISTS ${CMAKE_BINARY_DIR}/libpace.tar.gz)
file(MD5 ${CMAKE_BINARY_DIR}/libpace.tar.gz DL_MD5)
endif()
if(NOT "${DL_MD5}" STREQUAL "${PACELIB_MD5}")
message(STATUS "Downloading ${PACELIB_URL}")
file(DOWNLOAD ${PACELIB_URL} ${CMAKE_BINARY_DIR}/libpace.tar.gz STATUS DL_STATUS SHOW_PROGRESS)
file(MD5 ${CMAKE_BINARY_DIR}/libpace.tar.gz DL_MD5)
if((NOT DL_STATUS EQUAL 0) OR (NOT "${DL_MD5}" STREQUAL "${PACELIB_MD5}"))
message(WARNING "Download from primary URL ${PACELIB_URL} failed\nTrying fallback URL ${PACELIB_FALLBACK}")
file(DOWNLOAD ${PACELIB_FALLBACK} ${CMAKE_BINARY_DIR}/libpace.tar.gz EXPECTED_HASH MD5=${PACELIB_MD5} SHOW_PROGRESS)
endif()
else()
message(STATUS "Using already downloaded archive ${CMAKE_BINARY_DIR}/libpace.tar.gz")
endif()
# uncompress downloaded sources
execute_process(
COMMAND ${CMAKE_COMMAND} -E remove_directory lammps-user-pace*
COMMAND ${CMAKE_COMMAND} -E tar xzf libpace.tar.gz
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
get_newest_file(${CMAKE_BINARY_DIR}/lammps-user-pace-* lib-pace)
# uncompress downloaded sources
execute_process(
COMMAND ${CMAKE_COMMAND} -E remove_directory lammps-user-pace*
COMMAND ${CMAKE_COMMAND} -E tar xzf libpace.tar.gz
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
get_newest_file(${CMAKE_BINARY_DIR}/lammps-user-pace-* lib-pace)
endif()
add_subdirectory(${lib-pace} build-pace)
set_target_properties(pace PROPERTIES CXX_EXTENSIONS ON OUTPUT_NAME lammps_pace${LAMMPS_MACHINE})

View File

@ -18,7 +18,9 @@ if(DOWNLOAD_QUIP)
set(temp "${temp}F77FLAGS += -fpp -fixed -fPIC\n")
set(temp "${temp}F95_PRE_FILENAME_FLAG = -Tf\n")
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL GNU)
set(temp "${temp}FPP=${CMAKE_Fortran_COMPILER} -E -x f95-cpp-input\nOPTIM=${CMAKE_Fortran_FLAGS_${BTYPE}}\n")
# 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")
set(temp "${temp}DEFINES += -DGETARG_F2003 -DGETENV_F2003 -DGFORTRAN -DFORTRAN_UNDERSCORE\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")
@ -56,7 +58,7 @@ if(DOWNLOAD_QUIP)
GIT_SUBMODULES "src/fox;src/GAP"
PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/quip.config <SOURCE_DIR>/arch/Makefile.lammps
CONFIGURE_COMMAND env QUIP_ARCH=lammps make config
BUILD_COMMAND env QUIP_ARCH=lammps make libquip
BUILD_COMMAND env QUIP_ARCH=lammps make -j1 libquip
INSTALL_COMMAND ""
BUILD_IN_SOURCE YES
BUILD_BYPRODUCTS <SOURCE_DIR>/build/lammps/${CMAKE_STATIC_LIBRARY_PREFIX}quip${CMAKE_STATIC_LIBRARY_SUFFIX}

View File

@ -21,9 +21,9 @@ else()
set(PLUMED_CONFIG_OMP "--disable-openmp")
endif()
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.8.2/plumed-src-2.8.2.tgz"
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.8.3/plumed-src-2.8.3.tgz"
CACHE STRING "URL for PLUMED tarball")
set(PLUMED_MD5 "599092b6a0aa6fff992612537ad98994" CACHE STRING "MD5 checksum of PLUMED tarball")
set(PLUMED_MD5 "76d23cd394eba9e6530316ed1184e219" CACHE STRING "MD5 checksum of PLUMED tarball")
mark_as_advanced(PLUMED_URL)
mark_as_advanced(PLUMED_MD5)

View File

@ -0,0 +1,11 @@
# preset that enables GPU and selects CUDA API
set(PKG_GPU ON CACHE BOOL "Build GPU package" FORCE)
set(GPU_API "cuda" CACHE STRING "APU used by GPU package" FORCE)
set(GPU_PREC "mixed" CACHE STRING "" FORCE)
set(CUDA_NVCC_FLAGS "-allow-unsupported-compiler" CACHE STRING "" FORCE)
set(CUDA_NVCC_FLAGS_DEBUG "-allow-unsupported-compiler" CACHE STRING "" FORCE)
set(CUDA_NVCC_FLAGS_MINSIZEREL "-allow-unsupported-compiler" CACHE STRING "" FORCE)
set(CUDA_NVCC_FLAGS_RELWITHDEBINFO "-allow-unsupported-compiler" CACHE STRING "" FORCE)
set(CUDA_NVCC_FLAGS_RELEASE "-allow-unsupported-compiler" CACHE STRING "" FORCE)

View File

@ -6,6 +6,11 @@ set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_CUDA ON CACHE BOOL "" FORCE)
set(Kokkos_ARCH_PASCAL60 ON CACHE BOOL "" FORCE)
set(BUILD_OMP ON CACHE BOOL "" FORCE)
get_filename_component(NVCC_WRAPPER_CMD ${CMAKE_CURRENT_SOURCE_DIR}/../lib/kokkos/bin/nvcc_wrapper ABSOLUTE)
set(CMAKE_CXX_COMPILER ${NVCC_WRAPPER_CMD} CACHE FILEPATH "" FORCE)
# If KSPACE is also enabled, use CUFFT for FFTs
set(FFT_KOKKOS "CUFFT" CACHE STRING FORCE)
# hide deprecation warnings temporarily for stable release
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)

View File

@ -12,6 +12,9 @@ set(BUILD_OMP ON CACHE BOOL "" FORCE)
set(CMAKE_CXX_COMPILER hipcc CACHE STRING "" FORCE)
set(CMAKE_TUNE_FLAGS "-munsafe-fp-atomics" CACHE STRING "" FORCE)
# If KSPACE is also enabled, use CUFFT for FFTs
set(FFT_KOKKOS "HIPFFT" CACHE STRING FORCE)
# hide deprecation warnings temporarily for stable release
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)

View File

@ -18,11 +18,11 @@ set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
unset(HAVE_OMP_H_INCLUDE CACHE)
set(OpenMP_C "icx" CACHE STRING "" FORCE)
set(OpenMP_C_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_C_FLAGS "-qopenmp;-qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_CXX "icpx" CACHE STRING "" FORCE)
set(OpenMP_CXX_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_CXX_FLAGS "-qopenmp;-qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_Fortran_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_Fortran_FLAGS "-qopenmp;-qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_omp_LIBRARY "libiomp5.so" CACHE PATH "" FORCE)

View File

@ -100,6 +100,7 @@ html: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
env LC_ALL=C grep -n ' :[a-z]\+`' $(RSTDIR)/*.rst ;\
env LC_ALL=C grep -n ' `[^`]\+<[a-z][^`]\+`[^_]' $(RSTDIR)/*.rst ;\
env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst ;\
env LC_ALL=C grep -n '\(ref\|doc\)`[^`]' $(RSTDIR)/*.rst ;\
$(PYTHON) $(BUILDDIR)/utils/check-styles.py -s ../src -d src ;\
echo "############################################" ;\
deactivate ;\
@ -182,6 +183,7 @@ pdf: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
env LC_ALL=C grep -n ' :[a-z]\+`' $(RSTDIR)/*.rst ;\
env LC_ALL=C grep -n ' `[^`]\+<[a-z][^`]\+`[^_]' $(RSTDIR)/*.rst ;\
env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst ;\
env LC_ALL=C grep -n '\(ref\|doc\)`[^`]' $(RSTDIR)/*.rst ;\
$(PYTHON) utils/check-styles.py -s ../src -d src ;\
echo "############################################" ;\
deactivate ;\
@ -231,6 +233,7 @@ role_check :
@( env LC_ALL=C grep -n ' :[a-z]\+`' $(RSTDIR)/*.rst && exit 1 || : )
@( env LC_ALL=C grep -n ' `[^`]\+<[a-z][^`]\+`[^_]' $(RSTDIR)/*.rst && exit 1 || : )
@( env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst && exit 1 || : )
@( env LC_ALL=C grep -n '\(ref\|doc\)`[^`]' $(RSTDIR)/*.rst && exit 1 || : )
link_check : $(VENV) html
@(\

View File

@ -36,10 +36,10 @@ requests.
MUST be submitted as a pull request to GitHub. All changes to the
"develop" branch must be made exclusively through merging pull requests.
The "release" and "stable" branches, respectively, are only to be
updated upon feature or stable releases based on the associated
tags. Updates to the stable release in between stable releases
updated upon "feature releases" or "stable releases" based on the
associated tags. Updates to the stable release in between stable releases
(for example, back-ported bug fixes) are first merged into the "maintenance"
branch and then into the "stable" branch as update releases.
branch and then into the "stable" branch as "stable update releases".
Pull requests may also be submitted to (long-running) feature branches
created by LAMMPS developers inside the LAMMPS project, if needed. Those
@ -131,7 +131,7 @@ testing -- that the code in the branch "develop" does not get easily
broken. These tests are run after every update to a pull request. More
extensive and time-consuming tests (including regression testing) are
performed after code is merged to the "develop" branch. There are feature
releases of LAMMPS made about every 4-6 weeks at a point, when the LAMMPS
releases of LAMMPS made about every 4-8 weeks at a point, when the LAMMPS
developers feel, that a sufficient number of changes have been included
and all post-merge testing has been successful. These feature releases are
marked with a `patch_<version date>` tag and the "release" branch

View File

@ -16,8 +16,11 @@ clean:
rm -f $(IMGSVG) $(IMGPDF) $(IMGPNG) *~
ifeq ($(HAS_DOT),YES)
$(IMGDIR)/%.png: %.dot
$(IMGDIR)/lammps-classes.png : lammps-classes.dot
dot -Tpng -Kneato -o $@ $<
$(IMGDIR)/%.png: %.dot
dot -Tpng -Kdot -o $@ $<
endif
ifeq ($(HAS_DOT),NO)

View File

@ -0,0 +1,34 @@
// LAMMPS branches and releases
digraph releases {
rankdir="LR";
github [shape="box" label="Pull Requests\non GitHub" height=0.75];
github -> develop [label="Merge commits"];
{
rank = "same";
work [shape="none" label="Development branches:"]
develop [label="'develop' branch" height=0.75];
maintenance [label="'maintenance' branch" height=0.75];
};
{
rank = "same";
upload [shape="none" label="Release branches:"]
release [label="'release' branch" height=0.75];
stable [label="'stable' branch" height=0.75];
};
develop -> release [label="Feature release\n(every 4-8 weeks)"];
release -> stable [label="Stable release\n(once per year)"];
stable -> maintenance [label="Reset on stable release" style="setlinewidth(2)"];
develop -> maintenance [label="Backports of bugfixes" style="dashed"];
maintenance -> stable [label="Updates to stable release"];
{
rank = "same";
tag [shape="none" label="Applied tags:"];
patchtag [shape="box" label="patch_<date>"];
stabletag [shape="box" label="stable_<date>"];
updatetag [shape="box" label="stable_<date>_update<num>"];
};
release -> patchtag [label="feature release" style="dotted"];
stable -> stabletag [label="stable release" style="dotted"];
stable -> updatetag [label="update release" style="dotted"];
}

View File

@ -1,7 +1,7 @@
.TH LAMMPS "1" "21 November 2023" "2023-11-21"
.TH LAMMPS "1" "7 February 2024" "2024-02-07"
.SH NAME
.B LAMMPS
\- Molecular Dynamics Simulator. Version 21 November 2023
\- Molecular Dynamics Simulator. Version 7 February 2024
.SH SYNOPSIS
.B lmp

View File

@ -562,6 +562,9 @@ Bibliography
**(Kumar)**
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) <https://doi.org/10.1016/j.commatsci.2023.112534>`_
**(Lamoureux and Roux)**
G.\ Lamoureux, B. Roux, J. Chem. Phys 119, 3025 (2003)

View File

@ -122,32 +122,39 @@ Code Coverage and Unit Testing (CMake only)
-------------------------------------------
The LAMMPS code is subject to multiple levels of automated testing
during development: integration testing (i.e. whether the code compiles
on various platforms and with a variety of settings), unit testing
(i.e. whether certain individual parts of the code produce the expected
results for given inputs), run testing (whether selected complete input
decks run without crashing for multiple configurations), and regression
testing (i.e. whether selected input examples reproduce the same
results over a given number of steps and operations within a given
error margin). The status of this automated testing can be viewed on
`https://ci.lammps.org <https://ci.lammps.org>`_.
during development:
- Integration testing (i.e. whether the code compiles
on various platforms and with a variety of compilers and settings),
- Unit testing (i.e. whether certain functions or classes of the code
produce the expected results for given inputs),
- Run testing (i.e. whether selected input decks can run to completion
without crashing for multiple configurations),
- Regression testing (i.e. whether selected input examples reproduce the
same results over a given number of steps and operations within a
given error margin).
The status of this automated testing can be viewed on `https://ci.lammps.org
<https://ci.lammps.org>`_.
The scripts and inputs for integration, run, and regression testing
are maintained in a
`separate repository <https://github.com/lammps/lammps-testing>`_
of the LAMMPS project on GitHub.
of the LAMMPS project on GitHub. A few tests are also run as GitHub
Actions and their configuration files are in the ``.github/workflows/``
folder of the LAMMPS git tree.
The unit testing facility is integrated into the CMake build process
of the LAMMPS source code distribution itself. It can be enabled by
The unit testing facility is integrated into the CMake build process of
the LAMMPS source code distribution itself. It can be enabled by
setting ``-D ENABLE_TESTING=on`` during the CMake configuration step.
It requires the `YAML <https://pyyaml.org/>`_ library and development
headers (if those are not found locally a recent version will be
downloaded and compiled along with LAMMPS and the test program) to
compile and will download and compile a specific recent version of the
`Googletest <https://github.com/google/googletest/>`_ C++ test framework
for implementing the tests.
It requires the `YAML <https://pyyaml.org/>`_ library and matching
development headers to compile (if those are not found locally a recent
version of that library will be downloaded and compiled along with
LAMMPS and the test programs) and will download and compile a specific
version of the `GoogleTest <https://github.com/google/googletest/>`_ C++
test framework that is used to implement the tests.
.. admonition:: Software version requirements for testing
.. admonition:: Software version and LAMMPS configuration requirements
:class: note
The compiler and library version requirements for the testing
@ -155,7 +162,7 @@ for implementing the tests.
example the default GNU C++ and Fortran compilers of RHEL/CentOS 7.x
(version 4.8.x) are not sufficient. The CMake configuration will try
to detect incompatible versions and either skip incompatible tests or
stop with an error. Also the number of tests will depend on
stop with an error. Also the number of available tests will depend on
installed LAMMPS packages, development environment, operating system,
and configuration settings.
@ -234,12 +241,31 @@ will be skipped if prerequisite features are not available in LAMMPS.
time. Preference is given to parts of the code base that are easy to
test or commonly used.
Tests for styles of the same kind of style (e.g. pair styles or bond
styles) are performed with the same test executable using different
input files in YAML format. So to add a test for another style of the
same kind it may be sufficient to add a suitable YAML file.
:doc:`Detailed instructions for adding tests <Developer_unittest>` are
provided in the Programmer Guide part of the manual.
Tests as shown by the ``ctest`` program are command lines defined in the
``CMakeLists.txt`` files in the ``unittest`` directory tree. A few
tests simply execute LAMMPS with specific command line flags and check
the output to the screen for expected content. A large number of unit
tests are special tests programs using the `GoogleTest framework
<https://github.com/google/googletest/>`_ and linked to the LAMMPS
library that test individual functions or create a LAMMPS class
instance, execute one or more commands and check data inside the LAMMPS
class hierarchy. There are also tests for the C-library, Fortran, and
Python module interfaces to LAMMPS. The Python tests use the Python
"unittest" module in a similar fashion than the others use `GoogleTest`.
These special test programs are structured to perform multiple
individual tests internally and each of those contains several checks
(aka assertions) for internal data being changed as expected.
Tests for force computing or modifying styles (e.g. styles for non-bonded
and bonded interactions and selected fixes) are run by using a more generic
test program that reads its input from files in YAML format. The YAML file
provides the information on how to customized the test program to test
a specific style and - if needed - with specific settings.
To add a test for another, similar style (e.g. a new pair style) it is
usually sufficient to add a suitable YAML file. :doc:`Detailed
instructions for adding tests <Developer_unittest>` are provided in the
Programmer Guide part of the manual. A description of what happens
during the tests is given below.
Unit tests for force styles
^^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -255,16 +281,18 @@ A test run is then a a collection multiple individual test runs each
with many comparisons to reference results based on template input
files, individual command settings, relative error margins, and
reference data stored in a YAML format file with ``.yaml``
suffix. Currently the programs ``test_pair_style``, ``test_bond_style``, and
``test_angle_style`` are implemented. They will compare forces, energies and
(global) stress for all atoms after a ``run 0`` calculation and after a
few steps of MD with :doc:`fix nve <fix_nve>`, each in multiple variants
with different settings and also for multiple accelerated styles. If a
prerequisite style or package is missing, the individual tests are
skipped. All tests will be executed on a single MPI process, so using
the CMake option ``-D BUILD_MPI=off`` can significantly speed up testing,
since this will skip the MPI initialization for each test run.
Below is an example command and output:
suffix. Currently the programs ``test_pair_style``, ``test_bond_style``,
``test_angle_style``, ``test_dihedral_style``, and
``test_improper_style`` are implemented. They will compare forces,
energies and (global) stress for all atoms after a ``run 0`` calculation
and after a few steps of MD with :doc:`fix nve <fix_nve>`, each in
multiple variants with different settings and also for multiple
accelerated styles. If a prerequisite style or package is missing, the
individual tests are skipped. All force style tests will be executed on
a single MPI process, so using the CMake option ``-D BUILD_MPI=off`` can
significantly speed up testing, since this will skip the MPI
initialization for each test run. Below is an example command and
output:
.. code-block:: console
@ -416,15 +444,16 @@ When compiling LAMMPS with enabled tests, most test executables will
need to be linked against the LAMMPS library. Since this can be a very
large library with many C++ objects when many packages are enabled, link
times can become very long on machines that use the GNU BFD linker (e.g.
Linux systems). Alternatives like the ``lld`` linker of the LLVM project
or the ``gold`` linker available with GNU binutils can speed up this step
substantially. CMake will by default test if any of the two can be
enabled and use it when ``ENABLE_TESTING`` is active. It can also be
selected manually through the ``CMAKE_CUSTOM_LINKER`` CMake variable.
Allowed values are ``lld``, ``gold``, ``bfd``, or ``default``. The
``default`` option will use the system default linker otherwise, the
linker is chosen explicitly. This option is only available for the
GNU or Clang C++ compiler.
Linux systems). Alternatives like the ``mold`` linker, the ``lld``
linker of the LLVM project, or the ``gold`` linker available with GNU
binutils can speed up this step substantially (in this order). CMake
will by default test if any of the three can be enabled and use it when
``ENABLE_TESTING`` is active. It can also be selected manually through
the ``CMAKE_CUSTOM_LINKER`` CMake variable. Allowed values are
``mold``, ``lld``, ``gold``, ``bfd``, or ``default``. The ``default``
option will use the system default linker otherwise, the linker is
chosen explicitly. This option is only available for the GNU or Clang
C++ compilers.
Tests for other components and utility functions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -518,6 +547,8 @@ The following options are available.
make fix-errordocs # remove error docs in header files
make check-permissions # search for files with permissions issues
make fix-permissions # correct permissions issues in files
make check-docs # search for several issues in the manual
make check-version # list files with pending release version tags
make check # run all check targets from above
These should help to make source and documentation files conforming

View File

@ -626,22 +626,22 @@ They must be specified in uppercase.
* - HOPPER90
- GPU
- NVIDIA Hopper generation CC 9.0 GPU
* - VEGA900
* - AMD_GFX906
- GPU
- AMD GPU MI25 GFX900
* - VEGA906
- AMD GPU MI50/MI60
* - AMD_GFX908
- GPU
- AMD GPU MI50/MI60 GFX906
* - VEGA908
- AMD GPU MI100
* - AMD_GFX90A
- GPU
- AMD GPU MI100 GFX908
* - VEGA90A
- AMD GPU MI200
* - AMD_GFX942
- GPU
- AMD GPU MI200 GFX90A
* - NAVI1030
- AMD GPU MI300
* - AMD_GFX1030
- GPU
- AMD GPU V620/W6800
* - NAVI1100
* - AMD_GFX1100
- GPU
- AMD GPU RX7900XTX
* - INTEL_GEN
@ -666,7 +666,7 @@ They must be specified in uppercase.
- GPU
- Intel GPU Ponte Vecchio
This list was last updated for version 4.0.1 of the Kokkos library.
This list was last updated for version 4.2 of the Kokkos library.
.. tabs::

View File

@ -44,6 +44,14 @@ require use of an FFT library to compute 1d FFTs. The KISS FFT
library is included with LAMMPS, but other libraries can be faster.
LAMMPS can use them if they are available on your system.
.. versionadded:: 7Feb2024
Alternatively, LAMMPS can use the `heFFTe
<https://icl-utk-edu.github.io/heffte/>`_ library for the MPI
communication algorithms, which comes with many optimizations for
special cases, e.g. leveraging available 2D and 3D FFTs in the back end
libraries and better pipelining for packing and communication.
.. tabs::
.. tab:: CMake build
@ -51,14 +59,19 @@ LAMMPS can use them if they are available on your system.
.. code-block:: bash
-D FFT=value # FFTW3 or MKL or KISS, default is FFTW3 if found, else KISS
-D FFT_KOKKOS=value # FFTW3 or MKL or KISS or CUFFT or HIPFFT, default is KISS
-D FFT_SINGLE=value # yes or no (default), no = double precision
-D FFT_PACK=value # array (default) or pointer or memcpy
-D FFT_USE_HEFFTE=value # yes or no (default), yes links to heFFTe
.. note::
The values for the FFT variable must be in upper-case. This is
an exception to the rule that all CMake variables can be specified
with lower-case values.
When the Kokkos variant of a package is compiled and selected at run time,
the FFT library selected by the FFT_KOKKOS variable applies. Otherwise,
the FFT library selected by the FFT variable applies.
The same FFT settings apply to both. FFT_KOKKOS must be compatible with the
Kokkos back end - for example, when using the CUDA back end of Kokkos,
you must use either CUFFT or KISS.
Usually these settings are all that is needed. If FFTW3 is
selected, then CMake will try to detect, if threaded FFTW
@ -76,6 +89,16 @@ LAMMPS can use them if they are available on your system.
-D MKL_INCLUDE_DIR=path # ditto for Intel MKL library
-D FFT_MKL_THREADS=on # enable using threaded FFTs with MKL libraries
-D MKL_LIBRARY=path # path to MKL libraries
-D FFT_HEFFTE_BACKEND=value # FFTW or MKL or empty/undefined for the stock heFFTe back end
-D Heffte_ROOT=path # path to an existing heFFTe installation
.. note::
heFFTe comes with a builtin (= stock) back end for FFTs, i.e. a
default internal FFT implementation; however, this stock back
end is intended for testing purposes only and is not optimized
for production runs.
.. tab:: Traditional make
@ -87,6 +110,8 @@ LAMMPS can use them if they are available on your system.
FFT_INC = -DFFT_FFTW3 # -DFFT_FFTW3, -DFFT_FFTW (same as -DFFT_FFTW3), -DFFT_MKL, or -DFFT_KISS
# default is KISS if not specified
FFT_INC = -DFFT_KOKKOS_CUFFT # -DFFT_KOKKOS_{FFTW,FFTW3,MKL,CUFFT,HIPFFT,KISS}
# default is KISS if not specified
FFT_INC = -DFFT_SINGLE # do not specify for double precision
FFT_INC = -DFFT_FFTW_THREADS # enable using threaded FFTW3 libraries
FFT_INC = -DFFT_MKL_THREADS # enable using threaded FFTs with MKL libraries
@ -97,6 +122,8 @@ LAMMPS can use them if they are available on your system.
FFT_INC = -I/usr/local/include
FFT_PATH = -L/usr/local/lib
FFT_LIB = -lhipfft # hipFFT either precision
FFT_LIB = -lcufft # cuFFT either precision
FFT_LIB = -lfftw3 # FFTW3 double precision
FFT_LIB = -lfftw3 -lfftw3_omp # FFTW3 double precision with threads (needs -DFFT_FFTW_THREADS)
FFT_LIB = -lfftw3 -lfftw3f # FFTW3 single precision
@ -111,6 +138,24 @@ LAMMPS can use them if they are available on your system.
files in its default search path. You must specify ``FFT_LIB``
with the appropriate FFT libraries to include in the link.
Traditional make can also link to heFFTe using an existing installation
.. code-block:: make
include <path-to-heffte-installation>/share/heffte/HeffteMakefile.in
FFT_INC = -DFFT_HEFFTE -DFFT_HEFFTE_FFTW $(heffte_include)
FFT_PATH =
FFT_LIB = $(heffte_link) $(heffte_libs)
The heFFTe install path will contain `HeffteMakefile.in`.
which will define the `heffte_` include variables needed to link to heFFTe from
an external project using traditional make.
The `-DFFT_HEFFTE` is required to switch to using heFFTe, while the optional `-DFFT_HEFFTE_FFTW`
selects the desired heFFTe back end, e.g., `-DFFT_HEFFTE_FFTW` or `-DFFT_HEFFTE_MKL`,
omitting the variable will default to the `stock` back end.
The heFFTe `stock` back end is intended to be used for testing and debugging,
but is not performance optimized for large scale production runs.
The `KISS FFT library <https://github.com/mborgerding/kissfft>`_ is
included in the LAMMPS distribution. It is portable across all
platforms. Depending on the size of the FFTs and the number of
@ -141,6 +186,11 @@ The Intel MKL math library is part of the Intel compiler suite. It
can be used with the Intel or GNU compiler (see the ``FFT_LIB`` setting
above).
The cuFFT and hipFFT FFT libraries are packaged with NVIDIA's CUDA and
AMD's HIP installations, respectively. These FFT libraries require the
Kokkos acceleration package to be enabled and the Kokkos back end to be
GPU-resident (i.e., HIP or CUDA).
Performing 3d FFTs in parallel can be time-consuming due to data access
and required communication. This cost can be reduced by performing
single-precision FFTs instead of double precision. Single precision
@ -152,11 +202,11 @@ generally less than the difference in precision. Using the
``-DFFT_SINGLE`` setting trades off a little accuracy for reduced memory
use and parallel communication costs for transposing 3d FFT data.
When using ``-DFFT_SINGLE`` with FFTW3, you may need to build the FFTW
library a second time with support for single-precision.
When using ``-DFFT_SINGLE`` with FFTW3, you may need to ensure that
the FFTW3 installation includes support for single-precision.
For FFTW3, do the following, which should produce the additional
library ``libfftw3f.a`` or ``libfftw3f.so``\ .
When compiler FFTW3 from source, you can do the following, which should
produce the additional libraries ``libfftw3f.a`` and/or ``libfftw3f.so``\ .
.. code-block:: bash
@ -170,6 +220,16 @@ Depending on the machine, the size of the FFT grid, the number of
processors used, one option may be slightly faster. The default is
ARRAY mode.
When using ``-DFFT_HEFFTE`` CMake will first look for an existing
install with hints provided by ``-DHeffte_ROOT``, as recommended by the
CMake standard and note that the name is case sensitive. If CMake cannot
find a heFFTe installation with the correct back end (e.g., FFTW or
MKL), it will attempt to download and build the library automatically.
In this case, LAMMPS CMake will also accept all heFFTe specific
variables listed in the `heFFTe documentation
<https://mkstoyanov.bitbucket.io/heffte/md_doxygen_installation.html>`_
and those variables will be passed into the heFFTe build.
----------
.. _size:
@ -463,8 +523,8 @@ Exception handling when using LAMMPS as a library
LAMMPS errors do not kill the calling code, but throw an exception. In
the C-library interface, the call stack is unwound and control returns
to the caller, e.g. to Python or a code that is coupled to LAMMPS and
the error status can be queried. When using C++ directly, the calling
to the caller, e.g. to Python or a code that is coupled to LAMMPS. The
error status can then be queried. When using C++ directly, the calling
code has to be set up to *catch* exceptions thrown from within LAMMPS.
.. note::

View File

@ -124,7 +124,7 @@ OPT.
*
*
* :doc:`charmm (iko) <dihedral_charmm>`
* :doc:`charmmfsw <dihedral_charmm>`
* :doc:`charmmfsw (k) <dihedral_charmm>`
* :doc:`class2 (ko) <dihedral_class2>`
* :doc:`cosine/shift/exp (o) <dihedral_cosine_shift_exp>`
* :doc:`fourier (io) <dihedral_fourier>`

View File

@ -100,6 +100,7 @@ KOKKOS, o = OPENMP, t = OPT.
* :doc:`nbond/atom <compute_nbond_atom>`
* :doc:`omega/chunk <compute_omega_chunk>`
* :doc:`orientorder/atom (k) <compute_orientorder_atom>`
* :doc:`pace <compute_pace>`
* :doc:`pair <compute_pair>`
* :doc:`pair/local <compute_pair_local>`
* :doc:`pe <compute_pe>`
@ -115,12 +116,15 @@ KOKKOS, o = OPENMP, t = OPT.
* :doc:`property/grid <compute_property_grid>`
* :doc:`property/local <compute_property_local>`
* :doc:`ptm/atom <compute_ptm_atom>`
* :doc:`rattlers/atom <compute_rattlers_atom>`
* :doc:`rdf <compute_rdf>`
* :doc:`reaxff/atom (k) <compute_reaxff_atom>`
* :doc:`reduce <compute_reduce>`
* :doc:`reduce/chunk <compute_reduce_chunk>`
* :doc:`reduce/region <compute_reduce>`
* :doc:`rigid/local <compute_rigid_local>`
* :doc:`saed <compute_saed>`
* :doc:`slcsa/atom <compute_slcsa_atom>`
* :doc:`slice <compute_slice>`
* :doc:`smd/contact/radius <compute_smd_contact_radius>`
* :doc:`smd/damage <compute_smd_damage>`

View File

@ -122,6 +122,7 @@ OPT.
* :doc:`mvv/tdpd <fix_mvv_dpd>`
* :doc:`neb <fix_neb>`
* :doc:`neb/spin <fix_neb_spin>`
* :doc:`nonaffine/displacement <fix_nonaffine_displacement>`
* :doc:`nph (ko) <fix_nh>`
* :doc:`nph/asphere (o) <fix_nph_asphere>`
* :doc:`nph/body <fix_nph_body>`
@ -238,10 +239,10 @@ OPT.
* :doc:`store/force <fix_store_force>`
* :doc:`store/state <fix_store_state>`
* :doc:`tdpd/source <fix_dpd_source>`
* :doc:`temp/berendsen <fix_temp_berendsen>`
* :doc:`temp/berendsen (k) <fix_temp_berendsen>`
* :doc:`temp/csld <fix_temp_csvr>`
* :doc:`temp/csvr <fix_temp_csvr>`
* :doc:`temp/rescale <fix_temp_rescale>`
* :doc:`temp/rescale (k) <fix_temp_rescale>`
* :doc:`temp/rescale/eff <fix_temp_rescale_eff>`
* :doc:`tfmc <fix_tfmc>`
* :doc:`tgnpt/drude <fix_tgnh_drude>`

View File

@ -87,7 +87,7 @@ OPT.
* :doc:`coul/long/soft (o) <pair_fep_soft>`
* :doc:`coul/msm (o) <pair_coul>`
* :doc:`coul/slater/cut <pair_coul_slater>`
* :doc:`coul/slater/long <pair_coul_slater>`
* :doc:`coul/slater/long (g) <pair_coul_slater>`
* :doc:`coul/shield <pair_coul_shield>`
* :doc:`coul/streitz <pair_coul>`
* :doc:`coul/tt <pair_coul_tt>`
@ -110,7 +110,7 @@ OPT.
* :doc:`eam/he <pair_eam>`
* :doc:`edip (o) <pair_edip>`
* :doc:`edip/multi <pair_edip>`
* :doc:`edpd <pair_mesodpd>`
* :doc:`edpd (g) <pair_mesodpd>`
* :doc:`eff/cut <pair_eff>`
* :doc:`eim (o) <pair_eim>`
* :doc:`exp6/rx (k) <pair_exp6_rx>`
@ -146,7 +146,7 @@ OPT.
* :doc:`lj/charmm/coul/long/soft (o) <pair_fep_soft>`
* :doc:`lj/charmm/coul/msm (o) <pair_charmm>`
* :doc:`lj/charmmfsw/coul/charmmfsh <pair_charmm>`
* :doc:`lj/charmmfsw/coul/long <pair_charmm>`
* :doc:`lj/charmmfsw/coul/long (k) <pair_charmm>`
* :doc:`lj/class2 (gko) <pair_class2>`
* :doc:`lj/class2/coul/cut (ko) <pair_class2>`
* :doc:`lj/class2/coul/cut/soft <pair_fep_soft>`
@ -158,14 +158,14 @@ OPT.
* :doc:`lj/cut (gikot) <pair_lj>`
* :doc:`lj/cut/coul/cut (gko) <pair_lj_cut_coul>`
* :doc:`lj/cut/coul/cut/dielectric (o) <pair_dielectric>`
* :doc:`lj/cut/coul/cut/soft (o) <pair_fep_soft>`
* :doc:`lj/cut/coul/cut/soft (go) <pair_fep_soft>`
* :doc:`lj/cut/coul/debye (gko) <pair_lj_cut_coul>`
* :doc:`lj/cut/coul/debye/dielectric (o) <pair_dielectric>`
* :doc:`lj/cut/coul/dsf (gko) <pair_lj_cut_coul>`
* :doc:`lj/cut/coul/long (gikot) <pair_lj_cut_coul>`
* :doc:`lj/cut/coul/long/cs <pair_cs>`
* :doc:`lj/cut/coul/long/dielectric (o) <pair_dielectric>`
* :doc:`lj/cut/coul/long/soft (o) <pair_fep_soft>`
* :doc:`lj/cut/coul/long/soft (go) <pair_fep_soft>`
* :doc:`lj/cut/coul/msm (go) <pair_lj_cut_coul>`
* :doc:`lj/cut/coul/msm/dielectric <pair_dielectric>`
* :doc:`lj/cut/coul/wolf (o) <pair_lj_cut_coul>`
@ -202,7 +202,7 @@ OPT.
* :doc:`lubricate/poly (o) <pair_lubricate>`
* :doc:`lubricateU <pair_lubricateU>`
* :doc:`lubricateU/poly <pair_lubricateU>`
* :doc:`mdpd <pair_mesodpd>`
* :doc:`mdpd (g) <pair_mesodpd>`
* :doc:`mdpd/rhosum <pair_mesodpd>`
* :doc:`meam (k) <pair_meam>`
* :doc:`meam/ms (k) <pair_meam>`
@ -268,11 +268,11 @@ OPT.
* :doc:`smtbq <pair_smtbq>`
* :doc:`snap (ik) <pair_snap>`
* :doc:`soft (go) <pair_soft>`
* :doc:`sph/heatconduction <pair_sph_heatconduction>`
* :doc:`sph/heatconduction (g) <pair_sph_heatconduction>`
* :doc:`sph/idealgas <pair_sph_idealgas>`
* :doc:`sph/lj <pair_sph_lj>`
* :doc:`sph/lj (g) <pair_sph_lj>`
* :doc:`sph/rhosum <pair_sph_rhosum>`
* :doc:`sph/taitwater <pair_sph_taitwater>`
* :doc:`sph/taitwater (g) <pair_sph_taitwater>`
* :doc:`sph/taitwater/morris <pair_sph_taitwater_morris>`
* :doc:`spin/dipole/cut <pair_spin_dipole>`
* :doc:`spin/dipole/long <pair_spin_dipole>`

View File

@ -126,6 +126,17 @@ syntax compatible with the removed reax pair style, so input files will
have to be adapted. The REAXFF package was originally called
USER-REAXC.
USER-REAXC package
------------------
.. deprecated:: 7Feb2024
The USER-REAXC package has been renamed to :ref:`REAXFF <PKG-REAXFF>`.
In the process also the pair style and related fixes were renamed to use
the "reaxff" string instead of "reax/c". For a while LAMMPS was maintaining
backward compatibility by providing aliases for the styles. These have
been removed, so using "reaxff" is now *required*.
USER-CUDA package
-----------------

View File

@ -70,6 +70,9 @@ File and path functions and global constants
.. doxygenfunction:: is_console
:project: progguide
.. doxygenfunction:: disk_free
:project: progguide
.. doxygenfunction:: path_is_directory
:project: progguide

View File

@ -121,7 +121,7 @@ will be suppressed and only a summary printed, but adding
the '-V' option will then produce output from the tests
above like the following:
.. code-block::
.. code-block:: console
[...]
1: [ RUN ] Tokenizer.empty_string
@ -180,19 +180,11 @@ discarded but by setting the verbose flag (via setting the ``TEST_ARGS``
environment variable, ``TEST_ARGS=-v``) it can be printed and used to
understand why tests fail unexpectedly.
Another complexity of these tests stems from the need to capture
situations where LAMMPS will stop with an error, i.e. handle so-called
"death tests". Here the LAMMPS code will operate differently depending
on whether it was configured to throw C++ exceptions on errors or call
either ``exit()`` or ``MPI_Abort()``. In the latter case, the test code
also needs to detect whether LAMMPS was compiled with the OpenMPI
library, as OpenMPI is **only** compatible the death test options of the
GoogleTest library when C++ exceptions are enabled; otherwise those
"death tests" must be skipped to avoid reporting bogus failures. The
specifics of this step are implemented in the ``TEST_FAILURE()``
macro. These tests operate by capturing the screen output when executing
the failing command and then comparing that with a provided regular
expression string pattern. Example:
The specifics of so-called "death tests", i.e. conditions where LAMMPS
should fail and throw an exception, are implemented in the
``TEST_FAILURE()`` macro. These tests operate by capturing the screen
output when executing the failing command and then comparing that with a
provided regular expression string pattern. Example:
.. code-block:: c++
@ -282,9 +274,7 @@ Tests for using the Fortran module are in the ``unittest/fortran``
folder. Since they are also using the GoogleTest library, they require
to also implement test wrappers in C++ that will call fortran functions
which provide a C function interface through ISO_C_BINDINGS that will in
turn call the functions in the LAMMPS Fortran module. This part of the
unit tests is incomplete since the Fortran module it is based on is
incomplete as well.
turn call the functions in the LAMMPS Fortran module.
Tests for the C++-style library interface
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -405,10 +395,10 @@ compare with the reference and also start from the data file. A final
check will use multi-cutoff r-RESPA (if supported by the pair style) at
a 1:1 split and compare to the Verlet results. These sets of tests are
run with multiple test fixtures for accelerated styles (OPT, OPENMP,
INTEL) and for the latter two with 4 OpenMP threads enabled. For
these tests the relative error (epsilon) is lowered by a common factor
due to the additional numerical noise, but the tests are still comparing
to the same reference data.
INTEL, KOKKOS (OpenMP only)) and for the latter three with 4 OpenMP
threads enabled. For these tests the relative error (epsilon) is lowered
by a common factor due to the additional numerical noise, but the tests
are still comparing to the same reference data.
Additional tests will check whether all listed extract keywords are
supported and have the correct dimensionality and the final set of tests
@ -442,17 +432,19 @@ The ``test_pair_style`` tester is used with 4 categories of test inputs:
pair style is defined, but the computation of the pair style contributions
is disabled.
The ``test_bond_style`` and ``test_angle_style`` are set up in a similar
fashion and share support functions with the pair style tester. The final
group of tests in this section is for fix styles that add/manipulate forces
and velocities, e.g. for time integration, thermostats and more.
The ``test_bond_style``, ``test_angle_style``, ``test_dihedral_style``, and
``test_improper_style`` tester programs are set up in a similar fashion and
share support functions with the pair style tester. The final group of
tests in this section is for fix styles that add/manipulate forces and
velocities, e.g. for time integration, thermostats and more.
Adding a new test is easiest done by copying and modifying an existing test
for a style that is similar to one to be tested. The file name should follow
the naming conventions described above and after copying the file, the first
step is to replace the style names where needed. The coefficient values
do not have to be meaningful, just in a reasonable range for the given system.
It does not matter if some forces are large, for as long as they do not diverge.
Adding a new test is easiest done by copying and modifying an existing YAML
file for a style that is similar to one to be tested. The file name should
follow the naming conventions described above and after copying the file,
the first step is to replace the style names where needed. The coefficient
values do not have to be meaningful, just in a reasonable range for the
given system. It does not matter if some forces are large, for as long as
they do not diverge.
The template input files define a large number of index variables at the top
that can be modified inside the YAML file to control the behavior. For example,
@ -480,7 +472,7 @@ Note that this disables computing the kspace contribution, but still will run
the setup. The "gewald" parameter should be set explicitly to speed up the run.
For styles with long-range electrostatics, typically two tests are added one using
the (slower) analytic approximation of the erfc() function and the other using
the tabulated coulomb, to test both code paths. The reference results in the YAML
the tabulated coulomb, to test both code paths. The reference results in the YAML
files then should be compared manually, if they agree well enough within the limits
of those two approximations.
@ -534,3 +526,102 @@ The ``unittest/tools`` folder contains tests for programs in the
shell, which are implemented as a python scripts using the ``unittest``
Python module and launching the tool commands through the ``subprocess``
Python module.
Troubleshooting failed unit tests
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The are by default no unit tests for newly added features (e.g. pair, fix,
or compute styles) unless your pull request also includes tests for the
added features. If you are modifying some features, you may see failures
for existing tests, if your modifications have some unexpected side effects
or your changes render the existing text invalid. If you are adding an
accelerated version of an existing style, then only tests for INTEL,
KOKKOS (with OpenMP only), OPENMP, and OPT will be run automatically.
Tests for the GPU package are time consuming and thus are only run
*after* a merge, or when a special label, ``gpu_unit_tests`` is added
to the pull request. After the test has started, it is often best to
remove the label since every PR activity will re-trigger the test (that
is a limitation of triggering a test with a label). Support for unit
tests with using KOKKOS with GPU acceleration is currently not supported.
When you see a failed build on GitHub, click on ``Details`` to be taken
to the corresponding LAMMPS Jenkins CI web page. Click on the "Exit"
symbol near the ``Logout`` button on the top right of that page to go to
the "classic view". In the classic view, there is a list of the
individual runs that make up this test run (they are shown but cannot be
inspected in the default view). You can click on any of those.
Clicking on ``Test Result`` will display the list of failed tests. Click
on the "Status" column to sort the tests based on their Failed or Passed
status. Then click on the failed test to expand its output.
For example, the following output snippet shows the failed unit test
.. code-block:: console
[ RUN ] PairStyle.gpu
/home/builder/workspace/dev/pull_requests/ubuntu_gpu/unit_tests/cmake_gpu_opencl_mixed_smallbig_clang_static/unittest/force-styles/test_main.cpp:63: Failure
Expected: (err) <= (epsilon)
Actual: 0.00018957912910606503 vs 0.0001
Google Test trace:
/home/builder/workspace/dev/pull_requests/ubuntu_gpu/unit_tests/cmake_gpu_opencl_mixed_smallbig_clang_static/unittest/force-styles/test_main.cpp:56: EXPECT_FORCES: init_forces (newton off)
/home/builder/workspace/dev/pull_requests/ubuntu_gpu/unit_tests/cmake_gpu_opencl_mixed_smallbig_clang_static/unittest/force-styles/test_main.cpp:64: Failure
Expected: (err) <= (epsilon)
Actual: 0.00022892713393549854 vs 0.0001
The failed assertions provide line numbers in the test source
(e.g. ``test_main.cpp:56``), from which one can understand what
specific assertion failed.
Note that the force style engine runs one of a small number of systems
in a rather off-equilibrium configuration with a few atoms for a few
steps, writes data and restart files, uses :doc:`the clear command
<clear>` to reset LAMMPS, and then runs from those files with different
settings (e.g. newton on/off) and integrators (e.g. verlet vs. respa).
Beyond potential issues/bugs in the source code, the mismatch between
the expected and actual values could be that force arrays are not
properly cleared between multiple run commands or that class members are
not correctly initialized or written to or read from a data or restart
file.
While the epsilon (relative precision) for a single, `IEEE 754 compliant
<https://en.wikipedia.org/wiki/IEEE_754>`_, double precision floating
point operation is at about 2.2e-16, the achievable precision for the
tests is lower due to most numbers being sums over intermediate results
and the non-associativity of floating point math leading to larger
errors. In some cases specific properties of the tested style. As a
rule of thumb, the test epsilon can often be in the range 5.0e-14 to
1.0e-13. But for "noisy" force kernels, e.g. those a larger amount of
arithmetic operations involving `exp()`, `log()` or `sin()` functions,
and also due to the effect of compiler optimization or differences
between compilers or platforms, epsilon may need to be further relaxed,
sometimes epsilon can be relaxed to 1.0e-12. If interpolation or lookup
tables are used, epsilon may need to be set to 1.0e-10 or even higher.
For tests of accelerated styles, the per-test epsilon is multiplied
by empirical factors that take into account the differences in the order
of floating point operations or that some or most intermediate operations
may be done using approximations or with single precision floating point
math.
To rerun the failed unit test individually, change to the ``build`` directory
and run the test with verbose output. For example,
.. code-block:: bash
env TEST_ARGS=-v ctest -R ^MolPairStyle:lj_cut_coul_long -V
``ctest`` with the ``-V`` flag also shows the exact command line
of the test. One can then use ``gdb --args`` to further debug and
catch exceptions with the test command, for example,
.. code-block:: bash
gdb --args /path/to/lammps/build/test_pair_style /path/to/lammps/unittest/force-styles/tests/mol-pair-lj_cut_coul_long.yaml
It is recommended to configure the build with ``-D
BUILD_SHARED_LIBS=on`` and use a custom linker to shorten the build time
during recompilation. Installing `ccache` in your development
environment helps speed up recompilation by caching previous
compilations and detecting when the same compilation is being done
again. Please see :doc:`Build_development` for further details.

View File

@ -20,6 +20,7 @@ Available topics in mostly chronological order are:
- `Use ev_init() to initialize variables derived from eflag and vflag`_
- `Use utils::numeric() functions instead of force->numeric()`_
- `Use utils::open_potential() function to open potential files`_
- `Use symbolic Atom and AtomVec constants instead of numerical values`_
- `Simplify customized error messages`_
- `Use of "override" instead of "virtual"`_
- `Simplified and more compact neighbor list requests`_
@ -196,6 +197,71 @@ New:
fp = utils::open_potential(filename, lmp);
Use symbolic Atom and AtomVec constants instead of numerical values
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: 18Sep2020
Properties in LAMMPS that were represented by integer values (0, 1,
2, 3) to indicate settings in the ``Atom`` and ``AtomVec`` classes (or
classes derived from it) (and its derived classes) have been converted
to use scoped enumerators instead.
.. list-table::
:header-rows: 1
:widths: auto
* - Symbolic Constant
- Value
- Symbolic Constant
- Value
* - Atom::GROW
- 0
- Atom::MAP_NONE
- 0
* - Atom::RESTART
- 1
- Atom::MAP_ARRAY
- 1
* - Atom::BORDER
- 2
- Atom::MAP_HASH
- 2
* - Atom::ATOMIC
- 0
- Atom::MAP_YES
- 3
* - Atom::MOLECULAR
- 1
- AtomVec::PER_ATOM
- 0
* - Atom::TEMPLATE
- 2
- AtomVec::PER_TYPE
- 1
Old:
.. code-block:: c++
molecular = 0;
mass_type = 1;
if (atom->molecular == 2)
if (atom->map_style == 2)
atom->add_callback(0);
atom->delete_callback(id,1);
New:
.. code-block:: c++
molecular = Atom::ATOMIC;
mass_type = AtomVec::PER_TYPE;
if (atom->molecular == Atom::TEMPLATE)
if (atom->map_style == Atom::MAP_HASH)
atom->add_callback(Atom::GROW);
atom->delete_callback(id,Atom::RESTART);
Simplify customized error messages
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -315,6 +315,10 @@ of the contents of the :f:mod:`LIBLAMMPS` Fortran interface to LAMMPS.
:ftype extract_variable: function
:f set_variable: :f:subr:`set_variable`
:ftype set_variable: subroutine
:f set_string_variable: :f:subr:`set_set_string_variable`
:ftype set_string_variable: subroutine
:f set_internal_variable: :f:subr:`set_internal_variable`
:ftype set_internal_variable: subroutine
:f gather_atoms: :f:subr:`gather_atoms`
:ftype gather_atoms: subroutine
:f gather_atoms_concat: :f:subr:`gather_atoms_concat`
@ -1398,7 +1402,28 @@ Procedures Bound to the :f:type:`lammps` Derived Type
Set the value of a string-style variable.
.. versionadded:: 3Nov2022
.. deprecated:: 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
variable, an error is generated.
.. warning::
This subroutine is deprecated and :f:subr:`set_string_variable`
should be used instead.
:p character(len=*) name: name of the variable
:p character(len=*) str: new value to assign to the variable
:to: :cpp:func:`lammps_set_variable`
--------
.. f:subroutine:: set_string_variable(name, str)
Set the value of a string-style variable.
.. versionadded:: 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
@ -1406,7 +1431,23 @@ Procedures Bound to the :f:type:`lammps` Derived Type
:p character(len=*) name: name of the variable
:p character(len=*) str: new value to assign to the variable
:to: :cpp:func:`lammps_set_variable`
:to: :cpp:func:`lammps_set_string_variable`
--------
.. f:subroutine:: set_internal_variable(name, val)
Set the value of a internal-style variable.
.. versionadded:: 7Feb2024
This function assigns a new value from the floating-point number *val* to
the internal-style variable *name*\ . If *name* does not exist or is not
an internal-style variable, an error is generated.
:p character(len=*) name: name of the variable
:p read(c_double) val: new value to assign to the variable
:to: :cpp:func:`lammps_set_internal_variable`
--------
@ -3038,14 +3079,6 @@ Procedures Bound to the :f:type:`lammps` Derived Type
This function can be used to query if an error inside of LAMMPS
has thrown a :ref:`C++ exception <exceptions>`.
.. note::
This function will always report "no error" when the LAMMPS library
has been compiled without ``-DLAMMPS_EXCEPTIONS``, which turns fatal
errors aborting LAMMPS into C++ exceptions. You can use the library
function :cpp:func:`lammps_config_has_exceptions` to check if this is
the case.
:to: :cpp:func:`lammps_has_error`
:r has_error: ``.TRUE.`` if there is an error.
:rtype has_error: logical
@ -3068,13 +3101,6 @@ Procedures Bound to the :f:type:`lammps` Derived Type
would happen only in a single MPI rank and thus may not be recoverable, as
other MPI ranks may be waiting on the failing MPI rank(s) to send messages.
.. note::
This function will do nothing when the LAMMPS library has been
compiled without ``-DLAMMPS_EXCEPTIONS``, which turns errors aborting
LAMMPS into C++ exceptions. You can use the function
:f:func:`config_has_exceptions` to check whether this is the case.
:p character(len=\*) buffer: string buffer to copy the error message into
:o integer(c_int) status [optional]: 1 when all ranks had the error,
2 on a single-rank error.

View File

@ -101,6 +101,7 @@ Tutorials howto
Howto_cmake
Howto_github
Howto_lammps_gui
Howto_moltemplate
Howto_pylammps
Howto_wsl

View File

@ -335,7 +335,7 @@ faces are listed, so that M = 6 + 3\*N + 1.
The integer line has three values: number of vertices (N), number of
edges (E) and number of faces (F). The floating point line(s) list 6
moments of inertia followed by the coordinates of the N vertices (x1
to zN) as 3N values, followed by 2N vertex indices corresponding to
to zN) as 3N values, followed by 2E vertex indices corresponding to
the end points of the E edges, then 4\*F vertex indices defining F
faces. The last value is the diameter value = the rounded diameter of
the sphere that surrounds each vertex. The diameter value can be

View File

@ -349,6 +349,8 @@ Some common LAMMPS specific variables
- when set to ``name`` the LAMMPS executable and library will be called ``lmp_name`` and ``liblammps_name.a``
* - ``FFT``
- select which FFT library to use: ``FFTW3``, ``MKL``, ``KISS`` (default, unless FFTW3 is found)
* - ``FFT_KOKKOS``
- select which FFT library to use in Kokkos-enabled styles: ``FFTW3``, ``MKL``, ``HIPFFT``, ``CUFFT``, ``KISS`` (default)
* - ``FFT_SINGLE``
- select whether to use single precision FFTs (default: ``off``)
* - ``WITH_JPEG``

View File

@ -480,11 +480,11 @@ Some recent changes to the workflow are not captured in this tutorial.
For example, in addition to the *develop* branch, to which all new
features should be submitted, there is also a *release*, a *stable*, and
a *maintenance* branch; the *release* branch is updated from the
*develop* as part of a feature release, and *stable* (together with
*release*) are updated from *develop* when a stable release is made. In
between stable releases, selected bug fixes and infrastructure updates
are back-ported from the *develop* branch to the *maintenance* branch
and occasionally merged to *stable* as an update release.
*develop* branch as part of a "feature release", and *stable* (together
with *release*) are updated from *develop* when a "stable release" is
made. In between stable releases, selected bug fixes and infrastructure
updates are back-ported from the *develop* branch to the *maintenance*
branch and occasionally merged to *stable* as an update release.
Furthermore, the naming of the release tags now follow the pattern
"patch_<Day><Month><Year>" to simplify comparisons between releases.

View File

@ -0,0 +1,371 @@
Moltemplate Tutorial
====================
In this tutorial, we are going to use the tool :ref:`Moltemplate
<moltemplate>` to set up a classical molecular dynamic simulation using
the :ref:`OPLS-AA force field <OPLSAA96>`. The first
task is to describe an organic compound and create a complete input deck
for LAMMPS. The second task is to map the OPLS-AA force field to a
molecular sample created with an external tool, e.g. PACKMOL, and
exported as a PDB file. The files used in this tutorial can be found
in the ``tools/moltemplate/tutorial-files`` folder of the LAMMPS
source code distribution.
Simulating an organic solvent
"""""""""""""""""""""""""""""
This example aims to create a cubic box of the organic solvent
formamide.
The first step is to create a molecular topology in the
LAMMPS-template (LT) file format representing a single molecule, which
will be stored in a Moltemplate object called ``_FAM inherits OPLSAA {}``.
This command states that the object ``_FAM`` is based on an existing
object called ``OPLSAA``, which contains OPLS-AA parameters, atom type
definitions, partial charges, masses and bond-angle rules for many organic
and biological compounds.
The atomic structure is the starting point to populate the command
``write('Data Atoms') {}``, which will write the ``Atoms`` section in the
LAMMPS data file. The OPLS-AA force field uses the ``atom_style full``,
therefore, this column format is used:
``# atomID molID atomType charge coordX coordY coordZ``.
The ``atomID``\ s are replaced with Moltemplate ``$``-type variables, which
are then substituted with unique numerical IDs. The same logic is applied
to the ``molID``, except that the same variable is used for the whole
molecule. The atom types are assigned using ``@``-type variables. The
assignment of atom types (e.g. ``@atom:177``, ``@atom:178``) is done using
the OPLS-AA atom types defined in the "In Charges" section of the file
``oplsaa.lt``, looking for a reasonable match with the description of the atom.
The resulting file (``formamide.lt``) follows:
.. code-block:: bash
_FAM inherits OPLSAA {
# atomID molID atomType charge coordX coordY coordZ
write('Data Atoms') {
$atom:C00 $mol @atom:177 0.00 0.100 0.490 0.0
$atom:O01 $mol @atom:178 0.00 1.091 -0.250 0.0
$atom:N02 $mol @atom:179 0.00 -1.121 -0.181 0.0
$atom:H03 $mol @atom:182 0.00 -2.013 0.272 0.0
$atom:H04 $mol @atom:182 0.00 -1.056 -1.190 0.0
$atom:H05 $mol @atom:221 0.00 0.144 1.570 0.0
}
# A list of the bonds in the molecule:
# BondID AtomID1 AtomID2
write('Data Bond List') {
$bond:C1 $atom:C00 $atom:O01
$bond:C2 $atom:C00 $atom:H05
$bond:C3 $atom:C00 $atom:N02
$bond:C4 $atom:N02 $atom:H03
$bond:C5 $atom:N02 $atom:H04
}
}
You don't have to specify the charge in this example because they will
be assigned according to the atom type. Analogously, only a
"Data Bond List" section is needed as the atom type will determine the
bond type. The other bonded interactions (e.g. angles,
dihedrals, and impropers) will be automatically generated by
Moltemplate.
If the simulation is non-neutral, or Moltemplate complains that you have
missing bond, angle, or dihedral types, this means at least one of your
atom types is incorrect.
The second step is to create a master file with instructions to build a
starting structure and the LAMMPS commands to run an NPT simulation. The
master file (``solv_01.lt``) follows:
.. code-block:: bash
# Import the force field.
import /usr/local/moltemplate/moltemplate/force_fields/oplsaa.lt
import formamide.lt # after oplsaa.lt, as it depends on it.
# Create the input sample.
solv = new _FAM [5].move( 4.6, 0, 0)
[5].move( 0, 4.6, 0)
[5].move( 0, 0, 4.6)
solv[*][*][*].move(-11.5, -11.5, -11.5)
# Set the simulation box.
write_once("Data Boundary") {
-11.5 11.5 xlo xhi
-11.5 11.5 ylo yhi
-11.5 11.5 zlo zhi
}
# Create an input deck for LAMMPS.
write_once("In Init"){
# Input variables.
variable run string solv_01 # output name
variable ts equal 1 # timestep
variable temp equal 300 # equilibrium temperature
variable p equal 1. # equilibrium pressure
variable d equal 1000 # output frequency
variable equi equal 5000 # Equilibration steps
variable prod equal 30000 # Production steps
# PBC (set them before the creation of the box).
boundary p p p
}
# Run an NPT simulation.
write_once("In Run"){
# Derived variables.
variable tcouple equal \$\{ts\}*100
variable pcouple equal \$\{ts\}*1000
# Output.
thermo \$d
thermo_style custom step etotal evdwl ecoul elong ebond eangle &
edihed eimp ke pe temp press vol density cpu
thermo_modify flush yes
# Trajectory.
dump TRJ all dcd \$d \$\{run\}.dcd
dump_modify TRJ unwrap yes
# Thermalisation and relaxation, NPT ensemble.
timestep \$\{ts\}
fix NPT all npt temp \$\{temp\} \$\{temp\} \$\{tcouple\} iso \$p \$p \$\{pcouple\}
velocity all create \$\{temp\} 858096 dist gaussian
# Short runs to update the PPPM settings as the box shinks.
run \$\{equi\} post no
run \$\{equi\} post no
run \$\{equi\} post no
run \$\{equi\}
# From now on, the density shouldn't change too much.
run \$\{prod\}
unfix NPT
}
The first two commands insert the content of files ``oplsaa.lt`` and
``formamide.lt`` into the master file. At this point, we can use the
command ``solv = new _FAM [N]`` to create N copies of a molecule of type
``_FAM``. In this case, we create an array of 5*5*5 molecules on a cubic
grid using the coordinate transformation command ``.move( 4.6, 0, 0)``.
See the Moltemplate documentation to learn more about the syntax. As
the sample was created from scratch, we also specify the simulation box
size in the "Data Boundary" section.
The LAMMPS setting for the force field are specified in the file
``oplsaa.lt`` and are written automatically in the input deck. We also
specify the boundary conditions and a set of variables in
the "In Init" section. The remaining commands to run an NPT simulation
are written in the "In Run" section. Note that in this script, LAMMPS
variables are protected with the escape character ``\`` to distinguish
them from Moltemplate variables, e.g. ``\$\{run\}`` is a LAMMPS
variable that is written in the input deck as ``${run}``.
Compile the master file with:
.. code-block:: bash
moltemplate.sh -overlay-all solv_01.lt
And execute the simulation with the following:
.. code-block:: bash
mpirun -np 4 lmp -in solv_01.in -l solv_01.log
.. figure:: JPG/solv_01.png
:figwidth: 80%
:figclass: align-center
Snapshot of the sample at the beginning and end of the simulation.
Rendered with Ovito.
Mapping an existing structure
"""""""""""""""""""""""""""""
Another helpful way to use Moltemplate is mapping an existing molecular
sample to a force field. This is useful when a complex sample is
assembled from different simulations or created with specialized
software (e.g. PACKMOL). As in the previous example, all molecular
species in the sample must be defined using single-molecule Moltemplate
objects. For this example, we use a short polymer in a box containing
water molecules and ions in the PDB file ``model.pdb``.
It is essential to understand that the order of atoms in the PDB file
and in the Moltemplate master script must match, as we are using the
coordinates from the PDB file in the order they appear. The order of
atoms and molecules in the PDB file provided is as follows:
- 500 water molecules, with atoms ordered in this sequence:
.. parsed-literal::
ATOM 1 O MOL D 1 5.901 7.384 1.103 0.00 0.00 DUM
ATOM 2 H MOL D 1 6.047 8.238 0.581 0.00 0.00 DUM
ATOM 3 H MOL D 1 6.188 7.533 2.057 0.00 0.00 DUM
- 1 polymer molecule.
- 1 Ca\ :sup:`2+` ion.
- 2 Cl\ :sup:`-` ions.
In the master LT file, this sequence of molecules is matched with the
following commands:
.. code-block:: bash
# Create the sample.
wat=new SPC[500]
pol=new PolyNIPAM[1]
cat=new Ca[1]
ani=new Cl[2]
Note that the first command would create 500 water molecules in the
same position in space, and the other commands will use the coordinates
specified in the corresponding molecular topology block. However, the
coordinates will be overwritten by rendering an external atomic
structure file. Note that if the same molecule species are scattered in
the input structure, it is recommended to reorder and group together
for molecule types to facilitate the creation of the input sample.
The molecular topology for the polymer is created as in the previous
example, with the atom types assigned as in the following schema:
.. figure:: JPG/PolyNIPAM.jpg
:scale: 30%
:align: center
Atom types assigned to the polymer's repeating unit.
The molecular topology of the water and ions is stated directly into
the master file for the sake of space, but they could also be written
in a separate file(s) and imported before the sample is created.
The resulting master LT file defining short annealing at a fixed volume
(NVT) follows:
.. code-block:: bash
# Use the OPLS-AA force field for all species.
import /usr/local/moltemplate/moltemplate/force_fields/oplsaa.lt
import PolyNIPAM.lt
# Define the SPC water and ions as in the OPLS-AA
Ca inherits OPLSAA {
write("Data Atoms"){
$atom:a1 $mol:. @atom:354 0.0 0.00000 0.00000 0.000000
}
}
Cl inherits OPLSAA {
write("Data Atoms"){
$atom:a1 $mol:. @atom:344 0.0 0.00000 0.00000 0.000000
}
}
SPC inherits OPLSAA {
write("Data Atoms"){
$atom:O $mol:. @atom:76 0. 0.0000000 0.00000 0.000000
$atom:H1 $mol:. @atom:77 0. 0.8164904 0.00000 0.5773590
$atom:H2 $mol:. @atom:77 0. -0.8164904 0.00000 0.5773590
}
write("Data Bond List") {
$bond:OH1 $atom:O $atom:H1
$bond:OH2 $atom:O $atom:H2
}
}
# Create the sample.
wat=new SPC[500]
pol=new PolyNIPAM[1]
cat=new Ca[1]
ani=new Cl[2]
# Periodic boundary conditions:
write_once("Data Boundary"){
0 26 xlo xhi
0 26 ylo yhi
0 26 zlo zhi
}
# Define the input variables.
write_once("In Init"){
# Input variables.
variable run string sample01 # output name
variable ts equal 2 # timestep
variable temp equal 298.15 # equilibrium temperature
variable p equal 1. # equilibrium pressure
variable equi equal 30000 # equilibration steps
# PBC (set them before the creation of the box).
boundary p p p
neighbor 3 bin
}
# Run an NVT simulation.
write_once("In Run"){
# Set the output.
thermo 1000
thermo_style custom step etotal evdwl ecoul elong ebond eangle &
edihed eimp pe ke temp press atoms vol density cpu
thermo_modify flush yes
compute pe1 all pe/atom pair
dump TRJ all custom 100 \$\{run\}.dump id xu yu zu c_pe1
# Minimise the input structure, just in case.
minimize .01 .001 1000 100000
write_data \$\{run\}.min
# Set the constrains.
group watergroup type @atom:76 @atom:77
fix 0 watergroup shake 0.0001 10 0 b @bond:042_043 a @angle:043_042_043
# Short annealing.
timestep \$\{ts\}
fix 1 all nvt temp \$\{temp\} \$\{temp\} \$(100*dt)
velocity all create \$\{temp\} 315443
run \$\{equi\}
unfix 1
}
In this example, the water model is SPC and it is defined in the
``oplsaa.lt`` file with atom types ``@atom:76`` and ``@atom:77``. For
water we also use the ``group`` and ``fix shake`` commands with
Moltemplate ``@``-type variables, to ensure consistency with the
numerical values assigned during compilation. To identify the bond and
angle types, look for the extended ``@atom`` IDs, which in this case
are:
.. code-block:: bash
replace{ @atom:76 @atom:76_b042_a042_d042_i042 }
replace{ @atom:77 @atom:77_b043_a043_d043_i043 }
From which we can identify the following "Data Bonds By Type":
``@bond:042_043 @atom:*_b042*_a*_d*_i* @atom:*_b043*_a*_d*_i*`` and
"Data Angles By Type": ``@angle:043_042_043 @atom:*_b*_a043*_d*_i*
@atom:*_b*_a042*_d*_i* @atom:*_b*_a043*_d*_i*``
Compile the master file with:
.. code-block:: bash
moltemplate.sh -overlay-all -pdb model.pdb sample01.lt
And execute the simulation with the following:
.. code-block:: bash
mpirun -np 4 lmp -in sample01.in -l sample01.log
.. figure:: JPG/sample01.png
:figwidth: 50%
:figclass: align-center
Sample visualized with Ovito loading the trajectory into the DATA
file written after minimization.
------------
.. _OPLSAA96:
**(OPLS-AA)** Jorgensen, Maxwell, Tirado-Rives, J Am Chem Soc,
118(45), 11225-11236 (1996).

View File

@ -52,8 +52,8 @@ JSON
"ke": 2.4962152903997174569
}
YAML format thermo_style output
===============================
YAML format thermo_style or dump_style output
=============================================
Extracting data from log file
-----------------------------
@ -112,6 +112,9 @@ of that run:
Number of runs: 2
TotEng = -4.62140097780047
Extracting data from dump file
------------------------------
.. versionadded:: 4May2022
YAML format output has been added to multiple commands in LAMMPS,

View File

@ -193,11 +193,14 @@ file changed):
write_data tip4p-implicit.data nocoeff
Below is the code for a LAMMPS input file using the explicit method and
a TIP4P molecule file. Because of using :doc:`fix rigid/nvt/small
a TIP4P molecule file. Because of using :doc:`fix rigid/small
<fix_rigid>` no bonds need to be defined and thus no extra storage needs
to be reserved for them, but we need to switch to atom style full or use
:doc:`fix property/atom mol <fix_property_atom>` so that fix
rigid/nvt/small can identify rigid bodies by their molecule ID:
to be reserved for them, but we need to either switch to atom style full
or use :doc:`fix property/atom mol <fix_property_atom>` so that fix
rigid/small can identify rigid bodies by their molecule ID. Also a
:doc:`neigh_modify exclude <neigh_modify>` command is added to exclude
computing intramolecular non-bonded interactions, since those are
removed by the rigid fix anyway:
.. code-block:: LAMMPS
@ -216,17 +219,17 @@ rigid/nvt/small can identify rigid bodies by their molecule ID:
pair_coeff 2 2 0.0 1.0
pair_coeff 3 3 0.0 1.0
fix mol all property/atom mol
fix mol all property/atom mol ghost yes
molecule water tip4p.mol
create_atoms 0 random 33 34564 NULL mol water 25367 overlap 1.33
neigh_modify exclude molecule/intra all
timestep 0.5
fix integrate all rigid/nvt/small molecule temp 300.0 300.0 100.0
velocity all create 300.0 5463576
fix integrate all rigid/small molecule langevin 300.0 300.0 100.0 2345634
thermo_style custom step temp press etotal density pe ke
thermo 1000
run 20000
thermo 2000
run 40000
write_data tip4p-explicit.data nocoeff
.. _tip4p_molecule:

View File

@ -81,11 +81,13 @@ long-range Coulombic solver (e.g. Ewald or PPPM in LAMMPS).
Below is the code for a LAMMPS input file for setting up a simulation of
TIP5P water with a molecule file. Because of using :doc:`fix
rigid/nvt/small <fix_rigid>` no bonds need to be defined and thus no
extra storage needs to be reserved for them, but we need to switch to
rigid/small <fix_rigid>` no bonds need to be defined and thus no extra
storage needs to be reserved for them, but we need to either switch to
atom style full or use :doc:`fix property/atom mol <fix_property_atom>`
so that fix rigid/nvt/small can identify rigid bodies by their molecule
ID:
so that fix rigid/small can identify rigid bodies by their molecule ID.
Also a :doc:`neigh_modify exclude <neigh_modify>` command is added to
exclude computing intramolecular non-bonded interactions, since those
are removed by the rigid fix anyway:
.. code-block:: LAMMPS
@ -107,11 +109,11 @@ ID:
fix mol all property/atom mol
molecule water tip5p.mol
create_atoms 0 random 33 34564 NULL mol water 25367 overlap 1.33
neigh_modify exclude molecule/intra all
timestep 0.5
fix integrate all rigid/nvt/small molecule temp 300.0 300.0 100.0
fix integrate all rigid/small molecule langevin 300.0 300.0 50.0 235664
reset_timestep 0
velocity all create 300.0 5463576
thermo_style custom step temp press etotal density pe ke
thermo 1000

View File

@ -28,16 +28,16 @@ provides `limited support for subversion clients <svn_>`_.
You can follow the LAMMPS development on 4 different git branches:
* **release** : this branch is updated with every patch or feature release;
updates are always "fast-forward" merges from *develop*
* **develop** : this branch follows the ongoing development and
is updated with every merge commit of a pull request
* **stable** : this branch is updated from the *release* branch with
every stable release version and also has selected bug fixes with every
update release when the *maintenance* branch is merged into it
* **maintenance** : this branch collects back-ported bug fixes from the
*develop* branch to the *stable* branch. It is used to update *stable*
for update releases and it synchronized with *stable* at each stable release.
* **develop** : this branch follows the ongoing development and is
updated with every merge commit of a pull request
* **release** : this branch is updated with every "feature release";
updates are always "fast-forward" merges from *develop*
* **maintenance** : this branch collects back-ported bug fixes from the
*develop* branch to the *stable* branch. It is used to update the
*stable* branch for "stable update releases".
* **stable** : this branch is updated from the *release* branch with
every "stable release" version and also has selected bug fixes with
every "update release" when the *maintenance* branch is merged into it
To access the git repositories on your box, use the clone command to
create a local copy of the LAMMPS repository with a command like:

BIN
doc/src/JPG/PolyNIPAM.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 KiB

After

Width:  |  Height:  |  Size: 304 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

BIN
doc/src/JPG/sample01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 808 KiB

BIN
doc/src/JPG/solv_01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

View File

@ -80,13 +80,15 @@ run LAMMPS in serial mode.
:class: note
If the LAMMPS executable encounters an error condition, it will abort
after printing an error message. For a library interface this is
usually not desirable. Thus LAMMPS can be compiled to to :ref:`throw
a C++ exception <exceptions>` instead. If enabled, the library
functions will catch those exceptions and return. The error status
:cpp:func:`can be queried <lammps_has_error>` and an :cpp:func:`error
message retrieved <lammps_get_last_error_message>`. We thus
recommend enabling C++ exceptions when using the library interface,
after printing an error message. It does so by catching the
exceptions that LAMMPS could throw. For a C library interface this
is usually not desirable since the calling code might lack the
ability to catch such exceptions. Thus, the library functions will
catch those exceptions and return from the affected functions. The
error status :cpp:func:`can be queried <lammps_has_error>` and an
:cpp:func:`error message retrieved <lammps_get_last_error_message>`.
This is, for example used by the :doc:`LAMMPS python module
<Python_module>` and then a suitable Python exception is thrown.
.. admonition:: Using the C library interface as a plugin
:class: note

View File

@ -9,6 +9,8 @@ fixes, or variables in LAMMPS using the following functions:
- :cpp:func:`lammps_extract_variable_datatype`
- :cpp:func:`lammps_extract_variable`
- :cpp:func:`lammps_set_variable`
- :cpp:func:`lammps_set_string_variable`
- :cpp:func:`lammps_set_internal_variable`
- :cpp:func:`lammps_variable_info`
-----------------------
@ -38,6 +40,16 @@ fixes, or variables in LAMMPS using the following functions:
-----------------------
.. doxygenfunction:: lammps_set_string_variable
:project: progguide
-----------------------
.. doxygenfunction:: lammps_set_internal_variable
:project: progguide
-----------------------
.. doxygenfunction:: lammps_variable_info
:project: progguide

View File

@ -3,45 +3,25 @@ What does a LAMMPS version mean
The LAMMPS "version" is the date when it was released, such as 1 May
2014. LAMMPS is updated continuously, and we aim to keep it working
correctly and reliably at all times. You can follow its development
in a public `git repository on GitHub <https://github.com/lammps/lammps>`_.
Modifications of the LAMMPS source code (like bug fixes, code refactors,
updates to existing features, or addition of new features) are organized
into pull requests. Pull requests will be merged into the *develop*
branch of the git repository after they pass automated testing and code
review by the LAMMPS developers. When a sufficient number of changes
have accumulated *and* the *develop* branch version passes an extended
set of automated tests, we release it as a *feature release*, which are
currently made every 4 to 8 weeks. The *release* branch of the git
repository is updated with every such release. A summary of the most
important changes of the patch releases are on `this website page
<https://www.lammps.org/bug.html>`_. More detailed release notes are
`available on GitHub <https://github.com/lammps/lammps/releases/>`_.
Once or twice a year, we have a "stabilization period" where we apply
only bug fixes and small, non-intrusive changes to the *develop*
branch. At the same time, the code is subjected to more detailed and
thorough manual testing than the default automated testing. Also,
several variants of static code analysis are run to improve the overall
code quality, consistency, and compliance with programming standards,
best practices and style conventions.
The release after such a stabilization period is called a *stable*
version and both, the *release* and the *stable* branches are updated
with it. Between stable releases, we collect back-ported bug fixes and
updates from the *develop* branch in the *maintenance* branch. From the
*maintenance* branch we make occasional update releases and update the
*stable* branch accordingly.
correctly and reliably at all times. Also, several variants of static
code analysis are run regularly to maintain or improve the overall code
quality, consistency, and compliance with programming standards, best
practices and style conventions. You can follow its development in a
public `git repository on GitHub <https://github.com/lammps/lammps>`_.
Each version of LAMMPS contains all the documented *features* up to and
including its version date. For recently added features, we add markers
to the documentation at which specific LAMMPS version a feature or
keyword was added or significantly changed.
The version date is printed to the screen and log file every time you run
LAMMPS. It is also in the file src/version.h and in the LAMMPS
directory name created when you unpack a tarball. And it is on the
Identifying the Version
^^^^^^^^^^^^^^^^^^^^^^^
The version date is printed to the screen and log file every time you
run LAMMPS. There also is an indication, if a LAMMPS binary was
compiled from version with modifications **after** a release.
It is also visible in the file src/version.h and in the LAMMPS directory
name created when you unpack a downloaded tarball. And it is on the
first page of the :doc:`manual <Manual>`.
* If you browse the HTML pages of the online version of the LAMMPS
@ -53,3 +33,56 @@ first page of the :doc:`manual <Manual>`.
* If you browse the HTML pages included in your downloaded tarball, they
describe the version you have, which may be older than the online
version.
LAMMPS releases, branches, and tags
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: JPG/lammps-releases.png
:figclass: align-center
Relations between releases, main branches, and tags in the LAMMPS git repository
Development
"""""""""""
Modifications of the LAMMPS source code (like bug fixes, code
refactoring, updates to existing features, or addition of new features)
are organized into pull requests. Pull requests will be merged into the
*develop* branch of the git repository after they pass automated testing
and code review by the LAMMPS developers.
Feature Releases
""""""""""""""""
When a sufficient number of new features and updates have accumulated
*and* the LAMMPS version on the *develop* branch passes an extended set
of automated tests, we release it as a *feature release*, which are
currently made every 4 to 8 weeks. The *release* branch of the git
repository is updated with every such *feature release* and a tag in the
format ``patch_1May2014`` is added. A summary of the most important
changes of these releases for the current year are posted on `this
website page <https://www.lammps.org/bug.html>`_. More detailed release
notes are `available on GitHub
<https://github.com/lammps/lammps/releases/>`_.
Stable Releases
"""""""""""""""
About once a year, we release a *stable release* version of LAMMPS.
This is done after a "stabilization period" where we apply only bug
fixes and small, non-intrusive changes to the *develop* branch but no
new features. At the same time, the code is subjected to more detailed
and thorough manual testing than the default automated testing.
After such a *stable release*, both the *release* and the *stable*
branches are updated and two tags are applied, a ``patch_1May2014`` format
and a ``stable_1May2014`` format tag.
Stable Release Updates
""""""""""""""""""""""
Between *stable releases*, we collect bug fixes and updates back-ported
from the *develop* branch in a branch called *maintenance*. From the
*maintenance* branch we make occasional *stable update releases* and
update the *stable* branch accordingly. The first update to the
``stable_1May2014`` release would be tagged as
``stable_1May2014_update1``. These updates contain no new features.

View File

@ -96,6 +96,39 @@ list all non-conforming lines. By adding the `-f` flag to the command
line, they will modify the flagged files to try to remove the detected
issues.
Constants (strongly preferred)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Global or per-file constants should be declared as `static constexpr`
variables rather than via the pre-processor with `#define`. The name of
constants should be all uppercase. This has multiple advantages:
- constants are easily identified as such by their all upper case name
- rather than a pure text substitution during pre-processing, `constexpr
variables` have a type associated with them and are processed later in
the parsing process where the syntax checks and type specific
processing (e.g. via overloads) can be applied to them.
- compilers can emit a warning if the constant is not used and thus can
be removed (we regularly check for and remove dead code like this)
- there are no unexpected substitutions and thus confusing syntax errors
when compiling leading to, for instance, conflicts so that LAMMPS
cannot be compiled with certain combinations of packages (this *has*
happened multiple times in the past).
Pre-processor defines should be limited to macros (but consider C++
templates) and conditional compilation. If a per-processor define must
be used, it should be defined at the top of the .cpp file after the
include statements and at all cost it should be avoided to put them into
header files.
Some sets of commonly used constants are provided in the ``MathConst``
and ``EwaldConst`` namespaces and implemented in the files
``math_const.h`` and ``ewald_const.h``, respectively.
There are always exceptions, special cases, and legacy code in LAMMPS,
so please contact the LAMMPS developers if you are not sure.
Placement of braces (strongly preferred)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -2226,7 +2226,7 @@ and third order tensor from finite differences.
**Install:**
The PHONON package requires that also the :ref:`KSPACE <PKG-KSPACE>`
The fix phonon command also requires that the :ref:`KSPACE <PKG-KSPACE>`
package is installed.

View File

@ -1,11 +1,11 @@
Handling LAMMPS errors
**********************
The shared library is compiled with :ref:`C++ exception support
<exceptions>` to provide a better error handling experience. C++
exceptions allow capturing errors on the C++ side and rethrowing them on
the Python side. This way LAMMPS errors can be handled through the
Python exception handling mechanism.
LAMMPS and the LAMMPS library are compiled with :ref:`C++ exception support
<exceptions>` to provide a better error handling experience. LAMMPS errors
trigger throwing a C++ exception. These exceptions allow capturing errors on
the C++ side and rethrowing them on the Python side. This way LAMMPS errors
can be handled through the Python exception handling mechanism.
.. code-block:: python
@ -15,9 +15,7 @@ Python exception handling mechanism.
try:
# LAMMPS will normally terminate itself and the running process if an error
# occurs. This would kill the Python interpreter. To avoid this, make sure to
# compile with LAMMPS_EXCEPTIONS enabled. This ensures the library API calls
# will not terminate the parent process. Instead, the library wrapper will
# occurs. This would kill the Python interpreter. The library wrapper will
# detect that an error has occured and throw a Python exception
lmp.command('unknown')

View File

@ -5,8 +5,7 @@ The LAMMPS Python module enables calling the :ref:`LAMMPS C library API
<lammps_c_api>` from Python by dynamically loading functions in the
LAMMPS shared library through the Python `ctypes <ctypes_>`_
module. Because of the dynamic loading, it is required that LAMMPS is
compiled in :ref:`"shared" mode <exe>`. It is also recommended to
compile LAMMPS with :ref:`C++ exceptions <exceptions>` enabled.
compiled in :ref:`"shared" mode <exe>`.
Two components are necessary for Python to be able to invoke LAMMPS code:

View File

@ -49,14 +49,17 @@ simulation. An example set of statistics is shown here:
----------
The first section provides a global loop timing summary. The *loop time*
is the total wall-clock time for the simulation to run. The
*Performance* line is provided for convenience to help predict how long
it will take to run a desired physical simulation and to have numbers
useful for performance comparison between different simulation settings
or system sizes. The *CPU use* line provides the CPU utilization per
MPI task; it should be close to 100% times the number of OpenMP threads
(or 1 of not using OpenMP). Lower numbers correspond to delays due to
file I/O or insufficient thread utilization.
is the total wall-clock time for the MD steps of the simulation run,
excluding the time for initialization and setup (i.e. the parts that may
be skipped with :doc:`run N pre no <run>`). The *Performance* line is
provided for convenience to help predict how long it will take to run a
desired physical simulation and to have numbers useful for performance
comparison between different simulation settings or system sizes. The
*CPU use* line provides the CPU utilization per MPI task; it should be
close to 100% times the number of OpenMP threads (or 1 if not using
OpenMP). Lower numbers correspond to delays due to file I/O or
insufficient thread utilization from parts of the code that have not
been multi-threaded.
----------

View File

@ -70,7 +70,9 @@ for more info.
Related commands
""""""""""""""""
:doc:`angle_coeff <angle_coeff>`
:doc:`angle_coeff <angle_coeff>`, :doc:`pair_style lj/charmm variants <pair_charmm>`,
:doc:`dihedral_style charmm <dihedral_charmm>`,
:doc:`dihedral_style charmmfsw <dihedral_charmm>`, :doc:`fix cmap <fix_cmap>`
Default
"""""""

View File

@ -11,7 +11,16 @@ Syntax
.. code-block:: LAMMPS
angle_style lepton
angle_style style args
* style = *lepton*
* args = optional arguments
.. parsed-literal::
args = *auto_offset* or *no_offset*
*auto_offset* = offset the potential energy so that the value at theta0 is 0.0 (default)
*no_offset* = do not offset the potential energy
Examples
""""""""
@ -19,6 +28,7 @@ Examples
.. code-block:: LAMMPS
angle_style lepton
angle_style lepton no_offset
angle_coeff 1 120.0 "k*theta^2; k=250.0"
angle_coeff 2 90.0 "k2*theta^2 + k3*theta^3 + k4*theta^4; k2=300.0; k3=-100.0; k4=50.0"
@ -41,6 +51,13 @@ angle coefficient. For example `"200.0*theta^2"` represents a
U_{angle,i} = K (\theta_i - \theta_0)^2 = K \theta^2 \qquad \theta = \theta_i - \theta_0
.. versionchanged:: 7Feb2024
By default the potential energy U is shifted so that the value U is 0.0
for $theta = theta_0$. This is equivalent to using the optional keyword
*auto_offset*. When using the keyword *no_offset* instead, the
potential energy is not shifted.
The `Lepton library <https://simtk.org/projects/lepton>`_, that the
*lepton* angle style interfaces with, evaluates this expression string
at run time to compute the pairwise energy. It also creates an

View File

@ -49,248 +49,221 @@ Examples
Description
"""""""""""
Define what style of atoms to use in a simulation. This determines
what attributes are associated with the atoms. This command must be
used before a simulation is setup via a :doc:`read_data <read_data>`,
:doc:`read_restart <read_restart>`, or :doc:`create_box <create_box>`
command.
The *atom_style* command selects which per-atom attributes are
associated with atoms in a LAMMPS simulation and thus stored and
communicated with those atoms as well as read from and stored in data
and restart files. Different models (e.g. :doc:`pair styles
<pair_style>`) require access to specific per-atom attributes and thus
require a specific atom style. For example, to compute Coulomb
interactions, the atom must have a "charge" (aka "q") attribute.
A number of distinct atom styles exist that combine attributes. Some
atom styles are a superset of other atom styles. Further attributes
may be added to atoms either via using a hybrid style which provides a
union of the attributes of the sub-styles, or via the :doc:`fix
property/atom <fix_property_atom>` command. The *atom_style* command
must be used before a simulation is setup via a :doc:`read_data
<read_data>`, :doc:`read_restart <read_restart>`, or :doc:`create_box
<create_box>` command.
.. note::
Many of the atom styles discussed here are only enabled if
LAMMPS was built with a specific package, as listed below in the
Restrictions section.
Many of the atom styles discussed here are only enabled if LAMMPS was
built with a specific package, as listed below in the Restrictions
section.
Once a style is assigned, it cannot be changed, so use a style general
enough to encompass all attributes. E.g. with style *bond*, angular
terms cannot be used or added later to the model. It is OK to use a
style more general than needed, though it may be slightly inefficient.
Once a style is selected and the simulation box defined, it cannot be
changed but only augmented with the :doc:`fix property/atom
<fix_property_atom>` command. So one should select an atom style
general enough to encompass all attributes required. E.g. with atom
style *bond*, it is not possible to define angles and use angle styles.
The choice of style affects what quantities are stored by each atom,
what quantities are communicated between processors to enable forces
to be computed, and what quantities are listed in the data file read
by the :doc:`read_data <read_data>` command.
It is OK to use a style more general than needed, though it may be
slightly inefficient because it will allocate and communicate
additional unused data.
These are the additional attributes of each style and the typical
kinds of physical systems they are used to model. All styles store
coordinates, velocities, atom IDs and types. See the
Atom style attributes
"""""""""""""""""""""
The atom style *atomic* has the minimum subset of per-atom attributes
and is also the default setting. It encompasses the following per-atom
attributes (name of the vector or array in the :doc:`Atom class
<Classes_atom>` is given in parenthesis): atom-ID (tag), type (type),
position (x), velocities (v), forces (f), image flags (image), group
membership (mask). Since all atom styles are a superset of atom style
*atomic*\ , they all include these attributes.
This table lists all the available atom styles, which attributes they
provide, which :doc:`package <Packages>` is required to use them, and
what the typical applications are that use them. See the
:doc:`read_data <read_data>`, :doc:`create_atoms <create_atoms>`, and
:doc:`set <set>` commands for info on how to set these various
quantities.
:doc:`set <set>` commands for details on how to set these various
quantities. More information about many of the styles is provided in
the Additional Information section below.
+--------------+-----------------------------------------------------+--------------------------------------+
| *amoeba* | molecular + charge + 1/5 neighbors | AMOEBA/HIPPO polarized force fields |
+--------------+-----------------------------------------------------+--------------------------------------+
| *angle* | bonds and angles | bead-spring polymers with stiffness |
+--------------+-----------------------------------------------------+--------------------------------------+
| *atomic* | only the default values | coarse-grain liquids, solids, metals |
+--------------+-----------------------------------------------------+--------------------------------------+
| *body* | mass, inertia moments, quaternion, angular momentum | arbitrary bodies |
+--------------+-----------------------------------------------------+--------------------------------------+
| *bond* | bonds | bead-spring polymers |
+--------------+-----------------------------------------------------+--------------------------------------+
| *charge* | charge | atomic system with charges |
+--------------+-----------------------------------------------------+--------------------------------------+
| *dielectric* | normx normy normz area/patch ed em epsilon curv | system with surface polarization |
+--------------+-----------------------------------------------------+--------------------------------------+
| *dipole* | charge and dipole moment | system with dipolar particles |
+--------------+-----------------------------------------------------+--------------------------------------+
| *dpd* | internal temperature and internal energies | DPD particles |
+--------------+-----------------------------------------------------+--------------------------------------+
| *edpd* | temperature and heat capacity | eDPD particles |
+--------------+-----------------------------------------------------+--------------------------------------+
| *electron* | charge and spin and eradius | electronic force field |
+--------------+-----------------------------------------------------+--------------------------------------+
| *ellipsoid* | shape, quaternion, angular momentum | aspherical particles |
+--------------+-----------------------------------------------------+--------------------------------------+
| *full* | molecular + charge | bio-molecules |
+--------------+-----------------------------------------------------+--------------------------------------+
| *line* | end points, angular velocity | rigid bodies |
+--------------+-----------------------------------------------------+--------------------------------------+
| *mdpd* | density | mDPD particles |
+--------------+-----------------------------------------------------+--------------------------------------+
| *molecular* | bonds, angles, dihedrals, impropers | uncharged molecules |
+--------------+-----------------------------------------------------+--------------------------------------+
| *oxdna* | nucleotide polarity | coarse-grained DNA and RNA models |
+--------------+-----------------------------------------------------+--------------------------------------+
| *peri* | mass, volume | mesoscopic Peridynamic models |
+--------------+-----------------------------------------------------+--------------------------------------+
| *smd* | volume, kernel diameter, contact radius, mass | solid and fluid SPH particles |
+--------------+-----------------------------------------------------+--------------------------------------+
| *sph* | rho, esph, cv | SPH particles |
+--------------+-----------------------------------------------------+--------------------------------------+
| *sphere* | diameter, mass, angular velocity | granular models |
+--------------+-----------------------------------------------------+--------------------------------------+
| *bpm/sphere* | diameter, mass, angular velocity, quaternion | granular bonded particle models (BPM)|
+--------------+-----------------------------------------------------+--------------------------------------+
| *spin* | magnetic moment | system with magnetic particles |
+--------------+-----------------------------------------------------+--------------------------------------+
| *tdpd* | chemical concentration | tDPD particles |
+--------------+-----------------------------------------------------+--------------------------------------+
| *template* | template index, template atom | small molecules with fixed topology |
+--------------+-----------------------------------------------------+--------------------------------------+
| *tri* | corner points, angular momentum | rigid bodies |
+--------------+-----------------------------------------------------+--------------------------------------+
| *wavepacket* | charge, spin, eradius, etag, cs_re, cs_im | AWPMD |
+--------------+-----------------------------------------------------+--------------------------------------+
.. list-table::
:header-rows: 1
:widths: auto
* - Atom style
- Attributes
- Required package
- Applications
* - *amoeba*
- *full* + "1-5 special neighbor data"
- :ref:`AMOEBA <PKG-AMOEBA>`
- AMOEBA/HIPPO force fields
* - *angle*
- *bond* + "angle data"
- :ref:`MOLECULE <PKG-MOLECULE>`
- bead-spring polymers with stiffness
* - *atomic*
- tag, type, x, v, f, image, mask
-
- atomic liquids, solids, metals
* - *body*
- *atomic* + radius, rmass, angmom, torque, body
- :ref:`BODY <PKG-BODY>`
- arbitrary bodies, see :doc:`body howto <Howto_body>`
* - *bond*
- *atomic* + molecule, nspecial, special + "bond data"
- :ref:`MOLECULE <PKG-MOLECULE>`
- bead-spring polymers
* - *bpm/sphere*
- *bond* + radius, rmass, omega, torque, quat
- :ref:`BPM <PKG-BPM>`
- granular bonded particle models, see :doc:`BPM howto <Howto_bpm>`
* - *charge*
- *atomic* + q
-
- atomic systems with charges
* - *dielectric*
- *full* + mu, area, ed, em, epsilon, curvature, q_scaled
- :ref:`DIELECTRIC <PKG-DIELECTRIC>`
- systems with surface polarization
* - *dipole*
- *charge* + mu
- :ref:`DIPOLE <PKG-DIPOLE>`
- atomic systems with charges and point dipoles
* - *dpd*
- *atomic* + rho + "reactive DPD data"
- :ref:`DPD-REACT <PKG-DPD-REACT>`
- reactive DPD
* - *edpd*
- *atomic* + "eDPD data"
- :ref:`DPD-MESO <PKG-DPD-MESO>`
- Energy conservative DPD (eDPD)
* - *electron*
- *charge* + espin, eradius, ervel, erforce
- :ref:`EFF <PKG-EFF>`
- Electron force field systems
* - *ellipsoid*
- *atomic* + rmass, angmom, torque, ellipsoid
-
- aspherical particles
* - *full*
- *molecular* + q
- :ref:`MOLECULE <PKG-MOLECULE>`
- molecular force fields
* - *line*
- *atomic* + molecule, radius, rmass, omega, torque, line
-
- 2-d rigid body particles
* - *mdpd*
- *atomic* + rho, drho, vest
- :ref:`DPD-MESO <PKG-DPD-MESO>`
- Many-body DPD (mDPD)
* - *molecular*
- *angle* + "dihedral and improper data"
- :ref:`MOLECULE <PKG-MOLECULE>`
- apolar and uncharged molecules
* - *oxdna*
- *atomic* + id5p
- :ref:`CG-DNA <PKG-CG-DNA>`
- coarse-grained DNA and RNA models
* - *peri*
- *atomic* + rmass, vfrac, s0, x0
- :ref:`PERI <PKG-PERI>`
- mesoscopic Peridynamics models
* - *smd*
- *atomic* + molecule, radius, rmass + "smd data"
- :ref:`MACHDYN <PKG-MACHDYN>`
- Smooth Mach Dynamics models
* - *sph*
- *atomic* + "sph data"
- :ref:`SPH <PKG-SPH>`
- Smoothed particle hydrodynamics models
* - *sphere*
- *atomic* + radius, rmass, omega, torque
-
- finite size spherical particles, e.g. granular models
* - *spin*
- *atomic* + "magnetic moment data"
- :ref:`SPIN <PKG-SPIN>`
- magnetic particles
* - *tdpd*
- *atomic* + cc, cc_flux, vest
- :ref:`DPD-MESO <PKG-DPD-MESO>`
- Transport DPD (tDPD)
* - *template*
- *atomic* + molecule, molindex, molatom
- :ref:`MOLECULE <PKG-MOLECULE>`
- molecular systems where attributes are taken from :doc:`molecule files <molecule>`
* - *tri*
- *sphere* + molecule, angmom, tri
-
- 3-d triangulated rigid body LJ particles
* - *wavepacket*
- *charge* + "wavepacket data"
- :ref:`AWPMD <PKG-AWPMD>`
- Antisymmetrized wave packet MD
.. note::
It is possible to add some attributes, such as a molecule ID, to
atom styles that do not have them via the :doc:`fix property/atom
<fix_property_atom>` command. This command also allows new custom
attributes consisting of extra integer or floating-point values to
be added to atoms. See the :doc:`fix property/atom
<fix_property_atom>` page for examples of cases where this is
useful and details on how to initialize, access, and output the
custom values.
It is possible to add some attributes, such as a molecule ID and
charge, to atom styles that do not have them built in using the
:doc:`fix property/atom <fix_property_atom>` command. This command
also allows new custom-named attributes consisting of extra integer
or floating-point values or vectors to be added to atoms. See the
:doc:`fix property/atom <fix_property_atom>` page for examples of
cases where this is useful and details on how to initialize,
access, and output these custom values.
All of the above styles define point particles, except the *sphere*,
*bpm/sphere*, *ellipsoid*, *electron*, *peri*, *wavepacket*, *line*,
*tri*, and *body* styles, which define finite-size particles. See the
:doc:`Howto spherical <Howto_spherical>` page for an overview of using
finite-size particle models with LAMMPS.
----------
All of the point-particle styles assign mass to particles on a
per-type basis, using the :doc:`mass <mass>` command, The finite-size
particle styles assign mass to individual particles on a per-particle
basis.
Particle size and mass
""""""""""""""""""""""
For the *sphere* and *bpm/sphere* styles, the particles are spheres
and each stores a per-particle diameter and mass. If the diameter >
0.0, the particle is a finite-size sphere. If the diameter = 0.0, it
is a point particle. Note that by use of the *disc* keyword with the
:doc:`fix nve/sphere <fix_nve_sphere>`, :doc:`fix nvt/sphere
<fix_nvt_sphere>`, :doc:`fix nph/sphere <fix_nph_sphere>`,
:doc:`fix npt/sphere <fix_npt_sphere>` commands for the *sphere* style,
spheres can be effectively treated as 2d discs for a 2d simulation if
desired. See also the :doc:`set density/disc <set>` command. These
styles take an optional 0 or 1 argument. A value of 0 means the
radius of each sphere is constant for the duration of the simulation.
A value of 1 means the radii may vary dynamically during the simulation,
e.g. due to use of the :doc:`fix adapt <fix_adapt>` command.
All of the atom styles define point particles unless they (1) define
finite-size spherical particles via the *radius* attribute, or (2)
define finite-size aspherical particles (e.g. the *body*, *ellipsoid*,
*line*, and *tri* styles). Most of these styles can also be used with
mixtures of point and finite-size particles.
For the *ellipsoid* style, the particles are ellipsoids and each
stores a flag which indicates whether it is a finite-size ellipsoid or
a point particle. If it is an ellipsoid, it also stores a shape
vector with the 3 diameters of the ellipsoid and a quaternion 4-vector
with its orientation.
Note that the *radius* property may need to be provided as a
*diameter* (e.g. in :doc:`molecule files <molecule>` or :doc:`data
files <read_data>`). See the :doc:`Howto spherical <Howto_spherical>`
page for an overview of using finite-size spherical and aspherical
particle models with LAMMPS.
For the *dielectric* style, each particle can be either a physical
particle (e.g. an ion), or an interface particle representing a boundary
element between two regions of different dielectric constant. For
interface particles, in addition to the properties associated with
atom_style full, each particle also should be assigned a normal unit
vector (defined by normx, normy, normz), an area (area/patch), the
difference and mean of the dielectric constants of two sides of the
interface along the direction of the normal vector (ed and em), the
local dielectric constant at the boundary element (epsilon), and a mean
local curvature (curv). Physical particles must be assigned these
values, as well, but only their local dielectric constants will be used;
see documentation for associated :doc:`pair styles <pair_dielectric>`
and :doc:`fixes <fix_polarize>`. The distinction between the physical
and interface particles is only meaningful when :doc:`fix polarize
<fix_polarize>` commands are applied to the interface particles. This
style is part of the DIELECTRIC package.
Unless an atom style defines the per-atom *rmass* attribute, particle
masses are defined on a per-type basis, using the :doc:`mass <mass>`
command. This means each particle's mass is indexed by its atom
*type*.
For the *dipole* style, a point dipole is defined for each point
particle. Note that if you wish the particles to be finite-size
spheres as in a Stockmayer potential for a dipolar fluid, so that the
particles can rotate due to dipole-dipole interactions, then you need
to use atom_style hybrid sphere dipole, which will assign both a
diameter and dipole moment to each particle.
A few styles define the per-atom *rmass* attribute which can also be
added using the :doc:`fix property/atom <fix_property_atom>` command.
In this case each particle stores its own mass. Atom styles that have
a per-atom rmass may define it indirectly through setting particle
diameter and density on a per-particle basis. If both per-type mass
and per-atom *rmass* are defined (e.g. in a hybrid style), the
per-atom mass will take precedence in any operation which which works
with both flavors of mass.
For the *electron* style, the particles representing electrons are 3d
Gaussians with a specified position and bandwidth or uncertainty in
position, which is represented by the eradius = electron size.
----------
For the *peri* style, the particles are spherical and each stores a
per-particle mass and volume.
The *bpm/sphere* style is part of the BPM package.
The *oxdna* style is for coarse-grained nucleotides and stores the
3'-to-5' polarity of the nucleotide strand, which is set through
the bond topology in the data file. The first (second) atom in a
bond definition is understood to point towards the 3'-end (5'-end)
of the strand. Note that this style is part of the CG-DNA package.
The *dpd* style is for dissipative particle dynamics (DPD) particles.
Note that it is part of the DPD-REACT package, and is not for use with
the :doc:`pair_style dpd or dpd/stat <pair_dpd>` commands, which can
simply use atom_style atomic. Atom_style dpd extends DPD particle
properties with internal temperature (dpdTheta), internal conductive
energy (uCond), internal mechanical energy (uMech), and internal
chemical energy (uChem).
The *edpd* style is for energy-conserving dissipative particle
dynamics (eDPD) particles which store a temperature (edpd_temp), and
heat capacity(edpd_cv).
The *mdpd* style is for many-body dissipative particle dynamics (mDPD)
particles which store a density (rho) for considering
density-dependent many-body interactions.
The *tdpd* style is for transport dissipative particle dynamics (tDPD)
particles which store a set of chemical concentration. An integer
"cc_species" is required to specify the number of chemical species
involved in a tDPD system.
The *sph* style is for smoothed particle hydrodynamics (SPH)
particles which store a density (rho), energy (esph), and heat capacity
(cv).
The *smd* style is for a general formulation of Smooth Particle
Hydrodynamics. Both fluids and solids can be modeled. Particles
store the mass and volume of an integration point, a kernel diameter
used for calculating the field variables (e.g. stress and deformation)
and a contact radius for calculating repulsive forces which prevent
individual physical bodies from penetrating each other.
For the *spin* style, a magnetic spin is associated to each atom.
Those spins have a norm (their magnetic moment) and a direction.
The *wavepacket* style is similar to *electron*, but the electrons may
consist of several Gaussian wave packets, summed up with coefficients
cs= (cs_re,cs_im). Each of the wave packets is treated as a separate
particle in LAMMPS, wave packets belonging to the same electron must
have identical *etag* values.
For the *line* style, the particles are idealized line segments and
each stores a per-particle mass and length and orientation (i.e. the
end points of the line segment).
For the *tri* style, the particles are planar triangles and each
stores a per-particle mass and size and orientation (i.e. the corner
points of the triangle).
The *template* style allows molecular topology (bonds,angles,etc) to be
defined via a molecule template using the :doc:`molecule <molecule>`
command. The template stores one or more molecules with a single copy
of the topology info (bonds,angles,etc) of each. Individual atoms
only store a template index and template atom to identify which
molecule and which atom-within-the-molecule they represent. Using the
*template* style instead of the *bond*, *angle*, *molecular* styles
can save memory for systems comprised of a large number of small
molecules, all of a single type (or small number of types). See the
paper by Grime and Voth, in :ref:`(Grime) <Grime>`, for examples of how this
can be advantageous for large-scale coarse-grained systems.
The ``examples/template`` directory has a few demo inputs and examples
showing the use of the *template* atom style versus *molecular*.
.. note::
When using the *template* style with a :doc:`molecule template
<molecule>` that contains multiple molecules, you should ensure the
atom types, bond types, angle_types, etc in all the molecules are
consistent. E.g. if one molecule represents H2O and another CO2,
then you probably do not want each molecule file to define 2 atom
types and a single bond type, because they will conflict with each
other when a mixture system of H2O and CO2 molecules is defined,
e.g. by the :doc:`read_data <read_data>` command. Rather the H2O
molecule should define atom types 1 and 2, and bond type 1. And
the CO2 molecule should define atom types 3 and 4 (or atom types 3
and 2 if a single oxygen type is desired), and bond type 2.
Additional information about specific atom styles
"""""""""""""""""""""""""""""""""""""""""""""""""
For the *body* style, the particles are arbitrary bodies with internal
attributes defined by the "style" of the bodies, which is specified by
@ -309,6 +282,148 @@ Note that there may be additional arguments required along with the
*bstyle* specification, in the atom_style body command. These
arguments are described on the :doc:`Howto body <Howto_body>` doc page.
For the *dielectric* style, each particle can be either a physical
particle (e.g. an ion), or an interface particle representing a boundary
element between two regions of different dielectric constant. For
interface particles, in addition to the properties associated with
atom_style full, each particle also should be assigned a normal unit
vector (defined by normx, normy, normz), an area (area/patch), the
difference and mean of the dielectric constants of two sides of the
interface along the direction of the normal vector (ed and em), the
local dielectric constant at the boundary element (epsilon), and a mean
local curvature (curv). Physical particles must be assigned these
values, as well, but only their local dielectric constants will be used;
see documentation for associated :doc:`pair styles <pair_dielectric>`
and :doc:`fixes <fix_polarize>`. The distinction between the physical
and interface particles is only meaningful when :doc:`fix polarize
<fix_polarize>` commands are applied to the interface particles. This
style is part of the DIELECTRIC package.
For the *dipole* style, a point dipole vector mu is defined for each
point particle. Note that if you wish the particles to be finite-size
spheres as in a Stockmayer potential for a dipolar fluid, so that the
particles can rotate due to dipole-dipole interactions, then you need
to use the command `atom_style hybrid sphere dipole`, which will
assign both a diameter and dipole moment to each particle. This also
requires using an integrator with a "/sphere" suffix like :doc:`fix
nve/sphere <fix_nve_sphere>` or :doc:`fix nvt/sphere <fix_nvt_sphere>`
and the "update dipole" or "update dlm" parameters to the fix
commands.
The *dpd* style is for reactive dissipative particle dynamics (DPD)
particles. Note that it is part of the DPD-REACT package, and is not
required for use with the :doc:`pair_style dpd or dpd/stat <pair_dpd>`
commands, which only require the attributes from atom_style *atomic*.
Atom_style *dpd* extends DPD particle properties with internal
temperature (dpdTheta), internal conductive energy (uCond), internal
mechanical energy (uMech), and internal chemical energy (uChem).
The *edpd* style is for energy-conserving dissipative particle
dynamics (eDPD) particles which store a temperature (edpd_temp), and
heat capacity (edpd_cv).
For the *electron* style, the particles representing electrons are 3d
Gaussians with a specified position and bandwidth or uncertainty in
position, which is represented by the eradius = electron size.
For the *ellipsoid* style, particles can be ellipsoids which each
stores a shape vector with the 3 diameters of the ellipsoid and a
quaternion 4-vector with its orientation. Each particle stores a flag
in the ellipsoid vector which indicates whether it is an ellipsoid (1)
or a point particle (0).
For the *line* style, particles can be are idealized line segments
which store a per-particle mass and length and orientation (i.e. the
end points of the line segment). Each particle stores a flag in the
line vector which indicates whether it is a line segment (1) or a
point particle (0).
The *mdpd* style is for many-body dissipative particle dynamics (mDPD)
particles which store a density (rho) for considering density-dependent
many-body interactions.
The *oxdna* style is for coarse-grained nucleotides and stores the
3'-to-5' polarity of the nucleotide strand, which is set through
the bond topology in the data file. The first (second) atom in a
bond definition is understood to point towards the 3'-end (5'-end)
of the strand.
For the *peri* style, the particles are spherical and each stores a
per-particle mass and volume.
The *smd* style is for Smooth Particle Mach dynamics. Both fluids and
solids can be modeled. Particles store the mass and volume of an
integration point, a kernel diameter used for calculating the field
variables (e.g. stress and deformation) and a contact radius for
calculating repulsive forces which prevent individual physical bodies
from penetrating each other.
The *sph* style is for smoothed particle hydrodynamics (SPH) particles
which store a density (rho), energy (esph), and heat capacity (cv).
For the *spin* style, a magnetic spin is associated with each atom.
Those spins have a norm (their magnetic moment) and a direction.
The *tdpd* style is for transport dissipative particle dynamics (tDPD)
particles which store a set of chemical concentration. An integer
"cc_species" is required to specify the number of chemical species
involved in a tDPD system.
The *wavepacket* style is similar to the *electron* style, but the
electrons may consist of several Gaussian wave packets, summed up with
coefficients cs= (cs_re,cs_im). Each of the wave packets is treated
as a separate particle in LAMMPS, wave packets belonging to the same
electron must have identical *etag* values.
The *sphere* and *bpm/sphere* styles allow particles to be either point
particles or finite-size particles. If the *radius* attribute is >
0.0, the particle is a finite-size sphere. If the diameter = 0.0, it
is a point particle. Note that by using the *disc* keyword with the
:doc:`fix nve/sphere <fix_nve_sphere>`, :doc:`fix nvt/sphere
<fix_nvt_sphere>`, :doc:`fix nph/sphere <fix_nph_sphere>`, :doc:`fix
npt/sphere <fix_npt_sphere>` commands for the *sphere* style, spheres
can be effectively treated as 2d discs for a 2d simulation if desired.
See also the :doc:`set density/disc <set>` command. These styles also
take an optional 0 or 1 argument. A value of 0 means the radius of
each sphere is constant for the duration of the simulation (this is
the default). A value of 1 means the radii may vary dynamically
during the simulation, e.g. due to use of the :doc:`fix adapt
<fix_adapt>` command.
The *template* style allows molecular topology (bonds,angles,etc) to be
defined via a molecule template using the :doc:`molecule <molecule>`
command. The template stores one or more molecules with a single copy
of the topology info (bonds,angles,etc) of each. Individual atoms only
store a template index and template atom to identify which molecule and
which atom-within-the-molecule they represent. Using the *template*
style instead of the *bond*, *angle*, *molecular* styles can save memory
for systems comprised of a large number of small molecules, all of a
single type (or small number of types). See the paper by Grime and
Voth, in :ref:`(Grime) <Grime>`, for examples of how this can be
advantageous for large-scale coarse-grained systems. The
``examples/template`` directory has a few demo inputs and examples
showing the use of the *template* atom style versus *molecular*.
.. note::
When using the *template* style with a :doc:`molecule template
<molecule>` that contains multiple molecules, you should ensure the
atom types, bond types, angle_types, etc in all the molecules are
consistent. E.g. if one molecule represents H2O and another CO2,
then you probably do not want each molecule file to define 2 atom
types and a single bond type, because they will conflict with each
other when a mixture system of H2O and CO2 molecules is defined,
e.g. by the :doc:`read_data <read_data>` command. Rather the H2O
molecule should define atom types 1 and 2, and bond type 1. And
the CO2 molecule should define atom types 3 and 4 (or atom types 3
and 2 if a single oxygen type is desired), and bond type 2.
For the *tri* style, particles can be planar triangles which each
stores a per-particle mass and size and orientation (i.e. the corner
points of the triangle). Each particle stores a flag in the tri
vector which indicates whether it is a triangle (1) or a point
particle (0).
----------
Typically, simulations require only a single (non-hybrid) atom style.
@ -326,11 +441,12 @@ dipole". When a hybrid style is used, atoms store and communicate the
union of all quantities implied by the individual styles.
When using the *hybrid* style, you cannot combine the *template* style
with another molecular style that stores bond,angle,etc info on a
with another molecular style that stores bond, angle, etc info on a
per-atom basis.
LAMMPS can be extended with new atom styles as well as new body
styles; see the :doc:`Modify <Modify>` doc page.
LAMMPS can be extended with new atom styles as well as new body styles;
see the corresponding manual page on :doc:`modifying & extending LAMMPS
<Modify_atom>`.
----------
@ -346,54 +462,20 @@ This command cannot be used after the simulation box is defined by a
Many of the styles listed above are only enabled if LAMMPS was built
with a specific package, as listed below. See the :doc:`Build package
<Build_package>` page for more info.
The *amoeba* style is part of the AMOEBA package.
The *angle*, *bond*, *full*, *molecular*, and *template* styles are
part of the MOLECULE package.
The *line* and *tri* styles are part of the ASPHERE package.
The *body* style is part of the BODY package.
The *dipole* style is part of the DIPOLE package.
The *peri* style is part of the PERI package for Peridynamics.
The *oxdna* style is part of the CG-DNA package for coarse-grained
simulation of DNA and RNA.
The *electron* style is part of the EFF package for :doc:`electronic
force fields <pair_eff>`.
The *dpd* style is part of the DPD-REACT package for dissipative
particle dynamics (DPD).
The *edpd*, *mdpd*, and *tdpd* styles are part of the DPD-MESO package
for energy-conserving dissipative particle dynamics (eDPD), many-body
dissipative particle dynamics (mDPD), and transport dissipative particle
dynamics (tDPD), respectively.
The *sph* style is part of the SPH package for smoothed particle
hydrodynamics (SPH). See `this PDF guide
<PDF/SPH_LAMMPS_userguide.pdf>`_ to using SPH in LAMMPS.
The *spin* style is part of the SPIN package.
The *wavepacket* style is part of the AWPMD package for the
:doc:`antisymmetrized wave packet MD method <pair_awpmd>`.
<Build_package>` page for more info. The table above lists which package
is required for individual atom styles.
Related commands
""""""""""""""""
:doc:`read_data <read_data>`, :doc:`pair_style <pair_style>`
:doc:`read_data <read_data>`, :doc:`pair_style <pair_style>`,
:doc:`fix property/atom <fix_property_atom>`, :doc:`set <set>`
Default
"""""""
The default atom style is atomic. If atom_style sphere is used its
default argument is 0.
The default atom style is *atomic*. If atom_style *sphere* or
*bpm/sphere* is used, its default argument is 0.
----------

View File

@ -147,8 +147,8 @@ By default, pair forces are not calculated between bonded particles.
Pair forces can alternatively be overlaid on top of bond forces by setting
the *overlay/pair* keyword to *yes*. These settings require specific
:doc:`special_bonds <special_bonds>` settings described in the
restrictions. Further details can be found in the :doc:`how to
<Howto_bpm>` page on BPMs.
restrictions. Further details can be found in the :doc:`how to <Howto_bpm>`
page on BPMs.
.. versionadded:: 28Mar2023

View File

@ -113,8 +113,8 @@ By default, pair forces are not calculated between bonded particles.
Pair forces can alternatively be overlaid on top of bond forces by setting
the *overlay/pair* keyword to *yes*. These settings require specific
:doc:`special_bonds <special_bonds>` settings described in the
restrictions. Further details can be found in the :doc:`how to
<Howto_bpm>` page on BPMs.
restrictions. Further details can be found in the :doc:`how to <Howto_bpm>`
page on BPMs.
.. versionadded:: 28Mar2023

View File

@ -11,7 +11,16 @@ Syntax
.. code-block:: LAMMPS
bond_style lepton
bond_style style args
* style = *lepton*
* args = optional arguments
.. parsed-literal::
args = *auto_offset* or *no_offset*
*auto_offset* = offset the potential energy so that the value at r0 is 0.0 (default)
*no_offset* = do not offset the potential energy
Examples
""""""""
@ -19,6 +28,7 @@ Examples
.. code-block:: LAMMPS
bond_style lepton
bond_style lepton no_offset
bond_coeff 1 1.5 "k*r^2; k=250.0"
bond_coeff 2 1.1 "k2*r^2 + k3*r^3 + k4*r^4; k2=300.0; k3=-100.0; k4=50.0"
@ -40,6 +50,13 @@ constant *K* of 200.0 energy units:
U_{bond,i} = K (r_i - r_0)^2 = K r^2 \qquad r = r_i - r_0
.. versionchanged:: 7Feb2024
By default the potential energy U is shifted so that he value U is 0.0
for $r = r_0$. This is equivalent to using the optional keyword
*auto_offset*. When using the keyword *no_offset* instead, the
potential energy is not shifted.
The `Lepton library <https://simtk.org/projects/lepton>`_, that the
*lepton* bond style interfaces with, evaluates this expression string at
run time to compute the pairwise energy. It also creates an analytical

View File

@ -264,6 +264,7 @@ The individual style names on the :doc:`Commands compute <Commands_compute>` pag
* :doc:`nbond/atom <compute_nbond_atom>` - calculates number of bonds per atom
* :doc:`omega/chunk <compute_omega_chunk>` - angular velocity for each chunk
* :doc:`orientorder/atom <compute_orientorder_atom>` - Steinhardt bond orientational order parameters Ql
* :doc:`pace <compute_pace>` - atomic cluster expansion descriptors and related quantities
* :doc:`pair <compute_pair>` - values computed by a pair style
* :doc:`pair/local <compute_pair_local>` - distance/energy/force of each pairwise interaction
* :doc:`pe <compute_pe>` - potential energy
@ -279,12 +280,15 @@ The individual style names on the :doc:`Commands compute <Commands_compute>` pag
* :doc:`property/grid <compute_property_grid>` - convert per-grid attributes to per-grid vectors/arrays
* :doc:`property/local <compute_property_local>` - convert local attributes to local vectors/arrays
* :doc:`ptm/atom <compute_ptm_atom>` - determines the local lattice structure based on the Polyhedral Template Matching method
* :doc:`rattlers/atom <compute_rattlers_atom>` - identify under-coordinated rattler atoms
* :doc:`rdf <compute_rdf>` - radial distribution function :math:`g(r)` histogram of group of atoms
* :doc:`reaxff/atom <compute_reaxff_atom>` - extract ReaxFF bond information
* :doc:`reduce <compute_reduce>` - combine per-atom quantities into a single global value
* :doc:`reduce/chunk <compute_reduce_chunk>` - reduce per-atom quantities within each chunk
* :doc:`reduce/region <compute_reduce>` - same as compute reduce, within a region
* :doc:`rigid/local <compute_rigid_local>` - extract rigid body attributes
* :doc:`saed <compute_saed>` - electron diffraction intensity on a mesh of reciprocal lattice nodes
* :doc:`slcsa/atom <compute_slcsa_atom>` - perform Supervised Learning Crystal Structure Analysis (SL-CSA)
* :doc:`slice <compute_slice>` - extract values from global vector or array
* :doc:`smd/contact/radius <compute_smd_contact_radius>` - contact radius for Smooth Mach Dynamics
* :doc:`smd/damage <compute_smd_damage>` - damage status of SPH particles in Smooth Mach Dynamics

View File

@ -36,6 +36,9 @@ sum of the radii of the two particles.
The value of the contact number will be 0.0 for atoms not in the
specified compute group.
The optional *group2-ID* argument allows to specify from which group atoms
contribute to the coordination number. Default setting is group 'all'.
Output info
"""""""""""
@ -47,9 +50,6 @@ overview of LAMMPS output options.
The per-atom vector values will be a number :math:`\ge 0.0`, as explained
above.
The optional *group2-ID* argument allows to specify from which group atoms
contribute to the coordination number. Default setting is group 'all.'
Restrictions
""""""""""""
@ -69,6 +69,3 @@ Default
"""""""
*group2-ID* = all
none

253
doc/src/compute_pace.rst Normal file
View File

@ -0,0 +1,253 @@
.. index:: compute pace
compute pace command
========================
Syntax
""""""
.. code-block:: LAMMPS
compute ID group-ID pace ace_potential_filename ... keyword values ...
* ID, group-ID are documented in :doc:`compute <compute>` command
* pace = style name of this compute command
* ace_potential_filename = file name (in the .yace or .ace format from :doc:`pace pair_style <pair_pace>`) including ACE hyper-parameters, bonds, and generalized coupling coefficients
* keyword = *bikflag* or *dgradflag*
.. parsed-literal::
*bikflag* value = *0* or *1*
*0* = descriptors are summed over atoms of each type
*1* = descriptors are listed separately for each atom
*dgradflag* value = *0* or *1*
*0* = descriptor gradients are summed over atoms of each type
*1* = descriptor gradients are listed separately for each atom pair
Examples
""""""""
.. code-block:: LAMMPS
compute pace all pace coupling_coefficients.yace
compute pace all pace coupling_coefficients.yace 0 1
compute pace all pace coupling_coefficients.yace 1 1
Description
"""""""""""
.. versionadded:: 7Feb2024
This compute calculates a set of quantities related to the atomic
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) <Drautz19>`. These descriptors are used in the
:doc:`pace pair_style <pair_pace>`. Quantities obtained from `compute
pace` are related to those used in :doc:`pace pair_style <pair_pace>` to
evaluate atomic energies, forces, and stresses for linear ACE models.
For example, the energy for a linear ACE model is calculated as:
:math:`E=\sum_i^{N\_atoms} \sum_{\boldsymbol{\nu}} c_{\boldsymbol{\nu}}
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) <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 <pair_pace>`, 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) <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.
:math:`c_{\boldsymbol{\nu}} B_{i,\boldsymbol{\nu}}= \sum_{\boldsymbol{\nu}' \in \boldsymbol{\nu} } \big[ c_{\boldsymbol{\nu}} C(\boldsymbol{\nu}') \big] A_{i,\boldsymbol{\nu}'}`
where the bracketed terms on the right-hand side are the combined functions
with linear model parameters typically provided in the `<name>.yace` potential
file for `pace pair_style`. When these bracketed terms are multiplied by the
products of the atomic base from :ref:`(Drautz) <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
Clebsch-Gordan or generalized Wigner symbols. It may be desirable to reverse the
combination of these descriptors and the linear model parameters so that the
ACE descriptors themselves may be used. The ACE descriptors and their gradients
are often used when training ACE models, performing custom data analysis,
generalizing ACE model forms, and other tasks that involve direct computation of
descriptors. The key utility of `compute pace` is that it can compute the ACE
descriptors and gradients so that these tasks can be performed during a LAMMPS
simulation or so that LAMMPS can be used as a driver for tasks like ACE model
parameterization. To see how this command can be used within a Python workflow
to train ACE potentials, see the examples in
`FitSNAP <https://github.com/FitSNAP/FitSNAP>`_. Examples on using outputs from
this compute to construct general ACE potential forms are demonstrated in
:ref:`(Goff) <Goff23>`. The various keywords and inputs to `compute pace`
determine what ACE descriptors and related quantities are returned in a compute
array.
The coefficient file, `<name>.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) <Drautz19>`. These may
be modeled after the potential files in :doc:`pace pair_style <pair_pace>`,
and have the same format. Details on how to generate the coefficient files
to train ACE models may be found in `FitSNAP <https://github.com/FitSNAP/FitSNAP>`_.
The keyword *bikflag* determines whether or not to list the descriptors of
each atom separately, or sum them together and list in a single row. If
*bikflag* is set to *0* then a single descriptor row is used, which contains
the per-atom ACE descriptors :math:`B_{i,\boldsymbol{\nu}}` summed over all
atoms *i* to produce :math:`B_{\boldsymbol{\nu}}`. If *bikflag* is set to
*1* this is replaced by a separate per-atom ACE descriptor row for each atom.
In this case, the entries in the final column for these rows are set to zero.
The keyword *dgradflag* determines whether to sum atom gradients or list
them separately. If *dgradflag* is set to 0, the ACE
descriptor gradients w.r.t. atom *j* are summed over all atoms *i'*
of, which may be useful when training linear ACE models on atomic forces.
If *dgradflag* is set to 1, gradients are listed separately for each pair of atoms.
Each row corresponds
to a single term :math:`\frac{\partial {B_{i,\boldsymbol{\nu}}}}{\partial {r}^a_j}`
where :math:`{r}^a_j` is the *a-th* position coordinate of the atom with global
index *j*. This also changes the number of columns to be equal to the number of
ACE descriptors, with 3 additional columns representing the indices :math:`i`,
:math:`j`, and :math:`a`, as explained more in the Output info section below.
The option *dgradflag=1* requires that *bikflag=1*.
.. note::
It is noted here that in contrast to :doc:`pace pair_style <pair_pace>`,
the *.yace* file for `compute pace` typically should not contain linear
parameters for an ACE potential. If :math:`c_{\nu}` are included,
the value of the descriptor will not be returned in the `compute` array,
but instead, the energy contribution from that descriptor will be returned.
Do not do this unless it is the desired behavior.
*In short, you should not plug in a '.yace' for a pace potential into this
compute to evaluate descriptors.*
.. note::
*Generalized Clebsch-Gordan or Generalized Wigner symbols (with appropriate
factors) must be used to evaluate ACE descriptors with this compute.* There
are multiple ways to define the generalized coupling coefficients. Because
of this, this compute will not revert your potential file to a coupling
coefficient file. Instead this compute allows the user to supply coupling
coefficients that follow any convention.
.. note::
Using *dgradflag* = 1 produces a global array with :math:`N + 3N^2 + 1` rows
which becomes expensive for systems with more than 1000 atoms.
.. note::
If you have a bonded system, then the settings of :doc:`special_bonds
<special_bonds>` command can remove pairwise interactions between
atoms in the same bond, angle, or dihedral. This is the default
setting for the :doc:`special_bonds <special_bonds>` command, and
means those pairwise interactions do not appear in the neighbor list.
Because this fix uses the neighbor list, it also means those pairs
will not be included in the calculation. One way to get around this,
is to write a dump file, and use the :doc:`rerun <rerun>` command to
compute the ACE descriptors for snapshots in the dump file.
The rerun script can use a :doc:`special_bonds <special_bonds>`
command that includes all pairs in the neighbor list.
----------
Output info
"""""""""""
Compute *pace* evaluates a global array. The columns are arranged into
*ntypes* blocks, listed in order of atom type *I*\ . Each block contains
one column for each ACE descriptor, the same as for compute
*sna/atom*\ in :doc:`compute snap <compute_sna_atom>`. A final column contains the corresponding energy, force
component on an atom, or virial stress component. The rows of the array
appear in the following order:
* 1 row: *pace* average descriptor values for all atoms of type *I*
* 3\*\ *n* force rows: quantities, with derivatives w.r.t. x, y, and z coordinate of atom *i* appearing in consecutive rows. The atoms are sorted based on atom ID and run up to the total number of atoms, *n*.
* 6 rows: *virial* quantities summed for all atoms of type *I*
For example, if :math:`\# \; B_{i, \boldsymbol{\nu}}` =30 and ntypes=1, the number of columns in the
The number of columns in the global array generated by *pace* are 31, and
931, respectively, while the number of rows is 1+3\*\ *n*\ +6, where *n*
is the total number of atoms.
If the *bik* keyword is set to 1, the structure of the pace array is expanded.
The first :math:`N` rows of the pace array
correspond to :math:`\# \; B_{i,\boldsymbol{\nu}}` instead of a single row summed over atoms :math:`i`.
In this case, the entries in the final column for these rows
are set to zero. Also, each row contains only non-zero entries for the
columns corresponding to the type of that atom. This is not true in the case
of *dgradflag* keyword = 1 (see below).
If the *dgradflag* keyword is set to 1, this changes the structure of the
global array completely.
Here the per-atom quantities are replaced with rows corresponding to
descriptor gradient components on single atoms:
.. math::
\frac{\partial {B_{i,\boldsymbol{\nu}} }}{\partial {r}^a_j}
where :math:`{r}^a_j` is the *a-th* position coordinate of the atom with global
index *j*. The rows are
organized in chunks, where each chunk corresponds to an atom with global index
:math:`j`. The rows in an atom :math:`j` chunk correspond to
atoms with global index :math:`i`. The total number of rows for
these descriptor gradients is therefore :math:`3N^2`.
The number of columns is equal to the number of ACE descriptors,
plus 3 additional left-most columns representing the global atom indices
:math:`i`, :math:`j`,
and Cartesian direction :math:`a` (0, 1, 2, for x, y, z).
The first 3 columns of the first :math:`N` rows belong to the reference
potential force components. The remaining K columns contain the
:math:`B_{i,\boldsymbol{\nu}}` per-atom descriptors corresponding to the non-zero entries
obtained when *bikflag* = 1.
The first column of the last row, after the first
:math:`N + 3N^2` rows, contains the reference potential
energy. The virial components are not used with this option. The total number of
rows is therefore :math:`N + 3N^2 + 1` and the number of columns is :math:`K + 3`.
These values can be accessed by any command that uses global values
from a compute as input. See the :doc:`Howto output <Howto_output>` doc
page for an overview of LAMMPS output options.
Restrictions
""""""""""""
These computes are part of the ML-PACE package. They are only enabled
if LAMMPS was built with that package. See the :doc:`Build package
<Build_package>` page for more info.
Related commands
""""""""""""""""
:doc:`pair_style pace <pair_pace>`
:doc:`pair_style snap <pair_snap>`
:doc:`compute snap <compute_sna_atom>`
Default
"""""""
The optional keyword defaults are *bikflag* = 0,
*dgradflag* = 0
----------
.. _Drautz19:
**(Drautz)** 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).
.. _Goff23:
**(Goff)** Goff, Zhang, Negre, Rohskopf, Niklasson, Journal of Chemical Theory and Computation 19, no. 13 (2023).

View File

@ -128,9 +128,9 @@ Attributes *i_name*, *d_name*, *i2_name*, *d2_name* refer to custom
per-atom integer and floating-point vectors or arrays that have been
added via the :doc:`fix property/atom <fix_property_atom>` command.
When that command is used specific names are given to each attribute
which are the "name" portion of these attributes. For arrays *i2_name*
and *d2_name*, the column of the array must also be included following
the name in brackets (e.g., d2_xyz[2] or i2_mySpin[3]).
which are the "name" portion of these attributes. For arrays
*i2_name* and *d2_name*, the column of the array must also be included
following the name in brackets (e.g., d2_xyz[2] or i2_mySpin[3]).
The additional quantities only accessible via this command, and not
directly via the :doc:`dump custom <dump>` command, are as follows.

View File

@ -0,0 +1,92 @@
.. index:: compute rattlers/atom
compute rattlers/atom command
=============================
Syntax
""""""
.. parsed-literal::
compute ID group-ID rattlers/atom cutoff zmin ntries
* ID, group-ID are documented in :doc:`compute <compute>` command
* rattlers/atom = style name of this compute command
* cutoff = *type* or *radius*
.. parsed-literal::
*type* = cutoffs determined based on atom types
*radius* = cutoffs determined based on atom diameters (atom style sphere)
* zmin = minimum coordination for a non-rattler atom
* ntries = maximum number of iterations to remove rattlers
Examples
""""""""
.. code-block:: LAMMPS
compute 1 all rattlers/atom type 4 10
Description
"""""""""""
.. versionadded:: 7Feb2024
Define a compute that identifies rattlers in a system. Rattlers are often
identified in granular or glassy packings as under-coordinated atoms that
do not have the required number of contacts to constrain their translational
degrees of freedom. Such atoms are not considered rigid and can often freely
rattle around in the system. This compute identifies rattlers which can be
helpful for excluding them from analysis or providing extra damping forces
to accelerate relaxation processes.
Rattlers are identified using an interactive approach. The coordination
number of all atoms is first calculated. The *type* and *radius* settings
are used to select whether interaction cutoffs are determined by atom
types or by the sum of atomic radii (atom style sphere), respectively.
Rattlers are then identified as atoms with a coordination number less
than *zmin* and are removed from consideration. Atomic coordination
numbers are then recalculated, excluding previously identified rattlers,
to identify a new set of rattlers. This process is iterated up to a maximum
of *ntries* or until no new rattlers are identified and the remaining
atoms form a stable network of contacts.
In dense homogeneous systems where the average atom coordination number
is expected to be larger than *zmin*, this process usually only takes a few
iterations and a value of *ntries* around ten may be sufficient. In systems
with significant heterogeneity or average coordination numbers less than
*zmin*, an appropriate value of *ntries* depends heavily on the specific
system. For instance, a linear chain of N rattler atoms with a *zmin* of 2
would take N/2 iterations to identify that all the atoms are rattlers.
Output info
"""""""""""
This compute calculates a per-atom vector and a global scalar. The vector
designates which atoms are rattlers, indicated by a value 1. Non-rattlers
have a value of 0. The global scalar returns the total number of rattlers
in the system. See the :doc:`Howto output <Howto_output>` page for an
overview of LAMMPS output options.
Restrictions
""""""""""""
This compute is part of the EXTRA-COMPUTE package. It is only enabled if
LAMMPS was built with that package. See the
:doc:`Build package <Build_package>` page for more info.
The *radius* cutoff option requires that atoms store a radius as defined by the
:doc:`atom_style sphere <atom_style>` or similar commands.
Related commands
""""""""""""""""
:doc:`compute coord/atom <compute_coord_atom>`
:doc:`compute contact/atom <compute_contact_atom>`
Default
"""""""
none

View File

@ -0,0 +1,97 @@
.. index:: compute reaxff/atom
.. index:: compute reaxff/atom/kk
compute reaxff/atom command
===========================
Accelerator Variants: *reaxff/atom/kk*
Syntax
""""""
.. code-block:: LAMMPS
compute ID group-ID reaxff/atom attribute args ... keyword value ...
* ID, group-ID are documented in :doc:`compute <compute>` command
* reaxff/atom = name of this compute command
* attribute = *pair*
.. parsed-literal::
*pair* args = nsub
nsub = *n*-instance of a sub-style, if a pair style is used multiple times in a hybrid style
* keyword = *bonds*
.. parsed-literal::
*bonds* value = *no* or *yes*
*no* = ignore list of local bonds
*yes* = include list of local bonds
Examples
""""""""
.. code-block:: LAMMPS
compute 1 all reaxff/atom bonds yes
Description
"""""""""""
.. versionadded:: 7Feb2024
Define a computation that extracts bond information computed by the ReaxFF
potential specified by :doc:`pair_style reaxff <pair_reaxff>`.
By default, it produces per-atom data that includes the following columns:
* abo = atom bond order (sum of all bonds)
* nlp = number of lone pairs
* nb = number of bonds
Bonds will only be included if its atoms are in the group.
In addition, if ``bonds`` is set to ``yes``, the compute will also produce a
local array of all bonds on the current processor whose atoms are in the group.
The columns of each entry of this local array are:
* id_i = atom i id of bond
* id_j = atom j id of bond
* bo = bond order of bond
Output info
"""""""""""
This compute calculates a per-atom array and local array depending on the
number of keywords. The number of rows in the local array is the number of
bonds as described above. Both per-atom and local array have 3 columns.
The arrays can be accessed by any command that uses local and per-atom values
from a compute as input. See the :doc:`Howto output <Howto_output>` page for
an overview of LAMMPS output options.
----------
.. include:: accel_styles.rst
----------
Restrictions
""""""""""""
The compute reaxff/atom command requires that the :doc:`pair_style reaxff
<pair_reaxff>` is invoked. This fix is part of the REAXFF package. It is only
enabled if LAMMPS was built with that package. See the :doc:`Build package
<Build_package>` page for more info.
Related commands
""""""""""""""""
:doc:`pair_style reaxff <pair_reaxff>`
Default
"""""""
The option defaults are *bonds* = *no*.

View File

@ -68,7 +68,7 @@ reciprocal lattice nodes. The mesh spacing is defined either (a) by
the entire simulation domain or (b) manually using selected values as
shown in the 2D diagram below.
.. image:: img/saed_mesh.jpg
.. image:: img/saed_mesh.png
:scale: 75%
:align: center

View File

@ -0,0 +1,162 @@
.. index:: compute slcsa/atom
compute slcsa/atom command
============================
Syntax
""""""
.. code-block:: LAMMPS
compute ID group-ID slcsa/atom twojmax nclasses db_mean_descriptor_file lda_file lr_decision_file lr_bias_file maha_file value
* ID, group-ID are documented in :doc:`compute <compute>` command
* slcsa/atom = style name of this compute command
* twojmax = band limit for bispectrum components (non-negative integer)
* nclasses = number of crystal structures used in the database for the classifier SL-CSA
* db_mean_descriptor_file = file name of file containing the database mean descriptor
* lda_file = file name of file containing the linear discriminant analysis matrix for dimension reduction
* lr_decision_file = file name of file containing the scaling matrix for logistic regression classification
* lr_bias_file = file name of file containing the bias vector for logistic regression classification
* maha_file = file name of file containing for each crystal structure: the Mahalanobis distance threshold for sanity check purposes, the average reduced descriptor and the inverse of the corresponding covariance matrix
* c_ID[*] = compute ID of previously required *compute sna/atom* command
Examples
""""""""
.. code-block:: LAMMPS
compute b1 all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.3
compute b2 all slcsa/atom 8 4 mean_descriptors.dat lda_scalings.dat lr_decision.dat lr_bias.dat maha_thresholds.dat c_b1[*]
Description
"""""""""""
.. versionadded:: 7Feb2024
Define a computation that performs the Supervised Learning Crystal
Structure Analysis (SL-CSA) from :ref:`(Lafourcade) <Lafourcade2023_1>`
for each atom in the group. The SL-CSA tool takes as an input a per-atom
descriptor (bispectrum) that is computed through the *compute sna/atom*
command and then proceeds to a dimension reduction step followed by a
logistic regression in order to assign a probable crystal structure to
each atom in the group. The SL-CSA tool is pre-trained on a database
containing :math:`C` distinct crystal structures from which a crystal
structure classifier is derived and a tutorial to build such a tool is
available at `SL-CSA <https://github.com/lafourcadep/SL-CSA>`_.
The first step of the SL-CSA tool consists in performing a dimension
reduction of the per-atom descriptor :math:`\mathbf{B}^i \in
\mathbb{R}^{D}` through the Linear Discriminant Analysis (LDA) method,
leading to a new projected descriptor
:math:`\mathbf{x}^i=\mathrm{P}_\mathrm{LDA}(\mathbf{B}^i):\mathbb{R}^D
\rightarrow \mathbb{R}^{d=C-1}`:
.. math::
\mathbf{x}^i = \mathbf{C}^T_\mathrm{LDA} \cdot (\mathbf{B}^i - \mu^\mathbf{B}_\mathrm{db})
where :math:`\mathbf{C}^T_\mathrm{LDA} \in \mathbb{R}^{D \times d}` is
the reduction coefficients matrix of the LDA model read in file
*lda_file*, :math:`\mathbf{B}^i \in \mathbb{R}^{D}` is the bispectrum of
atom :math:`i` and :math:`\mu^\mathbf{B}_\mathrm{db} \in \mathbb{R}^{D}`
is the average descriptor of the entire database. The latter is computed
from the average descriptors of each crystal structure read from the
file *mean_descriptors_file*.
The new projected descriptor with dimension :math:`d=C-1` allows for a
good separation of different crystal structures fingerprints in the
latent space.
Once the dimension reduction step is performed by means of LDA, the new
descriptor :math:`\mathbf{x}^i \in \mathbb{R}^{d=C-1}` is taken as an
input for performing a multinomial logistic regression (LR) which
provides a score vector
:math:`\mathbf{s}^i=\mathrm{P}_\mathrm{LR}(\mathbf{x}^i):\mathbb{R}^d
\rightarrow \mathbb{R}^C` defined as:
.. math::
\mathbf{s}^i = \mathbf{b}_\mathrm{LR} + \mathbf{D}_\mathrm{LR} \cdot {\mathbf{x}^i}^T
with :math:`\mathbf{b}_\mathrm{LR} \in \mathbb{R}^C` and
:math:`\mathbf{D}_\mathrm{LR} \in \mathbb{R}^{C \times d}` the bias
vector and decision matrix of the LR model after training both read in
files *lr_fil1* and *lr_file2* respectively.
Finally, a probability vector
:math:`\mathbf{p}^i=\mathrm{P}_\mathrm{LR}(\mathbf{x}^i):\mathbb{R}^d
\rightarrow \mathbb{R}^C` is defined as:
.. math::
\mathbf{p}^i = \frac{\mathrm{exp}(\mathbf{s}^i)}{\sum\limits_{j} \mathrm{exp}(s^i_j) }
from which the crystal structure assigned to each atom with descriptor
:math:`\mathbf{B}^i` and projected descriptor :math:`\mathbf{x}^i` is
computed as the *argmax* of the probability vector
:math:`\mathbf{p}^i`. Since the logistic regression step systematically
attributes a crystal structure to each atom, a sanity check is needed to
avoid misclassification. To this end, a per-atom Mahalanobis distance to
each crystal structure *CS* present in the database is computed:
.. math::
d_\mathrm{Mahalanobis}^{i \rightarrow \mathrm{CS}} = \sqrt{(\mathbf{x}^i - \mathbf{\mu}^\mathbf{x}_\mathrm{CS})^\mathrm{T} \cdot \mathbf{\Sigma}^{-1}_\mathrm{CS} \cdot (\mathbf{x}^i - \mathbf{\mu}^\mathbf{x}_\mathrm{CS}) }
where :math:`\mathbf{\mu}^\mathbf{x}_\mathrm{CS} \in \mathbb{R}^{d}` is
the average projected descriptor of crystal structure *CS* in the
database and where :math:`\mathbf{\Sigma}_\mathrm{CS} \in \mathbb{R}^{d
\times d}` is the corresponding covariance matrix. Finally, if the
Mahalanobis distance to crystal structure *CS* for atom *i* is greater
than the pre-determined threshold, no crystal structure is assigned to
atom *i*. The Mahalanobis distance thresholds are read in file
*maha_file* while the covariance matrices are read in file
*covmat_file*.
The `SL-CSA <https://github.com/lafourcadep/SL-CSA>`_ framework provides
an automatic computation of the different matrices and thresholds
required for a proper classification and writes down all the required
files for calling the *compute slcsa/atom* command.
The *compute slcsa/atom* command requires that the :doc:`compute
sna/atom <compute_sna_atom>` command is called before as it takes the
resulting per-atom bispectrum as an input. In addition, it is crucial
that the value *twojmax* is set to the same value of the value *twojmax*
used in the *compute sna/atom* command, as well as that the value
*nclasses* is set to the number of crystal structures used in the
database to train the SL-CSA tool.
Output info
"""""""""""
By default, this compute computes the Mahalanobis distances to the
different crystal structures present in the database in addition to
assigning a crystal structure for each atom as a per-atom vector, which
can be accessed by any command that uses per-atom values from a compute
as input. See the :doc:`Howto output <Howto_output>` page for an
overview of LAMMPS output options.
Restrictions
""""""""""""
This compute is part of the EXTRA-COMPUTE package. It is only enabled
if LAMMPS was built with that package. See the :doc:`Build package
<Build_package>` page for more info.
Related commands
""""""""""""""""
:doc:`compute sna/atom <compute_sna_atom>`
Default
"""""""
none
----------
.. _Lafourcade2023_1:
**(Lafourcade)** Lafourcade, Maillet, Denoual, Duval, Allera, Goryaeva, and Marinica,
`Comp. Mat. Science, 230, 112534 (2023) <https://doi.org/10.1016/j.commatsci.2023.112534>`_

View File

@ -45,7 +45,7 @@ Syntax
* w_1, w_2,... = list of neighbor weights, one for each type
* nx, ny, nz = number of grid points in x, y, and z directions (positive integer)
* zero or more keyword/value pairs may be appended
* keyword = *rmin0* or *switchflag* or *bzeroflag* or *quadraticflag* or *chem* or *bnormflag* or *wselfallflag* or *bikflag* or *switchinnerflag* or *sinner* or *dinner* or *dgradflag*
* keyword = *rmin0* or *switchflag* or *bzeroflag* or *quadraticflag* or *chem* or *bnormflag* or *wselfallflag* or *bikflag* or *switchinnerflag* or *sinner* or *dinner* or *dgradflag* or *nnn* or *wmode* or *delta*
.. parsed-literal::
@ -82,6 +82,16 @@ Syntax
*0* = descriptor gradients are summed over atoms of each type
*1* = descriptor gradients are listed separately for each atom pair
* additional keyword = *nnn* or *wmode* or *delta*
.. parsed-literal::
*nnn* value = number of considered nearest neighbors to compute the bispectrum over a target specific number of neighbors (only implemented for compute sna/atom)
*wmode* value = weight function for finding optimal cutoff to match the target number of neighbors (required if nnn used, only implemented for compute sna/atom)
*0* = heavyside weight function
*1* = hyperbolic tangent weight function
*delta* value = transition interval centered at cutoff distance for hyperbolic tangent weight function (ignored if wmode=0, required if wmode=1, only implemented for compute sna/atom)
Examples
""""""""
@ -94,6 +104,7 @@ Examples
compute snap all snap 1.0 0.99363 6 3.81 3.83 1.0 0.93 chem 2 0 1
compute snap all snap 1.0 0.99363 6 3.81 3.83 1.0 0.93 switchinnerflag 1 sinner 1.35 1.6 dinner 0.25 0.3
compute bgrid all sna/grid/local 200 200 200 1.4 0.95 6 2.0 1.0
compute bnnn all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.2
Description
"""""""""""
@ -433,6 +444,25 @@ requires that *bikflag=1*.
The rerun script can use a :doc:`special_bonds <special_bonds>`
command that includes all pairs in the neighbor list.
The keyword *nnn* allows for the calculation of the bispectrum over a
specific target number of neighbors. This option is only implemented for
the compute *sna/atom*\ . An optimal cutoff radius for defining the
neighborhood of the central atom is calculated by means of a dichotomy
algorithm. This iterative process allows to assign weights to
neighboring atoms in order to match the total sum of weights with the
target number of neighbors. Depending on the radial weight function
used in that process, the cutoff radius can fluctuate a lot in the
presence of thermal noise. Therefore, in addition to the *nnn* keyword,
the keyword *wmode* allows to choose whether a Heaviside (*wmode* = 0)
function or a Hyperbolic tangent function (*wmode* = 1) should be used.
If the Heaviside function is used, the cutoff radius exactly matches the
distance between the central atom an its *nnn*'th neighbor. However, in
the case of the hyperbolic tangent function, the dichotomy algorithm
allows to span the weights over a distance *delta* in order to reduce
fluctuations in the resulting local atomic environment fingerprint. The
detailed formalism is given in the paper by Lafourcade et
al. :ref:`(Lafourcade) <Lafourcade2023_2>`.
----------
Output info
@ -585,6 +615,7 @@ Related commands
""""""""""""""""
:doc:`pair_style snap <pair_snap>`
:doc:`compute slcsa/atom <compute_slcsa_atom>`
Default
"""""""
@ -592,6 +623,7 @@ Default
The optional keyword defaults are *rmin0* = 0,
*switchflag* = 1, *bzeroflag* = 1, *quadraticflag* = 0,
*bnormflag* = 0, *wselfallflag* = 0, *switchinnerflag* = 0,
*nnn* = -1, *wmode* = 0, *delta* = 1.e-3
----------
@ -623,3 +655,8 @@ of Angular Momentum, World Scientific, Singapore (1987).
.. _Ellis2021:
**(Ellis)** Ellis, Fiedler, Popoola, Modine, Stephens, Thompson, Cangi, Rajamanickam, Phys Rev B, 104, 035120, (2021)
.. _Lafourcade2023_2:
**(Lafourcade)** Lafourcade, Maillet, Denoual, Duval, Allera, Goryaeva, and Marinica,
`Comp. Mat. Science, 230, 112534 (2023) <https://doi.org/10.1016/j.commatsci.2023.112534>`_

View File

@ -127,11 +127,11 @@ result in more consistent heat flux values for angle, dihedrals,
improper and constraint force contributions
when computed via :doc:`compute heat/flux <compute_heat_flux>`.
If no extra keywords are listed, the kinetic contribution all of the
virial contribution terms are included in the per-atom stress tensor.
If any extra keywords are listed, only those terms are summed to
compute the tensor. The *virial* keyword means include all terms
except the kinetic energy *ke*\ .
If no extra keywords are listed, the kinetic contribution *and* all
of the virial contribution terms are included in the per-atom stress
tensor. If any extra keywords are listed, only those terms are
summed to compute the tensor. The *virial* keyword means include all
terms except the kinetic energy *ke*\ .
Note that the stress for each atom is due to its interaction with all
other atoms in the simulation, not just with other atoms in the group.

View File

@ -18,7 +18,7 @@ Syntax
* style = *stress/mop* or *stress/mop/profile*
* dir = *x* or *y* or *z* is the direction normal to the plane
* args = argument specific to the compute style
* keywords = *kin* or *conf* or *total* or *pair* or *bond* or *angle* (one or more can be specified)
* keywords = *kin* or *conf* or *total* or *pair* or *bond* or *angle* or *dihedral* (one or more can be specified)
.. parsed-literal::
@ -68,15 +68,13 @@ Verlet algorithm.
.. versionadded:: 15Jun2023
contributions from bond and angle potentials
contributions from bond, angle and dihedral potentials
Between one and six keywords can be used to indicate which contributions
Between one and seven keywords can be used to indicate which contributions
to the stress must be computed: total stress (total), kinetic stress
(kin), configurational stress (conf), stress due to bond stretching
(bond), stress due to angle bending (angle) and/or due to pairwise
non-bonded interactions (pair). The angle keyword is currently
available only for the *stress/mop* command and **not** the
*stress/mop/profile* command.
(bond), stress due to angle bending (angle), stress due to dihedral terms (dihedral)
and/or due to pairwise non-bonded interactions (pair).
NOTE 1: The configurational stress is computed considering all pairs of
atoms where at least one atom belongs to group group-ID.
@ -134,14 +132,9 @@ size does not change in time, and axis-aligned planes.
The method only works with two-body pair interactions, because it
requires the class method ``Pair::single()`` to be implemented, which is
not possible for manybody potentials. In particular, compute
*stress/mop/profile* does not work with more than two-body pair
*stress/mop/profile* and *stress/mop* do not work with more than two-body pair
interactions, long range (kspace) interactions and
angle/dihedral/improper intramolecular interactions. Similarly, compute
*stress/mop* does not work with more than two-body pair interactions,
long range (kspace) interactions and dihedral/improper intramolecular
interactions but works with all bond interactions with the class method
single() implemented and all angle interactions with the class method
born_matrix() implemented.
improper intramolecular interactions.
Related commands
""""""""""""""""

View File

@ -62,28 +62,29 @@ equations:
\frac{\sin(\theta)}{\lambda} &= \frac{\left\lVert\mathbf{k}\right\rVert}{2}
Here, :math:`\mathbf{k}` is the location of the reciprocal lattice node,
:math:`r_j` is the position of each atom, :math:`f_j` are atomic scattering
factors, *Lp* is the Lorentz-polarization factor, and :math:`\theta` is the
scattering angle of diffraction. The Lorentz-polarization factor can be turned
off using the optional *LP* keyword.
:math:`r_j` is the position of each atom, :math:`f_j` are atomic
scattering factors, *Lp* is the Lorentz-polarization factor, and
:math:`\theta` is the scattering angle of diffraction. The
Lorentz-polarization factor can be turned off using the optional *LP*
keyword.
Diffraction intensities are calculated on a three-dimensional mesh of
reciprocal lattice nodes. The mesh spacing is defined either (a) by the entire
simulation domain or (b) manually using selected values as
shown in the 2D diagram below.
reciprocal lattice nodes. The mesh spacing is defined either (a) by the
entire simulation domain or (b) manually using selected values as shown
in the 2D diagram below.
.. image:: img/xrd_mesh.jpg
.. image:: img/xrd_mesh.png
:scale: 75%
:align: center
For a mesh defined by the simulation domain, a rectilinear grid is
constructed with spacing :math:`c A^{-1}` along each reciprocal lattice
axis, where :math:`A` is a matrix containing the vectors corresponding to the
edges of the simulation cell. If one or two directions has non-periodic
boundary conditions, then the spacing in these directions is defined from the
average of the (inversed) box lengths with periodic boundary conditions.
Meshes defined by the simulation domain must contain at least one periodic
boundary.
axis, where :math:`A` is a matrix containing the vectors corresponding
to the edges of the simulation cell. If one or two directions has
non-periodic boundary conditions, then the spacing in these directions
is defined from the average of the (inversed) box lengths with periodic
boundary conditions. Meshes defined by the simulation domain must
contain at least one periodic boundary.
If the *manual* flag is included, the mesh of reciprocal lattice nodes
will be defined using the *c* values for the spacing along each

View File

@ -536,6 +536,11 @@ command.
A rotation vector specified for a single molecule must be in
the z-direction for a 2d model.
For :doc:`molecule templates <molecule>` that are created from multiple
files, i.e. contain multiple molecule *sets*, only the first set is
used. To create multiple molecules the files currently need to be
merged and different molecule IDs assigned with a Molecules section.
Related commands
""""""""""""""""

View File

@ -3,6 +3,7 @@
.. index:: dihedral_style charmm/kk
.. index:: dihedral_style charmm/omp
.. index:: dihedral_style charmmfsw
.. index:: dihedral_style charmmfsw/kk
dihedral_style charmm command
=============================
@ -12,6 +13,8 @@ Accelerator Variants: *charmm/intel*, *charmm/kk*, *charmm/omp*
dihedral_style charmmfsw command
================================
Accelerator Variants: *charmmfsw/kk*
Syntax
""""""
@ -144,7 +147,9 @@ for more info.
Related commands
""""""""""""""""
:doc:`dihedral_coeff <dihedral_coeff>`
:doc:`dihedral_coeff <dihedral_coeff>`,
:doc:`pair_style lj/charmm variants <pair_charmm>`,
:doc:`angle_style charmm <angle_charmm>`, :doc:`fix cmap <fix_cmap>`
Default
"""""""

View File

@ -805,16 +805,16 @@ computes, fixes, or variables when they are evaluated, so this is a very
general means of creating quantities to output to a dump file.
The *i_name*, *d_name*, *i2_name*, *d2_name* attributes refer to
per-atom integer and floating-point vectors or arrays that have been
added via the :doc:`fix property/atom <fix_property_atom>` command.
When that command is used specific names are given to each attribute
which are the "name" portion of these keywords. For arrays *i2_name*
and *d2_name*, the column of the array must also be included following
the name in brackets (e.g., d2_xyz[i], i2_mySpin[i], where :math:`i` is
in the range from 1 to :math:`M`, where :math:`M` is the number of
columns in the custom array). See the discussion above for how :math:`i`
can be specified with a wildcard asterisk to effectively specify
multiple values.
custom per-atom integer and floating-point vectors or arrays that have
been added via the :doc:`fix property/atom <fix_property_atom>`
command. When that command is used specific names are given to each
attribute which are the "name" portion of these keywords. For arrays
*i2_name* and *d2_name*, the column of the array must also be included
following the name in brackets (e.g., d2_xyz[i], i2_mySpin[i], where
:math:`i` is in the range from 1 to :math:`M`, where :math:`M` is the
number of columns in the custom array). See the discussion above for
how :math:`i` can be specified with a wildcard asterisk to effectively
specify multiple values.
See the :doc:`Modify <Modify>` page for information on how to add
new compute and fix styles to LAMMPS to calculate per-atom quantities

View File

@ -287,6 +287,7 @@ accelerated styles exist.
* :doc:`mvv/tdpd <fix_mvv_dpd>` - constant temperature DPD using the modified velocity-Verlet algorithm
* :doc:`neb <fix_neb>` - nudged elastic band (NEB) spring forces
* :doc:`neb/spin <fix_neb_spin>` - nudged elastic band (NEB) spring forces for spins
* :doc:`nonaffine/displacement <fix_nonaffine_displacement>` - calculate nonaffine displacement of atoms
* :doc:`nph <fix_nh>` - constant NPH time integration via Nose/Hoover
* :doc:`nph/asphere <fix_nph_asphere>` - NPH for aspherical particles
* :doc:`nph/body <fix_nph_body>` - NPH for body particles

View File

@ -205,6 +205,8 @@ formulas for the meaning of these parameters:
+------------------------------------------------------------------------------+--------------------------------------------------+-------------+
| :doc:`pace, pace/extrapolation <pair_pace>` | scale | type pairs |
+------------------------------------------------------------------------------+--------------------------------------------------+-------------+
| :doc:`quip <pair_quip>` | scale | type global |
+------------------------------------------------------------------------------+--------------------------------------------------+-------------+
| :doc:`snap <pair_snap>` | scale | type pairs |
+------------------------------------------------------------------------------+--------------------------------------------------+-------------+
| :doc:`spin/dmi <pair_spin_dmi>` | coulombic_cutoff | type global |
@ -219,7 +221,7 @@ formulas for the meaning of these parameters:
+------------------------------------------------------------------------------+--------------------------------------------------+-------------+
| :doc:`table <pair_table>` | table_cutoff | type pairs |
+------------------------------------------------------------------------------+--------------------------------------------------+-------------+
| :doc:`ufm <pair_ufm>` | epsilon,sigma | type pairs |
| :doc:`ufm <pair_ufm>` | epsilon,sigma,scale | type pairs |
+------------------------------------------------------------------------------+--------------------------------------------------+-------------+
| :doc:`wf/cut <pair_wf_cut>` | epsilon,sigma,nu,mu | type pairs |
+------------------------------------------------------------------------------+--------------------------------------------------+-------------+
@ -315,21 +317,21 @@ Currently *bond* does not support bond_style hybrid nor bond_style
hybrid/overlay as bond styles. The bond styles that currently work
with fix_adapt are
+------------------------------------+-------+-----------------+
+------------------------------------+------------+------------+
| :doc:`class2 <bond_class2>` | r0 | type bonds |
+------------------------------------+-------+-----------------+
+------------------------------------+------------+------------+
| :doc:`fene <bond_fene>` | k,r0 | type bonds |
+------------------------------------+-------+-----------------+
+------------------------------------+------------+------------+
| :doc:`fene/nm <bond_fene>` | k,r0 | type bonds |
+------------------------------------+-------+-----------------+
+------------------------------------+------------+------------+
| :doc:`gromos <bond_gromos>` | k,r0 | type bonds |
+------------------------------------+-------+-----------------+
+------------------------------------+------------+------------+
| :doc:`harmonic <bond_harmonic>` | k,r0 | type bonds |
+------------------------------------+-------+-----------------+
+------------------------------------+------------+------------+
| :doc:`morse <bond_morse>` | r0 | type bonds |
+------------------------------------+-------+-----------------+
+------------------------------------+------------+------------+
| :doc:`nonlinear <bond_nonlinear>` | epsilon,r0 | type bonds |
+------------------------------------+-------+-----------------+
+------------------------------------+------------+------------+
----------
@ -353,11 +355,11 @@ Currently *angle* does not support angle_style hybrid nor angle_style
hybrid/overlay as angle styles. The angle styles that currently work
with fix_adapt are
+------------------------------------+-------+-----------------+
| :doc:`harmonic <angle_harmonic>` | k,theta0 | type angles |
+------------------------------------+-------+-----------------+
| :doc:`cosine <angle_cosine>` | k | type angles |
+------------------------------------+-------+-----------------+
+------------------------------------+----------+-------------+
| :doc:`harmonic <angle_harmonic>` | k,theta0 | type angles |
+------------------------------------+----------+-------------+
| :doc:`cosine <angle_cosine>` | k | 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.
@ -482,7 +484,7 @@ Restrictions
Related commands
""""""""""""""""
:doc:`compute ti <compute_ti>`
:doc:`compute ti <compute_ti>`, :doc:`fix adapt/fep <fix_adapt_fep>`
Default
"""""""

View File

@ -123,19 +123,29 @@ styles and their energy formulas for the meaning of these parameters:
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`born <pair_born>` | a,b,c | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`born/gauss <pair_born_gauss>` | biga0,biga1,r0 | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`buck, buck/coul/cut, buck/coul/long, buck/coul/msm <pair_buck>` | a,c | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`buck/mdf <pair_mdf>` | a,c | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`coul/cut <pair_coul>` | scale | type pairs |
| :doc:`coul/cut, coul/cut/global <pair_coul>` | scale | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`coul/cut/soft <pair_fep_soft>` | lambda | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`coul/debye <pair_coul>` | scale | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`coul/long, coul/msm <pair_coul>` | scale | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`coul/long/soft <pair_fep_soft>` | scale, lambda | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`eam <pair_eam>` | scale | type pairs |
| :doc:`coul/slater/long <pair_coul_slater>` | scale | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`coul/streitz <pair_coul>` | scale | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`eam, eam/alloy, eam/fs <pair_eam>` | scale | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`harmonic/cut <pair_harmonic_cut>` | k | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`gauss <pair_gauss>` | a | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
@ -163,6 +173,8 @@ styles and their energy formulas for the meaning of these parameters:
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`lj/sf/dipole/sf <pair_dipole>` | epsilon,sigma,scale | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`meam <pair_meam>` | scale | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`mie/cut <pair_mie>` | epsilon,sigma,gamR,gamA | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`morse, morse/smooth/linear <pair_morse>` | d0,r0,alpha | type pairs |
@ -173,12 +185,16 @@ styles and their energy formulas for the meaning of these parameters:
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`nm/cut/coul/cut, nm/cut/coul/long <pair_nm>` | e0,r0,nn,mm | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`pace, pace/extrapolation <pair_pace>` | scale | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`snap <pair_snap>` | scale | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`soft <pair_soft>` | a | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`ufm <pair_ufm>` | epsilon,sigma,scale | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`wf/cut <pair_wf_cut>` | epsilon,sigma,nu,mu | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
.. note::
@ -307,7 +323,9 @@ the :doc:`run <run>` command. This fix is not invoked during
Restrictions
""""""""""""
none
The keyword "scale yes" is not supported for scaling per-atom parameters
diameter and change. You can use :doc:`fix adapt <fix_adapt>` for those.
Related commands
""""""""""""""""

View File

@ -181,6 +181,12 @@ This fix is part of the MC package. It is only enabled if LAMMPS was
built with that package. See the :doc:`Build package <Build_package>`
doc page for more info.
This fix cannot be used with systems that do not have per-type masses
(e.g. atom style sphere) since the implemented algorithm pre-computes
velocity rescaling factors from per-type masses and ignores any per-atom
masses, if present. In case both, per-type and per-atom masses are
present, a warning is printed.
Related commands
""""""""""""""""

View File

@ -183,4 +183,4 @@ Related commands
Default
"""""""
The option defaults are error = hard, message = yes, and path = ".".
The option defaults are error = soft, message = yes, and path = ".".

View File

@ -109,7 +109,7 @@ Note that in this case the specified *Kspring* is in
force/distance units.
With a value of *ideal*, the spring force is computed as suggested in
ref`(WeinanE) <WeinanE>`
:ref:`(WeinanE) <WeinanE>`
.. math::
@ -120,18 +120,18 @@ and :math:`RD_{ideal}` is the ideal *RD* for which all the images are
equally spaced. I.e. :math:`RD_{ideal} = (i-1) \cdot meanDist` when the
climbing replica is off, where *i* is the replica number). The
*meanDist* is the average distance between replicas. Note that in this
case the specified *Kspring* is in force units. When the climbing replica
is on, :math:`RD_{ideal}` and :math:`meanDist` are calculated separately
each side of the climbing image. Note that the *ideal* form of nudging
can often be more effective at keeping the replicas equally spaced before
climbing, then equally spaced either side of the climbing image whilst
climbing.
case the specified *Kspring* is in force units. When the climbing
replica is on, :math:`RD_{ideal}` and :math:`meanDist` are calculated
separately each side of the climbing image. Note that the *ideal* form
of nudging can often be more effective at keeping the replicas equally
spaced before climbing, then equally spaced either side of the climbing
image whilst climbing.
With a value of *equal* the spring force is computed as for *ideal*
when the climbing replica is off, promoting equidistance. When the climbing
With a value of *equal* the spring force is computed as for *ideal* when
the climbing replica is off, promoting equidistance. When the climbing
replica is on, the spring force is computed to promote equidistant
absolute differences in energy, rather than distance, each side of
the climbing image:
absolute differences in energy, rather than distance, each side of the
climbing image:
.. math::
@ -143,23 +143,22 @@ where *ED* is the cumulative sum of absolute energy differences:
ED = \sum_{i<N} \left|E(R_{i+1}) - E(R_i)\right|,
*meanEdist* is the average absolute energy difference between
replicas up to the climbing image or from the climbing image
to the final image, for images before or after the climbing
image respectively. :math:`ED_{ideal}` is the corresponding
cumulative sum of average absolute energy differences in
each case, in close analogy to *ideal*. This form of nudging
is to aid schemes which integrate forces along, or near to,
NEB pathways such as :doc:`fix_pafi <fix_pafi>`.
*meanEdist* is the average absolute energy difference between replicas
up to the climbing image or from the climbing image to the final image,
for images before or after the climbing image
respectively. :math:`ED_{ideal}` is the corresponding cumulative sum of
average absolute energy differences in each case, in close analogy to
*ideal*. This form of nudging is to aid schemes which integrate forces
along, or near to, NEB pathways such as :doc:`fix_pafi <fix_pafi>`.
----------
The keyword *perp* specifies if and how a perpendicular nudging force
is computed. It adds a spring force perpendicular to the path in
order to prevent the path from becoming too strongly kinked. It can
The keyword *perp* specifies if and how a perpendicular nudging force is
computed. It adds a spring force perpendicular to the path in order to
prevent the path from becoming too strongly kinked. It can
significantly improve the convergence of the NEB calculation when the
resolution is poor. I.e. when few replicas are used; see
:ref:`(Maras) <Maras1>` for details.
resolution is poor. I.e. when few replicas are used; see :ref:`(Maras)
<Maras1>` for details.
The perpendicular spring force is given by
@ -181,10 +180,10 @@ force is added.
By default, no additional forces act on the first and last replicas
during the NEB relaxation, so these replicas simply relax toward their
respective local minima. By using the key word *end*, additional
forces can be applied to the first and/or last replicas, to enable
them to relax toward a MEP while constraining their energy E to the
target energy ETarget.
respective local minima. By using the key word *end*, additional forces
can be applied to the first and/or last replicas, to enable them to
relax toward a MEP while constraining their energy E to the target
energy ETarget.
If :math:`E_{Target} > E`, the interatomic force :math:`F_i` for the
specified replica becomes:
@ -197,33 +196,33 @@ specified replica becomes:
The "spring" constant on the difference in energies is the specified
*Kspring3* value.
When *estyle* is specified as *first*, the force is applied to the
first replica. When *estyle* is specified as *last*, the force is
applied to the last replica. Note that the *end* keyword can be used
twice to add forces to both the first and last replicas.
When *estyle* is specified as *first*, the force is applied to the first
replica. When *estyle* is specified as *last*, the force is applied to
the last replica. Note that the *end* keyword can be used twice to add
forces to both the first and last replicas.
For both these *estyle* settings, the target energy *ETarget* is set
to the initial energy of the replica (at the start of the NEB
calculation).
If the *estyle* is specified as *last/efirst* or *last/efirst/middle*,
force is applied to the last replica, but the target energy *ETarget*
is continuously set to the energy of the first replica, as it evolves
force is applied to the last replica, but the target energy *ETarget* is
continuously set to the energy of the first replica, as it evolves
during the NEB relaxation.
The difference between these two *estyle* options is as follows. When
*estyle* is specified as *last/efirst*, no change is made to the
inter-replica force applied to the intermediate replicas (neither
first or last). If the initial path is too far from the MEP, an
intermediate replica may relax "faster" and reach a lower energy than
the last replica. In this case the intermediate replica will be
relaxing toward its own local minima. This behavior can be prevented
by specifying *estyle* as *last/efirst/middle* which will alter the
inter-replica force applied to intermediate replicas by removing the
contribution of the gradient to the inter-replica force. This will
only be done if a particular intermediate replica has a lower energy
than the first replica. This should effectively prevent the
intermediate replicas from over-relaxing.
inter-replica force applied to the intermediate replicas (neither first
or last). If the initial path is too far from the MEP, an intermediate
replica may relax "faster" and reach a lower energy than the last
replica. In this case the intermediate replica will be relaxing toward
its own local minima. This behavior can be prevented by specifying
*estyle* as *last/efirst/middle* which will alter the inter-replica
force applied to intermediate replicas by removing the contribution of
the gradient to the inter-replica force. This will only be done if a
particular intermediate replica has a lower energy than the first
replica. This should effectively prevent the intermediate replicas from
over-relaxing.
After converging a NEB calculation using an *estyle* of
*last/efirst/middle*, you should check that all intermediate replicas
@ -237,9 +236,10 @@ target energy.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various :doc:`output commands <Howto_output>`.
No information about this fix is written to :doc:`binary restart files
<restart>`. None of the :doc:`fix_modify <fix_modify>` options are
relevant to this fix. No global or per-atom quantities are stored by
this fix for access by various :doc:`output commands <Howto_output>`.
No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command.

View File

@ -23,7 +23,7 @@ Syntax
.. parsed-literal::
keyword = *erate* or *ext* or *strain* or *temp* or *iso* or *x* or *y* or *z* or *tchain* or *pchain* or *tloop* or *ploop* or *mtk*
*erate* values = e_x e_y = engineering strain rates (required)
*erate* values = e_x e_y = true strain rates (required)
*ext* value = *x* or *y* or *z* or *xy* or *yz* or *xz* = external dimensions
sets the external dimensions used to calculate the scalar pressure
*strain* values = e_x e_y = initial strain
@ -62,7 +62,7 @@ performed using the :doc:`fix deform <fix_deform>`, :doc:`fix nvt/sllod
<fix_nvt_sllod>`, and :doc:`compute temp/deform <compute_temp_deform>`
commands.
The applied flow field is set by the *eps* keyword. The values
The applied flow field is set by the *erate* keyword. The values
*edot_x* and *edot_y* correspond to the strain rates in the xx and yy
directions. It is implicitly assumed that the flow field is
traceless, and therefore the strain rate in the zz direction is eqal

View File

@ -0,0 +1,133 @@
.. index:: fix nonaffine/displacement
fix nonaffine/displacement command
==================================
Syntax
""""""
.. parsed-literal::
fix ID group nonaffine/displacement style args reference/style nstep
* ID, group are documented in :doc:`fix <fix>` command
* nonaffine/displacement = style name of this fix command
* nevery = calculate nonaffine displacement every this many timesteps
* style = *d2min* or *integrated*
.. parsed-literal::
*d2min* args = cutoff args
cutoff = *type* or *radius* or *custom*
*type* args = none, cutoffs determined by atom types
*radius* args = none, cutoffs determined based on atom diameters (atom style sphere)
*custom* args = *rmax*, cutoff set by a constant numeric value *rmax* (distance units)
*integrated* args = none
* reference/style = *fixed* or *update* or *offset*
.. parsed-literal::
*fixed* = use a fixed reference frame at *nstep*
*update* = update the reference frame every *nstep* timesteps
*offset* = update the reference frame *nstep* timesteps before calculating the nonaffine displacement
Examples
""""""""
.. code-block:: LAMMPS
fix 1 all nonaffine/displacement 100 integrated update 100
fix 1 all nonaffine/displacement 1000 d2min type fixed 0
fix 1 all nonaffine/displacement 1000 d2min custom 2.0 offset 100
Description
"""""""""""
.. versionadded:: 7Feb2024
This fix computes different metrics of the nonaffine displacement of
particles. The first metric, *d2min* calculates the :math:`D^2_\mathrm{min}`
nonaffine displacement by Falk and Langer in :ref:`(Falk) <d2min-Falk>`.
For each atom, the fix computes the two tensors
.. math::
X = \sum_{\mathrm{neighbors}} \vec{r} \left(\vec{r}_{0} \right)^T
and
.. math::
Y = \sum_{\mathrm{neighbors}} \vec{r}_0 \left(\vec{r}_{0} \right)^T
where the neighbors include all other atoms within the distance criterion
set by the cutoff option, discussed below, :math:`\vec{r}` is the current
displacement between particles, and :math:`\vec{r}_0` is the reference
displacement. A deformation gradient tensor is then calculated as
:math:`F = X Y^{-1}` from which
.. math::
D^2_\mathrm{min} = \sum_{\mathrm{neighbors}} \left| \vec{r} - F \vec{r}_0 \right|^2
and a strain tensor is calculated :math:`E = F F^{T} - I` where :math:`I`
is the identity tensor. This calculation is only performed on timesteps that
are a multiple of *nevery* (including timestep zero). Data accessed before
this occurs will simply be zeroed.
The *integrated* style simply integrates the velocity of particles
every timestep to calculate a displacement. This style only works if
used in conjunction with another fix that deforms the box and displaces
atom positions such as :doc:`fix deform <fix_deform>` with remap x,
:doc:`fix press/berendsen <fix_press_berendsen>`, or :doc:`fix nh <fix_nh>`.
Both of these methods require defining a reference state. With the *fixed* reference
style, the user picks a specific timestep *nstep* at which particle positions are saved.
If peratom data is accessed from this compute prior to this timestep, it will simply be
zeroed. The *update* reference style implies the reference state will be updated every
*nstep* timesteps. The *offset* reference only applies to the *d2min* metric and will
update the reference state *nstep* timesteps before a multiple of *nevery* timesteps.
----------
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
The reference state is saved to :doc:`binary restart files <restart>`.
None of the :doc:`fix_modify <fix_modify>` options are relevant to this
fix.
This fix computes a peratom array with 3 columns, which can be accessed
by indices 1-3 using any command that uses per-atom values from a fix
as input.
For the *integrated* style, the three columns are the nonaffine
displacements in the x, y, and z directions. For the *d2min* style,
the three columns are the calculated :math:`\sqrt{D^2_\mathrm{min}}`, the
volumetric strain, and the deviatoric strain.
Restrictions
""""""""""""
This compute is part of the EXTRA-FIX package. It is only enabled if
LAMMPS was built with that package. See the
:doc:`Build package <Build_package>` page for more info.
Related commands
""""""""""""""""
none
Default
"""""""
none
----------
.. _d2min-Falk:
**(Falk)** Falk and Langer PRE, 57, 7192 (1998).

View File

@ -181,10 +181,10 @@ This fix assumes a crystalline system with periodical lattice. The
temperature of the system should not exceed the melting temperature to
keep the system in its solid state.
This fix is part of the PHONON package. It is only enabled if
LAMMPS was built with that package. See the :doc:`Build package <Build_package>` page for more info.
This fix requires LAMMPS be built with an FFT library. See the :doc:`Build settings <Build_settings>` page for details.
This fix is part of the PHONON package. It is only enabled if LAMMPS
was built with that package. This fix also requires LAMMPS to be built
with 3d-FFT support which is included in the KSPACE package. See the
:doc:`Build package <Build_package>` page for more info.
Related commands
""""""""""""""""

View File

@ -232,8 +232,6 @@ These fixes are part of the QEQ package. They are only enabled if
LAMMPS was built with that package. See the :doc:`Build package
<Build_package>` page for more info.
These qeq fixes are not compatible with the GPU and USER-INTEL packages.
These qeq fixes will ignore electric field contributions from
:doc:`fix efield <fix_efield>`.

View File

@ -80,7 +80,7 @@ Syntax
groupID1, groupID2, ... = list of N group IDs
* zero or more keyword/value pairs may be appended
* keyword = *langevin* or *reinit* or *temp* or *iso* or *aniso* or *x* or *y* or *z* or *couple* or *tparam* or *pchain* or *dilate* or *force* or *torque* or *infile* or *gravity*
* keyword = *langevin* or *reinit* or *temp* or *mol* or *iso* or *aniso* or *x* or *y* or *z* or *couple* or *tparam* or *pchain* or *dilate* or *force* or *torque* or *infile* or *gravity*
.. parsed-literal::
@ -92,6 +92,8 @@ Syntax
*temp* values = Tstart Tstop Tdamp
Tstart,Tstop = desired temperature at start/stop of run (temperature units)
Tdamp = temperature damping parameter (time units)
*mol* value = template-ID
template-ID = ID of molecule template specified in a separate :doc:`molecule <molecule>` command
*iso* or *aniso* values = Pstart Pstop Pdamp
Pstart,Pstop = scalar external pressure at start/end of run (pressure units)
Pdamp = pressure damping parameter (time units)

View File

@ -1,8 +1,11 @@
.. index:: fix temp/berendsen
.. index:: fix temp/berendsen/kk
fix temp/berendsen command
==========================
Accelerator Variants: *temp/berendsen/kk*
Syntax
""""""
@ -118,6 +121,10 @@ remaining thermal degrees of freedom, and the bias is added back in.
----------
.. include:: accel_styles.rst
----------
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

View File

@ -1,8 +1,11 @@
.. index:: fix temp/rescale
.. index:: fix temp/rescale/kk
fix temp/rescale command
========================
Accelerator Variants: *temp/rescale/kk*
Syntax
""""""
@ -125,6 +128,10 @@ remaining thermal degrees of freedom, and the bias is added back in.
----------
.. include:: accel_styles.rst
----------
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

BIN
doc/src/img/saed_mesh.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

BIN
doc/src/img/xrd_mesh.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Some files were not shown because too many files have changed in this diff Show More