Compare commits

...

1134 Commits

Author SHA1 Message Date
34c7e66a09 Test 2024-12-19 08:05:38 -07:00
33894a472c Merge commit 'refs/pull/4401/head' of github.com:lammps/lammps into mala 2024-12-19 08:01:50 -07:00
e55d68d823 Tweaked docs 2024-12-19 08:01:26 -07:00
bff2e64bbc Docs and example updates by Aidan Thompson
I did NOT author this commit, I am only pushing it because for some reason, Github does not permit Aidan to do so

Co-authored-by: Aidan Thompson <athomps@sandia.gov>
2024-12-19 10:06:53 +01:00
b6254f958f Updated the grid examples and reference log files 2024-12-18 14:11:08 -07:00
16e0a7788a Now actually added the correct log 2024-12-13 09:51:07 +01:00
f59f084c37 Added logs for examples 2024-12-10 10:39:57 +01:00
f93dd3273d Added link to PRB paper 2024-12-09 14:08:22 +01:00
80acfeebe7 Added documentation 2024-12-09 14:04:47 +01:00
30d39c8fb3 Fixed formatting issues 2024-12-06 09:37:09 +01:00
2185ffa428 Renamed files to be more consistent with other examples 2024-12-05 16:43:18 +01:00
b146a1d59b Merge remote-tracking branch 'refs/remotes/origin/develop' into mala
# Conflicts:
#	src/KOKKOS/kokkos_type.h
2024-12-05 15:23:21 +01:00
cd16308d71 Merge pull request #4389 from akohlmey/collected-small-changes
Collected small changes and fixes
2024-11-27 14:27:14 -05:00
6102350eed shorten 2024-11-27 12:10:56 -05:00
7c87874f5e improve expanded fix external docs 2024-11-27 01:55:11 -05:00
ef4b070e6f fix typo 2024-11-27 01:45:42 -05:00
3f78ee72c6 get access to the applied external force from the fix 2024-11-24 22:25:38 -05:00
6c333837e0 Merge branch 'develop' into collected-small-changes 2024-11-21 02:57:08 -05:00
43fbdc2d93 Merge pull request #4388 from lichanghao/dump_image_bug_fix
Fixed a indexing bug in dump_image.cpp causing segmentation fault with body style particles
2024-11-21 01:18:02 -05:00
30349d2a48 correct version header 2024-11-20 11:50:13 -05:00
7259082cbc flag development version 2024-11-20 11:17:14 -05:00
4296db4991 add link with more explanation to the illegal variable errors 2024-11-20 11:15:12 -05:00
8ba0d7bece more updates to release process 2024-11-20 10:21:00 -05:00
53b2930ef4 modified dump_image.cpp, line 1100, fixed an indexing bug causing rendering error 2024-11-19 23:50:50 -05:00
e6ed911be2 Merge pull request #4387 from akohlmey/next_release
Step version strings for next release
2024-11-19 14:02:02 -05:00
e200d557ec replace static with const for compatibility with SYCL 2024-11-19 13:16:22 -05:00
c50a8d83d1 New release date 19 November 2024 2024-11-19 02:13:54 -05:00
c926bfd156 start documenting individual steps for a LAMMPS release 2024-11-19 02:05:49 -05:00
2ac0d065a7 step version strings for next release 2024-11-19 02:05:49 -05:00
cf05700897 Merge pull request #4382 from jtclemm/small-patches
Minor clean up to doc conventions and dev workflow files
2024-11-17 22:17:46 -05:00
48c27365ee Merge pull request #4383 from akohlmey/collected-small-changes
Collected small changes and fixes
2024-11-17 22:15:36 -05:00
18329ac86a avoid memory leaks 2024-11-17 12:14:28 -05:00
a635f20b1b whitespace 2024-11-17 12:14:14 -05:00
07a8806fd0 fix typo 2024-11-17 12:14:07 -05:00
f7b87a21c7 apply special treatment for fix colvars/kk as suggested by @stanmoore1 2024-11-16 11:14:18 -05:00
b3f88da939 document KOKKOS restriction of fix spring/self 2024-11-15 15:22:19 -05:00
35f1fb9d6d check equal style variable evaluation for bad values 2024-11-15 15:12:56 -05:00
ec129f167e error out in fix spring/self/kk with variable spring constant 2024-11-15 14:33:25 -05:00
bca2c4d245 add missing initializers 2024-11-15 14:26:10 -05:00
72b649ec2b whitespace 2024-11-15 14:14:53 -05:00
4dd1448dd0 support providing spring constant as equal or atom style variable 2024-11-15 14:12:19 -05:00
ae1c5651ef accept qtpie/reaxff also for reaxff/omp 2024-11-15 13:27:28 -05:00
55f53f06ba use utils::open_potential for gaussian exponent file 2024-11-15 13:27:11 -05:00
70f41341c9 add unit test for qtpie/reaxff 2024-11-15 13:26:34 -05:00
cf5c42889d avoid dereferencing reaxff object when no reaxff pair style in use 2024-11-15 13:01:23 -05:00
9a096f295f update/correct code owners list 2024-11-15 11:06:38 -05:00
38d53877c5 move citeme call(s) to places where labelmaps are used 2024-11-15 11:01:19 -05:00
6796dc34ad clang-format 2024-11-15 10:42:30 -05:00
0f70c528a1 avoid access to uninitialized per-atom data to make valgrind happy 2024-11-15 10:42:21 -05:00
74fea8ae08 must initialize copymode in base class 2024-11-15 06:24:29 -05:00
0f9f80ad45 update for fix colvars/kk 2024-11-14 15:32:07 -05:00
e3e502f095 add note that pair_coeff settings used for fix adapt must be set explicitly 2024-11-14 15:26:46 -05:00
9c290a0fac Minor edits to workflow doc 2024-11-14 08:22:13 -05:00
c06cab2696 extra space 2024-11-14 08:22:13 -05:00
d8bd1ae3b8 adding hyperlink 2024-11-14 08:22:13 -05:00
a06275d18e Pesky backticks 2024-11-14 08:22:13 -05:00
4dbb5ade76 avoid crashes with 180 degree angles 2024-11-14 08:22:07 -05:00
e192c4d583 Minor edits to workflow doc 2024-11-13 09:11:22 -07:00
8dfb63206e extra space 2024-11-13 08:56:23 -07:00
0463434ff9 adding hyperlink 2024-11-13 08:55:25 -07:00
0f2fd8a882 Pesky backticks 2024-11-13 08:51:57 -07:00
5928389c5e Merge pull request #4312 from navlalli/qtpie
Add fix qtpie/reaxff
2024-11-13 07:42:07 -05:00
69526c87d8 Merge pull request #4362 from ndtrung81/regression-test-update
Improve the Kokkos regression test workflow
2024-11-12 18:06:48 -05:00
92f2a743ef Merge pull request #4375 from akohlmey/collected-small-changes
Collected small changes and updates
2024-11-12 17:55:25 -05:00
3aef5ed12f Merge pull request #4374 from ndtrung81/gpu-threebody-neigh-no
Fixed bug in the GPU package when three-body pair styles are used with pair hybrid
2024-11-12 17:31:11 -05:00
1b65fb5a1a avoid memory leak 2024-11-12 15:05:57 -05:00
cfadf10021 Merge pull request #4296 from alphataubio/alphataubio-kokkos-fixes
Add KOKKOS versions of fixes
2024-11-12 15:00:52 -05:00
2d2bc029a4 Merge branch 'develop' into qtpie 2024-11-12 11:37:40 -08:00
5673375d21 Add more related commands to docs 2024-11-12 12:32:37 -07:00
fc805f470c Small change to simplify code 2024-11-12 08:42:38 -08:00
7fdfa3d3dd Merge branch 'alphataubio-kokkos-fixes' of github.com:alphataubio/lammps-alphataubio into alphataubio-kokkos-fixes 2024-11-12 08:10:00 -08:00
ecfda6042d correct error message 2024-11-11 18:52:56 -05:00
8809ed067f oops 2024-11-11 15:11:02 -05:00
1b2781db9b add syncs 2024-11-11 14:57:45 -05:00
a1a2a54f72 update linalg for ML-QUIP 2024-11-09 04:14:11 -05:00
324e795237 do not free a NULL communicator 2024-11-08 20:59:41 -05:00
fb758d951f synchronize neb/spin with bugfixes for neb 2024-11-08 20:59:24 -05:00
a8eb5fab14 Merge branch 'alphataubio-kokkos-fixes' of github.com:alphataubio/lammps-alphataubio into alphataubio-kokkos-fixes 2024-11-08 15:04:50 -08:00
ab9a870065 Merge branch 'develop' into alphataubio-kokkos-fixes 2024-11-08 18:03:28 -05:00
aeca973f84 Merge branch 'alphataubio-kokkos-fixes' of https://github.com/alphataubio/lammps-alphataubio into alphataubio-kokkos-fixes 2024-11-08 18:01:54 -05:00
b830f7806e Update fix_colvars_kokkos.cpp 2024-11-08 18:01:50 -05:00
f84b9f350e Merge branch 'develop' of https://github.com/lammps/lammps into alphataubio-kokkos-fixes 2024-11-08 14:53:37 -08:00
339c9654de Update GNU Make for new file 2024-11-08 14:42:59 -08:00
0ad6babead Fix another (already existing) bug when a proc has no atoms 2024-11-08 08:42:47 -08:00
a445545ffb Merge pull request #4371 from evoyiatzis/patch-2
fix typo in compute_temp_partial.rst
2024-11-08 09:30:26 -07:00
8f9e14c14f Merge branch 'develop' into gpu-threebody-neigh-no 2024-11-08 09:22:46 -06:00
9d80d963ed Merge pull request #4370 from jtclemm/small-patches
Fixing potential segfaults in granular/nstencil classes and other minor clean ups
2024-11-08 06:05:49 -05:00
e84c45c6e7 Fix whitespace 2024-11-08 10:38:49 +00:00
95899b53b8 Add fix qtpie/reaxff to pair_style reaxff docs 2024-11-08 10:26:47 +00:00
1c48d201b4 Remove unused pack_flag = 5 options 2024-11-08 10:07:16 +00:00
45ea55c06a Removing debug statements 2024-11-07 14:28:57 -07:00
6765c3b126 Relaxing errors in bond bpm, reusing update special for hybrid 2024-11-07 14:27:44 -07:00
b74096b2c4 Fix bug when a proc has no atoms/neighbors (existing issue) 2024-11-07 09:35:49 -08:00
572be91b76 fix typo in compute_temp_partial.rst 2024-11-06 11:27:45 +01:00
95509c4ef0 Referencing other methods compatible with BPM package 2024-11-05 15:47:59 -07:00
a832a4a1c9 fixed a bug with three_ilist when used with pair hybrid 2024-11-05 16:38:06 -06:00
755e71e5a2 Missing space between words 2024-11-04 16:09:10 -07:00
34113226ae Updating pair tracker example 2024-11-04 13:57:54 -07:00
5ce635757f Simplifying smoothing for bpm/rotational bond style 2024-11-04 13:42:09 -07:00
778693c300 Minor clean ups to BPM bonds 2024-11-04 13:31:51 -07:00
645d02d13b sph typo 2024-11-04 13:30:37 -07:00
3b3d39a8cd Minor granular include clean up 2024-11-04 13:29:32 -07:00
3e531b9842 Adding clarifying comment 2024-11-04 13:24:27 -07:00
bf888045d6 Fixing memory seg fault w/ multi occasional nlist 2024-11-04 13:16:07 -07:00
d2f761f8ed Avoiding potential segfault with granular rolling model 2024-11-04 12:42:04 -07:00
10767b1247 Merge branch 'develop' into small-patches 2024-11-04 12:37:57 -07:00
953762458c EMPTY_MASK 2024-11-02 16:36:50 -04:00
1f1491a71c Update fix_colvars_kokkos.cpp 2024-11-02 14:52:01 -04:00
03487707ae atomics 2024-11-02 14:24:36 -04:00
ecebf18791 wrap host functions with sync/modify for kokkos 2024-11-02 13:39:23 -04:00
7eccc56607 auto variables for lambda capture 2024-11-01 19:42:16 -04:00
8695351e24 Merge branch 'alphataubio-kokkos-fixes' of https://github.com/alphataubio/lammps-alphataubio into alphataubio-kokkos-fixes 2024-10-30 21:59:05 -04:00
22d08cbac0 whitespace 2024-10-30 21:58:50 -04:00
c057b36c15 Merge branch 'develop' into alphataubio-kokkos-fixes 2024-10-30 21:50:36 -04:00
9aa9e7079a cleanup 2024-10-30 21:44:27 -04:00
84e234921b fix cuda warning 2024-10-30 21:36:18 -04:00
41672f6ac9 this might work on cuda 2024-10-30 20:44:25 -04:00
5efd8ba11e run the Kokkos regression workflow after merge, not every push 2024-10-30 11:27:15 -05:00
50dd95e6e1 move d_ubuf to kokkos_type.h
https://matsci.org/t/a-few-kokkos-development-questions/56598/8 (Q11)
"More correct would be to use a union with ubuf as is done in the atom_vec styles, so that no precision is lost for converting a huge 64-bit integer to a double."
2024-10-30 11:32:24 -04:00
acebce0431 turn off verbose, reduce timeout 2024-10-29 23:07:35 -05:00
6d634dc646 Merge pull request #4359 from jtclemm/BPM
Adding new force options to BPM package
2024-10-29 21:31:03 -04:00
0e1137aee7 add inertia() 2024-10-29 18:34:30 -04:00
08e460ece6 Update fix_cmap_kokkos.cpp 2024-10-29 14:09:48 -04:00
ae4cb00402 Update fix_cmap_kokkos.cpp 2024-10-29 14:09:11 -04:00
c17e2cd30d Update fix_cmap_kokkos.cpp 2024-10-29 13:58:13 -04:00
452ae4621d Update fix_cmap_kokkos.cpp 2024-10-29 13:29:48 -04:00
4941cf25c0 typo 2024-10-29 12:59:09 -04:00
586f2b626d Update fix_cmap_kokkos.cpp 2024-10-29 11:13:36 -04:00
a6ad1a837c Update fix_cmap_kokkos.cpp 2024-10-28 18:55:59 -04:00
97c6b063a7 Update fix_cmap_kokkos.cpp 2024-10-28 18:41:04 -04:00
7ffe6aefce Update fix_cmap_kokkos.cpp 2024-10-28 18:37:21 -04:00
e4a9b06320 Update fix_cmap_kokkos.cpp 2024-10-28 17:47:57 -04:00
c00700dec7 cuda sync 2024-10-28 15:30:14 -04:00
ef1148dfa0 remove write_data support from BPM bond styles again and consolidate names 2024-10-27 22:06:56 -04:00
b946e998b5 also split fix into 2 lists, using 6 jobs for the matrix strategy 2024-10-27 12:13:29 -05:00
dd0dfd3c7f split randomly the pair input list by batch size 2024-10-27 00:00:10 -05:00
67d1c7d17d set OMP_PROC_BIND=false and adjust timeout 2024-10-26 09:01:39 -05:00
b725c01c0d split pair list into 2 separate lists and use 5 jobs for more even time balancing 2024-10-25 23:22:25 -05:00
12f0eff7a6 make group kokkos aware 2024-10-25 20:06:13 -04:00
71bbc52feb recommit changes from @stanmoore1 2024-10-25 20:03:45 -04:00
ea7fd079ce add vcm() and angmom() 2024-10-25 19:14:20 -04:00
e91b5dce78 fix typos 2024-10-25 18:52:50 -04:00
e0c3022ec3 printf debugging 2024-10-25 14:55:51 -04:00
6d0e633edf Merge pull request #4352 from ndtrung81/regression-test-update
Add a KOKKOS workflow for GitHub actions and minor updates for the regression tester
2024-10-25 11:06:33 -04:00
a5ab8be0a2 Clarify restriction on periodic cell dimensions 2024-10-25 14:16:25 +01:00
e1a129fbf2 Merge branch 'alphataubio-kokkos-fixes' of https://github.com/alphataubio/lammps-alphataubio into alphataubio-kokkos-fixes 2024-10-24 12:20:14 -04:00
ce830fcdbd Update fix_cmap_kokkos.cpp 2024-10-24 12:20:02 -04:00
56ac4aeedf Merge branch 'develop' into alphataubio-kokkos-fixes 2024-10-24 12:12:12 -04:00
00ff895c0d Update fix_cmap_kokkos.cpp 2024-10-24 12:11:12 -04:00
e04be85b7e Merge branch 'alphataubio-kokkos-fixes' of https://github.com/alphataubio/lammps-alphataubio into alphataubio-kokkos-fixes 2024-10-24 12:07:42 -04:00
4a64b3d9ce add d_exchange_sendlist to pack_exchange_kokkos() 2024-10-24 12:04:41 -04:00
f18850397d whitespace 2024-10-24 09:43:36 -06:00
f09a9c1c2a fix typo in cmake command 2024-10-24 10:26:18 -05:00
25eaf38cee use the kokkos-openmp preset for brevity 2024-10-24 10:18:59 -05:00
a844959a07 Combine into a single -Xcudafe flag to simplify everything 2024-10-23 23:00:17 -06:00
3041443e5f Merge pull request #4357 from akohlmey/collected-small-changes
Collected small changes and fixes
2024-10-23 23:25:26 -04:00
73c049459b spelling 2024-10-23 21:10:34 -04:00
fdd2fc4f5d move error check to Compute::init() so they cannot be bypassed by input commands 2024-10-23 21:08:07 -04:00
b682f52d11 fix typos 2024-10-23 21:07:39 -04:00
f207a571f3 allow fix DUMMY to be added without a box 2024-10-23 21:00:33 -04:00
40e5d53345 Prevent deduplication of -Xcudafe flag 2024-10-23 15:53:56 -06:00
820fe1ee8a Fix compile issue with gcc 2024-10-23 12:18:20 -06:00
3bac6d7cde Adding bpm pair write data method, blocking unreadable vol atom property in bond 2024-10-23 11:56:07 -06:00
b810053d02 document restrictions for bonded interactions 2024-10-23 12:35:50 -04:00
915f636d50 Update GNU Make for new files 2024-10-23 10:28:42 -06:00
ab961a006e Merge remote-tracking branch 'github/develop' into collected-small-changes 2024-10-23 12:25:22 -04:00
558b1c5197 apply clang-format, fix other minor formatting issues, use error->one() 2024-10-23 12:10:28 -04:00
077c77f402 contributions from bonded interactions is broken when running in parallel
see https://matsci.org/t/missing-bond-contributions-from-compute-stress-mop/58455
for details.
2024-10-23 12:09:35 -04:00
46c365f75c Merge branch 'develop' of github.com:lammps/lammps into alphataubio-kokkos-fixes 2024-10-23 09:32:27 -06:00
d2b1e22b4a added counter for timeout tests 2024-10-22 23:31:22 -05:00
06207fd91e modify how execute() returns 2024-10-22 23:21:37 -05:00
8e81ac8c42 Merge branch 'develop' into BPM 2024-10-22 22:21:57 -04:00
bef64fd602 use consistent fix id and create bond history fix only when required 2024-10-22 22:21:28 -04:00
53b1ba6131 rename id_fix to id_fix_prop_bond for consistency, fix bug when deleting/replacing fixes 2024-10-22 21:56:19 -04:00
e2214fc4d6 Merge branch 'develop' into regression-test-update 2024-10-22 21:10:22 -04:00
e214f60d4f Merge pull request #4358 from junghans/cmake_voro_rename
cmake: voro target to upstream name
2024-10-22 21:07:28 -04:00
81f71716ba Merge branch 'develop' into BPM 2024-10-22 20:59:12 -04:00
a5599f2b75 implement write_data(), delete created internal fix in destructor, formatting 2024-10-22 20:59:00 -04:00
1ec7ba547d Merge branch 'develop' into alphataubio-kokkos-fixes 2024-10-22 14:47:19 -04:00
22a15c7cf8 cuda bugfix again 2024-10-22 14:15:02 -04:00
5bdd616bcd cuda bugfix 2024-10-22 12:42:49 -04:00
83db9b8fe6 small cleanup and modernization 2024-10-22 10:25:22 -04:00
ec5dfcd0fb remove note that was obsoleted 5 years ago 2024-10-22 09:50:30 -04:00
1678e2af28 adjusting howto text to reflect additional BPM/spring options. 2024-10-21 21:21:15 -06:00
e8c5e58ab9 Adding clarifying comments 2024-10-21 16:25:38 -06:00
c8bbfc368a Initializing dvol array in bpm/spring 2024-10-21 16:23:35 -06:00
58ff8d3212 Suppressing dump output in bpm examples 2024-10-21 15:18:17 -06:00
4779cc44ef documenting bpm anharmonic 2024-10-21 15:07:24 -06:00
baf1733b9a documenting bpm multibody 2024-10-21 15:07:06 -06:00
722133b60c typo 2024-10-21 15:06:33 -06:00
289845b187 Adding anharmonic term to bpm/spring pair 2024-10-21 15:06:21 -06:00
a302bfed5a Adding multibody term to bpm/spring 2024-10-21 15:05:55 -06:00
05ee6bed3d Adding dividers for gran CoR model 2024-10-21 15:02:52 -06:00
5c07882a18 fix warning(s) 2024-10-20 18:30:19 -04:00
760d871b7a enabled and apply clang-format 2024-10-19 11:02:53 -04:00
34ab2f862a small tweaks 2024-10-18 22:09:25 -04:00
f128abe002 improve OPLS description 2024-10-18 21:51:43 -04:00
2074b0c400 add check to allow only valid swaps between hybrid sub-styles and document it 2024-10-18 21:49:55 -04:00
73eb7de7aa cmake: voro target to upstream name 2024-10-18 09:26:23 -06:00
86e18b8a24 fix copy-n-modify issue 2024-10-16 10:23:16 -04:00
2ce934fdb9 added section on OPLS-AA taken from https://matsci.org/t/issues-with-opls-force-field-for-ethylene-glycol-simulation/58296/11 2024-10-16 10:05:26 -04:00
6c31dbf86f add more packages to the build 2024-10-15 13:38:02 -05:00
8503cac2ce update README to explain how to set nprocs in the config file 2024-10-14 23:44:02 -05:00
6e32470cfa distinguish the error tests vs failed tests 2024-10-14 23:27:06 -05:00
9abfe38120 Merge branch 'develop' into collected-small-changes 2024-10-14 22:54:22 -04:00
59bbc5bcc1 Merge pull request #4356 from evoyiatzis/patch-1
add extract() function to few angle and bond styles
2024-10-14 19:25:29 -04:00
a354ad8d64 add pair back to the matrix entries 2024-10-14 17:20:04 -05:00
c533ca0af1 handle the cases where num steps do not match with the reference log files 2024-10-14 16:05:21 -05:00
b9e4c6e1e7 re-enable matrix tests 2024-10-14 14:55:26 -05:00
eadb2f2eb1 fix the workflow file for not turning on quick 2024-10-14 11:23:08 -05:00
b0f2484441 fix logic bug with allowing quick_max to run without requiring quick to be True 2024-10-14 10:45:53 -05:00
3e7642bc8c fix artifact names, allow to run quick test with a given input list 2024-10-14 09:43:08 -05:00
38500c647b move cursor to end of log buffer before inserting new text 2024-10-14 09:41:45 -04:00
db3416c4b3 Apply corrections from code review by @simongravelle
Co-authored-by: Simon Gravelle <simon.gravelle@live.fr>
2024-10-14 08:19:53 -04:00
6478cd98e9 add extract() function to angle_mesocnt.cpp 2024-10-14 11:30:20 +02:00
1a6544a04c add extract() function to angle_mesocnt.h 2024-10-14 11:29:47 +02:00
74af88bafd unit test for extract() in angle-amoeba.yaml 2024-10-14 09:43:07 +02:00
0c61cb02cc add extract() function to angle_amoeba.cpp 2024-10-14 09:42:04 +02:00
292ca89cb0 add extract() function to angle_amoeba.h 2024-10-14 09:41:23 +02:00
383ae086e5 skip in.icos due to the minimize command 2024-10-13 22:54:54 -05:00
1e63f031f0 remove empirical filter to remove outliers from corrupted data 2024-10-13 22:52:40 -04:00
1c9daad657 change tutorial download URL to tutorial website 2024-10-13 21:57:17 -04:00
f7291713f5 error out when fix nve is used with additional arguments 2024-10-13 19:34:56 -04:00
8156e56617 be more paranoid about Sphinx updates breaking extensions we use 2024-10-13 19:31:40 -04:00
c15c4d23bb fix spelling/syntax issues 2024-10-13 19:30:30 -04:00
eafef460e2 silence compiler warning 2024-10-13 19:24:35 -04:00
b3b9d032fa cleanup, clarification and re-wrap of doc file sections 2024-10-13 18:56:41 -04:00
03d10e6bbc correct documentation to add "inputs local" to compute reduce commands on local data 2024-10-13 18:56:07 -04:00
4773b3e7e4 fix indentation in the config files 2024-10-13 15:48:29 -05:00
0d894c33c4 adjust the workflow files and config file 2024-10-13 11:52:10 -05:00
c735dc7d53 skip in.min.box, ensure that input lists only contain unique entries 2024-10-13 08:21:00 -05:00
3e64966800 filter out examples/fire 2024-10-12 23:53:35 -05:00
f8a8783044 Merge branch 'develop' into alphataubio-kokkos-fixes 2024-10-12 20:09:59 -04:00
f8db5ce2ea Merge pull request #4349 from akohlmey/collected-small-changes
Collected small changes and fixes
2024-10-12 20:07:33 -04:00
1ac351c84e unit test for extract() in angle-cross.yaml 2024-10-12 15:19:08 +02:00
7cc5f1923d add extract() function to angle_cross.cpp 2024-10-12 15:17:07 +02:00
02d74417c1 add extract() function to angle_cross.h 2024-10-12 15:16:34 +02:00
29e6ca0044 filter out input scripts for testing, remove concurrent (matrix) testing 2024-10-11 16:18:33 -05:00
b960cb213f revert to building with basic.cmake preset and manually include packages, refactor the get_kokkos_input script 2024-10-11 15:36:18 -05:00
e9ff0d3402 modify the kokkos workflow file 2024-10-11 14:42:45 -05:00
8f76fcdc54 Added a python script to get the example inputs that contain KOKKOS styles and generate the input lists for regression tests 2024-10-11 14:18:43 -05:00
f1a79e7df5 Update fix_adapt.rst 2024-10-11 19:55:28 +02:00
e3ab697dd2 unit test for extract() in angle-gaussian.yaml 2024-10-11 19:49:24 +02:00
ae652b31da unit test for extract() in bond-gaussian.yaml 2024-10-11 19:48:18 +02:00
df50691488 small correction and clarifications 2024-10-11 06:54:46 -04:00
6d30557ec2 Update partially fix_adapt.rst 2024-10-11 11:08:32 +02:00
391f55b377 unit test for extract() in bond-nonlinear.yaml 2024-10-11 11:02:55 +02:00
856fd9d977 unit test for extract() in bond-morse.yaml 2024-10-11 11:01:57 +02:00
8bc89ef8a7 unit test for extract() in bond-class2.yaml 2024-10-11 10:59:29 +02:00
c8241dcab6 unit test for extract() in angle-class2_p6.yaml 2024-10-11 10:58:32 +02:00
b619cce773 add extract() function to bond_gaussian.cpp 2024-10-11 10:54:56 +02:00
7da8434d5b add extract() function to bond_gaussian.h 2024-10-11 10:54:24 +02:00
732ef6bd44 add extract() function to angle_gaussian.cpp 2024-10-11 10:53:45 +02:00
44625312ea add extract() function to angle_gaussian.h 2024-10-11 10:53:02 +02:00
4766ddbede Update bond_nonlinear.cpp 2024-10-11 10:52:21 +02:00
b5386d714e Update extract() function to bond_morse.cpp 2024-10-11 10:51:14 +02:00
87737c1a47 add extract() function to angle_cosine_buck6d.cpp 2024-10-11 10:49:45 +02:00
81ac3bbaf6 add extract() function to angle_cosine_buck6d.h 2024-10-11 10:49:13 +02:00
1db92ad34b add extract() function to angle_class2_p6.cpp 2024-10-11 10:48:19 +02:00
852c46ba0e add extract() function to angle_class2_p6.h 2024-10-11 10:47:30 +02:00
aeeacf0442 Update extract of bond_class2.cpp 2024-10-11 10:42:01 +02:00
5c82063376 Merge branch 'electrode' of github.com:robeme/lammps into collected-small-changes 2024-10-10 17:32:28 -04:00
9adf51f18e ignore python wheel build folder 2024-10-10 17:29:33 -04:00
49a850c8aa add cmake support for make-globbed-toc 2024-10-10 17:25:05 -04:00
7693e96828 change globbed toc script from bash to python 2024-10-10 17:24:23 -04:00
9835adcbfc allow use of Sphinx version 8.x as interface with breathe seems to have been updated 2024-10-10 13:36:53 -04:00
766ba94396 use script instead of globbing to avoid entering commands in multiple toctrees 2024-10-10 13:36:48 -04:00
d684f6eb9b Merge branch 'alphataubio-kokkos-fixes' of https://github.com/alphataubio/lammps-alphataubio into alphataubio-kokkos-fixes 2024-10-10 12:23:16 -04:00
bbafad145b fixed identation 2024-10-10 12:23:09 -04:00
505d519be2 Update affiliation for ELECTRODE in package details 2024-10-10 16:18:05 +02:00
393dbdc640 add missing constants to enumerators 2024-10-10 08:00:38 -04:00
56cc9d03bd skip tests that are unstable on GPU 2024-10-10 06:11:32 -04:00
df260b58dd Merge pull request #4353 from martok/cmake-win-shared
CMake: install shared libraries on Windows with correct target
2024-10-10 05:39:28 -04:00
948ee80169 potflag and phi are not used 2024-10-10 05:35:51 -04:00
482a6632e9 consolidate kspace communication enumerators in kspace.h 2024-10-10 05:35:01 -04:00
2935c17f78 avoid segfault in msm/dielectric 2024-10-10 05:19:32 -04:00
422ced4d82 silence compiler warnings 2024-10-09 20:55:00 -04:00
58989765f0 Install shared libraries on Windows with RUNTIME DESTINATION 2024-10-10 00:52:36 +02:00
a8c9b57b62 partial revert of refactoring that broke efield and setforce 2024-10-09 18:34:17 -04:00
a5b76410e1 cleanup 2024-10-09 18:32:54 -04:00
bc2267c9c8 Update fix_efield_kokkos.cpp 2024-10-09 18:32:38 -04:00
315ac762cc Update fix_setforce_kokkos.cpp 2024-10-09 18:32:32 -04:00
badb3eae5f add tests with region sphere 2024-10-09 18:06:24 -04:00
3b60ae43b3 fix nvcc option 2024-10-09 17:44:49 -04:00
79c9d69931 Update CMakeLists.txt 2024-10-09 17:26:30 -04:00
147cf7face -diag_suppress (single dash) 2024-10-09 17:22:35 -04:00
dd11385f6f all device function in headers to avoid device relocatable code with nvcc 2024-10-09 16:45:50 -04:00
b22797b752 refactor 2024-10-09 16:13:48 -04:00
fea0271d5a Update region_block_kokkos.cpp 2024-10-09 15:36:30 -04:00
2d94187606 sub3() and dot3() 2024-10-09 15:34:31 -04:00
e48d2f9a31 Update fix_wall_region_kokkos.cpp 2024-10-09 15:26:34 -04:00
08b0e8eab9 inside_face() 2024-10-09 15:19:05 -04:00
e4a92f96e1 match_kokkos() 2024-10-09 15:15:23 -04:00
b4b49f5dec point_on_line_segment() 2024-10-09 15:11:24 -04:00
1427ca1ff4 forward_transform() and find_closest_point() 2024-10-09 15:04:07 -04:00
0007e568fc KOKKOS_FUNCTION 2024-10-09 14:46:49 -04:00
ae0627b2f1 remove warning 2024-10-09 14:43:18 -04:00
5d90879f35 cleanup 2024-10-09 14:14:23 -04:00
bb5b8a1d34 functor templated on RegBlockKokkos and RegSphereKokkos 2024-10-09 13:50:17 -04:00
e6c9353ccf add missing dependency 2024-10-09 00:30:46 -04:00
bea76778bd silence compiler warning 2024-10-08 22:45:37 -04:00
80c8ecb7e7 Update fix_recenter_kokkos.cpp 2024-10-08 19:01:36 -04:00
1af3de1fad Update fix_recenter_kokkos.cpp 2024-10-08 18:59:17 -04:00
7d9bc3ea24 oops 2024-10-08 18:21:42 -04:00
64499bfcb2 _kokkos 2024-10-08 18:20:58 -04:00
183c99acc8 Update region_sphere_kokkos.h 2024-10-08 18:18:06 -04:00
f7afc63b53 Update region_block_kokkos.h 2024-10-08 18:18:03 -04:00
0f627059fc dynamic_cast 2024-10-08 18:14:06 -04:00
d13fb58311 surface_kokkos() 2024-10-08 17:55:03 -04:00
c84ed4189d Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2024-10-08 14:47:51 -04:00
b1928596ae should include <string> in utils.h 2024-10-08 14:47:11 -04:00
63a26b1770 add the missing log file using --gen-ref 2024-10-08 12:10:48 -05:00
63649979e3 revert the file names and the upload action step 2024-10-08 10:55:40 -05:00
0e3a6a7190 turned on verbose to check tolerances and also print that info out to the run.log file 2024-10-08 10:51:12 -05:00
e5ba430f5f re-enable KokkosOpenMP test 2024-10-07 20:07:09 -04:00
f19df37de3 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2024-10-07 19:57:43 -04:00
f02b3aaf95 reset container with .clear() 2024-10-07 19:56:04 -04:00
a53840014c Update in.wall.sphere 2024-10-07 18:17:14 -04:00
4ed7528ddc add_contact() 2024-10-07 17:57:32 -04:00
e188b7d75f remove "tags: generated" 2024-10-07 17:56:59 -04:00
9d2e892c0e Update fix_wall_region_kokkos.cpp 2024-10-07 17:46:15 -04:00
900f472ea6 test logic to run with different nprocs than the ref files if nprocs is specified 2024-10-07 16:39:26 -05:00
5a7dd950fc Update region_sphere_kokkos.cpp 2024-10-07 17:28:45 -04:00
941b3dd566 add two examples for regression testing 2024-10-07 17:15:09 -04:00
b16ddfcdd4 add d_contact 2024-10-07 17:05:33 -04:00
74ac224dd9 Create fix-timestep-wall_region_sphere.yaml 2024-10-07 17:05:08 -04:00
e44d366d92 Update region.cpp 2024-10-07 17:04:28 -04:00
4492ecaf39 Update region_sphere.cpp 2024-10-07 17:04:21 -04:00
09a115cb89 add and switch to a workflow file dedicated for OpenMP backend for KOKKOS 2024-10-07 15:04:28 -05:00
0e1ee42b89 Update region_block_kokkos.cpp 2024-10-07 15:12:10 -04:00
177b04fb56 Update fix_wall_region_kokkos.cpp 2024-10-07 15:06:01 -04:00
ff66b42022 cleanup 2024-10-07 15:04:34 -04:00
af7f5a5b5e port surface() to KOKKOS 2024-10-07 15:03:13 -04:00
7b3762881e try with 4 procs 2024-10-07 13:14:35 -05:00
076bb056aa fixed leftover typos in the workflow file and the tester 2024-10-07 12:59:48 -05:00
e6118412b1 remove dead code in fix qeq/ctip 2024-10-07 13:56:04 -04:00
6a46fb034d Tweak comments 2024-10-07 11:11:12 -06:00
31f10f9675 add a workflow file for testing KOKKOS with the OpenMP backend 2024-10-07 12:04:29 -05:00
84c1492ce6 fix issues with invalid subfolders, with total walltime reference that may be zero, with the output of progress.yaml for easy parsing to dictionaries, modify config_kokkos.yaml for testing with the OpenMP backend 2024-10-07 12:01:59 -05:00
9aaab458e8 Change another shallow copy to alias 2024-10-07 10:54:28 -06:00
c44831ff90 Fix bug when Kokkos atom map is build on host using hash 2024-10-07 10:40:58 -06:00
8a176ac488 use MKL for FFTs and on Intel GPU 2024-10-06 15:09:06 -04:00
8c76600d47 anticipate change to C++ standard 2024-10-06 15:06:05 -04:00
a0990abb73 nout does not have to be a class member 2024-10-06 07:01:35 -04:00
e4c0457617 remove dead code 2024-10-06 06:55:38 -04:00
25dfb03386 apply clang-format 2024-10-06 00:25:53 -04:00
92deb5c8dc revert change that breaks backward compatibility 2024-10-05 23:15:50 -04:00
6295fa0b54 whitespace 2024-10-05 23:07:50 -04:00
7da8748e90 add region command to list of exceptions needing the accelerator include 2024-10-05 22:49:13 -04:00
bdf1a242da Merge branch 'develop' into alphataubio-kokkos-fixes 2024-10-05 22:34:01 -04:00
719a64d9dd apply clang-format 2024-10-05 22:25:07 -04:00
6ab0b2c249 use std::vector<>.data() to access underlying pointer 2024-10-05 21:58:47 -04:00
e142ad8dfa apply clang-format 2024-10-05 21:55:24 -04:00
45440abca4 consistently use std::vector<>.data() to access the underlying data pointer 2024-10-05 20:36:23 -04:00
bcb500894c compute_scalar() bugfix 2024-10-05 18:49:39 -04:00
af03836dfa Update fix_cmap.cpp 2024-10-05 17:03:50 -04:00
a8157fc68e relax epsilon for kokkos_omp to pass 2024-10-05 16:41:02 -04:00
0bc554a694 remove FIXME 2024-10-05 16:40:32 -04:00
1f61c42745 add GroupKokkos 2024-10-05 16:40:10 -04:00
58bea0691b oops 2024-10-05 13:55:33 -04:00
da659c5168 Merge branch 'alphataubio-kokkos-fixes' of https://github.com/alphataubio/lammps-alphataubio into alphataubio-kokkos-fixes 2024-10-05 12:02:24 -04:00
2d261388c8 Update fix_wall_region.cpp 2024-10-05 12:02:00 -04:00
de8396ea55 Update fix_wall_region.h 2024-10-05 12:01:34 -04:00
84b50bfd26 Update region_sphere_kokkos.cpp 2024-10-05 11:59:50 -04:00
81f96d3ea3 Update fix_recenter_kokkos.h 2024-10-05 11:48:18 -04:00
03c3bfec3a Update fix_nve_limit_kokkos.cpp 2024-10-05 11:45:41 -04:00
95c18c5373 Update fix_cmap_kokkos.cpp 2024-10-05 11:44:57 -04:00
4da644958e IntelLLVM is not ABI compatible with generic BLAS libraries. Use linalg instead 2024-10-05 03:39:00 -04:00
c3c5370570 use std::vector.data() to access the underlying arrays 2024-10-05 03:38:25 -04:00
ca6e9abefa update a few more tests for IntelLLVM 2024-10-05 03:37:33 -04:00
e4dcdcd221 skip KokkosOpenMP tests when Kokkos includes GPU support 2024-10-05 03:05:04 -04:00
248070c4b8 use -fp-model precise for IntelLLVM to avoid miscompilation 2024-10-05 02:41:03 -04:00
cdd538e24e relax epsilon for IntelLLVM compiler 2024-10-05 02:41:03 -04:00
39f42d4c12 simplify 2024-10-05 01:56:31 -04:00
c468537030 correct access to raw vector data and use resize() instead of reserve() for better compatibility 2024-10-05 01:56:19 -04:00
01e9fb04b6 must use fabs() for floating point numbers 2024-10-05 01:55:17 -04:00
0cb64f8bf3 Merge branch 'develop' into collected-small-changes 2024-10-05 01:53:22 -04:00
224468d946 Merge pull request #4346 from cjknight/lubricate_patch
features + bug fixes for granular simulations w/ Kokkos
2024-10-04 20:54:12 -04:00
70cbf051fe apply clang-format 2024-10-04 19:41:59 -04:00
47b918499f silence compiler warnings, remove dead code 2024-10-04 19:05:35 -04:00
7aade6e14c Merge branch 'develop' of github.com:lammps/lammps into alphataubio-kokkos-fixes 2024-10-04 16:24:43 -06:00
2c738669ff compute_temp_sphere does not modify positions 2024-10-04 16:16:02 -06:00
d29533447a silence compiler warnings, remove dead code 2024-10-04 18:09:06 -04:00
b494a486a1 cosmetic 2024-10-04 17:59:44 -04:00
5786914b67 Merge branch 'lubricate_patch' of github.com:cjknight/lammps into lubricate_patch 2024-10-04 17:35:06 -04:00
27954609b8 Disallow newton on with full neigh list 2024-10-04 15:25:38 -06:00
aec43d0f00 Merge branch 'develop' into lubricate_patch 2024-10-04 17:09:27 -04:00
36dd4de3bc Merge pull request #4348 from akohlmey/collected-small-changes
Collected small changes and fixes
2024-10-04 15:57:47 -04:00
8827dec5a9 Small refactor 2024-10-04 13:04:20 -06:00
0a6d25881b update documentation according to accelerated style include check 2024-10-04 13:54:04 -04:00
25afdcc325 add check for missing or unneeded accelerated style include 2024-10-04 13:52:12 -04:00
485cddf303 Update fix_wall_region.rst 2024-10-04 13:06:32 -04:00
921d9df574 Update fix_recenter.rst 2024-10-04 13:05:48 -04:00
d27026c364 Update fix_nve_limit.rst 2024-10-04 13:05:26 -04:00
39def85b48 Update fix_cmap.rst 2024-10-04 13:04:52 -04:00
9108168ea3 doc 2024-10-04 11:35:46 -05:00
b2e8648e6c enable deprecated APIs for HDF5 2024-10-04 12:32:09 -04:00
08266b65e4 doc 2024-10-04 15:45:16 +00:00
c4b4b7b874 suppress nvcc warnings with libfmt version 11.0.2 2024-10-04 11:33:33 -04:00
f7cf859670 doc 2024-10-04 15:32:47 +00:00
130548156d Merge branch 'develop' of github.com:lammps/lammps into alphataubio-kokkos-fixes 2024-10-04 09:30:33 -06:00
2ae4062a6b Merge pull request #4343 from akohlmey/collected-small-changes
Collected small changes and fixes
2024-10-04 03:59:49 -04:00
01468e2720 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2024-10-04 01:41:57 -04:00
6d8529f1f7 Merge branch 'develop' into collected-small-changes 2024-10-04 01:24:30 -04:00
1263a23e9c Merge pull request #4345 from akohlmey/update-fmtlib
Update embedded copy of libfmt to version 11.0.2
2024-10-04 01:22:51 -04:00
d1a1a57bd9 Merge pull request #4339 from jtclemm/small-patches
Fixing bugs in GRANULAR and mistakes in RHEO documentation
2024-10-03 22:01:21 -04:00
13ceebe82c fix recenter test skipped for respa 2024-10-03 18:45:52 -04:00
70dad28481 Update fix_recenter.cpp 2024-10-03 18:45:12 -04:00
1799f887d2 Update test_atom_styles.cpp 2024-10-03 18:36:39 -04:00
3776ff938d Need to use vflag_either instead of vflag_global 2024-10-03 16:36:05 -06:00
59db2e0af8 Update atom_vec_template.cpp 2024-10-03 18:35:28 -04:00
86fc79d2de Update fix-timestep-wall_lj93_const.yaml 2024-10-03 18:20:09 -04:00
6f068fc067 Update fix-timestep-wall_region_harmonic.yaml 2024-10-03 18:19:53 -04:00
bf12caf37a Update fix-timestep-wall_region_lj126.yaml 2024-10-03 18:18:02 -04:00
98ad09b0c9 Tighten up check even more 2024-10-03 16:17:39 -06:00
c059961b8f Update fix-timestep-wall_region_lj1043.yaml 2024-10-03 18:17:39 -04:00
d0f6f21c39 Use wrapper and remove sync to host 2024-10-03 16:17:06 -06:00
81db0a4a80 Update fix-timestep-wall_region_morse.yaml 2024-10-03 18:16:41 -04:00
a26c81d73b Revert changes to pair lubricate base class 2024-10-03 15:59:27 -06:00
d6562b7514 fix-whitespace 2024-10-03 19:30:09 +00:00
0e10ed24fe fix compilation issue with MSVC++ 2024-10-03 15:19:56 -04:00
f25c530c04 recover compilation with MSVC++ 2024-10-03 14:56:28 -04:00
fbc6ba4ef4 import libfmt 11.0.1 2024-10-03 14:43:19 -04:00
4bf92cc846 update kokkos install to include brownian 2024-10-03 18:35:02 +00:00
4ee07bcdaf Recreate dump file for MS-MEAM due to changes to the code. 2024-10-03 11:54:26 -06:00
2c2ce1b327 Update create_atoms.cpp 2024-10-03 13:15:13 -04:00
9ad3e59c8f Update test_atom_styles.cpp 2024-10-03 12:38:32 -04:00
5c8552f4ce Update atom_vec_template.cpp 2024-10-03 12:21:10 -04:00
a0f09a42bf remove lubricate/Simple ; not ready for primetime 2024-10-03 15:48:12 +00:00
0edf9d42b0 remove white space changes 2024-10-03 15:46:44 +00:00
5fe5fc0b10 remove old logic 2024-10-03 15:43:26 +00:00
3c5b4ebccb Delete charmm36.py 2024-10-03 11:43:08 -04:00
b7d529d945 remove white space changes 2024-10-03 15:41:43 +00:00
47e8093e07 remove white space changes 2024-10-03 15:41:10 +00:00
4b43f90bd6 revert changes requested by @akohlmey 2024-10-03 11:39:24 -04:00
8ef30fe05b remove white space changes 2024-10-03 15:39:09 +00:00
1d2ef17786 remove white space changes 2024-10-03 15:35:30 +00:00
28d02cf2ab remove _NO_RANDOM debug from brownian styles 2024-10-03 15:32:03 +00:00
b5fdd8f0ae Revert "update atom_style template test for added charge"
This reverts commit 3ea74b1725.
2024-10-03 10:26:24 -04:00
c4df843550 Merge branch 'develop' of https://github.com/lammps/lammps into lubricate 2024-10-03 14:13:23 +00:00
29eafa999b Update src/region_sphere.h
Co-authored-by: Axel Kohlmeyer <akohlmey@gmail.com>
2024-10-03 09:49:56 -04:00
9c06e8265f Update src/create_atoms.cpp
Co-authored-by: Axel Kohlmeyer <akohlmey@gmail.com>
2024-10-03 09:48:12 -04:00
a9dd61f62e detect C++23 standard 2024-10-03 07:38:44 -04:00
adebe773d0 bump check to C++23 and rename workflow file 2024-10-03 07:26:40 -04:00
299e0bafff revert deform refactor to only sync when needed 2024-10-03 05:38:20 +00:00
e4aedfda85 add test for C++20 compatibility 2024-10-02 21:56:15 -04:00
7e02951fc4 disable making functions in libfmt consteval with C++20 and beyond 2024-10-02 21:48:54 -04:00
0f8b825424 fix up spelling issues in CTIP 2024-10-02 19:43:43 -04:00
a1bb42bd6e Merge remote-tracking branch 'github/develop' into collected-small-changes 2024-10-02 19:29:35 -04:00
8a7572fd5a Merge pull request #4181 from gplummer317/ctip
Charge Transfer Interatomic Potential (CTIP) pair style and qeq fix
2024-10-02 19:26:09 -04:00
cac22c216a update kk index entries 2024-10-02 14:37:03 -04:00
26aadc25ad Update fix_cmap.rst 2024-10-02 14:31:54 -04:00
26b83602be Update Commands_fix.rst 2024-10-02 13:56:21 -04:00
8a25871db5 Update region.rst 2024-10-02 13:45:59 -04:00
fff1456553 Update fix_wall_region.rst 2024-10-02 13:43:23 -04:00
89346740e1 Update fix_recenter.rst 2024-10-02 13:42:13 -04:00
a8acd9b573 Update fix_nve_limit.rst 2024-10-02 13:41:41 -04:00
75d3566a69 move brownian to KOKKOS directory 2024-10-02 15:35:33 +00:00
948faafa0e Merge branch 'develop' of https://www.github.com/lammps/lammps into lubricate 2024-10-02 15:27:39 +00:00
715a0c3d18 sync 2024-10-02 15:27:17 +00:00
e61d9f08ee regenerate fix wall/region tests 2024-10-01 13:00:59 -04:00
8332d89a4a regenerate fix recenter tests 2024-10-01 12:46:33 -04:00
384d8cf51f compute_vector() bugfix 2024-10-01 12:43:57 -04:00
51e273affd punt drude too 2024-10-01 03:30:05 -04:00
e32a2fa71a punt again 2024-10-01 02:39:17 -04:00
e29b06095d remove whitespace 2024-10-01 02:36:22 -04:00
91fc94fc1e Merge branch 'alphataubio-kokkos-fixes' of https://github.com/alphataubio/lammps-alphataubio into alphataubio-kokkos-fixes 2024-10-01 02:31:56 -04:00
9330ccf6f9 punt to later 2024-10-01 02:30:01 -04:00
9daa1b715a Merge branch 'lammps:develop' into alphataubio-kokkos-fixes 2024-10-01 02:13:26 -04:00
9f33efc1b9 resolve conflict 2024-10-01 02:12:49 -04:00
53914162a7 rename log file to match expected naming scheme 2024-10-01 00:24:40 -04:00
5322b172bd Merge pull request #4331 from akohlmey/collected-small-changes
Collected small changes and fixes
2024-10-01 00:22:11 -04:00
b12aeb79b0 Merge branch 'develop' into collected-small-changes 2024-09-30 22:10:14 -04:00
2749e091c7 update nemd example so it is reproducible 2024-09-30 22:10:00 -04:00
1dad5db38c remove ineffectual workflow changes 2024-09-30 21:46:16 -04:00
75f86a68a7 Merge pull request #4190 from alphataubio/kokkos-unit-testing
Improve Kokkos unit testing
2024-09-30 19:50:08 -04:00
c4b32f4b38 remove debugging lines, screen.* are inside the subfolders downloaded from the runs 2024-09-30 17:25:19 -05:00
4c91dcff3f list artifacts subfolders 2024-09-30 17:16:55 -05:00
29e995f137 keep debugging the artifacts downloaded 2024-09-30 17:09:28 -05:00
db4c6fbaaa restore changes from Kokkos upstream to support GFX1103 chips (Radeon 7xxM and 8xxM) with HIP 2024-09-30 17:59:40 -04:00
a5b94f0870 more debugging to list all files inside the artifacts folder 2024-09-30 16:46:34 -05:00
cb72f19595 temporarily put some debug lines in the workflow file 2024-09-30 16:25:24 -05:00
f5507c252d need to download the artifacts from cloud to the merge job 2024-09-30 16:10:09 -05:00
2fbfec0d11 use zipgrep for the merged zip artifact 2024-09-30 15:39:47 -05:00
97920f9fc3 try again with the github step summary 2024-09-30 15:15:30 -05:00
af2f9c06dc add #include "kokkos_few.h" 2024-09-30 15:51:37 -04:00
a199289e23 cuda bugfix 2024-09-30 15:47:06 -04:00
b25e370e63 some more fixes and rewording 2024-09-30 15:42:34 -04:00
a31f083bab update read_dump docs with respect to reading xyz style dump files 2024-09-30 14:54:35 -04:00
4cfc407605 Merge branch 'develop' of github.com:lammps/lammps into kokkos-unit-testing 2024-09-30 10:51:59 -06:00
ec392d5613 Remove failed attempts to create a job summary 2024-09-30 10:56:49 -04:00
3cefa5c9f1 try another approach for creating job summaries 2024-09-30 10:46:27 -04:00
d5f630db6c Fix sign used for atom-style potential
A positive sign in front of the electric potential is consistent with
E = -grad(electric potential).
2024-09-30 12:28:16 +01:00
d86de2862b Make signs consistent with efield = -grad(phi) 2024-09-30 12:10:33 +01:00
d33ecd6bbf reorder ctip style 2024-09-29 05:58:02 -06:00
622e3ed4d2 add notice after merge 2024-09-28 17:35:12 -04:00
2f53ea37e5 try printing GitHub job summary style 3 2024-09-28 13:31:56 -04:00
c16759ffc3 try printing GitHub job summary style 2 2024-09-28 13:24:41 -04:00
c1040ad9bb try printing GitHub job summary style 1 2024-09-28 13:13:43 -04:00
98834a3e27 fix cut-n-paste error 2024-09-27 20:06:27 -04:00
8b899d60fe Clarifying scoping for iterators in compute rheo/kernel 2024-09-27 15:32:54 -06:00
ba071fe55a Merge branch 'develop' into small-patches 2024-09-27 15:30:31 -06:00
c0d7b9975e avoid using std::shared_ptr. use new/delete for MPI rank 0 instead 2024-09-27 14:38:28 -04:00
65cacc7ef4 recreate log files for MS-MEAM due to changes to the code. 2024-09-27 14:29:05 -04:00
7276d5301b update unit test for change in MS-MEAM 2024-09-27 14:18:18 -04:00
51d104975a whitespace 2024-09-27 13:59:18 -04:00
0445936ac4 Added one-line change to make meam/ms correct for L12 lattice 2024-09-27 11:26:36 -06:00
7ccb7876f6 initialize *all* allocated iterms, even if we don't use them. 2024-09-27 12:40:39 -04:00
10e5f4270f Swapping srcmp to utils method
Co-authored-by: Axel Kohlmeyer <akohlmey@gmail.com>
2024-09-26 20:36:17 -06:00
13591dbdb0 Changing pour insertion note box 2024-09-26 20:02:47 -06:00
94f5f3cfa5 Fix compile issue with HIP 2024-09-26 15:25:32 -07:00
4436197081 PAdding possible note to fix pour doc 2024-09-26 16:14:57 -06:00
4035c3561e Merge branch 'develop' into collected-small-changes 2024-09-26 16:38:11 -04:00
ec2fece8db Merge pull request #4322 from stanmoore1/kk_update_4.4.0
Update Kokkos library in LAMMPS to v4.4.1
2024-09-26 16:29:31 -04:00
350551ecac Fix whitespace 2024-09-26 21:27:53 +01:00
5ee63d7afe documenting fix nonaffine/disp's incompatability with rerun 2024-09-26 13:06:32 -06:00
5d0f1aeeaf Expand documentation 2024-09-26 17:21:16 +01:00
d64be895e6 Allow for output of effective electronegativities 2024-09-26 16:42:01 +01:00
15e513958e clarification of min/max keywords in fix gcmc 2024-09-26 11:08:59 -04:00
ddaba91d12 Typo 2024-09-25 21:02:40 -06:00
c6fdd8ddb6 get rid of some non-ASCII characters 2024-09-25 22:01:42 -04:00
f30842ca11 first draft 2024-09-25 20:57:09 -04:00
e29e943ae6 apply clang-format 2024-09-25 18:48:47 -04:00
e44e462da6 remove redundant enum definition 2024-09-25 17:58:51 -04:00
725f6db5c1 skip no longer needed 2024-09-25 17:58:34 -04:00
e17e6e7a9d restore dihedral test 2024-09-25 17:58:22 -04:00
fee06d0d12 Merge branch 'develop' into kokkos-unit-testing 2024-09-25 17:52:59 -04:00
3a53b01ed9 Restricting options in fix wall/gran 2024-09-25 15:49:32 -06:00
2c2eb31362 Updating example logs affected by fix pour 2024-09-25 15:39:44 -06:00
149e92d1b9 Merge branch 'develop' into kokkos-unit-testing 2024-09-25 17:25:38 -04:00
7036930360 Patches to fix pour 2024-09-25 15:17:43 -06:00
385a0da892 update and correct description of running LAMMPS on Windows 2024-09-25 12:29:26 -04:00
17c5643d66 cosmetic 2024-09-25 11:59:30 -04:00
a420f1c42a Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2024-09-24 10:57:10 -04:00
bb0ead0ee3 fix cut-n-paste bug 2024-09-24 10:56:46 -04:00
80832ce763 Merge branch 'develop' of github.com:lammps/lammps into kk_update_4.4.0 2024-09-23 16:14:12 -06:00
7e31a4f482 Simplify view deallocation code 2024-09-23 16:14:06 -06:00
e95de835c0 Tweak build defaults 2024-09-23 15:38:29 -06:00
2e05cfeea9 Small code cleanup 2024-09-23 15:12:30 -06:00
2429c89eae Fix deadlock by always deallocating views of views in serial 2024-09-23 14:59:51 -06:00
e68851edae fix cut-n-modify issue 2024-09-23 14:54:54 -04:00
b9600c5a67 Merge remote-tracking branch 'github/develop' into collected-small-changes 2024-09-23 14:50:45 -04:00
d787ecdcb3 clarify docs for XYZ file format 2024-09-23 14:44:16 -04:00
cfe96064e8 Fixing errors in RHEO doc files 2024-09-23 12:39:16 -06:00
b95f7c2ab2 Merge pull request #4333 from evoyiatzis/patch-4
add extract() function to several angle styles
2024-09-23 14:27:47 -04:00
6f6e365682 unit test for extract() in angle-cosine_periodic.yaml 2024-09-22 20:24:26 +02:00
11aa128951 unit test for extract() in angle-fourier_simple.yaml 2024-09-22 20:23:32 +02:00
950bcba592 unit test for extract() in angle-fourier.yaml 2024-09-22 20:22:43 +02:00
8355d3796a unit test for extract() in angle-cosine_squared_restricted.yaml 2024-09-22 20:09:37 +02:00
662ea3a191 unit test for extract() in angle-quartic.yaml 2024-09-22 20:08:52 +02:00
517b4f4342 unit test for extract() in angle-dipole.yaml 2024-09-22 20:06:17 +02:00
d6d63b87d1 unit test for extract() in angle-class2.yaml 2024-09-22 20:05:32 +02:00
1287977bee unit test for extract() in angle-spica.yaml 2024-09-22 20:04:32 +02:00
cd4bada16f unit test for extract() in angle-charmm.yaml 2024-09-22 20:03:33 +02:00
25c9f5a6ff unit test for extract() in angle-mm3.yaml 2024-09-22 20:01:52 +02:00
96d99e3dd6 unit test for extract() in bond-fene_expand.yaml 2024-09-22 15:33:46 +02:00
0d6abcb86a unit test for extract() in bond-mm3.yaml 2024-09-22 15:31:01 +02:00
abb8b5ae45 reorder to avoid overflows 2024-09-22 00:11:03 -04:00
2a6fdfec02 improve error message and labelmap detection 2024-09-21 22:20:24 -04:00
12b67e0fd1 update ASPHERE/line example to follow conventions and avoid crashes. 2024-09-21 17:48:17 -04:00
061c80104a add docs to mention using a type labels for xyz files with string labels 2024-09-21 12:24:41 -04:00
d16d744550 enable and apply clang-format 2024-09-21 12:12:27 -04:00
29fce19c19 support typelabels for parsing xyz file with non-numeric types 2024-09-21 11:57:01 -04:00
8294bea7a7 Update angle section of fix_adapt.rst 2024-09-21 10:02:06 +02:00
5290779554 Merge branch 'develop' into collected-small-changes 2024-09-21 00:01:28 -04:00
3c8b846a66 Merge pull request #4330 from akohlmey/rheo-gsl-to-lapack
Convert RHEO package to use plain LAPACK instead of GSL
2024-09-21 00:00:13 -04:00
20f3b5a7db update readme 2024-09-20 21:44:52 -04:00
68548cbb0d Update angle_spica.cpp 2024-09-20 20:53:22 +02:00
d8c0691684 Update bond section of fix_adapt.rst 2024-09-20 19:55:07 +02:00
b2a2cefc02 add extract() function to bond_fene_expand.cpp 2024-09-20 19:38:58 +02:00
423b058820 add extract() function to bond_fene_expand.h 2024-09-20 19:38:22 +02:00
7f0ff96324 add extract() function to angle_class2.cpp 2024-09-20 19:37:12 +02:00
b49f3412df add extract() function to angle_class2.h 2024-09-20 19:36:35 +02:00
c5e62b4a47 add extract() function to angle_dipole.cpp 2024-09-20 19:35:46 +02:00
873030982d add extract() function to angle_dipole.h 2024-09-20 19:35:11 +02:00
3ce4c782d1 add extract() function to angle_spica.cpp 2024-09-20 19:34:16 +02:00
8e07149593 add extract() function to angle_spica.h 2024-09-20 19:33:41 +02:00
8a2564fff1 add extract() function to bond_mm3.cpp 2024-09-20 19:32:41 +02:00
4272d4a390 add extract() function to bond_mm3.h 2024-09-20 19:32:05 +02:00
83b2e88b73 add extract() function to angle_mm3.cpp 2024-09-20 19:31:20 +02:00
c65a6e8b59 add extract() function to angle_mm3.h 2024-09-20 19:30:42 +02:00
cc9f45af88 add extract() function to angle_cosine_squared_restricted.cpp 2024-09-20 19:29:34 +02:00
25f12bf800 add extract() function to angle_cosine_squared_restricted.h 2024-09-20 19:28:56 +02:00
f916a0cc63 add extract() function to angle_cosine_periodic.cpp 2024-09-20 19:27:58 +02:00
42f0940aee add extract() function to angle_cosine_periodic.h 2024-09-20 19:27:18 +02:00
7b37f1ae17 add extract() function to angle_fourier.cpp 2024-09-20 19:26:25 +02:00
bf9cb26afb add extract() function to angle_fourier.h 2024-09-20 19:25:49 +02:00
1e00249b73 add extract() function to angle_quartic.cpp 2024-09-20 19:25:04 +02:00
df533d97cb add extract() function to angle_quartic.h 2024-09-20 19:24:20 +02:00
3b73f56d79 add extract() function to angle_fourier_simple.cpp 2024-09-20 19:22:29 +02:00
9d1a0240d6 add extract() function to angle_fourier_simple.h 2024-09-20 19:21:32 +02:00
438a8c9335 add extract() function to angle_charmm.cpp 2024-09-20 19:19:47 +02:00
cc24f3d240 add extract() function to angle_charmm.h 2024-09-20 19:16:55 +02:00
958f2ae58b add tests for library interface and python 2024-09-20 03:57:12 -04:00
e35a00258e add lammps_expand() to swig interface file 2024-09-20 03:56:36 -04:00
3902215018 add lammps_expand to plugin wrapper 2024-09-20 03:56:19 -04:00
95afe40f55 add lammps_expand() to Fortran wrapper 2024-09-20 03:46:36 -04:00
3905cfd0a6 avoid memory leak 2024-09-20 00:58:40 -04:00
5e15eb6949 add lammps_expand() method and make available in python 2024-09-20 00:17:06 -04:00
11838801d6 add extract() function to angle style cosine/squared 2024-09-19 07:21:15 -04:00
6f10648d5f update unit test 2024-09-19 05:03:37 -04:00
586e6bb410 must run apt-get update before installing packages to avoid failures 2024-09-19 04:55:49 -04:00
b1eefe71c7 add extract() method to bond style harmonic/shift/cut 2024-09-19 04:53:04 -04:00
3d2a344dd5 we no longer need to install GSL for workflows with RHEO 2024-09-19 03:36:09 -04:00
d23b8aa17f try to work around macOS issue 2024-09-18 23:29:49 -04:00
4eb1b1f606 clarify docs 2024-09-18 23:14:27 -04:00
bf469b347e add missing override 2024-09-18 20:51:12 -04:00
42bcc43ece add missing line in Install.sh file 2024-09-18 20:22:17 -04:00
d909b205c7 update docs for building the RHEO package 2024-09-18 20:14:43 -04:00
1ac9f0801c update build support for using LAPACK with RHEO instead of GSL 2024-09-18 19:55:59 -04:00
b16b683cb4 replace calls to GSL with calls to LAPACK 2024-09-18 19:26:00 -04:00
9f867b5f54 add LAPACK functions for matrix inversion via Cholesky decomposition 2024-09-18 19:13:37 -04:00
ce13d22656 enable and apply clang-format, modernize access to list of fixes 2024-09-18 11:33:03 -04:00
575c1014d4 bugfix in lammps-open.py unit test 2024-09-17 22:13:07 -06:00
805c2ae131 Merge pull request #4326 from akohlmey/collected-small-changes
Collected small changes and fixes
2024-09-17 08:48:46 -04:00
6503f297d4 support angle style hybrid with fix adapt 2024-09-16 21:21:20 -04:00
47bb1a8748 update unit test 2024-09-16 21:04:22 -04:00
516d988deb update fix adapt docs 2024-09-16 20:59:04 -04:00
5d40a9640d add support for bond style hybrid to fix adapt 2024-09-16 20:49:44 -04:00
11365e7b2e add extract method to bond style harmonic/shift 2024-09-16 20:48:41 -04:00
804aa4ee85 improve error message 2024-09-16 20:38:50 -04:00
80cd9ace57 remove documentation check (for now) 2024-09-16 01:07:38 -04:00
4a9b7b1ba7 fix typo 2024-09-16 00:59:43 -04:00
f8eac87724 make programming style check and doc info check a github action 2024-09-16 00:56:09 -04:00
44d86c378b relax epsilon or mark unstable based on test results on non-x86 architectures 2024-09-16 00:34:28 -04:00
0db24828a5 first draft delete_atoms/kk 2024-09-15 12:20:12 -04:00
4d55c53c10 update rst kk 2024-09-14 21:01:06 -04:00
1f28ac4f54 oops 2024-09-14 20:50:30 -04:00
0db92ea135 auto variables for lambda capture 2024-09-14 20:48:20 -04:00
0a9137272d replace ubuf with static_cast 2024-09-14 20:33:40 -04:00
0921c8e087 pack/unpack on device 2024-09-14 19:51:43 -04:00
ae7fa643fd oops 2024-09-14 18:08:57 -04:00
94eed6e10a sort on device 2024-09-14 18:02:33 -04:00
78b2b7a024 explicit warning(s) exchange_comm_device=0 2024-09-14 17:29:56 -04:00
02b6fa088d explicit warning(s) which fix sort_device=0 2024-09-14 17:22:11 -04:00
f133b8a4a0 cleanup 2024-09-14 17:14:57 -04:00
813fd880cd tagged operators 2024-09-14 17:09:21 -04:00
63483b3fc2 KOKKOS_CLASS_LAMBDA 2024-09-14 16:09:56 -04:00
8dfc6207c2 fix warnings 2024-09-14 16:04:15 -04:00
2556788ed2 thanks @crtrott 2024-09-14 15:02:55 -04:00
8c4e67c10b add concurrency group feature to unit test workflows, too. 2024-09-14 06:07:07 -04:00
79fbd46bd9 try out concurrency group feature on quick regression as suggested by @junghans 2024-09-14 06:04:35 -04:00
1587473ab5 fix comparison for missing arguments when using wildcards 2024-09-14 05:11:51 -04:00
bdca275f10 correct indexing when filling lmp_firstneigh array 2024-09-14 02:25:03 -04:00
fe8611bfc8 sync author info with LAMMPS home page 2024-09-13 22:55:05 -04:00
861be216a1 parallel_scan 2024-09-13 14:38:12 -04:00
5075c7cfa1 Update CMake 2024-09-13 12:16:58 -06:00
487f7ade68 Update Kokkos library in LAMMPS to v4.4.1 2024-09-13 12:14:49 -06:00
96c776c51f Add log files for qtpie/reaxff examples 2024-09-13 18:08:14 +01:00
3f232caf9b Fix whitespace 2024-09-13 17:13:59 +01:00
af6efcc514 Add fix qtpie/reaxff documentation 2024-09-13 16:43:13 +01:00
bd07f1e8e0 Change qeq to qtpie 2024-09-13 15:56:16 +01:00
8ec010f8ca Remove unused header file 2024-09-13 15:54:12 +01:00
d56f43b4e6 Remove unnecessary tests 2024-09-13 15:50:44 +01:00
62f82a7fe1 Remove additional fix name 2024-09-13 15:46:27 +01:00
3079d51eaf enforce that Pair::map is always initialized 2024-09-13 05:34:40 -04:00
97627bd77a fix indexing error 2024-09-13 05:34:15 -04:00
92bd9fc161 fix linking a URL and fix spelling 2024-09-13 02:20:26 -04:00
1adaab80aa make certain values for LAMMPS variables are initialized 2024-09-13 00:11:13 -04:00
2995cb76ae Merge pull request #4324 from rbberger/cmake_optional_docenv
Make CMake Doc build docenv optional
2024-09-12 17:57:45 -04:00
9339da075b Merge pull request #4299 from evoyiatzis/patch-3
Allow the definition of point in region plane using variables
2024-09-12 17:52:30 -04:00
36d73e8976 Merge branch 'kk_update_4.4.0' of https://github.com/stanmoore1/lammps into kk_update_4.4.0 2024-09-12 17:34:28 -04:00
5699e3c8cf add overridable settings 2024-09-12 17:34:12 -04:00
72024e90c9 Only check dynamic rank 2024-09-12 14:18:31 -06:00
d67d237386 Update author contributions 2024-09-12 19:41:12 +01:00
7b19228299 Make realloc_kokkos function safer, suggested in discussion with @weinbe2 2024-09-12 11:30:11 -06:00
0abcec1b22 Merge branch 'kk_update_4.4.0' of github.com:stanmoore1/lammps into kk_update_4.4.0 2024-09-12 10:50:45 -06:00
dc15e4ae81 Enforce options in CMake 2024-09-12 10:50:19 -06:00
18f1d32f8e Apply suggestions from code review
Co-authored-by: Axel Kohlmeyer <akohlmey@gmail.com>
2024-09-12 09:00:55 -06:00
58272bca00 move and update ctip example 2024-09-12 00:17:21 -04:00
5a12c762f3 Merge branch 'develop' into ctip 2024-09-11 23:36:16 -04:00
0ebd4f5ddb Make CMake Doc build docenv optional 2024-09-11 21:33:07 -06:00
9525dae7b9 Merge branch 'develop' into kk_update_4.4.0 2024-09-11 13:35:32 -04:00
fcbc37d5a4 Merge pull request #4321 from akohlmey/collected-small-fixes
Collected small changes and fixes
2024-09-11 13:07:02 -04:00
64db592a84 Update Kokkos version in CMake 2024-09-11 09:45:21 -06:00
cfcd7ddfbc Add KOKKOS_ENABLE_ATOMICS_BYPASS 2024-09-11 09:31:54 -06:00
a44955dd2e Update Kokkos library in LAMMPS to v4.4.0 2024-09-11 09:20:36 -06:00
e8184e63a5 create dummy output files to prevent test job failures 2024-09-11 09:15:05 -04:00
c3a62833c7 update 2024-09-11 06:54:06 -04:00
9f2bc30ba6 rename source files to be consistent with naming conventions 2024-09-11 06:46:51 -04:00
6b2a47d9c6 fix typo 2024-09-11 06:34:15 -04:00
4b7045d9ba Merge remote-tracking branch 'github/develop' into collected-small-fixes 2024-09-11 00:31:46 -04:00
16b19c71c1 Merge pull request #4207 from stanmoore1/kk_reaxff_overflow
Fix integer overflow for large QEq systems with KOKKOS package
2024-09-11 00:31:01 -04:00
0f4aedaf39 Merge pull request #4318 from weinbe2/bugfix/reaxff-bond-int-overflow
Fixes to ReaxFF/Kokkos integer overflow issues for bond tables + cleanup of unused compute
2024-09-11 00:30:25 -04:00
3308915a7b Merge remote-tracking branch 'github/develop' into collected-small-fixes 2024-09-11 00:11:43 -04:00
fde43d5079 Merge pull request #4143 from hagertnl/hagerty_issue4140_kokkos_collective
Implement kspace_modify collective yes in KOKKOS package
2024-09-11 00:07:10 -04:00
b74ef238c9 Merge branch 'develop' into collected-small-fixes 2024-09-10 23:32:37 -04:00
4a11b96635 update with upstream 2024-09-10 23:31:37 -04:00
94e3351e4f Merge pull request #4308 from lammps/quick-regression
Add a quick and full regression test as GitHub Actions
2024-09-10 23:28:49 -04:00
d76e10d2ca remove some more VLAs 2024-09-10 22:12:22 -04:00
ac5d2d560d remove redundant code 2024-09-10 21:49:21 -04:00
88ceae303f documentation integration and version tags 2024-09-10 21:41:20 -04:00
55fc12a5d1 add force style test 2024-09-10 21:31:27 -04:00
89f314fec2 Pair::single() is not supported 2024-09-10 21:31:14 -04:00
6b2dc5d3e8 make consistent 2024-09-10 21:23:20 -04:00
0ac23fddd3 avoid variable length arrays 2024-09-10 21:22:56 -04:00
a15c51a8c4 make reading of QEq parameters compatible with all QEq styles 2024-09-10 21:16:12 -04:00
2b1bef39e4 bring back changes from develop that were wiped out 2024-09-10 21:15:37 -04:00
6488fd2a48 reorganize example, potentials, logfiles 2024-09-10 21:14:52 -04:00
2b03a1ce17 move VLA arrays to header and initialize them only once 2024-09-10 20:31:58 -04:00
ddaba8a2c4 must not free memory that was obtained by extract() 2024-09-10 20:31:17 -04:00
1de74b46cd modernize 2024-09-10 20:30:49 -04:00
12abaf83cc Changes from @sjplimp 2024-09-10 16:25:06 -06:00
b39386afe5 count all the runs with error and failed num checks as failed 2024-09-10 17:00:57 -05:00
cbbea47718 fix the incorrect keys 2024-09-10 16:22:35 -05:00
8e2dacd0e3 put some cosmetic stuffs 2024-09-10 15:51:04 -05:00
847ce1e363 enable generating new reference log files if desirable 2024-09-10 15:39:52 -05:00
8e99835100 Merge pull request #4319 from ndtrung81/gpu_max_num_blocks
Enable large numbers of atoms per proc with the GPU package
2024-09-10 12:35:22 -04:00
6f2c4aaf0b Remove unused code 2024-09-10 16:40:19 +01:00
25f33e8721 Add water examples featuring fix qtpie/reaxff 2024-09-10 16:20:51 +01:00
b16bb27184 revert to using the max number of blocks on device for each pass, as the number of blocks (32767 or 65535) already saturates the number of SMs anyway 2024-09-10 09:47:07 -05:00
c63c88f8b6 reduced the max number of blocks for each transpose 2024-09-10 08:58:42 -05:00
5e8ecf9cb4 Rename variables and function for min exponent 2024-09-10 14:45:16 +01:00
7006e19d59 Update fix_cmap_kokkos.cpp 2024-09-10 07:57:51 -04:00
f398add7d5 fixed the value of shift being the number of rows processed in each chunk (g2y_m * b2y) 2024-09-10 00:36:13 -05:00
23bdc5ddc2 Allowed number of blocks greater than 65,535 for k_transpose 2024-09-10 00:18:50 -05:00
a6b9c17010 update reference.yaml 2024-09-09 22:30:09 -04:00
50d0eace23 more consistent conversions 2024-09-09 21:47:30 -04:00
29bd3fc11b apply clang-format 2024-09-09 21:12:03 -04:00
68e134773c move pair style and fix whitespace 2024-09-09 20:58:01 -04:00
a4a8f99471 forgot to update the --analyze step to 8 runners 2024-09-09 20:50:16 -04:00
48689d1925 Merge branch 'develop' into ctip 2024-09-09 20:46:09 -04:00
c3162b4488 increase timeout for full regression to 180 seconds. use 8 runners. 2024-09-09 20:29:23 -04:00
f875b1e110 Tweak error message to use correct style 2024-09-09 17:51:19 -06:00
f7553779ff Merge branch 'develop' of github.com:lammps/lammps into kk_reaxff_overflow 2024-09-09 15:55:02 -06:00
2be54aa454 Cleaned up the spurious calculations in Cdbo, Cdbopi, Cdbopi2 and removed the overallocations 2024-09-09 12:56:59 -07:00
8b9e2544f0 Verified that some unused data gets written to extra space in Cdbo, Cdbopi, Cdbopi2 via moving them to 3-d Views 2024-09-09 12:56:57 -07:00
fced73ffd7 Converted d_bo_list and d_hb_list to 2-d Views, removed integer overflow checks 2024-09-09 12:18:10 -07:00
8e56f37d3d Removed the variables bo_first_i, hb_first_i from build_bo/hb_list, replacing them with the strided offset calculation 2024-09-09 12:14:44 -07:00
c05390209e Removed d_bo_first, d_hb_first, replacing it with the strided offsets to the bonds for atom i 2024-09-09 12:10:13 -07:00
274112834b remove double quotes 2024-09-08 17:11:02 -05:00
4d04d8492d report the number of abs and rel diff checks failed 2024-09-08 17:09:05 -05:00
9cfd809b6e feeble attempt 2024-09-08 17:03:40 -04:00
3dcfb3f755 replace error->all() with kokkos::abort() 2024-09-08 16:54:44 -04:00
29e0ec3809 revert to original cmap plus minimal changes for kk 2024-09-08 16:46:16 -04:00
7724502e90 Merge branch 'alphataubio-kokkos-fixes' of https://github.com/alphataubio/lammps-alphataubio into alphataubio-kokkos-fixes 2024-09-08 16:40:42 -04:00
b67b38ab68 kokkos parallel_for 2024-09-08 16:36:39 -04:00
4e8e84a1e4 Merge branch 'lammps:develop' into alphataubio-kokkos-fixes 2024-09-08 13:48:43 -04:00
bce51ea2c9 Update fix_nve_limit_kokkos.cpp 2024-09-08 12:53:49 -04:00
77bf224b3f report if a run is timeout to progress.yaml 2024-09-08 00:24:33 -05:00
397ca4bd25 correct the file names in examples phonon that are actually not LAMMPS input 2024-09-07 09:10:25 -05:00
6b68656a74 fix a typo 2024-09-07 09:06:22 -05:00
57353566d6 one more fix (it is getting late...) 2024-09-07 00:35:57 -04:00
fa5a3446c0 add forgotten file 2024-09-07 00:28:59 -04:00
5aea0a061f provide updated reference and update command line 2024-09-07 00:22:56 -04:00
e5c870fcd2 switch full regression back to serial execution 2024-09-06 23:15:32 -04:00
c853b8d81a switch quick run back to serial 2024-09-06 23:14:09 -04:00
b6e78c1f20 another attempt to avoid oversubscription error 2024-09-06 21:46:18 -04:00
6cd710444d add dedicated config for quick regression test. allow oversubscription. 2024-09-06 21:34:10 -04:00
6e0c44a25c temporarily run the full test with the pull request 2024-09-06 21:18:58 -04:00
afc9f72887 whitespace 2024-09-06 21:18:31 -04:00
6214182fd0 remove unused imports, reformat 2024-09-06 21:06:01 -04:00
93b4e91801 update docs and add ref 2024-09-06 20:51:56 -04:00
0b92bf2c0c oops 2024-09-06 19:40:21 -04:00
d19f5e0e8e bugfix 2024-09-06 19:30:15 -04:00
bca271a286 mention regression tester in Build_development 2024-09-06 17:34:35 -05:00
b09e88a179 Merge pull request #4314 from akohlmey/collected-small-changes
Collected small changes and fixes
2024-09-06 16:24:31 -04:00
8fcdb5c271 silence compiler warnings 2024-09-06 14:58:42 -04:00
42a7294bc1 silence compiler warnings 2024-09-06 14:00:27 -04:00
d20ce26bd8 Merge pull request #4313 from cjknight/aurora_updates
Intel GPU updates: kspace & cmake
2024-09-06 13:51:43 -04:00
932f10e3b6 update README for syntax and added arguments in run_tests.py 2024-09-06 12:46:42 -05:00
1683205fed cleanup 2024-09-06 13:42:33 -04:00
b4e01aaa45 fix warnings 2024-09-06 13:42:16 -04:00
2a2ea89524 fix warnings 2024-09-06 13:40:47 -04:00
e65fb63a97 match base class in kokkos 2024-09-06 13:39:18 -04:00
eedcbc6b5f Revert "match base class in kokkos"
This reverts commit 36494af3c7.
2024-09-06 13:36:34 -04:00
36494af3c7 match base class in kokkos 2024-09-06 13:36:13 -04:00
638bba5319 fix warnings 2024-09-06 13:27:08 -04:00
1335774593 Update fix_recenter_kokkos.cpp 2024-09-06 13:24:13 -04:00
8eeba71f5f cleanup 2024-09-06 13:19:47 -04:00
b468e1cb9a kokkos atan2 2024-09-06 13:04:31 -04:00
74e61c05b9 fix warnings 2024-09-06 12:42:49 -04:00
78342e5b6f fix typo 2024-09-06 12:28:46 -04:00
6b83ef8d33 auto var lambda capture 2024-09-06 12:21:29 -04:00
e25979386a Update fix_nve_limit_kokkos.cpp 2024-09-06 12:18:33 -04:00
bbc3dc2958 auto atomKK variables for lambda capture 2024-09-06 11:56:19 -04:00
842896040d Merge branch 'develop' into aurora_updates, resolve merge conflicts 2024-09-06 11:20:29 -04:00
0c788f831e Merge pull request #4294 from rbberger/add_kspace_nvpl_support
Add Kspace NVPL FFT support
2024-09-06 11:04:51 -04:00
b2cc2582e1 switch to config.yaml in actual runs in quick and full tests 2024-09-06 09:33:23 -05:00
de8dc82801 report walltime normalized by the reference walltime for completed runs in the progress.yaml file 2024-09-06 09:19:00 -05:00
e1d6bb91a8 get reference walltime from running bench/in.lj, guess the default config file if not specified from the command line args 2024-09-06 09:06:45 -05:00
bafe7c91fa switch to using config.yaml with 4 procs for testing 2024-09-06 08:29:55 -05:00
f179f2a80d update a few reference data files for current LAMMPS 2024-09-06 07:32:19 -04:00
513fc95f81 update msi2lmp manpage 2024-09-06 07:30:50 -04:00
93de00f649 move kspace style definition after reading the data file to comply with needs of recent LAMMPS versions 2024-09-06 07:25:52 -04:00
683643c248 sort lists of bonds, angles, dihedrals and impropers by atom IDs before comparing 2024-09-06 07:25:01 -04:00
4554c0367b use memcpy() instead of strncpy() to avoid issues with adding a terminal zero and array boundaries 2024-09-06 07:24:07 -04:00
3e2f929f31 must call Error::all() from all MPI ranks. 2024-09-05 23:22:04 -04:00
360fdabc19 small clarification 2024-09-05 23:05:25 -04:00
d67e0e6a41 consolidate spelling 2024-09-05 21:47:35 -04:00
03631aab00 whitespace and spelling fixes 2024-09-05 21:46:32 -04:00
95cb7d7dd8 Merge branch 'develop' into quick-regression 2024-09-05 17:23:52 -04:00
3357889d57 install MPI 2024-09-05 17:21:42 -04:00
5881a60f50 Revert change to fix shake that is no longer needed 2024-09-05 14:42:51 -06:00
688cff71e6 print out more info for failed tests if verbose is True, indent output 2024-09-05 11:22:00 -05:00
dfd0772aff list the failed tests (including crashed, with error, or numerical checks) into a separate file 2024-09-05 10:38:32 -05:00
e22ff76132 fix cuda warnings 2024-09-05 08:32:21 -04:00
33080199e7 fix cuda warnings 2024-09-05 08:29:08 -04:00
3312ef9793 KOKKOS_INLINE_FUNCTION powint() to replace MathSpecial::powint 2024-09-05 08:25:13 -04:00
04ff7b4736 add missing import 2024-09-05 04:18:23 -04:00
79dc5ee130 Merge branch 'python-lint' into collected-small-changes 2024-09-05 04:04:52 -04:00
274f86b142 Merge branch 'develop' into python-lint 2024-09-05 04:03:06 -04:00
e3ced6d26f docs 2024-09-04 23:44:44 -05:00
29cd430da6 no longer need the warnings module since the deprecated functions were removed 2024-09-04 23:09:10 -04:00
7e6eb96422 Merge branch 'alphataubio-kokkos-fixes' of https://github.com/alphataubio/lammps-alphataubio into alphataubio-kokkos-fixes 2024-09-04 22:38:24 -04:00
9932c4e38b add 3d float views to ArrayTypes<LMPHostType> 2024-09-04 22:38:19 -04:00
ee602a7daa Merge branch 'lammps:develop' into alphataubio-kokkos-fixes 2024-09-04 21:05:58 -04:00
4ed5dfe88d reported the total wall time of each run in the progress.yaml file 2024-09-04 15:32:20 -05:00
ab10f2d723 Update fix_efield.cpp 2024-09-04 16:12:23 -04:00
49d2a4026d Update fix_efield.h 2024-09-04 16:11:17 -04:00
18514f404f docs: mentiond build options for NVPL FFT 2024-09-04 12:00:31 -06:00
37e6f3ef21 kspace: add NVPL FFT support 2024-09-04 12:00:31 -06:00
9e8a1f4734 Remove comment 2024-09-04 11:15:59 -06:00
26af8878c9 More general fix 2024-09-04 11:13:35 -06:00
7a1dd6e82e Merge branch 'develop' of github.com:lammps/lammps into aurora_updates 2024-09-04 11:08:12 -06:00
7d93460717 add commented example for implementing a command style 2024-09-04 08:23:29 -04:00
311cac0348 Add document describing how to implement a new command style 2024-09-04 05:47:59 -04:00
ec98481d01 move check for libcurl to EXTRA-COMMAND.cmake package CMake module 2024-09-04 04:22:49 -04:00
597c53756e update plumed library to version 2.9.2 2024-09-03 22:33:39 -04:00
e240619b94 update pace plugin loader to include the two additional styles added 2024-09-03 22:30:32 -04:00
7b025e1a1f Merge branch 'develop' into qtpie 2024-09-03 17:31:16 -04:00
4aefb894bb remove comments 2024-09-03 15:56:16 -05:00
9243959ca4 Merge pull request #4304 from akohlmey/collected-small-changes
Add lammps_extract_atom_size() call to library interface and equivalent to python and fortran modules
2024-09-03 16:43:37 -04:00
42b6c0f62c enable cmake support 2024-09-03 20:10:29 +00:00
2f7a7d1edb forgot shake header 2024-09-03 20:07:53 +00:00
3a5e764730 Fix whitespace 2024-09-03 17:50:14 +01:00
49dcb679f6 Change names of orbital exponents 2024-09-03 12:22:10 +01:00
731847b4dc report proper style name in error messages 2024-09-02 21:21:14 -04:00
5fab9e665f Update with changes made to fix_qeq_reaxff.cpp 2024-09-02 16:59:07 +01:00
ba2217a4b4 Improve exceptions in reading of gauss file 2024-09-02 16:12:23 +01:00
dff91accb0 Correct calculation of cut off distance 2024-09-02 16:12:23 +01:00
f3e5e4b4c1 Rename misleading variable name 2024-09-02 16:12:23 +01:00
79cc70c9da Rename variable for sum of local and ghost atoms 2024-09-02 16:12:23 +01:00
62b14aa702 Remove unused include 2024-09-02 16:12:23 +01:00
c2e4816717 Update contributing authors 2024-09-02 16:12:23 +01:00
6dd45ccfdb Add fix_qtpie_reaxff 2024-09-02 16:12:23 +01:00
eb6e5b438a Remove virtual keyword 2024-09-02 16:12:23 +01:00
149d9b310d Remove dual as a possible keyword argument 2024-09-02 16:12:23 +01:00
5021c8c971 Replace qeq with qtpie 2024-09-02 16:12:23 +01:00
27e911cd10 Remove chi_field 2024-09-02 16:12:23 +01:00
6d47e41741 Update calculation of chi_eff
chi_eff can now be calculated when atom or equal style variables are
used for the electric field, under the restriction that the electric
field is applied to all atoms.
2024-09-02 16:12:23 +01:00
8c8882927c Rename variables in calc_chi_eff() 2024-09-02 16:12:23 +01:00
bfb1c64b64 Add functionality for calculating chi_eff 2024-09-02 16:12:23 +01:00
be43a2bdeb Allow for reading of Gaussian exponents from file 2024-09-02 16:12:23 +01:00
d9151d745a Create fix qtpie/reaxff 2024-09-02 16:12:23 +01:00
7c80b00f23 small corrections in the DIFFRACTION package, mostly cosmetic 2024-09-02 06:26:27 -04:00
27d5ad1714 convert string to int 2024-09-01 08:49:13 -04:00
a9573551a7 run 100 quick test inputs at the most 2024-09-01 08:43:16 -04:00
14dc326160 fix typo 2024-09-01 08:36:50 -04:00
6aa6ed86be Curb number of (randomly) selected tests for quick regression run 2024-09-01 08:33:12 -04:00
da98d30cf7 update README 2024-09-01 08:31:52 -04:00
1b5413189d Add more details to documentation of GitHub CLI "gh" 2024-09-01 08:15:58 -04:00
a143e0a183 small corrections 2024-09-01 08:15:26 -04:00
f6f7122041 Merge branch 'doc-modified' into collected-small-changes 2024-09-01 08:09:45 -04:00
93d11c376d Fix small typo and errors, unifiy example inputs 2024-09-01 15:48:34 +08:00
aa901b205d only run quick regression if there are actual input files to process 2024-09-01 00:59:15 -04:00
d3d9094ad0 update settings when the actions will be triggered automatically 2024-09-01 00:44:23 -04:00
3ea0612795 small cleanups 2024-09-01 00:39:27 -04:00
af747ac6c0 restore old code structure so we can test subsets again 2024-09-01 00:17:25 -04:00
0f1b7b5bd6 simplify even more 2024-09-01 00:09:19 -04:00
f39e795bca revert changes to create_box 2024-08-31 23:19:16 -04:00
591d20b00d Merge branch 'develop' into quick-regression 2024-08-31 23:16:27 -04:00
6fb50cbdc1 integrate quick regression support into regression tester 2024-08-31 23:16:02 -04:00
62bfd7dc74 Move Linux unit test workflow to PR #4304 2024-08-31 16:05:55 -04:00
2e58e4c428 Simplify some more. don't install undetected MPI. 2024-08-31 15:57:34 -04:00
debda72170 print ccache statistics after compilation again 2024-08-31 15:51:52 -04:00
8023074650 build release version 2024-08-31 15:30:40 -04:00
0b7ba6f8c1 let ninja decide how many processes to launch 2024-08-31 15:23:55 -04:00
b372aa0bdc try to skip using Fortran 2024-08-31 15:18:27 -04:00
06bee65a1a use windows style pathnames 2024-08-31 15:10:11 -04:00
34bd2c4f2a use our own fork 2024-08-31 14:58:53 -04:00
b890aee7de update alternate action from GitHub marketplace 2024-08-31 14:55:01 -04:00
11172b1c62 use different structure 2024-08-31 14:42:50 -04:00
73fdd66f03 correct syntax issue 2024-08-31 14:40:31 -04:00
d85380476d alternate approach for using ninja with MSVC++ 2024-08-31 14:38:12 -04:00
6e612f68c2 remove misplaced comma 2024-08-31 14:09:47 -04:00
6d55da7207 bring back multi-config 2024-08-31 14:00:51 -04:00
6c40e8dc79 revert back to MSBuild and report launcher, if active 2024-08-31 13:57:54 -04:00
2998d88edb prefer MSVC++ over MinGW 2024-08-31 13:48:10 -04:00
72acea291a switch to ninja-build and single configuration setup 2024-08-31 13:42:55 -04:00
0d7305672b use chocolatey instead of winget 2024-08-31 12:48:09 -04:00
55a549a2fb try speed up windows compilation with ccache 2024-08-31 12:43:50 -04:00
56ae7e465e Merge branch 'develop' of https://github.com/lammps/lammps into aurora_updates 2024-08-31 11:33:51 -05:00
7492ab7541 sync forces on step 0 2024-08-31 11:18:43 -05:00
78597a9c39 add fortran module tests for extracting atom properties with array dimensions 2024-08-31 12:16:27 -04:00
6f114eddea Fix typo in CMakeLists.txt 2024-08-31 11:14:50 -04:00
84fa26ee2c update test checking tool 2024-08-31 11:13:53 -04:00
2c05378815 expand python module unit tests for extract_atom() 2024-08-31 07:04:59 -04:00
7d176cb66e fix logic bug 2024-08-31 07:04:53 -04:00
70a62d5ebf make certain that the mass and mass_setflag arrays are fully initialized (to zero) 2024-08-31 06:20:44 -04:00
6ebdb0b982 some more tweaks to the workflows 2024-08-31 04:53:09 -04:00
e5f8a4bec5 must install mpi for compiling with mpi 2024-08-31 04:47:03 -04:00
fb2c060d63 add unit test run on GitHub with -DLAMMPS_BIGBIG 2024-08-31 04:40:25 -04:00
abc621ddbd Add GitHub workflow to check for variable length arrays 2024-08-31 04:33:31 -04:00
a764930998 consolidate replicated enum to base class header and inside the class definition 2024-08-31 02:00:30 -04:00
d908010ead Merge branch 'develop' into patch-3 2024-08-31 01:54:29 -04:00
b2ce4051aa Consistent spacing after full stops. 2024-08-31 01:53:54 -04:00
59fdfaf884 consistent indentation 2024-08-31 01:50:58 -04:00
70b8b987ca add noreturn attribute to templated version of error->one and error->all 2024-08-31 00:57:59 -04:00
35c36bb16e step version number for LAMMPS-GUI 2024-08-31 00:55:22 -04:00
dab9d4bc59 Merge branch 'develop' into hagerty_issue4140_kokkos_collective 2024-08-31 00:08:30 -04:00
cdd2640101 remove double delete[] 2024-08-30 23:22:29 -04:00
0cdf8f2658 swap rows/cols for less confusion 2024-08-30 23:16:37 -04:00
b426556632 replace bogus allocation 2024-08-30 22:51:31 -04:00
3e7123e21e make compatible with comm_modify vel yes 2024-08-30 22:51:08 -04:00
9d9e591b54 first try at implementing lammps_extract_atom_size() 2024-08-30 22:50:42 -04:00
1fe905d8a2 update types 2024-08-30 15:15:18 -05:00
9a11570836 cleanup 2024-08-30 19:08:35 +00:00
d9e6dff93b cleanup 2024-08-30 14:05:36 -05:00
e921af8efa fix bug where custom property dimension was not reported 2024-08-30 10:40:58 -04:00
f3f69da328 expand tests on properties including custom properties 2024-08-30 10:29:41 -04:00
6b1aec981e exceptions are always enabled now 2024-08-29 22:33:40 -04:00
02f16251d4 flag development version 2024-08-29 22:09:11 -04:00
2d8e473807 Merge branch 'develop' of github.com:lammps/lammps into kk_reaxff_overflow 2024-08-29 14:37:16 -06:00
0c753d92ba single & double support ; fix plan bug 2024-08-29 18:21:26 +00:00
f0513bad4c cleanup 2024-08-29 18:20:41 +00:00
af560356fe Merge branch 'develop' of https://github.com/lammps/lammps into aurora_updates 2024-08-29 12:50:17 -05:00
ba51b59add first pass on MKL FFT for Intel GPUs; rhodo benchmark results are close to CPU... 2024-08-29 12:28:54 -05:00
2d3cd2a0b9 fix typo in the per-job artifact names 2024-08-28 17:22:13 -05:00
a1a3e4e5b7 name the artifacts with their matrix idx 2024-08-28 16:45:00 -05:00
04bd62a677 add another job with the action merge 2024-08-28 16:13:10 -05:00
796a0f18d3 upload per-job artifacts, try action merge in a separate job 2024-08-28 16:07:13 -05:00
5306f5ff18 provide path to the artifacts 2024-08-28 15:35:25 -05:00
aa088da59b pack test output into separate artifacts 2024-08-28 14:43:27 -05:00
4e40b4ba63 upload the artifacts of the full regression test workflow 2024-08-28 14:11:23 -05:00
c60e69ea1e have a single job definition with matrix strategy, the build and env do not persist between jobs 2024-08-28 14:06:40 -05:00
f5ffb28a1f use the log file with 1 proc in serial runs, removed examples/bpm/impact/brokenDump 2024-08-28 12:57:58 -05:00
e3119155e1 Update doc/src/region.rst
Co-authored-by: Axel Kohlmeyer <akohlmey@gmail.com>
2024-08-28 18:20:18 +02:00
709ab8fbe9 Update region.rst 2024-08-28 11:04:47 +02:00
40cd70465c Code for variable point definition in region_plane.cpp 2024-08-28 10:57:02 +02:00
5c11c5ead8 include variable definitions in region_plane.h 2024-08-28 10:48:12 +02:00
a59ac7ec86 Reduced the timeout for quick reg tests 2024-08-26 17:43:36 -05:00
1148f5f5c8 cast into PosixPath to str before writing to file 2024-08-25 16:41:26 -05:00
9f20e5b7f7 put a timeout for a run, specified in the config file 2024-08-25 16:19:52 -05:00
04400e10a8 Updated the regression tester run_tests.py to handle list of input scripts 2024-08-25 16:02:16 -05:00
37c312bf8a added pair coeffs 2024-08-24 05:28:38 -04:00
149ae74631 debug matrix strategy 2024-08-23 17:06:11 -05:00
afb1e499af debugging the issue with the runs, list index out of range for run 7 2024-08-23 16:28:51 -05:00
d09e9d46fa specify the config file when analyzing the examples folder 2024-08-23 16:00:15 -05:00
5a9b742086 experiment with the matrix feature at the job level 2024-08-23 15:52:41 -05:00
9e172665f2 enable full regression tests 2024-08-23 15:45:13 -05:00
380447c6ba updated regression test config files 2024-08-23 14:44:08 -05:00
b69a9847f7 add a config file for running regression tests in serial (no mpirun), modify run_tests.py to handle this case 2024-08-23 14:40:07 -05:00
e1b324a3e9 upload artifacts 2024-08-23 14:18:40 -05:00
0d00578978 move download artifacts to a separate step 2024-08-23 14:03:25 -05:00
b1d40014a6 allow to download artifact from the regression test 2024-08-23 14:00:13 -05:00
ebe3bd2f7e activate the env before running the python scripts 2024-08-23 11:59:16 -05:00
7475e5a5ef run the regression tester tool with the list of suggested inputs 2024-08-23 11:49:20 -05:00
40cae6e79a first draft charmm_c36_jul24.gz to LAMMPS data converter 2024-08-22 21:06:04 -04:00
abbfa9470e remove debug print() statement 2024-08-22 17:07:12 -04:00
bda862a3a2 actually honor the branch argument 2024-08-22 16:50:03 -04:00
dc4e4988a9 do not fetch specific commit hash 2024-08-22 16:37:35 -04:00
a204f8e69f refer to branch with origin/develop 2024-08-22 16:30:02 -04:00
613e053373 check out whole history 2024-08-22 16:23:57 -04:00
1c5c3b41a9 more debugging 2024-08-22 16:20:27 -04:00
50cd510e79 no merge commit so we get differences 2024-08-22 16:16:26 -04:00
f1f7eb01c8 tweak settings in action 2024-08-22 16:15:06 -04:00
f3df42ec02 include debug info 2024-08-22 16:07:26 -04:00
27ff1fa5d4 pass string instead of compiled regexp 2024-08-22 15:57:28 -04:00
db9a618a7b more fault tolerance 2024-08-22 15:51:15 -04:00
66d6804d23 apply clang-format to some pair style headers 2024-08-22 15:43:55 -04:00
022d1d7959 get-quick-list.py script is feature complete 2024-08-22 15:41:31 -04:00
1916d0be06 add incomplete draft of quick input file lister 2024-08-22 11:41:56 -04:00
61fd2ba25c apply clang-format to have some files with changes 2024-08-22 11:40:26 -04:00
10dce38a76 small tweaks 2024-08-22 11:40:01 -04:00
664c6f908a must use different ccache keys to avoid conflicts between concurrent jobs 2024-08-22 11:02:43 -04:00
8c6351b6b9 remove unneeded stuff from quick regression test 2024-08-22 10:43:30 -04:00
8adc90b71f add Linux unit test with -DLAMMPS_BIGBIG 2024-08-22 10:41:54 -04:00
d5c245cb3b add workflow for full regression testing 2024-08-22 10:40:19 -04:00
9d80c22a0b install a few extra packages 2024-08-22 09:43:43 -04:00
5562d66931 need sudo for software installation 2024-08-22 08:43:07 -04:00
b540f572a3 prototype workflow for a quick regression test 2024-08-22 08:40:24 -04:00
4a115d66e0 update region doc for sphere/kk 2024-08-21 20:54:08 -04:00
d07e1b918e update email and fix typo 2024-08-21 20:07:43 -04:00
623e1d68e5 oops 2024-08-21 20:07:14 -04:00
5ea26e6cc1 added RegSphereKokkos to bugfix dynamic_cast in FixWallRegionKokkos 2024-08-21 20:07:04 -04:00
3ea74b1725 update atom_style template test for added charge 2024-08-21 16:20:17 -04:00
c968787c41 fix molecule add for MESH and remove 'not compatible' error message 2024-08-21 16:19:09 -04:00
3aadd8bd84 fix typo in comment 2024-08-20 19:12:27 -04:00
cac0c56687 add charge to atom style template 2024-08-20 19:12:09 -04:00
d75fe348f1 bugfix for compute_scalar() to work, test PASSED 2024-08-20 05:40:02 -04:00
5f5e2d9a64 added fix nve/limit/kk 2024-08-19 20:58:41 -04:00
90aaaea75a cleanup 2024-08-09 03:05:23 -04:00
ce4e01fb78 author information only in cpp, kokkos version needs protected instead of private variables 2024-08-07 00:12:11 -04:00
5509cd4a19 remove include/using/enum's no longer needed 2024-08-06 11:32:18 -04:00
3c524871f7 Revert "remove include/using/enum's no longer needed"
This reverts commit 83ce042a86.
2024-08-06 11:26:02 -04:00
83ce042a86 remove include/using/enum's no longer needed 2024-08-06 11:25:47 -04:00
056e3c0853 comply with @akohlmey's request
- revert my DBL_EPSILON change to EXPECT_FP_LE_WITH_EPS macro

- round the reference data for global_vector() to zeros for 2 unit tests to pass
2024-08-06 02:12:52 -04:00
1166531594 add 4 units tests for fix wall/region/kk 2024-08-06 01:24:21 -04:00
83ab240921 remove whitespaces 2024-08-06 01:21:02 -04:00
a98e9edd30 cleanup 2024-08-06 01:10:45 -04:00
7d6ef008e0 uncomment after debugging done 2024-08-06 00:58:49 -04:00
fa4c1d6190 oops 2024-08-06 00:51:11 -04:00
cac6b5dc02 bugfix for gpu and simplify by replacing functor with operator() 2024-08-06 00:43:07 -04:00
f73a7bca5f "Not necessary, the variable is the same." 2024-08-05 22:10:05 -04:00
88a32e6916 refactor domain and fix_deform for KOKKOS 2024-08-05 22:01:40 -04:00
f6ea649585 add fix wall/region/kk 2024-08-05 06:30:01 -04:00
ab558fb174 remove whitespace 2024-08-04 23:39:57 -04:00
ea6905a4b7 bugfix for NPH target temperature ptemp 2024-08-04 23:33:19 -04:00
093490afad Update fix-timestep-nph_sphere.yaml 2024-08-04 23:21:29 -04:00
b83521b22e regenerated unit tests with run_torque 2024-08-04 23:15:33 -04:00
90cdb023dd added dipole support to kokkos version, plus 2 unit tests 2024-08-04 22:57:05 -04:00
af203f7fc7 added run_torque and EXPECT_TORQUES 2024-08-04 22:40:36 -04:00
d1804fc776 Merge branch 'alphataubio-kokkos-bio' of https://github.com/alphataubio/lammps-alphataubio into alphataubio-kokkos-bio 2024-08-04 17:38:21 -04:00
c2e192e734 call the plumber to fix some leaks 2024-08-04 17:33:11 -04:00
0ebb56e5e8 remove commented out code 2024-08-04 17:14:20 -04:00
298329dc74 bugfix dilate option, test now passes 2024-08-04 03:29:34 -04:00
0e9a419593 updated find_fix to get_fix_by_id for kokkos_omp test 2024-08-04 01:53:08 -04:00
84afef94f6 added "fix_modify test virial yes" and regenerated yaml files 2024-08-04 01:52:15 -04:00
c8c9e34e2d significant rewrite, all 3 tests pass 2024-08-04 01:51:26 -04:00
755fdc5986 fix false negative floating point test 2024-08-04 00:07:01 -04:00
62a2486d95 virial bugfix 2024-08-02 23:59:03 -04:00
2ef1e9936f partial bugfix (kokkos_omp test passes, fix_modify test virial yes still crashes) 2024-08-02 11:59:57 -04:00
24fc761396 remove nodiscard warning 2024-08-01 19:55:54 -04:00
f62d1b5d55 complete rewrite of kokkos version
- array of structs set[i] from base class, converted to view- Host, converted to execution_space
- atom->nlocal converted to atomKK->nlocal- domain converted to domainKK- class now templated for DeviceType- SCALE not implemented in kokkos version
... actually by the time i was done it was a complete rewrite of the kokkos version
2024-08-01 18:55:16 -04:00
99a2bd799e Merge branch 'develop' into kokkos-unit-testing 2024-08-01 16:23:35 -04:00
d0b023e6b5 Merge branch 'lammps:develop' into alphataubio-kokkos-bio 2024-08-01 16:18:15 -04:00
4bec1788a6 make operator and inline functions const, plus remove printf debugging 2024-08-01 01:31:11 -04:00
fbf1451a2f add more crossterms to cmap unit test 2024-08-01 01:28:57 -04:00
3da8e9a9a5 add cmap unit test 2024-07-31 12:59:24 -04:00
4f89b0b783 first draft fix cmap/kk 2024-07-31 12:58:14 -04:00
4a972c4311 fix recenter/kk works with coords, init, null plus 3 tests 2024-07-30 04:28:40 -04:00
53ae731e09 first draft fix recenter/kk and unit test 2024-07-30 03:30:38 -04:00
bbe1ba4499 Merge branch 'lammps:develop' into alphataubio-kokkos-bio 2024-07-30 02:09:44 -04:00
8751d07375 fix bug in dihedral_charmmfsw_kokkos and update tests 2024-07-27 23:38:03 -04:00
16fabe83ae Merge branch 'develop' into kokkos-unit-testing 2024-07-27 03:27:35 -04:00
884b9dd9bd add PALS env var 2024-07-19 15:34:02 +00:00
bae822fea7 update Makefiles 2024-07-19 15:23:49 +00:00
7739c7ad90 Add files via upload 2024-07-02 14:50:12 -07:00
2b84cd0524 Add files via upload 2024-07-02 14:47:48 -07:00
44ff2698c5 Delete examples/log.ctip 2024-07-02 14:47:12 -07:00
b6a007b769 Delete examples/in.ctip 2024-07-02 14:47:01 -07:00
a170ecc202 Delete examples/data.ctip 2024-07-02 14:46:49 -07:00
567d492121 Delete examples/NiO.eam.fs 2024-07-02 14:46:35 -07:00
ba675c0806 Delete examples/NiO.ctip 2024-07-02 14:46:20 -07:00
b98b82fb09 Create in.ctip 2024-07-02 14:45:34 -07:00
6dd47fbbb0 Add files via upload 2024-07-02 14:40:26 -07:00
5bd4b92826 Merge branch 'lammps:develop' into ctip 2024-07-02 14:39:24 -07:00
9513c0edac small cleanup 2024-07-02 13:28:46 -06:00
9d529c6995 Merge branch 'hagerty_issue4140_kokkos_collective' of github.com:hagertnl/lammps-fork into hagerty_issue4140_kokkos_collective 2024-07-02 15:10:58 -04:00
d630fc67ab Updated remap kokkos to remove unused recv_proc and recv_bufloc buffers 2024-07-02 15:10:44 -04:00
abcc9ed08d Merge branch 'develop' of github.com:lammps/lammps into hagerty_issue4140_kokkos_collective 2024-07-01 12:33:17 -06:00
09c121ebbc Prevent overflow in neighbor output 2024-06-26 14:56:28 -06:00
7da7e69ccb Fix integer overflow for large ReaxFF systems with KOKKOS package 2024-06-26 15:14:55 -04:00
663aa8aa80 fix missing pairs within same bin 2024-06-20 22:33:11 -05:00
f9a95f7256 fix virial accumulate for gran/hooke/history/kokkos 2024-06-19 16:55:18 -05:00
241d36b14e skip kokkos_omp test for dihedral_style_charmmfsw
pair_style lj/charmmfsw/coul/charmmfsh is not available in kokkos so the kokkos unit test for dihedral_style charmmfsw fails.
2024-06-14 14:48:57 -04:00
1c4b2d460b remove respa from kokkos_omp tests 2024-06-14 14:47:56 -04:00
360d59fc88 Create dihedral-charmmfsw-kokkos.yaml 2024-06-13 12:32:09 -04:00
424fb7ce06 Revert "Update dihedral-charmmfsw.yaml"
This reverts commit 1eb8afcba4.
2024-06-13 12:28:49 -04:00
af9d97ea07 Revert "added dihedral charmfsw kokkos test"
This reverts commit 95af3cdab2.
2024-06-13 12:27:56 -04:00
95af3cdab2 added dihedral charmfsw kokkos test 2024-06-13 12:27:08 -04:00
f915c144fd Revert "added dihedral charmfsw kokkos test"
This reverts commit 55b1b5d008.
2024-06-13 12:17:41 -04:00
55b1b5d008 added dihedral charmfsw kokkos test 2024-06-13 12:16:49 -04:00
bdf243e36a more kokkos tests 2024-06-07 19:41:58 -04:00
1eb8afcba4 Update dihedral-charmmfsw.yaml 2024-06-07 16:25:52 -04:00
0f4065f6cd Update test_improper_style.cpp 2024-06-07 15:41:14 -04:00
c4b1704bd3 added kokkos_omp tests 2024-06-07 11:13:41 -04:00
3defe567df Merge branch 'develop' of github.com:lammps/lammps into hagerty_issue4140_kokkos_collective 2024-06-07 07:28:58 -06:00
8573152988 Update src/QEQ/fix_qeq_ctip.cpp
Co-authored-by: Axel Kohlmeyer <akohlmey@gmail.com>
2024-06-03 11:11:40 -07:00
e2e17b1326 CTIP pair style and qeq fix implemented 2024-05-31 13:29:49 -07:00
b5f8d4b46c fix memory leak for fix_dynamic(a.k.a. neigh/history) 2024-05-30 14:34:15 -05:00
bdbfa7f6e2 track pair_brownian changes in COLLOID 2024-05-29 03:29:37 +00:00
8abaf20ae6 Merge branch 'develop' of https://github.com/lammps/lammps into lubricate 2024-05-29 03:18:36 +00:00
13d42b7955 update sphere_flag to radius_flag 2024-05-28 22:11:52 -05:00
c9049c090d Cleaned up memory deallocation logic, improved comments on remap_kokkos.h for collective fields 2024-05-13 15:47:25 -04:00
bd52e31128 Added optimization to collective to local copy to self 2024-05-11 20:58:47 -04:00
4889f1b9fd remove print statements 2024-05-01 15:55:35 +00:00
8cee2604eb remove debug output 2024-05-01 15:55:35 +00:00
7261c833df clean up & fix virial 2024-05-01 15:55:35 +00:00
8002f985da enable half neighlist + kk support; correct except for neighbor list difference... 2024-05-01 15:55:35 +00:00
26f52f7552 enable base classes to support Kokkos style 2024-05-01 15:55:35 +00:00
ed18f3014a fix virial when both global and per-atom requested 2024-05-01 15:55:35 +00:00
83c9d47f5e correct forces + virial 2024-05-01 15:55:35 +00:00
9749c0658a need to update velocities on host for non-kokkos computes 2024-05-01 15:55:34 +00:00
1be59745fb correct forces and per-atom virials, but thermo still off 2024-05-01 15:55:34 +00:00
8d3c7cca94 add PairBrownianKokkos::init_one() 2024-05-01 15:55:34 +00:00
e9f7b62f04 fix FULL (as much as it can since not conservative) 2024-05-01 15:55:34 +00:00
8ddceeb7af fix instantiation of compute; now correct pressure on step zero and support for FULL 2024-05-01 15:55:34 +00:00
a4b3eea189 brownian/kk almost correct on cpu 2024-05-01 15:55:34 +00:00
8c3dab03b7 downgrade macOS to version 13 2024-04-27 02:49:52 -04:00
3f9d96d38d make pip install packages in virtual environment 2024-04-27 02:49:52 -04:00
71f82e70ef Refactored kspace+kokkos collective remap. Need to go back and tidy up memory allocations 2024-04-25 13:16:03 -04:00
1a431b02ae Split collective and non-collective into conditionals. Multi-node test passing. Beginning optimization of collective 2024-04-24 09:23:29 -04:00
65e8a5c981 Relocated send & recv initializations to occur together, since they are independent 2024-04-23 14:59:42 -04:00
f9e349a2bc Fix load balancing issue with 2D FFTs 2024-04-23 13:42:46 -04:00
5c5dd1efb4 Updated kspace kokkos to use input file for collective setting 2024-04-22 10:26:34 -04:00
f43fec417d Updated collective flag keyword in KOKKOS PPPM to use setting from input file 2024-04-22 10:23:14 -04:00
0af4fe2702 Enable collective comm for PPPMKokkos 2024-04-20 09:39:41 -06:00
3116250da9 Initial port of kspace_modify collective yes to KOKKOS package 2024-04-19 16:00:58 -04:00
38874c5aaa make more consistent 2024-04-18 00:27:38 -04:00
d16d3ee02b replace wildcard imports with explicit ones 2024-04-18 00:21:53 -04:00
ebd77afd58 initialize in the constructor for the class that defines variable 2024-04-18 00:09:07 -04:00
6683976ce0 use explicit imports instead of wildcards 2024-04-17 04:45:16 -04:00
1c9d62543b Merge pull request #3 from rohskopf/sna-grid-kokkos
Kokkos SNAP grid local compute
2024-02-22 13:58:21 +01:00
a5b262aefa Hotfixing a small bug in the Kokkos Gaussian Compute
Co-authored-by: Drew Rohskopf <<drew.rohskopf@gmail.com>
2023-09-08 00:20:45 +02:00
79e05595db Remove destructor prints 2023-07-11 13:11:50 -06:00
63a3c3f30c Merge branch 'lammps:develop' into mala 2023-07-11 15:43:30 +02:00
cb915cdce7 Fill local sna/grid array 2023-07-10 10:22:52 -06:00
b5dc7d58a8 Destruct sna/grid/local/kk properly and use local arrays 2023-07-09 10:20:45 -06:00
3f9cc8f0fd Initial sna/grid/local/kk implement 2023-07-07 17:08:41 -06:00
2fc1844443 Merge pull request #2 from rohskopf/sna-grid-kokkos
Kokkos Gaussian grid
2023-07-03 14:26:20 +02:00
be5eb198c3 Clean up debug prints 2023-06-27 11:50:00 -06:00
969cc5dc03 Tweak TeamPolicy settings for speedup 2023-06-26 17:41:13 -06:00
c871fe8505 Fill grid geometry info 2023-06-26 17:03:05 -06:00
9eb26e4cd0 Shallow copy Kokkos written array to returned array variable 2023-06-26 16:43:28 -06:00
5885f49b75 Prevent polymorphic destructor calls with copymode 2023-06-26 14:50:44 -06:00
fc5e583c56 Initial Gaussian grid implementation 2023-06-24 15:56:54 -06:00
5e01ffe6a6 Merge pull request #1 from rohskopf/sna-grid-kokkos
compute sna/grid/kokkos
2023-06-07 13:57:50 +02:00
904fde8189 Merge remote-tracking branch 'fork_drew/sna-grid-kokkos' into sna-grid-kokkos 2023-06-06 15:28:48 +02:00
788fd3a9ac Re-Adding Gaussian grid again, originally authored by Aidan Thompson
Co-authored-by: Aidan Thompson <athomps@sandia.gov>
2023-06-06 15:28:41 +02:00
b1105a231b Add triclinic cell conversion 2023-06-04 05:03:06 -06:00
b1ffcbcd41 Fix cutoff factor when switchflag = 0 2023-06-02 17:38:48 -06:00
be5476e442 Loop over chunks on GPU to write values properly when using default chunk size 2023-06-02 15:10:45 -06:00
95e39ba89a Clean up kernels 2023-05-30 22:53:24 -06:00
1037e4a4eb Use normal loop over ntotal inside neighbor team policy 2023-05-30 22:40:12 -06:00
709da60474 Replace limited parallel for with normal for for now 2023-05-30 11:08:43 -06:00
e169327162 Merge branch 'lammps:develop' into mala 2023-05-23 10:23:42 +02:00
66def742c4 Organize deallocator calls 2023-04-24 11:29:04 -06:00
470581d469 Organize sna method calls and clean up 2023-04-10 17:18:00 -06:00
40db9b1701 Agreement between Kokkos and original compute sna/grid with switchflag = 1; note that switchflag = 0 gives wrongly zeroed values for Kokkos because of bug in compute_s_dsfac function of sna_kokkos_impl.h causing sfac to be zero 2023-04-09 15:54:47 -06:00
d75ceabfb0 Fix neighbor criteria so atoms sharing positions with gridpoints aren't included as neighbors 2023-04-08 21:55:04 -06:00
a720328770 Matching descriptors when no neighbors, good checkpoint for debugging 2023-04-08 21:32:46 -06:00
a3d8ab3088 Add cutoff view properly 2023-04-08 19:03:25 -06:00
02122c809c Change ntotal to n_ninside 2023-04-08 17:52:35 -06:00
bd1134c083 Debug inability to deep copy 2023-04-08 17:21:27 -06:00
7539264846 Sync device and host compute arrays 2023-04-08 13:08:24 -06:00
212b864052 Add all SNAP computations and 4D view Kokkos memory allocator 2023-04-08 11:19:07 -06:00
de4dbec661 Remove swo 2023-03-12 20:03:35 -06:00
584a6200f5 Mimic pair snap kokkos pattern 2023-03-12 20:02:57 -06:00
a0a7f14db5 Remove swo 2023-03-12 17:01:20 -06:00
234346c37d Experiment with different implementations 2023-03-12 17:00:48 -06:00
e1e7984822 Start ComputeSNAGridKokkos implementation 2023-03-10 16:19:24 -07:00
be94176c03 Re-starting MALA branch in MALA fork 2023-01-12 15:44:04 +01:00
1118 changed files with 113432 additions and 41993 deletions

3
.github/CODEOWNERS vendored
View File

@ -101,7 +101,8 @@ src/group.* @sjplimp
src/improper.* @sjplimp
src/info.* @akohlmey
src/kspace.* @sjplimp
src/lmptyp.h @sjplimp
src/lmptype.h @sjplimp
src/label_map.* @jrgissing @akohlmey
src/library.* @sjplimp @akohlmey
src/main.cpp @sjplimp
src/min_*.* @sjplimp

108
.github/release_steps.md vendored Normal file
View File

@ -0,0 +1,108 @@
# LAMMPS Release Steps
The following notes chronicle the current steps for preparing and publishing LAMMPS releases. For
definitions of LAMMPS versions and releases mean, please refer to [the corresponding section in the
LAMMPS manual](https://docs.lammps.org/Manual_version.html).
## LAMMPS Feature Release
A LAMMPS feature release is currently prepared after about 500 to 750 commits to the 'develop'
branch or after a period of four weeks up to two months. This is not a fixed rule, though, since
external circumstances can cause delays in preparing a release, or pull requests that are desired to
be merged for the release are not yet completed.
### Preparing a 'next\_release' branch
Create a 'next\_release' branch off 'develop' and make the following changes:
- set the LAMMPS\_VERSION define to the planned release date in src/version.h in the format
"D Mmm YYYY" or "DD Mmm YYYY"
- remove the LAMMPS\_UPDATE define in src/version.h
- update the release date in doc/lammps.1
- update all TBD arguments for ..versionadded::, ..versionchanged:: ..deprecated:: to the
planned release date in the format "DMmmYYYY" or "DDMmmYYYY"
- check release notes for merged new features and check if ..versionadded:: or ..versionchanged::
are missing and need to be added
Submit this pull request, rebase if needed. This is the last pull request merged for the release
and should not contain any other changes. (Exceptions: this document, last minute trivial(!) changes).
This PR shall not be merged before **all** pending tests have completed and cleared. If needed, a
bugfix pull request should be created and merged to clear all tests.
### Create release on GitHub
When all pending pull requests for the release are merged and have cleared testing, the
'next\_release' branch is merged into 'develop'.
Check out 'develop' locally, pull the latest changes, merge them into 'release', apply a suitable
release tag (for historical reasons the tag starts with "patch_" followed by the date, and finally
push everything back to GitHub. Example:
```
git checkout develop
git pull
git checkout release
git pull
git merge --ff-only develop
git tag -s -m "LAMMPS feature release 19 November 2024" patch_19Nov2024
git push git@github.com:lammps/lammps.git --tags develop release
```
Go to https://github.com/lammps/lammps/releases and create a new (draft) release page or check the
existing draft for any necessary changes from pull requests that were merged but are not listed.
Then select the applied tag for the release in the "Choose a tag" dropdown list. Go to the bottom of
the list and select the "Set as pre-release" checkbox. The "Set as the latest release" button is
reserved for stable releases and updates to them.
If everything is in order, you can click on the "Publish release" button. Otherwise, click on "Save
draft" and finish pending tasks until you can return to edit the release page and publish it.
### Update download website, prepare pre-compiled packages, update packages to GitHub
Publishing the release on GitHub will trigger the Temple Jenkins cluster to update
the https://docs.lammps.org/ website with the documentation for the new feature release
and it will create a tarball for download (which contains the translated manual).
Build a fully static LAMMPS installation using a musl-libc cross-compiler, install into a
lammps-static folder, and create a tarball called lammps-linux-x86_64-19Nov2024.tar.gz (or using a
corresponding date with a future release) from the lammps-static folder and upload it to GitHub
with:
```
gh release upload patch_19Nov2024 ~/Downloads/lammps-linux-x86_64-19Nov2024.tar.gz
```
## LAMMPS Stable Release
A LAMMPS stable release is prepared about once per year in the months July, August, or September.
One (or two, if needed) feature releases before the stable release shall contain only bug fixes
or minor feature updates in optional packages. Also substantial changes to the core of the code
shall be applied rather toward the beginning of a development cycle between two stable releases
than toward the end. The intention is to stablilize significant change to the core and have
outside users and developers try them out during the development cycle; the sooner the changes
are included, the better chances for spotting peripheral bugs and issues.
### Prerequesites
Before making a stable release all remaining backported bugfixes shall be released as a (final)
stable update release (see below).
A LAMMPS stable release process starts like a feature release (see above), only that this feature
release is called a "Stable Release Candidate" and no assets are uploaded to GitHub.
### Synchronize 'maintenance' branch with 'release'
The state of the 'release' branch is then transferred to the 'maintenance' branch (which will
have diverged significantly from 'release' due to the selectively backported bug fixes).
### Fast-forward merge of 'maintenance' into 'stable' and apply tag
At this point it should be possible to do a fast-forward merge of 'maintenance' to 'stable'
and then apply the stable\_DMmmYYYY tag.
### Push branches and tags
## LAMMPS Stable Update Release

92
.github/workflows/check-cpp23.yml vendored Normal file
View File

@ -0,0 +1,92 @@
# GitHub action to build LAMMPS on Linux with gcc and C++23
name: "Check for C++23 Compatibility"
on:
push:
branches:
- develop
pull_request:
branches:
- develop
workflow_dispatch:
jobs:
build:
name: Build with C++23 support enabled
if: ${{ github.repository == 'lammps/lammps' }}
runs-on: ubuntu-latest
env:
CCACHE_DIR: ${{ github.workspace }}/.ccache
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Install extra packages
run: |
sudo apt-get update
sudo apt-get install -y ccache \
libeigen3-dev \
libcurl4-openssl-dev \
mold \
mpi-default-bin \
mpi-default-dev \
ninja-build \
python3-dev
- name: Create Build Environment
run: mkdir build
- name: Set up ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: linux-cpp23-ccache-${{ github.sha }}
restore-keys: linux-cpp23-ccache-
- name: Building LAMMPS via CMake
shell: bash
run: |
ccache -z
python3 -m venv linuxenv
source linuxenv/bin/activate
python3 -m pip install numpy
python3 -m pip install pyyaml
cmake -S cmake -B build \
-C cmake/presets/most.cmake \
-C cmake/presets/kokkos-openmp.cmake \
-D CMAKE_CXX_STANDARD=23 \
-D CMAKE_CXX_COMPILER=g++ \
-D CMAKE_C_COMPILER=gcc \
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
-D CMAKE_C_COMPILER_LAUNCHER=ccache \
-D CMAKE_BUILD_TYPE=Debug \
-D CMAKE_CXX_FLAGS_DEBUG="-Og -g" \
-D DOWNLOAD_POTENTIALS=off \
-D BUILD_MPI=on \
-D BUILD_SHARED_LIBS=on \
-D BUILD_TOOLS=off \
-D ENABLE_TESTING=off \
-D MLIAP_ENABLE_ACE=on \
-D MLIAP_ENABLE_PYTHON=off \
-D PKG_AWPMD=on \
-D PKG_GPU=on \
-D GPU_API=opencl \
-D PKG_KOKKOS=on \
-D PKG_LATBOLTZ=on \
-D PKG_MDI=on \
-D PKG_MANIFOLD=on \
-D PKG_ML-PACE=on \
-D PKG_ML-RANN=off \
-D PKG_MOLFILE=on \
-D PKG_RHEO=on \
-D PKG_PTM=on \
-D PKG_PYTHON=on \
-D PKG_QTB=on \
-D PKG_SMTBQ=on \
-G Ninja
cmake --build build
ccache -s

89
.github/workflows/check-vla.yml vendored Normal file
View File

@ -0,0 +1,89 @@
# GitHub action to build LAMMPS on Linux with gcc and -Werror=vla
name: "Check for Variable Length Arrays"
on:
push:
branches:
- develop
pull_request:
branches:
- develop
workflow_dispatch:
jobs:
build:
name: Build with -Werror=vla
if: ${{ github.repository == 'lammps/lammps' }}
runs-on: ubuntu-latest
env:
CCACHE_DIR: ${{ github.workspace }}/.ccache
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Install extra packages
run: |
sudo apt-get update
sudo apt-get install -y ccache \
libeigen3-dev \
libcurl4-openssl-dev \
mold \
mpi-default-bin \
mpi-default-dev \
ninja-build \
python3-dev
- name: Create Build Environment
run: mkdir build
- name: Set up ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: linux-vla-ccache-${{ github.sha }}
restore-keys: linux-vla-ccache-
- name: Building LAMMPS via CMake
shell: bash
run: |
ccache -z
python3 -m venv linuxenv
source linuxenv/bin/activate
python3 -m pip install numpy
python3 -m pip install pyyaml
cmake -S cmake -B build \
-C cmake/presets/most.cmake \
-D CMAKE_CXX_COMPILER=g++ \
-D CMAKE_C_COMPILER=gcc \
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
-D CMAKE_C_COMPILER_LAUNCHER=ccache \
-D CMAKE_BUILD_TYPE=Debug \
-D CMAKE_CXX_FLAGS_DEBUG="-Og -g -Werror=vla" \
-D DOWNLOAD_POTENTIALS=off \
-D BUILD_MPI=on \
-D BUILD_SHARED_LIBS=off \
-D BUILD_TOOLS=off \
-D ENABLE_TESTING=off \
-D MLIAP_ENABLE_ACE=on \
-D MLIAP_ENABLE_PYTHON=off \
-D PKG_AWPMD=on \
-D PKG_GPU=on \
-D GPU_API=opencl \
-D PKG_LATBOLTZ=on \
-D PKG_MDI=on \
-D PKG_MANIFOLD=on \
-D PKG_ML-PACE=on \
-D PKG_ML-RANN=off \
-D PKG_MOLFILE=on \
-D PKG_RHEO=on \
-D PKG_PTM=on \
-D PKG_PYTHON=on \
-D PKG_QTB=on \
-D PKG_SMTBQ=on \
-G Ninja
cmake --build build
ccache -s

View File

@ -1,5 +1,5 @@
# GitHub action to build LAMMPS on Windows with Visual C++
name: "Native Windows Compilation and Unit Tests"
# GitHub action to test LAMMPS on Windows with Visual C++
name: "Windows Unit Tests"
on:
push:
@ -11,11 +11,17 @@ on:
workflow_dispatch:
concurrency:
group: ${{ github.event_name }}-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{github.event_name == 'pull_request'}}
jobs:
build:
name: Windows Compilation Test
if: ${{ github.repository == 'lammps/lammps' }}
runs-on: windows-latest
env:
CCACHE_DIR: ${{ github.workspace }}/.ccache
steps:
- name: Checkout repository
@ -23,36 +29,41 @@ jobs:
with:
fetch-depth: 2
- name: Enable MSVC++
uses: lammps/setup-msvc-dev@v3
with:
arch: x64
- name: Install Ccache
run: |
choco install ccache ninja -y
- name: Set up ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: win-unit-ccache-${{ github.sha }}
restore-keys: win-unit-ccache-
- name: Select Python version
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Building LAMMPS via CMake
shell: bash
run: |
ccache -z
python3 -m pip install numpy
python3 -m pip install pyyaml
nuget install MSMPIsdk
nuget install MSMPIDIST
cmake -C cmake/presets/windows.cmake \
-D DOWNLOAD_POTENTIALS=off \
-D PKG_PYTHON=on \
-D WITH_PNG=off \
-D WITH_JPEG=off \
-S cmake -B build \
-D BUILD_SHARED_LIBS=on \
-D LAMMPS_EXCEPTIONS=on \
-D ENABLE_TESTING=on
cmake --build build --config Release --parallel 2
cmake -C cmake\presets\windows.cmake -D CMAKE_CXX_COMPILER=cl -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -D CMAKE_C_COMPILER=cl -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_Fortran_COMPILER="" -D DOWNLOAD_POTENTIALS=off -D PKG_PYTHON=on -D WITH_PNG=off -D WITH_JPEG=off -S cmake -B build -D BUILD_SHARED_LIBS=on -D ENABLE_TESTING=on -D CMAKE_BUILD_TYPE=Release -G Ninja
cmake --build build
ccache -s
- name: Run LAMMPS executable
shell: bash
run: |
./build/Release/lmp.exe -h
./build/Release/lmp.exe -in bench/in.lj
build\lmp.exe -h
build\lmp.exe -in bench\in.lj
- name: Run Unit Tests
working-directory: build
shell: bash
run: ctest -V -C Release -E FixTimestep:python_move_nve
run: ctest -V -E FixTimestep:python_move_nve

109
.github/workflows/full-regression.yml vendored Normal file
View File

@ -0,0 +1,109 @@
# GitHub action to build LAMMPS on Linux and run regression tests
name: "Full Regression Test"
on:
push:
branches:
- develop
workflow_dispatch:
jobs:
build:
name: Build LAMMPS
# restrict to official LAMMPS repository
if: ${{ github.repository == 'lammps/lammps' }}
runs-on: ubuntu-latest
env:
CCACHE_DIR: ${{ github.workspace }}/.ccache
strategy:
max-parallel: 8
matrix:
idx: [ 0, 1, 2, 3, 4, 5, 6, 7 ]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 2
show-progress: false
- name: Install extra packages
run: |
sudo apt-get update
sudo apt-get install -y ccache ninja-build libeigen3-dev \
libcurl4-openssl-dev python3-dev \
mpi-default-bin mpi-default-dev
- name: Create Build Environment
run: mkdir build
- name: Set up ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: linux-full-ccache-${{ github.sha }}
restore-keys: linux-full-ccache-
- name: Building LAMMPS via CMake
shell: bash
run: |
ccache -z
python3 -m venv linuxenv
source linuxenv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install numpy pyyaml junit_xml
cmake -S cmake -B build \
-C cmake/presets/gcc.cmake \
-C cmake/presets/most.cmake \
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
-D CMAKE_C_COMPILER_LAUNCHER=ccache \
-D BUILD_SHARED_LIBS=off \
-D DOWNLOAD_POTENTIALS=off \
-D PKG_MANIFOLD=on \
-D PKG_ML-PACE=on \
-D PKG_ML-RANN=on \
-D PKG_RHEO=on \
-D PKG_PTM=on \
-D PKG_PYTHON=on \
-D PKG_QTB=on \
-D PKG_SMTBQ=on \
-G Ninja
cmake --build build
ccache -s
- name: Run Full Regression Tests
shell: bash
run: |
source linuxenv/bin/activate
python3 tools/regression-tests/run_tests.py \
--lmp-bin=build/lmp \
--config-file=tools/regression-tests/config_serial.yaml \
--examples-top-level=examples --analyze --num-workers=8
python3 tools/regression-tests/run_tests.py \
--lmp-bin=build/lmp \
--config-file=tools/regression-tests/config_serial.yaml \
--list-input=input-list-${{ matrix.idx }}.txt \
--output-file=output-${{ matrix.idx }}.xml \
--progress-file=progress-${{ matrix.idx }}.yaml \
--log-file=run-${{ matrix.idx }}.log
tar -cvf full-regression-test-${{ matrix.idx }}.tar run-${{ matrix.idx }}.log progress-${{ matrix.idx }}.yaml output-${{ matrix.idx }}.xml
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: full-regression-test-artifact-${{ matrix.idx }}
path: full-regression-test-${{ matrix.idx }}.tar
merge:
runs-on: ubuntu-latest
needs: build
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4
with:
name: merged-full-regresssion-artifact
pattern: full-regression-test-artifact-*

126
.github/workflows/kokkos-regression.yaml vendored Normal file
View File

@ -0,0 +1,126 @@
# GitHub action to build LAMMPS on Linux and run selected regression tests
name: "Kokkos OpenMP Regression Test"
on:
push:
branches:
- develop
workflow_dispatch:
jobs:
build:
name: Build LAMMPS with Kokkos OpenMP
# restrict to official LAMMPS repository
if: ${{ github.repository == 'lammps/lammps' }}
runs-on: ubuntu-latest
env:
CCACHE_DIR: ${{ github.workspace }}/.ccache
strategy:
max-parallel: 6
matrix:
idx: [ 'pair-0', 'pair-1', 'fix-0', 'fix-1', 'compute', 'misc' ]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 2
show-progress: false
- name: Install extra packages
run: |
sudo apt-get update
sudo apt-get install -y ccache ninja-build libeigen3-dev \
libcurl4-openssl-dev python3-dev \
mpi-default-bin mpi-default-dev
- name: Create Build Environment
run: mkdir build
- name: Set up ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: linux-kokkos-ccache-${{ github.sha }}
restore-keys: linux-kokkos-ccache-
- name: Building LAMMPS via CMake
shell: bash
run: |
ccache -z
python3 -m venv linuxenv
source linuxenv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install numpy pyyaml junit_xml
cmake -S cmake -B build \
-C cmake/presets/gcc.cmake \
-C cmake/presets/basic.cmake \
-C cmake/presets/kokkos-openmp.cmake \
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
-D CMAKE_C_COMPILER_LAUNCHER=ccache \
-D BUILD_SHARED_LIBS=off \
-D DOWNLOAD_POTENTIALS=off \
-D PKG_AMOEBA=on \
-D PKG_ASPHERE=on \
-D PKG_BROWNIAN=on \
-D PKG_CLASS2=on \
-D PKG_COLLOID=on \
-D PKG_CORESHELL=on \
-D PKG_DIPOLE=on \
-D PKG_DPD-BASIC=on \
-D PKG_EXTRA-COMPUTE=on \
-D PKG_EXTRA-FIX=on \
-D PKG_EXTRA-MOLECULE=on \
-D PKG_EXTRA-PAIR=on \
-D PKG_GRANULAR=on \
-D PKG_LEPTON=on \
-D PKG_MC=on \
-D PKG_MEAM=on \
-D PKG_POEMS=on \
-D PKG_PYTHON=on \
-D PKG_QEQ=on \
-D PKG_REAXFF=on \
-D PKG_REPLICA=on \
-D PKG_SRD=on \
-D PKG_SPH=on \
-D PKG_VORONOI=on \
-G Ninja
cmake --build build
ccache -s
- name: Run Regression Tests for Selected Examples
shell: bash
run: |
source linuxenv/bin/activate
python3 tools/regression-tests/get_kokkos_input.py \
--examples-top-level=examples --batch-size=50 \
--filter-out="balance;fire;gcmc;granregion;hyper;mc;mdi;mliap;neb;pace;prd;pour;python;rigid;snap;streitz;shear;ttm"
export OMP_PROC_BIND=false
python3 tools/regression-tests/run_tests.py \
--lmp-bin=build/lmp \
--config-file=tools/regression-tests/config_kokkos_openmp.yaml \
--list-input=input-list-${{ matrix.idx }}-kk.txt \
--output-file=output-${{ matrix.idx }}.xml \
--progress-file=progress-${{ matrix.idx }}.yaml \
--log-file=run-${{ matrix.idx }}.log \
--quick-max=100
tar -cvf kokkos-regression-test-${{ matrix.idx }}.tar run-${{ matrix.idx }}.log progress-${{ matrix.idx }}.yaml output-${{ matrix.idx }}.xml
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: kokkos-regression-test-artifact-${{ matrix.idx }}
path: kokkos-regression-test-${{ matrix.idx }}.tar
merge:
runs-on: ubuntu-latest
needs: build
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4
with:
name: merged-kokkos-regresssion-artifact
pattern: kokkos-regression-test-artifact-*

118
.github/workflows/quick-regression.yml vendored Normal file
View File

@ -0,0 +1,118 @@
# GitHub action to build LAMMPS on Linux and run selected regression tests
name: "Quick Regression Test"
on:
pull_request:
branches:
- develop
workflow_dispatch:
concurrency:
group: ${{ github.event_name }}-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{github.event_name == 'pull_request'}}
jobs:
build:
name: Build LAMMPS
# restrict to official LAMMPS repository
if: ${{ github.repository == 'lammps/lammps' }}
runs-on: ubuntu-latest
env:
CCACHE_DIR: ${{ github.workspace }}/.ccache
strategy:
max-parallel: 4
matrix:
idx: [ 0, 1, 2, 3 ]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
show-progress: false
- name: Install extra packages
run: |
sudo apt-get update
sudo apt-get install -y ccache ninja-build libeigen3-dev \
libcurl4-openssl-dev python3-dev \
mpi-default-bin mpi-default-dev
- name: Create Build Environment
run: mkdir build
- name: Set up ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: linux-quick-ccache-${{ github.sha }}
restore-keys: linux-quick-ccache-
- name: Building LAMMPS via CMake
shell: bash
run: |
ccache -z
python3 -m venv linuxenv
source linuxenv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install numpy pyyaml junit_xml
cmake -S cmake -B build \
-C cmake/presets/gcc.cmake \
-C cmake/presets/most.cmake \
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
-D CMAKE_C_COMPILER_LAUNCHER=ccache \
-D BUILD_SHARED_LIBS=off \
-D DOWNLOAD_POTENTIALS=off \
-D PKG_MANIFOLD=on \
-D PKG_ML-PACE=on \
-D PKG_ML-RANN=on \
-D PKG_RHEO=on \
-D PKG_PTM=on \
-D PKG_PYTHON=on \
-D PKG_QTB=on \
-D PKG_SMTBQ=on \
-G Ninja
cmake --build build
ccache -s
- name: Run Regression Tests for Modified Styles
shell: bash
run: |
source linuxenv/bin/activate
python3 tools/regression-tests/run_tests.py \
--lmp-bin=build/lmp \
--config-file=tools/regression-tests/config_quick.yaml \
--examples-top-level=examples \
--quick-reference=tools/regression-tests/reference.yaml \
--quick --quick-branch=origin/develop --quick-max=100 --num-workers=4
if [ -f input-list-${{ matrix.idx }}.txt ]
then \
python3 tools/regression-tests/run_tests.py \
--lmp-bin=build/lmp \
--config-file=tools/regression-tests/config_quick.yaml \
--list-input=input-list-${{ matrix.idx }}.txt \
--output-file=output-${{ matrix.idx }}.xml \
--progress-file=progress-${{ matrix.idx }}.yaml \
--log-file=run-${{ matrix.idx }}.log
fi
tar -cvf quick-regression-test-${{ matrix.idx }}.tar run-${{ matrix.idx }}.log progress-${{ matrix.idx }}.yaml output-${{ matrix.idx }}.xml
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: quick-regression-test-artifact-${{ matrix.idx }}
path: quick-regression-test-${{ matrix.idx }}.tar
merge:
runs-on: ubuntu-latest
needs: build
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4
with:
name: merged-quick-regresssion-artifact
pattern: quick-regression-test-artifact-*

37
.github/workflows/style-check.yml vendored Normal file
View File

@ -0,0 +1,37 @@
# GitHub action to run checks from tools/coding_standard
name: "Check for Programming Style Conformance"
on:
push:
branches:
- develop
pull_request:
branches:
- develop
workflow_dispatch:
concurrency:
group: ${{ github.event_name }}-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{github.event_name == 'pull_request'}}
jobs:
build:
name: Programming Style Conformance
if: ${{ github.repository == 'lammps/lammps' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Run Tests
working-directory: src
shell: bash
run: |
make check-whitespace
make check-permissions
make check-homepage
make check-errordocs

86
.github/workflows/unittest-linux.yml vendored Normal file
View File

@ -0,0 +1,86 @@
# GitHub action to build LAMMPS on Linux and run standard unit tests
name: "Unittest for Linux /w LAMMPS_BIGBIG"
on:
push:
branches:
- develop
pull_request:
branches:
- develop
workflow_dispatch:
concurrency:
group: ${{ github.event_name }}-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{github.event_name == 'pull_request'}}
jobs:
build:
name: Linux Unit Test
if: ${{ github.repository == 'lammps/lammps' }}
runs-on: ubuntu-latest
env:
CCACHE_DIR: ${{ github.workspace }}/.ccache
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Install extra packages
run: |
sudo apt-get update
sudo apt-get install -y ccache \
libeigen3-dev \
libcurl4-openssl-dev \
mold \
ninja-build \
python3-dev
- name: Create Build Environment
run: mkdir build
- name: Set up ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: linux-unit-ccache-${{ github.sha }}
restore-keys: linux-unit-ccache-
- name: Building LAMMPS via CMake
shell: bash
run: |
ccache -z
python3 -m venv linuxenv
source linuxenv/bin/activate
python3 -m pip install numpy
python3 -m pip install pyyaml
cmake -S cmake -B build \
-C cmake/presets/gcc.cmake \
-C cmake/presets/most.cmake \
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
-D CMAKE_C_COMPILER_LAUNCHER=ccache \
-D BUILD_SHARED_LIBS=on \
-D LAMMPS_SIZES=bigbig \
-D DOWNLOAD_POTENTIALS=off \
-D ENABLE_TESTING=on \
-D MLIAP_ENABLE_ACE=on \
-D MLIAP_ENABLE_PYTHON=off \
-D PKG_MANIFOLD=on \
-D PKG_ML-PACE=on \
-D PKG_ML-RANN=on \
-D PKG_RHEO=on \
-D PKG_PTM=on \
-D PKG_PYTHON=on \
-D PKG_QTB=on \
-D PKG_SMTBQ=on \
-G Ninja
cmake --build build
ccache -s
- name: Run Tests
working-directory: build
shell: bash
run: ctest -V

View File

@ -11,6 +11,10 @@ on:
workflow_dispatch:
concurrency:
group: ${{ github.event_name }}-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{github.event_name == 'pull_request'}}
jobs:
build:
name: MacOS Unit Test

View File

@ -118,7 +118,7 @@ endif()
# silence excessive warnings for new Intel Compilers
if(CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
set(CMAKE_TUNE_DEFAULT "-Wno-tautological-constant-compare -Wno-unused-command-line-argument")
set(CMAKE_TUNE_DEFAULT "-fp-model precise -Wno-tautological-constant-compare -Wno-unused-command-line-argument")
endif()
# silence excessive warnings for PGI/NVHPC compilers
@ -141,7 +141,7 @@ 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")
set(CMAKE_TUNE_DEFAULT "${CMAKE_TUNE_DEFAULT}" "-Xcudafe --diag_suppress=unrecognized_pragma,--diag_suppress=128")
endif()
# we require C++11 without extensions. Kokkos requires at least C++17 (currently)
@ -165,6 +165,7 @@ if(MSVC)
add_compile_options(/wd4267)
add_compile_options(/wd4250)
add_compile_options(/EHsc)
add_compile_options(/utf-8)
endif()
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
endif()
@ -474,13 +475,13 @@ if(BUILD_OMP)
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_SHARED_LINKER_FLAGS_${BTYPE} "${CMAKE_SHARED_LINKER_FLAGS_${BTYPE} -fopenmp")
set(CMAKE_STATIC_LINKER_FLAGS_${BTYPE} "${CMAKE_STATIC_LINKER_FLAGS_${BTYPE} -fopenmp")
set(CMAKE_SHARED_LINKER_FLAGS_${BTYPE} "${CMAKE_SHARED_LINKER_FLAGS_${BTYPE}} -fopenmp")
set(CMAKE_STATIC_LINKER_FLAGS_${BTYPE} "${CMAKE_STATIC_LINKER_FLAGS_${BTYPE}} -fopenmp")
endif()
else()
if(CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang")
set(CMAKE_SHARED_LINKER_FLAGS_${BTYPE} "${CMAKE_SHARED_LINKER_FLAGS_${BTYPE} -fopenmp")
set(CMAKE_STATIC_LINKER_FLAGS_${BTYPE} "${CMAKE_STATIC_LINKER_FLAGS_${BTYPE} -fopenmp")
set(CMAKE_SHARED_LINKER_FLAGS_${BTYPE} "${CMAKE_SHARED_LINKER_FLAGS_${BTYPE}} -fopenmp")
set(CMAKE_STATIC_LINKER_FLAGS_${BTYPE} "${CMAKE_STATIC_LINKER_FLAGS_${BTYPE}} -fopenmp")
endif()
endif()
endif()
@ -497,7 +498,7 @@ if((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") AND (CMAKE_CXX_STANDARD GREATER_EQUA
PROPERTIES COMPILE_OPTIONS "-std=c++14")
endif()
if(PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_ML-POD OR PKG_ELECTRODE OR BUILD_TOOLS)
if(PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_ML-POD OR PKG_ELECTRODE OR PKG_RHEO OR BUILD_TOOLS)
enable_language(C)
if (NOT USE_INTERNAL_LINALG)
find_package(LAPACK)
@ -515,14 +516,6 @@ if(PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_ML-POD OR PKG_ELECTRODE OR BUILD_T
endif()
endif()
find_package(CURL QUIET COMPONENTS HTTP HTTPS)
option(WITH_CURL "Enable libcurl support" ${CURL_FOUND})
if(WITH_CURL)
find_package(CURL REQUIRED COMPONENTS HTTP HTTPS)
target_compile_definitions(lammps PRIVATE -DLAMMPS_CURL)
target_link_libraries(lammps PRIVATE CURL::libcurl)
endif()
# tweak jpeg library names to avoid linker errors with MinGW cross-compilation
set(JPEG_NAMES libjpeg libjpeg-62)
find_package(JPEG QUIET)
@ -580,7 +573,7 @@ else()
endif()
foreach(PKG_WITH_INCL KSPACE PYTHON ML-IAP VORONOI COLVARS ML-HDNNP MDI MOLFILE NETCDF
PLUMED QMMM ML-QUIP SCAFACOS MACHDYN VTK KIM COMPRESS ML-PACE LEPTON RHEO)
PLUMED QMMM ML-QUIP SCAFACOS MACHDYN VTK KIM COMPRESS ML-PACE LEPTON EXTRA-COMMAND)
if(PKG_${PKG_WITH_INCL})
include(Packages/${PKG_WITH_INCL})
endif()
@ -595,13 +588,8 @@ endif()
set(CMAKE_TUNE_FLAGS "${CMAKE_TUNE_DEFAULT}" CACHE STRING "Compiler and machine specific optimization flags (compilation only)")
separate_arguments(CMAKE_TUNE_FLAGS)
foreach(_FLAG ${CMAKE_TUNE_FLAGS})
target_compile_options(lammps PRIVATE ${_FLAG})
# skip these flags when linking the main executable
if(NOT (("${_FLAG}" STREQUAL "-Xcudafe") OR (("${_FLAG}" STREQUAL "--diag_suppress=unrecognized_pragma"))))
target_compile_options(lmp PRIVATE ${_FLAG})
endif()
endforeach()
target_compile_options(lammps PRIVATE ${CMAKE_TUNE_FLAGS})
target_compile_options(lmp PRIVATE ${CMAKE_TUNE_FLAGS})
########################################################################
# Basic system tests (standard libraries, headers, functions, types) #
########################################################################
@ -830,9 +818,15 @@ foreach(_DEF ${LAMMPS_DEFINES})
set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -D${_DEF}")
endforeach()
if(BUILD_SHARED_LIBS)
install(TARGETS lammps EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(TARGETS lammps EXPORT LAMMPS_Targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
if(NOT BUILD_MPI)
install(TARGETS mpi_stubs EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(TARGETS mpi_stubs EXPORT LAMMPS_Targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
@ -973,6 +967,9 @@ message(STATUS "<<< Compilers and Flags: >>>
C++ Standard: ${CMAKE_CXX_STANDARD}
C++ Flags: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}
Defines: ${DEFINES}")
if(CMAKE_CXX_COMPILER_LAUNCHER)
message(STATUS " Launcher: ${CMAKE_CXX_COMPILER_LAUNCHER}")
endif()
get_target_property(OPTIONS lammps COMPILE_OPTIONS)
if(OPTIONS)
message(" Options: ${OPTIONS}")
@ -991,6 +988,9 @@ if(_index GREATER -1)
Type: ${CMAKE_C_COMPILER_ID}
Version: ${CMAKE_C_COMPILER_VERSION}
C Flags: ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${BTYPE}}")
if(CMAKE_C_COMPILER_LAUNCHER)
message(STATUS " Launcher: ${CMAKE_C_COMPILER_LAUNCHER}")
endif()
endif()
message(STATUS "<<< Linker flags: >>>")
message(STATUS "Executable name: ${LAMMPS_BINARY}")

View File

@ -4,6 +4,8 @@
option(BUILD_DOC "Build LAMMPS HTML documentation" OFF)
if(BUILD_DOC)
option(BUILD_DOC_VENV "Build LAMMPS documentation virtual environment" ON)
mark_as_advanced(BUILD_DOC_VENV)
# Current Sphinx versions require at least Python 3.8
# use default (or custom) Python executable, if version is sufficient
if(Python_VERSION VERSION_GREATER_EQUAL 3.8)
@ -18,14 +20,6 @@ if(BUILD_DOC)
find_package(Doxygen 1.8.10 REQUIRED)
file(GLOB DOC_SOURCES CONFIGURE_DEPENDS ${LAMMPS_DOC_DIR}/src/[^.]*.rst)
add_custom_command(
OUTPUT docenv
COMMAND ${VIRTUALENV} docenv
)
set(DOCENV_BINARY_DIR ${CMAKE_BINARY_DIR}/docenv/bin)
set(DOCENV_REQUIREMENTS_FILE ${LAMMPS_DOC_DIR}/utils/requirements.txt)
set(SPHINX_CONFIG_DIR ${LAMMPS_DOC_DIR}/utils/sphinx-config)
set(SPHINX_CONFIG_FILE_TEMPLATE ${SPHINX_CONFIG_DIR}/conf.py.in)
set(SPHINX_STATIC_DIR ${SPHINX_CONFIG_DIR}/_static)
@ -44,14 +38,32 @@ if(BUILD_DOC)
# configure paths in conf.py, since relative paths change when file is copied
configure_file(${SPHINX_CONFIG_FILE_TEMPLATE} ${DOC_BUILD_CONFIG_FILE})
add_custom_command(
OUTPUT ${DOC_BUILD_DIR}/requirements.txt
DEPENDS docenv ${DOCENV_REQUIREMENTS_FILE}
COMMAND ${CMAKE_COMMAND} -E copy ${DOCENV_REQUIREMENTS_FILE} ${DOC_BUILD_DIR}/requirements.txt
COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install --upgrade pip
COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install --upgrade ${LAMMPS_DOC_DIR}/utils/converters
COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install -r ${DOC_BUILD_DIR}/requirements.txt --upgrade
)
if(BUILD_DOC_VENV)
add_custom_command(
OUTPUT docenv
COMMAND ${VIRTUALENV} docenv
)
set(DOCENV_BINARY_DIR ${CMAKE_BINARY_DIR}/docenv/bin)
set(DOCENV_REQUIREMENTS_FILE ${LAMMPS_DOC_DIR}/utils/requirements.txt)
add_custom_command(
OUTPUT ${DOC_BUILD_DIR}/requirements.txt
DEPENDS docenv ${DOCENV_REQUIREMENTS_FILE}
COMMAND ${CMAKE_COMMAND} -E copy ${DOCENV_REQUIREMENTS_FILE} ${DOC_BUILD_DIR}/requirements.txt
COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install --upgrade pip
COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install --upgrade ${LAMMPS_DOC_DIR}/utils/converters
COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install -r ${DOC_BUILD_DIR}/requirements.txt --upgrade
)
set(DOCENV_DEPS docenv ${DOC_BUILD_DIR}/requirements.txt)
if(NOT TARGET Sphinx::sphinx-build)
add_executable(Sphinx::sphinx-build IMPORTED GLOBAL)
set_target_properties(Sphinx::sphinx-build PROPERTIES IMPORTED_LOCATION "${DOCENV_BINARY_DIR}/sphinx-build")
endif()
else()
find_package(Sphinx)
endif()
set(MATHJAX_URL "https://github.com/mathjax/MathJax/archive/3.1.3.tar.gz" CACHE STRING "URL for MathJax tarball")
set(MATHJAX_MD5 "b81661c6e6ba06278e6ae37b30b0c492" CACHE STRING "MD5 checksum of MathJax tarball")
@ -97,8 +109,9 @@ if(BUILD_DOC)
endif()
add_custom_command(
OUTPUT html
DEPENDS ${DOC_SOURCES} docenv ${DOC_BUILD_DIR}/requirements.txt ${DOXYGEN_XML_DIR}/index.xml ${BUILD_DOC_CONFIG_FILE}
COMMAND ${DOCENV_BINARY_DIR}/sphinx-build ${SPHINX_EXTRA_OPTS} -b html -c ${DOC_BUILD_DIR} -d ${DOC_BUILD_DIR}/doctrees ${LAMMPS_DOC_DIR}/src ${DOC_BUILD_DIR}/html
DEPENDS ${DOC_SOURCES} ${DOCENV_DEPS} ${DOXYGEN_XML_DIR}/index.xml ${BUILD_DOC_CONFIG_FILE}
COMMAND ${Python3_EXECUTABLE} ${LAMMPS_DOC_DIR}/utils/make-globbed-tocs.py -d ${LAMMPS_DOC_DIR}/src
COMMAND Sphinx::sphinx-build ${SPHINX_EXTRA_OPTS} -b html -c ${DOC_BUILD_DIR} -d ${DOC_BUILD_DIR}/doctrees ${LAMMPS_DOC_DIR}/src ${DOC_BUILD_DIR}/html
COMMAND ${CMAKE_COMMAND} -E create_symlink Manual.html ${DOC_BUILD_DIR}/html/index.html
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LAMMPS_DOC_DIR}/src/PDF ${DOC_BUILD_DIR}/html/PDF
COMMAND ${CMAKE_COMMAND} -E remove -f ${DOXYGEN_XML_DIR}/run.stamp

View File

@ -0,0 +1,29 @@
# Find sphinx-build
find_program(Sphinx_EXECUTABLE NAMES sphinx-build
PATH_SUFFIXES bin
DOC "Sphinx documenation build executable")
mark_as_advanced(Sphinx_EXECUTABLE)
if(Sphinx_EXECUTABLE)
execute_process(COMMAND ${Sphinx_EXECUTABLE} --version
OUTPUT_VARIABLE sphinx_version
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE _sphinx_version_result)
if(_sphinx_version_result)
message(WARNING "Unable to determine sphinx-build verison: ${_sphinx_version_result}")
else()
string(REGEX REPLACE "sphinx-build ([0-9.]+).*"
"\\1"
Sphinx_VERSION
"${sphinx_version}")
endif()
if(NOT TARGET Sphinx::sphinx-build)
add_executable(Sphinx::sphinx-build IMPORTED GLOBAL)
set_target_properties(Sphinx::sphinx-build PROPERTIES IMPORTED_LOCATION "${Sphinx_EXECUTABLE}")
endif()
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Sphinx REQUIRED_VARS Sphinx_EXECUTABLE VERSION_VAR Sphinx_VERSION)

View File

@ -21,9 +21,9 @@ if(VORO_FOUND)
set(VORO_LIBRARIES ${VORO_LIBRARY})
set(VORO_INCLUDE_DIRS ${VORO_INCLUDE_DIR})
if(NOT TARGET VORO::VORO)
add_library(VORO::VORO UNKNOWN IMPORTED)
set_target_properties(VORO::VORO PROPERTIES
if(NOT TARGET VORO::voro++)
add_library(VORO::voro++ UNKNOWN IMPORTED)
set_target_properties(VORO::voro++ PROPERTIES
IMPORTED_LOCATION "${VORO_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${VORO_INCLUDE_DIR}")
endif()

View File

@ -0,0 +1,10 @@
# the geturl command needs libcurl
find_package(CURL QUIET COMPONENTS HTTP HTTPS)
option(WITH_CURL "Enable libcurl support" ${CURL_FOUND})
if(WITH_CURL)
find_package(CURL REQUIRED COMPONENTS HTTP HTTPS)
target_compile_definitions(lammps PRIVATE -DLAMMPS_CURL)
target_link_libraries(lammps PRIVATE CURL::libcurl)
endif()

View File

@ -3,7 +3,7 @@ enable_language(C)
# we don't use the parallel i/o interface.
set(HDF5_PREFER_PARALLEL FALSE)
find_package(HDF5 REQUIRED)
find_package(HDF5 COMPONENTS C REQUIRED)
# parallel HDF5 will import incompatible MPI headers with a serial build
if((NOT BUILD_MPI) AND HDF5_IS_PARALLEL)

View File

@ -8,8 +8,24 @@ endif()
########################################################################
# consistency checks and Kokkos options/settings required by LAMMPS
if(Kokkos_ENABLE_CUDA)
message(STATUS "KOKKOS: Enabling CUDA LAMBDA function support")
set(Kokkos_ENABLE_CUDA_LAMBDA ON CACHE BOOL "" FORCE)
option(Kokkos_ENABLE_IMPL_CUDA_MALLOC_ASYNC "CUDA asynchronous malloc support" OFF)
mark_as_advanced(Kokkos_ENABLE_IMPL_CUDA_MALLOC_ASYNC)
if(Kokkos_ENABLE_IMPL_CUDA_MALLOC_ASYNC)
message(STATUS "KOKKOS: CUDA malloc async support enabled")
else()
message(STATUS "KOKKOS: CUDA malloc async support disabled")
endif()
endif()
if(Kokkos_ENABLE_HIP)
option(Kokkos_ENABLE_HIP_MULTIPLE_KERNEL_INSTANTIATIONS "Enable multiple kernel instantiations with HIP" ON)
mark_as_advanced(Kokkos_ENABLE_HIP_MULTIPLE_KERNEL_INSTANTIATIONS)
option(Kokkos_ENABLE_ROCTHRUST "Use RoCThrust library" ON)
mark_as_advanced(Kokkos_ENABLE_ROCTHRUST)
if(Kokkos_ARCH_AMD_GFX942 OR Kokkos_ARCH_AMD_GFX940)
option(Kokkos_ENABLE_IMPL_HIP_UNIFIED_MEMORY "Enable unified memory with HIP" ON)
mark_as_advanced(Kokkos_ENABLE_IMPL_HIP_UNIFIED_MEMORY)
endif()
endif()
# Adding OpenMP compiler flags without the checks done for
# BUILD_OMP can result in compile failures. Enforce consistency.
@ -18,6 +34,15 @@ if(Kokkos_ENABLE_OPENMP)
message(FATAL_ERROR "Must enable BUILD_OMP with Kokkos_ENABLE_OPENMP")
endif()
endif()
if(Kokkos_ENABLE_SERIAL)
if(NOT (Kokkos_ENABLE_OPENMP OR Kokkos_ENABLE_THREADS OR
Kokkos_ENABLE_CUDA OR Kokkos_ENABLE_HIP OR Kokkos_ENABLE_SYCL
OR Kokkos_ENABLE_OPENMPTARGET))
option(Kokkos_ENABLE_ATOMICS_BYPASS "Disable atomics for Kokkos Serial Backend" ON)
mark_as_advanced(Kokkos_ENABLE_ATOMICS_BYPASS)
endif()
endif()
########################################################################
option(EXTERNAL_KOKKOS "Build against external kokkos library" OFF)
@ -45,8 +70,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.3.01.tar.gz" CACHE STRING "URL for KOKKOS tarball")
set(KOKKOS_MD5 "243de871b3dc2cf3990c1c404032df83" CACHE STRING "MD5 checksum of KOKKOS tarball")
set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/4.4.01.tar.gz" CACHE STRING "URL for KOKKOS tarball")
set(KOKKOS_MD5 "de6ee80d00b6212b02bfb7f1e71a8392" CACHE STRING "MD5 checksum of KOKKOS tarball")
mark_as_advanced(KOKKOS_URL)
mark_as_advanced(KOKKOS_MD5)
GetFallbackURL(KOKKOS_URL KOKKOS_FALLBACK)
@ -71,7 +96,7 @@ if(DOWNLOAD_KOKKOS)
add_dependencies(LAMMPS::KOKKOSCORE kokkos_build)
add_dependencies(LAMMPS::KOKKOSCONTAINERS kokkos_build)
elseif(EXTERNAL_KOKKOS)
find_package(Kokkos 4.3.01 REQUIRED CONFIG)
find_package(Kokkos 4.4.01 REQUIRED CONFIG)
target_link_libraries(lammps PRIVATE Kokkos::kokkos)
else()
set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos)
@ -105,6 +130,7 @@ set(KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/atom_vec_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/comm_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/comm_tiled_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/group_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/min_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/min_linesearch_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/neighbor_kokkos.cpp
@ -127,7 +153,7 @@ if(PKG_KSPACE)
${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(FFT_KOKKOS_VALUES KISS FFTW3 MKL NVPL HIPFFT CUFFT MKL_GPU)
set_property(CACHE FFT_KOKKOS PROPERTY STRINGS ${FFT_KOKKOS_VALUES})
validate_option(FFT_KOKKOS FFT_KOKKOS_VALUES)
string(TOUPPER ${FFT_KOKKOS} FFT_KOKKOS)
@ -137,10 +163,8 @@ if(PKG_KSPACE)
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")
find_package(CUDAToolkit REQUIRED)
target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_CUFFT)
target_link_libraries(lammps PRIVATE CUDA::cufft)
endif()
elseif(Kokkos_ENABLE_HIP)
@ -152,10 +176,21 @@ if(PKG_KSPACE)
elseif(FFT_KOKKOS STREQUAL "HIPFFT")
include(DetectHIPInstallation)
find_package(hipfft REQUIRED)
target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_HIPFFT)
target_link_libraries(lammps PRIVATE hip::hipfft)
endif()
elseif(FFT_KOKKOS STREQUAL "MKL_GPU")
if(NOT Kokkos_ENABLE_SYCL)
message(FATAL_ERROR "Using MKL_GPU FFT currently requires the SYCL backend of Kokkos.")
endif()
find_package(MKL REQUIRED)
target_link_libraries(lammps PRIVATE mkl_sycl_dft mkl_intel_ilp64 mkl_tbb_thread mkl_core tbb)
elseif(FFT_KOKKOS STREQUAL "MKL")
find_package(MKL REQUIRED)
elseif(FFT_KOKKOS STREQUAL "NVPL")
find_package(nvpl_fft REQUIRED)
target_link_libraries(lammps PRIVATE nvpl::fftw)
endif()
target_compile_definitions(lammps PRIVATE -DFFT_KOKKOS_${FFT_KOKKOS})
endif()
if(PKG_ML-IAP)

View File

@ -10,7 +10,7 @@ if(${FFTW}_FOUND)
else()
set(FFT "KISS" CACHE STRING "FFT library for KSPACE package")
endif()
set(FFT_VALUES KISS FFTW3 MKL)
set(FFT_VALUES KISS FFTW3 MKL NVPL)
set_property(CACHE FFT PROPERTY STRINGS ${FFT_VALUES})
validate_option(FFT FFT_VALUES)
string(TOUPPER ${FFT} FFT)
@ -41,6 +41,10 @@ elseif(FFT STREQUAL "MKL")
target_compile_definitions(lammps PRIVATE -DFFT_MKL_THREADS)
endif()
target_link_libraries(lammps PRIVATE MKL::MKL)
elseif(FFT STREQUAL "NVPL")
find_package(nvpl_fft REQUIRED)
target_compile_definitions(lammps PRIVATE -DFFT_NVPL)
target_link_libraries(lammps PRIVATE nvpl::fftw)
else()
# last option is KISSFFT
target_compile_definitions(lammps PRIVATE -DFFT_KISS)

View File

@ -32,9 +32,9 @@ endif()
# Note: must also adjust check for supported API versions in
# fix_plumed.cpp when version changes from v2.n.x to v2.n+1.y
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.9.1/plumed-src-2.9.1.tgz"
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.9.2/plumed-src-2.9.2.tgz"
CACHE STRING "URL for PLUMED tarball")
set(PLUMED_MD5 "c3b2d31479c1e9ce211719d40e9efbd7" CACHE STRING "MD5 checksum of PLUMED tarball")
set(PLUMED_MD5 "04862602a372c1013bdfee2d6d03bace" CACHE STRING "MD5 checksum of PLUMED tarball")
mark_as_advanced(PLUMED_URL)
mark_as_advanced(PLUMED_MD5)

View File

@ -1,2 +0,0 @@
find_package(GSL 2.6 REQUIRED)
target_link_libraries(lammps PRIVATE GSL::gsl)

View File

@ -54,5 +54,5 @@ else()
if(NOT VORO_FOUND)
message(FATAL_ERROR "Voro++ library not found. Help CMake to find it by setting VORO_LIBRARY and VORO_INCLUDE_DIR, or set DOWNLOAD_VORO=ON to download it")
endif()
target_link_libraries(lammps PRIVATE VORO::VORO)
target_link_libraries(lammps PRIVATE VORO::voro++)
endif()

View File

@ -0,0 +1,29 @@
# preset that enables KOKKOS and selects SYCL compilation with OpenMP
# enabled as well. Also sets some performance related compiler flags.
set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_SYCL ON CACHE BOOL "" FORCE)
set(FFT "MKL" CACHE STRING "" FORCE)
set(FFT_KOKKOS "MKL_GPU" CACHE STRING "" FORCE)
unset(USE_INTERNAL_LINALG)
unset(USE_INTERNAL_LINALG CACHE)
set(BLAS_VENDOR "Intel10_64_dyn")
# hide deprecation warnings temporarily for stable release
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)
set(CMAKE_CXX_COMPILER icpx CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER icx CACHE STRING "" FORCE)
set(CMAKE_Fortran_COMPILER "" CACHE STRING "" FORCE)
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
set(CMAKE_CXX_STANDARD 17 CACHE STRING "" FORCE)
# Silence everything
set(CMAKE_CXX_FLAGS "-w" CACHE STRING "" FORCE)
#set(CMAKE_EXE_LINKER_FLAGS "-fsycl -flink-huge-device-code -fsycl-targets=spir64_gen " CACHE STRING "" FORCE)
#set(CMAKE_TUNE_FLAGS "-O3 -fsycl -fsycl-device-code-split=per_kernel -fsycl-targets=spir64_gen" CACHE STRING "" FORCE)
set(CMAKE_EXE_LINKER_FLAGS "-fsycl -flink-huge-device-code " CACHE STRING "" FORCE)
set(CMAKE_TUNE_FLAGS "-O3 -fsycl -fsycl-device-code-split=per_kernel " CACHE STRING "" FORCE)

View File

@ -67,6 +67,7 @@ set(WIN_PACKAGES
REACTION
REAXFF
REPLICA
RHEO
RIGID
SHOCK
SMTBQ

View File

@ -60,6 +60,7 @@ set(ALL_PACKAGES
REACTION
REAXFF
REPLICA
RHEO
RIGID
SHOCK
SPH

View File

@ -3,26 +3,9 @@
set(CMAKE_CXX_COMPILER "icpx" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "icx" CACHE STRING "" FORCE)
set(CMAKE_Fortran_COMPILER "ifx" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(MPI_CXX "icpx" CACHE STRING "" FORCE)
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_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_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_Fortran_FLAGS "-qopenmp;-qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_omp_LIBRARY "libiomp5.so" CACHE PATH "" FORCE)
# force using internal BLAS/LAPCK since external ones may not be ABI compatible
set(USE_INTERNAL_LINALG ON CACHE BOOL "" FORCE)

View File

@ -60,6 +60,7 @@ set(WIN_PACKAGES
REACTION
REAXFF
REPLICA
RHEO
RIGID
SHOCK
SMTBQ

7
doc/.gitignore vendored
View File

@ -17,3 +17,10 @@
*.el
/utils/sphinx-config/_static/mathjax
/utils/sphinx-config/_static/polyfill.js
/src/pairs.rst
/src/bonds.rst
/src/angles.rst
/src/dihedrals.rst
/src/impropers.rst
/src/computes.rst
/src/fixes.rst

View File

@ -83,7 +83,10 @@ $(SPHINXCONFIG)/conf.py: $(SPHINXCONFIG)/conf.py.in
-e 's,@LAMMPS_PYTHON_DIR@,$(BUILDDIR)/../python,g' \
-e 's,@LAMMPS_DOC_DIR@,$(BUILDDIR),g' $< > $@
html: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
globbed-tocs:
$(PYTHON) $(BUILDDIR)/utils/make-globbed-tocs.py -d $(RSTDIR)
html: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
@$(MAKE) $(MFLAGS) -C graphviz all
@(\
@ -113,7 +116,7 @@ html: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
@rm -rf html/PDF/.[sg]*
@echo "Build finished. The HTML pages are in doc/html."
fasthtml: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
fasthtml: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
@$(MAKE) $(MFLAGS) -C graphviz all
@mkdir -p fasthtml
@ -132,7 +135,7 @@ fasthtml: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
@rm -rf fasthtml/PDF/.[sg]*
@echo "Fast HTML build finished. The HTML pages are in doc/fasthtml."
spelling: xmlgen $(SPHINXCONFIG)/conf.py $(VENV) $(SPHINXCONFIG)/false_positives.txt
spelling: xmlgen globbed-tocs $(SPHINXCONFIG)/conf.py $(VENV) $(SPHINXCONFIG)/false_positives.txt
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
@(\
. $(VENV)/bin/activate ; \
@ -143,7 +146,7 @@ spelling: xmlgen $(SPHINXCONFIG)/conf.py $(VENV) $(SPHINXCONFIG)/false_positives
)
@echo "Spell check finished."
epub: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
epub: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
@$(MAKE) $(MFLAGS) -C graphviz all
@mkdir -p epub/JPG
@ -166,7 +169,7 @@ mobi: epub
@ebook-convert LAMMPS.epub LAMMPS.mobi
@echo "Conversion finished. The MOBI manual file is created."
pdf: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
pdf: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
@$(MAKE) $(MFLAGS) -C graphviz all
@if [ "$(HAS_PDFLATEX)" == "NO" ] ; then echo "PDFLaTeX or latexmk were not found! Please check README for further instructions" 1>&2; exit 1; fi

View File

@ -10,7 +10,7 @@ Last change: 2022-12-30
In fall 2019, the LAMMPS documentation file format has changed from a
home grown markup designed to generate HTML format files only, to
[reStructuredText](https://docutils.sourceforge.io/rst.html>. For a
[reStructuredText](https://docutils.sourceforge.io/rst.html>). For a
transition period all files in the old .txt format were transparently
converted to .rst and then processed. The `txt2rst tool` is still
included in the distribution to obtain an initial .rst file for legacy
@ -45,8 +45,7 @@ what kind of information and sections are needed.
## Formatting conventions
For headlines we try to follow the conventions posted here:
https://documentation-style-guide-sphinx.readthedocs.io/en/latest/style-guide.html#headings
For headlines we try to follow the conventions posted [here](https://documentation-style-guide-sphinx.readthedocs.io/en/latest/style-guide.html#headings).
It seems to be sufficient to have this consistent only within
any single file and it is not (yet) enforced strictly, but making
this globally consistent makes it easier to move sections around.
@ -64,7 +63,7 @@ Groups of shell commands or LAMMPS input script or C/C++/Python source
code should be typeset into a `.. code-block::` section. A syntax
highlighting extension for LAMMPS input scripts is provided, so `LAMMPS`
can be used to indicate the language in the code block in addition to
`bash`, `c`, `c++`, `console`, `csh`, `diff', `fortran`, `json`, `make`,
`bash`, `c`, `c++`, `console`, `csh`, `diff`, `fortran`, `json`, `make`,
`perl`, `powershell`, `python`, `sh`, or `tcl`, `text`, or `yaml`. When
no syntax style is indicated, no syntax highlighting is performed. When
typesetting commands executed on the shell, please do not prefix
@ -84,7 +83,7 @@ block can be used, followed by multiple `.. tab::` blocks, one
for each alternative. This is only used for HTML output. For other
outputs, the `.. tabs::` directive is transparently removed and
the individual `.. tab::` blocks will be replaced with an
`.. admonition::`` block. Thus in PDF and ePUB output those will
`.. admonition::` block. Thus in PDF and ePUB output those will
be realized as sequential and plain notes.
Special remarks can be highlighted with a `.. note::` block and

View File

@ -6,7 +6,9 @@ choices the LAMMPS developers have agreed on. Git and GitHub provide the
tools, but do not set policies, so it is up to the developers to come to
an agreement as to how to define and interpret policies. This document
is likely to change as our experiences and needs change, and we try to
adapt it accordingly. Last change 2023-02-10.
adapt it accordingly.
Last change: 2023-02-10
## Table of Contents
@ -72,7 +74,7 @@ be assigned to signal urgency to merge this pull request quickly.
People can be assigned to review a pull request in two ways:
* They can be assigned manually to review a pull request
by the submitter or a LAMMPS developer
by the submitter or a LAMMPS developer.
* They can be automatically assigned, because a developer's GitHub
handle matches a file pattern in the `.github/CODEOWNERS` file,
which associates developers with the code they contributed and
@ -86,9 +88,9 @@ required before merging, in addition to passing all automated
compilation and unit tests. Merging counts as implicit approval, so
does submission of a pull request (by a LAMMPS developer). So the person
doing the merge may not also submit an approving review. The GitHub
feature, that reviews from code owners are "hard" reviews (i.e. they
must all approve before merging is allowed), is currently disabled.
It is in the discretion of the merge maintainer to assess when a
feature that reviews from code owners are "hard" reviews (i.e. they
must all approve before merging is allowed) is currently disabled.
It is at the discretion of the merge maintainer to assess when a
sufficient degree of approval has been reached, especially from external
collaborators. Reviews may be (automatically) dismissed, when the
reviewed code has been changed. Review may be requested a second time.
@ -147,7 +149,8 @@ only contain bug fixes, feature additions to peripheral functionality,
and documentation updates. In between stable releases, bug fixes and
infrastructure updates are back-ported from the "develop" branch to the
"maintenance" branch and occasionally merged into "stable" and published
as update releases.
as update releases. Further explanation of LAMMPS versions can be found
[in the documentation](https://docs.lammps.org/Manual_version.html).
## Project Management

View File

@ -1,7 +1,7 @@
.TH LAMMPS "1" "29 August 2024" "2024-08-29"
.TH LAMMPS "1" "19 November 2024" "2024-11-19"
.SH NAME
.B LAMMPS
\- Molecular Dynamics Simulator. Version 29 August 2024
\- Molecular Dynamics Simulator. Version 19 November 2024
.SH SYNOPSIS
.B lmp

View File

@ -1,4 +1,4 @@
.TH MSI2LMP "1" "v3.9.10" "2023-03-10"
.TH MSI2LMP "1" "v3.9.11" "2024-09-06"
.SH NAME
.B MSI2LMP
\- Converter for Materials Studio files to LAMMPS
@ -101,7 +101,7 @@ msi2lmp decane -c 0 -f oplsaa
.SH COPYRIGHT
© 2003--2022 Sandia Corporation
© 2003--2024 Sandia Corporation
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as

View File

@ -138,12 +138,27 @@ during development:
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. 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 scripts and inputs for integration, run, and legacy regression
testing are maintained in a `separate repository
<https://github.com/lammps/lammps-testing>`_ 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.
Regression tests can also be performed locally with the :ref:`regression
tester tool <regression>`. The tool checks if a given LAMMPS binary run
with selected input examples produces thermo output that is consistent
with the provided log files. The script can be run in one pass over all
available input files, but it can also first create multiple lists of
inputs or folders that can then be run with multiple workers
concurrently to speed things up. Another mode allows to do a quick
check of inputs that contain commands that have changes in the current
checkout branch relative to a git branch. This works similar to the two
pass mode, but will select only shorter runs and no more than 100 inputs
that are chosen randomly. This ensures that this test runs
significantly faster compared to the full test run. These test runs can
also be performed with instrumented LAMMPS binaries (see previous
section).
The unit testing facility is integrated into the CMake build process of
the LAMMPS source code distribution itself. It can be enabled by
@ -630,11 +645,35 @@ The following target are available for both, GNU make and CMake:
GitHub command line interface
-----------------------------
GitHub is developing a `tool for the command line
<https://cli.github.com>`_ that interacts with the GitHub website via a
command called ``gh``. This can be extremely convenient when working
with a Git repository hosted on GitHub (like LAMMPS). It is thus highly
recommended to install it when doing LAMMPS development.
GitHub has developed a `command line tool <https://cli.github.com>`_
to interact with the GitHub website via a command called ``gh``.
This is extremely convenient when working with a Git repository hosted
on GitHub (like LAMMPS). It is thus highly recommended to install it
when doing LAMMPS development. To use ``gh`` you must be within a git
checkout of a repository and you must obtain an authentication token
to connect your checkout with a GitHub user. This is done with the
command: ``gh auth login`` where you then have to follow the prompts.
Here are some examples:
The capabilities of the ``gh`` command is continually expanding, so
please see the documentation at https://cli.github.com/manual/
.. list-table::
:header-rows: 1
:widths: 34 66
* - Command
- Description
* - ``gh pr list``
- List currently open pull requests
* - ``gh pr checks 404``
- Shows the status of all checks for pull request #404
* - ``gh pr view 404``
- Shows the description and recent comments for pull request #404
* - ``gh co 404``
- Check out the branch from pull request #404; set up for pushing changes
* - ``gh issue list``
- List currently open issues
* - ``gh issue view 430 --comments``
- Shows the description and all comments for issue #430
The capabilities of the ``gh`` command are continually expanding, so
for more details please see the documentation at https://cli.github.com/manual/
or use ``gh --help`` or ``gh <command> --help`` for embedded help.

View File

@ -7,6 +7,8 @@ in addition to
.. list-table::
:align: center
:header-rows: 1
:widths: 50 50
:width: 80%
* - CMake build
- Traditional make
@ -115,7 +117,7 @@ GPU package
To build with this package, you must choose options for precision and
which GPU hardware to build for. The GPU package currently supports
three different types of backends: OpenCL, CUDA and HIP.
three different types of back ends: OpenCL, CUDA and HIP.
CMake build
^^^^^^^^^^^
@ -205,7 +207,7 @@ necessary for ``hipcc`` and the linker to work correctly.
.. versionadded:: 3Aug2022
Using the CHIP-SPV implementation of HIP is supported. It allows one to
run HIP code on Intel GPUs via the OpenCL or Level Zero backends. To use
run HIP code on Intel GPUs via the OpenCL or Level Zero back ends. To use
CHIP-SPV, you must set ``-DHIP_USE_DEVICE_SORT=OFF`` in your CMake
command line as CHIP-SPV does not yet support hipCUB. As of Summer 2022,
the use of HIP for Intel GPUs is experimental. You should only use this
@ -751,14 +753,27 @@ This list was last updated for version 4.3.0 of the Kokkos library.
platform-appropriate vendor library: rocFFT on AMD GPUs or cuFFT on
NVIDIA GPUs.
To simplify compilation, five preset files are included in the
For Intel GPUs using SYCL, set these variables:
.. code-block:: bash
-D Kokkos_ARCH_HOSTARCH=yes # HOSTARCH = HOST from list above
-D Kokkos_ARCH_GPUARCH=yes # GPUARCH = GPU from list above
-D Kokkos_ENABLE_SYCL=yes
-D Kokkos_ENABLE_OPENMP=yes
-D FFT_KOKKOS=MKL_GPU
This will enable FFTs on the GPU using the oneMKL library.
To simplify compilation, six preset files are included in the
``cmake/presets`` folder, ``kokkos-serial.cmake``,
``kokkos-openmp.cmake``, ``kokkos-cuda.cmake``,
``kokkos-hip.cmake``, and ``kokkos-sycl.cmake``. They will enable
the KOKKOS package and enable some hardware choices. For GPU
support those preset files must be customized to match the
hardware used. So to compile with CUDA device parallelization with
some common packages enabled, you can do the following:
``kokkos-hip.cmake``, ``kokkos-sycl-nvidia.cmake``, and
``kokkos-sycl-intel.cmake``. They will enable the KOKKOS
package and enable some hardware choices. For GPU support those
preset files must be customized to match the hardware used. So
to compile with CUDA device parallelization with some common
packages enabled, you can do the following:
.. code-block:: bash
@ -830,6 +845,18 @@ This list was last updated for version 4.3.0 of the Kokkos library.
FFT_INC = -DFFT_HIPFFT # enable use of hipFFT (optional)
FFT_LIB = -lhipfft # link to hipFFT library
For Intel GPUs using SYCL:
.. code-block:: make
KOKKOS_DEVICES = SYCL
KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is
# hosting the GPU
# GPUARCH = GPU from list above
FFT_INC = -DFFT_KOKKOS_MKL_GPU # enable use of oneMKL for Intel GPUs (optional)
# link to oneMKL FFT library
FFT_LIB = -lmkl_sycl_dft -lmkl_intel_ilp64 -lmkl_tbb_thread -mkl_core -ltbb
Advanced KOKKOS compilation settings
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -2224,28 +2251,38 @@ verified to work in February 2020 with Quantum Espresso versions 6.3 to
RHEO package
------------
To build with this package you must have the `GNU Scientific Library
(GSL) <https://www.gnu.org/software/gsl/>` installed in locations that
are accessible in your environment. The GSL library should be at least
version 2.7.
This package depends on the BPM package.
.. tabs::
.. tab:: CMake build
If CMake cannot find the GSL library or include files, you can set:
.. code-block:: bash
-D GSL_ROOT_DIR=path # path to root of GSL installation
-D PKG_RHEO=yes # enable the package itself
-D PKG_BPM=yes # the RHEO package requires BPM
-D USE_INTERNAL_LINALG=value # prefer internal LAPACK if true
Some features in the RHEO package are dependent on code in the BPM
package so the latter one *must* be enabled as well.
The RHEO package also requires LAPACK (and BLAS) and CMake
can identify their locations and pass that info to the RHEO
build script. But on some systems this may cause problems when
linking or the dependency is not desired. By using the setting
``-D USE_INTERNAL_LINALG=yes`` when running the CMake
configuration, you will select compiling and linking the bundled
linear algebra library and work around the limitations.
.. tab:: Traditional make
LAMMPS will try to auto-detect the GSL compiler and linker flags
from the corresponding ``pkg-config`` file (``gsl.pc``), otherwise
you can edit the file ``lib/rheo/Makefile.lammps``
to specify the paths and library names where indicated by comments.
This must be done **before** the package is installed.
The RHEO package requires LAPACK (and BLAS) which can be either
a system provided library or the bundled "linalg" library. This
is a subset of LAPACK translated to C++. For that, one of the
provided ``Makefile.lammps.<config>`` files needs to be copied
to ``Makefile.lammps`` and edited as needed. The default file
uses the bundled "linalg" library, which can be built by
``make lib-linalg args='-m serial'`` in the ``src`` folder.
----------

View File

@ -67,10 +67,10 @@ libraries and better pipelining for packing and communication.
.. 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=value # FFTW3 or MKL or NVPL or KISS,
# default is FFTW3 if found, else KISS
-D FFT_KOKKOS=value # FFTW3 or MKL or NVPL or KISS or CUFFT
# or HIPFFT or MKL_GPU, 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
@ -103,6 +103,8 @@ libraries and better pipelining for packing and communication.
-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
-D nvpl_fft_INCLUDE_DIR=path # path to NVPL FFT include files
-D nvpl_fft_LIBRARY_DIR=path # path to NVPL FFT libraries
.. note::
@ -121,9 +123,10 @@ libraries and better pipelining for packing and communication.
.. code-block:: make
FFT_INC = -DFFT_<NAME> # where <NAME> is KISS (default), FFTW3,
# FFTW (same as FFTW3), or MKL
# FFTW (same as FFTW3), NVPL, or MKL
FFT_INC = -DFFT_KOKKOS_<NAME> # where <NAME> is KISS (default), FFTW3,
# FFTW (same as FFTW3), MKL, CUFFT, or HIPFFT
# FFTW (same as FFTW3), NVPL, MKL, CUFFT,
# HIPFFT, or MKL_GPU
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
@ -141,6 +144,9 @@ libraries and better pipelining for packing and communication.
# cuFFT either precision
FFT_LIB = -lcufft
# MKL_GPU either precision
FFT_LIB = -lmkl_sycl_dft -lmkl_intel_ilp64 -lmkl_tbb_thread -lmkl_core -ltbb
# FFTW3 double precision
FFT_LIB = -lfftw3
@ -165,6 +171,10 @@ libraries and better pipelining for packing and communication.
# MKL with automatic runtime selection of interface libs
FFT_LIB = -lmkl_rt
# threaded NVPL FFT
FFT_LIB = -lnvpl_fftw
As with CMake, you do not need to set paths in ``FFT_INC`` or
``FFT_PATH``, if the compiler can find the FFT header and library
files in its default search path. You must specify ``FFT_LIB``
@ -218,10 +228,15 @@ 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 NVIDIA Performance Libraries (NVPL) FFT library is optimized for NVIDIA
Grace Armv9.0 architecture. You can download it from https://docs.nvidia.com/nvpl/
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).
GPU-resident (i.e., HIP or CUDA). Similarly, GPU offload of FFTs on
Intel GPUs with oneMKL currently requires the Kokkos acceleration
package to be enabled with the SYCL back end.
Performing 3d FFTs in parallel can be time-consuming due to data access
and required communication. This cost can be reduced by performing

View File

@ -58,6 +58,7 @@ KOKKOS, o = OPENMP, t = OPT.
* :doc:`fep/ta <compute_fep_ta>`
* :doc:`force/tally <compute_tally>`
* :doc:`fragment/atom <compute_cluster_atom>`
* :doc:`gaussian/grid/local (k) <compute_gaussian_grid_local>`
* :doc:`global/atom <compute_global_atom>`
* :doc:`group/group <compute_group_group>`
* :doc:`gyration <compute_gyration>`
@ -140,8 +141,8 @@ KOKKOS, o = OPENMP, t = OPT.
* :doc:`smd/vol <compute_smd_vol>`
* :doc:`snap <compute_sna_atom>`
* :doc:`sna/atom <compute_sna_atom>`
* :doc:`sna/grid <compute_sna_atom>`
* :doc:`sna/grid/local <compute_sna_atom>`
* :doc:`sna/grid (k) <compute_sna_atom>`
* :doc:`sna/grid/local (k) <compute_sna_atom>`
* :doc:`snad/atom <compute_sna_atom>`
* :doc:`snav/atom <compute_sna_atom>`
* :doc:`sph/e/atom <compute_sph_e_atom>`

View File

@ -43,7 +43,7 @@ OPT.
* :doc:`brownian/asphere <fix_brownian>`
* :doc:`brownian/sphere <fix_brownian>`
* :doc:`charge/regulation <fix_charge_regulation>`
* :doc:`cmap <fix_cmap>`
* :doc:`cmap (k) <fix_cmap>`
* :doc:`colvars <fix_colvars>`
* :doc:`controller <fix_controller>`
* :doc:`damping/cundall <fix_damping_cundall>`
@ -134,7 +134,7 @@ OPT.
* :doc:`nve/dot <fix_nve_dot>`
* :doc:`nve/dotc/langevin <fix_nve_dotc_langevin>`
* :doc:`nve/eff <fix_nve_eff>`
* :doc:`nve/limit <fix_nve_limit>`
* :doc:`nve/limit (k) <fix_nve_limit>`
* :doc:`nve/line <fix_nve_line>`
* :doc:`nve/manifold/rattle <fix_nve_manifold_rattle>`
* :doc:`nve/noforce <fix_nve_noforce>`
@ -178,6 +178,7 @@ OPT.
* :doc:`python/move <fix_python_move>`
* :doc:`qbmsst <fix_qbmsst>`
* :doc:`qeq/comb (o) <fix_qeq_comb>`
* :doc:`qeq/ctip <fix_qeq>`
* :doc:`qeq/dynamic <fix_qeq>`
* :doc:`qeq/fire <fix_qeq>`
* :doc:`qeq/point <fix_qeq>`
@ -186,10 +187,11 @@ OPT.
* :doc:`qeq/slater <fix_qeq>`
* :doc:`qmmm <fix_qmmm>`
* :doc:`qtb <fix_qtb>`
* :doc:`qtpie/reaxff <fix_qtpie_reaxff>`
* :doc:`rattle <fix_shake>`
* :doc:`reaxff/bonds (k) <fix_reaxff_bonds>`
* :doc:`reaxff/species (k) <fix_reaxff_species>`
* :doc:`recenter <fix_recenter>`
* :doc:`recenter (k) <fix_recenter>`
* :doc:`restrain <fix_restrain>`
* :doc:`rheo <fix_rheo>`
* :doc:`rheo/oxidation <fix_rheo_oxidation>`
@ -267,7 +269,7 @@ OPT.
* :doc:`wall/piston <fix_wall_piston>`
* :doc:`wall/reflect (k) <fix_wall_reflect>`
* :doc:`wall/reflect/stochastic <fix_wall_reflect_stochastic>`
* :doc:`wall/region <fix_wall_region>`
* :doc:`wall/region (k) <fix_wall_region>`
* :doc:`wall/region/ees <fix_wall_ees>`
* :doc:`wall/srd <fix_wall_srd>`
* :doc:`wall/table <fix_wall>`

View File

@ -44,7 +44,7 @@ OPT.
* :doc:`born/coul/wolf/cs (g) <pair_cs>`
* :doc:`born/gauss <pair_born_gauss>`
* :doc:`bpm/spring <pair_bpm_spring>`
* :doc:`brownian (o) <pair_brownian>`
* :doc:`brownian (ko) <pair_brownian>`
* :doc:`brownian/poly (o) <pair_brownian>`
* :doc:`buck (giko) <pair_buck>`
* :doc:`buck/coul/cut (giko) <pair_buck>`
@ -59,6 +59,7 @@ OPT.
* :doc:`comb (o) <pair_comb>`
* :doc:`comb3 <pair_comb>`
* :doc:`cosine/squared <pair_cosine_squared>`
* :doc:`coul/ctip <pair_coul>`
* :doc:`coul/cut (gko) <pair_coul>`
* :doc:`coul/cut/dielectric <pair_dielectric>`
* :doc:`coul/cut/global (o) <pair_coul>`

View File

@ -12,3 +12,4 @@ details are provided for writing code for LAMMPS.
Developer_write_pair
Developer_write_fix
Developer_write_command

View File

@ -0,0 +1,348 @@
Writing a new command style
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Command styles allow to do system manipulations or interfaces to the
operating system.
In the text below, we will discuss the implementation of one example. As
shown on the page for :doc:`writing or extending command styles
<Modify_command>`, in order to implement a new command style, a new class
must be written that is either directly or indirectly derived from the
``Command`` class. There is just one method that must be implemented:
``Command::command()``. In addition, a custom constructor is needed to get
access to the members of the ``LAMMPS`` class like the ``Error`` class to
print out error messages. The ``Command::command()`` method processes the
arguments passed to the command in the input and executes it. Any other
methods would be for the convenience of implementation of the new command.
In general, new command styles should be added to the :ref:`EXTRA-COMMAND
package <PKG-EXTRA-COMMAND>`. If you feel that your contribution should be
added to a different package, please consult with the :doc:`LAMMPS
developers <Intro_authors>` first. The contributed code needs to support
the :doc:`traditional GNU make build process <Build_make>` **and** the
:doc:`CMake build process <Build_cmake>`.
----
Case 1: Implementing the geturl command
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In this section, we will describe the procedure of adding a simple command
style to LAMMPS: the :doc:`geturl command <geturl>` that allows to download
files directly without having to rely on an external program like "wget" or
"curl". The complete implementation can be found in the files
``src/EXTRA-COMMAND/geturl.cpp`` and ``src/EXTRA-COMMAND/geturl.h`` of the
LAMMPS source code.
Interfacing the *libcurl* library
"""""""""""""""""""""""""""""""""
Rather than implementing the various protocols for downloading files, we
rely on an external library: `libcurl library <https:://curl.se/libcurl/>`_.
This requires that the library and its headers are installed. For the
traditional GNU make build system, this simply requires edits to the machine
makefile to add compilation flags like for other libraries. For the CMake
based build system, we need to add some lines to the file
``cmake/Modules/Packages/EXTRA-COMMAND.cmake``:
.. code-block:: cmake
find_package(CURL QUIET COMPONENTS HTTP HTTPS)
option(WITH_CURL "Enable libcurl support" ${CURL_FOUND})
if(WITH_CURL)
find_package(CURL REQUIRED COMPONENTS HTTP HTTPS)
target_compile_definitions(lammps PRIVATE -DLAMMPS_CURL)
target_link_libraries(lammps PRIVATE CURL::libcurl)
endif()
The first ``find_package()`` command uses a built-in CMake module to find
an existing *libcurl* installation with development headers and support for
using the HTTP and HTTPS protocols. The "QUIET" flag ensures that there is
no screen output and no error if the search fails. The status of the search
is recorded in the "${CURL_FOUND}" variable. That variable sets the default
of the WITH_CURL option, which toggles whether support for *libcurl* is included
or not.
The second ``find_package()`` uses the "REQUIRED" flag to produce an error
if the WITH_CURL option was set to ``True``, but no suitable *libcurl*
implementation with development support was found. This construct is used
so that the CMake script code inside the ``if(WITH_CURL)`` and ``endif()``
block can be expanded later to download and compile *libcurl* as part of the
LAMMPS build process, if it is not found locally. The
``target_compile_definitions()`` function added the define ``-DLAMMPS_CURL``
to the compilation flags when compiling objects for the LAMMPS library.
This allows to always compile the :doc:`geturl command <geturl>`, but use
pre-processing to compile in the interface to *libcurl* only when it is
present and usable and otherwise stop with an error message about the
unavailability of *libcurl* to execute the functionality of the command.
Header file
"""""""""""
The first segment of any LAMMPS source should be the copyright and
license statement. Note the marker in the first line to indicate to
editors like emacs that this file is a C++ source, even though the .h
extension suggests a C source (this is a convention inherited from the
very beginning of the C++ version of LAMMPS).
.. code-block:: c++
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
Every command style must be registered in LAMMPS by including the following
lines of code in the second part of the header after the copyright
message and before the include guards for the class definition:
.. code-block:: c++
#ifdef COMMAND_CLASS
// clang-format off
CommandStyle(geturl,GetURL);
// clang-format on
#else
This block between ``#ifdef COMMAND_CLASS`` and ``#else`` will be
included by the ``Input`` class in ``input.cpp`` to build a map of
"factory functions" that will create an instance of a Command class
and call its ``command()`` method. The map connects the name of the
command ``geturl`` with the name of the class ``GetURL``. During
compilation, LAMMPS constructs a file ``style_command.h`` that contains
``#include`` statements for all "installed" command styles. Before
including ``style_command.h`` into ``input.cpp``, the ``COMMAND_CLASS``
define is set and the ``CommandStyle(name,class)`` macro defined. The
code of the macro adds the installed command styles to the "factory map"
which enables the ``Input`` to execute the command.
The list of header files to include in ``style_command.h`` is automatically
updated by the build system if there are new files, so the presence of the
new header file in the ``src/EXTRA-COMMAND`` folder and the enabling of the
EXTRA-COMMAND package will trigger LAMMPS to include the new command style
when it is (re-)compiled. The "// clang-format" format comments are needed
so that running :ref:`clang-format <clang-format>` on the file will not
insert unwanted blanks which would break the ``CommandStyle`` macro.
The third part of the header file is the actual class definition of the
``GetURL`` class. This has the custom constructor and the ``command()``
method implemented by this command style. For the constructor there is
nothing to do but to pass the ``lmp`` pointer to the base class. Since the
``command()`` method is labeled "virtual" in the base class, it must be
given the "override" property.
.. code-block:: c++
#ifndef LMP_GETURL_H
#define LMP_GETURL_H
#include "command.h"
namespace LAMMPS_NS {
class GetURL : public Command {
public:
GetURL(class LAMMPS *lmp) : Command(lmp) {};
void command(int, char **) override;
};
} // namespace LAMMPS_NS
#endif
#endif
The "override" property helps to detect unexpected mismatches because
compilation will stop with an error in case the signature of a function
is changed in the base class without also changing it in all derived
classes.
Implementation file
"""""""""""""""""""
We move on to the implementation of the ``GetURL`` class in the
``geturl.cpp`` file. This file also starts with a LAMMPS copyright and
license header. Below that notice is typically the space where comments may
be added with additional information about this specific file, the
author(s), affiliation(s), and email address(es). This way the contributing
author(s) can be easily contacted, when there are questions about the
implementation later. Since the file(s) may be around for a long time, it
is beneficial to use some kind of "permanent" email address, if possible.
.. code-block:: c++
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Axel Kohlmeyer (Temple U),
------------------------------------------------------------------------- */
#include "geturl.h"
#include "comm.h"
#include "error.h"
#if defined(LAMMPS_CURL)
#include <curl/curl.h>
#endif
using namespace LAMMPS_NS;
The second section of the implementation file has various include
statements. The include file for the class header has to come first, then a
couple of LAMMPS classes (sorted alphabetically) followed by the header for
the *libcurl* interface. This is wrapped into an ``#ifdef`` block so that
LAMMPS will compile this file without error when the *libcurl* header is not
available and thus the define not set. The final statement of this segment
imports the ``LAMMPS_NS::`` namespace globally for this file. This way, all
LAMMPS specific functions and classes do not have to be prefixed with
``LAMMPS_NS::``.
The command() function (required)
"""""""""""""""""""""""""""""""""
Since the required custom constructor is trivial and implemented in the
header, there is only one function that must be implemented for a command
style and that is the ``command()`` function.
.. code-block:: c++
void GetURL::command(int narg, char **arg)
{
#if !defined(LAMMPS_CURL)
error->all(FLERR, "LAMMPS has not been compiled with libcurl support");
#else
if (narg < 1) utils::missing_cmd_args(FLERR, "geturl", error);
int verify = 1;
int overwrite = 1;
int verbose = 0;
This first part also has the ``#ifdef`` block depending on the LAMMPS_CURL
define. This way the command will simply print an error, if *libcurl* is
not available but will not fail to compile. Furthermore, it sets the
defaults for the following optional arguments.
.. code-block:: c++
// process arguments
std::string url = arg[0];
// sanity check
if ((url.find(':') == std::string::npos) || (url.find('/') == std::string::npos))
error->all(FLERR, "URL '{}' is not a supported URL", url);
std::string output = url.substr(url.find_last_of('/') + 1);
if (output.empty()) error->all(FLERR, "URL '{}' must end in a file string", url);
This block stores the positional, i.e. non-optional argument of the URL to
be downloaded and adds a couple of sanity checks on the string to make sure it is
a valid URL. Also it derives the default name of the output file from the URL.
.. code-block:: c++
int iarg = 1;
while (iarg < narg) {
if (strcmp(arg[iarg], "output") == 0) {
if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "geturl output", error);
output = arg[iarg + 1];
++iarg;
} else if (strcmp(arg[iarg], "overwrite") == 0) {
if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "geturl overwrite", error);
overwrite = utils::logical(FLERR, arg[iarg + 1], false, lmp);
++iarg;
} else if (strcmp(arg[iarg], "verify") == 0) {
if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "geturl verify", error);
verify = utils::logical(FLERR, arg[iarg + 1], false, lmp);
++iarg;
} else if (strcmp(arg[iarg], "verbose") == 0) {
if (iarg + 2 > narg) utils::missing_cmd_args(FLERR, "geturl verbose", error);
verbose = utils::logical(FLERR, arg[iarg + 1], false, lmp);
++iarg;
} else {
error->all(FLERR, "Unknown geturl keyword: {}", arg[iarg]);
}
++iarg;
}
This block parses the optional arguments following the URL and stops with an
error if there are arguments missing or an unknown argument is encountered.
.. code-block:: c++
// only download files from rank 0
if (comm->me != 0) return;
if (!overwrite && platform::file_is_readable(output)) return;
// open output file for writing
FILE *out = fopen(output.c_str(), "wb");
if (!out)
error->all(FLERR, "Cannot open output file {} for writing: {}", output, utils::getsyserror());
Here all MPI ranks other than 0 will return, so that the URL download will
only happen from a single MPI rank. For that rank the output file is opened
for writing using the C library function ``fopen()``.
.. code-block:: c++
// initialize curl and perform download
CURL *curl;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if (curl) {
(void) curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
(void) curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *) out);
(void) curl_easy_setopt(curl, CURLOPT_FILETIME, 1L);
(void) curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1L);
if (verbose && screen) {
(void) curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
(void) curl_easy_setopt(curl, CURLOPT_STDERR, (void *) screen);
}
if (!verify) {
(void) curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
(void) curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
}
auto res = curl_easy_perform(curl);
if (res != CURLE_OK) {
long response = 0L;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
error->one(FLERR, "Download of {} failed with: {} {}", output, curl_easy_strerror(res),
response);
}
curl_easy_cleanup(curl);
This block now implements the actual URL download with the selected options
via the "easy" interface of *libcurl*. For the details of what these
function calls do, please have a look at the `*libcurl documentation
<https://curl.se/libcurl/c/allfuncs.html>`_.
.. code-block:: c++
}
curl_global_cleanup();
fclose(out);
#endif
}
Finally, the previously opened file is closed and the command is complete.

View File

@ -160,7 +160,7 @@ message and before the include guards for the class definition:
#endif
This block of between ``#ifdef PAIR_CLASS`` and ``#else`` will be
This block between ``#ifdef PAIR_CLASS`` and ``#else`` will be
included by the ``Force`` class in ``force.cpp`` to build a map of
"factory functions" that will create an instance of these classes and
return a pointer to it. The map connects the name of the pair style,

View File

@ -54,3 +54,26 @@ header of a data file (e.g. the number of atoms) is larger than the
number of lines provided (e.g. in the corresponding Atoms section)
and then LAMMPS will continue reading into the next section and that
would have a completely different format.
.. _err0003:
Illegal variable command: expected X arguments but found Y
----------------------------------------------------------
This error indicates that there are the wrong number of arguments for a
specific variable command, but a common reason for that is a variable
expression that has whitespace but is not enclosed in single or double
quotes.
To explain, the LAMMPS input parser reads and processes lines. The
resulting line is broken down into "words". Those are usually
individual commands, labels, names, values separated by whitespace (a
space or tab character). For "words" that may contain whitespace, they
have to be enclosed in single (') or double (") quotes. The parser will
then remove the outermost pair of quotes and then pass that string as
"word" to the variable command.
Thus missing quotes or accidental extra whitespace will lead to the
error shown in the header because the unquoted whitespace will result
in the text being broken into more "words", i.e. the variable expression
being split.

View File

@ -1,5 +1,5 @@
CHARMM, AMBER, COMPASS, and DREIDING force fields
=================================================
CHARMM, AMBER, COMPASS, DREIDING, and OPLS force fields
=======================================================
A compact summary of the concepts, definitions, and properties of
force fields with explicit bonded interactions (like the ones discussed
@ -236,6 +236,40 @@ documentation for the formula it computes.
* :doc:`special_bonds <special_bonds>` dreiding
OPLS
----
OPLS (Optimized Potentials for Liquid Simulations) is a general force
field for atomistic simulation of organic molecules in solvent. It was
developed by the `Jorgensen group
<https://traken.chem.yale.edu/oplsaam.html>`_ at Purdue University and
later at Yale University. Multiple versions of the OPLS parameters
exist for united atom representations (OPLS-UA) and for all-atom
representations (OPLS-AA).
This force field is based on atom types mapped to specific functional
groups in organic and biological molecules. Each atom includes a
static, partial atomic charge reflecting the oxidation state of the
element derived from its bonded neighbors :ref:`(Jorgensen)
<howto-jorgensen>` and computed based on increments determined by the
atom type of the atoms bond to it.
The interaction styles listed below compute force field formulas that
are fully or in part consistent with the OPLS style force fields. See
each command's documentation for the formula it computes. Some are only
compatible with a subset of OPLS interactions.
* :doc:`bond_style <bond_harmonic>` harmonic
* :doc:`angle_style <angle_harmonic>` harmonic
* :doc:`dihedral_style <dihedral_opls>` opls
* :doc:`improper_style <improper_cvff>` cvff
* :doc:`improper_style <improper_fourier>` fourier
* :doc:`improper_style <improper_harmonic>` harmonic
* :doc:`pair_style <pair_lj_cut_coul>` lj/cut/coul/cut
* :doc:`pair_style <pair_lj_cut_coul>` lj/cut/coul/long
* :doc:`pair_modify <pair_modify>` geometric
* :doc:`special_bonds <special_bonds>` lj/coul 0.0 0.0 0.5
----------
.. _Typelabel2:
@ -266,3 +300,6 @@ documentation for the formula it computes.
**(Mayo)** Mayo, Olfason, Goddard III (1990). J Phys Chem, 94, 8897-8909. https://doi.org/10.1021/j100389a010
.. _howto-Jorgensen:
**(Jorgensen)** Jorgensen, Tirado-Rives (1988). J Am Chem Soc, 110, 1657-1666. https://doi.org/10.1021/ja00214a001

View File

@ -5,7 +5,11 @@ The BPM package implements bonded particle models which can be used to
simulate mesoscale solids. Solids are constructed as a collection of
particles, which each represent a coarse-grained region of space much
larger than the atomistic scale. Particles within a solid region are
then connected by a network of bonds to provide solid elasticity.
then connected by a network of bonds to model solid elasticity.
There are many names for methods that are based on similar (or
equivalent) capabilities to those in this package, including, but not
limited to, cohesive beam models, bonded DEMs, lattice spring models,
mass spring models, and lattice particle methods.
Unlike traditional bonds in molecular dynamics, the equilibrium bond
length can vary between bonds. Bonds store the reference state. This
@ -42,7 +46,8 @@ Currently, there are two types of bonds included in the BPM package. The
first bond style, :doc:`bond bpm/spring <bond_bpm_spring>`, only applies
pairwise, central body forces. Point particles must have :doc:`bond atom
style <atom_style>` and may be thought of as nodes in a spring
network. Alternatively, the second bond style, :doc:`bond bpm/rotational
network. An optional multibody term can be used to adjust the network's
Poisson's ratio. Alternatively, the second bond style, :doc:`bond bpm/rotational
<bond_bpm_rotational>`, resolves tangential forces and torques arising
with the shearing, bending, and twisting of the bond due to rotation or
displacement of particles. Particles are similar to those used in the
@ -55,8 +60,9 @@ orientation similar to :doc:`fix nve/asphere <fix_nve_asphere>`.
In addition to bond styles, a new pair style :doc:`pair bpm/spring
<pair_bpm_spring>` was added to accompany the bpm/spring bond
style. This pair style is simply a hookean repulsion with similar
velocity damping as its sister bond style.
style. By default, this pair style is simply a hookean repulsion with
similar velocity damping as its sister bond style, but optional
arguments can be used to modify the force.
----------

View File

@ -58,28 +58,30 @@ chunk ID for an individual atom can also be static (e.g. a molecule
ID), or dynamic (e.g. what spatial bin an atom is in as it moves).
Note that this compute allows the per-atom output of other
:doc:`computes <compute>`, :doc:`fixes <fix>`, and
:doc:`variables <variable>` to be used to define chunk IDs for each
atom. This means you can write your own compute or fix to output a
per-atom quantity to use as chunk ID. See the :doc:`Modify <Modify>`
doc pages for info on how to do this. You can also define a :doc:`per-atom variable <variable>` in the input script that uses a formula to
generate a chunk ID for each atom.
:doc:`computes <compute>`, :doc:`fixes <fix>`, and :doc:`variables
<variable>` to be used to define chunk IDs for each atom. This means
you can write your own compute or fix to output a per-atom quantity to
use as chunk ID. See the :doc:`Modify <Modify>` doc pages for info on
how to do this. You can also define a :doc:`per-atom variable
<variable>` in the input script that uses a formula to generate a chunk
ID for each atom.
Fix ave/chunk command:
----------------------
This fix takes the ID of a :doc:`compute chunk/atom <compute_chunk_atom>` command as input. For each chunk,
it then sums one or more specified per-atom values over the atoms in
each chunk. The per-atom values can be any atom property, such as
velocity, force, charge, potential energy, kinetic energy, stress,
etc. Additional keywords are defined for per-chunk properties like
density and temperature. More generally any per-atom value generated
by other :doc:`computes <compute>`, :doc:`fixes <fix>`, and :doc:`per-atom variables <variable>`, can be summed over atoms in each chunk.
This fix takes the ID of a :doc:`compute chunk/atom
<compute_chunk_atom>` command as input. For each chunk, it then sums
one or more specified per-atom values over the atoms in each chunk. The
per-atom values can be any atom property, such as velocity, force,
charge, potential energy, kinetic energy, stress, etc. Additional
keywords are defined for per-chunk properties like density and
temperature. More generally any per-atom value generated by other
:doc:`computes <compute>`, :doc:`fixes <fix>`, and :doc:`per-atom
variables <variable>`, can be summed over atoms in each chunk.
Similar to other averaging fixes, this fix allows the summed per-chunk
values to be time-averaged in various ways, and output to a file. The
fix produces a global array as output with one row of values per
chunk.
fix produces a global array as output with one row of values per chunk.
Compute \*/chunk commands:
--------------------------
@ -97,17 +99,20 @@ category:
* :doc:`compute torque/chunk <compute_vcm_chunk>`
* :doc:`compute vcm/chunk <compute_vcm_chunk>`
They each take the ID of a :doc:`compute chunk/atom <compute_chunk_atom>` command as input. As their names
indicate, they calculate the center-of-mass, radius of gyration,
moments of inertia, mean-squared displacement, temperature, torque,
and velocity of center-of-mass for each chunk of atoms. The :doc:`compute property/chunk <compute_property_chunk>` command can tally the
count of atoms in each chunk and extract other per-chunk properties.
They each take the ID of a :doc:`compute chunk/atom
<compute_chunk_atom>` command as input. As their names indicate, they
calculate the center-of-mass, radius of gyration, moments of inertia,
mean-squared displacement, temperature, torque, and velocity of
center-of-mass for each chunk of atoms. The :doc:`compute
property/chunk <compute_property_chunk>` command can tally the count of
atoms in each chunk and extract other per-chunk properties.
The reason these various calculations are not part of the :doc:`fix ave/chunk command <fix_ave_chunk>`, is that each requires a more
The reason these various calculations are not part of the :doc:`fix
ave/chunk command <fix_ave_chunk>`, is that each requires a more
complicated operation than simply summing and averaging over per-atom
values in each chunk. For example, many of them require calculation
of a center of mass, which requires summing mass\*position over the
atoms and then dividing by summed mass.
values in each chunk. For example, many of them require calculation of
a center of mass, which requires summing mass\*position over the atoms
and then dividing by summed mass.
All of these computes produce a global vector or global array as
output, with one or more values per chunk. The output can be used in
@ -118,9 +123,10 @@ various ways:
* As input to the :doc:`fix ave/histo <fix_ave_histo>` command to
histogram values across chunks. E.g. a histogram of cluster sizes or
molecule diffusion rates.
* As input to special functions of :doc:`equal-style variables <variable>`, like sum() and max() and ave(). E.g. to
find the largest cluster or fastest diffusing molecule or average
radius-of-gyration of a set of molecules (chunks).
* As input to special functions of :doc:`equal-style variables
<variable>`, like sum() and max() and ave(). E.g. to find the largest
cluster or fastest diffusing molecule or average radius-of-gyration of
a set of molecules (chunks).
Other chunk commands:
---------------------
@ -138,9 +144,10 @@ spatially average per-chunk values calculated by a per-chunk compute.
The :doc:`compute reduce/chunk <compute_reduce_chunk>` command reduces a
peratom value across the atoms in each chunk to produce a value per
chunk. When used with the :doc:`compute chunk/spread/atom <compute_chunk_spread_atom>` command it can
create peratom values that induce a new set of chunks with a second
:doc:`compute chunk/atom <compute_chunk_atom>` command.
chunk. When used with the :doc:`compute chunk/spread/atom
<compute_chunk_spread_atom>` command it can create peratom values that
induce a new set of chunks with a second :doc:`compute chunk/atom
<compute_chunk_atom>` command.
Example calculations with chunks
--------------------------------

View File

@ -348,7 +348,7 @@ Some common LAMMPS specific variables
* - ``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)
- select which FFT library to use in Kokkos-enabled styles: ``FFTW3``, ``MKL``, ``HIPFFT``, ``CUFFT``, ``MKL_GPU``, ``KISS`` (default)
* - ``FFT_SINGLE``
- select whether to use single precision FFTs (default: ``off``)
* - ``WITH_JPEG``

View File

@ -39,16 +39,18 @@ lammps.lammps
* interface modeled after the LAMMPS :ref:`C language library interface API <lammps_c_api>`
* requires knowledge of how LAMMPS internally works (C pointers, etc)
* full support for running Python with MPI using `mpi4py <https://mpi4py.readthedocs.io>`_
* no overhead from creating a more Python-like interface
lammps.PyLammps
"""""""""""""""
* higher-level abstraction built on *top* of original :py:class:`ctypes based interface <lammps.lammps>`
* higher-level abstraction built on *top* of the original :py:class:`ctypes based interface <lammps.lammps>`
* manipulation of Python objects
* communication with LAMMPS is hidden from API user
* shorter, more concise Python
* better IPython integration, designed for quick prototyping
* designed for serial execution
* additional overhead from capturing and parsing the LAMMPS screen output
Quick Start
-----------

View File

@ -56,7 +56,7 @@ lammps.org". General questions about LAMMPS should be posted in the
- SNL
- jmgoff at sandia.gov
- machine learned potentials, QEq solvers, Python
* - Megan McCarthy
* - Meg McCarthy
- SNL
- megmcca at sandia.gov
- alloys, micro-structure, machine learned potentials
@ -67,7 +67,7 @@ lammps.org". General questions about LAMMPS should be posted in the
* - `Trung Nguyen <tn_>`_
- U Chicago
- ndactrung at gmail.com
- soft matter, GPU package
- soft matter, GPU package, DIELECTRIC package, regression testing
.. _rb: https://rbberger.github.io/
.. _gc: https://enthalpiste.fr/

View File

@ -31,18 +31,19 @@ Operating systems
^^^^^^^^^^^^^^^^^
The primary development platform for LAMMPS is Linux. Thus, the chances
for LAMMPS to compile without problems on Linux machines are the best.
for LAMMPS to compile without problems are the best on Linux machines.
Also, compilation and correct execution on macOS and Windows (using
Microsoft Visual C++) is checked automatically for largest part of the
source code. Some (optional) features are not compatible with all
Microsoft Visual C++) is checked automatically for the largest part of
the source code. Some (optional) features are not compatible with all
operating systems, either through limitations of the corresponding
LAMMPS source code or through source code or build system
incompatibilities of required libraries.
LAMMPS source code or through incompatibilities of source code or
build system of required external libraries or packages.
Executables for Windows may be created natively using either Cygwin or
Visual Studio or with a Linux to Windows MinGW cross-compiler.
Additionally, FreeBSD and Solaris have been tested successfully.
Additionally, FreeBSD and Solaris have been tested successfully to
run LAMMPS and produce results consistent with those on Linux.
Compilers
^^^^^^^^^

View File

@ -4,6 +4,7 @@ Per-atom properties
This section documents the following functions:
- :cpp:func:`lammps_extract_atom_datatype`
- :cpp:func:`lammps_extract_atom_size`
- :cpp:func:`lammps_extract_atom`
-----------------------
@ -13,6 +14,11 @@ This section documents the following functions:
-----------------------
.. doxygenfunction:: lammps_extract_atom_size
:project: progguide
-----------------------
.. doxygenfunction:: lammps_extract_atom
:project: progguide

View File

@ -880,7 +880,7 @@ groups of atoms that interact with the remaining atoms as electrolyte.
**Authors:** The ELECTRODE package is written and maintained by Ludwig
Ahrens-Iwers (TUHH, Hamburg, Germany), Shern Tee (UQ, Brisbane, Australia) and
Robert Meissner (TUHH, Hamburg, Germany).
Robert Meissner (Helmholtz-Zentrum Hereon, Geesthacht and TUHH, Hamburg, Germany).
.. versionadded:: 4May2022

View File

@ -3,71 +3,70 @@ Running LAMMPS on Windows
To run a serial (non-MPI) executable, follow these steps:
* Get a command prompt by going to Start->Run... ,
then typing "cmd".
* Move to the directory where you have your input script,
* Install a LAMMPS installer package from https://packages.lammps.org/windows.html
* Open the "Command Prompt" or "Terminal" app.
* Change to the directory where you have your input script,
(e.g. by typing: cd "Documents").
* At the command prompt, type "lmp -in in.file", where
in.file is the name of your LAMMPS input script.
* At the command prompt, type "lmp -in in.file.lmp", where
``in.file.lmp`` is the name of your LAMMPS input script.
Note that the serial executable includes support for multi-threading
parallelization from the styles in the OPENMP packages. To run with
4 threads, you can type this:
parallelization from the styles in the OPENMP and KOKKOS packages.
To run with 4 threads, you can type this:
.. code-block:: bash
lmp -in in.lj -pk omp 4 -sf omp
lmp -in in.lj.lmp -pk omp 4 -sf omp
lmp -in in.lj.lmp -k on t 4 -sf kk
Alternately, you can also install a package with LAMMPS-GUI included and
open the LAMMPS-GUI app (the package includes the command line version
of LAMMPS as well) and open the input file in the GUI and run it from
there. For details on LAMMPS-GUI, see :doc:`Howto_lammps_gui`.
----------
For the MPI executable, which allows you to run LAMMPS under Windows
in parallel, follow these steps.
For the MS-MPI executables, which allow you to run LAMMPS under Windows
in parallel using MPI rather than multi-threading, follow these steps.
Download and install a compatible MPI library binary package:
* for 32-bit Windows: `mpich2-1.4.1p1-win-ia32.msi <https://download.lammps.org/thirdparty/mpich2-1.4.1p1-win-ia32.msi>`_
* for 64-bit Windows: `mpich2-1.4.1p1-win-x86-64.msi <https://download.lammps.org/thirdparty/mpich2-1.4.1p1-win-x86-64.msi>`_
The LAMMPS Windows installer packages will automatically adjust your
path for the default location of this MPI package. After the
installation of the MPICH2 software, it needs to be integrated into
the system. For this you need to start a Command Prompt in
*Administrator Mode* (right click on the icon and select it). Change
into the MPICH2 installation directory, then into the subdirectory
**bin** and execute **smpd.exe -install**\ . Exit the command window.
* Get a new, regular command prompt by going to Start->Run... ,
then typing "cmd".
* Move to the directory where you have your input file
(e.g. by typing: cd "Documents").
Download and install the MS-MPI runtime package ``msmpisetup.exe`` from
https://www.microsoft.com/en-us/download/details.aspx?id=105289 (Note
that the ``msmpisdk.msi`` is **only** required for **compilation** of
LAMMPS from source on Windows using Microsoft Visual Studio). After
installation of MS-MPI perform a reboot.
Then you can run the executable in serial like in the example above
or in parallel using MPI with one of the following commands:
.. code-block:: bash
mpiexec -localonly 4 lmp -in in.file
mpiexec -np 4 lmp -in in.file
mpiexec -localonly 4 lmp -in in.file.lmp
mpiexec -np 4 lmp -in in.file.lmp
where in.file is the name of your LAMMPS input script. For the latter
case, you may be prompted to enter the password that you set during
installation of the MPI library software.
where ``in.file.lmp`` is the name of your LAMMPS input script. For the
latter case, you may be prompted to enter the password that you set
during installation of the MPI library software.
In this mode, output may not immediately show up on the screen, so if
your input script takes a long time to execute, you may need to be
patient before the output shows up.
The parallel executable can also run on a single processor by typing
something like this:
Note that the parallel executable also includes OpenMP multi-threading
through both the OPENMP and the KOKKOS package, which can be combined
with MPI using something like:
.. code-block:: bash
lmp -in in.lj
mpiexec -localonly 2 lmp -in in.lj.lmp -pk omp 2 -sf omp
mpiexec -localonly 2 lmp -in in.lj.lmp -kokkos on t 2 -sf kk
Note that the parallel executable also includes OpenMP
multi-threading, which can be combined with MPI using something like:
.. code-block:: bash
mpiexec -localonly 2 lmp -in in.lj -pk omp 2 -sf omp
-------------
MPI parallelization will work for *all* functionality in LAMMPS and in
many cases the MPI parallelization is more efficient than
multi-threading since LAMMPS was designed from ground up for MPI
parallelization using domain decomposition. Multi-threading is only
available for selected styles and implemented on top of the MPI
parallelization. Multi-threading is most useful for systems with large
load imbalances when using domain decomposition and a smaller number
of threads (<= 8).

View File

@ -1022,7 +1022,7 @@ regression tests with a given LAMMPS binary. The tool launches the
LAMMPS binary with any given input script under one of the `examples`
subdirectories, and compares the thermo output in the generated log file
with those in the provided log file with the same number of processors
ub the same subdirectory. If the differences between the actual and
in the same subdirectory. If the differences between the actual and
reference values are within specified tolerances, the test is considered
passed. For each test batch, that is, a set of example input scripts,
the mpirun command, the LAMMPS command line arguments, and the

View File

@ -1,8 +0,0 @@
Angle Styles
############
.. toctree::
:maxdepth: 1
:glob:
angle_*

View File

@ -10,7 +10,7 @@ Syntax
bond_style bpm/spring keyword value attribute1 attribute2 ...
* optional keyword = *overlay/pair* or *store/local* or *smooth* or *break*
* optional keyword = *overlay/pair* or *store/local* or *smooth* or *break* or *volume/factor*
.. parsed-literal::
@ -36,6 +36,9 @@ Syntax
*break* value = *yes* or *no*
indicates whether bonds break during a run
*volume/factor* value = *yes* or *no*
indicates whether forces include the volumetric contribution
Examples
""""""""
@ -44,6 +47,9 @@ Examples
bond_style bpm/spring
bond_coeff 1 1.0 0.05 0.1
bond_style bpm/spring volume/factor yes
bond_coeff 1 1.0 0.05 0.1 0.5
bond_style bpm/spring myfix 1000 time id1 id2
dump 1 all local 1000 dump.broken f_myfix[1] f_myfix[2] f_myfix[3]
dump_modify 1 write_header no
@ -97,15 +103,6 @@ approach the critical strain
w = 1.0 - \left( \frac{r - r_0}{r_0 \epsilon_c} \right)^8 .
The following coefficients must be defined for each bond type via the
:doc:`bond_coeff <bond_coeff>` command as in the example above, or in
the data file or restart files read by the :doc:`read_data
<read_data>` or :doc:`read_restart <read_restart>` commands:
* :math:`k` (force/distance units)
* :math:`\epsilon_c` (unit less)
* :math:`\gamma` (force/velocity units)
If the *normalize* keyword is set to *yes*, the elastic bond force will be
normalized by :math:`r_0` such that :math:`k` must be given in force units.
@ -123,6 +120,43 @@ during a simulation run. This will prevent some unnecessary calculation.
However, if a bond reaches a strain greater than :math:`\epsilon_c`,
it will trigger an error.
.. versionadded:: TBD
The *volume/factor* keyword toggles whether an additional multibody
contribution is added to he force using the formulation in
:ref:`(Clemmer2) <multibody-Clemmer>`,
.. math::
\alpha_v \left(\left[\frac{V_i + V_j}{V_{0,i} + V_{0,j}}\right]^{1/3} - \frac{r_{ij}}{r_{0,ij}}\right)
where :math:`\alpha_v` is a user specified coefficient and :math:`V_i`
and :math:`V_{0,i}` are estimates of the current and local volume
of atom :math:`i`. These volumes are calculated as the sum of current
or initial bond lengths cubed. In 2D, the volume is replaced with an area
calculated using bond lengths squared and the cube root in the above equation
is accordingly replaced with a square root. This approximation assumes bonds
are evenly distributed on a spherical surface and neglects constant prefactors
which are irrelevant since only the ratio of volumes matters. This term may be
used to adjust the Poisson's ratio.
If a bond is broken (or created), :math:`V_{0,i}` is updated by subtracting
(or adding) that bond's contribution.
The following coefficients must be defined for each bond type via the
:doc:`bond_coeff <bond_coeff>` command as in the example above, or in
the data file or restart files read by the :doc:`read_data
<read_data>` or :doc:`read_restart <read_restart>` commands:
* :math:`k` (force/distance units)
* :math:`\epsilon_c` (unit less)
* :math:`\gamma` (force/velocity units)
Additionally, if *volume/factor* is set to *yes*, a fourth coefficient
must be provided:
* :math:`a_v` (force units)
If the *store/local* keyword is used, an internal fix will track bonds that
break during the simulation. Whenever a bond breaks, data is processed
and transferred to an internal fix labeled *fix_ID*. This allows the
@ -213,7 +247,7 @@ Related commands
Default
"""""""
The option defaults are *overlay/pair* = *no*, *smooth* = *yes*, *normalize* = *no*, and *break* = *yes*
The option defaults are *overlay/pair* = *no*, *smooth* = *yes*, *normalize* = *no*, *break* = *yes*, and *volume/factor* = *no*
----------
@ -224,3 +258,7 @@ The option defaults are *overlay/pair* = *no*, *smooth* = *yes*, *normalize* = *
.. _Groot4:
**(Groot)** Groot and Warren, J Chem Phys, 107, 4423-35 (1997).
.. _multibody-Clemmer:
**(Clemmer2)** Clemmer, Monti, Lechman, Soft Matter, 20, 1702 (2024).

View File

@ -1,8 +0,0 @@
Bond Styles
###########
.. toctree::
:maxdepth: 1
:glob:
bond_*

View File

@ -236,6 +236,7 @@ The individual style names on the :doc:`Commands compute <Commands_compute>` pag
* :doc:`fep/ta <compute_fep_ta>` - compute free energies for a test area perturbation
* :doc:`force/tally <compute_tally>` - force between two groups of atoms via the tally callback mechanism
* :doc:`fragment/atom <compute_cluster_atom>` - fragment ID for each atom
* :doc:`gaussian/grid/local <compute_gaussian_grid_local>` - local array of Gaussian atomic contributions on a regular grid
* :doc:`global/atom <compute_global_atom>` - assign global values to each atom from arrays of global values
* :doc:`group/group <compute_group_group>` - energy/force between two groups of atoms
* :doc:`gyration <compute_gyration>` - radius of gyration of group of atoms

View File

@ -78,7 +78,7 @@ system and output the statistics in various ways:
compute 2 all angle/local eng theta v_cos v_cossq set theta t
dump 1 all local 100 tmp.dump c_1[*] c_2[*]
compute 3 all reduce ave c_2[*]
compute 3 all reduce ave c_2[*] inputs local
thermo_style custom step temp press c_3[*]
fix 10 all ave/histo 10 10 100 -1 1 20 c_2[3] mode vector file tmp.histo

View File

@ -139,7 +139,7 @@ output the statistics in various ways:
compute 2 all bond/local engpot dist v_dsq set dist d
dump 1 all local 100 tmp.dump c_1[*] c_2[*]
compute 3 all reduce ave c_2[*]
compute 3 all reduce ave c_2[*] inputs local
thermo_style custom step temp press c_3[*]
fix 10 all ave/histo 10 10 100 0 6 20 c_2[3] mode vector file tmp.histo

View File

@ -88,6 +88,10 @@ too frequently.
----------
.. include:: accel_styles.rst
----------
Output info
"""""""""""

View File

@ -76,7 +76,7 @@ angle in the system and output the statistics in various ways:
compute 2 all dihedral/local phi v_cos v_cossq set phi p
dump 1 all local 100 tmp.dump c_1[*] c_2[*]
compute 3 all reduce ave c_2[*]
compute 3 all reduce ave c_2[*] inputs local
thermo_style custom step temp press c_3[*]
fix 10 all ave/histo 10 10 100 -1 1 20 c_2[2] mode vector file tmp.histo

View File

@ -0,0 +1,97 @@
.. index:: compute gaussian/grid/local
.. index:: compute gaussian/grid/local/kk
compute gaussian/grid/local command
===================================
Accelerator Variants: *gaussian/grid/local/kk*
Syntax
""""""
.. code-block:: LAMMPS
compute ID group-ID gaussian/grid/local grid nx ny nz rcutfac R_1 R_2 ... sigma_1 sigma_2
* ID, group-ID are documented in :doc:`compute <compute>` command
* gaussian/grid/local = style name of this compute command
* *grid* values = nx, ny, nz, number of grid points in x, y, and z directions (positive integer)
* *rcutfac* = scale factor applied to all cutoff radii (positive real)
* *R_1, R_2,...* = list of cutoff radii, one for each type (distance units)
* *sigma_1, sigma_2,...* = Gaussian widths, one for each type (distance units)
Examples
""""""""
.. code-block:: LAMMPS
compute mygrid all gaussian/grid/local grid 40 40 40 4.0 0.5 0.5 0.4 0.4
Description
"""""""""""
Define a computation that calculates a Gaussian representation of the ionic
structure. This representation is used for the efficient evaluation
of quantities related to the structure factor in a grid-based workflow,
such as the ML-DFT workflow MALA :ref:`(Ellis) <Ellis2021b>`, for which it was originally
implemented. Usage of the workflow is described in a separate publication :ref:`(Fiedler) <Fiedler2023>`.
For each LAMMPS type, a separate sum of Gaussians is calculated, using
a separate Gaussian broadening per type. The computation
is always performed on the numerical grid, no atom-based version of this
compute exists. The Gaussian representation can only be executed in a local
fashion, thus the output array only contains rows for grid points
that are local to the processor subdomain. The layout of the grid is the same
as for the see :doc:`sna/grid/local <compute_sna_atom>` command.
Namely, the array contains one row for each of the
local grid points, looping over the global index *ix* fastest,
then *iy*, and *iz* slowest. Each row of the array contains
the global indexes *ix*, *iy*, and *iz* first, followed by the *x*, *y*,
and *z* coordinates of the grid point, followed by the values of the Gaussians
(one floating point number per type per grid point).
----------
.. include:: accel_styles.rst
----------
Output info
"""""""""""
Compute *gaussian/grid/local* evaluates a local array.
The array contains one row for each of the
local grid points, looping over the global index *ix* fastest,
then *iy*, and *iz* slowest. The array contains math :math:`ntypes+6` columns,
where *ntypes* is the number of LAMMPS types. The first three columns are
the global indexes *ix*, *iy*, and *iz*, followed by the *x*, *y*,
and *z* coordinates of the grid point, followed by the *ntypes* columns
containing the values of the Gaussians for each type.
Restrictions
""""""""""""
These computes are part of the ML-SNAP 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:`compute sna/grid/local <compute_sna_atom>`
----------
.. _Ellis2021b:
**(Ellis)** Ellis, Fiedler, Popoola, Modine, Stephens, Thompson, Cangi, Rajamanickam, `Phys. Rev. B, 104, 035120, (2021) <https://doi.org/10.1103/PhysRevB.104.035120>`_
.. _Fiedler2023:
**(Fiedler)** Fiedler, Modine, Schmerler, Vogel, Popoola, Thompson, Rajamanickam, and Cangi,
`npj Comp. Mater., 9, 115 (2023) <https://doi.org/10.1038/s41524-023-01070-z>`_

View File

@ -125,10 +125,6 @@ where thermo_temp is the ID of a similarly defined compute of style
----------
.. include:: accel_styles.rst
----------
Output info
"""""""""""

View File

@ -206,11 +206,13 @@ IDs and the bond stretch will be printed with thermodynamic output.
The *inputs* keyword allows selection of whether all the inputs are
per-atom or local quantities. As noted above, all the inputs must be
the same kind (per-atom or local). Per-atom is the default setting.
If a compute or fix is specified as an input, it must produce per-atom
or local data to match this setting. If it produces both, e.g. for
the same kind (per-atom or local). Per-atom is the default setting. If
a compute or fix is specified as an input, it must produce per-atom or
local data to match this setting. If it produces both, like for example
the :doc:`compute voronoi/atom <compute_voronoi_atom>` command, then
this keyword selects between them.
this keyword selects between them. If a compute *only* produces local
data, like for example the :doc:`compute bond/local command
<compute_bond_local>`, the setting "inputs local" is *required*.
----------

View File

@ -37,55 +37,57 @@ Description
Define a calculation that reduces one or more per-atom vectors into
per-chunk values. This can be useful for diagnostic output. Or when
used in conjunction with the :doc:`compute chunk/spread/atom <compute_chunk_spread_atom>` command it can be
used to create per-atom values that induce a new set of chunks with a
second :doc:`compute chunk/atom <compute_chunk_atom>` command. An
example is given below.
used in conjunction with the :doc:`compute chunk/spread/atom
<compute_chunk_spread_atom>` command it can be used to create per-atom
values that induce a new set of chunks with a second :doc:`compute
chunk/atom <compute_chunk_atom>` command. An example is given below.
In LAMMPS, chunks are collections of atoms defined by a :doc:`compute chunk/atom <compute_chunk_atom>` command, which assigns each atom
to a single chunk (or no chunk). The ID for this command is specified
as chunkID. For example, a single chunk could be the atoms in a
molecule or atoms in a spatial bin. See the :doc:`compute chunk/atom <compute_chunk_atom>` and :doc:`Howto chunk <Howto_chunk>`
doc pages for details of how chunks can be defined and examples of how
they can be used to measure properties of a system.
In LAMMPS, chunks are collections of atoms defined by a :doc:`compute
chunk/atom <compute_chunk_atom>` command, which assigns each atom to a
single chunk (or no chunk). The ID for this command is specified as
chunkID. For example, a single chunk could be the atoms in a molecule
or atoms in a spatial bin. See the :doc:`compute chunk/atom
<compute_chunk_atom>` and :doc:`Howto chunk <Howto_chunk>` doc pages for
details of how chunks can be defined and examples of how they can be
used to measure properties of a system.
For each atom, this compute accesses its chunk ID from the specified
*chunkID* compute. The per-atom value from an input contributes
to a per-chunk value corresponding the the chunk ID.
*chunkID* compute. The per-atom value from an input contributes to a
per-chunk value corresponding the chunk ID.
The reduction operation is specified by the *mode* setting and is
performed over all the per-atom values from the atoms in each chunk.
The *sum* option adds the pre-atom values to a per-chunk total. The
*min* or *max* options find the minimum or maximum value of the
per-atom values for each chunk.
The *sum* option adds the per-atom values to a per-chunk total. The
*min* or *max* options find the minimum or maximum value of the per-atom
values for each chunk.
Note that only atoms in the specified group contribute to the
reduction operation. If the *chunkID* compute returns a 0 for the
chunk ID of an atom (i.e., the atom is not in a chunk defined by the
:doc:`compute chunk/atom <compute_chunk_atom>` command), that atom will
also not contribute to the reduction operation. An input that is a
compute or fix may define its own group which affects the quantities
it returns. For example, a compute with return a zero value for atoms
that are not in the group specified for that compute.
Note that only atoms in the specified group contribute to the reduction
operation. If the *chunkID* compute returns a 0 for the chunk ID of an
atom (i.e., the atom is not in a chunk defined by the :doc:`compute
chunk/atom <compute_chunk_atom>` command), that atom will also not
contribute to the reduction operation. An input that is a compute or
fix may define its own group which affects the quantities it returns.
For example, a compute will return a zero value for atoms that are not
in the group specified for that compute.
Each listed input is operated on independently. Each input can be the
result of a :doc:`compute <compute>` or :doc:`fix <fix>` or the evaluation
of an atom-style :doc:`variable <variable>`.
result of a :doc:`compute <compute>` or :doc:`fix <fix>` or the
evaluation of an atom-style :doc:`variable <variable>`.
Note that for values from a compute or fix, the bracketed index I can
be specified using a wildcard asterisk with the index to effectively
Note that for values from a compute or fix, the bracketed index I can be
specified using a wildcard asterisk with the index to effectively
specify multiple values. This takes the form "\*" or "\*n" or "m\*" or
"m\*n". If :math:`N` is the size of the vector (for *mode* = scalar) or the
number of columns in the array (for *mode* = vector), then an asterisk
with no numeric values means all indices from 1 to :math:`N`. A leading
asterisk means all indices from 1 to n (inclusive). A trailing
asterisk means all indices from n to :math:`N` (inclusive). A middle asterisk
means all indices from m to n (inclusive).
"m\*n". If :math:`N` is the size of the vector (for *mode* = scalar) or
the number of columns in the array (for *mode* = vector), then an
asterisk with no numeric values means all indices from 1 to :math:`N`.
A leading asterisk means all indices from 1 to n (inclusive). A
trailing asterisk means all indices from n to :math:`N` (inclusive). A
middle asterisk means all indices from m to n (inclusive).
Using a wildcard is the same as if the individual columns of the array
had been listed one by one. For example, the following two compute reduce/chunk
commands are equivalent, since the
:doc:`compute property/chunk <compute_property_chunk>` command creates a per-atom
had been listed one by one. For example, the following two compute
reduce/chunk commands are equivalent, since the :doc:`compute
property/chunk <compute_property_chunk>` command creates a per-atom
array with 3 columns:
.. code-block:: LAMMPS
@ -164,13 +166,14 @@ Output info
"""""""""""
This compute calculates a global vector if a single input value is
specified, otherwise a global array is output. The number of columns
in the array is the number of inputs provided. The length of the
vector or the number of vector elements or array rows = the number of
chunks *Nchunk* as calculated by the specified :doc:`compute chunk/atom <compute_chunk_atom>` command. The vector or array can
be accessed by any command that uses global values from a compute as
input. See the :doc:`Howto output <Howto_output>` page for an
overview of LAMMPS output options.
specified, otherwise a global array is output. The number of columns in
the array is the number of inputs provided. The length of the vector or
the number of vector elements or array rows = the number of chunks
*Nchunk* as calculated by the specified :doc:`compute chunk/atom
<compute_chunk_atom>` command. The vector or array can be accessed by
any command that uses global values from a compute as input. See the
:doc:`Howto output <Howto_output>` page for an overview of LAMMPS output
options.
The per-atom values for the vector or each column of the array will be
in whatever :doc:`units <units>` the corresponding input value is in.
@ -183,7 +186,9 @@ Restrictions
Related commands
""""""""""""""""
:doc:`compute chunk/atom <compute_chunk_atom>`, :doc:`compute reduce <compute_reduce>`, :doc:`compute chunk/spread/atom <compute_chunk_spread_atom>`
:doc:`compute chunk/atom <compute_chunk_atom>`,
:doc:`compute reduce <compute_reduce>`,
:doc:`compute chunk/spread/atom <compute_chunk_spread_atom>`
Default
"""""""

View File

@ -81,7 +81,7 @@ includes *xx*, *xy*, *yx*, and *yy*. In 3D, this includes *xx*, *xy*, *xz*,
Many properties require their respective fixes, listed below in related
commands, be defined. For instance, the *viscosity* attribute is the
viscosity of a particle calculated by
:doc:`fix rheo/viscous <fix_rheo_viscosity>`. The meaning of less obvious
:doc:`fix rheo/viscosity <fix_rheo_viscosity>`. The meaning of less obvious
properties is described below.
The *phase* property indicates whether the particle is in a fluid state,

View File

@ -3,7 +3,9 @@
.. index:: compute snav/atom
.. index:: compute snap
.. index:: compute sna/grid
.. index:: compute sna/grid/kk
.. index:: compute sna/grid/local
.. index:: compute sna/grid/local/kk
compute sna/atom command
========================
@ -20,9 +22,14 @@ compute snap command
compute sna/grid command
========================
compute sna/grid/kk command
===========================
compute sna/grid/local command
==============================
Accelerator Variants: *sna/grid/local/kk*
Syntax
""""""
@ -33,17 +40,17 @@ Syntax
compute ID group-ID snav/atom rcutfac rfac0 twojmax R_1 R_2 ... w_1 w_2 ... keyword values ...
compute ID group-ID snap rcutfac rfac0 twojmax R_1 R_2 ... w_1 w_2 ... keyword values ...
compute ID group-ID snap rcutfac rfac0 twojmax R_1 R_2 ... w_1 w_2 ... keyword values ...
compute ID group-ID sna/grid nx ny nz rcutfac rfac0 twojmax R_1 R_2 ... w_1 w_2 ... keyword values ...
compute ID group-ID sna/grid/local nx ny nz rcutfac rfac0 twojmax R_1 R_2 ... w_1 w_2 ... keyword values ...
compute ID group-ID sna/grid grid nx ny nz rcutfac rfac0 twojmax R_1 R_2 ... w_1 w_2 ... keyword values ...
compute ID group-ID sna/grid/local grid nx ny nz rcutfac rfac0 twojmax R_1 R_2 ... w_1 w_2 ... keyword values ...
* ID, group-ID are documented in :doc:`compute <compute>` command
* sna/atom = style name of this compute command
* rcutfac = scale factor applied to all cutoff radii (positive real)
* rfac0 = parameter in distance to angle conversion (0 < rcutfac < 1)
* twojmax = band limit for bispectrum components (non-negative integer)
* R_1, R_2,... = list of cutoff radii, one for each type (distance units)
* 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)
* *rcutfac* = scale factor applied to all cutoff radii (positive real)
* *rfac0* = parameter in distance to angle conversion (0 < rcutfac < 1)
* *twojmax* = band limit for bispectrum components (non-negative integer)
* *R_1, R_2,...* = list of cutoff radii, one for each type (distance units)
* *w_1, w_2,...* = list of neighbor weights, one for each type
* *grid* values = 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* or *nnn* or *wmode* or *delta*
@ -103,7 +110,7 @@ Examples
compute snap all snap 1.4 0.95 6 2.0 1.0
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 bgrid all sna/grid/local grid 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
@ -252,7 +259,8 @@ for finite-temperature Kohn-Sham density functional theory (:ref:`Ellis
et al. <Ellis2021>`) Neighbor atoms not in the group do not contribute
to the bispectrum components of the grid points. The distance cutoff
:math:`R_{ii'}` assumes that *i* has the same type as the neighbor atom
*i'*.
*i'*. Both computes can be hardware accelerated with Kokkos by using the
*sna/grid/kk* and *sna/grid/local/kk* commands, respectively.
Compute *sna/grid* calculates a global array containing bispectrum
components for a regular grid of points.
@ -463,6 +471,12 @@ fluctuations in the resulting local atomic environment fingerprint. The
detailed formalism is given in the paper by Lafourcade et
al. :ref:`(Lafourcade) <Lafourcade2023_2>`.
----------
.. include:: accel_styles.rst
----------
Output info
@ -654,7 +668,7 @@ of Angular Momentum, World Scientific, Singapore (1987).
.. _Ellis2021:
**(Ellis)** Ellis, Fiedler, Popoola, Modine, Stephens, Thompson, Cangi, Rajamanickam, Phys Rev B, 104, 035120, (2021)
**(Ellis)** Ellis, Fiedler, Popoola, Modine, Stephens, Thompson, Cangi, Rajamanickam, `Phys. Rev. B, 104, 035120, (2021) <https://doi.org/10.1103/PhysRevB.104.035120>`_
.. _Lafourcade2023_2:

View File

@ -87,7 +87,7 @@ This array can be output with :doc:`fix ave/time <fix_ave_time>`,
.. code-block:: LAMMPS
compute 1 all stress/spherical 0 0 0 0.1 10
compute p all stress/spherical 0 0 0 0.1 10
fix 2 all ave/time 100 1 100 c_p[*] file dump_p.out mode vector
The values calculated by this compute are "intensive". The stress

View File

@ -129,6 +129,9 @@ package <Build_package>` doc page on for more info.
The method is implemented for orthogonal simulation boxes whose
size does not change in time, and axis-aligned planes.
Contributions from bonds, angles, and dihedrals are not compatible
with MPI parallel runs.
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

View File

@ -128,6 +128,12 @@ See the :doc:`Howto thermostat <Howto_thermostat>` page for a
discussion of different ways to compute temperature and perform
thermostatting.
----------
.. include:: accel_styles.rst
----------
Output info
"""""""""""

View File

@ -46,7 +46,7 @@ degrees of freedom.
A symmetric tensor, stored as a six-element vector, is also calculated
by this compute for use in the computation of a pressure tensor by the
:doc:`compute pressue <compute_pressure>` command. The formula for
:doc:`compute pressure <compute_pressure>` command. The formula for
the components of the tensor is the same as the above expression for
:math:`E_\mathrm{kin}`, except that the 1/2 factor is NOT included and
the :math:`v_i^2` is replaced by :math:`v_{i,x} v_{i,y}` for the
@ -82,12 +82,6 @@ See the :doc:`Howto thermostat <Howto_thermostat>` page for a
discussion of different ways to compute temperature and perform
thermostatting.
----------
.. include:: accel_styles.rst
----------
Output info
"""""""""""

View File

@ -1,8 +0,0 @@
Computes
########
.. toctree::
:maxdepth: 1
:glob:
compute_*

View File

@ -1,8 +0,0 @@
Dihedral Styles
###############
.. toctree::
:maxdepth: 1
:glob:
dihedral_*

View File

@ -357,6 +357,7 @@ accelerated styles exist.
* :doc:`python/move <fix_python_move>` - move particles using a Python function during a simulation run
* :doc:`qbmsst <fix_qbmsst>` - quantum bath multi-scale shock technique time integrator
* :doc:`qeq/comb <fix_qeq_comb>` - charge equilibration for COMB potential
* :doc:`qeq/ctip <fix_qeq>` - charge equilibration for CTIP potential
* :doc:`qeq/dynamic <fix_qeq>` - charge equilibration via dynamic method
* :doc:`qeq/fire <fix_qeq>` - charge equilibration via FIRE minimizer
* :doc:`qeq/point <fix_qeq>` - charge equilibration via point method
@ -365,6 +366,7 @@ accelerated styles exist.
* :doc:`qeq/slater <fix_qeq>` - charge equilibration via Slater method
* :doc:`qmmm <fix_qmmm>` - functionality to enable a quantum mechanics/molecular mechanics coupling
* :doc:`qtb <fix_qtb>` - implement quantum thermal bath scheme
* :doc:`qtpie/reaxff <fix_qtpie_reaxff>` - apply QTPIE charge equilibration
* :doc:`rattle <fix_shake>` - RATTLE constraints on bonds and/or angles
* :doc:`reaxff/bonds <fix_reaxff_bonds>` - write out ReaxFF bond information
* :doc:`reaxff/species <fix_reaxff_species>` - write out ReaxFF molecule information

View File

@ -111,7 +111,8 @@ LAMMPS was built with that package. See the :doc:`Build package
This fix does not correctly handle interactions involving multiple
periodic images of the same atom. Hence, it should not be used for
periodic cell dimensions less than :math:`10~\AA`.
periodic cell dimensions smaller than the non-bonded cutoff radius,
which is typically :math:`10~\AA` for ReaxFF simulations.
This fix may be used in combination with :doc:`fix efield <fix_efield>`
and will apply the external electric field during charge equilibration,
@ -122,7 +123,8 @@ components in non-periodic directions.
Related commands
""""""""""""""""
:doc:`pair_style reaxff <pair_reaxff>`, :doc:`fix qeq/reaxff <fix_qeq_reaxff>`
:doc:`pair_style reaxff <pair_reaxff>`, :doc:`fix qeq/reaxff <fix_qeq_reaxff>`,
:doc:`fix qtpi/reaxff <fix_qtpie_reaxff>`
Default
"""""""

View File

@ -119,6 +119,14 @@ style supports it. Note that the :doc:`pair_style <pair_style>` and
to specify these parameters initially; the fix adapt command simply
overrides the parameters.
.. note::
Pair_coeff settings must be made **explicitly** in order for fix
adapt to be able to change them. Settings inferred from mixing
are not suitable. If necessary all mixed settings can be output
to a file using the :doc:`write_coeff command <write_coeff>` and
then the desired mixed pair_coeff settings copied from that file.
The *pstyle* argument is the name of the pair style. If
:doc:`pair_style hybrid or hybrid/overlay <pair_hybrid>` is used,
*pstyle* should be a sub-style name. If there are multiple
@ -319,25 +327,36 @@ all types from 1 to :math:`N`. A leading asterisk means all types from
:math:`N` (inclusive). A middle asterisk means all types from m to n
(inclusive).
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
If :doc:`bond_style hybrid <bond_hybrid>` is used, *bstyle* should be a
sub-style name. 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 |
+------------------------------------+------------+------------+
+-----------------------------------------------------+---------------------------+------------+
| :doc:`class2 <bond_class2>` | k2,k3,k4,r0 | type bonds |
+-----------------------------------------------------+---------------------------+------------+
| :doc:`fene <bond_fene>` | k,r0 | type bonds |
+-----------------------------------------------------+---------------------------+------------+
| :doc:`fene/expand <bond_fene_expand>` | k,r0,epsilon,sigma,shift | type bonds |
+-----------------------------------------------------+---------------------------+------------+
| :doc:`fene/nm <bond_fene>` | k,r0 | type bonds |
+-----------------------------------------------------+---------------------------+------------+
| :doc:`gaussian <bond_gaussian>` | alpha,width,r0 | type bonds |
+-----------------------------------------------------+---------------------------+------------+
| :doc:`gromos <bond_gromos>` | k,r0 | type bonds |
+-----------------------------------------------------+---------------------------+------------+
| :doc:`harmonic <bond_harmonic>` | k,r0 | type bonds |
+-----------------------------------------------------+---------------------------+------------+
| :doc:`harmonic/restrain <bond_harmonic_restrain>` | k | type bonds |
+-----------------------------------------------------+---------------------------+------------+
| :doc:`harmonic/shift <bond_harmonic_shift>` | k,r0,r1 | type bonds |
+-----------------------------------------------------+---------------------------+------------+
| :doc:`harmonic/shift/cut <bond_harmonic_shift_cut>` | k,r0,r1 | type bonds |
+-----------------------------------------------------+---------------------------+------------+
| :doc:`mm3 <bond_mm3>` | k,r0 | type bonds |
+-----------------------------------------------------+---------------------------+------------+
| :doc:`morse <bond_morse>` | d0,alpha,r0 | type bonds |
+-----------------------------------------------------+---------------------------+------------+
| :doc:`nonlinear <bond_nonlinear>` | lamda,epsilon,r0 | type bonds |
+-----------------------------------------------------+---------------------------+------------+
----------
@ -357,15 +376,40 @@ all types from 1 to :math:`N`. A leading asterisk means all types from
:math:`N` (inclusive). A middle asterisk means all types from m to n
(inclusive).
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
If :doc:`angle_style hybrid <angle_hybrid>` is used, *astyle* should be a
sub-style name. 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:`charmm <angle_charmm>` | k,theta0 | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
| :doc:`class2 <angle_class2>` | k2,k3,k4,theta0 | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
| :doc:`cosine <angle_cosine>` | k | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
| :doc:`cosine/delta <angle_cosine_delta>` | k | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
| :doc:`cosine/periodic <angle_cosine_periodic>` | k,b,n | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
| :doc:`cosine/squared <angle_cosine_squared>` | k,theta0 | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
| :doc:`cosine/squared/restricted <angle_cosine_squared_restricted>` | k,theta0 | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
| :doc:`dipole <angle_dipole>` | k,gamma0 | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
| :doc:`fourier <angle_fourier>` | k,c0,c1,c2 | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
| :doc:`fourier/simple <angle_fourier_simple>` | k,c,n | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
| :doc:`gaussian <angle_gaussian>` | alpha,width,theta0 | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
| :doc:`mm3 <angle_mm3>` | k,theta0 | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
| :doc:`quartic <angle_quartic>` | k2,k3,k4,theta0 | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
| :doc:`spica <angle_spica>` | k,theta0 | type angles |
+--------------------------------------------------------------------+--------------------+-------------+
Note that internally, theta0 is stored in radians, so the variable
this fix uses to reset theta0 needs to generate values in radians.

View File

@ -116,12 +116,22 @@ style supports it. Note that the :doc:`pair_style <pair_style>` and
to specify these parameters initially; the fix adapt command simply
overrides the parameters.
The *pstyle* argument is the name of the pair style. If :doc:`pair_style hybrid or hybrid/overlay <pair_hybrid>` is used, *pstyle* should be
a sub-style name. For example, *pstyle* could be specified as "soft"
or "lubricate". The *pparam* argument is the name of the parameter to
change. This is the current list of pair styles and parameters that
can be varied by this fix. See the doc pages for individual pair
styles and their energy formulas for the meaning of these parameters:
.. note::
Pair_coeff settings must be made **explicitly** in order for fix
adapt/fep to be able to change them. Settings inferred from mixing
are not suitable. If necessary all mixed settings can be output
to a file using the :doc:`write_coeff command <write_coeff>` and
then the desired mixed pair_coeff settings copied from that file.
The *pstyle* argument is the name of the pair style. If
:doc:`pair_style hybrid or hybrid/overlay <pair_hybrid>` is used,
*pstyle* should be a sub-style name. For example, *pstyle* could be
specified as "soft" or "lubricate". The *pparam* argument is the name
of the parameter to change. This is the current list of pair styles and
parameters that can be varied by this fix. See the doc pages for
individual pair styles and their energy formulas for the meaning of
these parameters:
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`born <pair_born>` | a,b,c | type pairs |

View File

@ -115,10 +115,6 @@ correctly, the minimization will not converge properly.
----------
.. include:: accel_styles.rst
----------
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

View File

@ -119,15 +119,14 @@ groups of atoms that have different charges, these charges will not be
changed when the atom types change.
Since this fix computes total potential energies before and after
proposed swaps, so even complicated potential energy calculations are
OK, including the following:
proposed swaps, even complicated potential energy calculations are
acceptable, including the following:
* long-range electrostatics (:math:`k`-space)
* many body pair styles
* hybrid pair styles
* eam pair styles
* hybrid pair styles (with restrictions)
* EAM pair styles
* triclinic systems
* need to include potential energy contributions from other fixes
Some fixes have an associated potential energy. Examples of such fixes
include: :doc:`efield <fix_efield>`, :doc:`gravity <fix_gravity>`,
@ -181,6 +180,10 @@ 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.
When this fix is used with a :doc:`hybrid pair style <pair_hybrid>`
system, only swaps between atom types of the same sub-style (or
combination of sub-styles) are permitted.
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

View File

@ -71,10 +71,6 @@ to it.
----------
.. include:: accel_styles.rst
----------
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

View File

@ -1,8 +1,11 @@
.. index:: fix cmap
.. index:: fix cmap/kk
fix cmap command
================
Accelerator Variants: *cmap/kk*
Syntax
""""""
@ -141,6 +144,12 @@ outermost level.
MUST not disable the :doc:`fix_modify <fix_modify>` *energy* option
for this fix.
----------
.. include:: accel_styles.rst
----------
Restrictions
""""""""""""

View File

@ -1,8 +1,11 @@
.. index:: fix colvars
.. index:: fix colvars/kk
fix colvars command
===================
Accelerator Variants: *colvars/kk*
Syntax
""""""
@ -118,6 +121,16 @@ thermostat target temperature.
The *seed* keyword contains the seed for the random number generator
that will be used in the colvars module.
----------
.. note::
Fix colvars/kk is not really ported to KOKKOS, since the colvars
library has not been ported to KOKKOS. It merely has some
optimizations to reduce the data transfers between host and device
for KOKKOS with GPUs.
----------
Restarting
""""""""""

View File

@ -139,9 +139,9 @@ properties are:
void set_vector_length(int n);
void set_vector(int idx, double val);
These allow to set per-atom energy contributions, per-atom stress
contributions, the length and individual values of a global vector
of properties that the caller code may want to communicate to LAMMPS
These enable setting per-atom energy and per-atom stress contributions,
the length and individual values of a global vector of properties that
the caller code may want to communicate to LAMMPS
(e.g. for use in :doc:`fix ave/time <fix_ave_time>` or in
:doc:`equal-style variables <variable>` or for
:doc:`custom thermo output <thermo_style>`.
@ -173,9 +173,19 @@ stress/atom <compute_stress_atom>` commands. The former can be
accessed by :doc:`thermodynamic output <thermo_style>`. The default
setting for this fix is :doc:`fix_modify virial yes <fix_modify>`.
This fix computes a global scalar which can be accessed by various
:doc:`output commands <Howto_output>`. The scalar is the potential
energy discussed above. The scalar stored by this fix is "extensive".
This fix computes a global scalar, a global vector, and a per-atom array
which can be accessed by various :doc:`output commands <Howto_output>`.
The scalar is the potential energy discussed above. The scalar stored
by this fix is "extensive".
The global vector has a custom length and needs to be set by the external
program using the
:cpp:func:`lammps_fix_external_set_vector() <lammps_fix_external_set_vector>`
and :cpp:func:`lammps_fix_external_set_vector_length()
<lammps_fix_external_set_vector_length>`
calls of the LAMMPS library interface or the equivalent call of the Python
or Fortran modules.
The per-atom array has 3 values for each atom and is the applied external
force.
No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command.

View File

@ -50,8 +50,8 @@ Syntax
*intra_energy* value = intramolecular energy (energy units)
*tfac_insert* value = scale up/down temperature of inserted atoms (unitless)
*overlap_cutoff* value = maximum pair distance for overlap rejection (distance units)
*max* value = Maximum number of molecules allowed in the system
*min* value = Minimum number of molecules allowed in the system
*max* value = Maximum number of atoms allowed in the fix group (and region)
*min* value = Minimum number of atoms allowed in the fix group (and region)
Examples
""""""""
@ -380,10 +380,11 @@ an infinite positive energy to all new configurations that place any
pair of atoms closer than the specified overlap cutoff distance.
The *max* and *min* keywords allow for the restriction of the number of
atoms in the simulation. They automatically reject all insertion or
deletion moves that would take the system beyond the set boundaries.
Should the system already be beyond the boundary, only moves that bring
the system closer to the bounds may be accepted.
atoms in the fix group (and region in case the *region* keyword is
used). They automatically reject all insertion or deletion moves that
would take the system beyond the set boundaries. Should the system
already be beyond the boundary, only moves that bring the system closer
to the bounds may be accepted.
The *group* keyword adds all inserted atoms to the :doc:`group <group>`
of the group-ID value. The *grouptype* keyword adds all inserted atoms

View File

@ -101,7 +101,7 @@ hstyle = bondmax option.
.. code-block:: LAMMPS
compute bdist all bond/local dist
compute bmax all reduce max c_bdist
compute bmax all reduce max c_bdist inputs local
variable bondmax equal c_bmax
Thus these two versions of a fix halt command will do the same thing:

View File

@ -231,12 +231,6 @@ the particles. As described below, this energy can then be printed
out or added to the potential energy of the system to monitor energy
conservation.
.. note::
This accumulated energy does NOT include kinetic energy removed
by the *zero* flag. LAMMPS will print a warning when both options are
active.
The keyword *zero* can be used to eliminate drift due to the
thermostat. Because the random forces on different atoms are
independent, they do not sum exactly to zero. As a result, this fix

View File

@ -102,7 +102,6 @@ zeroed. The *update* reference style implies the reference state will be updated
*nstep* timesteps. The *offset* reference will update the reference state *nstep*
timesteps before a multiple of *nevery* timesteps.
----------
Restart, fix_modify, output, run start/stop, minimize info
@ -129,6 +128,12 @@ 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.
As this fix depends on a run including specific reference timesteps, it
currently does not update peratom values if used in conjunction with the
:doc:`rerun command <rerun>` since it cannot ensure the necessary reference
timesteps are included.
Related commands
""""""""""""""""

View File

@ -79,8 +79,6 @@ It also means that changing attributes of *thermo_temp* or
----------
.. include:: accel_styles.rst
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

View File

@ -103,8 +103,6 @@ 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 nve/limit
.. index:: fix nve/limit/kk
fix nve/limit command
=====================
Accelerator Variants: *nve/limit/kk*
Syntax
""""""
@ -79,6 +82,12 @@ is "extensive".
No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
----------
.. include:: accel_styles.rst
----------
Restrictions
""""""""""""
none

View File

@ -85,8 +85,6 @@ 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

@ -155,6 +155,22 @@ many timesteps until the desired # of particles has been inserted.
the :doc:`compute_modify dynamic/dof yes <compute_modify>` command
for the temperature compute you are using.
.. admonition:: Implementation Notes
:class: Hint
The exact insertion procedure depends on many factors (e.g. the range of
diameters inserted or whether molecules are being inserted). However, in
the simplest scenario of monodisperse atoms, the procedure works as
follows. First, the number of timesteps between two insertion events is
calculated as the time for a particle to fall through the insertion region,
accounting for gravity and any region motion. Next, the target number of
particles inserted per event (assuming no failed insertions due to overlaps)
is calculated as the product of the volume fraction and the volume of the
insertion region divided by the volume of a particle (or area in 2D).
Events are repeated until all N particles have been inserted, where
the final event is likely interrupted upon reaching N. Estimates of this
process are printed to the log/screen at the start of a run.
----------
All other keywords are optional with defaults as shown below.

View File

@ -1,6 +1,7 @@
.. index:: fix qeq/point
.. index:: fix qeq/shielded
.. index:: fix qeq/slater
.. index:: fix qeq/ctip
.. index:: fix qeq/dynamic
.. index:: fix qeq/fire
@ -13,6 +14,9 @@ fix qeq/shielded command
fix qeq/slater command
======================
fix qeq/ctip command
====================
fix qeq/dynamic command
=======================
@ -27,18 +31,20 @@ Syntax
fix ID group-ID style Nevery cutoff tolerance maxiter qfile keyword ...
* ID, group-ID are documented in :doc:`fix <fix>` command
* style = *qeq/point* or *qeq/shielded* or *qeq/slater* or *qeq/dynamic* or *qeq/fire*
* style = *qeq/point* or *qeq/shielded* or *qeq/slater* or *qeq/ctip* or *qeq/dynamic* or *qeq/fire*
* Nevery = perform charge equilibration every this many steps
* cutoff = global cutoff for charge-charge interactions (distance unit)
* tolerance = precision to which charges will be equilibrated
* maxiter = maximum iterations to perform charge equilibration
* qfile = a filename with QEq parameters or *coul/streitz* or *reaxff*
* qfile = a filename with QEq parameters or *coul/streitz* or *coul/ctip* or *reaxff*
* zero or more keyword/value pairs may be appended
* keyword = *alpha* or *qdamp* or *qstep* or *warn*
* keyword = *alpha* or *cdamp* or *maxrepeat* or *qdamp* or *qstep* or *warn*
.. parsed-literal::
*alpha* value = Slater type orbital exponent (qeq/slater only)
*cdamp* value = damping parameter for Coulomb interactions (qeq/ctip only)
*maxrepeat* value = number of equilibration cycles allowed to ensure no atoms cross charge bounds (qeq/ctip only)
*qdamp* value = damping factor for damped dynamics charge solver (qeq/dynamic and qeq/fire only)
*qstep* value = time step size for damped dynamics charge solver (qeq/dynamic and qeq/fire only)
*warn* value = do (=yes) or do not (=no) print a warning when the maximum number of iterations is reached
@ -51,6 +57,7 @@ Examples
fix 1 all qeq/point 1 10 1.0e-6 200 param.qeq1
fix 1 qeq qeq/shielded 1 8 1.0e-6 100 param.qeq2
fix 1 all qeq/slater 5 10 1.0e-6 100 params alpha 0.2
fix 1 all qeq/ctip 1 12 1.0e-8 100 coul/ctip cdamp 0.30 maxrepeat 10
fix 1 qeq qeq/dynamic 1 12 1.0e-3 100 my_qeq
fix 1 all qeq/fire 1 10 1.0e-3 100 my_qeq qdamp 0.2 qstep 0.1
@ -103,7 +110,7 @@ equalizes the derivative of energy with respect to charge of all the
atoms) by adjusting the partial charge on individual atoms based on
interactions with their neighbors within *cutoff*\ . It requires a few
parameters in the appropriate units for each atom type which are read
from a file specified by *qfile*\ . The file has the following format
from a file specified by *qfile*\ . The file has the following format:
.. parsed-literal::
@ -112,20 +119,32 @@ from a file specified by *qfile*\ . The file has the following format
...
Ntype chi eta gamma zeta qcore
except for fix style *qeq/ctip* where the format is:
.. parsed-literal::
1 chi eta gamma zeta qcore qmin qmax omega
2 chi eta gamma zeta qcore qmin qmax omega
...
Ntype chi eta gamma zeta qcore qmin qmax omega
There have to be parameters given for every atom type. Wildcard entries
are possible using the same type range syntax as for "coeff" commands
(i.e., n\*m, n\*, \*m, \*). Later entries will overwrite previous ones.
Empty lines or any text following the pound sign (#) are ignored.
Each line starts with the atom type followed by five parameters.
Only a subset of the parameters is used by each QEq style as described
below, thus the others can be set to 0.0 if desired, but all five
entries per line are required.
Empty lines or any text following the pound sign (#) are ignored. Each
line starts with the atom type followed by eight parameters. Only a
subset of the parameters is used by each QEq style as described below,
thus the others can be set to 0.0 if desired, but all eight entries per
line are required.
* *chi* = electronegativity in energy units
* *eta* = self-Coulomb potential in energy units
* *gamma* = shielded Coulomb constant defined by :ref:`ReaxFF force field <vanDuin>` in distance units
* *zeta* = Slater type orbital exponent defined by the :ref:`Streitz-Mintmire <Streitz1>` potential in reverse distance units
* *qcore* = charge of the nucleus defined by the :ref:`Streitz-Mintmire potential <Streitz1>` potential in charge units
* *qmin* = lower bound on the allowed charge defined by the :ref:`CTIP <CTIP1>` potential in charge units
* *qmax* = upper bound on the allowed charge defined by the :ref:`CTIP <CTIP1>` potential in charge units
* *omega* = penalty parameter used to enforce charge bounds defined by the :ref:`CTIP <CTIP1>` potential in energy units
The fix qeq styles will print a warning if the charges are not
equilibrated within *tolerance* by *maxiter* steps, unless the
@ -171,6 +190,22 @@ on atoms via the matrix inversion method. A tolerance of 1.0e-6 is
usually a good number. Keyword *alpha* can be used to change the Slater
type orbital exponent.
.. versionadded:: 19Nov2024
The *qeq/ctip* style describes partial charges on atoms in the same way
as style *qeq/shielded* but also enables the definition of charge
bounds. Only the *chi*, *eta*, *gamma*, *qmin*, *qmax*, and *omega*
parameters from the *qfile* file are used. When using the string
*coul/ctip* as filename, these parameters are extracted directly from an
active *coul/ctip* pair style. This style solves partial charges on
atoms via the matrix inversion method. Keyword *cdamp* can be used to
change the damping parameter used to calculate Coulomb interactions.
Keyword *maxrepeat* can be used to adjust the number of equilibration
cycles allowed to ensure no atoms have crossed the charge bounds. A
value of 10 is usually a good choice. A tolerance between 1.0e-6 and
1.0e-8 is usually a good choice but should be checked in conjunction
with the timestep for adequate energy conservation during dynamic runs.
The *qeq/dynamic* style describes partial charges on atoms as point
charges that interact through 1/r, but the extended Lagrangian method is
used to solve partial charges on atoms. Only the *chi* and *eta*
@ -186,7 +221,7 @@ minimization algorithm to solve for equilibrium charges. Keyword
*qdamp* can be used to change the damping factor, while keyword *qstep*
can be used to change the time step size.
Note that *qeq/point*, *qeq/shielded*, and *qeq/slater* describe
Note that *qeq/point*, *qeq/shielded*, *qeq/slater*, and *qeq/ctip* describe
different charge models, whereas the matrix inversion method and the
extended Lagrangian method (\ *qeq/dynamic* and *qeq/fire*\ ) are
different solvers.
@ -266,6 +301,11 @@ Chemistry, 95, 3358-3363 (1991).
**(Streitz-Mintmire)** F. H. Streitz, J. W. Mintmire, Physical Review B, 50,
16, 11996 (1994)
.. _CTIP1:
**(CTIP)** G. Plummer, J. P. Tavenner, M. I. Mendelev, Z. Wu, J. W. Lawson,
in preparation
.. _vanDuin:
**(ReaxFF)** A. C. T. van Duin, S. Dasgupta, F. Lorant, W. A. Goddard III, J

View File

@ -124,7 +124,8 @@ LAMMPS was built with that package. See the :doc:`Build package
This fix does not correctly handle interactions involving multiple
periodic images of the same atom. Hence, it should not be used for
periodic cell dimensions less than 10 Angstroms.
periodic cell dimensions smaller than the non-bonded cutoff radius,
which is typically :math:`10~\AA` for ReaxFF simulations.
This fix may be used in combination with :doc:`fix efield <fix_efield>`
and will apply the external electric field during charge equilibration,
@ -138,7 +139,8 @@ as an atom-style variable using the *potential* keyword for `fix efield`.
Related commands
""""""""""""""""
:doc:`pair_style reaxff <pair_reaxff>`, :doc:`fix qeq/shielded <fix_qeq>`
:doc:`pair_style reaxff <pair_reaxff>`, :doc:`fix qeq/shielded <fix_qeq>`,
:doc:`fix acks2/reaxff <fix_acks2_reaxff>`, :doc:`fix qtpie/reaxff <fix_qtpie_reaxff>`
Default
"""""""

View File

@ -0,0 +1,200 @@
.. index:: fix qtpie/reaxff
fix qtpie/reaxff command
========================
Syntax
""""""
.. code-block:: LAMMPS
fix ID group-ID qtpie/reaxff Nevery cutlo cuthi tolerance params gfile args
* ID, group-ID are documented in :doc:`fix <fix>` command
* qtpie/reaxff = style name of this fix command
* Nevery = perform QTPIE every this many steps
* cutlo,cuthi = lo and hi cutoff for Taper radius
* tolerance = precision to which charges will be equilibrated
* params = reaxff or a filename
* gfile = the name of a file containing Gaussian orbital exponents
* one or more keywords or keyword/value pairs may be appended
.. parsed-literal::
keyword = *maxiter*
*maxiter* N = limit the number of iterations to *N*
Examples
""""""""
.. code-block:: LAMMPS
fix 1 all qtpie/reaxff 1 0.0 10.0 1.0e-6 reaxff exp.qtpie
fix 1 all qtpie/reaxff 1 0.0 10.0 1.0e-6 params.qtpie exp.qtpie maxiter 500
Description
"""""""""""
.. versionadded:: 19Nov2024
The QTPIE charge equilibration method is an extension of the QEq charge
equilibration method. With QTPIE, the partial charges on individual atoms
are computed by minimizing the electrostatic energy of the system in the
same way as the QEq method but where the absolute electronegativity,
:math:`\chi_i`, of each atom in the QEq charge equilibration scheme
:ref:`(Rappe and Goddard) <Rappe3>` is replaced with an effective
electronegativity given by :ref:`(Chen) <qtpie-Chen>`
.. math::
\chi_{\mathrm{eff},i} = \frac{\sum_{j=1}^{N} (\chi_i - \chi_j) S_{ij}}
{\sum_{m=1}^{N}S_{im}},
which acts to penalize long-range charge transfer seen with the QEq charge
equilibration scheme. In this equation, :math:`N` is the number of atoms in
the system and :math:`S_{ij}` is the overlap integral between atom :math:`i`
and atom :math:`j`.
The effect of an external electric field can be incorporated into the QTPIE
method by modifying the absolute or effective electronegativities of each
atom :ref:`(Chen) <qtpie-Chen>`. This fix models the effect of an external
electric field by using the effective electronegativity given in
:ref:`(Gergs) <Gergs>`:
.. math::
\chi_{\mathrm{eff},i} = \frac{\sum_{j=1}^{N} (\chi_i - \chi_j + \phi_i - \phi_j) S_{ij}}
{\sum_{m=1}^{N}S_{im}},
where :math:`\phi_i` and :math:`\phi_j` are the electric
potentials at the positions of atom :math:`i` and :math:`j`
due to the external electric field.
This fix is typically used in conjunction with the ReaxFF force
field model as implemented in the :doc:`pair_style reaxff <pair_reaxff>`
command, but it can be used with any potential in LAMMPS, so long as it
defines and uses charges on each atom. For more technical details about the
charge equilibration performed by `fix qtpie/reaxff`, which is the same as in
:doc:`fix qeq/reaxff <fix_qeq_reaxff>` except for the use of
:math:`\chi_{\mathrm{eff},i}`, please refer to :ref:`(Aktulga) <qeq-Aktulga2>`.
To be explicit, this fix replaces :math:`\chi_k` of eq. 3 in
:ref:`(Aktulga) <qeq-Aktulga2>` with :math:`\chi_{\mathrm{eff},k}`.
This fix requires the absolute electronegativity, :math:`\chi`, in eV, the
self-Coulomb potential, :math:`\eta`, in eV, and the shielded Coulomb
constant, :math:`\gamma`, in :math:`\AA^{-1}`. If the *params* setting above
is the word "reaxff", then these are extracted from the
:doc:`pair_style reaxff <pair_reaxff>` command and the ReaxFF force field
file it reads in. If a file name is specified for *params*, then the
parameters are taken from the specified file and the file must contain
one line for each atom type. The latter form must be used when performing
QTPIE with a non-ReaxFF potential. Each line should be formatted as follows,
ensuring that the parameters are given in units of eV, eV, and :math:`\AA^{-1}`,
respectively:
.. parsed-literal::
itype chi eta gamma
where *itype* is the atom type from 1 to Ntypes. Note that eta is
defined here as twice the eta value in the ReaxFF file.
The overlap integrals in the equation for :math:`\chi_{\mathrm{eff},i}`
are computed by using normalized 1s Gaussian type orbitals. The Gaussian
orbital exponents, :math:`\alpha`, that are needed to compute the overlap
integrals are taken from the file given by *gfile*.
This file must contain one line for each atom type and provide the Gaussian
orbital exponent for each atom type in units of inverse square Bohr radius.
Each line should be formatted as follows:
.. parsed-literal::
itype alpha
Empty lines or any text following the pound sign (#) are ignored. An example
*gfile* for a system with two atom types is
.. parsed-literal::
# An example gfile. Exponents are taken from Table 2.2 of Chen, J. (2009).
# Theory and applications of fluctuating-charge models.
# The units of the exponents are 1 / (Bohr radius)^2 .
1 0.2240 # O
2 0.5434 # H
The optional *maxiter* keyword allows changing the max number
of iterations in the linear solver. The default value is 200.
.. note::
In order to solve the self-consistent equations for electronegativity
equalization, LAMMPS imposes the additional constraint that all the
charges in the fix group must add up to zero. The initial charge
assignments should also satisfy this constraint. LAMMPS will print a
warning if that is not the case.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files
<restart>`. This fix computes a global scalar (the number of
iterations) and a per-atom vector (the effective electronegativity), which
can be accessed 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.
This fix is invoked during :doc:`energy minimization <minimize>`.
Restrictions
""""""""""""
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.
This fix does not correctly handle interactions involving multiple
periodic images of the same atom. Hence, it should not be used for
periodic cell dimensions smaller than the non-bonded cutoff radius,
which is typically :math:`10~\AA` for ReaxFF simulations.
This fix may be used in combination with :doc:`fix efield <fix_efield>`
and will apply the external electric field during charge equilibration,
but there may be only one fix efield instance used and the electric field
must be applied to all atoms in the system. Consequently, `fix efield` must
be used with *group-ID* all and must not be used with the keyword *region*.
Equal-style variables can be used for electric field vector
components without any further settings. Atom-style variables can be used
for spatially-varying electric field vector components, but the resulting
electric potential must be specified as an atom-style variable using
the *potential* keyword for `fix efield`.
Related commands
""""""""""""""""
:doc:`pair_style reaxff <pair_reaxff>`, :doc:`fix qeq/reaxff <fix_qeq_reaxff>`,
:doc:`fix acks2/reaxff <fix_acks2_reaxff>`
Default
"""""""
maxiter 200
----------
.. _Rappe3:
**(Rappe)** Rappe and Goddard III, Journal of Physical Chemistry, 95,
3358-3363 (1991).
.. _qtpie-Chen:
**(Chen)** Chen, Jiahao. Theory and applications of fluctuating-charge models.
University of Illinois at Urbana-Champaign, 2009.
.. _Gergs:
**(Gergs)** Gergs, Dirkmann and Mussenbrock.
Journal of Applied Physics 123.24 (2018).
.. _qeq-Aktulga2:
**(Aktulga)** Aktulga, Fogarty, Pandit, Grama, Parallel Computing, 38,
245-259 (2012).

View File

@ -1,8 +1,11 @@
.. index:: fix recenter
.. index:: fix recenter/kk
fix recenter command
====================
Accelerator Variants: *recenter/kk*
Syntax
""""""
@ -113,6 +116,12 @@ The scalar and vector values calculated by this fix are "extensive".
No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
----------
.. include:: accel_styles.rst
----------
Restrictions
""""""""""""

View File

@ -16,8 +16,7 @@ Syntax
* kstyle = *quintic* or *RK0* or *RK1* or *RK2*
* zmin = minimal number of neighbors for reproducing kernels
* zero or more keyword/value pairs may be appended to args
* keyword = *thermal* or *interface/reconstruct* or *surface/detection* or
*shift* or *rho/sum* or *density* or *self/mass* or *speed/sound*
* keyword = *thermal* or *interface/reconstruct* or *surface/detection* or *shift* or *rho/sum* or *density* or *self/mass* or *speed/sound*
.. parsed-literal::

View File

@ -13,7 +13,7 @@ Syntax
* ID, group-ID are documented in :doc:`fix <fix>` command
* spring/self = style name of this fix command
* K = spring constant (force/distance units)
* K = spring constant (force/distance units), can be a variable (see below)
* dir = xyz, xy, xz, yz, x, y, or z (optional, default: xyz)
Examples
@ -22,6 +22,7 @@ Examples
.. code-block:: LAMMPS
fix tether boundary-atoms spring/self 10.0
fix var all spring/self v_kvar
fix zrest move spring/self 10.0 z
Description
@ -42,6 +43,22 @@ directions, but it can be limited to the xy-, xz-, yz-plane and the
x-, y-, or z-direction, thus restraining the atoms to a line or a
plane, respectively.
The force constant *k* can be specified as an equal-style or atom-style
:doc:`variable <variable>`. If the value is a variable, it should be specified
as v_name, where name is the variable name. In this case, the variable
will be evaluated each time step, and its value(s) will be used as
force constant for the spring force.
Equal-style variables can specify formulas with various mathematical
functions and include :doc:`thermo_style <thermo_style>` command
keywords for the simulation box parameters, time step, and elapsed time.
Thus, it is easy to specify a time-dependent force field.
Atom-style variables can specify the same formulas as equal-style
variables but can also include per-atom values, such as atom
coordinates. Thus, it is easy to specify a spatially-dependent force
field with optional time-dependence as well.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@ -89,7 +106,9 @@ invoked by the :doc:`minimize <minimize>` command.
Restrictions
""""""""""""
none
The KOKKOS version, *fix spring/self/kk* may only be used with a constant
value of K, not a variable.
Related commands
""""""""""""""""

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