Compare commits

..

1748 Commits

Author SHA1 Message Date
883a25bbd8 Merge pull request #3375 from akohlmey/next_patch_release
Step version strings for the next patch release
2022-08-03 17:49:36 -04:00
1b4a7f4696 Merge pull request #3377 from lammps/doc-pair-dipole-again
Tweak dipole doc page for clarity
2022-08-03 16:17:27 -04:00
94c1aa8c5a tweak dipole doc page 2022-08-03 13:34:41 -06:00
6c048f101e Merge pull request #3374 from akohlmey/airebo-tweaks
Small cleanup and performance tweak for spline evaluation in AIREBO pair style
2022-08-03 13:32:40 -04:00
7a5fa964b4 Merge pull request #3370 from lammps/doc-pair-dipole
Edits to pair dipole doc page
2022-08-03 12:47:08 -04:00
1eaa807bbf clarification on what constituets single, double, and triple quotes. 2022-08-03 01:50:11 -04:00
d7901cb3af step version strings for the next patch release 2022-08-02 13:03:37 -04:00
2dd7c23b6f small performance tweak for 5th order spline evaluation 2022-08-02 10:37:50 -04:00
20c1644e6d adjusted kspace solver portion of page 2022-08-01 15:10:49 -06:00
67e0621806 Merge pull request #3361 from akohlmey/collected-small-changes
Collected small changes and fixes
2022-08-01 16:37:02 -04:00
c0f4650d59 add some .. versionadded:: statements to indicate the version a feature was added 2022-08-01 03:54:39 -04:00
acadc299a7 apply powint() in a few more cases 2022-07-31 18:35:04 -04:00
00cd92954c match pow(0,0) = 1.0 behavior in powint() 2022-07-31 18:32:52 -04:00
c5e1ce0b59 switch from master to develop 2022-07-31 16:56:47 -04:00
daec261fa1 use $(PIP_OPTIONS) consistently 2022-07-30 17:26:46 -04:00
d67d6beba9 Merge remote-tracking branch 'github/develop' into collected-small-changes 2022-07-30 17:15:49 -04:00
5c30c493e6 Merge pull request #3372 from rbberger/docs_update
Removes `easy_install` deprecation warnings in doc build
2022-07-30 17:14:46 -04:00
3f293e1c13 Use pip install -e util/converters in doc build 2022-07-29 17:56:01 -06:00
2b126a00b1 update Pizza.py URLs 2022-07-29 19:23:23 -04:00
0dc9b31620 import updated version of tinker2lmp from @sjplimp. fix whitespace. 2022-07-29 19:11:25 -04:00
3a7a941cd5 add false positive 2022-07-29 17:06:06 -04:00
ac158a7b4b whitespace 2022-07-29 06:58:48 -04:00
d444bfc996 Merge branch 'develop' into collected-small-changes 2022-07-29 06:58:22 -04:00
2ce33c14b7 Merge pull request #3365 from pvelesko/chip_spv
Add CMake and GNU make support for HIP via CHIP-SPV
2022-07-29 06:33:55 -04:00
b6c62cce05 additional tweaks to clarify fix sphere doc pages 2022-07-28 16:30:00 -06:00
bbc4ef3a20 edits to pair dipole doc page 2022-07-28 16:09:59 -06:00
c2d96ba911 fix uninitialized memory access bug in memory usage computation for fix STORE 2022-07-28 16:40:35 -04:00
4d69c7aea2 update embedded search box 2022-07-28 15:01:35 -04:00
5fee276348 add some GNU Make magic(tm) to Makefile.hip to adapt itself to OpenMPI and MPICH 2022-07-28 07:03:58 -04:00
9258ab3a51 document missing call 2022-07-27 22:13:14 -04:00
eb7759c869 improve formatting and modernize 2022-07-27 19:49:55 -04:00
ad69c7d157 simplify through using utils::strdup() 2022-07-27 19:49:31 -04:00
e583f54ca7 fix off-by-one bug 2022-07-27 19:12:36 -04:00
8076624477 Merge pull request #3364 from rbberger/add_citation_info
Add citation information to GitHub
2022-07-27 16:02:11 -04:00
afcfb3754c Merge pull request #3358 from akohlmey/old-version-porting
Add a section to manual with info on updating old source code for current LAMMPS versions
2022-07-27 15:25:46 -04:00
56642ae184 add a few more keywords 2022-07-27 05:36:05 -04:00
c986dd9b97 correct make command line example 2022-07-27 05:25:36 -04:00
e7ffa7fae3 Add Makefile support for CHIP-SPV 2022-07-27 08:34:35 +00:00
24b3de8727 update documentation for CMake 2022-07-27 06:41:19 +00:00
6a5d56994a PR comments 2022-07-27 06:25:36 +00:00
8d5149fade Add citation information to GitHub 2022-07-26 19:52:01 -06:00
11897db197 add check on extracting elements twice from the library to avoid opaque error later 2022-07-26 15:00:27 -04:00
4f8a1ca526 correct formatting 2022-07-26 12:32:42 -04:00
e973a4b31c workaround for CHIP-SPV different textrure func 2022-07-26 16:19:11 +00:00
b2cdc40919 Enable CHIP-SPV support 2022-07-26 16:00:43 +00:00
d347a27a39 add reference 2022-07-26 09:19:45 -04:00
5f67850171 correct typos 2022-07-25 22:32:59 -04:00
7b54b974d3 remove dead code 2022-07-25 11:48:21 -04:00
f736248efb replace calls to pow() with faster functions for integer powers 2022-07-25 09:17:37 -04:00
6dc9664087 avoid uninitialized data access 2022-07-25 09:06:09 -04:00
e99494d838 fix copy-n-paste error 2022-07-25 09:02:54 -04:00
bcc49aca84 fix logic issue 2022-07-25 09:01:26 -04:00
762e79c49d initialize possibly uninitialized variabled 2022-07-25 09:01:14 -04:00
87d1aef543 clarify whom to contact with questions about pre-built binaries. update ubuntu info 2022-07-24 18:12:04 -04:00
cdf600b8cd update description 2022-07-22 14:34:09 -04:00
40920ac6e1 improved error messages for duplicate or missing entries in manybody potential files 2022-07-22 12:41:43 -04:00
48ad917d9e initialized pointers to null 2022-07-22 05:33:12 -04:00
c9c9139fd6 fix off-by-one error and resulting out-of-bounds write access. 2022-07-22 05:21:13 -04:00
5761647894 plug memory leak 2022-07-22 05:15:50 -04:00
7901a317c0 Initial version of an LAMMPS older version code update guide 2022-07-22 00:03:34 -04:00
48aa9cf7ba Merge pull request #3359 from akohlmey/correct-misc-mc-depend
Add package dependency handling for pair style srp/react
2022-07-21 14:39:23 -04:00
16e85a9f89 Merge pull request #3360 from akohlmey/update-linalg
Add missing functions for LATTE to linalg library
2022-07-21 13:09:56 -04:00
c8cc2b1b24 update to LAPACK version 3.10.1 2022-07-21 08:41:44 -04:00
11c46a6e90 correct dangling and inconsistent links to sphinx homepage and rst docs 2022-07-21 08:19:39 -04:00
1f4447d1cd add USE_INTERNAL_LINALG to workaround passing BLAS/LAPACK settings to external projects 2022-07-21 05:42:23 -04:00
bf65b4720f add more BLAS/LAPACK functions to support LATTE package 2022-07-21 05:20:11 -04:00
00cecceab7 gitignore 2022-07-21 03:55:53 +00:00
3c99a6b5c4 Correctly handle the dependency of pair style (and fix) srp/react on the MC package 2022-07-20 17:01:44 -04:00
6f7839a516 Merge pull request #3355 from akohlmey/python-lookup-consistency
Improve consistency in Python interpreter and libraries lookup in CMake
2022-07-20 11:51:22 -04:00
5eec9da8fe make search for python libraries consistent with search for python interpreter
- apply same semantics of selecting the interpreter than the main cmake script
- make certain that we search for the interpreter first
- when searching for the library find the version matching the interpreter
- error out when library version and interpreter version does not match
2022-07-19 13:28:43 -04:00
b655088657 adjust search for python interpreter so it is consistent with manual 2022-07-19 13:26:50 -04:00
ed73c21a21 Set path to python interpreter when running in a virtual environment 2022-07-19 13:25:05 -04:00
9061be98c2 Merge pull request #3349 from akohlmey/collected-small-changes
Collected small changes
2022-07-18 16:39:42 -04:00
0ac8dce7b4 strip off -pendantic-errors flag when compiling with nvcc_wrapper to fix error compiling ML-PACE 2022-07-18 14:01:32 -04:00
3685d6974a reorder initializers to silence compiler warning 2022-07-18 14:01:18 -04:00
7232261cea correct unit tests for dump local 2022-07-17 12:15:44 -04:00
34cb0b7047 add support for dump_modify colname to dump local 2022-07-17 11:46:19 -04:00
a9c072488a fix cut-n-paste error and improve error message 2022-07-17 11:42:28 -04:00
e856bb2364 silence static code analysis warnings about integer overflows 2022-07-16 10:26:57 -04:00
6689a20754 clarify 2022-07-16 10:26:57 -04:00
34aca71258 disallow use of variable functions vdisplace(), swiggle(), and cwiggle() with fix dt/reset 2022-07-16 10:26:56 -04:00
d51069b363 fix cut-n-paste typo 2022-07-16 10:26:56 -04:00
51e3428286 add false positive 2022-07-16 10:26:56 -04:00
9e1685211b allow ramp(x,y) to be used in between runs (returning x) and avoid division by zero on run 0 2022-07-16 10:26:56 -04:00
a829d607ce work around issues with Intel compilers compiling the GPU package 2022-07-16 10:26:56 -04:00
beebaea160 Merge pull request #3350 from lammps/doc-page-dump-style-table
add a table with list of dump styles
2022-07-16 06:45:04 -04:00
db9731bf3b also index dump styles 2022-07-15 22:58:49 -04:00
b28f8bc70e add missing index entries for dump style 2022-07-15 21:23:26 -04:00
698d3b06a5 update style checker script to also check dump styles 2022-07-15 21:23:08 -04:00
f478ca3b4d Merge pull request #3337 from vpalkar/pair-srp-react
Adding pair style srp/react
2022-07-15 18:59:49 -04:00
c8ca8fb2d6 properly integrate the new file into the document toctree 2022-07-15 17:51:36 -04:00
151a7f7039 Merge pull request #3336 from MolSSI-MDI/mdi_fix
Minor improvements and bugfixes to the mdi/qm fix
2022-07-15 16:57:18 -04:00
f36653caeb add a table with list of dump styles 2022-07-15 14:47:45 -06:00
3761cff688 Merge pull request #3331 from jrgissing/bond/react-bugfixes
Bond/react bugfixes
2022-07-15 16:18:30 -04:00
2f3115372d Remove debug lines from fix_mdi_qm.cpp 2022-07-15 20:00:44 +00:00
a393569083 Merge pull request #3343 from yskmiyazaki/style-sdk-update
Change package name CG-SDK to CG-SPICA and add a function type LJ12-5 to the package
2022-07-15 14:54:41 -04:00
70eec9a55c Merge pull request #3339 from jtclemm/patch_contact_atom
Redoing groups in compute contact/atom
2022-07-15 14:47:03 -04:00
8b1734d4c3 whitespace 2022-07-15 12:18:15 -04:00
897d9de2ed whitespace 2022-07-15 12:16:15 -04:00
d05c4b529a Add natoms check to mdi/qm fix 2022-07-15 15:22:07 +00:00
4c7825e5c7 Inverting if statements 2022-07-15 09:20:07 -06:00
93e165abf9 Merge pull request #3346 from AkosSeres/develop
Fix bug in vtk dump
2022-07-15 04:25:40 -04:00
5b0313f758 cosmetic 2022-07-14 19:13:49 -04:00
df2e16cc23 Fix bug in vtk dump 2022-07-14 16:57:19 +02:00
e41976e17e Update Errors_warnings.rst 2022-07-13 11:51:50 -04:00
b55cf30cb8 Update Errors_messages.rst 2022-07-13 11:39:30 -04:00
62d0277f34 Merge pull request #3341 from stanmoore1/hybrid_cutoffs
Add pair_modify option to allow separate cutoffs for each neigh list …
2022-07-13 10:51:55 -04:00
007ad7c4b2 Merge pull request #2898 from lammps/amoeba
Add support for AMOEBA and HIPPO force fields
2022-07-13 04:59:40 -04:00
f78bdf80e6 whitespace 2022-07-13 03:19:25 -04:00
4a747fa40c Merge branch 'develop' into amoeba 2022-07-13 03:14:39 -04:00
5087ae19c8 cross-reference neighbor multi and point out differences and benefits 2022-07-13 03:11:40 -04:00
ad2f7bcc44 Add missing dependency 2022-07-12 13:49:03 -06:00
5986c607d0 Add logic to only select intel/omp trim 2022-07-12 13:37:19 -06:00
d63e450998 Whitespace 2022-07-12 10:44:54 -06:00
be1396dab0 Add trim methods for INTEL 2022-07-12 09:58:00 -06:00
1cc5b8aa95 Add trim methods from OPENMP 2022-07-12 09:14:52 -06:00
d67ab73a89 Revert 56dc342 2022-07-12 09:13:07 -06:00
bc79fc6fa3 Clarify docs 2022-07-12 08:26:39 -06:00
56dc342b5b Disable trim from OPENMP and INTEL packages 2022-07-12 08:25:20 -06:00
4cb38038c8 fix segfault in pair style hybrid/scaled due to unallocated data 2022-07-12 00:14:53 -04:00
f0d8ced6ff fix uninitialized variable bug 2022-07-12 00:03:36 -04:00
51ac15bdc7 Fix sorting issue 2022-07-11 17:06:12 -06:00
a37121d425 Merge pull request #3344 from akohlmey/read_dump_no_timestep
Add option to read_dump that prevents resetting the timestep
2022-07-11 19:02:46 -04:00
f795cf0001 typo 2022-07-11 11:22:06 -06:00
66b99008ef Fix memory issue 2022-07-11 11:18:54 -06:00
6ffde544e1 Change default 2022-07-11 10:23:55 -06:00
1bdaf9c99f Small tweak to clarify doc page 2022-07-11 10:22:08 -06:00
c817a495e7 tweak README files 2022-07-11 09:44:23 -06:00
97824a6d46 Fix logic issue 2022-07-11 09:04:51 -06:00
35afe94ec1 fixed a line in CG-SPICA/README 2022-07-11 11:52:45 +09:00
aa11935e88 updated .gitignore and Purge.list, and author info, and added URL to the SPICA web. 2022-07-11 11:38:31 +09:00
bf6ad1bb45 add option to read_dump that prevents resetting the timestep 2022-07-10 05:00:03 -04:00
1ba2b56745 Merge pull request #3342 from rohskopf/compute-snap-apt-2
Extract bispectrum gradients in compute_snap without summing over neighbors.
2022-07-09 16:28:37 -04:00
ee8fa35355 fix typo 2022-07-09 16:07:55 -04:00
9f309d56fe a few more programming style changes 2022-07-09 16:06:21 -04:00
7b7ae55238 small fix, idcreate and idbreak are already deleted in destructor now 2022-07-08 15:39:30 -04:00
b4424e77b1 More cosmetic changes 2 2022-07-08 13:32:51 -06:00
e7f11a82ac More cosmetic changes 2022-07-08 13:24:26 -06:00
45a02e5239 Cosmetic changes 2022-07-08 13:07:49 -06:00
ba2999dfbb Whitespace 2022-07-08 10:04:33 -06:00
31d88618c6 Initialize variable 2022-07-08 09:58:42 -06:00
d6426d5e42 Small tweak 2022-07-08 09:50:19 -06:00
8aa55bfab1 Merge branch 'style-sdk-update' of github.com:yskmiyazaki/lammps into style-sdk-update 2022-07-08 22:01:06 +09:00
ec45c57181 changed reference paper info. 2022-07-08 22:00:34 +09:00
be0f4917c2 Merge branch 'lammps:develop' into style-sdk-update 2022-07-08 19:57:44 +09:00
099992f9c2 changed file and style names for lj/spica in unittest/force-styles/tests. 2022-07-08 18:41:50 +09:00
b5e70ebc81 added a FF name SPICA to tools/kate/lammps.xml and tools/moltemplate/README.txt 2022-07-08 18:23:10 +09:00
07633622e6 changed file names and added a lj12-5 function type in OPENMP pkg. 2022-07-08 18:18:39 +09:00
60b189672e changed file names and added a lj12-5 function type in KOKKOS pkg. 2022-07-08 18:09:37 +09:00
116098022f changed file names and added a lj12-5 function type in GPU pkg. 2022-07-08 18:04:04 +09:00
311596fb4f changed CG-SDK to CG-SPICA and added a lj12-5 function type. 2022-07-08 17:55:15 +09:00
763aa632d9 changed 'sdk' to 'spica' 2022-07-08 17:36:34 +09:00
fc741e0df6 changed names of files, and added a lj12-5 function type. 2022-07-08 17:28:50 +09:00
c71e1cd470 changed lammps inputs in examples for SPICA 2022-07-08 17:16:15 +09:00
20182a194f changed a package name CG-SDK to CG-SPICA in files for cmake. 2022-07-08 17:01:56 +09:00
be25a83210 Merge pull request #3340 from akohlmey/coul-slater-exclusions
Correct excluded force and energy term for pair style coul/slater/long
2022-07-08 03:57:43 -04:00
796bc28f94 changed rstfile names, style names, and description about FF for SPICA 2022-07-08 16:54:01 +09:00
9e93eda19a Format 2022-07-07 17:23:58 -06:00
de12ea9762 Clean up 2022-07-07 17:21:19 -06:00
b4fc400ed3 Add python/lammps back 2022-07-07 17:14:04 -06:00
139ecad13c Trying to remove symlink 2022-07-07 17:12:40 -06:00
8f431c5904 Add python/lammps directory back 2022-07-07 17:05:03 -06:00
3747a28774 Remove symbolic link directory 2022-07-07 17:04:20 -06:00
5bca3fd0b0 Remove an output file 2022-07-07 17:00:52 -06:00
ae615eb815 More whitespace in docs 2022-07-07 16:53:20 -06:00
fcb6058811 More formatting 2022-07-07 16:51:11 -06:00
de274cddef Add pair_modify option to allow separate cutoffs for each neigh list with pair hybrid/overlay 2022-07-07 16:48:03 -06:00
87acd69b71 More whitespace fixes 2022-07-07 16:44:57 -06:00
f4ece2e828 change length of ubi run 2022-07-07 15:02:48 -06:00
b2b0704648 new log files 2022-07-07 15:01:55 -06:00
a79e9bc204 clean up log files 2022-07-07 14:53:45 -06:00
7d06ee9aa7 Merge pull request #3298 from jrgissing/reaxff_species_delete_keyword
Reaxff species 'delete' keyword
2022-07-07 16:37:43 -04:00
6280c81151 Merge pull request #3323 from lammps/long-string-variables
Optimizations to input class for reading very long lines
2022-07-07 16:35:16 -04:00
6100e1fafb code tweaks and update of examples 2022-07-07 14:33:19 -06:00
78c1e01e13 Merge pull request #3316 from jkelowitt/develop
Add Stillinger-Weber Three-body loop optional keyword argument
2022-07-07 16:31:52 -04:00
d2ffc9dae8 programming style updates, fix memory leaks and uninitialized access 2022-07-07 15:57:14 -04:00
79620c5303 Whitespace 2022-07-07 13:53:46 -06:00
9aa819d91e Put compute_snap back 2022-07-07 13:46:01 -06:00
b47e5a8d5b Finalized doc page 2022-07-07 13:36:22 -06:00
5496781ecd Optimizing group filters 2022-07-07 12:44:36 -06:00
c488db6fe0 Merge branch 'compute-snap-apt-2' of github.com:rohskopf/lammps into HEAD 2022-07-07 11:46:24 -06:00
c838c9da6f Cleaned up language 2022-07-07 11:43:39 -06:00
63c048ef59 simplify, modernize, and apply clang-format 2022-07-07 13:32:04 -04:00
0bae7108b5 Whitespace and format 2022-07-07 11:09:10 -06:00
9975eecd2a Fix merge conflicts 2022-07-07 09:11:28 -06:00
6b22886064 small docs fixes 2022-07-07 10:39:11 -04:00
4aa0132860 cosmetic 2022-07-07 10:35:34 -04:00
66c1d8bbca update unit test 2022-07-07 09:01:16 -04:00
fc508bc7b1 apply clang-format 2022-07-07 08:59:49 -04:00
14299b36ba correct force and energy for excluded pairs 2022-07-07 08:59:08 -04:00
569136e160 Redoing groups in compute contact/atom 2022-07-06 14:35:16 -06:00
b7457fe834 Initial commit for pair style srp-react files 2022-07-06 10:55:14 -04:00
1599afc623 clarify how reaxff/species decides when to reneighbor 2022-07-06 00:45:36 -04:00
40cc4fa510 Fix some errors in fix_mdi_qm.cpp 2022-07-05 19:09:23 +00:00
67e29fc766 add metadata tags to the .key files too. 2022-07-05 11:20:15 -04:00
378c5c1687 silence compiler warnings 2022-07-05 11:03:48 -04:00
212048d4cc modernize tinker2lmp scripts so they run with both python2.7 and python3.x 2022-07-05 08:09:24 -04:00
89e0989522 add UNITS: and DATA: metadata tags to force field files 2022-07-05 07:11:09 -04:00
f58d413fbd Update test examples and script to be more in line with other LAMMPS examples 2022-07-05 06:59:31 -04:00
574818c3e9 add unit test for utils::join_words() 2022-07-05 00:27:28 -04:00
f1b14fa4a2 improve formatting 2022-07-05 00:16:31 -04:00
7229c4eb43 refactored file parsing 2022-07-05 00:02:37 -04:00
5331fa7a58 fix documentation issues (spelling, references, non-ASCII chars) 2022-07-04 19:09:56 -04:00
de08609634 add join_words() utility function 2022-07-04 18:26:59 -04:00
e13027787b simplify parsing of PRM file section header 2022-07-04 13:36:14 -04:00
b8acd2e31d Merge pull request #3329 from stanmoore1/kk_update_3.6.1
Update Kokkos library in LAMMPS to v3.6.1
2022-07-04 10:43:55 -04:00
75667718ac simplify printing errors 2022-07-03 06:54:33 -04:00
6579728622 apply include file conventions 2022-07-03 06:54:22 -04:00
82c467d79f remove debug code 2022-07-03 06:53:13 -04:00
3399e1d0d3 add override parameters to overridden virtual functions 2022-07-03 06:53:03 -04:00
886d95c32d clang-tidy fixes 2022-07-02 23:16:13 -04:00
e4c798674f Merge branch 'develop' into amoeba-ak 2022-07-02 22:02:07 -04:00
57a569eb3b Merge remote-tracking branch 'github/amoeba' into amoeba-ak 2022-07-02 21:58:15 -04:00
ea48b031a4 must not run hybrid styles with GPU package that use the same pair style twice 2022-07-02 21:24:25 -04:00
bc542a8673 cosmetic changes, silence warnings, avoid temporary char buffers 2022-07-02 19:38:37 -04:00
6f3f1dba6e more documentation tweaks 2022-07-02 19:05:58 -04:00
1f75740de7 add unit test input for hybrid twobody/threebody sw style 2022-07-02 18:32:23 -04:00
67a3a7a6c1 add unit test for twobody off and implement and test single() function 2022-07-02 18:02:15 -04:00
2fa5f7c97e use a half neighbor list for skip_threebody case for further speedup 2022-07-02 17:39:01 -04:00
f38a417a32 restore user facing keyword back to "threebody" defaulting to "on"
also some minor updates:
- streamline description in the documentation, add links/references
- print message when disabling threebody terms
- improve error messages, simplify argument processing
2022-07-02 17:08:22 -04:00
ab6a658dee very-small-templates bugfix 2022-07-02 16:17:35 -04:00
d3e69170f0 bugfix: specials update corner case 2022-07-02 12:18:56 -04:00
f826d175f0 Merge branch 'develop' into jkelowitt/develop 2022-07-02 12:13:57 -04:00
d7919f3a4e Merge pull request #3330 from lammps/extract-atom-sp
Add per-atom sp array to extract()
2022-07-02 12:04:50 -04:00
b5d5654399 Merge branch 'develop' into long-string-variables 2022-07-02 11:30:16 -04:00
39b01a901f print warning when using I/O redirection with parallel runs 2022-07-02 11:30:09 -04:00
8e4b3fd41b Merge pull request #3328 from stanmoore1/kk_meam_release
Add Kokkos version of pair MEAM
2022-07-02 03:51:51 -04:00
581503888f Updated docs. 2022-07-01 21:07:19 -06:00
e98af88242 Clean up unnecessary code. 2022-07-01 20:56:11 -06:00
b81df6a720 silence compiler warnings 2022-07-01 21:26:06 -04:00
ae26b489dd fix typo 2022-07-01 21:25:57 -04:00
4012897bff whitespace fixes and clang-format 2022-07-01 21:19:12 -04:00
146b00c395 Merge pull request #3307 from lammps/fix-mdi-aimd-enhance
MDI package enhancements
2022-07-01 20:48:40 -04:00
dc1b7ba0a4 Parallelization and ij pair collapse. 2022-07-01 15:37:00 -06:00
f245a4313e Merge pull request #3327 from akohlmey/collected-small-fixes
Collected small fixes
2022-07-01 17:21:05 -04:00
cf49042fe6 Update Kokkos version in CMake 2022-07-01 14:13:08 -06:00
2d366ce220 add per-atom sp to extract() 2022-07-01 14:08:46 -06:00
2bfbd6fba1 Update Kokkos library in LAMMPS to v3.6.1 2022-07-01 13:17:50 -06:00
d385a9be9d finished debug of induce iterations 2022-07-01 13:13:57 -06:00
becd876166 small tweaks 2022-07-01 12:28:13 -06:00
27165f82b4 Fix urls and license 2022-07-01 12:09:48 -06:00
23ee2a97fa Whitespace 2022-07-01 11:24:50 -06:00
ae7215037d Finish porting pair MEAM to Kokkos 2022-07-01 11:20:51 -06:00
607ed68acd Merge branch 'develop' of https://github.com/lammps/lammps into kk_meam_release 2022-07-01 11:14:39 -06:00
957a8c85a9 formatting corrections and minor tweaks to the Argon viscosity howto 2022-07-01 09:26:23 -04:00
0157a7d0d3 make certain to switch to the expected source folder when building n2p2 lib 2022-07-01 05:49:24 -04:00
6a813bba69 restore bikflag parsing and initialization that was removed in commit 44436c0eb6 2022-07-01 04:36:49 -04:00
41bb5850b3 Fixed temperature in argon GK example 2022-07-01 00:36:43 -04:00
940cbe3133 Updated timestamp for local array 2022-07-01 00:36:37 -04:00
4ff683a3ca MPI may need to include multiple folders (e.g. on Ubuntu with OpenMPI) 2022-07-01 00:05:04 -04:00
36aead3877 Fix class name 2022-06-30 16:06:52 -06:00
79468f6d4f Fix inverted logic and minimize footprint. 2022-06-30 15:39:02 -06:00
3d939923b5 Fix flag name 2022-06-30 15:32:08 -06:00
0cd15ab927 Settings function for sw/angle/table 2022-06-30 15:24:33 -06:00
454c39ae21 Invert skipping flag logic. Update keyword and doc to match. 2022-06-30 14:21:11 -06:00
b6f7dd9df9 update googletest to version 1.12.1 2022-06-30 15:58:40 -04:00
ff56f75fca abort when there was an error writing to the dump file 2022-06-30 15:57:47 -04:00
e34e9aca48 improve consistency between CMake and GNU make build. Must explicitly link python when building a static mdi lib 2022-06-30 15:45:52 -04:00
419460f13b Note limitations on threebody in doc 2022-06-30 13:30:26 -06:00
d7c4a495ca Force lambda = 0 if threebody_flag is false 2022-06-30 12:10:17 -06:00
025d465ab7 more debugging on dipole induce 2022-06-30 11:44:31 -06:00
d1d51636a7 fix typo 2022-06-30 11:19:38 -06:00
8f524cde33 Merge branch 'fix-mdi-aimd-enhance' of github.com:lammps/lammps into fix-mdi-aimd-enhance 2022-06-30 11:17:19 -06:00
aebf53679e add Python/MDI info the examples/mdi/README 2022-06-30 11:17:13 -06:00
d327a4c512 whitespace 2022-06-30 05:57:52 -04:00
0ae6f1c30e Merge pull request #3322 from akohlmey/collected-small-fixes
Collected small fixes
2022-06-29 18:03:08 -04:00
7546955046 optimizations to input class for reading very long lines 2022-06-29 15:10:03 -06:00
533a56404a add more unit tests for boolean expressions 2022-06-29 16:45:28 -04:00
8d8f7983fb fix bug in recent bugfix 2022-06-29 16:45:11 -04:00
bb3cd71e77 Merge branch 'develop' into collected-small-fixes 2022-06-29 16:43:47 -04:00
0156efc70f Merge pull request #3319 from lammps/boolean-bug
Boolean bug fix
2022-06-29 15:26:11 -04:00
f273a28a2a whitespace 2022-06-29 12:26:16 -04:00
646fe885c2 Merge branch 'develop' into boolean-bug 2022-06-29 12:25:44 -04:00
137dc6243e whitespace 2022-06-29 12:25:15 -04:00
793069d8eb update and expand unit tests for if() command boolean evaluation 2022-06-29 12:24:43 -04:00
1fabd5a56b change boolean = single string to an error 2022-06-29 07:49:22 -06:00
8d272db37a whitespace 2022-06-29 05:14:04 -04:00
7317c5de38 Merge branch 'develop' into collected-small-fixes 2022-06-29 05:13:24 -04:00
7af48c3156 Merge pull request #3317 from stanmoore1/bugfixes
KOKKOS Bugfixes
2022-06-29 05:09:23 -04:00
9a05cd3e98 Fix gramatical errors 2022-06-28 16:59:32 -06:00
4db7f91c48 Use utils::logical() to parse arguments. 2022-06-28 16:52:57 -06:00
1dc71ef3e3 better error strings 2022-06-28 16:38:51 -06:00
e4e9b2e49a more consistency checks 2022-06-28 16:37:04 -06:00
e8c2dcc693 Fix doc example and doc note. 2022-06-28 16:25:35 -06:00
4a2182ae84 Rename threebody_on to threebody_flag 2022-06-28 16:22:25 -06:00
ae235b1ef5 Boolean expression corner case 2022-06-28 16:19:06 -06:00
1fe7fdc7d6 Add more missing Kokkos data movement 2022-06-28 15:04:10 -06:00
6549ba16bf debugging of dipole iterations 2022-06-28 13:35:49 -06:00
373c719f4f make compilation settings consistent with CMake 2022-06-28 15:22:54 -04:00
56e1207024 Add missing GPU <--> CPU data transfer in minimize Kokkos 2022-06-28 12:03:34 -06:00
03962ba0f4 fix spelling in MDI docs 2022-06-28 13:58:42 -04:00
56cb2f3077 update external library version and md5sum 2022-06-28 13:44:41 -04:00
141d09ab9b Merge branch 'develop' into fix-mdi-aimd-enhance
# Conflicts:
#	doc/src/fix_mdi_aimd.rst
2022-06-28 13:38:43 -04:00
7aabbba7ff whitespace 2022-06-28 13:37:33 -04:00
ae1a33aa5a update unit test 2022-06-28 13:36:49 -04:00
a279ab3860 Prevent view bounds error when a proc has no atoms 2022-06-28 11:32:48 -06:00
f497afa763 Small tweaks 2022-06-28 08:51:42 -06:00
192c80826b Fix small memory leak in SNAP 2022-06-28 08:51:23 -06:00
9bc1968e36 Add missing grow to Kokkos unpack_exchange 2022-06-28 08:51:07 -06:00
f65bc76326 Merge pull request #3305 from athomps/compute-grid-new
Compute grid for ML-SNAP
2022-06-28 09:00:38 -04:00
a9f3108f29 whitespace 2022-06-28 08:39:20 -04:00
b165c2ca08 add files to .gitignore after move to package 2022-06-28 08:39:12 -04:00
4097d295ce Skip three-body in OpenMP version 2022-06-28 01:37:39 -06:00
1d3f865d1b Initial changes to the doc 2022-06-28 00:00:15 -06:00
b1b580cc04 Final tidying up 2022-06-27 17:03:02 -06:00
a8ba6db961 Make the threebody loop optional 2022-06-27 17:02:39 -06:00
4de3f7ed69 intergrate references to dump cfg/uef into the dump command docs 2022-06-25 06:15:49 -04:00
74d1d391b5 fix comm issue with fix bitorsion 2022-06-24 18:14:07 -06:00
5023103dfb Added placeholder get_dgrad_length2() 2022-06-24 17:42:51 -06:00
2f1d320510 Cleaned up baseline code, prior to parallelization 2022-06-24 17:02:12 -06:00
1817b12332 Merge branch 'develop' into amoeba 2022-06-24 17:01:46 -06:00
1c709eb1ef udpate doc pages for ELEMENTS command 2022-06-24 15:31:09 -06:00
7a5410a085 support for >ELEMENTS MDI command 2022-06-24 15:09:15 -06:00
ad3387143a add crosscompiling with MPI support to plugins package 2022-06-24 06:51:29 -04:00
6273e593a3 add "package" target to support building a windows installer with NSIS 2022-06-24 01:20:33 -04:00
db079cd620 must set thirdparty download URL variable for downloading MPICH4Win 2022-06-23 22:27:04 -04:00
14d472d691 First 3 columns are reference forces and indices, instead of last 3 columns. 2022-06-23 16:30:53 -06:00
cf942e7d5f may check for MPI library Fortran support only if MPI is enabled 2022-06-23 15:54:04 -04:00
92ae5f656c Change docs. 2022-06-23 12:45:20 -06:00
8e3a1e84a6 More cleaning up. 2022-06-23 12:32:40 -06:00
2bc50791aa Clean up files. 2022-06-23 12:16:42 -06:00
19dcd9c623 Merge branch 'lammps:develop' into compute-snap 2022-06-23 14:05:11 -04:00
447c836629 Reverted in.snap.compute 2022-06-23 11:56:46 -06:00
7c44eac0a6 Added more to README and obtain MPI settings from lammps Python module 2022-06-23 11:43:14 -06:00
ae18e1e01c Merge pull request #3310 from akohlmey/next_patch_release
Update version strings for the next patch release
2022-06-22 16:26:46 -04:00
ad35bbcb65 Merge pull request #3309 from akohlmey/collected-small-fixes
More fixes and small changes for the stable release
2022-06-22 15:16:01 -04:00
1099199e93 remove any remap related documentation. add paragraph about file compatibility 2022-06-22 14:22:23 -04:00
2396c16026 Update example and docs. 2022-06-22 09:32:41 -06:00
c5999df303 remove dead code and silence compiler warning about it 2022-06-22 10:32:03 -04:00
9b8c19c1a5 correct docs about how to get synchronized timings 2022-06-22 10:24:56 -04:00
2fb3608462 update/correct contact info 2022-06-22 07:06:16 -04:00
37f056c455 get array and vector sizes from the avaiable APIs 2022-06-22 07:06:00 -04:00
49331be33e simplify 2022-06-22 07:05:30 -04:00
3f6add4c40 Merge branch 'fortran2_updates' of github.com:hammondkd/lammps into collected-small-fixes
# Conflicts:
#	examples/COUPLE/fortran2/LAMMPS-wrapper.cpp
#	examples/COUPLE/fortran2/LAMMPS-wrapper.h
2022-06-22 06:41:37 -04:00
c0b109f715 Fixed some typos and updated e-mail addresses in examples/COUPLE/fortran2 2022-06-21 20:53:45 -05:00
b0c673d856 updates from Karl Hammond to adjust his email and correct an error message 2022-06-21 20:37:20 -04:00
b0f4ef8a39 update docs for noremap option to read_restart 2022-06-21 20:19:13 -04:00
7d49ad5924 enable remap for restarting by default, add noremap option 2022-06-21 19:42:17 -04:00
f4342ea7e4 use new version of MDI lib and include Python support 2022-06-21 15:03:22 -06:00
6815b27cd5 step version strings for the next patch release 2022-06-21 08:52:11 -04:00
ad20e54638 fix typos 2022-06-20 23:19:00 -04:00
ec46510d2e add local extract_compute() tests 2022-06-20 23:07:01 -04:00
033af0c507 add unit test for extracting local vector and array via numpy 2022-06-20 18:48:50 -04:00
78129f9078 update embedded docs for LMP_SIZE_VECTOR update for extract_compute() 2022-06-20 18:23:20 -04:00
ac615059a7 update some linewraps for 100 col limit 2022-06-20 18:15:02 -04:00
ffc5b12c5f correct handling data of local computes which always needs to check rows and cols 2022-06-20 18:10:57 -04:00
3828c857f7 accept LMP_SIZE_VECTOR as alias for LMP_SIZE_ROWS with local computes 2022-06-20 18:10:19 -04:00
4881b232d3 whitespace 2022-06-19 16:28:55 -04:00
f632cff8f2 remove excess text and re-apply clang-format 2022-06-19 16:11:37 -04:00
de4558aa07 Tweaked error messages 2022-06-19 09:58:01 -06:00
063fc47f64 tweak to avoid test failure on FreeBSD 2022-06-19 06:38:14 -04:00
f831a776be correct python example 2022-06-18 22:25:32 -04:00
eb69bb28b8 add missing style index entries 2022-06-17 21:52:57 -04:00
b3fea1cb71 make spellchecker happy 2022-06-17 19:48:09 -04:00
34e7fa92ab simplify using fmt 2022-06-17 19:44:13 -04:00
cbc7669a4f apply clang-format 2022-06-17 19:37:26 -04:00
3ff998fdb0 Restricted style string matching 2022-06-17 17:31:58 -06:00
44436c0eb6 Cleaned up programming style 2022-06-17 17:24:34 -06:00
86f0a62ee0 Cleaned up programming style 2022-06-17 17:16:02 -06:00
0e6bbf8dff Remove files from other branch. 2022-06-17 14:16:03 -06:00
b46773e398 add support for writing a dump file footer 2022-06-17 15:53:04 -04:00
06ffed1965 update doc pages 2022-06-17 12:11:13 -06:00
effae2c01a Added compute snap descriptor gradient example. 2022-06-17 12:05:05 -06:00
9fd6bde0ed enable and apply clang-format 2022-06-17 13:47:23 -04:00
d9646ee537 remove dead code 2022-06-17 13:25:40 -04:00
5b9c4069e9 make headers clang-format compatible and use override keywords 2022-06-17 13:25:29 -04:00
378511345a pass ID list to create_atoms from MDI 2022-06-17 11:06:22 -06:00
dac99e462f update log files 2022-06-17 13:04:25 -04:00
db3363649a dated example files 2022-06-17 11:00:59 -06:00
ec411df9ec Merge branch 'develop' into compute-grid-new 2022-06-17 12:51:02 -04:00
185d5cdc0f update .gitignore 2022-06-17 12:50:54 -04:00
f27e9941ae fix homepage urls, tabs & trailing whitespace, remove errors from headers 2022-06-17 12:48:24 -04:00
e201d6e77e Delete files 2022-06-17 12:41:48 -04:00
fe1feb58d8 Merge pull request #3306 from akohlmey/makewheel-fix
Fix issues with building a wheel file during 'make install-python'
2022-06-17 11:58:18 -04:00
deac9f05b1 move the created wheel to the build folder at the end 2022-06-17 08:05:28 -04:00
18f9e5836b support installing the built wheel into virtual environment, if active 2022-06-17 06:52:25 -04:00
21b3020a97 make the "makewheel.py" script independent from the activate_this.py script
The "activate_this.py" script only seems to be included in virtualenv,
but not venv. Now we implement its effect directly.
2022-06-17 00:10:06 -04:00
a7c5b5e8fd Finsished documentation 2022-06-16 20:22:40 -06:00
f12e8f932a Eliminated problem with unassigned coordinates in grid array 2022-06-16 18:20:46 -06:00
1f35065afc change to 9 element stress tensor 2022-06-16 17:38:57 -06:00
4dbecbba51 more work on examples 2022-06-16 16:07:40 -06:00
dd3aab0c66 Merge pull request #3300 from lammps/doc-package-update
Update package affiliation for Zhen Li
2022-06-16 18:04:45 -04:00
58152cdc68 Merge pull request #3304 from lammps/dependabot/github_actions/actions/cache-3
Bump actions/cache from 2 to 3
2022-06-16 17:48:30 -04:00
04bb611bf2 Merge pull request #3303 from lammps/dependabot/github_actions/actions/setup-python-4
Bump actions/setup-python from 2 to 4
2022-06-16 17:21:53 -04:00
2fc0a44ab2 Bump actions/cache from 2 to 3
Bumps [actions/cache](https://github.com/actions/cache) from 2 to 3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-16 19:41:23 +00:00
ba4cbf7055 Bump actions/setup-python from 2 to 4
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 2 to 4.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v2...v4)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-16 19:41:20 +00:00
f75115d801 Merge pull request #3301 from turrisxyz/Dependabot-GitHub-Actions
Included githubactions in the dependabot config
2022-06-16 15:40:59 -04:00
0a5d921f3f update affiliation in source code as well 2022-06-16 15:37:55 -04:00
535a5211fc More cleanup 2022-06-16 10:33:54 -06:00
e30f86c2ff Removed a few more unnecessary member data 2022-06-16 08:22:51 -06:00
483e3cf049 Eliminated global storage for grid/local 2022-06-15 20:28:22 -06:00
70f836e275 Updated to latest LAMMPS 2022-06-15 19:53:37 -06:00
cdc0b48a0b chore: Included githubactions in the dependabot config
This should help with keeping the GitHub actions updated on new releases. This will also help with keeping it secure.

Dependabot helps in keeping the supply chain secure https://docs.github.com/en/code-security/dependabot

GitHub actions up to date https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot

https://github.com/ossf/scorecard/blob/main/docs/checks.md#dependency-update-tool
Signed-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com>
2022-06-16 01:33:01 +00:00
86034a6277 Merge remote-tracking branch 'origin/develop' into compute-grid-new 2022-06-15 19:04:50 -06:00
9d5f4bf1e9 Updated to include switchinnerflag support, anticipating merging in the latest LAMMPS 2022-06-15 19:02:14 -06:00
8004f8bf0f Removed unneeded member functions and data 2022-06-15 18:59:48 -06:00
9ca91bfe80 Created two simple examples of compute sna/grid and sna/grid/local 2022-06-15 18:14:27 -06:00
12d6983c9b more example bug fixes 2022-06-15 17:08:54 -06:00
9840aad703 Merge pull request #3299 from akohlmey/fix-codeql-workflow
Update GitHub workflow files
2022-06-15 10:49:58 -04:00
1403a0dd94 update affilication for Zhen Li 2022-06-15 08:22:59 -06:00
9842879db1 fix typos 2022-06-15 08:14:53 -04:00
a5745d925a new examples and debugging code changes 2022-06-14 17:29:01 -06:00
03c0b4ae27 upgrade action versions 2022-06-14 19:08:28 -04:00
728e4a5910 add permissions for codeql action 2022-06-14 19:08:01 -04:00
5060a8b8a5 Make dB/dR indices start at zero in compute snap array. 2022-06-14 16:31:31 -06:00
cfe5025495 Merge pull request #3296 from akohlmey/collected-small-changes
Collected small changes for the next release
2022-06-14 18:18:28 -04:00
927287e3e5 fixes from clang-tidy 2022-06-14 14:06:11 -04:00
215552eb56 typo 2022-06-14 12:39:03 -04:00
34863c6c97 updates to fix_mdi_qm for multiple sims 2022-06-14 10:14:36 -06:00
35a48f273b rename local variable shadowing a global one 2022-06-14 10:45:31 -04:00
2028c68bec remove unused imports 2022-06-14 10:45:05 -04:00
6abb316dba avoid resource leak 2022-06-14 10:36:21 -04:00
7a64d1358e remove unused module 2022-06-14 10:36:11 -04:00
f423c32f42 reaxff delete species docs 2022-06-14 01:23:36 -04:00
fbf9f62eef add credits 2022-06-14 01:18:46 -04:00
716a012dbe add keyword for 'delete species list' option
also add check that only one sub-keyword is used
2022-06-14 00:51:53 -04:00
26dcb649bb remove redundant check 2022-06-13 22:10:51 -04:00
423c511d7a use explicit scoping in destructor 2022-06-13 22:10:43 -04:00
b44d769024 Merge branch 'collected-small-changes' of https://github.com/akohlmey/lammps into collected-small-changes 2022-06-13 22:01:54 -04:00
ea48dd3019 avoid file pointer leakage in dump reader base class. 2022-06-13 22:01:30 -04:00
0f5ae6d48c remove references to "plugin" options from fix mdi/aimd 2022-06-13 22:00:36 -04:00
c53e53d701 must set suffix variable only when suffixflag is true 2022-06-13 17:47:20 -04:00
407e015c80 more doc page edits for enhanced fix mdi/qm command 2022-06-13 15:46:58 -06:00
33f4bb525b remove redundant condition 2022-06-13 17:43:40 -04:00
9098a01e13 Merge pull request #14 from weinbe2/kk_meam_release
Partial progress on a Kokkos port of MEAM
2022-06-13 10:30:26 -06:00
9ac17d2ff8 Commit of Pair MEAM WIP Kokkos port. Currently compiles but does not work. 2022-06-13 09:19:24 -07:00
ef48fd2d9c remove unused imports 2022-06-12 23:36:43 -04:00
8346ae2565 more edits 2022-06-10 15:32:41 -06:00
ed702aab05 update for renamed style names 2022-06-10 13:00:36 -04:00
82185046ae Merge pull request #3293 from stanmoore1/compute_ave_sphere_atom
Fix issues in compute ave/sphere/atom
2022-06-10 12:57:35 -04:00
ac48852b2d edits to 1st paragraph of description 2022-06-10 08:30:23 -06:00
204bba6ff7 new options for fix mdi/aimd 2022-06-10 08:17:14 -06:00
41a34a4988 reaxff/species delete keyword 2022-06-09 23:22:16 -04:00
495418158a Clarify doc page 2022-06-09 15:51:31 -06:00
5d7b1f3ebb fix small issues 2022-06-09 15:36:17 -06:00
80727e47f4 Add attribution 2022-06-09 15:31:48 -06:00
9be6e2a064 Use COM velocity 2022-06-09 15:29:40 -06:00
7f1e76b7a5 Don't compute count twice 2022-06-09 14:53:44 -06:00
302287e4d0 debug comment for extending preconditioner neigh list 2022-06-09 14:19:53 -06:00
8427697caf Merge branch 'develop' into amoeba 2022-06-09 13:19:12 -06:00
174219383a Merge pull request #3290 from akohlmey/collected-small-changes
Collected small bugfixes and changes and plugin building improvements
2022-06-08 20:13:22 -04:00
1acfb78b3a Merge pull request #3295 from stanmoore1/kk_reax_tagint
Fix int32 overflow in Kokkos ReaxFF
2022-06-08 18:29:59 -04:00
483396c757 Merge branch 'collected-small-changes' of https://github.com/akohlmey/lammps into collected-small-changes 2022-06-08 18:06:59 -04:00
68a9db0950 fix typos 2022-06-08 17:07:08 -04:00
5fca9f4d1f update mathjax version with bugfix release 2022-06-08 17:04:26 -04:00
b6e0d76123 fix some docs formatting issues 2022-06-08 12:47:30 -04:00
7769a8e0de update ROCm to version 5.1.3 consistently 2022-06-08 12:18:17 -04:00
55fdb7f12a update GPU container definitions for CUDA 11.7 and singularity -> apptainer 2022-06-08 08:19:54 -04:00
42694ba640 reduce warnings when compiling with KOKKOS 2022-06-07 19:39:36 -04:00
d7680dd785 Fix int32 overflow in Kokkos ReaxFF 2022-06-07 10:11:39 -06:00
96b5a706da apply clang-format 2022-06-06 21:39:10 -04:00
880382e26a Compute snap array contains force indices in last columns. 2022-06-06 17:43:47 -06:00
67d367e714 Fix copy/paste bug 2022-06-06 15:28:40 -07:00
7e77b61042 simplify 2022-06-06 15:23:03 -07:00
5c68fe6e81 Fix issues in compute ave/sphere/atom 2022-06-06 15:15:47 -07:00
ce646a3859 Working derivative extraction. 2022-06-06 15:26:52 -06:00
8f773be2d6 must open files for xtc dump in binary mode 2022-06-06 15:01:25 -04:00
dcbc5256fa additional OpenMP suppressions for newer GCC 2022-06-05 12:37:03 -04:00
b338781f88 cosmetic 2022-06-05 06:52:15 -04:00
b0d2cc3052 we can build a plugin instead 2022-06-04 19:23:32 -04:00
3af9546b94 provide README files with pointers to the developer info for plugins
also add a paragraph with information about the ML-PACE plugin to the
plugin developer info docs.
2022-06-04 11:49:33 -04:00
a232bd3302 refactor LAMMPS plugin building to share more code and to add a demo for ML-PACE 2022-06-04 10:59:25 -04:00
3beb071d38 make plugin compilation settings with MSVC consistent and more compile specific 2022-06-04 05:15:14 -04:00
0dc486c90b fix bug introduced during stringification 2022-06-04 05:00:28 -04:00
fa9ad10bc1 add missing line to read_data docs about atom style dielectric 2022-06-04 05:00:12 -04:00
25c74652e3 remove bogus tags 2022-06-04 04:25:13 -04:00
587438eb30 fix typo in read_data add merge example 2022-06-03 09:14:34 -04:00
7c4d77f776 tweak epsilon for portability 2022-06-03 07:36:25 -04:00
f9b5679c00 remove unused function arguments 2022-06-03 07:16:19 -04:00
f68247ad6a add ML-PACE and PLUGIN packages to be compiled with MinGW cross-compilers 2022-06-03 05:10:00 -04:00
ceb9466172 Merge pull request #3283 from akohlmey/next_patch_release
Step version strings for next patch release
2022-06-02 21:22:16 -04:00
2da61d69a1 Merge pull request #3289 from akohlmey/collected-small-changes
A few last minutes updates and fixes for the next patch release
2022-06-02 20:16:39 -04:00
31f7798720 Merge pull request #3278 from yury-lysogorskiy/feature/ml-pace-multispecies
ML_PACE package hybrid support and small updates
2022-06-02 19:27:53 -04:00
aad4d093b8 correctly handle the situation that the build folder may have multiple libs downloaded 2022-06-02 18:18:32 -04:00
ad97d18ac7 Merge pull request #3286 from Colvars/update-colvars-lepton
Update Colvars to 2022-05-24 and copy of Lepton library
2022-06-02 18:09:05 -04:00
4913c72795 Merge pull request #3288 from olavgal/clean_stress_cartesian
Clean stress cartesian
2022-06-02 17:19:19 -04:00
2a054c17be - set species type for NULL atom type to -1. species_type=-1 value will not reach ACE Evaluator::compute_atom, but if it will ,then error will be thrown there
- updating lib pace MD5SUM (for both make and cmake installation scenario), but use same tag name v.2021.10.25.fix2 (add override keyword to ACERadialFunctions, add check for species_type==-1, fix yaml_cpp CMakeLists.txt)
2022-06-02 23:01:54 +02:00
260a5f4d52 update false positives 2022-06-02 14:39:08 -04:00
90add188cb Merge pull request #3279 from schererc/develop
Addition of two new MANYBODY pair styles (sw/angle/table and threebody/table)
2022-06-02 14:24:44 -04:00
9d252fe0d2 remove error docs and apply clang-format 2022-06-02 12:57:45 -04:00
a74f64a737 do not allow per-atom arrays to shrink 2022-06-02 12:55:47 -04:00
fc468accf5 clang-format and removed more unused variables 2022-06-02 18:34:48 +02:00
954700dea5 Updated memory calculation and removed unused variables 2022-06-02 18:28:04 +02:00
2742517a4f Clean up of stress/cartesian 2022-06-02 18:26:09 +02:00
7a02043f18 update docs to list examples and include links to the tutorials 2022-06-02 12:11:10 -04:00
04586e634e Remove trailing whitespace from Lepton per suggestion from @akohlmey 2022-06-02 11:52:39 -04:00
6c375ffade Update PDF Colvars manual 2022-06-02 11:48:19 -04:00
3a1423dc48 Update Colvars to 2022-05-24 and copy of Lepton library
One bugfix for the Colvars library in the ABF method, and update of the copy
of the Lepton library as per the OpenMM repository.

List of relevant PR.

- 483 Update Lepton via patching procedure
  https://github.com/Colvars/colvars/pull/483 (@giacomofiorin)

- 482 Fix integer overflow in log_gradient_finite_diff and gradient_finite_diff
  https://github.com/Colvars/colvars/pull/482 (@HanatoK)
2022-06-02 11:24:04 -04:00
5a4688ed44 Update pair_pace.cpp 2022-06-02 09:05:15 -06:00
fdc8bcfbfc I removed the comment attributed to me, it is now outdated. 2022-06-02 09:03:16 -06:00
5300a5aa58 Merge remote-tracking branch 'github/amoeba' into amoeba-ak
# Conflicts:
#	src/AMOEBA/pair_amoeba.h
2022-06-02 09:10:12 -04:00
e214013a91 tweak epsilon to avoid failure on FreeBSD 2022-06-02 07:53:41 -04:00
8e415f0c00 try to enforce QUIP submodule update strategy 2022-06-01 22:26:35 -04:00
c028dcbdf7 small tweak 2022-06-01 22:14:04 -04:00
e36620059d simplify, apply clang-format 2022-06-01 22:08:35 -04:00
866391e830 modify so pair style pace will work as pair style hybrid substyle 2022-06-01 21:56:13 -04:00
9f021ba490 whitespace 2022-06-01 21:54:33 -04:00
c0bd4185f8 Merge branch 'develop' into feature/ml-pace-multispecies 2022-06-01 21:10:59 -04:00
30ae7fe66b Merge pull request #3285 from akohlmey/clang-format-clang-tidy
Apply clang-tidy and clang-format to update/modernize/simplify recently modified code
2022-06-01 19:04:43 -04:00
bf9b79b734 Merge pull request #3284 from stanmoore1/kk_3280
Port changes in #3280 to Kokkos
2022-06-01 18:54:58 -04:00
429cd204c4 bugfix in dipole neigh list memory usage 2022-06-01 16:26:25 -06:00
4bf90988e2 Fix bug when comparing equal tags 2022-06-01 14:52:07 -06:00
b45117655e move patch release date 2022-06-01 16:13:45 -04:00
217b070204 add unit tests 2022-06-01 15:31:49 -04:00
f29c45f09a Merge branch 'amoeba' of github.com:lammps/lammps into amoeba 2022-06-01 13:19:59 -06:00
ea3467ab32 benchmarking of replicated systems 2022-06-01 13:19:47 -06:00
7d31544cc2 simplify and avoid memory access and leak issues in parallel 2022-06-01 15:04:28 -04:00
8a055fdcfa merge with third manybody table example and provide updated log files 2022-06-01 15:04:07 -04:00
b9b0d7207c apply clang-format 2022-06-01 14:24:23 -04:00
edea4fa9a2 fix memory allocation/communication issues. avoid memory leaks. 2022-06-01 14:23:30 -04:00
8e9071b01f move and update threebody/table examples 2022-06-01 14:22:53 -04:00
ee6e18f08e Merge branch 'develop' into schererc/develop 2022-06-01 12:07:06 -04:00
b85b3e1f4c fix doc file names and links 2022-06-01 12:06:56 -04:00
95a979c657 examples/PACKAGES: rename pair_sw_3b_table to pair_sw_angle_table
including all input and documentation files
2022-06-01 16:34:10 +02:00
e8d9bf0507 examples/PACKAGES: renamed pair_3b_table to pair_threebody_table
including all input and documentation files
2022-06-01 16:30:37 +02:00
3a19b1eb4b Update pair_style.rst
pair_style.rst: update due to name changes from 3b/table to threebody/table and sw/3b/table to sw/angle/table
2022-06-01 16:16:13 +02:00
f6fab8365a Update Commands_pair.rst
Commands_pair.rst: update due to name change from 3b/table to threebody/table and sw/3b/table to sw/angle/table
2022-06-01 16:14:37 +02:00
64d67f7604 Update pair_sw_angle_table.rst
pair_sw_angle_table.rst: minor correction
2022-06-01 16:12:13 +02:00
c1e301ac1a Update pair_3b_table.rst
changed documentation and file name from pair style 3b/table to threebody/table
2022-06-01 16:11:47 +02:00
a833baac80 Update pair_sw_angle_table.cpp
Minor correction in pair_sw_angle_table.cpp
2022-06-01 16:04:09 +02:00
187ccdd222 Update and rename pair_3b_table.cpp to pair_threebody_table.cpp
changed pair 3b/table to pair threebody/table including name of .cpp file
2022-06-01 16:03:06 +02:00
5756dedfed Update and rename pair_3b_table.h to pair_threebody_table.h
changed pair style and file name of header file from 3b/table to threebody/table
2022-06-01 15:52:46 +02:00
ebce66389e Update and rename pair_sw_3b_table.rst to pair_sw_angle_table.rst
changed documentation and file name from sw/3b/table to sw/angle/table
2022-06-01 14:24:40 +02:00
8dfa4a8682 Update and rename pair_sw_3b_table.cpp to pair_sw_angle_table.cpp
Changed .cpp file for pair style sw/3b/table to sw/angle/table
2022-06-01 14:20:30 +02:00
25f24fbab1 Update and rename pair_sw_3b_table.h to pair_sw_angle_table.h
Renamed header file from sw/3b/table to sw/angle/table
2022-06-01 14:11:32 +02:00
9da3dd796a delete undesired default members instead of making them inaccessible 2022-06-01 02:30:25 -04:00
5abb6c76af small tweak 2022-06-01 02:13:02 -04:00
ef6c48dad7 Whack tabs 2022-05-31 14:53:17 -06:00
b675372d99 Use MIN_SINE and add comment 2022-05-31 14:44:18 -06:00
234b9f180a use clang-tidy and clang-format to update/modernize/simplify code 2022-05-31 14:46:57 -04:00
3b4e698421 Merge branch 'develop' of github.com:lammps/lammps into kk_3280 2022-05-31 12:38:03 -06:00
77835a4258 Port changes in #3280 to Kokkos 2022-05-31 12:36:04 -06:00
7c0c7ce93c Merge pull request #3281 from akohlmey/collected-small-changes
Collected small changes for the next patch release
2022-05-31 13:10:35 -04:00
b8599ccb42 fix small local vs. ghost atom access inconsistency in pair style bop 2022-05-31 11:52:16 -04:00
de5c2629ac small tweak 2022-05-31 06:53:19 -04:00
3f332ab0c1 step version strings for next patch release 2022-05-31 06:51:13 -04:00
cc86e9e8a8 remove windows+gcc test (for now) 2022-05-29 19:56:39 -04:00
fa79a66734 feof() returns non-zero not necessarily 1 2022-05-29 19:53:11 -04:00
562cd12d82 revert github action build to LAMMPS repo and develop branch 2022-05-29 15:04:41 -04:00
90730f0d3c update windows version history 2022-05-29 02:01:21 -04:00
5318ce9b74 compute snapneigh gets atom and neighbor indices 2022-05-28 20:08:58 -06:00
4c36c79652 remove feature for automatic jpeg/png/zlib library download and build
this is a post-stable feature and would require a general rewrite of offline processing
2022-05-28 15:20:22 -04:00
d4f1b702a2 Working derivative extraction. 2022-05-28 10:31:45 -06:00
81c327edd8 add missing override. remove redundant functionality and disable warnings differently
this removes an inconsistent overload due to mismatch of arguments
2022-05-28 11:56:26 -04:00
86787cfc6c whitespace and clang-format for headers 2022-05-28 11:28:13 -04:00
9f7f043e83 whitespace 2022-05-28 11:23:45 -04:00
e8dfb2fc38 fix off-by-one bug 2022-05-28 09:23:08 -04:00
a8eb248b1e reduce compiler warnings. avoid uninitialized data access. consolidate labeling 2022-05-28 09:19:35 -04:00
14a9d34838 fix compilation issues 2022-05-28 05:57:06 -04:00
97fab45f7e Merge branch 'develop' into amoeba-ak 2022-05-28 05:24:02 -04:00
d4904dd5fc Merge branch 'amoeba' into amoeba-ak
# Conflicts:
#	src/AMOEBA/amoeba_dispersion.cpp
#	src/AMOEBA/angle_amoeba.cpp
#	src/AMOEBA/pair_amoeba.cpp
#	src/pair.h
2022-05-28 05:23:19 -04:00
d0edd7129c update workflows 2022-05-28 04:55:27 -04:00
3615639bdd Check for a working internet connection.
With this check we only do automatic downloads if the check passes
2022-05-28 04:55:10 -04:00
e2dd08a93e Better handle file- or path-names with spaces 2022-05-28 04:55:10 -04:00
5f811f852f stop with detailed parser error message with incorrect potential tables 2022-05-28 04:45:52 -04:00
886ad8359e use venv instead of virtualenv 2022-05-28 04:45:52 -04:00
0b3efa4dd6 set masses from BOP potential files, update unit tests accordingly 2022-05-28 04:45:52 -04:00
d7c1e54538 address some more NOTE comments 2022-05-27 17:30:20 -06:00
e91d1dba98 Merge pull request #3280 from athomps/reaxff-torsion-zero-sine
Eliminated bad torsion forces for sin(theta) = 0
2022-05-27 12:11:46 -04:00
cfb3d6bdf8 simplify, remove inactive code, plug memory leaks 2022-05-27 07:48:00 -04:00
3ecb6bb54a Update pair_3b_table.cpp
Added (forgotten) line "u=pm->mltable->efile[itable];" to compute energy due to read in table values
2022-05-27 12:34:53 +02:00
49a75d576e Eliminated bad torsion forces when when sin(theta) is zero 2022-05-26 17:28:05 -06:00
ab2b7a2c01 Merge pull request #3275 from akohlmey/collected-small-changes
Collected small changes and fixes
2022-05-26 18:07:43 -04:00
f09e4c7583 remove check on box size from pair style bop 2022-05-26 16:56:43 -04:00
587999fabb mention that MSM does not support shrink-wrap 2022-05-26 15:33:23 -04:00
f0f6660050 join lines 2022-05-26 12:15:27 -04:00
d9b560e70b properly integrate into manual 2022-05-26 12:08:21 -04:00
2a7407aa38 programming style updates 2022-05-26 11:41:51 -04:00
48f477e4b4 Update pair_sw_3b_table.rst
Small correction
2022-05-26 15:19:41 +02:00
e890e5718e examples/PACKAGES/pair_3b_table: added example for new pair style 3b/table 2022-05-26 14:45:22 +02:00
b8dfb23ede examples/PACKAGES/pair_sw_3b_table/README: corrections in the text 2022-05-26 14:32:12 +02:00
18c9960db0 examples/pair_sw_3b_table/README: minor correction 2022-05-26 14:25:24 +02:00
f9fbc7f94b doc/src/pair_3b_table.rst: documentation for added pair style 3b/table 2022-05-26 14:17:36 +02:00
27524742e5 src/MANYBODY/pair_3b_table.h, src/MANYBODY/pair_3b_table.cpp: added pair style for generic fully tabulated three-body forces which has been developed for simulations with Kernel-based machine learning potentials. 2022-05-26 14:16:26 +02:00
770454cb8b examples/PACKAGES/pair_sw_3b_table: added example for new pair style sw/3b/table 2022-05-26 14:00:06 +02:00
0e114b1041 doc/src/pair_sw_3b_table.rst: documentation for added pair style sw/3b/table 2022-05-26 13:35:40 +02:00
1cfba3d8bb src/MANYBODY/pair_sw_3b_table.h, src/MANYBODY/pair_sw_3b_table.cpp: added pair style sw/3b/table which is a modification of the SW pair style with tabulated angular potentials 2022-05-26 13:21:47 +02:00
1ae62793eb src/MANYBODY/pair_sw.h: made read_file(char *) virtual to allow overriding 2022-05-26 13:17:45 +02:00
dba9fdb1ef Merge branch 'develop' into collected-small-changes 2022-05-26 06:37:24 -04:00
2085c10002 update version of lib-pace to v.2021.10.25.fix2 2022-05-25 17:56:24 +02:00
f6680861a0 BUGFIX: bad array length: initialize maximum number of neighbours with max_jnum=0 2022-05-25 17:27:12 +02:00
7c2a548015 Merge pull request #3277 from erozic/feature-pylammps-verbose
Verbose object-level option for PyLammps
2022-05-25 10:57:58 -04:00
0a8b4c5142 Hotfix for triclinic calculations 2022-05-25 15:27:27 +02:00
3ee209d031 update singularity definition for ubuntu22.04LTS
This now has the changes required to include the openkim-api package
2022-05-25 06:35:08 -04:00
75c0287024 modify example input and output files 2022-05-24 16:59:27 -06:00
97eb6c195f updated examples 2022-05-24 16:49:30 -06:00
ed0f53cfde add citations to doc page, address more NOTE comments 2022-05-24 16:44:06 -06:00
43048811dd Build dbidrj array. 2022-05-24 15:33:40 -06:00
c6c0b269ec Merge pull request #3276 from shankar1729/develop
Fixed TIP4P handling in PPPM slab correction.
2022-05-24 17:20:42 -04:00
59e0103430 Added EPSILON to subdomain check 2022-05-24 17:00:41 +02:00
1aaa9ca4ae Added documentation for verbose option 2022-05-24 12:02:34 +02:00
b66702c285 Added verbose class option + removed empty output lines 2022-05-24 11:37:44 +02:00
43b57b8aa5 update unit test reference data 2022-05-23 20:14:10 -04:00
ef80bb194a Fixed TIP4P handling in PPPM slab correction.
Overridded the slabcorr() function to handle the charge being on the TIP4P "M" site in the dipole calculation (and corresponding force correction). This is important for any long-range electrostatics in aqueous interfaces with the TIP4P model.
2022-05-23 17:28:32 -04:00
3662d998ee fix typo + cut-n-paste error 2022-05-23 11:53:58 -04:00
bead819070 changes missing from the previous commit 2022-05-23 11:37:00 -04:00
b461a49eee use _EXECUTABLE consistently instead of _BINARY 2022-05-23 11:14:17 -04:00
9f7833668a whitespace 2022-05-22 18:15:10 -04:00
0069c4b562 update docs for automatic jpeg/png/zlib library download and build with CMake 2022-05-22 18:10:26 -04:00
46df8abe75 rename jpeg cmake file for consistency 2022-05-22 17:49:54 -04:00
3c3c1377c8 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-05-22 17:47:58 -04:00
d905d3fbf5 reorganize build settings and presets 2022-05-22 17:46:12 -04:00
1959cd7037 download, build, and link missing png and zlib libraries with CMake 2022-05-22 17:45:42 -04:00
7d3d986d18 download, build, and link a missing jpeg library with CMake 2022-05-22 14:03:20 -04:00
cd8bef3b0b enable and apply clang-format 2022-05-22 07:04:35 -04:00
9a973e67fa enable and apply clang-format 2022-05-22 06:46:24 -04:00
b407b2f239 apply clang-format 2022-05-21 23:35:47 -04:00
93692ce308 Improved Windows and Visual Studio version detection
This now uses the CurrentBuild key to detect the Windows version and only falls back to product name, if that fails.
This is needed because Windows 11 reports itself as Windows 10 in the product name key.
2022-05-21 23:33:13 -04:00
007588f9cb use GZIP executable variable name consistently 2022-05-21 18:56:58 -04:00
e3e849b266 skip compressed file format tests if gzip executable is not found 2022-05-21 07:37:25 -04:00
18df50356e Merge pull request #3273 from stanmoore1/kk_mem
Initial refactor of view allocation in Kokkos package
2022-05-20 16:34:28 -04:00
c3ce77bc8c improve energy scaling sanity checks 2022-05-20 16:33:46 -04:00
2b001f9505 Fix subdomain check for triclinic 2022-05-20 13:21:55 -06:00
2c5ce83d59 must set Output::next_dump_any to current step with rerun 2022-05-20 09:27:16 -04:00
7eb926c853 clarify the description of pair style none
explain that pair style none is effectively deleting any existing
pair style and that communication and neighbor list cutoff are affected.
update those explanations for changes to LAMMPS that allow adjusting
those not just with the neighbor list skin.
Also add that pair_coeff must not be used.
2022-05-20 07:14:05 -04:00
08b1034d54 enable and apply clang-format 2022-05-20 07:12:25 -04:00
a16974ca48 enable and apply clang-format 2022-05-20 06:51:36 -04:00
21c2f8a74b fix miscalculated example 2022-05-20 01:06:21 -04:00
814daf7f4f fix cut-n-paste error 2022-05-20 01:06:09 -04:00
bfb126ec7c make neighbor list searches optionally check for the request ID 2022-05-19 23:37:55 -04:00
07e93a643a spelling 2022-05-19 23:36:54 -04:00
13fc4f3588 must install wheel package before all other packages 2022-05-19 23:07:12 -04:00
36d091baeb fix underline 2022-05-19 23:06:54 -04:00
4801fa00f8 update MathJax to latest bugfix release 2022-05-19 22:53:48 -04:00
872e4de6ab Rolled back the Modine transpose 2022-05-19 23:21:15 +02:00
75df9d4f2c Merge pull request #3271 from akohlmey/collected-small-changes
Collected small changes and fixes
2022-05-19 13:27:28 -04:00
a9431208a2 Use c++11 variadic magic, suggested by @weinbe2 2022-05-19 10:35:10 -06:00
7b0c7c04ed address sphinx issues and make command list consistently list all min styles 2022-05-19 12:21:06 -04:00
2138aea01f Merge branch 'two-command-tables' into collected-small-changes 2022-05-19 12:16:37 -04:00
7e75b7bff5 whitespace 2022-05-19 12:16:31 -04:00
5990241fbe refactor min_style spin doc page 2022-05-19 09:13:47 -06:00
d8d6884def Remove use_count check, reduce memory use in ReaxFF 2022-05-19 09:10:20 -06:00
eb4c1cd14f update attempt to hide hwloc pci bus warnings 2022-05-19 07:28:57 -04:00
361e303177 fix cut-n-paste error 2022-05-19 04:14:31 -04:00
898eda794c minor updates 2022-05-19 00:06:11 -04:00
5ac8e5639a more information about compiling LAMMPS on windows 2022-05-19 00:06:00 -04:00
cb2126f313 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-05-18 23:21:52 -04:00
0c73c9307f Add configurations for Intel Compilers on Windows 2022-05-18 23:20:57 -04:00
c0a8458d89 remove unused class members 2022-05-18 22:06:31 -04:00
b5830aae83 suppress excessive warnings and undesired aborts with Intel LLVM compiler 2022-05-18 21:43:09 -04:00
06ad119844 Initial refactor of view allocation in Kokkos package 2022-05-18 17:15:36 -06:00
fa6c81849b split Command table into two tables 2022-05-18 16:26:58 -06:00
15eebd43b9 address some NOTE comments 2022-05-18 15:47:43 -06:00
d323b7817d put back some whitespace 2022-05-18 14:59:15 -04:00
eb3ee96b9c also apply 2 atom minimum to balance() and packing atom IDs 2022-05-18 14:22:43 -04:00
bfd6efcedb no need to sort dump if there are less than 2 atoms 2022-05-18 13:48:06 -04:00
c16f40eb7c don't enable OpenMP together with CUDA for KOKKOS by default 2022-05-18 12:23:38 -04:00
acbeae075a no need to suppress nvcc warnings about pragmas with Clang as host compiler 2022-05-18 12:17:06 -04:00
2b51a92231 error check for per-atom eng/virial request 2022-05-18 10:13:56 -06:00
df2ecf5bf8 timings, energy, virial tallying 2022-05-18 08:49:31 -06:00
4f45ae2ef6 improve support for intel compilers on windows 2022-05-18 09:14:18 -04:00
5559491d7b add missing overrides 2022-05-18 09:13:52 -04:00
ba0efbef31 include presets for intel compiler names on windows 2022-05-18 09:13:37 -04:00
7646592f05 recognize the new LLVM based intel compiler as intel compiler 2022-05-18 08:54:26 -04:00
02908f0468 modernize MKL FFT interface 2022-05-18 08:42:40 -04:00
6475d4b956 Skip Fortran unittests if no Fortran MPI support is found 2022-05-18 07:16:16 -04:00
d54f97736e whitespace 2022-05-18 06:32:52 -04:00
1466620750 update googletest to the latest github commit 2022-05-18 06:09:42 -04:00
baa48946e5 add comment to please CodeQL 2022-05-18 00:56:10 -04:00
e7b9d03573 crank up epsilon for tip4p/cut styles some more 2022-05-18 00:28:42 -04:00
d8b37601a8 Merge pull request #3262 from akohlmey/collected-small-changes
Collected small changes and fixes
2022-05-18 00:11:05 -04:00
d94bcd043b enforce using a single thread with Kokkos and SNAP or PACE 2022-05-17 23:42:24 -04:00
15a727a7ff avoid segfaults with Kokkos threads 2022-05-17 23:41:46 -04:00
e94275391c Merge branch 'develop' into collected-small-changes 2022-05-17 22:10:15 -04:00
935c9a02d7 Merge pull request #3267 from athomps/born-rotated
Added Python wrapper that handles rotations to and from LAMMPS frame
2022-05-17 19:52:52 -04:00
55e0af930b Merge pull request #3269 from yury-lysogorskiy/master
Update ML-PACE installation to v.2021.10.25.fix version
2022-05-17 19:50:49 -04:00
dbcc08ba00 more refactoring for memory usage 2022-05-17 16:26:53 -06:00
a5171beacd make lammps-shell test compatible with MULTI-CONFIG CMake builders 2022-05-17 18:26:27 -04:00
72209b0617 Merge pull request #3258 from akohlmey/create-atoms-mesh
Create atoms from STL mesh
2022-05-17 18:11:41 -04:00
899764c00c Merge pull request #3268 from akohlmey/update-kappa-example
Update KAPPA example
2022-05-17 17:18:45 -04:00
cebbd471cf tweak unit test epsilon for portability to MacOS /w ARM 2022-05-17 17:15:42 -04:00
8ffe2a206c Update ML-PACE installation to v.2021.10.25.fix version 2022-05-17 22:41:43 +02:00
e07b46c771 refactoring edits 2022-05-17 14:40:09 -06:00
f9efa426a7 Merge pull request #3256 from lammps/delete-atoms-exact
Delete atoms exactly by fraction or count
2022-05-17 16:25:21 -04:00
ae979aca4e consistently use prefactor instead of pre-factor (the former was more common) 2022-05-17 16:20:10 -04:00
38d7fcee92 correct and update create_atoms mesh documentation 2022-05-17 16:16:32 -04:00
e7d072c593 add sanity check on radscale value, set radius also for quasi-random mode 2022-05-17 16:15:46 -04:00
510e78d4d3 test scripts 2022-05-17 12:44:11 -06:00
d487ab10e2 doc page and unittest tweaks 2022-05-17 12:00:40 -06:00
853e3ae99b fix typo and clarify error message 2022-05-17 13:52:29 -04:00
dbb3e75f24 change partial to random 2022-05-17 11:02:42 -06:00
fe4782696e silence compiler warnings 2022-05-17 06:03:01 -04:00
326b833d7f (temporarily) disable Kokkos deprecation warnings in CMake presets in preparation for stable release 2022-05-17 06:02:50 -04:00
bf98df3264 silence compiler warnings 2022-05-16 23:20:04 -04:00
df40732343 Make cast to double explicit 2022-05-16 15:00:13 -04:00
d32885fbe3 Fix compiler warnings 2022-05-16 14:48:02 -04:00
659fd82a9e Fix compiler warnings 2022-05-16 14:35:24 -04:00
db2d5b863d Improved MPI portability and added reference log files 2022-05-16 08:22:45 -06:00
ee8a8b6cd0 Added Python wrapper that handles rotations to and from LAMMPS frame 2022-05-15 17:43:18 -06:00
b1ba616470 update KAPPA example for current code, to use thermo_modify colname, and compute kappa in input 2022-05-15 18:58:50 -04:00
44f3ad5620 update singularity image descriptions for newer versions of cuda and rocm 2022-05-15 08:11:50 -04:00
c0e5a03989 update tests for delete_atoms 2022-05-15 01:56:59 -04:00
f62363516c streamline the refactored interface for delete_atoms partial some more 2022-05-15 01:56:45 -04:00
8e6b0425f7 apply clang-format 2022-05-14 18:01:34 -04:00
a79814793e improve handling of hybrid styles and their arguments and errors 2022-05-14 17:56:44 -04:00
1f30d3f140 programming style 2022-05-14 17:56:12 -04:00
1b552de1cd make default settings() functions for bonded interactions error out with arguments 2022-05-14 17:55:56 -04:00
42a4fba390 implement better checking for atom_style arguments and remove redundant code 2022-05-14 15:43:11 -04:00
173e80a970 Merge pull request #71 from jtclemm/create-atoms-mesh
Fixing typos and cleaning up quasirandom comments
2022-05-14 15:13:27 -04:00
55fef9a482 Fixing typos and cleaning up quasirandom comments 2022-05-14 11:39:20 -06:00
9a9bb749fa Merge remote-tracking branch 'github/develop' into collected-small-changes 2022-05-14 10:39:18 -04:00
223aebe3fb Merge pull request #3251 from stanmoore1/kk_update_3.6.0
Update Kokkos library in LAMMPS to v3.6.0
2022-05-14 10:38:41 -04:00
168d3bdd3c Correctly handle the case that the YAML python module is not installed 2022-05-14 10:15:40 -04:00
9661711a1e avoid out-of-bounds access in dump style cfg, update docs with simpler semantic 2022-05-14 09:39:50 -04:00
d4ea5ca49e more clang-tidy fixes after re-running it with added settings 2022-05-14 07:18:05 -04:00
2f0baa86d6 configure desired clang-tidy settings explicitly, must unset variable to turn off 2022-05-14 07:13:25 -04:00
b8a4ddc42a Merge pull request #3264 from stanmoore1/kk_pace_release
Add Kokkos version of ML-PACE
2022-05-13 23:36:05 -04:00
90797d53d9 one more batch of clang-tidy fixes 2022-05-13 23:21:14 -04:00
940e88d2ca more clang-tidy fixes 2022-05-13 21:12:48 -04:00
9c16819305 update code with clang-tidy fixes 2022-05-13 18:26:38 -04:00
3782eea7c4 must always compile MDI library with position independent code 2022-05-13 18:25:59 -04:00
056fd8be8f always build yaml-cpp included in PACE as static library 2022-05-13 17:00:37 -04:00
59560c47a7 Small tweak 2022-05-13 14:23:27 -04:00
979f84f96f Merge branch 'develop' of https://github.com/lammps/lammps into kk_update_3.6.0 2022-05-13 14:03:09 -04:00
66abc00e3c Add comment about MPI on Crusher 2022-05-13 13:33:27 -04:00
c41ad91a9d add support for reading binary STL files 2022-05-13 12:18:22 -04:00
545cec1785 Fix copy/paste issue 2022-05-13 10:15:25 -06:00
658a89e401 document .lammpsbin suffix for trajectory files 2022-05-13 11:15:06 -04:00
35dd5bc978 fix typo 2022-05-13 03:00:31 -04:00
90e2d9e966 tweak code comments 2022-05-12 16:51:24 -06:00
042564decd add deprecation info for old porosity option 2022-05-12 16:48:03 -06:00
3eea2463a1 Tweak error message 2022-05-12 16:00:22 -06:00
d207d53fd1 whitespace 2022-05-12 15:34:08 -06:00
d7bad09d35 Add Kokkos version of ML-PACE 2022-05-12 15:25:07 -06:00
58093fec99 accept .lammpsbin in addition to .bin for binary format output 2022-05-12 15:26:39 -04:00
4077c5c8ba add get_dump_by_id() API that mirrors other recent additions 2022-05-12 14:48:03 -04:00
0577bb6269 use Output::add_dump() and the dump_creator map and templates etc. 2022-05-12 14:47:16 -04:00
aff72c56a5 make Output::add_dump() return pointer to the created dump 2022-05-12 14:46:02 -04:00
c3a454370e work around "fix not computed at compatible times" errors with write_dump 2022-05-12 14:12:13 -04:00
301bd95900 small tweak 2022-05-12 13:17:51 -04:00
04537c9f22 Merge pull request #3263 from OrbitalC/compute_mliap_so3
adding so3 descriptor support for compute_mliap
2022-05-12 11:01:01 -04:00
5ad821ca5e apply clang-format 2022-05-12 09:24:37 -04:00
78d976bd36 Merge pull request #3260 from Colvars/colvars-update
Update Colvars to version 2022-05-09
2022-05-12 08:40:29 -04:00
371141f915 adding support for compute_mliap so3 2022-05-12 14:12:57 +02:00
3ea249a576 fix minor documentation issues 2022-05-11 13:23:59 -04:00
4cc3bdd35f adjust keyword/function names and command line to be simpler to use 2022-05-11 09:25:27 -04:00
227c4853f1 programming style 2022-05-11 08:13:13 -04:00
442116b305 update 2022-05-11 08:12:59 -04:00
ef3b90e838 Merge pull request #70 from jtclemm/create-atoms-mesh
Adding quasirandom mesh option
2022-05-11 08:12:18 -04:00
c9d350edc2 Adding quasirandom mesh option 2022-05-10 18:35:36 -06:00
bdbab77286 add note about re-generating optimized meshes for STL files 2022-05-10 15:23:54 -04:00
1220bea011 Update Colvars to version 2022-05-09
This update includes one new feature (neural-network based collective
variables), several small enhancements (including an automatic definition of
grid boundaries for angle-based CVs, and a normalization option for
eigenvector-based CVs), bugfixes and documentation improvements.

Usage information for specific features included in the Colvars library
(i.e. not just the library as a whole) is now also reported to the screen or
LAMMPS logfile (as is done already in other LAMMPS classes).

Notable to LAMMPS code development are the removals of duplicated code and of
ambiguously-named preprocessor defines in the Colvars headers.  Since the
last PR, the existing regression tests have also been running automatically
via GitHub Actions.

The following pull requests in the Colvars repository are relevant to LAMMPS:

- 475 Remove fatal error condition
  https://github.com/Colvars/colvars/pull/475 (@jhenin, @giacomofiorin)

- 474 Allow normalizing eigenvector vector components to deal with unit change
  https://github.com/Colvars/colvars/pull/474 (@giacomofiorin, @jhenin)

- 470 Better error handling in the initialization of NeuralNetwork CV
  https://github.com/Colvars/colvars/pull/470 (@HanatoK)

- 468 Add examples of histogram configuration, with and without explicit grid parameters
  https://github.com/Colvars/colvars/pull/468 (@giacomofiorin)

- 464 Fix #463 using more fine-grained features
  https://github.com/Colvars/colvars/pull/464 (@jhenin, @giacomofiorin)

- 447 [RFC] New option "scaledBiasingForce" for colvarbias
  https://github.com/Colvars/colvars/pull/447 (@HanatoK, @jhenin)

- 444 [RFC] Implementation of dense neural network as CV
  https://github.com/Colvars/colvars/pull/444 (@HanatoK, @giacomofiorin, @jhenin)

- 443 Fix explicit gradient dependency of sub-CVs
  https://github.com/Colvars/colvars/pull/443 (@HanatoK, @jhenin)

- 442 Persistent bias count
  https://github.com/Colvars/colvars/pull/442 (@jhenin, @giacomofiorin)

- 437 Return type of bias from scripting interface
  https://github.com/Colvars/colvars/pull/437 (@giacomofiorin)

- 434 More flexible use of boundaries from colvars by grids
  https://github.com/Colvars/colvars/pull/434 (@jhenin)

- 433 Prevent double-free in linearCombination
  https://github.com/Colvars/colvars/pull/433 (@HanatoK)

- 428 More complete documentation for index file format (NDX)
  https://github.com/Colvars/colvars/pull/428 (@giacomofiorin)

- 426 Integrate functional version of backup_file() into base proxy class
  https://github.com/Colvars/colvars/pull/426 (@giacomofiorin)

- 424 Track CVC inheritance when documenting feature usage
  https://github.com/Colvars/colvars/pull/424 (@giacomofiorin)

- 419 Generate citation report while running computations
  https://github.com/Colvars/colvars/pull/419 (@giacomofiorin, @jhenin)

- 415 Rebin metadynamics bias from explicit hills when available
  https://github.com/Colvars/colvars/pull/415 (@giacomofiorin)

- 312 Ignore a keyword if it has content to the left of it (regardless of braces)
  https://github.com/Colvars/colvars/pull/312 (@giacomofiorin)

Authors: @giacomofiorin, @HanatoK, @jhenin
2022-05-10 11:24:54 -04:00
5760c59d83 add a creator: tag to the YAML dump that allows to tell it apart 2022-05-10 08:31:02 -04:00
b6ee64dc12 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-05-09 21:58:48 -04:00
eb44cbf848 small updates 2022-05-09 15:22:48 -04:00
23e17363f9 Merge remote-tracking branch 'github/doc-variable-extract-settings' into collected-small-changes 2022-05-09 15:03:13 -04:00
6344c667a0 more doc info for variable extrat_setting() func 2022-05-09 09:33:59 -06:00
24ef021fe0 fix typo 2022-05-09 10:05:12 -04:00
1660bae22a add examples import one image to manual 2022-05-08 21:15:32 -04:00
9ec35f0235 update docs to match the latest code 2022-05-08 19:14:06 -04:00
e0bb27dbb2 make radscale and radthresh class members 2022-05-07 23:04:34 -04:00
e9b1ca16a3 correctly initialize radius and molecule id 2022-05-07 21:24:08 -04:00
60b9fd2db8 minor tweaks simplify algorithm 2022-05-07 17:08:22 -04:00
bcfb6734f3 use average vertex distance from center as particle radius 2022-05-07 16:27:03 -04:00
6722d3fb00 add simple STL binary to ASCII converter (based on Wikipedia specs) 2022-05-07 16:26:25 -04:00
559dc68197 implement revised algorithm with recursion 2022-05-07 15:40:25 -04:00
102b61ae1b Merge branch 'develop' into create-atoms-mesh 2022-05-07 09:33:40 -04:00
5d08b62622 remove unused class member 2022-05-07 03:48:54 -04:00
4737b9efb7 Merge pull request #3250 from akohlmey/collected-small-changes
Collected small changes and bugfixes
2022-05-07 00:14:32 -04:00
d21d9d95fa Merge pull request #3255 from lammps/timer-variable
Add a timer-style variable
2022-05-06 17:46:22 -04:00
00bb566893 enforce that the number of neighbors cannot be negative (e.g. w/o neighbor list) 2022-05-06 17:45:01 -04:00
56e36a5df5 Merge pull request #2988 from stanmoore1/coo_opt
Add optimized version of compute orientorder/atom from Tomas Oppelstr…
2022-05-06 17:11:24 -04:00
21d3de65e6 fix typos 2022-05-06 17:05:18 -04:00
767f512dcf add "make ni" alias to "make no-installed" 2022-05-06 17:05:03 -04:00
907bc7eaa5 switch to using wall time 2022-05-06 16:58:28 -04:00
051c243cfc small programming style upgrade, apply clang-format, silence compiler warnings 2022-05-06 16:44:13 -04:00
905034893c finished testing of new delete_atoms options 2022-05-06 14:15:41 -06:00
6432660bc9 Merge branch 'develop' of https://github.com/lammps/lammps into coo_opt 2022-05-06 13:24:14 -06:00
6e78269612 whitespace 2022-05-06 15:11:15 -04:00
81a8b0cf85 Add Kokkos HIP preset 2022-05-06 12:40:12 -06:00
613ef04357 Merge branch 'develop' into timer-variable 2022-05-06 14:27:52 -04:00
5986e11d43 Merge branch 'develop' of github.com:lammps/lammps into kk_update_3.6.0 2022-05-06 12:04:00 -06:00
97012f2aaa correct classification of electrode package, as it requires BLAS/LAPACK 2022-05-06 13:57:26 -04:00
62a819d7b6 Tweak launch bounds to improve GPU performance 2022-05-06 13:37:05 -04:00
3bb9c64f9e update .gitignore and move electrode package for dependency on KSPACE 2022-05-06 13:35:51 -04:00
78f2907cbb implement a "make no-installed" command 2022-05-06 13:35:21 -04:00
f3fcd16628 adding of timer-style variables and associated doc pages 2022-05-06 11:21:36 -06:00
580e01535a Update Kokkos AMD Makefiles 2022-05-06 13:04:58 -04:00
8e423f07c5 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-05-06 12:37:34 -04:00
2549b86d76 update/correct docs for support of compiling LAMMPS with visual studio on windows 2022-05-06 12:37:28 -04:00
ae73a9b7f7 Revert back to original code in npair_ssa_kokkos.h 2022-05-06 10:05:57 -06:00
73670dafc7 Merge branch 'develop' into collected-small-changes 2022-05-06 11:45:51 -04:00
1f4ad99177 one more virial sign flip in dispersion 2022-05-06 09:33:55 -06:00
aae44892c0 consolidate all FFT related redundant defines and typedefs in a single header 2022-05-06 11:27:17 -04:00
6ec169fa9d Fix warnings in Kokkos package 2022-05-06 08:23:45 -06:00
a35a2441ce Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-05-06 04:48:19 -04:00
abefff828d plug memory leak 2022-05-06 04:39:38 -04:00
71185b9f98 fix error message 2022-05-06 01:02:40 -04:00
8079f014bc final tweaks 2022-05-06 00:47:35 -04:00
773e3a87d9 add docs for create_atoms mesh 2022-05-06 00:47:05 -04:00
ff21142042 Merge remote-tracking branch 'github/develop' into create-atoms-mesh 2022-05-05 23:02:53 -04:00
bd373d6038 Merge pull request #3119 from erozic/feature-create-atoms-exclude
Feature create atoms overlap
2022-05-05 22:42:40 -04:00
7601a5c0fb correct/improve formatting 2022-05-05 22:20:43 -04:00
8ed401ce12 spelling 2022-05-05 21:34:31 -04:00
664943589e Merge remote-tracking branch 'github/develop' into feature-create-atoms-exclude 2022-05-05 21:09:39 -04:00
8dbfc0799c whitespace 2022-05-05 20:15:36 -04:00
46d638af0c Merge branch 'feature-create-atoms-exclude' of https://github.com/erozic/lammps into feature-create-atoms-exclude 2022-05-06 01:48:37 +02:00
ae230a33f5 Bug fix (user_quat initial value not set) 2022-05-06 01:47:45 +02:00
d4f212183e initial exact logic for delete_atoms partial 2022-05-05 17:45:42 -06:00
568e9c5878 Merge pull request #3237 from emilyviolet/hipfft
Add support for hipFFT with PPPMKokkos
2022-05-05 19:39:52 -04:00
5784fab588 starting to add timer-style variable 2022-05-05 17:04:50 -06:00
484a7c5db0 tweaked comments 2022-05-05 16:22:19 -06:00
7071f819d0 Header fix (add_molecule) 2022-05-05 23:53:14 +02:00
93c0f09c31 Logic fix in random-overlap and comment implemented 2022-05-05 23:35:11 +02:00
4e61530593 sign flip on bitorsion virial 2022-05-05 15:07:26 -06:00
329a299952 virial change for bitorsions 2022-05-05 13:34:32 -06:00
31281d466d fix typo in angle_amoeba virial 2022-05-05 13:30:55 -06:00
e5e3478afd Update CMake 2022-05-05 12:30:37 -06:00
bee7b09377 fix cut-n-paste bug 2022-05-05 14:05:22 -04:00
3b68c0ea24 Update Makefile comment 2022-05-05 14:02:29 -04:00
b79c0bc7b4 Update Kokkos library in LAMMPS to v3.6.0 2022-05-05 11:44:47 -06:00
3b9389e86c Update .gitignore 2022-05-05 12:23:52 -04:00
2c95f84acc Tweak error messages 2022-05-05 12:17:00 -04:00
c05af749df Merge branch 'develop' of https://github.com/lammps/lammps into hipfft 2022-05-05 12:15:28 -04:00
24b94551a2 Update Kokkos AMD Makefiles 2022-05-05 11:59:32 -04:00
99d4f83fa8 preliminary implementation 2022-05-05 09:56:22 -04:00
6c28b55c13 return nullptr instead of out-of-range data 2022-05-05 07:50:45 -04:00
2b1716cb3a fix more bugs with dump_modify every/time 2022-05-05 00:06:08 -04:00
bd4bbbddbe Merge pull request #3245 from akohlmey/next_patch_release
Step version strings for the next patch release
2022-05-04 19:57:23 -04:00
2aa1c6975f fix typo 2022-05-04 19:09:19 -04:00
e285ba43eb Merge branch 'develop' into next_patch_release 2022-05-04 19:08:10 -04:00
582de4f951 Merge pull request #3248 from akohlmey/add_set_time
Add time option to the "reset_timestep" command and make the "time" property restartable
2022-05-04 18:43:07 -04:00
dcd6c18e45 update indent 2022-05-04 17:50:34 -04:00
4c6cb8648b replace image with embedded latex text 2022-05-04 17:50:25 -04:00
6b47d6246b more changes and some debugging on a test script 2022-05-04 15:28:50 -06:00
cc437c78a0 some logic and syntax changes to code and doc page 2022-05-04 14:34:05 -06:00
edda6b6f70 Merge remote-tracking branch 'github/develop' into add_set_time 2022-05-04 16:29:54 -04:00
803376b1b4 Merge pull request #3241 from akohlmey/collected-small-changes
Collected small changes and fixes for the next patch release
2022-05-04 16:26:02 -04:00
e897ab7611 improve error messages 2022-05-04 16:25:12 -04:00
ba3aa8fab5 remove NULL option for reset_timestep 2022-05-04 16:21:06 -04:00
81bb4bfc23 Merge branch 'collected-small-changes' into add_set_time 2022-05-04 15:49:14 -04:00
059c84bf41 Merge branch 'develop' into add_set_time 2022-05-04 15:47:28 -04:00
eec86c8038 Merge branch 'develop' into collected-small-changes 2022-05-04 15:45:38 -04:00
ad6cebb049 Merge pull request #3246 from GenieTim/compute-abs-sum
Implement a aveabs and sumabs reduce command
2022-05-04 14:46:54 -04:00
61214b9a52 Merge pull request #3243 from akohlmey/delete-by-variable
Implement variable option for delete_atoms
2022-05-04 13:50:00 -04:00
f8742d599b merge set_time command into reset_timestep 2022-05-04 13:24:52 -04:00
d4a93ff9c7 Merge pull request #3247 from vladgl/adp-kk
Kokkos accelerated variant for adp pair style
2022-05-04 13:05:29 -04:00
517d934f7c more edits 2022-05-04 10:51:00 -06:00
87b99306ba make force_clear() a public pure function in min.h and integrate.h
these are required changes for adding NWChem couping support as a fix
2022-05-04 12:30:17 -04:00
af32267db3 Merge branch 'develop' into compute-abs-sum 2022-05-04 12:23:50 -04:00
7fa2fe134c Fix typo 2022-05-04 10:18:11 -06:00
515e2928a9 Sync with pair eam 2022-05-04 10:15:36 -06:00
8a5e7fa609 update docs 2022-05-04 12:07:59 -04:00
ed0ee913e1 Small tweaks 2022-05-04 11:18:10 -04:00
a26fa50736 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-05-04 05:47:34 -04:00
5d510ac7b3 Merge remote-tracking branch 'akohlmey/region-tests' into collected-small-changes 2022-05-04 05:46:34 -04:00
c37d5be524 Merge branch 'develop' into collected-small-changes 2022-05-04 05:45:33 -04:00
0bedff1ce0 implement set_time command 2022-05-03 13:15:52 -04:00
e7153d30c8 re-enable dynamic group support for tally computes 2022-05-03 11:22:38 -04:00
257a070666 add test for ellipsoid, check for special case of ellipsoid/prism 2022-05-03 11:02:01 -04:00
bd5858019e add minimal unit test for Region class 2022-05-02 17:06:28 -04:00
4ef8ca091d Fix virial computation in adp/kk 2022-05-02 22:16:28 +03:00
8473bc19f5 Merge branch 'develop' into adp-kk 2022-05-02 13:41:03 -04:00
df77641071 fix permissions and whitespace 2022-05-02 13:40:39 -04:00
cb345870a9 Add adp/kk to install script (fix commit #d3843db) 2022-05-02 19:24:01 +03:00
d3843dbf09 Add adp/kk to install script 2022-05-02 19:16:59 +03:00
fef6c37ea7 Merge pull request #3240 from akohlmey/ave-yaml-file-colname
Add support for custom column names and YAML format output to fix ave/time
2022-05-02 11:45:50 -04:00
0e5a66b1cd Implement a aveabs and sumabs reduce command 2022-05-02 17:34:08 +02:00
e51c51e7f9 Kokkos accelerator variant for adp pair style 2022-05-02 18:17:49 +03:00
39ee6b6a7f step version strings for the next patch release 2022-05-02 10:34:43 -04:00
89deab6a3e silence compiler warnings 2022-04-30 19:51:04 -04:00
1191d08b47 Merge branch 'develop' into collected-small-changes 2022-04-30 19:39:16 -04:00
deef9fae23 fix bug with wrong mapping of pair style classes 2022-04-30 19:15:00 -04:00
1b8641685a Merge pull request #3242 from dxhisboy/develop
Adding saip/metal/opt and ilp/tmd/opt
2022-04-30 12:59:41 -04:00
672c063fd8 add unit test for delete_atoms 2022-04-29 22:33:15 -04:00
2f599bace1 enable and apply clang-format 2022-04-29 22:01:34 -04:00
f5113aa84a better error messages 2022-04-29 21:59:37 -04:00
31d6af6114 add delete_atoms "variable" option 2022-04-29 21:59:22 -04:00
9c45af7730 avoid potential 32-bit integer overflow 2022-04-29 20:53:57 -04:00
cac9fcaf86 cannot build ELECTRODE package by default on native windows because it requires BLAS 2022-04-29 20:18:50 -04:00
4a3bcd9230 Merge branch 'develop' into collected-small-changes 2022-04-29 20:15:36 -04:00
87b0939fe7 Merge pull request #2871 from evoyiatzis/master
implementation of an "ellipsoidal" region option
2022-04-29 19:46:15 -04:00
44c4d0a4d6 Merge pull request #3194 from robeme/electrode
ELECTRODE package for constant potential method
2022-04-29 18:30:29 -04:00
ee8d8042e6 add example for YAML processing with Perl 2022-04-29 17:42:23 -04:00
514bfe77df apply changes suggested by @sjplimp 2022-04-29 17:33:37 -04:00
5e18f15435 remove unused variables 2022-04-29 15:29:04 -04:00
d0938ce398 apply clang-format 2022-04-29 15:13:47 -04:00
80c716b81f update false positives 2022-04-29 15:11:11 -04:00
f09e886fd2 remove unused function 2022-04-29 15:10:57 -04:00
47f62838db Merge branch 'develop' into electrode 2022-04-29 14:37:48 -04:00
3c71c07048 Merge pull request #3230 from athomps/snap-inner-mod
Snap inner cutoff improvements and porting to KOKKOS
2022-04-29 14:36:48 -04:00
37d2d9e013 Remove trailing spaces 2022-04-29 10:56:34 -06:00
3f44f8f50d Merge pull request #3236 from lammps/fix-adapt-angle2
bug fix for new fix adapt angle support
2022-04-29 12:50:10 -04:00
df76673bee bdim --> adim in fix adapt 2022-04-29 10:10:36 -06:00
2f8e708184 more whitespace 2022-04-29 09:37:27 -06:00
894b7810b2 whitespace 2022-04-29 09:32:24 -06:00
57098f3df7 Remove extra files 2022-04-29 09:22:14 -06:00
69a79ba082 whitespace 2022-04-29 09:17:24 -06:00
641e769bde Revert a3c6baad4c 2022-04-29 09:03:44 -06:00
435f652263 removed trailing whitespace in pair_ilp_tmd_opt and pair_saip_metal_opt 2022-04-29 22:54:41 +08:00
6ced400207 change saip and tmd to virtual public inherit, so that corresponding opt package can compile 2022-04-29 22:28:48 +08:00
f93ac86c53 updated Install.sh for OPT package to adopt new interlayer potential optimizations 2022-04-29 22:05:52 +08:00
943cb531bf Modified chunk code of pair_ilp_graphene_hbn_opt for adopting pair_saip_metal_opt and pair_ilp_tmd_opt 2022-04-29 21:56:52 +08:00
c34efcc718 fixed multielement assignment error
tested in CPU and GPU mode, gets same output for eneriges and forces as build without KOKKOS for various settings of sinner, dinner
2022-04-29 07:53:39 -06:00
2292caef38 updated sinner/dinner log output
now logmsg displays all element params for sinner, dinner on same line (replaces only first param + ...)
2022-04-29 07:48:02 -06:00
9c48a75c8e fix issues reported by coverity scan 2022-04-29 06:49:47 -04:00
b2300ba9cb Merge branch 'develop' into collected-small-changes 2022-04-29 05:51:05 -04:00
6fb3cef39f Merge pull request #3031 from Iximiel/develop
Second Moment Aproximation to the Tight Binding addes as pair style
2022-04-28 22:32:38 -04:00
cb41e354b8 Merge pull request #3238 from akohlmey/doc-math-funcs
Document special math functions
2022-04-28 22:11:09 -04:00
ef84e08233 remove error docs 2022-04-28 20:08:59 -04:00
929734ce45 Merge remote-tracking branch 'github/develop' into amoeba-ak
# Conflicts:
#	doc/src/Commands_pair.rst
#	src/memory.h
2022-04-28 20:08:18 -04:00
c086c20238 reduce compiler warnings. adapt LAMMPS programming style 2022-04-28 20:04:25 -04:00
723bf202c0 make use of utils::logmesg() and fmt::format 2022-04-28 19:35:55 -04:00
a2a6437575 simplify creation and lookup of fix store instances 2022-04-28 19:35:55 -04:00
66f5cbb070 fix more tagint pointer bugs 2022-04-28 19:35:55 -04:00
171b102025 AMOEBA package has a "hard" dependency on KSPACE 2022-04-28 19:35:55 -04:00
221142a36d sign flips for virial terms 2022-04-28 17:12:01 -06:00
7d9cdc7ec4 update documentation. more examples. document fix_modify options 2022-04-28 18:34:49 -04:00
bf8f5e2f87 more compact output 2022-04-28 18:08:59 -04:00
a3e0e1a6eb fixed multielement assignment error 2022-04-28 15:57:53 -06:00
2ae9ca5073 swap rows and columns back for easier import into pandas 2022-04-28 16:03:04 -04:00
f25b60fded simplify pandas processing. add missing image with plot 2022-04-28 16:02:45 -04:00
f09556018b fix bugs reported by @jibril-b-coulibaly 2022-04-28 14:47:53 -04:00
04b46a9ce8 implement yaml output for mode vector 2022-04-28 14:33:15 -04:00
eb5d867adf Improve erfc 2022-04-28 13:45:57 +00:00
2f71c96bde add yaml format output for mode scalar 2022-04-28 07:46:47 -04:00
09ed718c14 add example to plot thermo data with pandas+matplotlib 2022-04-28 07:45:51 -04:00
cfc4dcea3d must quote keyword data to avoid issues parsing the YAML data 2022-04-28 07:34:23 -04:00
33a63e5cd3 remove dead code to silence compiler warnings 2022-04-28 03:03:29 -04:00
a05bdfa76c add override to polymorph functions 2022-04-27 18:36:00 -04:00
cd3ce8459b enable and apply clang-format 2022-04-27 18:35:44 -04:00
74afc04580 remove error comments from header 2022-04-27 18:29:41 -04:00
233d4ad349 whitespace fixes 2022-04-27 18:29:27 -04:00
8481abda05 Merge branch 'develop' into ellipsoid-region 2022-04-27 18:28:38 -04:00
55fddf3aac update (tentative) release date 2022-04-27 18:26:07 -04:00
b76594e551 enforce only newton pair on with smatb pair styles. add unit tests 2022-04-27 18:08:05 -04:00
2d45e3340f move sources and examples for smatb styles to SMTBQ package folders 2022-04-27 15:14:02 -04:00
585b14f08f fix memory leak 2022-04-27 15:10:55 -04:00
3cfae26b84 update docs and make part of SMTBQ package 2022-04-27 15:10:46 -04:00
3b1165ccdc update files to be more compatible with LAMMPS' conventions and for code changes 2022-04-27 15:02:32 -04:00
75d42a87e5 Merge branch 'develop' into Iximiel/develop 2022-04-27 14:15:10 -04:00
cdba0da780 Merge branch 'snap-inner-mod' of github.com:athomps/lammps into snap-inner-mod 2022-04-27 10:58:43 -06:00
a3c6baad4c Removed CPU specific options 2022-04-27 10:58:22 -06:00
0e1f9968c1 Merge branch 'develop' of github.com:lammps/lammps into snap-inner-mod 2022-04-27 10:48:24 -06:00
6439777406 complete documentation of the MathSpecial namespace 2022-04-27 11:59:25 -04:00
c43bc000d9 Removed unnecessary commented out code section. 2022-04-27 19:46:18 +10:00
d857600d9c start documenting functions in the MathSpecial namespace 2022-04-27 04:46:18 -04:00
385f0c6c95 Update Kokkos build documentation to include hipFFT options. 2022-04-27 10:13:03 +10:00
8cdbf380cf Add support for hipFFT backend in PPPMKokkos. 2022-04-27 09:22:59 +10:00
691ba89b6f Merge pull request #3234 from lammps/variable-vector-wildcard
add support for wildcards in variable vectors
2022-04-26 18:21:46 -04:00
1fcf82aeef Merge remote-tracking branch 'github/develop' into variable-vector-wildcard 2022-04-26 17:54:32 -04:00
56b4671cd8 Merge pull request #3233 from akohlmey/collected-small-changes
Collected small changes for the next patch release
2022-04-26 17:54:11 -04:00
d8e98cb99d make tests more complex and add vector variable expansion 2022-04-26 17:53:47 -04:00
831caaa150 Merge branch 'collected-small-changes' into variable-vector-wildcard 2022-04-26 17:26:17 -04:00
64fff417c3 test more bound variants 2022-04-26 17:25:27 -04:00
7eb6c2652f update advanced utils tests. include test for expand args 2022-04-26 16:16:44 -04:00
d04cb4ba42 edits to doc page 2022-04-26 13:58:18 -06:00
782add6943 Merge branch 'feature-create-atoms-exclude' of github.com:erozic/lammps into create-overlap 2022-04-26 13:22:10 -06:00
800e0a7357 bug fix for new fix adapt angle support 2022-04-26 09:34:27 -06:00
7663fc6256 correctly use "type" to detect executables/scripts 2022-04-26 11:08:31 -04:00
26278643d4 Port changes to Kokkos 2022-04-26 08:22:00 -06:00
407f6af1ed Merge branch 'develop' of github.com:lammps/lammps into snap-inner-mod 2022-04-26 08:13:30 -06:00
192b22a6ce Set rng init for electrode/thermo 2022-04-26 16:03:45 +02:00
837f9040d8 add tests for advanced utility functions that require a LAMMPS instance 2022-04-26 09:30:34 -04:00
4691ff06b5 format 2022-04-26 09:30:10 -04:00
ba02d90bf1 add test for new errorurl() utility function 2022-04-26 09:29:57 -04:00
a649fa3a79 detect yaml file output by file name 2022-04-26 06:20:00 -04:00
72011bf325 Updated doc (use of overlap clarified) 2022-04-26 11:55:24 +02:00
7aaa71d22e Merge remote-tracking branch 'lammps/develop' into electrode 2022-04-26 10:29:39 +02:00
66b8ab9c6e Revamped examples 2022-04-26 09:42:45 +02:00
fdb7dfdea7 also remove mode from fix ave/correlate 2022-04-25 17:04:04 -06:00
e7a9073ccd remove discussion of mode 2022-04-25 17:01:15 -06:00
65978c33b6 2 more doc pages 2022-04-25 16:06:52 -06:00
bb8e953fb5 add support for wildcards in variable vectors 2022-04-25 15:43:08 -06:00
950b175fcd remove invalid [[noreturn]] attribute 2022-04-25 16:23:48 -04:00
dc605d35ee Updated ML-IAP package 2022-04-25 13:58:41 -06:00
811e5786fe Merge branch 'develop' into feature-create-atoms-exclude 2022-04-25 19:30:52 +02:00
c1146ebdcd Resolved conflicts with develop 2022-04-25 19:11:54 +02:00
8679266db8 add container definitions for Fedora 36 and Ubuntu 22.04LTS 2022-04-25 13:05:43 -04:00
2624043ab6 Synchronisation fix 2022-04-25 17:03:07 +02:00
960d3faa5e Merge branch 'master' of github.com:z-gong/lammps into collected-small-changes 2022-04-25 02:58:17 -04:00
a5cd95d6c6 Add comment for the units in compute/viscosity 2022-04-25 06:23:54 +02:00
28900925f4 Fix the unit for fix/accelerate/cos 2022-04-25 05:59:41 +02:00
9c46acfd62 fix parallel processing bug with shell mkdir command 2022-04-24 23:23:01 -04:00
45de998aa9 Merge pull request #3231 from akohlmey/remove-error-docs-in-header
Remove error docs from header files
2022-04-24 18:30:17 -04:00
6cfbd73bcd add documentation for new error and warning policy 2022-04-23 16:40:28 -04:00
f7e7abc908 fix uninitialized pointer bug 2022-04-23 15:17:26 -04:00
b4c3c479b7 remove error docs from one more file 2022-04-23 13:52:29 -04:00
4d1bdb4741 add python tool to detect and remove (if desired) error docs from headers
also document the tools in the manual.
2022-04-23 13:52:12 -04:00
78c10bac4a clang-format update 2022-04-23 13:08:11 -04:00
115962db88 Merge branch 'develop' into remove-error-docs-in-header 2022-04-23 12:46:54 -04:00
ce5d8a578e Merge pull request #3228 from run-towards-the-future/develop
A pull request for an optimized ILP(ilp/graphene/hbn) potential
2022-04-23 12:42:27 -04:00
f970a9de6a Merge pull request #3219 from akohlmey/region-lookup-refactor
Region lookup refactor
2022-04-23 11:33:01 -04:00
67bcfe3b62 remove unused code and variables, more programming style consistency 2022-04-23 09:26:35 -04:00
b55b9f5a6a removed request for ghost neighbor list 2022-04-23 20:35:48 +08:00
ef51fb7dea Fix bugs, Derives from PairILPGrapheneHBN instead of Pair
Improve the performance of pair style, ilp/graphene/hbn/opt
Updates to the OPT package
2022-04-23 19:45:50 +08:00
8fe0231b75 Fix bugs, Derives from PairILPGrapheneHBN instead of Pair
Add a new pair style, ilp/graphene/hbn/opt
Updates to the OPT package
2022-04-23 19:43:34 +08:00
e1856dc708 cosmetic 2022-04-23 07:42:31 -04:00
5da6fae9f6 silence compiler warnings 2022-04-23 07:35:18 -04:00
69249e84e1 adjust epsilon 2022-04-23 07:35:00 -04:00
8f019f4800 doc fixes: spelling and links 2022-04-23 07:34:44 -04:00
d55e7f9e51 Merge branch 'develop' into region-lookup-refactor 2022-04-23 07:14:28 -04:00
b1546a725c Merge pull request #3093 from Bibobu/Elastic_stress
Add compute born/matrix command to compute elastic stress
2022-04-23 07:07:29 -04:00
113fc0a77a Merge pull request #3227 from akohlmey/safer-data-file-parsing
Improve data file parsing and reported error messages
2022-04-23 06:41:17 -04:00
419b0f9494 add missing curly brace 2022-04-23 06:02:14 -04:00
31470819c0 Merge branch 'develop' into Elastic_stress 2022-04-23 04:36:45 -04:00
7bfa368d8d Merge pull request #2667 from ssande7/compute_temp_profile_dof
[BUGFIX] Collection of DoF-related fixes for compute temp/profile
2022-04-23 04:31:38 -04:00
c17845276a Derives from PairILPGrapheneHBN instead of Pair
Improve the performance of pair style, ilp/graphene/hbn/opt
Updates to the OPT packages
2022-04-23 14:29:03 +08:00
b631411985 Derives from PairILPGrapheneHBN instead of Pair
Add a new pair style, ilp/graphene/hbn/opt
Updates to the OPT package
2022-04-23 14:26:13 +08:00
26ca371d93 Merge branch 'develop' into region-lookup-refactor 2022-04-22 23:47:49 -04:00
79a7d2abf6 remove error docs from header files 2022-04-22 23:31:15 -04:00
e49930df21 Merge branch 'develop' into safer-data-file-parsing 2022-04-22 23:13:39 -04:00
471c728ac4 Merge pull request #3224 from lammps/dynamic-groups
change update of dynamic groups to post_force location in timestep
2022-04-22 23:11:17 -04:00
cbefeeb677 Merge pull request #3220 from athomps/specify-verlet
Explcitly state that fix nve uses velocity-Verlet integrator
2022-04-22 23:10:48 -04:00
8115e8a5a4 Merge pull request #3226 from lammps/error-url
Add utility to print url with link to error message in online manual
2022-04-22 23:10:21 -04:00
9f9a5ca76f Merge branch 'develop' into region-lookup-refactor 2022-04-22 22:53:02 -04:00
9be8ef09a2 Merge pull request #3229 from lammps/fix-adapt-angle
Fix adapt angle
2022-04-22 22:44:18 -04:00
97bfc0bb77 avoid (unlikely) overflow 2022-04-22 22:38:46 -04:00
cf647347c9 Merge branch 'develop' into safer-data-file-parsing
# Conflicts:
#	src/atom.cpp
2022-04-22 22:25:41 -04:00
8e9cc0eb51 Merge branch 'develop' into compute_temp_profile_dof 2022-04-22 22:16:42 -04:00
47564ab6bc Merge branch 'develop' into region-lookup-refactor 2022-04-22 22:11:41 -04:00
1319cb2cf5 fix typo 2022-04-22 22:08:13 -04:00
aed7bafac0 Merge pull request #3217 from akohlmey/atomvec-strings
Refactor Atom and AtomVec classes to use std::string and std::vector for setting up per-atom data
2022-04-22 22:03:26 -04:00
3a5ab301b2 propagate changes from previous commit to other packages that were missing them 2022-04-22 21:46:24 -04:00
5aebd151b6 Update compute_temp_profile.rst 2022-04-22 18:47:13 -06:00
16dd89c641 Added qualifier to assertions + note about inhomogeneous rigid systems 2022-04-23 10:30:44 +10:00
78aec491ff Minor tweaks 2022-04-22 17:32:26 -06:00
a90c632ae2 fix bug when no other post_force fixes are defined 2022-04-22 17:10:56 -06:00
48d8094d95 Merge branch 'develop' into snap-inner-mod 2022-04-22 16:54:21 -06:00
2c71d0eea2 Ported to KOKKOS, untested 2022-04-22 16:43:19 -06:00
f7cdfdd884 remove debug in bitorsion 2022-04-22 16:03:48 -06:00
e43730bd74 add chkttor method to bitorsions 2022-04-22 15:30:16 -06:00
01e7530902 shorten URL message text 2022-04-22 17:00:55 -04:00
907bcd16a8 Update compute_temp_profile.rst 2022-04-22 14:21:57 -06:00
a88efcbbda sign flip in pitorsion 2022-04-22 13:50:48 -06:00
1d12069daf fix typo in index 2022-04-22 13:18:30 -06:00
b40e662b10 Merge pull request #3223 from akohlmey/less-fmtlib-warnings
Reduce excessive warnings from fmtlib and assorted small changes
2022-04-22 15:03:49 -04:00
fec5538d3c fix initialization bugs 2022-04-22 13:52:15 -04:00
1568974e8e whitespace 2022-04-22 13:39:05 -04:00
c054edda6b allow larger error margin for pressure computes 2022-04-22 13:22:01 -04:00
23d39c7d02 Merge branch 'develop' into create-overlap 2022-04-22 10:37:39 -06:00
c0d0c84f7d update unit test files to implementation changes 2022-04-22 12:16:28 -04:00
da520bf8b7 integrate better into manual and traditional build system 2022-04-22 11:38:55 -04:00
68d1c856b3 fix typo 2022-04-22 11:27:08 -04:00
77b563a024 disable unknown pragma warnings for the summit machine when using CUDA 2022-04-22 11:23:54 -04:00
b4e2e2ec34 add support for angle cosine 2022-04-22 09:12:12 -06:00
a6f2f04664 Removed forgotten neighbor->ago condition in compute_born_matrix. Rewritten compute_pair loop so that newton condition does not affect results. 2022-04-22 16:59:52 +02:00
644b3f6933 clarify and remove redundant text 2022-04-22 09:32:10 -04:00
23186da560 Merge branch 'snap-inner-bug-printf' of github.com:megmcca/lammps into less-fmtlib-warnings 2022-04-22 09:26:29 -04:00
3b1021abd1 cosmetic changes. improve programming style conformance 2022-04-22 08:36:20 -04:00
55a7c341af improve data file section parsing
- avoid segfaults when dereferencing a null pointer on short files
- allow skipping over empty and comment-only lines.
2022-04-22 08:35:09 -04:00
6d56629660 improve error messages 2022-04-22 08:31:53 -04:00
dc4752ef63 add convenience function for printing a missing arguments error message 2022-04-22 08:28:14 -04:00
079d3ea067 remove extraneous printf line 2022-04-22 06:16:45 -06:00
3e9f207062 Improve the performance of pair style, ilp/graphene/hbn/opt
Updates to the OPT package
2022-04-22 20:00:28 +08:00
e0049a07f3 Add a new pair style, ilp/graphene/hbn/opt
Updates to the OPT package
2022-04-22 17:55:05 +08:00
13664a0185 add utility to print url with pointer to error message 2022-04-22 05:25:50 -04:00
4de9ab85ce Completed inner cutoff, KOKKOS still in progress 2022-04-21 17:30:12 -06:00
3f3c481554 add support to fix adapt for angle coeffs 2022-04-21 17:00:11 -06:00
0b6a689f3c Removed the domain->minimum_image() calls from dihedral_nharmonic and angle_cosine. 2022-04-22 00:37:49 +02:00
6b3c868c6e Removed commented previous nb list request. 2022-04-22 00:26:00 +02:00
5fd2311951 Pulled develop. Solved false_positives.txt bond.cpp and bond.h files conflict. 2022-04-22 00:24:50 +02:00
0b0947c167 Solved the dihedral index problem. It was actually the indices used. 2022-04-22 00:20:25 +02:00
ea66d4e73f mostly doc page edits 2022-04-21 16:00:53 -06:00
0ece11c491 add a code comment 2022-04-21 15:19:04 -06:00
8cb47c8504 change update of dynamic groups to post_force location in timestep 2022-04-21 15:02:47 -06:00
c6abc9e682 need wheel module for modern install procedure 2022-04-21 16:15:42 -04:00
09187801c1 suppress nvcc unknown pragma warnings 2022-04-21 15:01:46 -04:00
247c61c93f make portable to ubuntu 2022-04-21 13:01:13 -04:00
04afec7771 fix minor doc issues 2022-04-21 13:00:26 -04:00
05a845fafd compute_dihedral finally agrees with numdiff! 2022-04-21 18:37:26 +02:00
6dcafd693f Update fix_nve.rst 2022-04-21 10:13:05 -06:00
501ef071c5 revert to original pitorsion code 2022-04-21 10:06:53 -06:00
1df430aef4 align with doc folder makefile 2022-04-21 12:02:05 -04:00
b7a3af7bd1 update plumed version in containers and install python3-venv 2022-04-21 12:01:49 -04:00
556ad777d1 update code to use safe fread() and thus silence compiler warnings on ubuntu 2022-04-21 11:53:59 -04:00
b7d329f9b3 remove unused field in class 2022-04-21 07:58:54 -04:00
1a8ba25444 silence some excessive warning by the new Intel compilers 2022-04-21 07:58:43 -04:00
e9eb74e13a add missing override 2022-04-21 07:50:48 -04:00
c07551072d must check if externally set C++ standard is at least c++11 2022-04-21 07:50:30 -04:00
e8cacc4380 Updated example syntax 2022-04-20 18:17:23 -06:00
b4b6ba91e0 Slight adjustment to definition of Sinner and Dinner 2022-04-20 18:01:24 -06:00
9cac62401d only set the C++ standard value if it is not set externally 2022-04-20 19:32:42 -04:00
04ac4c4695 debug info for bitorsions 2022-04-20 16:55:56 -06:00
96e22b1104 disable CUDA support with Eigen3 2022-04-20 18:50:55 -04:00
5242b5557f Merge branch 'develop' into less-fmtlib-warnings 2022-04-20 18:24:06 -04:00
4544664edc comment out assertion causing many warnings 2022-04-20 18:14:10 -04:00
38093ffe47 KOKKOS doesn't require nvcc_wrapper anymore when compiling with CMake 2022-04-20 18:13:42 -04:00
c62e2ad4d1 disable warnings with PGI/NVHPC compilers and import CMAKE_TUNE_FLAGS 2022-04-20 17:39:33 -04:00
aebbd04297 Merge pull request #3222 from akohlmey/fasthtml
Add fasthtml target for faster testing of .rst to .html translation
2022-04-20 17:16:23 -04:00
da0e0359b6 Merge pull request #3221 from akohlmey/ttm_mod_fix
Fix file reader bug in fix ttm/mod
2022-04-20 16:55:10 -04:00
f52e40772b bitorsion for ubi 2022-04-20 14:16:11 -06:00
a8e5e0e515 use python -m venv instead of virtualenv 2022-04-20 15:49:22 -04:00
42d875a411 add fasthtml target for faster testing of .rst to html translation 2022-04-20 15:02:00 -04:00
af1851a6bb sign flip on pitorsion forces 2022-04-20 11:45:55 -06:00
bc0236d869 Bugfix tagint type for tags 2022-04-20 18:49:55 +02:00
a3a3354d1b fix file reader bug and add ttm/mod example 2022-04-20 11:52:36 -04:00
240056f5a6 tweak to README 2022-04-20 09:43:14 -06:00
ee74d9761c reorder pitorsion atoms 2022-04-20 09:41:06 -06:00
f6523851b5 Explcitly state that fix nve uses velocity-Verlet integrator 2022-04-20 08:58:53 -06:00
c086664c2a Per-atom vector usage 2022-04-20 16:23:44 +02:00
9d1d552fde bugfix init_list for etypes 2022-04-20 16:23:44 +02:00
df5b1a228d tweak epsilon for macos/arm64 2022-04-19 21:57:43 -04:00
cfff30130f tagint change 2022-04-19 16:33:54 -06:00
a51749b3e9 force sign flip in improper amoeba 2022-04-19 16:30:32 -06:00
e20892fc89 one more tagint change 2022-04-19 15:35:26 -06:00
cc5bfd934d change tagint to double storage 2022-04-19 11:49:55 -06:00
4c57820188 Applied the Modine transpose to x,y,z 2022-04-19 11:48:16 -06:00
ab73faee09 Removed EPS trick that was causing some unexpected reordering 2022-04-19 11:33:59 -06:00
44a4f3cff8 merge with Axel changes 2022-04-19 09:14:56 -06:00
bae7fd74b0 doc page tweaks 2022-04-19 09:09:31 -06:00
c015851fbf fix 64-bit bug 2022-04-19 07:39:07 -04:00
f335b9afc0 add AMOEBA package to "most" preset in GNU build 2022-04-19 04:38:41 -04:00
a73fc87f90 add AMOEBA package to CMake build system 2022-04-19 04:35:25 -04:00
a9ac398d2b correct for updated forward/reverse comm API 2022-04-18 22:08:05 -04:00
df74043d03 correct homepage URL 2022-04-18 21:23:11 -04:00
89195363d6 whitespace 2022-04-18 21:20:13 -04:00
25b0454505 fix various issues for building the manual cleanly: latex, links, escapes, formatting 2022-04-18 21:19:30 -04:00
0a9106a81c final sync with current develop 2022-04-18 17:54:32 -06:00
d3b70c7d5d more changes to sync with new templated GridComm 2022-04-18 17:52:18 -06:00
409c38ece1 missed one change 2022-04-18 17:31:12 -06:00
f8f2b9542e sync with current develop 2022-04-18 17:29:23 -06:00
353ebb11f1 add README for tinker2lmp.py 2022-04-18 16:52:34 -06:00
8932d9ffaa doc pages for AMOEBA/HIPPO 2022-04-18 16:38:41 -06:00
71e96e8b7c Merge pull request #3212 from ndtrung81/dielectric-updates
Updates to the DIELECTRIC package
2022-04-18 09:33:28 -04:00
f40b8f5694 Merge branch 'develop' into dielectric-updates 2022-04-17 17:47:55 -04:00
9228855257 cosmetic 2022-04-17 17:47:38 -04:00
c820eeb118 re-apply clang-format 2022-04-17 17:47:31 -04:00
7c64ff6634 Improved the precision of the conversion factor epsilon0e2q, added more options for units, ensured that qqrd2e be included in efield in several pair styles, and updated the fix polarize doc page 2022-04-17 12:01:41 -05:00
44e4510251 replace vector for storing regions with unordered_set for simpler processing 2022-04-16 11:17:55 -04:00
aa4787f604 complete region handling refactor 2022-04-16 00:17:39 -04:00
cbb4abc55c improve formatting 2022-04-15 17:12:31 -04:00
69d9c5187e refactor group access, enable and apply clang-format 2022-04-15 15:29:43 -04:00
4b400fb4a6 overload count() function to pass in Region pointer directly 2022-04-14 22:00:50 -04:00
21f24ef572 Merge pull request #3218 from lammps/mdi-new-functions
MDI new functions
2022-04-14 20:48:51 -04:00
a0a82cad0b Merge pull request #3214 from stanmoore1/kk_tersoff_bugfix
Fix issues in Kokkos Tersoff and Stillinger-Weber pair styles
2022-04-14 17:28:59 -04:00
e66fb6a1c1 apply clang-format 2022-04-14 17:28:05 -04:00
64b1c45a49 update MDI library and checksum 2022-04-14 17:27:20 -04:00
56bfa90a69 adapt bpm/sphere atom style 2022-04-14 17:23:11 -04:00
20827b4105 sync with new version of MDI library 2022-04-14 15:00:09 -06:00
111111b38b Merge branch 'develop' into atomvec-strings 2022-04-14 16:52:04 -04:00
26f6976568 move errorfunction complement approximation factor into shared namespace 2022-04-14 16:47:38 -04:00
8b31edb102 programming style updates and clang-format applied 2022-04-14 16:47:10 -04:00
81e203b5fa only allow "lj" and "real" units for now 2022-04-14 16:43:59 -04:00
4380ed23d1 documentation and LAMMPS homepage URL updates 2022-04-14 15:55:22 -04:00
0cfb26799c Fix copy/paste error 2022-04-14 13:47:57 -06:00
5bd86a05b2 Merge pull request #2906 from jtclemm/BPM
Adding package for bonded particle models
2022-04-14 15:43:14 -04:00
fccca3405a fixed bug in improper amoeba 2022-04-14 13:20:14 -06:00
c5565a4e02 Small tweaks 2022-04-14 13:16:44 -06:00
5c70f45feb updates to use new funcs from Python as well 2022-04-14 10:49:12 -06:00
29582f09a1 add missing update to property_atom function API 2022-04-14 12:34:58 -04:00
ac8d97d358 capture by reference 2022-04-14 12:27:45 -04:00
31178661c9 switch to C++11 compatible lambda function capture 2022-04-14 12:27:03 -04:00
095c610a3f no more need to explicitly initialize empty fields 2022-04-14 12:00:56 -04:00
b5eb5ac686 update docs for adding atom styles to refactored process 2022-04-14 11:48:18 -04:00
500a3426ed "stringify" and "vectorize" per-atom data handling in Atom class 2022-04-14 11:31:20 -04:00
198d07e905 print warning when fix property/atom is issues before reading a restart 2022-04-14 11:06:35 -04:00
b16d48aa41 "stringify" and "vectorize" processing of per-atom attributs in AtomVec classes 2022-04-14 11:06:10 -04:00
9424c2558e enable and apply clang-format. minor cosmetic changes 2022-04-13 21:05:19 -04:00
1755d06870 Merge pull request #3216 from lammps/update-citation
update a citation
2022-04-13 19:16:57 -04:00
2c7badfa43 debug for improper amoeba 2022-04-13 17:05:44 -06:00
bc2b600f09 changes to use new MDI library functions 2022-04-13 16:26:48 -06:00
578a9ab161 bug fix for bondangle term 2022-04-13 14:52:01 -06:00
0946d41c3f Merge pull request #3215 from megmcca/snap-inner-bug
fix crash with multielement inner cutoff
2022-04-13 16:17:10 -04:00
30914a73fb Update error messages 2022-04-13 14:10:52 -06:00
44f67330e2 Port changes to other flavors of Tersoff 2022-04-13 13:50:49 -06:00
21c61a5c77 Merge pull request #3213 from akohlmey/gpu-remove-legacy
Remove support for CUDA toolkits before version 8 and GPUs older than Kepler
2022-04-13 15:10:17 -04:00
abb9880dc6 degugging on angle term 2022-04-13 12:31:23 -06:00
bd6d7b9136 clarify CUDA versus OpenCL build and runtime restrictions 2022-04-13 14:24:43 -04:00
c9ab5ebbf5 cosmetic 2022-04-13 12:59:54 -04:00
2804de8c26 fix refactoring bug 2022-04-13 12:59:41 -04:00
fb37c86632 remove duplicate 2022-04-13 12:59:30 -04:00
0f1097d7e6 recover read_restart and read_data capability for fix property/atom 2022-04-13 12:41:40 -04:00
2d5fadd88f Switch to const ref to help compiler 2022-04-13 10:27:41 -06:00
230bed0bc4 fix crash with multielement inner cutoff 2022-04-13 09:49:13 -06:00
9e94722987 Remove full neigh option in Kokkos Tersoff and SW pair styles 2022-04-13 08:14:02 -06:00
ef4e41d2a2 programming style and format updates 2022-04-12 22:52:07 -04:00
467cae9436 permissions 2022-04-12 18:43:47 -04:00
09b08ecd85 whitespace 2022-04-12 18:36:51 -04:00
8c153adceb spelling 2022-04-12 18:36:16 -04:00
e89303c202 Fix compile error with Kokkos CUDA 2022-04-12 16:31:21 -06:00
622a4a6d51 Overallocate slightly to reduce memory reallocs 2022-04-12 16:20:21 -06:00
2998462743 Add const 2022-04-12 16:07:37 -06:00
f64d405ad8 Fixing remaining errors/warnings in doc build 2022-04-12 15:59:38 -06:00
90a6a3c125 Fix typo 2022-04-12 15:57:49 -06:00
2fa99703bf Fix issues in Kokkos Tersoff and SW pair styles 2022-04-12 15:49:28 -06:00
616349c27b Merge branch 'develop' into dielectric-updates 2022-04-12 16:33:02 -05:00
f3363070e7 remove support for CUDA toolkits before version 8 and GPUs older than Kepler 2022-04-12 15:48:16 -04:00
ca37c01476 Fixing broken links/references in documentation 2022-04-12 13:36:39 -06:00
e1a7ea38a9 update a citation 2022-04-12 12:59:25 -06:00
01864189c7 dynamics testing 2022-04-12 12:54:23 -06:00
8aa4c5a0e2 debugging on angle term forces 2022-04-12 12:53:51 -06:00
929e46b5c7 remove dead code 2022-04-12 11:06:28 -04:00
e1a2423f2e modernize, initialize pointers, apply clang-format 2022-04-12 11:06:18 -04:00
2ff8ac0cb2 Merge pull request #3210 from arghdos/fix_volatile
Add non-volatile version of join function to DomainKokkos
2022-04-11 19:48:43 -04:00
d9b34d5018 more sign flipping 2022-04-11 17:03:49 -06:00
12d7ef541b Need both versions of join 2022-04-11 15:13:44 -06:00
804c43b33c Merge branch 'develop' of github.com:lammps/lammps into fix_volatile 2022-04-11 15:11:37 -06:00
c939316b99 Added check for grid points outside subdomain 2022-04-11 14:52:35 -06:00
bae9ef7e56 Added check for grid points outside subdomain 2022-04-11 14:51:15 -06:00
429163d2b2 Added check for grid points outside subdomain 2022-04-11 14:47:14 -06:00
ef53298f7c Added the omp version of pair lj/cut/coul/debye/dielectric 2022-04-11 15:45:12 -05:00
2a595713f3 Updated doc page of the set command for the local dielectric constant,
which could be used as a measure of polarizability in the future
2022-04-11 15:01:19 -05:00
73d4d243f4 revert force flip on couple of files 2022-04-11 13:53:47 -06:00
82e5b46361 fix bug with xyz multipole axes 2022-04-11 13:46:29 -06:00
b666f7324c Updated the example input script with the set command for per-atom dielectric constant 2022-04-11 14:44:02 -05:00
b05aadf877 Allowed to set the atom local dielectric values (epsilon) 2022-04-11 14:18:43 -05:00
49aebf64b9 include BPM package in multiple presets 2022-04-11 12:41:28 -04:00
9d907e31b3 recover compilation 2022-04-11 12:40:59 -04:00
36723853c9 Merge branch 'develop' into BPM 2022-04-11 12:18:34 -04:00
8161dff58a Added pair style lj/cut/coul/debye/dielectric, added conversion factor epsilon02eq for real units 2022-04-11 10:54:41 -05:00
ebc74d7428 Indice correction in EXTRA-COMPUTE/compute_born_matrix.cpp, some PBC check in EXTRA-MOLECULE/dihedral_nharmonic.cpp and MOLECULA/angle_cosine.cpp. Also added born_matrix to angle_cosine.cpp 2022-04-11 17:53:48 +02:00
236d275b2f Merge pull request #3211 from akohlmey/collected-small-changes
Collected clang-tidy updates
2022-04-11 11:07:00 -04:00
b36262cd11 cosmetic 2022-04-10 20:47:42 -04:00
d6f7570d57 avoid redundant use of boolean literals 2022-04-10 20:47:31 -04:00
74f2b67b1a no if statement required before delete[] 2022-04-10 19:55:24 -04:00
3eec2eec9a make buffer size a compile time constant and use strncpy() instead of strcpy() 2022-04-10 18:33:17 -04:00
200b4f13c7 use dynamic cast instead of c-style cast when casting from base type to derived class 2022-04-10 18:18:06 -04:00
39b316729b use auto type when assigning from cast or using new 2022-04-10 18:16:36 -04:00
6071376d42 derive ATC_Error exception class from std::exception 2022-04-10 15:25:37 -04:00
413a01ade5 apply clang-tidy updates 2022-04-10 12:07:54 -04:00
1a2d83ab01 HDF5 library may be parallel which is an error with serial LAMMPS 2022-04-10 12:07:54 -04:00
591498ab31 Updated and fixed typos in doc pages 2022-04-10 10:24:31 -05:00
a9f5a1af51 initialize class member pointers in initializer to null 2022-04-10 11:13:33 -04:00
c54fe7d97d small update 2022-04-10 08:00:47 -04:00
85b69000cd revert to use NULL instead of nullptr, so that it compiles without having to enable c++11 compatibility 2022-04-09 20:54:59 -04:00
ddf67ec42d properly use nullptr on pointers (with a little help from clang-tidy) 2022-04-09 20:27:40 -04:00
2d346638fb correctly declare and override virtual functions for desired polymorphism 2022-04-09 20:17:36 -04:00
a620f5bd7d fix pointer type bug 2022-04-09 19:59:43 -04:00
07bc76871c avoid unsafe strcpy() 2022-04-09 19:01:42 -04:00
4adeb29491 clang-tidy fixes 2022-04-09 19:00:59 -04:00
177f9cabc1 add ELECTRODE package to suitable presets 2022-04-09 18:19:55 -04:00
4e81adaf8c make buffer size for text file reader adjustable 2022-04-09 17:46:47 -04:00
fcd3e76767 skip unsupported unit tests 2022-04-09 17:45:38 -04:00
c07b06c8d1 skip unsupported unit tests 2022-04-09 17:44:40 -04:00
420dc969d3 need to set buffer size based on generated output format 2022-04-09 17:26:41 -04:00
eb9af11d64 make buffer size for text file reader adjustable 2022-04-09 17:26:03 -04:00
b20c98753f style changes 2022-04-09 10:10:33 -04:00
44ccbd2184 use internal reader/parser classes for file reading and writing 2022-04-09 10:10:19 -04:00
06fc53ac69 make timer output configurable and off by default 2022-04-09 10:08:58 -04:00
75d87383e2 one more OpenMP fix 2022-04-09 09:10:45 -04:00
a04c0077b9 silence some more compiler warnings and try to resolve issues with old compilers 2022-04-09 09:04:17 -04:00
8625a6d946 apply clang-format 2022-04-09 08:00:11 -04:00
ce62da1cca compatibility with legacy OpenMP implementations 2022-04-09 07:53:17 -04:00
71f8e11d70 join multi-line strings 2022-04-09 07:45:01 -04:00
a94fa0a840 formatting 2022-04-09 07:44:33 -04:00
23598fa658 spelling 2022-04-09 07:44:15 -04:00
7673eda947 apply clang-format 2022-04-09 07:16:22 -04:00
6dea9fa10c add missing dependency handling in GNU make build for ELECTRODE package 2022-04-09 07:10:31 -04:00
c04db4b545 modernize 2022-04-09 07:01:42 -04:00
e0c4f6164e silence compiler warnings 2022-04-09 07:01:35 -04:00
cab6fca22e update to latest upstream and modernize neighbor list request handling 2022-04-09 07:00:39 -04:00
19b42bc726 Merge branch 'develop' into electrode 2022-04-09 06:31:22 -04:00
8ce2ce8fd4 remove unused import 2022-04-09 04:02:01 -04:00
a71bf4cae5 Merge pull request #3207 from lammps/remove-message-package
remove MESSAGE package
2022-04-09 03:20:26 -04:00
8dce9f7a60 install pyyaml 2022-04-09 00:39:50 -04:00
6c87962551 fix remaining doc build issues 2022-04-09 00:39:27 -04:00
674d2a6788 Merge branch 'develop' into remove-message-package 2022-04-09 00:25:11 -04:00
8b53ff9383 Merge pull request #2921 from lammps/mdi-expand
Enhance MDI support in LAMMPS in its MDI package
2022-04-09 00:18:50 -04:00
22122092e4 Merge pull request #3206 from akohlmey/add-kimplugin
Add kimplugin source and CMake based build support
2022-04-08 23:09:13 -04:00
d0d4bbf5ae Merge pull request #3196 from akohlmey/avoid-bigint-format-scanf
Refactor code to avoid XXXINT_FORMAT defines and  xxscanf() function calls
2022-04-08 21:24:57 -04:00
5ff42d8993 simplify 2022-04-08 21:21:36 -04:00
81933b7972 silence compiler warnings 2022-04-08 21:19:32 -04:00
f3685fa8de fix bugs 2022-04-08 21:18:55 -04:00
375062d02c restore modern API usage 2022-04-08 21:18:28 -04:00
093667799d Merge branch 'develop' into mdi-expand 2022-04-08 20:58:53 -04:00
1cc913d006 Merge pull request #3205 from akohlmey/dump-style-yaml
Add dump style yaml
2022-04-08 20:55:01 -04:00
0e49bbe710 recreate data files with different angle ordering method 2022-04-08 17:16:12 -06:00
d0af0fa456 turn off terms for both amoeba and hippo 2022-04-08 16:51:08 -06:00
8cdce34b27 Merge branch 'develop' into dump-style-yaml 2022-04-08 18:42:28 -04:00
6849356d63 fix spelling, formatting, and cross-link/indexing issues 2022-04-08 18:35:51 -04:00
530d8c007d minor tweak 2022-04-08 18:09:10 -04:00
521d45dcc6 remove MESSAGE package from CMake 2022-04-08 18:00:36 -04:00
fbc55937fe Merge pull request #3198 from bathmatt/pair-dpd
DPD-BASIC kokkosification
2022-04-08 17:48:28 -04:00
da6fb4c544 Added epsilon shift to eliminate uneven tiebreaks 2022-04-08 15:47:12 -06:00
2111797ed8 more force flips in torque2force 2022-04-08 15:41:08 -06:00
dff3bc5656 Merge branch 'develop' into avoid-bigint-format-scanf 2022-04-08 17:39:25 -04:00
fc24cf15ce Merge pull request #3197 from akohlmey/custom-thermo-headers
add support for custom header keywords with thermo output and dump styles
2022-04-08 17:29:35 -04:00
b24d01fae6 remove broken links in the manual from removing packages 2022-04-08 17:27:01 -04:00
d0edc48a65 update purge list with removed source files from MESSAGE package 2022-04-08 17:26:16 -04:00
f405c7acc9 add deprecation handling removed commands and styles 2022-04-08 17:25:56 -04:00
2d2660487d flip signs for forces instead of gradients 2022-04-08 15:23:17 -06:00
6ef7d19fc0 Added a test for bgrid/local 2022-04-08 15:05:17 -06:00
3039d10742 new key files for water box example 2022-04-08 15:00:54 -06:00
ef7c6a580e simplify 2022-04-08 16:51:52 -04:00
2c509d96a6 we are not compatible with those old versions for the MDI library 2022-04-08 16:43:41 -04:00
07aecb3678 whitespace fixes and apply clang-format 2022-04-08 16:36:21 -04:00
bfaa1e9ed0 whitespace 2022-04-08 16:28:57 -04:00
a7ccb16aa8 Merge pull request #3192 from davidfir3/fep_ta
New feature compute fep/ta
2022-04-08 16:27:12 -04:00
33798b99a4 remove debug print statement 2022-04-08 14:08:51 -06:00
caa977e869 Remove redundant calls 2022-04-08 13:28:14 -06:00
f8ec0365c6 Fix a few more issues 2022-04-08 12:52:26 -06:00
d99b1258e3 remove volatile to fix build error from Kokkos commit (5574130fb333ac1745a52d4a6383ac95c64bdc0f) 2022-04-08 11:13:31 -05:00
b73437aa63 Merge pull request #3208 from arghdos/develop
Fix for building GPU backend on ROCm 5.1+
2022-04-08 07:19:27 -04:00
4efdfaa8f3 simplify and make consistent, fix time based dump bug 2022-04-08 07:05:30 -04:00
bd4d92c76d entry for mdi sub-dir in Examples.rst 2022-04-07 16:02:45 -06:00
77565add6e Add C++14 to Makefile build system
Change-Id: I24f72b4aaca93a49877775c3d181507c83cd7f82
2022-04-07 17:54:20 -04:00
ab0e5d5568 Fix for building GPU backend on ROCm 5.0+
Change-Id: I32ad9be86d6a0467ccae555a1d0272813c905e97
2022-04-07 17:48:03 -04:00
792ae5dae5 remove src/MESSAGE package and supporting dirs and doc pages 2022-04-07 15:44:48 -06:00
f40180f7fb lib README edit 2022-04-07 15:15:50 -06:00
adef9b7747 add log files to examples/mdi 2022-04-07 15:13:29 -06:00
40aa146624 Prune unused code and fix virial issue 2022-04-07 15:05:07 -06:00
0b6aa59621 updated doc pages 2022-04-07 14:42:58 -06:00
e2f25a96e1 spelling 2022-04-07 14:50:33 -04:00
ddb6350fe8 Remove unused var 2022-04-07 10:53:38 -06:00
9b969648d5 add kimplugin source and CMake based build support 2022-04-07 12:51:06 -04:00
2956aee8dc Small tweaks 2022-04-07 10:45:50 -06:00
4f67f586d0 Fix memory issue and leftover debugging 2022-04-07 10:02:58 -06:00
fdf59e6a03 more debugging for plugin library mode 2022-04-07 09:26:43 -06:00
f5add95083 fix syntax error 2022-04-07 06:08:54 -04:00
8a6e6fe523 make dump style yaml test dependent on it being available 2022-04-07 05:59:31 -04:00
3970942028 add test for yaml dump style 2022-04-07 02:44:17 -04:00
0e8e1171c6 add unit test for yaml style thermo output and updated logfile class 2022-04-07 02:07:05 -04:00
59fa0be35f update for recent changes in thermo output 2022-04-07 02:06:55 -04:00
98b908387f add unit test for yaml style thermo output and updated logfile class 2022-04-07 02:05:47 -04:00
601bdadf44 update for recent changes in thermo output 2022-04-07 02:05:05 -04:00
082254455b improve confusing error messages 2022-04-07 00:37:30 -04:00
58ecf03e5d correct yaml import 2022-04-07 00:37:18 -04:00
348ee5299e implement a dump style yaml 2022-04-06 19:11:55 -04:00
e944ecd1c2 correct docs 2022-04-06 19:10:16 -04:00
207b34ae12 allow for pre-timestepping comm with engine, e.g. for force eval 2022-04-06 16:38:58 -06:00
b1e92c9ec6 update YAML reading python example to read faster using libyaml. 2022-04-06 17:38:25 -04:00
4bd28cf920 altering how plugin mode works 2022-04-06 15:24:02 -06:00
2b8b916cba delete unused enums 2022-04-06 10:08:53 -04:00
cd7f08a8e7 support dump_modify for column headers in ADIOS dump styles 2022-04-06 09:31:01 -04:00
387b0df554 Remove gitlab pipeline 2022-04-06 08:21:12 +02:00
b4cc158981 Merge pull request #3182 from charlessievers/mliap
ML-IAP updates
2022-04-05 22:07:27 -04:00
e4f62cae9a integrated added styles into manual 2022-04-05 22:01:21 -04:00
4ad8af629d whitespace 2022-04-05 21:53:29 -04:00
f89a08985e update DPD-BASIC package examples 2022-04-05 21:50:36 -04:00
607ecf595b Add ScatterView 2022-04-05 17:04:23 -06:00
8744627059 Tiny tweaks 2022-04-05 16:04:43 -06:00
efa7116b58 Merge branch 'develop' of https://github.com/lammps/lammps into pair-dpd 2022-04-05 15:48:36 -06:00
cd0b921ed2 Merge pull request #3203 from stanmoore1/acks2_bug
Fix issues in ReaxFF QEq and ACKS2
2022-04-05 16:29:30 -04:00
65be564cd6 Review akohlmey 2022-04-05 15:35:04 +00:00
22392d226a silence compiler warnings 2022-04-04 21:11:09 -04:00
a5139d7100 make sure "NN" is initialized before it is used 2022-04-04 21:03:15 -04:00
46f88011bd input syntax include/exclude bug 2022-04-04 17:01:10 -06:00
288c154290 Merge pull request #3186 from Ruyk/kokkos-sycl-cmake
Add kokkos-sycl.cmake preset
2022-04-04 16:12:24 -04:00
c274146358 whitespace 2022-04-04 15:40:19 -04:00
3eb7194619 Merge branch 'develop' into acks2_bug 2022-04-04 15:39:44 -04:00
3e01bc48d4 Need s ghosts 2022-04-04 13:05:10 -06:00
134c77a5c6 reference kokkos-sycl.cmake in the docs 2022-04-04 14:47:53 -04:00
fd80b1bd9b Merge pull request #3201 from samueljmcameron/bugfix_dumpvtk
Bug fix in vtk dump.
2022-04-04 14:40:56 -04:00
776dc34411 Add missing vars 2022-04-04 12:28:03 -06:00
f42635a40d Should be nall not nghost 2022-04-04 12:08:38 -06:00
4fadf4c830 more debugging on plugin mode 2022-04-04 10:30:12 -06:00
b4fc86e467 Fix issues in ReaxFF QEq and ACKS2 2022-04-04 10:24:54 -06:00
02f972292c spelling 2022-04-04 12:16:28 -04:00
5d4ec45534 Merge branch 'develop' into custom-thermo-headers 2022-04-04 12:08:23 -04:00
d89ff310c1 Merge pull request #3202 from lammps/fix-deform-doc-page-edit
Fix deform doc page edit
2022-04-04 12:07:10 -04:00
a0b15c2d04 Merge pull request #3199 from lammps/misc
Misc changes
2022-04-04 11:51:59 -04:00
63a841e300 doc page edit 2022-04-04 08:59:40 -06:00
3ed011dcfb whitespace 2022-04-03 10:55:56 -04:00
028beb8da4 Merge branch 'develop' into misc 2022-04-03 10:55:24 -04:00
db00b49a50 Merge pull request #3195 from weinbe2/feature/kk-reax-ang-tors-optim
kk/reax: Preprocessing optimizations to ComputeAngular,Torsion; Modularity/Memory improvements in BuildLists
2022-04-03 09:52:08 -04:00
e5a01026a7 add unit tests for fix move 2022-04-03 03:19:47 -04:00
c9d0889f25 add "transrot" style to fix move that allows to do translation and rotation at the same time 2022-04-02 18:34:17 -04:00
584b166823 enable and apply clang-format 2022-04-02 17:20:34 -04:00
93c67a3c07 make compute msd (and msd/nongauss) error out immediately when used with a dynamic group 2022-04-02 17:13:30 -04:00
8e838c1424 Bug fix in vtk dump. 2022-04-02 12:55:51 +01:00
49abd0d269 update docs 2022-04-01 15:17:10 -04:00
fb9316701b port colname changes to MPIIO package 2022-04-01 14:57:41 -04:00
dab640220c Fix name to match code 2022-04-01 12:48:58 -06:00
ea9e3c0860 Update fix ACKS2 docs 2022-04-01 12:45:38 -06:00
2f895d63a6 Add missing variable assignment 2022-04-01 12:32:24 -06:00
fb76cb9a5c updated virtual 2022-04-01 17:54:12 +02:00
294dcc5f93 more debugging for plugin mode 2022-04-01 09:27:48 -06:00
68f27bb4cd addressing comments from Evan's review 2022-04-01 17:02:57 +02:00
ce67cb0ca1 first stab at implementing dump_modify colname 2022-04-01 07:41:13 -04:00
9c0934e82c Have ext-tstat working 2022-04-01 10:37:53 +02:00
c470c204d4 remved unused var 2022-04-01 10:35:05 +02:00
4042a52db1 rename header keyword to colname 2022-03-31 21:58:35 -04:00
4437f16e08 remove references to non-existing folders 2022-03-31 17:49:24 -04:00
335b78b4f2 Add contributing author to list 2022-03-31 15:27:05 -06:00
e3611c5d73 add support for custom keywords with thermo output 2022-03-31 17:26:46 -04:00
7ec3017b85 recreate data files for water examples 2022-03-31 15:17:08 -06:00
19a6eecfbb more debugging for plugin engine mode 2022-03-31 14:41:38 -06:00
4dc4d74056 Add back in accidentally deleted call 2022-03-31 13:10:22 -06:00
ad4701f4f7 Small tweaks 2022-03-31 12:52:36 -06:00
72874376f0 Remove #ifdef 2022-03-31 12:27:43 -06:00
79fcf18013 Remove #ifdef 2022-03-31 12:25:58 -06:00
229f0af537 enable LAMMPS as driver to use plugin engine 2022-03-31 12:09:05 -06:00
df05bbb72b moved dpd_tstat to kokkos 2022-03-31 17:20:56 +02:00
28976b8c92 recover compilation on windows with old MPICH version 2022-03-31 08:44:43 -04:00
12ddc4ad12 final set of XXXINT_FORMAT changes 2022-03-31 07:51:14 -04:00
52b563a83e modernize parsing in fix tmd, add support for comments and empty lines 2022-03-31 07:36:50 -04:00
33b6466611 add minimal fix tmd example 2022-03-31 07:31:43 -04:00
b97c30e6e7 more refactoring, modernizing, removing of debug code 2022-03-31 06:24:44 -04:00
acd9c7950e update doc and example 2022-03-31 12:25:10 +08:00
b64e90dfe0 simplify. avoid XXXINT_FORMAT macros 2022-03-30 23:43:28 -04:00
1c9dc9c0d9 correct formatting 2022-03-30 22:11:46 -04:00
d104070066 add option for dynamics to in.ubiquitin 2022-03-30 17:15:18 -06:00
65a083c83d add support for </>VELOCITIES command at nodes 2022-03-30 15:52:55 -06:00
993441b25a avoid XXXINT_FORMAT macros in fix reaxff/bonds 2022-03-30 17:52:21 -04:00
c7a9a3e2f6 simplify and replace use of XXXINT_FORMAT macros 2022-03-30 16:13:38 -04:00
d28b9818bb working changes to fix bitorsion 2022-03-30 13:02:15 -06:00
f3fa04ae0a bugfix 2022-03-30 15:01:03 -04:00
c4729b39b4 replace more uses of XXXINT_FORMAT with fmtlib 2022-03-30 13:53:25 -04:00
9162d8842d debugging 2022-03-30 11:20:33 -06:00
14f54aae40 Reax: Preprocessing optimizations to ComputeAngular,Torsion. Modularity boosts + memory reductions for BuildLists 2022-03-30 08:23:41 -07:00
5003c35963 have first cut of just pair-dpd 2022-03-30 16:22:26 +02:00
ddf93eb7ba removed unused var 2022-03-30 15:42:09 +02:00
69d32f286b Stan's patch 2022-03-30 15:10:54 +02:00
2517d1fb55 Converted DPD-BASIC-EXT to use Kokkos 2022-03-30 15:10:54 +02:00
9aad583c7d more parsing updates 2022-03-30 07:38:33 -04:00
999c880dfd simplify parsing numbers and reduce usage of BIGINT_FORMAT 2022-03-30 07:12:25 -04:00
ff3ac64b7e spelling 2022-03-30 03:32:26 -04:00
faacf575b5 add support for >+FORCES command 2022-03-29 14:20:44 -06:00
841931b92b fleshing out bitorsion fix 2022-03-29 14:09:17 -06:00
b92d117524 Merge pull request #3191 from akohlmey/collected-small-changes
Collected small changes and fixes
2022-03-29 14:45:18 -04:00
385b7a77e6 Merge pull request #3193 from samueljmcameron/stable_fix_brownian_update
BROWNIAN package update
2022-03-29 13:03:11 -04:00
2a35ec2d85 Merge pull request #3187 from stanmoore1/kk_opt_neighlist
Optimize Kokkos neigh list for GPUs
2022-03-29 12:05:34 -04:00
d9880273e3 fix typo 2022-03-29 11:54:34 -04:00
9b53bd0fbf bitorsion fix 2022-03-29 09:45:24 -06:00
b8c7a6153d whitespace 2022-03-29 09:49:48 -04:00
bfe361c576 fix doc building issues 2022-03-29 09:47:44 -04:00
5ea526728e Merge branch 'develop' into stable_fix_brownian_update 2022-03-29 08:26:11 -04:00
88ff2db715 cosmetic updates, print warnings only on MPI rank 0 2022-03-29 08:23:18 -04:00
6f1fac1c59 Updated docs. 2022-03-29 12:21:09 +01:00
c28504961d remove references to the mailing list in the manual and replace with forum link, if needed 2022-03-29 07:01:00 -04:00
dcd6bea172 one final fix in constructor of asphere. 2022-03-29 11:22:21 +01:00
27d2fab951 simplify processing for "*" in filenames for embedding timestep by using utility function 2022-03-29 06:06:48 -04:00
da61b6871a Added in check for ellipsoid in brownian_asphere 2022-03-29 10:46:05 +01:00
db5e4e05a8 fix bug that happens when fix ave/time Nfreq < thermo freq 2022-03-29 15:35:23 +08:00
0bebe6c428 First commit, things not working though. 2022-03-29 07:50:19 +01:00
015257889d flag compatibility with VTK version 9 2022-03-29 01:03:04 -04:00
b211f97efa update and improve ADIOS support
- modernize code
- remove dead code and unused definitions, enums, and includes
- create default adios2_config.xml file if it doesn't exist
- enable and apply clang-format
- update documentation
2022-03-29 01:01:57 -04:00
333e3b0491 apply clangformat 2022-03-28 22:48:00 -04:00
3ba7b8c24c add star_subst() utility function that replaces a '*' in a string with a number 2022-03-28 22:47:20 -04:00
82d0a55862 remove merge conflict message 2022-03-28 15:26:20 -06:00
365f5f7ad7 tweaks 2022-03-28 15:24:19 -06:00
6407745781 update programming style and enable/apply clang-format 2022-03-28 16:49:11 -04:00
a60e1546b2 properly integrate into build system and docs 2022-03-28 16:48:44 -04:00
60e2b84e09 Fuse loops 2022-03-28 14:43:16 -06:00
1a3c6d3dbc tweak to one MDI doc file 2022-03-28 14:33:17 -06:00
d80fe166d1 Merge branch 'develop' into collected-small-changes 2022-03-28 16:30:01 -04:00
438cba3604 update programming style to latest conventions, enable and apply clang-format 2022-03-28 16:26:55 -04:00
88c075ba90 Tune for HIP 2022-03-28 14:19:50 -06:00
48332c3b18 Rename variable 2022-03-28 14:17:44 -06:00
94645ae720 update of doc pages to match new version of MDI support 2022-03-28 13:56:16 -06:00
63caa8bb44 reorder so that kspace follows improper and comes before compute 2022-03-28 15:12:25 -04:00
120c080fc2 avoid converting a null pointer to a std::string and correct error check 2022-03-28 15:07:23 -04:00
9920b22509 programming style updates 2022-03-28 15:06:55 -04:00
cd8cdc711c Merge pull request #3189 from CDenniston/develop
remove defunct LBtype argument from lb/fluid doc
2022-03-28 14:12:00 -04:00
540cf9b6d7 Merge pull request #3188 from njzjz/kspace_plugin
support kspace style plugin
2022-03-28 11:58:40 -04:00
51c41f09bf recover unit tests for variables 2022-03-28 09:21:25 -04:00
af4afb7e03 modify error/warning message 2022-03-28 21:14:13 +08:00
ebf2b1e706 add doc for compute fep/ta 2022-03-28 20:01:59 +08:00
d7f95da8f3 add extract_setting special function to variable command 2022-03-28 08:00:29 -04:00
4545954385 reformat for wider lines 2022-03-28 07:24:51 -04:00
13228ca29a add dimension check 2022-03-28 13:34:36 +08:00
c52bffda9c remove defunct LBtype argument from lb/fluid doc 2022-03-27 11:26:23 -04:00
cf17fd2306 remap ghost atoms, no need to forward_comm() 2022-03-27 21:49:51 +08:00
603136a93b rename some function & variable, output delta area 2022-03-27 20:52:00 +08:00
7c333b8e07 include bonded eng, cancel neigh build & fix bugs 2022-03-27 20:22:16 +08:00
ff107315cb need to always extract the path to MPI include directory 2022-03-26 23:20:57 -04:00
980b6cada7 update formatting 2022-03-26 10:55:10 -04:00
36444a1db1 add DOI for 29 September 2021 version 2022-03-26 10:48:45 -04:00
356091e1e0 support kspace plugin
I need such feature in the development of deepmd-kit.
2022-03-26 03:39:07 -04:00
2e84700224 delete unused variable "pairflag" 2022-03-26 13:55:22 +08:00
dc668ed0df update to README instructions 2022-03-25 16:11:17 -06:00
55d3edef2f doc info in sequence_driver.py 2022-03-25 16:10:43 -06:00
d710d19aef Enforce pre_exchange() order for (currently) unused update option 2022-03-25 15:56:59 -06:00
4d037376af include GHub whitespace changes 2022-03-25 15:19:13 -06:00
0c1516b34d Add another missing change 2022-03-25 14:14:42 -07:00
055fefc542 finished MDI engine and test script debugging 2022-03-25 15:07:38 -06:00
d648247b80 whitespace 2022-03-25 13:03:56 -07:00
d131223161 Restore changes lost in Git shuffle 2022-03-25 12:59:45 -07:00
9f0eb2ea1a Add note about memory 2022-03-25 12:17:33 -07:00
b14086f3f9 Update docs 2022-03-25 12:12:04 -07:00
a5e22c07c7 Merge branch 'kk_npair_ghost_gpu' of github.com:stanmoore1/lammps into neigh_transpose 2022-03-25 11:49:17 -07:00
01abeda9ef Merge branch 'develop' of https://github.com/lammps/lammps into kk_npair_ghost_gpu 2022-03-25 12:08:32 -06:00
e2e046c452 add missing host overload to make Clang happy
Change-Id: Ib0bd9dec3ecc6bf13b9894b07024172a9810cd77
2022-03-25 12:05:25 -06:00
17b35878ea Add version of Kokkos Ghost neigh list optimized for GPUs 2022-03-25 12:03:20 -06:00
c3f4dac7dc Small tweak to comments 2022-03-25 09:45:05 -07:00
6dae6198a2 Add neigh transpose as Kokkos package option 2022-03-25 09:17:39 -07:00
2279b28df2 Update from upstream 2022-03-25 09:00:56 -07:00
8e9b508c88 Merge branch 'develop' of github.com:lammps/lammps into Elastic_stress 2022-03-25 16:01:35 +01:00
274db39aa5 demo of new compute style fep/ta 2022-03-25 22:41:39 +08:00
29ada4e263 Update description header 2022-03-25 11:19:59 +00:00
2ae448d9d0 Add kokkos-sycl.cmake & relevant compiler flags 2022-03-25 11:05:09 +00:00
58f59197ff silence warnings from coverity scan 2022-03-25 05:30:01 -04:00
5663a9c38b print current LAMMPS version number in configuration summary 2022-03-24 17:07:45 -04:00
4e180bc237 update URL for downloading old LAMMPS versions 2022-03-24 17:02:07 -04:00
dad8fb8b06 Removing residual files 2022-03-24 11:44:44 -06:00
0b2eda5f1d doc page edits 2022-03-24 08:43:27 -06:00
6e959b6f43 more robust response to >COORDS command 2022-03-23 17:21:00 -06:00
66f97ef6bc whitespace 2022-03-23 17:22:46 -04:00
a4018dbb4b update MDI library to version 1.3.0 2022-03-23 17:18:19 -04:00
92a968a8a9 Resolving merge conflicts 2022-03-23 14:28:27 -06:00
42dd772455 more work on plugin mode 2022-03-23 13:45:20 -06:00
9417e41676 Rename sphere/bpm, remove bond instance, add smooth option 2022-03-23 11:41:27 -06:00
c4425a1b0e debugging plugin mode 2022-03-23 11:17:51 -06:00
ace6c67697 Copy .h & .cpp from compute_fep for comparison 2022-03-23 22:26:44 +08:00
1ee40f8f8f change to tests 2022-03-22 11:11:43 -06:00
194751e800 add support for full minimizations 2022-03-22 09:32:31 -06:00
eb44b6b1fa Merge branch 'develop' into mdi-expand 2022-03-22 08:39:24 -06:00
6555c7302d debugging for series of calcs 2022-03-22 08:38:39 -06:00
2e539918c1 slight change in __init__.py to fix *.a bug 2022-03-21 22:55:28 -07:00
862e4ba67a Added different pytorch modules that allow different handling of element types and proposal for __init__.py bug fix 2022-03-21 22:45:28 -07:00
6f2c09c187 Merge branch 'develop' of github.com:lammps/lammps into Elastic_stress 2022-03-21 10:46:53 +01:00
30966dfed0 Bugfix from @weinbe2 2022-03-18 14:14:34 -06:00
e12e06198c enable long md and min runs 2022-03-17 17:58:26 -06:00
cf06f71514 more refactoring of MDI engine 2022-03-16 17:46:01 -06:00
396a95f7af Merge pull request #12 from weinbe2/neigh_transpose
Addition of a  "smart" transpose routine with scratch memory staging
2022-03-16 12:29:21 -06:00
d49c27e362 Added a "smart" transpose routine with scratch memory staging for neighbor table transposes between LR and LL 2022-03-16 14:12:20 -04:00
afc634eef2 Merge branch 'develop' of https://github.com/lammps/lammps into neigh_transpose 2022-03-16 08:44:09 -06:00
7215939a89 Streamline documentation 2022-03-16 10:47:56 +00:00
8d341e0714 remove EVAL command 2022-03-15 17:13:15 -06:00
99fa769800 more syncing 2022-03-15 16:15:57 -06:00
2a171cf2a2 sync new and old versions with current LAMMPS 2022-03-15 16:10:54 -06:00
636f00276e sync with current Modify methods for fix lookup 2022-03-15 14:12:23 -06:00
ab82590437 change name of 2 new fixes to include amoeba 2022-03-15 13:40:29 -06:00
7a32832b88 bug fixes 2022-03-15 09:35:42 -06:00
1d86b3e270 reading of bitorsion data file 2022-03-14 18:08:14 -06:00
1dda3055c2 enable tinker2lmp.py to generate bitorsions 2022-03-14 14:31:03 -06:00
b48d35d3db initial version of fix bitorsion 2022-03-14 12:23:01 -06:00
fd980e8fe0 support for writing data files to fix pitorsion 2022-03-11 11:12:59 -07:00
1a04eabb5e merge in current develop 2022-03-11 10:01:25 -07:00
8ba4e7e897 tweaks to src files, added examples dir 2022-03-11 09:33:34 -07:00
f7f8deb70b amoeba vs hippo settings 2022-03-11 07:24:18 -07:00
90b33a1a3a changed bookkeeping of forces 2022-03-10 16:41:58 -07:00
0658844e04 first working version of fix pitorsion 2022-03-10 16:00:05 -07:00
d5bc69f28b support for writing data files 2022-03-09 17:41:42 -07:00
bbe065e649 initial version of fix pitorsion 2022-03-09 15:37:19 -07:00
844ea0ab8e UB testing 2022-03-08 15:37:16 -07:00
1249c713f0 Add transpose to neigh list 2022-03-08 14:28:06 -07:00
095ddbd370 debugging 2022-03-08 13:49:47 -07:00
30f62cae09 energy/virial tallying for UB bonds 2022-03-08 13:41:16 -07:00
c62f6a3ad0 remove a data file with UB bonds 2022-03-08 13:28:54 -07:00
64becd5642 move UB bonds to angle amoeba 2022-03-08 13:28:11 -07:00
9742817ba3 Dihedrals analytical results of compute_born_matrix are still wrong but, in some low deformations cases, they are ok. This is a progress... 2022-03-08 10:16:30 +01:00
7087dfc019 bug fix for enumerating Urey-Bradley bonds 2022-03-07 11:02:44 -07:00
5c10b621b3 add pitorion logic to new fix 2022-03-07 10:31:09 -07:00
67a7764086 Initalizing nullptrs, fixing labels, small errors in doc, and sign errors in rot sliding damp 2022-03-05 17:07:02 -07:00
60b7da84db add comment of something to check 2022-03-04 13:56:55 -07:00
85d4312703 add pitorsions to tinker2lmp.py 2022-03-04 13:52:04 -07:00
4deeb15043 new pitorsion class 2022-03-04 09:36:58 -07:00
1f456a447c add support for Urey-Bradley H-H bonds 2022-03-03 09:23:33 -07:00
4c57b8f1db Remove duplicate etypes setting 2022-03-01 19:44:17 +00:00
0edda42eee Bugfix macro inversion 2022-03-01 17:58:56 +01:00
09e544cb8c Changed label of compute_angles/dihedrals for better reading. compute_dihedrals is not working ATM. Also implemented some changes from AThompson. 2022-03-01 16:58:14 +01:00
cd9d3ae5d3 Merge branch 'Elastic_stress' of github.com:Bibobu/lammps into Elastic_stress 2022-03-01 11:04:39 +01:00
27c1ed86fa Added some self-citations for key contributors 2022-02-25 17:03:45 -07:00
d26f953a0a Made the example match the benchmark of Kluge et al. 2022-02-25 15:25:47 -07:00
6e74d0a09a LAMMPS GridComm patch 2022-02-25 08:13:16 +00:00
313d850dd2 Created a Born matrix example for silicon 2022-02-21 19:38:28 -07:00
a9c7d47072 Found parenthesis error in compute_angles(). Now perfect fit with numdiff. 2022-02-21 10:59:37 +01:00
1dae118419 Merged A. Thompson symmetric sheared. Added a bit more explicit comment on virial_addon computation. 2022-02-21 09:40:22 +01:00
67ffef094d Switch shear strain fields to symmetric 2022-02-20 13:51:14 -07:00
f205567fa6 add born/matrix support to hybrid pair styles 2022-02-20 07:15:11 -05:00
e4027ba98a update example input files 2022-02-20 06:35:35 -05:00
c1dfd944af turn some warnings into errors and produce better error messages 2022-02-20 06:07:39 -05:00
60a6747c0e must propagate and check born_matrix_enable flag 2022-02-20 05:51:51 -05:00
bd48c49c2b enable and apply clang-format 2022-02-20 05:51:16 -05:00
7d79a7822b Merge branch 'develop' into Elastic_stress 2022-02-20 05:28:42 -05:00
a3c6d19599 Merged comments modification in EXTRA-COMPUTE/compute_born_matrix from A. Thompson and G. Clavier. 2022-02-20 11:22:20 +01:00
c04f4a913f Thomas-Fermi 2022-02-20 07:47:28 +00:00
bc8d1e0f84 Tweaked one comment 2022-02-19 20:55:37 -07:00
407df3127b Cleaned up source files 2022-02-19 20:21:02 -07:00
4ca5441cf1 Updated documentation 2022-02-19 19:25:02 -07:00
61377f41ad Replaced Si.sw with a simlink to potentials dir 2022-02-19 18:01:37 -07:00
f1f2cebf98 Rearranged the directory tree for ELASTIC_T and BORN_MATRIX 2022-02-19 17:59:27 -07:00
c8ae3c45ac Removed cij_nvt directory and updated RADME 2022-02-19 17:09:39 -07:00
335fa2e742 Addd born/matrix numdiff to example 2022-02-19 17:07:21 -07:00
39f8ccdb42 Fixing an overlooked merge conflict 2022-02-18 15:33:26 -07:00
642b1e25f6 Updating to develop 2022-02-18 13:58:38 -07:00
5a95b35fb3 Adding bondstyle restart and fixing a few labels 2022-02-18 10:22:08 -07:00
ae72356961 Removed unnecessary declarations in compute_born_matrix numdiff part. Commented virial_addon method. 2022-02-15 23:26:40 +01:00
2f281b3184 Merge branch 'develop' of github.com:lammps/lammps into Elastic_stress 2022-02-15 16:19:03 +01:00
374a172246 Changed "exclude" keyword to "overlap"
+ added new error description to header file
+ minor fix in the doc file
2022-02-14 12:46:44 +01:00
563f98b898 Some changes in examples directory, nothing important for now 2022-02-12 12:38:58 +01:00
397889e697 Modifications to virial addon contributions 2022-02-10 19:55:23 -07:00
4f36dad942 Removed the bogus loop in numdiff and manually se the factors in numdiff. 2022-02-10 11:51:03 +01:00
efa5db4c58 ELECTRODE package 2022-02-10 11:33:38 +01:00
4d6fcb3a8b Merge branch 'develop' of https://github.com/lammps/lammps into Elastic_stress before comiting to pull request 2022-02-08 16:46:23 +01:00
9ed13157eb Added examples/cij_nvt/in.lj* changes to make Git happy. 2022-02-08 16:42:33 +01:00
9833e5bc66 Hopefully got compute_born_matrix numdiff method working. Also added two BORN_MATRIX examples. 2022-02-08 16:40:52 +01:00
78cf0365e6 bugfixes 2022-02-08 02:13:42 +01:00
ba89ad546a Tried to make the fusion with Aidan Thomps modification of compute_born + several headers issues (essentially adding override flag to virtual methods) 2022-02-07 00:12:27 +01:00
b6822a18f7 Merge branch 'Elastic_stress' of github.com:Bibobu/lammps into Elastic_stress 2022-02-06 20:04:51 +01:00
a110b1d475 1) Added born_matrix method to bond_harmonic, angle_cosine_squared and dihedral_nharmonic
2) Changed compute_born_matrix so it can takes arguments pair bond angle dihedral to output only selected elements. Also moved flags to creator method and added error/warning messages
2022-02-06 20:00:55 +01:00
4de02c7f2f Tweaked input script 2022-02-04 16:28:29 -07:00
652ff43f64 Got a good match with some Born elements with P != 0 2022-02-03 21:58:25 -07:00
ea0b4f0f33 Got a good match with some Born elements with P != 0 2022-02-03 18:16:21 -07:00
7cd9975e29 Fixed one obvious error in numdiff version, matching analytic quite well for P~=0, need to fix addon term 2022-02-03 17:44:47 -07:00
330dd6a7a8 Documentation update for maxtries & exclude 2022-02-03 23:18:51 +01:00
b06d4a3300 exclude_cutoff to exclude_radius 2022-02-03 21:58:14 +01:00
1da12feafc Prepared for implementation of exclude
- maxtries returned as separate option
- errors for incompatible options (var with single + new)
2022-02-01 00:46:15 +01:00
1b6f850d42 Prepared for implementation 2022-02-01 00:17:21 +01:00
b7c8ab639c Dummy change 2022-01-30 16:44:35 -07:00
7a14cf765f Fixed silent error in albe[][] 2022-01-30 16:34:49 -07:00
c09e3c0890 Updated documentation 2022-01-30 16:27:33 -07:00
fb2f7f1b99 Merge branch 'Elastic_stress' of github.com:athomps/lammps into Elastic_stress 2022-01-30 16:19:20 -07:00
d79a96caae Updated documentation 2022-01-30 16:18:34 -07:00
cc9c578006 Got all the pieces in, now just need to get the right answer 2022-01-30 15:52:16 -07:00
0f85809acf Created branch on athomps/lammps repo 2022-01-30 12:37:33 -07:00
fc13c95c85 tweaks and bugs 2022-01-24 20:55:28 +01:00
86ee1f5a1f updated create_atoms.h/cpp with accumulated changes 2022-01-24 20:38:51 +01:00
5142934a26 update to modern matrix representation 2022-01-22 16:38:58 -05:00
78ed631877 spelling 2022-01-22 16:30:03 -05:00
fa88dacd7b integrate into manual and build/source code system. apply conventions 2022-01-22 16:29:48 -05:00
5db5322902 move compute to its designated location 2022-01-22 16:24:07 -05:00
3ff1902b57 Renamed born method born_matrix in all classes. Changed compute_born to compute_born_matrix. Changed the compute coding to suit the LAMMPS style rules better. 2022-01-21 18:39:16 +01:00
8531622966 Merge branch 'develop' of https://www.github.com/lammps/lammps into Elastic_stress 2022-01-20 09:53:07 +01:00
f420bce07e First commit of the Elastic constant computation compute modification 2022-01-20 09:52:24 +01:00
c17eb14739 Fixing memory leak and wrong label 2022-01-14 15:45:18 -07:00
524d86605a Fixing reference in documentation 2022-01-12 10:56:30 -07:00
19abc5d329 Merge branch 'develop' into BPM 2022-01-12 10:52:11 -07:00
82b7b2f3ea Simplified access of force errors 2022-01-04 14:02:29 -07:00
499bae77bd Tweak 2021-12-30 12:02:53 -07:00
0e82877302 Tweak 2021-12-30 11:51:16 -07:00
ad307fb784 Added script for RMSE on numerical forces 2021-12-30 11:43:32 -07:00
4a7f726395 Minor tweak 2021-12-23 17:40:59 -07:00
57aedc500e Added a numerical force test, not automated 2021-12-23 17:40:29 -07:00
567c5c7334 Fixed sign error that now gives wonderful energy conservation 2021-12-23 16:37:23 -07:00
6de9c09730 Tweaked econs.py 2021-12-23 16:35:30 -07:00
19d469222a Added test for energy conservation 2021-12-23 16:28:25 -07:00
addb8948f9 Able to run dynamics smoothly, does not conserve energy, but maybe that is a feature 2021-12-23 15:01:41 -07:00
75f60fc30a document improper amoeba better 2021-12-20 13:16:36 -07:00
6c85c7f7da tweak input test script 2021-12-20 11:50:11 -07:00
08c5644d68 fixed bondangle cross term in angle amoeba potential 2021-12-20 11:35:32 -07:00
7bfc2f2b8f angle amoeba with cross-term 2021-12-16 08:38:23 -07:00
c479d78854 add stretch-bend cross term 2021-12-15 16:34:28 -07:00
67f7e44688 changes to angle and improper amoeba terms 2021-12-15 11:44:38 -07:00
744e615dbb Revamping public methods for history, adding support for bond react 2021-12-13 17:35:53 -07:00
c69edde55c Eliminated several undefined variables 2021-12-10 18:30:44 -07:00
161fdec540 add improper amoeba class 2021-12-10 12:52:11 -07:00
668d7805d6 Fixes to doc 2021-12-10 11:34:12 -07:00
439853c4a8 Moving store/local to an internal fix 2021-12-10 10:33:52 -07:00
455cb09cf4 Adding compatability with MC fixes, set_array to property/atom, faster update/special/bonds, single methods, and misc small changes 2021-12-08 16:47:42 -07:00
f3eac179e6 Expanding broken bonds documentation, adding support for more create/delete bond commands, misc small edits 2021-12-06 17:27:25 -07:00
40258f8b9a Adding Steve's edits in documenation + associated changes in files 2021-12-03 16:12:31 -07:00
7113334f99 Fixing typos in documentation 2021-11-29 16:19:45 -07:00
5fa185bfda Fixing bug in failing to update values across runs 2021-11-29 14:04:07 -07:00
47f3f9d44a Merge branch 'develop' of github.com:Iximiel/lammps into develop 2021-11-18 14:36:45 +01:00
c918b6fbcc removed example dump file 2021-11-18 14:36:38 +01:00
8faa750f21 Merge branch 'lammps:develop' into develop 2021-11-18 14:34:12 +01:00
4646671e70 added examples 2021-11-18 14:32:39 +01:00
a759987515 added examples 2021-11-18 14:31:21 +01:00
a5df494176 added examples 2021-11-18 14:30:26 +01:00
b06a70c33c corrected some errors in the manual 2021-11-18 12:40:10 +01:00
7a914c84d7 again correction in the documentation 2021-11-12 16:25:48 +01:00
0eb227e7de working on the documentation 2021-11-12 14:55:48 +01:00
fe5f00bbea Updating the documentation, now 'make html' do not give errors 2021-11-12 14:37:16 +01:00
bfc34023b1 working on the documentation 2021-11-12 12:01:05 +01:00
cfe08ba55f working on the manual 2021-11-12 10:32:04 +01:00
c488e912e6 adding the pair_smatb to lammps documentation 2021-11-11 17:01:03 +01:00
80efc8839a fixed a grammar mistake 2021-11-11 16:36:48 +01:00
bdc4f7fb18 styled the headers 2021-11-11 16:27:09 +01:00
1c0e6578b6 changed some comments 2021-11-11 16:12:26 +01:00
4f4b18ab7e addig smatb pairs 2021-11-11 16:06:42 +01:00
acb1c8e7f2 Moving update/special/bonds into bond style to ensure correct fix ordering 2021-11-07 17:55:53 -07:00
f5626a2b9d Few more merge conflicts 2021-11-02 12:29:49 -06:00
679132b607 Replacing some needed header files 2021-11-02 12:10:20 -06:00
d7f7835069 Fix merge conflicts, minor style fixes 2021-11-01 18:13:06 -06:00
e3c9d7936b Merge branch 'develop' of github.com:lammps/lammps into coo_opt 2021-11-01 17:00:13 -06:00
f05807f38e Revert 647380a 2021-11-01 14:34:50 -06:00
3d2a97b4a9 Fix bug in Kokkos neighborlist where stencil wasn't updated for occasional list 2021-11-01 14:07:04 -06:00
7e08525ce3 Merge branch 'master' of https://github.com/lammps/lammps into coo_opt 2021-11-01 12:57:26 -06:00
591af3f560 Eliminated obvious but hard to find error in neighbor list request 2021-10-29 07:49:15 -06:00
dcf521be53 Fixed a few more problems, but still no joy 2021-10-29 06:34:32 -06:00
ae3e6e423a Fix loop level 2021-10-27 13:51:41 -06:00
2ca7dcb853 Use lighter construct than powint 2021-10-27 13:41:29 -06:00
2d52821cf5 Update from develop 2021-10-27 13:14:29 -06:00
6d5506353b Eliminated a few mistakes,s till not working 2021-10-24 15:45:24 -06:00
1450af8ba1 Latest version of PairGrid 2021-10-22 17:01:20 -06:00
647380a357 Avoid bitshift that gave incorrect results on GPU 2021-10-20 13:21:07 -06:00
657fcfa30d added support for dihedral (torsion) calcs 2021-10-19 17:29:53 -06:00
a2f62ae2db angles issue with angle vs anglep 2021-10-19 16:10:51 -06:00
01d96fc684 Whitespace 2021-10-15 12:50:46 -06:00
d97e55d54a Precompute some sqrt factors 2021-10-15 11:53:54 -06:00
23cd143aae Merge branch 'master' of github.com:lammps/lammps into coo_opt 2021-10-15 10:54:16 -06:00
17316f92c7 Add optimized version of compute_orientorder_atom from Tomas Oppelstrup (LLNL) 2021-10-12 07:50:05 -07:00
69e600c404 Misc updates and style fixes 2021-10-06 14:13:48 -06:00
e698d295fc Fixed some parsing errors, more waiting 2021-10-03 18:35:54 -06:00
f41d650294 Added non-working pair script 2021-10-03 17:59:33 -06:00
8bddc801df First successful compile of pair style 2021-10-03 17:55:55 -06:00
7eba439388 add special_bonds command to water examples 2021-09-27 14:29:11 -06:00
faf9c1532a issue with EVAL command 2021-09-24 16:26:57 -06:00
0f2bebdb9b Adding bpm/spring pairstyle, misc small edits 2021-09-24 10:45:46 -06:00
be17d775e0 more debugging 2021-09-23 15:12:07 -06:00
c855c6f0ab rename 2 version to regular version 2021-09-23 12:55:28 -06:00
8b69b232a8 rename old version to old in filename 2021-09-23 12:48:43 -06:00
dcfdddf83f more bug fixes for new MDI classs 2021-09-23 12:39:11 -06:00
18f0d2e1b5 Adding spring bondstyle 2021-09-20 18:06:10 -06:00
0029ed106b more adjustments to MDI engine code 2021-09-10 17:59:19 -06:00
1e26fe2d6f support for reset_box and create_atom commands 2021-09-09 17:16:33 -06:00
5e0c754d04 Fixing style issues 2021-09-09 14:17:39 -06:00
f9a972220e Fixing data compression in history, small update to model 2021-09-09 09:00:21 -06:00
0e72aae0a3 Adding examples and misc bug fixes 2021-09-08 18:39:56 -06:00
6193ebaba7 remove earlier USER-MDI files 2021-09-03 16:01:16 -06:00
481d6128c7 Merge branch 'master' into mdi-expand 2021-09-03 15:51:34 -06:00
a8a97962d2 more changes for AIMD testing 2021-09-03 15:50:17 -06:00
75cb6fc51b added support for LAMMPS as MDI AIMD driver 2021-09-02 17:52:10 -06:00
55f20288b1 Merge branch 'master' into mdi-expand 2021-08-30 16:52:49 -06:00
328e730c8f Merge branch 'master' into mdi-expand 2021-08-30 14:31:29 -06:00
d2984d2615 Merge branch 'master' into BPM 2021-08-27 10:04:04 -06:00
bb720626e3 Adding files for BPM 2021-08-27 09:22:56 -06:00
b6187b1989 add null check to new 4d memory method 2021-08-26 15:53:31 -06:00
e857911088 add null check to new 4d memory method 2021-08-26 15:52:16 -06:00
115d8d7c44 update Tinker conversion tool 2021-08-26 15:12:02 -06:00
29d5505f43 remove debug line 2021-08-26 15:10:59 -06:00
c0b31c4384 remove unneeded file 2021-08-26 15:10:10 -06:00
9f46071226 fix example problems 2021-08-26 15:09:27 -06:00
0a4e85a1f3 Added README.grid 2021-08-26 11:58:39 -06:00
db58cec057 Resolved memory management issue exposed by RCB in in.grid.test 2021-08-26 11:52:46 -06:00
ea3c89165a Resolved memory management issue exposed by RCB in in.grid.test 2021-08-26 11:52:06 -06:00
78f9c7b478 Declared victory on compute grid and grid/local 2021-08-25 17:52:53 -06:00
5bf13b2f3c Declared victory on compute grid and grid/local 2021-08-25 17:50:40 -06:00
9c095e8d76 new AMOEBA package 2021-08-25 16:29:22 -06:00
bed13d9c63 simply example scripts 2021-08-25 14:09:58 -06:00
b2b807f9b9 initial version of AMOEBA/HIPPO force field files 2021-08-25 13:53:31 -06:00
f473ca498b Created in.grid.local, fixed some problems in src 2021-08-22 19:24:23 -06:00
1b1f6f29c2 Updated grid.py to use sna/grid/local compute, but it seg-faults 2021-08-22 18:44:35 -06:00
94c97e83a2 Added this helper file 2021-08-22 18:30:02 -06:00
347e5a5978 Created local grid that is used to populate global grid 2021-08-22 16:03:50 -06:00
64d7b73d7c Update region.rst
Include a few lines describing the "ellipsoid" option
2021-08-09 07:54:41 +02:00
35aeadfdd4 implementation of a "ellipsoidal" region option
Based on the code of the region_sphere and the code described in https://www.geometrictools.com/Documentation/DistancePointEllipseEllipsoid.pdf, an option for axis-aligned ellipsoidal regions has been implemented
2021-08-08 17:01:51 +02:00
a0197644f0 Merge remote-tracking branch 'origin/master' into compute-grid-new 2021-07-30 10:04:09 -06:00
162868f13c Readded r=0 check 2021-07-30 10:01:20 -06:00
6d75912f7a Switched to local array 2021-07-28 18:34:08 -06:00
614c3bc5b9 Merged in old compute-grid 2021-07-19 14:44:08 -06:00
6378d1d128 Moved SNAP files to ML-SNAP 2021-07-14 13:50:49 -06:00
2cf00a382e Completed merge to current master 2021-07-14 13:47:55 -06:00
07db7a4095 Changed to different check_local() 2021-07-14 13:35:05 -06:00
4c22f094de Minor tweak 2021-07-02 18:15:55 -06:00
e17ace385d First pass at distributed memory for grid 2021-07-02 17:47:45 -06:00
39039d261f Test6 2021-07-02 15:37:49 -06:00
01475cb3a8 Test3 2021-07-02 15:35:59 -06:00
e102864c2d Test2 2021-07-02 15:13:40 -06:00
442585313c Test 2021-07-02 15:11:14 -06:00
cf6570d812 Tweaked comments in grid examples 2021-07-02 15:06:19 -06:00
f8ebcff078 changes to mdi_engine 2021-06-22 09:36:40 -06:00
8761ae65a3 Merge branch 'master' into mdi-expand 2021-06-10 09:50:23 -06:00
41d7038c1e trial versions of new mdi_engine and fix_mdi_engine 2021-05-27 17:24:29 -06:00
a3e204a99d Simplified reset_extra_dof 2021-03-17 16:23:04 +10:00
97f90f1146 Cleaned up math for clarity 2021-03-17 15:56:48 +10:00
471cfa8ac3 Fixed inconsistent default extra_dof value 2021-03-17 14:31:17 +10:00
aad0a9a0f3 Updated documentation to reflect changes in compute_temp_profile 2021-03-17 14:14:33 +10:00
b1b7f7a248 Fixed treatment of DoF when streaming velocity not subtracted in some dimensions 2021-03-17 13:59:16 +10:00
5e4dd5321c Using local dof and tfactor for compute_array to prevent overwrite 2021-03-17 13:38:51 +10:00
c643389ec4 Treat extra_dof as system-wide in compute_array for consistency, and include fix_dof 2021-03-17 11:38:07 +10:00
ab07427339 Corrected default extra_dof 2021-03-17 09:52:05 +10:00
4295dd2dbc Wrong number 2020-05-25 17:09:32 -06:00
4bfb505123 Added reviewer response doc 2020-05-25 16:35:50 -06:00
4a261f3961 Added python example (!) and turned on switching function 2020-05-23 10:18:16 -06:00
651e9c6397 Initialized arrays to NULL 2020-05-19 11:01:31 -06:00
2fa9e5fefb Completed brute force parallel implementation using MPI_Allreduce() 2019-10-24 19:48:41 -06:00
b44b1f94b7 Merge remote-tracking branch 'upstream/master' into compute-grid 2019-10-24 17:47:03 -06:00
59e3b4c5ba Fixed bug in lammps.py 2019-10-24 16:12:23 -06:00
5956908cfd Added cols for coords 2019-10-23 21:51:36 -06:00
0fc325c98b Got a first pass working for ortho and tri grids 2019-10-23 18:56:21 -06:00
8374280383 Got a first pass working for ortho and tri grids 2019-10-23 18:46:28 -06:00
762ecf8f0e Completed serial version with PBC, but incorrect 2019-10-19 17:03:19 -06:00
ea9c1002fe Created placeholders for ComputeGrid and ComputeSNAGrid classes 2019-10-11 17:51:19 -06:00
2e2b1b3687 Initial commit... 2019-05-02 15:17:31 +01:00
3989 changed files with 364526 additions and 119699 deletions

1
.gitattributes vendored
View File

@ -3,6 +3,7 @@
.github export-ignore
.lgtm.yml export-ignore
SECURITY.md export-ignore
CITATION.cff export-ignore
* text=auto
*.jpg -text
*.pdf -text

View File

@ -5,8 +5,8 @@ Thank your for considering to contribute to the LAMMPS software project.
The following is a set of guidelines as well as explanations of policies and work flows for contributing to the LAMMPS molecular dynamics software project. These guidelines focus on submitting issues or pull requests on the LAMMPS GitHub project.
Thus please also have a look at:
* [The guide for submitting new features in the LAMMPS manual](https://lammps.sandia.gov/doc/Modify_contribute.html)
* [The guide on programming style and requirement in the LAMMPS manual](https://lammps.sandia.gov/doc/Modify_contribute.html)
* [The guide for submitting new features in the LAMMPS manual](https://www.lammps.org/doc/Modify_contribute.html)
* [The guide on programming style and requirement in the LAMMPS manual](https://www.lammps.org/doc/Modify_style.html)
* [The GitHub tutorial in the LAMMPS manual](http://lammps.sandia.gov/doc/Howto_github.html)
## Table of Contents

6
.github/codecov.yml vendored
View File

@ -7,7 +7,7 @@ coverage:
threshold: 10%
only_pulls: false
branches:
- "master"
- "develop"
flags:
- "unit"
paths:
@ -16,14 +16,14 @@ coverage:
project:
default:
branches:
- "master"
- "develop"
paths:
- "src"
informational: true
patch:
default:
branches:
- "master"
- "develop"
paths:
- "src"
informational: true

6
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"

View File

@ -5,12 +5,19 @@ on:
push:
branches: [develop]
workflow_dispatch:
jobs:
analyze:
name: Analyze
if: ${{ github.repository == 'lammps/lammps' }}
runs-on: ubuntu-latest
permissions:
security-events: write
actions: read
contents: read
strategy:
fail-fast: false
matrix:
@ -18,17 +25,17 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Setup Python
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
config-file: ./.github/codeql/${{ matrix.language }}.yml
@ -46,4 +53,4 @@ jobs:
cmake --build . --parallel 2
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@v2

View File

@ -5,6 +5,8 @@ on:
push:
branches: [develop]
workflow_dispatch:
jobs:
build:
name: Windows Compilation Test
@ -13,12 +15,12 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Select Python version
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: '3.10'
@ -26,6 +28,7 @@ jobs:
shell: bash
run: |
python3 -m pip install numpy
python3 -m pip install pyyaml
cmake -C cmake/presets/windows.cmake \
-D PKG_PYTHON=on \
-S cmake -B build \

View File

@ -5,6 +5,8 @@ on:
push:
branches: [develop]
workflow_dispatch:
jobs:
build:
name: MacOS Unit Test
@ -15,7 +17,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 2
@ -26,7 +28,7 @@ jobs:
run: mkdir build
- name: Set up ccache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ${{ env.CCACHE_DIR }}
key: macos-ccache-${{ github.sha }}
@ -37,6 +39,7 @@ jobs:
working-directory: build
run: |
ccache -z
python3 -m pip install pyyaml
cmake -C ../cmake/presets/clang.cmake \
-C ../cmake/presets/most.cmake \
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \

91
CITATION.cff Normal file
View File

@ -0,0 +1,91 @@
# YAML 1.2
---
cff-version: 1.2.0
title: "LAMMPS: Large-scale Atomic/Molecular Massively Parallel Simulator"
type: software
authors:
- family-names: "Plimpton"
given-names: "Steven J."
- family-names: "Kohlmeyer"
given-names: "Axel"
orcid: "https://orcid.org/0000-0001-6204-6475"
- family-names: "Thompson"
given-names: "Aidan P."
orcid: "https://orcid.org/0000-0002-0324-9114"
- family-names: "Moore"
given-names: "Stan G."
- family-names: "Berger"
given-names: "Richard"
orcid: "https://orcid.org/0000-0002-3044-8266"
doi: 10.5281/zenodo.3726416
license: GPL-2.0-only
url: https://www.lammps.org
repository-code: https://github.com/lammps/lammps/
keywords:
- "Molecular Dynamics"
- "Materials Modeling"
message: "If you are referencing LAMMPS in a publication, please cite the paper below."
preferred-citation:
type: article
doi: "10.1016/j.cpc.2021.108171"
url: "https://www.sciencedirect.com/science/article/pii/S0010465521002836"
authors:
- family-names: "Thompson"
given-names: "Aidan P."
orcid: "https://orcid.org/0000-0002-0324-9114"
- family-names: "Aktulga"
given-names: "H. Metin"
- family-names: "Berger"
given-names: "Richard"
orcid: "https://orcid.org/0000-0002-3044-8266"
- family-names: "Bolintineanu"
given-names: "Dan S."
- family-names: "Brown"
given-names: "W. Michael"
- family-names: "Crozier"
given-names: "Paul S."
- family-names: "in 't Veld"
given-names: "Pieter J."
- family-names: "Kohlmeyer"
given-names: "Axel"
orcid: "https://orcid.org/0000-0001-6204-6475"
- family-names: "Moore"
given-names: "Stan G."
- family-names: "Nguyen"
given-names: "Trung Dac"
- family-names: "Shan"
given-names: "Ray"
- family-names: "Stevens"
given-names: "Mark J."
- family-names: "Tranchida"
given-names: "Julien"
- family-names: "Trott"
given-names: "Christian"
- family-names: "Plimpton"
given-names: "Steven J."
title: "LAMMPS - a flexible simulation tool for particle-based materials modeling at the atomic, meso, and continuum scales"
journal: "Computer Physics Communications"
keywords:
- Molecular dynamics
- Materials modeling
- Parallel algorithms
- LAMMPS
month: 2
volume: 271
issn: 0010-4655
pages: 108171
year: 2022
references:
- title: "Fast Parallel Algorithms for Short-Range Molecular Dynamics"
type: article
journal: Journal of Computational Physics
volume: 117
number: 1
pages: "1-19"
year: 1995
issn: 0021-9991
doi: 10.1006/jcph.1995.1039
url: https://www.sciencedirect.com/science/article/pii/S002199918571039X
authors:
- family-names: "Plimpton"
given-names: "Steve"

View File

@ -4,10 +4,8 @@ This directory contains 5 benchmark problems which are discussed in
the Benchmark section of the LAMMPS documentation, and on the
Benchmark page of the LAMMPS WWW site (https://www.lammps.org/bench.html).
This directory also has several sub-directories:
This directory also has one sub-directories:
FERMI benchmark scripts for desktop machine with Fermi GPUs (Tesla)
KEPLER benchmark scripts for GPU cluster with Kepler GPUs
POTENTIALS benchmarks scripts for various potentials in LAMMPS
The results for all of these benchmarks are displayed and discussed on

615
cmake/CMakeLists.jpeg Normal file
View File

@ -0,0 +1,615 @@
cmake_minimum_required(VERSION 3.10)
# When using CMake 3.4 and later, don't export symbols from executables unless
# the CMAKE_ENABLE_EXPORTS variable is set.
if(POLICY CMP0065)
cmake_policy(SET CMP0065 NEW)
endif()
if (POLICY CMP0077)
cmake_policy(SET CMP0077 NEW)
endif()
if(CMAKE_EXECUTABLE_SUFFIX)
set(CMAKE_EXECUTABLE_SUFFIX_TMP ${CMAKE_EXECUTABLE_SUFFIX})
endif()
project(libjpeg-turbo C)
set(VERSION 2.1.3)
set(COPYRIGHT_YEAR "1991-2022")
string(REPLACE "." ";" VERSION_TRIPLET ${VERSION})
list(GET VERSION_TRIPLET 0 VERSION_MAJOR)
list(GET VERSION_TRIPLET 1 VERSION_MINOR)
list(GET VERSION_TRIPLET 2 VERSION_REVISION)
function(pad_number NUMBER OUTPUT_LEN)
string(LENGTH "${${NUMBER}}" INPUT_LEN)
if(INPUT_LEN LESS OUTPUT_LEN)
math(EXPR ZEROES "${OUTPUT_LEN} - ${INPUT_LEN} - 1")
set(NUM ${${NUMBER}})
foreach(C RANGE ${ZEROES})
set(NUM "0${NUM}")
endforeach()
set(${NUMBER} ${NUM} PARENT_SCOPE)
endif()
endfunction()
pad_number(VERSION_MINOR 3)
pad_number(VERSION_REVISION 3)
set(LIBJPEG_TURBO_VERSION_NUMBER ${VERSION_MAJOR}${VERSION_MINOR}${VERSION_REVISION})
# CMake 3.14 and later sets CMAKE_MACOSX_BUNDLE to TRUE by default when
# CMAKE_SYSTEM_NAME is iOS, tvOS, or watchOS, which breaks the libjpeg-turbo
# build. (Specifically, when CMAKE_MACOSX_BUNDLE is TRUE, executables for
# Apple platforms are built as application bundles, which causes CMake to
# complain that our install() directives for executables do not specify a
# BUNDLE DESTINATION. Even if CMake did not complain, building executables as
# application bundles would break our iOS packages.)
set(CMAKE_MACOSX_BUNDLE FALSE)
string(TIMESTAMP DEFAULT_BUILD "%Y%m%d")
set(BUILD ${DEFAULT_BUILD} CACHE STRING "Build string (default: ${DEFAULT_BUILD})")
# NOTE: On Windows, this does nothing except when using MinGW or Cygwin.
# CMAKE_BUILD_TYPE has no meaning in Visual Studio, and it always defaults to
# Debug when using NMake.
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
message(STATUS "VERSION = ${VERSION}, BUILD = ${BUILD}")
include(cmakescripts/PackageInfo.cmake)
# Detect CPU type and whether we're building 64-bit or 32-bit code
math(EXPR BITS "${CMAKE_SIZEOF_VOID_P} * 8")
string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} CMAKE_SYSTEM_PROCESSOR_LC)
set(COUNT 1)
foreach(ARCH ${CMAKE_OSX_ARCHITECTURES})
if(COUNT GREATER 1)
message(FATAL_ERROR "The libjpeg-turbo build system does not support multiple values in CMAKE_OSX_ARCHITECTURES.")
endif()
math(EXPR COUNT "${COUNT}+1")
endforeach()
if(CMAKE_SYSTEM_PROCESSOR_LC MATCHES "x86_64" OR
CMAKE_SYSTEM_PROCESSOR_LC MATCHES "amd64" OR
CMAKE_SYSTEM_PROCESSOR_LC MATCHES "i[0-9]86" OR
CMAKE_SYSTEM_PROCESSOR_LC MATCHES "x86" OR
CMAKE_SYSTEM_PROCESSOR_LC MATCHES "ia32")
if(BITS EQUAL 64 OR CMAKE_C_COMPILER_ABI MATCHES "ELF X32")
set(CPU_TYPE x86_64)
else()
set(CPU_TYPE i386)
endif()
if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL ${CPU_TYPE})
set(CMAKE_SYSTEM_PROCESSOR ${CPU_TYPE})
endif()
elseif(CMAKE_SYSTEM_PROCESSOR_LC STREQUAL "aarch64" OR
CMAKE_SYSTEM_PROCESSOR_LC MATCHES "^arm")
if(BITS EQUAL 64)
set(CPU_TYPE arm64)
else()
set(CPU_TYPE arm)
endif()
elseif(CMAKE_SYSTEM_PROCESSOR_LC MATCHES "^ppc" OR
CMAKE_SYSTEM_PROCESSOR_LC MATCHES "^powerpc")
set(CPU_TYPE powerpc)
else()
set(CPU_TYPE ${CMAKE_SYSTEM_PROCESSOR_LC})
endif()
if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR
CMAKE_OSX_ARCHITECTURES MATCHES "arm64" OR
CMAKE_OSX_ARCHITECTURES MATCHES "i386")
set(CPU_TYPE ${CMAKE_OSX_ARCHITECTURES})
endif()
if(CMAKE_OSX_ARCHITECTURES MATCHES "ppc")
set(CPU_TYPE powerpc)
endif()
if(MSVC_IDE AND CMAKE_GENERATOR_PLATFORM MATCHES "arm64")
set(CPU_TYPE arm64)
endif()
message(STATUS "${BITS}-bit build (${CPU_TYPE})")
macro(report_directory var)
if(CMAKE_INSTALL_${var} STREQUAL CMAKE_INSTALL_FULL_${var})
message(STATUS "CMAKE_INSTALL_${var} = ${CMAKE_INSTALL_${var}}")
else()
message(STATUS "CMAKE_INSTALL_${var} = ${CMAKE_INSTALL_${var}} (${CMAKE_INSTALL_FULL_${var}})")
endif()
mark_as_advanced(CLEAR CMAKE_INSTALL_${var})
endmacro()
set(DIRLIST "BINDIR;DATAROOTDIR;DOCDIR;INCLUDEDIR;LIBDIR")
if(UNIX)
list(APPEND DIRLIST "MANDIR")
endif()
foreach(dir ${DIRLIST})
report_directory(${dir})
endforeach()
###############################################################################
# CONFIGURATION OPTIONS
###############################################################################
macro(boolean_number var)
if(${var})
set(${var} 1 ${ARGN})
else()
set(${var} 0 ${ARGN})
endif()
endmacro()
option(ENABLE_SHARED "Build shared libraries" FALSE)
boolean_number(ENABLE_SHARED)
option(ENABLE_STATIC "Build static libraries" TRUE)
boolean_number(ENABLE_STATIC)
option(REQUIRE_SIMD "Generate a fatal error if SIMD extensions are not available for this platform (default is to fall back to a non-SIMD build)" FALSE)
boolean_number(REQUIRE_SIMD)
option(WITH_12BIT "Encode/decode JPEG images with 12-bit samples (implies WITH_ARITH_DEC=0 WITH_ARITH_ENC=0 WITH_JAVA=0 WITH_SIMD=0 WITH_TURBOJPEG=0 )" FALSE)
boolean_number(WITH_12BIT)
option(WITH_ARITH_DEC "Include arithmetic decoding support when emulating the libjpeg v6b API/ABI" TRUE)
boolean_number(WITH_ARITH_DEC)
option(WITH_ARITH_ENC "Include arithmetic encoding support when emulating the libjpeg v6b API/ABI" TRUE)
boolean_number(WITH_ARITH_ENC)
if(CMAKE_C_COMPILER_ABI MATCHES "ELF X32")
set(WITH_JAVA 0)
else()
option(WITH_JAVA "Build Java wrapper for the TurboJPEG API library (implies ENABLE_SHARED=1)" FALSE)
boolean_number(WITH_JAVA)
endif()
option(WITH_JPEG7 "Emulate libjpeg v7 API/ABI (this makes ${CMAKE_PROJECT_NAME} backward-incompatible with libjpeg v6b)" FALSE)
boolean_number(WITH_JPEG7)
option(WITH_JPEG8 "Emulate libjpeg v8 API/ABI (this makes ${CMAKE_PROJECT_NAME} backward-incompatible with libjpeg v6b)" FALSE)
boolean_number(WITH_JPEG8)
option(WITH_MEM_SRCDST "Include in-memory source/destination manager functions when emulating the libjpeg v6b or v7 API/ABI" TRUE)
boolean_number(WITH_MEM_SRCDST)
option(WITH_SIMD "Include SIMD extensions, if available for this platform" FALSE)
boolean_number(WITH_SIMD)
option(WITH_TURBOJPEG "Include the TurboJPEG API library and associated test programs" FALSE)
boolean_number(WITH_TURBOJPEG)
option(WITH_FUZZ "Build fuzz targets" FALSE)
macro(report_option var desc)
if(${var})
message(STATUS "${desc} enabled (${var} = ${${var}})")
else()
message(STATUS "${desc} disabled (${var} = ${${var}})")
endif()
endmacro()
if(WITH_JAVA)
set(ENABLE_SHARED 1)
endif()
# Explicitly setting CMAKE_POSITION_INDEPENDENT_CODE=FALSE disables PIC for all
# targets, which will cause the shared library builds to fail. Thus, if shared
# libraries are enabled and CMAKE_POSITION_INDEPENDENT_CODE is explicitly set
# to FALSE, we need to unset it, thus restoring the default behavior
# (automatically using PIC for shared library targets.)
if(DEFINED CMAKE_POSITION_INDEPENDENT_CODE AND
NOT CMAKE_POSITION_INDEPENDENT_CODE AND ENABLE_SHARED)
unset(CMAKE_POSITION_INDEPENDENT_CODE CACHE)
endif()
report_option(ENABLE_SHARED "Shared libraries")
report_option(ENABLE_STATIC "Static libraries")
if(ENABLE_SHARED)
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR})
endif()
if(WITH_JPEG8 OR WITH_JPEG7)
set(WITH_ARITH_ENC 1)
set(WITH_ARITH_DEC 1)
endif()
if(WITH_JPEG8)
set(WITH_MEM_SRCDST 0)
endif()
if(WITH_12BIT)
set(WITH_ARITH_DEC 0)
set(WITH_ARITH_ENC 0)
set(WITH_JAVA 0)
set(WITH_SIMD 0)
set(WITH_TURBOJPEG 0)
set(BITS_IN_JSAMPLE 12)
else()
set(BITS_IN_JSAMPLE 8)
endif()
report_option(WITH_12BIT "12-bit JPEG support")
if(WITH_ARITH_DEC)
set(D_ARITH_CODING_SUPPORTED 1)
endif()
if(NOT WITH_12BIT)
report_option(WITH_ARITH_DEC "Arithmetic decoding support")
endif()
if(WITH_ARITH_ENC)
set(C_ARITH_CODING_SUPPORTED 1)
endif()
if(NOT WITH_12BIT)
report_option(WITH_ARITH_ENC "Arithmetic encoding support")
endif()
if(NOT WITH_12BIT)
report_option(WITH_TURBOJPEG "TurboJPEG API library")
report_option(WITH_JAVA "TurboJPEG Java wrapper")
endif()
if(WITH_MEM_SRCDST)
set(MEM_SRCDST_SUPPORTED 1)
set(MEM_SRCDST_FUNCTIONS "global: jpeg_mem_dest; jpeg_mem_src;")
endif()
if(NOT WITH_JPEG8)
report_option(WITH_MEM_SRCDST "In-memory source/destination managers")
endif()
set(SO_AGE 2)
if(WITH_MEM_SRCDST)
set(SO_AGE 3)
endif()
if(WITH_JPEG8)
set(JPEG_LIB_VERSION 80)
elseif(WITH_JPEG7)
set(JPEG_LIB_VERSION 70)
else()
set(JPEG_LIB_VERSION 62)
endif()
math(EXPR JPEG_LIB_VERSION_DIV10 "${JPEG_LIB_VERSION} / 10")
math(EXPR JPEG_LIB_VERSION_MOD10 "${JPEG_LIB_VERSION} % 10")
if(JPEG_LIB_VERSION STREQUAL "62")
set(DEFAULT_SO_MAJOR_VERSION ${JPEG_LIB_VERSION})
else()
set(DEFAULT_SO_MAJOR_VERSION ${JPEG_LIB_VERSION_DIV10})
endif()
if(JPEG_LIB_VERSION STREQUAL "80")
set(DEFAULT_SO_MINOR_VERSION 2)
else()
set(DEFAULT_SO_MINOR_VERSION 0)
endif()
# This causes SO_MAJOR_VERSION/SO_MINOR_VERSION to reset to defaults if
# WITH_JPEG7 or WITH_JPEG8 has changed.
if((DEFINED WITH_JPEG7_INT AND NOT WITH_JPEG7 EQUAL WITH_JPEG7_INT) OR
(DEFINED WITH_JPEG8_INT AND NOT WITH_JPEG8 EQUAL WITH_JPEG8_INT))
set(FORCE_SO_VERSION "FORCE")
endif()
set(WITH_JPEG7_INT ${WITH_JPEG7} CACHE INTERNAL "")
set(WITH_JPEG8_INT ${WITH_JPEG8} CACHE INTERNAL "")
set(SO_MAJOR_VERSION ${DEFAULT_SO_MAJOR_VERSION} CACHE STRING
"Major version of the libjpeg API shared library (default: ${DEFAULT_SO_MAJOR_VERSION})"
${FORCE_SO_VERSION})
set(SO_MINOR_VERSION ${DEFAULT_SO_MINOR_VERSION} CACHE STRING
"Minor version of the libjpeg API shared library (default: ${DEFAULT_SO_MINOR_VERSION})"
${FORCE_SO_VERSION})
set(JPEG_LIB_VERSION_DECIMAL "${JPEG_LIB_VERSION_DIV10}.${JPEG_LIB_VERSION_MOD10}")
message(STATUS "Emulating libjpeg API/ABI v${JPEG_LIB_VERSION_DECIMAL} (WITH_JPEG7 = ${WITH_JPEG7}, WITH_JPEG8 = ${WITH_JPEG8})")
message(STATUS "libjpeg API shared library version = ${SO_MAJOR_VERSION}.${SO_AGE}.${SO_MINOR_VERSION}")
# Because the TurboJPEG API library uses versioned symbols and changes the
# names of functions whenever they are modified in a backward-incompatible
# manner, it is always backward-ABI-compatible with itself, so the major and
# minor SO versions don't change. However, we increase the middle number (the
# SO "age") whenever functions are added to the API.
set(TURBOJPEG_SO_MAJOR_VERSION 0)
set(TURBOJPEG_SO_AGE 2)
set(TURBOJPEG_SO_VERSION 0.${TURBOJPEG_SO_AGE}.0)
###############################################################################
# COMPILER SETTINGS
###############################################################################
if(MSVC)
option(WITH_CRT_DLL
"Link all ${CMAKE_PROJECT_NAME} libraries and executables with the C run-time DLL (msvcr*.dll) instead of the static C run-time library (libcmt*.lib.) The default is to use the C run-time DLL only with the libraries and executables that need it."
FALSE)
if(NOT WITH_CRT_DLL)
# Use the static C library for all build types
foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
if(${var} MATCHES "/MD")
string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}")
endif()
endforeach()
endif()
add_definitions(-D_CRT_NONSTDC_NO_WARNINGS)
endif()
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
# Use the maximum optimization level for release builds
foreach(var CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO)
if(${var} MATCHES "-O2")
string(REGEX REPLACE "-O2" "-O3" ${var} "${${var}}")
endif()
endforeach()
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
if(CMAKE_C_COMPILER_ID MATCHES "SunPro")
# Use the maximum optimization level for release builds
foreach(var CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO)
if(${var} MATCHES "-xO3")
string(REGEX REPLACE "-xO3" "-xO5" ${var} "${${var}}")
endif()
if(${var} MATCHES "-xO2")
string(REGEX REPLACE "-xO2" "-xO5" ${var} "${${var}}")
endif()
endforeach()
endif()
endif()
string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UC)
set(EFFECTIVE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UC}}")
message(STATUS "Compiler flags = ${EFFECTIVE_C_FLAGS}")
set(EFFECTIVE_LD_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_UC}}")
message(STATUS "Linker flags = ${EFFECTIVE_LD_FLAGS}")
include(CheckCSourceCompiles)
include(CheckIncludeFiles)
include(CheckTypeSize)
check_type_size("size_t" SIZE_T)
check_type_size("unsigned long" UNSIGNED_LONG)
if(SIZE_T EQUAL UNSIGNED_LONG)
check_c_source_compiles("int main(int argc, char **argv) { unsigned long a = argc; return __builtin_ctzl(a); }"
HAVE_BUILTIN_CTZL)
endif()
if(MSVC)
check_include_files("intrin.h" HAVE_INTRIN_H)
endif()
if(UNIX)
if(CMAKE_CROSSCOMPILING)
set(RIGHT_SHIFT_IS_UNSIGNED 0)
else()
include(CheckCSourceRuns)
check_c_source_runs("
#include <stdio.h>
#include <stdlib.h>
int is_shifting_signed (long arg) {
long res = arg >> 4;
if (res == -0x7F7E80CL)
return 1; /* right shift is signed */
/* see if unsigned-shift hack will fix it. */
/* we can't just test exact value since it depends on width of long... */
res |= (~0L) << (32-4);
if (res == -0x7F7E80CL)
return 0; /* right shift is unsigned */
printf(\"Right shift isn't acting as I expect it to.\\\\n\");
printf(\"I fear the JPEG software will not work at all.\\\\n\\\\n\");
return 0; /* try it with unsigned anyway */
}
int main (void) {
exit(is_shifting_signed(-0x7F7E80B1L));
}" RIGHT_SHIFT_IS_UNSIGNED)
endif()
endif()
if(MSVC)
set(INLINE_OPTIONS "__inline;inline")
else()
set(INLINE_OPTIONS "__inline__;inline")
endif()
option(FORCE_INLINE "Force function inlining" TRUE)
boolean_number(FORCE_INLINE)
if(FORCE_INLINE)
if(MSVC)
list(INSERT INLINE_OPTIONS 0 "__forceinline")
else()
list(INSERT INLINE_OPTIONS 0 "inline __attribute__((always_inline))")
list(INSERT INLINE_OPTIONS 0 "__inline__ __attribute__((always_inline))")
endif()
endif()
foreach(inline ${INLINE_OPTIONS})
check_c_source_compiles("${inline} static int foo(void) { return 0; } int main(void) { return foo(); }"
INLINE_WORKS)
if(INLINE_WORKS)
set(INLINE ${inline})
break()
endif()
endforeach()
if(NOT INLINE_WORKS)
message(FATAL_ERROR "Could not determine how to inline functions.")
endif()
message(STATUS "INLINE = ${INLINE} (FORCE_INLINE = ${FORCE_INLINE})")
if(WITH_TURBOJPEG)
if(MSVC)
set(THREAD_LOCAL "__declspec(thread)")
else()
set(THREAD_LOCAL "__thread")
endif()
check_c_source_compiles("${THREAD_LOCAL} int i; int main(void) { i = 0; return i; }" HAVE_THREAD_LOCAL)
if(HAVE_THREAD_LOCAL)
message(STATUS "THREAD_LOCAL = ${THREAD_LOCAL}")
else()
message(WARNING "Thread-local storage is not available. The TurboJPEG API library's global error handler will not be thread-safe.")
unset(THREAD_LOCAL)
endif()
endif()
if(UNIX AND NOT APPLE)
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/conftest.map "VERS_1 { global: *; };")
set(CMAKE_REQUIRED_FLAGS
"-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
check_c_source_compiles("int main(void) { return 0; }" HAVE_VERSION_SCRIPT)
set(CMAKE_REQUIRED_FLAGS)
file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/conftest.map)
if(HAVE_VERSION_SCRIPT)
message(STATUS "Linker supports GNU-style version scripts")
set(MAPFLAG "-Wl,--version-script,")
set(TJMAPFLAG "-Wl,--version-script,")
else()
message(STATUS "Linker does not support GNU-style version scripts")
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
# The Solaris linker doesn't like our version script for the libjpeg API
# library, but the version script for the TurboJPEG API library should
# still work.
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/conftest.map
"VERS_1 { global: foo; local: *; }; VERS_2 { global: foo2; } VERS_1;")
set(CMAKE_REQUIRED_FLAGS "-Wl,-M,${CMAKE_CURRENT_BINARY_DIR}/conftest.map -shared")
check_c_source_compiles("int foo() { return 0; } int foo2() { return 2; }"
HAVE_MAPFILE)
set(CMAKE_REQUIRED_FLAGS)
file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/conftest.map)
if(HAVE_MAPFILE)
message(STATUS "Linker supports mapfiles")
set(TJMAPFLAG "-Wl,-M,")
else()
message(STATUS "Linker does not support mapfiles")
endif()
endif()
endif()
endif()
# Generate files
if(WIN32)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/win/jconfig.h.in jconfig.h)
else()
configure_file(jconfig.h.in jconfig.h)
endif()
configure_file(jconfigint.h.in jconfigint.h)
configure_file(jversion.h.in jversion.h)
if(UNIX)
configure_file(libjpeg.map.in libjpeg.map)
endif()
# Include directories and compiler definitions
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
###############################################################################
# TARGETS
###############################################################################
if(CMAKE_EXECUTABLE_SUFFIX_TMP)
set(CMAKE_EXECUTABLE_SUFFIX ${CMAKE_EXECUTABLE_SUFFIX_TMP})
endif()
message(STATUS "CMAKE_EXECUTABLE_SUFFIX = ${CMAKE_EXECUTABLE_SUFFIX}")
set(JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
jcicc.c jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c
jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c
jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdicc.c jdinput.c
jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c
jdtrans.c jerror.c jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c
jidctint.c jidctred.c jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c)
if(WITH_ARITH_ENC OR WITH_ARITH_DEC)
set(JPEG_SOURCES ${JPEG_SOURCES} jaricom.c)
endif()
if(WITH_ARITH_ENC)
set(JPEG_SOURCES ${JPEG_SOURCES} jcarith.c)
endif()
if(WITH_ARITH_DEC)
set(JPEG_SOURCES ${JPEG_SOURCES} jdarith.c)
endif()
if(WITH_SIMD)
add_subdirectory(simd)
if(NEON_INTRINSICS)
add_definitions(-DNEON_INTRINSICS)
endif()
elseif(NOT WITH_12BIT)
message(STATUS "SIMD extensions: None (WITH_SIMD = ${WITH_SIMD})")
endif()
if(WITH_SIMD)
message(STATUS "SIMD extensions: ${CPU_TYPE} (WITH_SIMD = ${WITH_SIMD})")
if(MSVC_IDE OR XCODE)
set_source_files_properties(${SIMD_OBJS} PROPERTIES GENERATED 1)
endif()
else()
add_library(simd OBJECT jsimd_none.c)
if(NOT WIN32 AND (CMAKE_POSITION_INDEPENDENT_CODE OR ENABLE_SHARED))
set_target_properties(simd PROPERTIES POSITION_INDEPENDENT_CODE 1)
endif()
endif()
if(WITH_JAVA)
add_subdirectory(java)
endif()
if(ENABLE_SHARED)
add_subdirectory(sharedlib)
endif()
if(ENABLE_STATIC)
add_library(jpeg-static STATIC ${JPEG_SOURCES} $<TARGET_OBJECTS:simd>
${SIMD_OBJS})
if(NOT MSVC)
set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg)
endif()
endif()
if(WITH_TURBOJPEG)
if(ENABLE_SHARED)
set(TURBOJPEG_SOURCES ${JPEG_SOURCES} $<TARGET_OBJECTS:simd> ${SIMD_OBJS}
turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c rdbmp.c rdppm.c
wrbmp.c wrppm.c)
set(TJMAPFILE ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg-mapfile)
if(WITH_JAVA)
set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} turbojpeg-jni.c)
include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
set(TJMAPFILE ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg-mapfile.jni)
endif()
if(MSVC)
configure_file(${CMAKE_SOURCE_DIR}/win/turbojpeg.rc.in
${CMAKE_BINARY_DIR}/win/turbojpeg.rc)
set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES}
${CMAKE_BINARY_DIR}/win/turbojpeg.rc)
endif()
add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES})
set_property(TARGET turbojpeg PROPERTY COMPILE_FLAGS
"-DBMP_SUPPORTED -DPPM_SUPPORTED")
if(WIN32)
set_target_properties(turbojpeg PROPERTIES DEFINE_SYMBOL DLLDEFINE)
endif()
if(MINGW)
set_target_properties(turbojpeg PROPERTIES LINK_FLAGS -Wl,--kill-at)
endif()
if(APPLE AND (NOT CMAKE_OSX_DEPLOYMENT_TARGET OR
CMAKE_OSX_DEPLOYMENT_TARGET VERSION_GREATER 10.4))
if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG)
set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
endif()
set_target_properties(turbojpeg PROPERTIES MACOSX_RPATH 1)
endif()
set_target_properties(turbojpeg PROPERTIES
SOVERSION ${TURBOJPEG_SO_MAJOR_VERSION} VERSION ${TURBOJPEG_SO_VERSION})
if(TJMAPFLAG)
set_target_properties(turbojpeg PROPERTIES
LINK_FLAGS "${TJMAPFLAG}${TJMAPFILE}")
endif()
endif()
if(ENABLE_STATIC)
add_library(turbojpeg-static STATIC ${JPEG_SOURCES} $<TARGET_OBJECTS:simd>
${SIMD_OBJS} turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c rdbmp.c
rdppm.c wrbmp.c wrppm.c)
set_property(TARGET turbojpeg-static PROPERTY COMPILE_FLAGS
"-DBMP_SUPPORTED -DPPM_SUPPORTED")
if(NOT MSVC)
set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg)
endif()
endif()
endif()
if(WIN32)
set(USE_SETMODE "-DUSE_SETMODE")
endif()
if(WITH_12BIT)
set(COMPILE_FLAGS "-DGIF_SUPPORTED -DPPM_SUPPORTED ${USE_SETMODE}")
else()
set(COMPILE_FLAGS "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED ${USE_SETMODE}")
set(CJPEG_BMP_SOURCES rdbmp.c rdtarga.c)
set(DJPEG_BMP_SOURCES wrbmp.c wrtarga.c)
endif()

741
cmake/CMakeLists.png Normal file
View File

@ -0,0 +1,741 @@
# CMakeLists.txt
# Copyright (C) 2018 Cosmin Truta
# Copyright (C) 2007,2009-2018 Glenn Randers-Pehrson
# Written by Christian Ehrlicher, 2007
# Revised by Roger Lowman, 2009-2010
# Revised by Clifford Yapp, 2011-2012,2017
# Revised by Roger Leigh, 2016
# Revised by Andreas Franek, 2016
# Revised by Sam Serrels, 2017
# Revised by Vadim Barkov, 2017
# Revised by Vicky Pfau, 2018
# Revised by Cameron Cawley, 2018
# Revised by Cosmin Truta, 2018
# Revised by Kyle Bentley, 2018
# This code is released under the libpng license.
# For conditions of distribution and use, see the disclaimer
# and license in png.h
cmake_minimum_required(VERSION 3.10)
cmake_policy(VERSION 3.1)
# When using CMake 3.4 and later, don't export symbols from executables unless
# the CMAKE_ENABLE_EXPORTS variable is set.
if(POLICY CMP0065)
cmake_policy(SET CMP0065 NEW)
endif()
if (POLICY CMP0077)
cmake_policy(SET CMP0077 NEW)
endif()
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
project(libpng C ASM)
enable_testing()
set(PNGLIB_MAJOR 1)
set(PNGLIB_MINOR 6)
set(PNGLIB_RELEASE 37)
set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR})
set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE})
include(GNUInstallDirs)
# needed packages
# Allow users to specify location of Zlib.
# Useful if zlib is being built alongside this as a sub-project.
option(PNG_BUILD_ZLIB "Custom zlib Location, else find_package is used" ON)
if(NOT PNG_BUILD_ZLIB)
find_package(ZLIB REQUIRED)
include_directories(${ZLIB_INCLUDE_DIR})
endif()
if(UNIX AND NOT APPLE AND NOT BEOS AND NOT HAIKU)
find_library(M_LIBRARY m)
else()
# libm is not needed and/or not available
set(M_LIBRARY "")
endif()
# COMMAND LINE OPTIONS
option(PNG_SHARED "Build shared lib" OFF)
option(PNG_STATIC "Build static lib" ON)
option(PNG_TESTS "Build libpng tests" OFF)
# Many more configuration options could be added here
option(PNG_FRAMEWORK "Build OS X framework" OFF)
option(PNG_DEBUG "Build with debug output" OFF)
option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" OFF)
set(PNG_PREFIX "" CACHE STRING "Prefix to add to the API function names")
set(DFA_XTRA "" CACHE FILEPATH "File containing extra configuration settings")
if(PNG_HARDWARE_OPTIMIZATIONS)
# set definitions and sources for arm
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
set(PNG_ARM_NEON_POSSIBLE_VALUES check on off)
set(PNG_ARM_NEON "check" CACHE STRING "Enable ARM NEON optimizations:
check: (default) use internal checking code;
off: disable the optimizations;
on: turn on unconditionally.")
set_property(CACHE PNG_ARM_NEON PROPERTY STRINGS
${PNG_ARM_NEON_POSSIBLE_VALUES})
list(FIND PNG_ARM_NEON_POSSIBLE_VALUES ${PNG_ARM_NEON} index)
if(index EQUAL -1)
message(FATAL_ERROR
"PNG_ARM_NEON must be one of [${PNG_ARM_NEON_POSSIBLE_VALUES}]")
elseif(NOT ${PNG_ARM_NEON} STREQUAL "off")
set(libpng_arm_sources
arm/arm_init.c
arm/filter_neon.S
arm/filter_neon_intrinsics.c
arm/palette_neon_intrinsics.c)
if(${PNG_ARM_NEON} STREQUAL "on")
add_definitions(-DPNG_ARM_NEON_OPT=2)
elseif(${PNG_ARM_NEON} STREQUAL "check")
add_definitions(-DPNG_ARM_NEON_CHECK_SUPPORTED)
endif()
else()
add_definitions(-DPNG_ARM_NEON_OPT=0)
endif()
endif()
# set definitions and sources for powerpc
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64*")
set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off)
set(PNG_POWERPC_VSX "on" CACHE STRING "Enable POWERPC VSX optimizations:
off: disable the optimizations.")
set_property(CACHE PNG_POWERPC_VSX PROPERTY STRINGS
${PNG_POWERPC_VSX_POSSIBLE_VALUES})
list(FIND PNG_POWERPC_VSX_POSSIBLE_VALUES ${PNG_POWERPC_VSX} index)
if(index EQUAL -1)
message(FATAL_ERROR
"PNG_POWERPC_VSX must be one of [${PNG_POWERPC_VSX_POSSIBLE_VALUES}]")
elseif(NOT ${PNG_POWERPC_VSX} STREQUAL "off")
set(libpng_powerpc_sources
powerpc/powerpc_init.c
powerpc/filter_vsx_intrinsics.c)
if(${PNG_POWERPC_VSX} STREQUAL "on")
add_definitions(-DPNG_POWERPC_VSX_OPT=2)
endif()
else()
add_definitions(-DPNG_POWERPC_VSX_OPT=0)
endif()
endif()
# set definitions and sources for intel
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*")
set(PNG_INTEL_SSE_POSSIBLE_VALUES on off)
set(PNG_INTEL_SSE "on" CACHE STRING "Enable INTEL_SSE optimizations:
off: disable the optimizations")
set_property(CACHE PNG_INTEL_SSE PROPERTY STRINGS
${PNG_INTEL_SSE_POSSIBLE_VALUES})
list(FIND PNG_INTEL_SSE_POSSIBLE_VALUES ${PNG_INTEL_SSE} index)
if(index EQUAL -1)
message(FATAL_ERROR
"PNG_INTEL_SSE must be one of [${PNG_INTEL_SSE_POSSIBLE_VALUES}]")
elseif(NOT ${PNG_INTEL_SSE} STREQUAL "off")
set(libpng_intel_sources
intel/intel_init.c
intel/filter_sse2_intrinsics.c)
if(${PNG_INTEL_SSE} STREQUAL "on")
add_definitions(-DPNG_INTEL_SSE_OPT=1)
endif()
else()
add_definitions(-DPNG_INTEL_SSE_OPT=0)
endif()
endif()
# set definitions and sources for MIPS
if(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel*" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el*")
set(PNG_MIPS_MSA_POSSIBLE_VALUES on off)
set(PNG_MIPS_MSA "on" CACHE STRING "Enable MIPS_MSA optimizations:
off: disable the optimizations")
set_property(CACHE PNG_MIPS_MSA PROPERTY STRINGS
${PNG_MIPS_MSA_POSSIBLE_VALUES})
list(FIND PNG_MIPS_MSA_POSSIBLE_VALUES ${PNG_MIPS_MSA} index)
if(index EQUAL -1)
message(FATAL_ERROR
"PNG_MIPS_MSA must be one of [${PNG_MIPS_MSA_POSSIBLE_VALUES}]")
elseif(NOT ${PNG_MIPS_MSA} STREQUAL "off")
set(libpng_mips_sources
mips/mips_init.c
mips/filter_msa_intrinsics.c)
if(${PNG_MIPS_MSA} STREQUAL "on")
add_definitions(-DPNG_MIPS_MSA_OPT=2)
endif()
else()
add_definitions(-DPNG_MIPS_MSA_OPT=0)
endif()
endif()
else(PNG_HARDWARE_OPTIMIZATIONS)
# set definitions and sources for arm
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
add_definitions(-DPNG_ARM_NEON_OPT=0)
endif()
# set definitions and sources for powerpc
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64*")
add_definitions(-DPNG_POWERPC_VSX_OPT=0)
endif()
# set definitions and sources for intel
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*")
add_definitions(-DPNG_INTEL_SSE_OPT=0)
endif()
# set definitions and sources for MIPS
if(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel*" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el*")
add_definitions(-DPNG_MIPS_MSA_OPT=0)
endif()
endif(PNG_HARDWARE_OPTIMIZATIONS)
# SET LIBNAME
set(PNG_LIB_NAME png${PNGLIB_MAJOR}${PNGLIB_MINOR})
# to distinguish between debug and release lib
set(CMAKE_DEBUG_POSTFIX "d")
include(CheckCSourceCompiles)
option(ld-version-script "Enable linker version script" ON)
if(ld-version-script AND NOT APPLE)
# Check if LD supports linker scripts.
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map" "VERS_1 {
global: sym;
local: *;
};
VERS_2 {
global: sym2;
main;
} VERS_1;
")
set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS})
set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/conftest.map'")
check_c_source_compiles("void sym(void) {}
void sym2(void) {}
int main(void) {return 0;}
" HAVE_LD_VERSION_SCRIPT)
if(NOT HAVE_LD_VERSION_SCRIPT)
set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE} "-Wl,-M -Wl,${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
check_c_source_compiles("void sym(void) {}
void sym2(void) {}
int main(void) {return 0;}
" HAVE_SOLARIS_LD_VERSION_SCRIPT)
endif()
set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE})
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
endif()
# Find symbol prefix. Likely obsolete and unnecessary with recent
# toolchains (it's not done in many other projects).
function(symbol_prefix)
set(SYMBOL_PREFIX)
execute_process(COMMAND "${CMAKE_C_COMPILER}" "-E" "-"
INPUT_FILE /dev/null
OUTPUT_VARIABLE OUT
RESULT_VARIABLE STATUS)
if(CPP_FAIL)
message(WARNING "Failed to run the C preprocessor")
endif()
string(REPLACE "\n" ";" OUT "${OUT}")
foreach(line ${OUT})
string(REGEX MATCH "^PREFIX=" found_match "${line}")
if(found_match)
string(REGEX REPLACE "^PREFIX=(.*\)" "\\1" prefix "${line}")
string(REGEX MATCH "__USER_LABEL_PREFIX__" found_match "${prefix}")
if(found_match)
string(REGEX REPLACE "(.*)__USER_LABEL_PREFIX__(.*)" "\\1\\2" prefix "${prefix}")
endif()
set(SYMBOL_PREFIX "${prefix}")
endif()
endforeach()
message(STATUS "Symbol prefix: ${SYMBOL_PREFIX}")
set(SYMBOL_PREFIX "${SYMBOL_PREFIX}" PARENT_SCOPE)
endfunction()
if(UNIX)
symbol_prefix()
endif()
find_program(AWK NAMES gawk awk)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
if(NOT AWK OR ANDROID)
# No awk available to generate sources; use pre-built pnglibconf.h
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt
${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h)
add_custom_target(genfiles) # Dummy
else()
include(CMakeParseArguments)
# Generate .chk from .out with awk
# generate_chk(INPUT inputfile OUTPUT outputfile [DEPENDS dep1 [dep2...]])
function(generate_chk)
set(options)
set(oneValueArgs INPUT OUTPUT)
set(multiValueArgs DEPENDS)
cmake_parse_arguments(_GC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if(NOT _GC_INPUT)
message(FATAL_ERROR "generate_chk: Missing INPUT argument")
endif()
if(NOT _GC_OUTPUT)
message(FATAL_ERROR "generate_chk: Missing OUTPUT argument")
endif()
add_custom_command(OUTPUT "${_GC_OUTPUT}"
COMMAND "${CMAKE_COMMAND}"
"-DINPUT=${_GC_INPUT}"
"-DOUTPUT=${_GC_OUTPUT}"
-P "${CMAKE_CURRENT_BINARY_DIR}/scripts/genchk.cmake"
DEPENDS "${_GC_INPUT}" ${_GC_DEPENDS}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endfunction()
# Generate .out from .c with awk
# generate_out(INPUT inputfile OUTPUT outputfile [DEPENDS dep1 [dep2...]])
function(generate_out)
set(options)
set(oneValueArgs INPUT OUTPUT)
set(multiValueArgs DEPENDS)
cmake_parse_arguments(_GO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if(NOT _GO_INPUT)
message(FATAL_ERROR "generate_out: Missing INPUT argument")
endif()
if(NOT _GO_OUTPUT)
message(FATAL_ERROR "generate_out: Missing OUTPUT argument")
endif()
add_custom_command(OUTPUT "${_GO_OUTPUT}"
COMMAND "${CMAKE_COMMAND}"
"-DINPUT=${_GO_INPUT}"
"-DOUTPUT=${_GO_OUTPUT}"
-P "${CMAKE_CURRENT_BINARY_DIR}/scripts/genout.cmake"
DEPENDS "${_GO_INPUT}" ${_GO_DEPENDS}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endfunction()
# Generate specific source file with awk
# generate_source(OUTPUT outputfile [DEPENDS dep1 [dep2...]])
function(generate_source)
set(options)
set(oneValueArgs OUTPUT)
set(multiValueArgs DEPENDS)
cmake_parse_arguments(_GSO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if(NOT _GSO_OUTPUT)
message(FATAL_ERROR "generate_source: Missing OUTPUT argument")
endif()
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${_GSO_OUTPUT}"
COMMAND "${CMAKE_COMMAND}"
"-DOUTPUT=${_GSO_OUTPUT}"
-P "${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake"
DEPENDS ${_GSO_DEPENDS}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endfunction()
# Copy file
function(generate_copy source destination)
add_custom_command(OUTPUT "${destination}"
COMMAND "${CMAKE_COMMAND}" -E remove "${destination}"
COMMAND "${CMAKE_COMMAND}" -E copy "${source}"
"${destination}"
DEPENDS "${source}")
endfunction()
# Generate scripts/pnglibconf.h
generate_source(OUTPUT "scripts/pnglibconf.c"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk"
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h")
# Generate pnglibconf.c
generate_source(OUTPUT "pnglibconf.c"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk"
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h")
if(PNG_PREFIX)
set(PNGLIBCONF_H_EXTRA_DEPENDS
"${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/macro.lst")
set(PNGPREFIX_H_EXTRA_DEPENDS
"${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out")
endif()
generate_out(INPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out")
# Generate pnglibconf.h
generate_source(OUTPUT "pnglibconf.h"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out"
${PNGLIBCONF_H_EXTRA_DEPENDS})
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/intprefix.c"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h")
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/prefix.c"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h"
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h"
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out")
# Generate pngprefix.h
generate_source(OUTPUT "pngprefix.h"
DEPENDS ${PNGPREFIX_H_EXTRA_DEPENDS})
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/sym.c"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h")
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.c"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h"
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt")
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/vers.c"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h"
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h"
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h")
generate_chk(INPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/checksym.awk"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.def")
add_custom_target(symbol-check DEPENDS
"${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk")
generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out"
"${CMAKE_CURRENT_BINARY_DIR}/libpng.sym")
generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out"
"${CMAKE_CURRENT_BINARY_DIR}/libpng.vers")
add_custom_target(genvers DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers")
add_custom_target(gensym DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym")
add_custom_target("genprebuilt"
COMMAND "${CMAKE_COMMAND}"
"-DOUTPUT=scripts/pnglibconf.h.prebuilt"
-P "${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
# A single target handles generation of all generated files. If
# they are depended upon separately by multiple targets, this
# confuses parallel make (it would require a separate top-level
# target for each file to track the dependencies properly).
add_custom_target(genfiles DEPENDS
"${CMAKE_CURRENT_BINARY_DIR}/libpng.sym"
"${CMAKE_CURRENT_BINARY_DIR}/libpng.vers"
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c"
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h"
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out"
"${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/pnglibconf.c"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out")
endif(NOT AWK OR ANDROID)
# OUR SOURCES
set(libpng_public_hdrs
png.h
pngconf.h
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h"
)
set(libpng_private_hdrs
pngpriv.h
pngdebug.h
pnginfo.h
pngstruct.h
)
if(AWK AND NOT ANDROID)
list(APPEND libpng_private_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h")
endif()
set(libpng_sources
${libpng_public_hdrs}
${libpng_private_hdrs}
png.c
pngerror.c
pngget.c
pngmem.c
pngpread.c
pngread.c
pngrio.c
pngrtran.c
pngrutil.c
pngset.c
pngtrans.c
pngwio.c
pngwrite.c
pngwtran.c
pngwutil.c
${libpng_arm_sources}
${libpng_intel_sources}
${libpng_mips_sources}
${libpng_powerpc_sources}
)
set(pngtest_sources
pngtest.c
)
set(pngvalid_sources
contrib/libtests/pngvalid.c
)
set(pngstest_sources
contrib/libtests/pngstest.c
)
set(pngunknown_sources
contrib/libtests/pngunknown.c
)
set(pngimage_sources
contrib/libtests/pngimage.c
)
set(pngfix_sources
contrib/tools/pngfix.c
)
set(png_fix_itxt_sources
contrib/tools/png-fix-itxt.c
)
if(MSVC)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
endif()
if(PNG_DEBUG)
add_definitions(-DPNG_DEBUG)
endif()
# NOW BUILD OUR TARGET
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${ZLIB_INCLUDE_DIR})
unset(PNG_LIB_TARGETS)
if(PNG_STATIC)
# does not work without changing name
set(PNG_LIB_NAME_STATIC png_static)
add_library(png_static STATIC ${libpng_sources})
add_dependencies(png_static genfiles)
# MSVC doesn't use a different file extension for shared vs. static
# libs. We are able to change OUTPUT_NAME to remove the _static
# for all other platforms.
if(NOT MSVC)
set_target_properties(png_static PROPERTIES
OUTPUT_NAME "${PNG_LIB_NAME}"
CLEAN_DIRECT_OUTPUT 1)
else()
set_target_properties(png_static PROPERTIES
OUTPUT_NAME "${PNG_LIB_NAME}_static"
CLEAN_DIRECT_OUTPUT 1)
endif()
list(APPEND PNG_LIB_TARGETS png_static)
if(MSVC)
# msvc does not append 'lib' - do it here to have consistent name
set_target_properties(png_static PROPERTIES PREFIX "lib")
endif()
target_link_libraries(png_static ${M_LIBRARY})
endif()
if(NOT PNG_LIB_TARGETS)
message(SEND_ERROR
"No library variant selected to build. "
"Please enable at least one of the following options: "
"PNG_STATIC, PNG_SHARED, PNG_FRAMEWORK")
endif()
# Set a variable with CMake code which:
# Creates a symlink from src to dest (if possible) or alternatively
# copies if different.
include(CMakeParseArguments)
function(create_symlink DEST_FILE)
cmake_parse_arguments(S "" "FILE;TARGET" "" ${ARGN})
if(NOT S_TARGET AND NOT S_FILE)
message(FATAL_ERROR "create_symlink: Missing TARGET or FILE argument")
endif()
if(S_TARGET AND S_FILE)
message(FATAL_ERROR "create_symlink: Both source file ${S_FILE} and build target ${S_TARGET} arguments are present; can only have one.")
endif()
if(S_FILE)
# If we don't need to symlink something that's coming from a build target,
# we can go ahead and symlink/copy at configure time.
if(CMAKE_HOST_WIN32 AND NOT CYGWIN)
execute_process(
COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${S_FILE} ${DEST_FILE}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
else()
execute_process(
COMMAND ${CMAKE_COMMAND} -E create_symlink ${S_FILE} ${DEST_FILE}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endif()
endif()
if(S_TARGET)
# We need to use generator expressions, which can be a bit tricky, so for
# simplicity make the symlink a POST_BUILD step and use the TARGET
# signature of add_custom_command.
if(CMAKE_HOST_WIN32 AND NOT CYGWIN)
add_custom_command(TARGET ${S_TARGET} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy_if_different $<TARGET_LINKER_FILE_NAME:${S_TARGET}> $<TARGET_LINKER_FILE_DIR:${S_TARGET}>/${DEST_FILE})
else()
add_custom_command(TARGET ${S_TARGET} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E create_symlink $<TARGET_LINKER_FILE_NAME:${S_TARGET}> $<TARGET_LINKER_FILE_DIR:${S_TARGET}>/${DEST_FILE})
endif()
endif()
endfunction()
# Create source generation scripts.
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/genchk.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/scripts/genchk.cmake @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/genout.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/scripts/genout.cmake @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/gensrc.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake @ONLY)
# libpng is a library so default to 'lib'
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
set(CMAKE_INSTALL_LIBDIR lib)
endif()
# CREATE PKGCONFIG FILES
# We use the same files like ./configure, so we have to set its vars.
# Only do this on Windows for Cygwin - the files don't make much sense outside
# of a UNIX look-alike.
if(NOT WIN32 OR CYGWIN OR MINGW)
set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix ${CMAKE_INSTALL_PREFIX})
set(libdir ${CMAKE_INSTALL_FULL_LIBDIR})
set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR})
set(LIBS "-lz -lm")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng.pc.in
${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc @ONLY)
create_symlink(libpng.pc FILE ${PNGLIB_NAME}.pc)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng-config.in
${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config @ONLY)
create_symlink(libpng-config FILE ${PNGLIB_NAME}-config)
endif()
# SET UP LINKS
if(PNG_SHARED)
set_target_properties(png PROPERTIES
# VERSION 16.${PNGLIB_RELEASE}.1.6.37
VERSION 16.${PNGLIB_RELEASE}.0
SOVERSION 16
CLEAN_DIRECT_OUTPUT 1)
endif()
# INSTALL
if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
install(TARGETS ${PNG_LIB_TARGETS}
EXPORT libpng
RUNTIME DESTINATION bin
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(PNG_SHARED)
# Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin
if(CYGWIN OR MINGW)
create_symlink(libpng${CMAKE_IMPORT_LIBRARY_SUFFIX} TARGET png)
install(FILES $<TARGET_LINKER_FILE_DIR:png>/libpng${CMAKE_IMPORT_LIBRARY_SUFFIX}
DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
if(NOT WIN32)
create_symlink(libpng${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET png)
install(FILES $<TARGET_LINKER_FILE_DIR:png>/libpng${CMAKE_SHARED_LIBRARY_SUFFIX}
DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
endif()
if(PNG_STATIC)
if(NOT WIN32 OR CYGWIN OR MINGW)
create_symlink(libpng${CMAKE_STATIC_LIBRARY_SUFFIX} TARGET png_static)
install(FILES $<TARGET_LINKER_FILE_DIR:png_static>/libpng${CMAKE_STATIC_LIBRARY_SUFFIX}
DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
endif()
endif()
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL)
install(FILES ${libpng_public_hdrs} DESTINATION include)
install(FILES ${libpng_public_hdrs} DESTINATION include/${PNGLIB_NAME})
endif()
if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL)
if(NOT WIN32 OR CYGWIN OR MINGW)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config DESTINATION bin)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config DESTINATION bin)
endif()
endif()
if(NOT SKIP_INSTALL_PROGRAMS AND NOT SKIP_INSTALL_ALL)
install(TARGETS ${PNG_BIN_TARGETS}
RUNTIME DESTINATION bin)
endif()
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL)
# Install man pages
if(NOT PNG_MAN_DIR)
set(PNG_MAN_DIR "share/man")
endif()
install(FILES libpng.3 libpngpf.3 DESTINATION ${PNG_MAN_DIR}/man3)
install(FILES png.5 DESTINATION ${PNG_MAN_DIR}/man5)
# Install pkg-config files
if(NOT CMAKE_HOST_WIN32 OR CYGWIN OR MINGW)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config
DESTINATION bin)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config
DESTINATION bin)
endif()
endif()
# Create an export file that CMake users can include() to import our targets.
if(NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL)
install(EXPORT libpng DESTINATION lib/libpng FILE lib${PNG_LIB_NAME}.cmake)
endif()
# what's with libpng-manual.txt and all the extra files?
# UNINSTALL
# do we need this?
# DIST
# do we need this?
# to create msvc import lib for mingw compiled shared lib
# pexports libpng.dll > libpng.def
# lib /def:libpng.def /machine:x86

View File

@ -105,8 +105,28 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
endif()
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")
endif()
# silence excessive warnings for PGI/NVHPC compilers
if((CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_CXX_COMPILER_ID STREQUAL "PGI"))
set(CMAKE_TUNE_DEFAULT "-Minform=severe")
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")
endif()
# we require C++11 without extensions. Kokkos requires at least C++14 (currently)
set(CMAKE_CXX_STANDARD 11)
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 11)
endif()
if(CMAKE_CXX_STANDARD LESS 11)
message(FATAL_ERROR "C++ standard must be set to at least 11")
endif()
if(PKG_KOKKOS AND (CMAKE_CXX_STANDARD LESS 14))
set(CMAKE_CXX_STANDARD 14)
endif()
@ -115,9 +135,14 @@ set(CMAKE_CXX_EXTENSIONS OFF CACHE BOOL "Use compiler extensions")
# ugly hacks for MSVC which by default always reports an old C++ standard in the __cplusplus macro
# and prints lots of pointless warnings about "unsafe" functions
if(MSVC)
add_compile_options(/Zc:__cplusplus)
add_compile_options(/wd4244)
add_compile_options(/wd4267)
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
add_compile_options(/Zc:__cplusplus)
add_compile_options(/wd4244)
add_compile_options(/wd4267)
if(LAMMPS_EXCEPTIONS)
add_compile_options(/EHsc)
endif()
endif()
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
endif()
@ -129,6 +154,19 @@ endif()
########################################################################
# User input options #
########################################################################
# set path to python interpreter and thus enforcing python version if
# when in a virtual environment and PYTHON_EXECUTABLE is not set on command line
if(DEFINED ENV{VIRTUAL_ENV} AND NOT PYTHON_EXECUTABLE)
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
set(PYTHON_EXECUTABLE "$ENV{VIRTUAL_ENV}/Scripts/python.exe")
else()
set(PYTHON_EXECUTABLE "$ENV{VIRTUAL_ENV}/bin/python")
endif()
set(Python_EXECUTABLE "${PYTHON_EXECUTABLE}")
message(STATUS "Running in virtual environment: $ENV{VIRTUAL_ENV}\n"
" Setting Python interpreter to: ${PYTHON_EXECUTABLE}")
endif()
set(LAMMPS_MACHINE "" CACHE STRING "Suffix to append to lmp binary (WON'T enable any features automatically")
mark_as_advanced(LAMMPS_MACHINE)
if(LAMMPS_MACHINE)
@ -141,10 +179,12 @@ option(CMAKE_POSITION_INDEPENDENT_CODE "Create object compatible with shared lib
option(BUILD_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF)
option(BUILD_LAMMPS_SHELL "Build and install the LAMMPS shell" OFF)
# allow enabling clang-tidy for C++ files
# Support using clang-tidy for C++ files with selected options
set(ENABLE_CLANG_TIDY OFF CACHE BOOL "Include clang-tidy processing when compiling")
if(ENABLE_CLANG_TIDY)
set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-checks=*-header-filter=.*" CACHE STRING "")
set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-checks=-*,performance-trivially-destructible,performance-unnecessary-copy-initialization,performance-unnecessary-value-param,readability-redundant-control-flow,readability-redundant-declaration,readability-redundant-function-ptr-dereference,readability-redundant-member-init,readability-redundant-string-cstr,readability-redundant-string-init,readability-simplify-boolean-expr,readability-static-accessed-through-instance,readability-static-definition-in-anonymous-namespace,modernize-use-override,modernize-use-bool-literals,modernize-use-emplace,modernize-return-braced-init-list,modernize-use-equals-default,modernize-use-equals-delete,modernize-replace-random-shuffle,modernize-deprecated-headers,modernize-use-nullptr,modernize-use-noexcept,modernize-redundant-void-arg;-fix;-header-filter=.*,header-filter=library.h,header-filter=fmt/*.h" CACHE STRING "clang-tidy settings")
else()
unset(CMAKE_CXX_CLANG_TIDY CACHE)
endif()
include(GNUInstallDirs)
@ -167,14 +207,16 @@ option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF)
set(STANDARD_PACKAGES
ADIOS
AMOEBA
ASPHERE
ATC
AWPMD
BOCS
BODY
BPM
BROWNIAN
CG-DNA
CG-SDK
CG-SPICA
CLASS2
COLLOID
COLVARS
@ -188,6 +230,7 @@ set(STANDARD_PACKAGES
DPD-SMOOTH
DRUDE
EFF
ELECTRODE
EXTRA-COMPUTE
EXTRA-DUMP
EXTRA-FIX
@ -208,7 +251,6 @@ set(STANDARD_PACKAGES
MDI
MEAM
MESONT
MESSAGE
MGPT
MISC
ML-HDNNP
@ -307,7 +349,9 @@ string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES)
target_compile_definitions(lammps PUBLIC -DLAMMPS_${LAMMPS_SIZES})
# posix_memalign is not available on Windows
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
# with INTEL package and Intel compilers we use TBB's aligned malloc
if((CMAKE_SYSTEM_NAME STREQUAL "Windows")
AND NOT (PKG_INTEL AND ((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") OR (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM"))))
set(LAMMPS_MEMALIGN "0" CACHE STRING "posix_memalign() is not available on Windows" FORCE)
else()
set(LAMMPS_MEMALIGN "64" CACHE STRING "enables the use of the posix_memalign() call instead of malloc() when large chunks or memory are allocated by LAMMPS. Set to 0 to disable")
@ -328,10 +372,12 @@ pkg_depends(MPIIO MPI)
pkg_depends(ATC MANYBODY)
pkg_depends(LATBOLTZ MPI)
pkg_depends(SCAFACOS MPI)
pkg_depends(AMOEBA KSPACE)
pkg_depends(DIELECTRIC KSPACE)
pkg_depends(DIELECTRIC EXTRA-PAIR)
pkg_depends(CG-DNA MOLECULE)
pkg_depends(CG-DNA ASPHERE)
pkg_depends(ELECTRODE KSPACE)
# detect if we may enable OpenMP support by default
set(BUILD_OMP_DEFAULT OFF)
@ -369,11 +415,13 @@ if(BUILD_OMP)
target_link_libraries(lmp PRIVATE OpenMP::OpenMP_CXX)
endif()
if(PKG_MSCG OR PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_LATTE)
if(PKG_MSCG OR PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_LATTE OR PKG_ELECTRODE)
enable_language(C)
find_package(LAPACK)
find_package(BLAS)
if(NOT LAPACK_FOUND OR NOT BLAS_FOUND)
if (NOT USE_INTERNAL_LINALG)
find_package(LAPACK)
find_package(BLAS)
endif()
if(NOT LAPACK_FOUND OR NOT BLAS_FOUND OR USE_INTERNAL_LINALG)
include(CheckGeneratorSupport)
if(NOT CMAKE_GENERATOR_SUPPORT_FORTRAN)
status(FATAL_ERROR "Cannot build internal linear algebra library as CMake build tool lacks Fortran support")
@ -451,7 +499,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 LATTE MESSAGE MSCG COMPRESS ML-PACE)
PLUMED QMMM ML-QUIP SCAFACOS MACHDYN VTK KIM LATTE MSCG COMPRESS ML-PACE)
if(PKG_${PKG_WITH_INCL})
include(Packages/${PKG_WITH_INCL})
endif()
@ -468,6 +516,7 @@ set(CMAKE_TUNE_FLAGS "${CMAKE_TUNE_DEFAULT}" CACHE STRING "Compiler and machine
separate_arguments(CMAKE_TUNE_FLAGS)
foreach(_FLAG ${CMAKE_TUNE_FLAGS})
target_compile_options(lammps PRIVATE ${_FLAG})
target_compile_options(lmp PRIVATE ${_FLAG})
endforeach()
########################################################################
# Basic system tests (standard libraries, headers, functions, types) #
@ -572,6 +621,10 @@ foreach(PKG_LIB POEMS ATC AWPMD H5MD MESONT)
endif()
endforeach()
if(PKG_ELECTRODE)
target_link_libraries(lammps PRIVATE ${LAPACK_LIBRARIES})
endif()
if(PKG_AWPMD)
target_link_libraries(awpmd PRIVATE ${LAPACK_LIBRARIES})
endif()
@ -597,7 +650,7 @@ endif()
# packages which selectively include variants based on enabled styles
# e.g. accelerator packages
######################################################################
foreach(PKG_WITH_INCL CORESHELL DPD-SMOOTH PHONON QEQ OPENMP KOKKOS OPT INTEL GPU)
foreach(PKG_WITH_INCL CORESHELL DPD-SMOOTH MISC PHONON QEQ OPENMP KOKKOS OPT INTEL GPU)
if(PKG_${PKG_WITH_INCL})
include(Packages/${PKG_WITH_INCL})
endif()
@ -744,20 +797,26 @@ if(BUILD_SHARED_LIBS)
set(Python_ADDITIONAL_VERSIONS 3.12 3.11 3.10 3.9 3.8 3.7 3.6)
find_package(PythonInterp) # Deprecated since version 3.12
if(PYTHONINTERP_FOUND)
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
endif()
else()
# backward compatibility
if(PYTHON_EXECUTABLE)
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
endif()
find_package(Python COMPONENTS Interpreter)
endif()
if(BUILD_IS_MULTI_CONFIG)
set(LIBLAMMPS_SHARED_BINARY ${CMAKE_BINARY_DIR}/$<CONFIG>/liblammps${LAMMPS_MACHINE}${CMAKE_SHARED_LIBRARY_SUFFIX})
set(MY_BUILD_DIR ${CMAKE_BINARY_DIR}/$<CONFIG>)
else()
set(LIBLAMMPS_SHARED_BINARY ${CMAKE_BINARY_DIR}/liblammps${LAMMPS_MACHINE}${CMAKE_SHARED_LIBRARY_SUFFIX})
set(MY_BUILD_DIR ${CMAKE_BINARY_DIR})
endif()
set(LIBLAMMPS_SHARED_BINARY ${MY_BUILD_DIR}/liblammps${LAMMPS_MACHINE}${CMAKE_SHARED_LIBRARY_SUFFIX})
if(Python_EXECUTABLE)
add_custom_target(
install-python ${CMAKE_COMMAND} -E remove_directory build
COMMAND ${Python_EXECUTABLE} ${LAMMPS_PYTHON_DIR}/install.py -p ${LAMMPS_PYTHON_DIR}/lammps -l ${LIBLAMMPS_SHARED_BINARY}
COMMAND ${Python_EXECUTABLE} ${LAMMPS_PYTHON_DIR}/install.py -p ${LAMMPS_PYTHON_DIR}/lammps
-l ${LIBLAMMPS_SHARED_BINARY} -w ${MY_BUILD_DIR}
COMMENT "Installing LAMMPS Python module")
else()
add_custom_target(
@ -777,11 +836,17 @@ endif()
###############################################################################
if(BUILD_SHARED_LIBS OR PKG_PYTHON)
if(CMAKE_VERSION VERSION_LESS 3.12)
# adjust so we find Python 3 versions before Python 2 on old systems with old CMake
set(Python_ADDITIONAL_VERSIONS 3.12 3.11 3.10 3.9 3.8 3.7 3.6)
find_package(PythonInterp) # Deprecated since version 3.12
if(PYTHONINTERP_FOUND)
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
endif()
else()
# backward compatibility
if(PYTHON_EXECUTABLE)
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
endif()
find_package(Python COMPONENTS Interpreter)
endif()
if(Python_EXECUTABLE)
@ -810,6 +875,7 @@ endif()
include(FeatureSummary)
feature_summary(DESCRIPTION "The following tools and libraries have been found and configured:" WHAT PACKAGES_FOUND)
message(STATUS "<<< Build configuration >>>
LAMMPS Version: ${PROJECT_VERSION}
Operating System: ${CMAKE_SYSTEM_NAME} ${CMAKE_LINUX_DISTRO} ${CMAKE_DISTRO_VERSION}
Build type: ${LAMMPS_BUILD_TYPE}
Install path: ${CMAKE_INSTALL_PREFIX}
@ -919,6 +985,12 @@ if(PKG_KSPACE)
else()
message(STATUS "Kokkos FFT: cuFFT")
endif()
elseif(Kokkos_ENABLE_HIP)
if(FFT STREQUAL "KISS")
message(STATUS "Kokkos FFT: KISS")
else()
message(STATUS "Kokkos FFT: hipFFT")
endif()
else()
message(STATUS "Kokkos FFT: ${FFT}")
endif()

195
cmake/CMakeLists.zlib Normal file
View File

@ -0,0 +1,195 @@
cmake_minimum_required(VERSION 3.10)
# When using CMake 3.4 and later, don't export symbols from executables unless
# the CMAKE_ENABLE_EXPORTS variable is set.
if(POLICY CMP0065)
cmake_policy(SET CMP0065 NEW)
endif()
if (POLICY CMP0077)
cmake_policy(SET CMP0077 NEW)
endif()
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
project(zlib C)
set(VERSION "1.2.11")
option(ASM686 "Enable building i686 assembly implementation" OFF)
option(AMD64 "Enable building amd64 assembly implementation" OFF)
set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
set(INSTALL_MAN_DIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Installation directory for manual pages")
set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
include(CheckTypeSize)
include(CheckFunctionExists)
include(CheckIncludeFile)
include(CheckCSourceCompiles)
check_include_file(sys/types.h HAVE_SYS_TYPES_H)
check_include_file(stdint.h HAVE_STDINT_H)
check_include_file(stddef.h HAVE_STDDEF_H)
#
# Check to see if we have large file support
#
set(CMAKE_REQUIRED_DEFINITIONS -D_LARGEFILE64_SOURCE=1)
# We add these other definitions here because CheckTypeSize.cmake
# in CMake 2.4.x does not automatically do so and we want
# compatibility with CMake 2.4.x.
if(HAVE_SYS_TYPES_H)
list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_SYS_TYPES_H)
endif()
if(HAVE_STDINT_H)
list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDINT_H)
endif()
if(HAVE_STDDEF_H)
list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDDEF_H)
endif()
check_type_size(off64_t OFF64_T)
check_type_size(off64_t OFF64_T)
if(HAVE_OFF64_T)
add_definitions(-D_LARGEFILE64_SOURCE=1)
endif()
set(CMAKE_REQUIRED_DEFINITIONS) # clear variable
#
# Check for fseeko
#
check_function_exists(fseeko HAVE_FSEEKO)
if(NOT HAVE_FSEEKO)
add_definitions(-DNO_FSEEKO)
endif()
#
# Check for unistd.h
#
check_include_file(unistd.h Z_HAVE_UNISTD_H)
if(MSVC)
set(CMAKE_DEBUG_POSTFIX "d")
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
endif()
if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
# If we're doing an out of source build and the user has a zconf.h
# in their source tree...
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h)
file(RENAME ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.included)
endif()
endif()
set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein
${ZLIB_PC} @ONLY)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
#============================================================================
# zlib
#============================================================================
set(ZLIB_PUBLIC_HDRS
${CMAKE_CURRENT_BINARY_DIR}/zconf.h
zlib.h
)
set(ZLIB_PRIVATE_HDRS
crc32.h
deflate.h
gzguts.h
inffast.h
inffixed.h
inflate.h
inftrees.h
trees.h
zutil.h
)
set(ZLIB_SRCS
adler32.c
compress.c
crc32.c
deflate.c
gzclose.c
gzlib.c
gzread.c
gzwrite.c
inflate.c
infback.c
inftrees.c
inffast.c
trees.c
uncompr.c
zutil.c
)
if(NOT MINGW)
set(ZLIB_DLL_SRCS
win32/zlib1.rc # If present will override custom build rule below.
)
endif()
if(CMAKE_COMPILER_IS_GNUCC)
if(ASM686)
set(ZLIB_ASMS contrib/asm686/match.S)
elseif (AMD64)
set(ZLIB_ASMS contrib/amd64/amd64-match.S)
endif ()
if(ZLIB_ASMS)
add_definitions(-DASMV)
set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE)
endif()
endif()
if(MSVC)
if(ASM686)
ENABLE_LANGUAGE(ASM_MASM)
set(ZLIB_ASMS
contrib/masmx86/inffas32.asm
contrib/masmx86/match686.asm
)
elseif (AMD64)
ENABLE_LANGUAGE(ASM_MASM)
set(ZLIB_ASMS
contrib/masmx64/gvmat64.asm
contrib/masmx64/inffasx64.asm
)
endif()
if(ZLIB_ASMS)
add_definitions(-DASMV -DASMINF)
endif()
endif()
# parse the full version number from zlib.h and include in ZLIB_FULL_VERSION
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents)
string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*"
"\\1" ZLIB_FULL_VERSION ${_zlib_h_contents})
if(MINGW)
# This gets us DLL resource information when compiling on MinGW.
if(NOT CMAKE_RC_COMPILER)
set(CMAKE_RC_COMPILER windres.exe)
endif()
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
COMMAND ${CMAKE_RC_COMPILER}
-D GCC_WINDRES
-I ${CMAKE_CURRENT_SOURCE_DIR}
-I ${CMAKE_CURRENT_BINARY_DIR}
-o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
-i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc)
set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
endif(MINGW)
add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
if(UNIX)
# On unix-like platforms the library is almost always called libz
set_target_properties(zlibstatic PROPERTIES OUTPUT_NAME z)
endif()

View File

@ -8,7 +8,7 @@
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"ctestCommandArgs": "-V",
"inheritEnvironments": [ "msvc_x64_x64" ],
"variables": [
{
@ -26,11 +26,6 @@
"value": "True",
"type": "BOOL"
},
{
"name": "PKG_PYTHON",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "True",
@ -46,7 +41,7 @@
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"ctestCommandArgs": "-V",
"inheritEnvironments": [ "msvc_x64_x64" ],
"variables": [
{
@ -64,11 +59,6 @@
"value": "True",
"type": "BOOL"
},
{
"name": "PKG_PYTHON",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "True",
@ -102,11 +92,6 @@
"value": "True",
"type": "BOOL"
},
{
"name": "PKG_PYTHON",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "True",
@ -122,7 +107,7 @@
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake -DCMAKE_C_COMPILER=clang-cl.exe -DCMAKE_CXX_COMPILER=clang-cl.exe",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"ctestCommandArgs": "-V",
"inheritEnvironments": [ "clang_cl_x64" ],
"variables": [
{
@ -141,7 +126,40 @@
"type": "BOOL"
},
{
"name": "PKG_PYTHON",
"name": "ENABLE_TESTING",
"value": "True",
"type": "BOOL"
}
]
},
{
"name": "x64-Debug-IntelLLVM",
"generator": "Ninja",
"configurationType": "Debug",
"buildRoot": "${workspaceRoot}\\build\\${name}",
"installRoot": "${workspaceRoot}\\install\\${name}",
"buildCommandArgs": "",
"ctestCommandArgs": "-V",
"inheritEnvironments": [],
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows-intel-llvm.cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake",
"variables": [
{
"name": "PKG_ELECTRODE",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_SHARED_LIBS",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_TOOLS",
"value": "True",
"type": "BOOL"
},
{
"name": "LAMMPS_EXCEPTIONS",
"value": "True",
"type": "BOOL"
},
@ -149,8 +167,142 @@
"name": "ENABLE_TESTING",
"value": "True",
"type": "BOOL"
},
{
"name": "FFT",
"value": "MKL",
"type": "STRING"
}
]
},
{
"name": "x64-Release-IntelLLVM",
"generator": "Ninja",
"configurationType": "Release",
"buildRoot": "${workspaceRoot}\\build\\${name}",
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows-intel-llvm.cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake",
"buildCommandArgs": "",
"ctestCommandArgs": "-V",
"inheritEnvironments": [],
"variables": [
{
"name": "PKG_ELECTRODE",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_SHARED_LIBS",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_TOOLS",
"value": "True",
"type": "BOOL"
},
{
"name": "LAMMPS_EXCEPTIONS",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "True",
"type": "BOOL"
},
{
"name": "FFT",
"value": "MKL",
"type": "STRING"
}
]
},
{
"name": "x64-Debug-Intel-Classic",
"generator": "Ninja",
"configurationType": "Debug",
"buildRoot": "${workspaceRoot}\\build\\${name}",
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows-intel-classic.cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake",
"buildCommandArgs": "",
"ctestCommandArgs": "-V",
"inheritEnvironments": [],
"variables": [
{
"name": "PKG_ELECTRODE",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_SHARED_LIBS",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_TOOLS",
"value": "True",
"type": "BOOL"
},
{
"name": "LAMMPS_EXCEPTIONS",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "False",
"type": "BOOL"
},
{
"name": "FFT",
"value": "MKL",
"type": "STRING"
}
]
},
{
"name": "x64-Release-Intel-Classic",
"generator": "Ninja",
"configurationType": "Release",
"buildRoot": "${workspaceRoot}\\build\\${name}",
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows-intel-classic.cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake",
"buildCommandArgs": "",
"ctestCommandArgs": "-V",
"inheritEnvironments": [],
"variables": [
{
"name": "PKG_ELECTRODE",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_SHARED_LIBS",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_TOOLS",
"value": "True",
"type": "BOOL"
},
{
"name": "LAMMPS_EXCEPTIONS",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "False",
"type": "BOOL"
},
{
"name": "FFT",
"value": "MKL",
"type": "STRING"
}
]
}
]
}
}

View File

@ -7,13 +7,13 @@ if(BUILD_DOC)
# Sphinx 3.x requires at least Python 3.5
if(CMAKE_VERSION VERSION_LESS 3.12)
find_package(PythonInterp 3.5 REQUIRED)
set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv -p ${PYTHON_EXECUTABLE})
set(VIRTUALENV ${PYTHON_EXECUTABLE} -m venv)
else()
find_package(Python3 REQUIRED COMPONENTS Interpreter)
if(Python3_VERSION VERSION_LESS 3.5)
message(FATAL_ERROR "Python 3.5 and up is required to build the HTML documentation")
endif()
set(VIRTUALENV ${Python3_EXECUTABLE} -m virtualenv -p ${Python3_EXECUTABLE})
set(VIRTUALENV ${Python3_EXECUTABLE} -m venv)
endif()
find_package(Doxygen 1.8.10 REQUIRED)

View File

@ -0,0 +1,208 @@
# CMake script code to define LAMMPS settings required for building LAMMPS plugins
# enforce out-of-source build
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
message(FATAL_ERROR "In-source builds are not allowed. You must create and use a build directory. "
"Please remove CMakeCache.txt and CMakeFiles first.")
endif()
set(LAMMPS_THIRDPARTY_URL "https://download.lammps.org/thirdparty"
CACHE STRING "URL for thirdparty package downloads")
# global LAMMPS/plugin build settings
set(LAMMPS_SOURCE_DIR "" CACHE PATH "Location of LAMMPS sources folder")
if(NOT LAMMPS_SOURCE_DIR)
message(FATAL_ERROR "Must set LAMMPS_SOURCE_DIR")
endif()
# by default, install into $HOME/.local (not /usr/local),
# so that no root access (and sudo) is needed
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "Default install path" FORCE)
endif()
# ugly hacks for MSVC which by default always reports an old C++ standard in the __cplusplus macro
# and prints lots of pointless warnings about "unsafe" functions
if(MSVC)
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
add_compile_options(/Zc:__cplusplus)
add_compile_options(/wd4244)
add_compile_options(/wd4267)
if(LAMMPS_EXCEPTIONS)
add_compile_options(/EHsc)
endif()
endif()
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
endif()
# C++11 is required
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Need -restrict with Intel compilers
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -restrict")
endif()
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
#######
# helper functions from LAMMPSUtils.cmake
function(validate_option name values)
string(TOLOWER ${${name}} needle_lower)
string(TOUPPER ${${name}} needle_upper)
list(FIND ${values} ${needle_lower} IDX_LOWER)
list(FIND ${values} ${needle_upper} IDX_UPPER)
if(${IDX_LOWER} LESS 0 AND ${IDX_UPPER} LESS 0)
list_to_bulletpoints(POSSIBLE_VALUE_LIST ${${values}})
message(FATAL_ERROR "\n########################################################################\n"
"Invalid value '${${name}}' for option ${name}\n"
"\n"
"Possible values are:\n"
"${POSSIBLE_VALUE_LIST}"
"########################################################################")
endif()
endfunction(validate_option)
# helper function for getting the most recently modified file or folder from a glob pattern
function(get_newest_file path variable)
file(GLOB _dirs ${path})
set(_besttime 2000-01-01T00:00:00)
set(_bestfile "<unknown>")
foreach(_dir ${_dirs})
file(TIMESTAMP ${_dir} _newtime)
if(_newtime IS_NEWER_THAN _besttime)
set(_bestfile ${_dir})
set(_besttime ${_newtime})
endif()
endforeach()
if(_bestfile STREQUAL "<unknown>")
message(FATAL_ERROR "Could not find valid path at: ${path}")
endif()
set(${variable} ${_bestfile} PARENT_SCOPE)
endfunction()
# get LAMMPS version date
function(get_lammps_version version_header variable)
file(STRINGS ${version_header} line REGEX LAMMPS_VERSION)
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\1\\2\\3" date "${line}")
set(${variable} "${date}" PARENT_SCOPE)
endfunction()
#################################################################################
# LAMMPS C++ interface. We only need the header related parts except on windows.
add_library(lammps INTERFACE)
target_include_directories(lammps INTERFACE ${LAMMPS_SOURCE_DIR})
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
target_link_libraries(lammps INTERFACE ${CMAKE_BINARY_DIR}/../liblammps.dll.a)
endif()
################################################################################
# MPI configuration
if(NOT CMAKE_CROSSCOMPILING)
set(MPI_CXX_SKIP_MPICXX TRUE)
find_package(MPI QUIET)
option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
else()
option(BUILD_MPI "Build MPI version" OFF)
endif()
if(BUILD_MPI)
# do not include the (obsolete) MPI C++ bindings which makes
# for leaner object files and avoids namespace conflicts
set(MPI_CXX_SKIP_MPICXX TRUE)
# We use a non-standard procedure to cross-compile with MPI on Windows
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
# Download and configure custom MPICH files for Windows
message(STATUS "Downloading and configuring MPICH-1.4.1 for Windows")
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball")
set(MPICH2_WIN32_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win32-devel.tar.gz" CACHE STRING "URL for MPICH2 (win32) tarball")
set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball")
set(MPICH2_WIN32_DEVEL_MD5 "a61d153500dce44e21b755ee7257e031" CACHE STRING "MD5 checksum of MPICH2 (win32) tarball")
mark_as_advanced(MPICH2_WIN64_DEVEL_URL)
mark_as_advanced(MPICH2_WIN32_DEVEL_URL)
mark_as_advanced(MPICH2_WIN64_DEVEL_MD5)
mark_as_advanced(MPICH2_WIN32_DEVEL_MD5)
include(ExternalProject)
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
ExternalProject_Add(mpi4win_build
URL ${MPICH2_WIN64_DEVEL_URL}
URL_MD5 ${MPICH2_WIN64_DEVEL_MD5}
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
else()
ExternalProject_Add(mpi4win_build
URL ${MPICH2_WIN32_DEVEL_URL}
URL_MD5 ${MPICH2_WIN32_DEVEL_MD5}
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
endif()
ExternalProject_get_property(mpi4win_build SOURCE_DIR)
file(MAKE_DIRECTORY "${SOURCE_DIR}/include")
add_library(MPI::MPI_CXX UNKNOWN IMPORTED)
set_target_properties(MPI::MPI_CXX PROPERTIES
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a"
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
add_dependencies(MPI::MPI_CXX mpi4win_build)
# set variables for status reporting at the end of CMake run
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a")
else()
find_package(MPI REQUIRED)
option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF)
if(LAMMPS_LONGLONG_TO_LONG)
target_compile_definitions(lammps INTERFACE -DLAMMPS_LONGLONG_TO_LONG)
endif()
endif()
target_link_libraries(lammps INTERFACE MPI::MPI_CXX)
else()
add_library(mpi_stubs INTERFACE)
target_include_directories(mpi_stubs INTERFACE $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}/STUBS>)
target_link_libraries(lammps INTERFACE mpi_stubs)
endif()
################################################################################
# detect if we may enable OpenMP support by default
set(BUILD_OMP_DEFAULT OFF)
find_package(OpenMP QUIET)
if(OpenMP_FOUND)
check_include_file_cxx(omp.h HAVE_OMP_H_INCLUDE)
if(HAVE_OMP_H_INCLUDE)
set(BUILD_OMP_DEFAULT ON)
endif()
endif()
option(BUILD_OMP "Build with OpenMP support" ${BUILD_OMP_DEFAULT})
if(BUILD_OMP)
find_package(OpenMP REQUIRED)
check_include_file_cxx(omp.h HAVE_OMP_H_INCLUDE)
if(NOT HAVE_OMP_H_INCLUDE)
message(FATAL_ERROR "Cannot find the 'omp.h' header file required for full OpenMP support")
endif()
if (((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0)) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "PGI") OR
((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR
((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0)))
# GCC 9.x and later plus Clang 10.x and later implement strict OpenMP 4.0 semantics for consts.
# Intel 18.0 was tested to support both, so we switch to OpenMP 4+ from 19.x onward to be safe.
target_compile_definitions(lammps INTERFACE -DLAMMPS_OMP_COMPAT=4)
else()
target_compile_definitions(lammps INTERFACE -DLAMMPS_OMP_COMPAT=3)
endif()
target_link_libraries(lammps INTERFACE OpenMP::OpenMP_CXX)
endif()
################
# integer size selection
set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallsmall: all 32-bit, smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)")
set(LAMMPS_SIZES_VALUES smallbig bigbig smallsmall)
set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS ${LAMMPS_SIZES_VALUES})
validate_option(LAMMPS_SIZES LAMMPS_SIZES_VALUES)
string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES)
target_compile_definitions(lammps INTERFACE -DLAMMPS_${LAMMPS_SIZES})

View File

@ -24,6 +24,24 @@ function(validate_option name values)
endif()
endfunction(validate_option)
# helper function for getting the most recently modified file or folder from a glob pattern
function(get_newest_file path variable)
file(GLOB _dirs ${path})
set(_besttime 2000-01-01T00:00:00)
set(_bestfile "<unknown>")
foreach(_dir ${_dirs})
file(TIMESTAMP ${_dir} _newtime)
if(_newtime IS_NEWER_THAN _besttime)
set(_bestfile ${_dir})
set(_besttime ${_newtime})
endif()
endforeach()
if(_bestfile STREQUAL "<unknown>")
message(FATAL_ERROR "Could not find valid path at: ${path}")
endif()
set(${variable} ${_bestfile} PARENT_SCOPE)
endfunction()
function(get_lammps_version version_header variable)
file(STRINGS ${version_header} line REGEX LAMMPS_VERSION)
set(MONTHS x Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)

View File

@ -19,6 +19,10 @@ endif()
add_library(colvars STATIC ${COLVARS_SOURCES})
target_compile_definitions(colvars PRIVATE -DCOLVARS_LAMMPS)
separate_arguments(CMAKE_TUNE_FLAGS)
foreach(_FLAG ${CMAKE_TUNE_FLAGS})
target_compile_options(colvars PRIVATE ${_FLAG})
endforeach()
set_target_properties(colvars PROPERTIES OUTPUT_NAME lammps_colvars${LAMMPS_MACHINE})
target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars)
# The line below is needed to locate math_eigen_impl.h

View File

@ -80,14 +80,14 @@ if(GPU_API STREQUAL "CUDA")
# --arch translates directly instead of JIT, so this should be for the preferred or most common architecture
set(GPU_CUDA_GENCODE "-arch=${GPU_ARCH}")
# apply the following to build "fat" CUDA binaries only for known CUDA toolkits
if(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
message(WARNING "Untested CUDA Toolkit version. Use at your own risk")
# apply the following to build "fat" CUDA binaries only for known CUDA toolkits since version 8.0
# only the Kepler achitecture and beyond is supported
if(CUDA_VERSION VERSION_LESS 8.0)
message(FATAL_ERROR "CUDA Toolkit version 8.0 or later is required")
elseif(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
message(WARNING "Untested CUDA Toolkit version ${CUDA_VERSION}. Use at your own risk")
set(GPU_CUDA_GENCODE "-arch=all")
else()
# Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0
if((CUDA_VERSION VERSION_GREATER_EQUAL "3.2") AND (CUDA_VERSION VERSION_LESS "9.0"))
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_20,code=[sm_20,compute_20] ")
endif()
# Kepler (GPU Arch 3.0) is supported by CUDA 5 to CUDA 10.2
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "11.0"))
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_30,code=[sm_30,compute_30] ")
@ -120,6 +120,14 @@ if(GPU_API STREQUAL "CUDA")
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.1")
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_86,code=[sm_86,compute_86]")
endif()
# Hopper (GPU Arch 9.0) is supported by CUDA 12.0? and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_90,code=[sm_90,compute_90]")
endif()
# # Lovelace (GPU Arch 9.x) is supported by CUDA 12.0? and later
#if(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
# string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_9x,code=[sm_9x,compute_9x]")
#endif()
endif()
cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS ${CUDA_REQUEST_PIC}
@ -225,7 +233,8 @@ elseif(GPU_API STREQUAL "OPENCL")
elseif(GPU_API STREQUAL "HIP")
if(NOT DEFINED HIP_PATH)
if(NOT DEFINED ENV{HIP_PATH})
set(HIP_PATH "/opt/rocm/hip" CACHE PATH "Path to HIP installation")
message(FATAL_ERROR "GPU_API=HIP requires HIP_PATH to be defined.\n"
"Either pass the HIP_PATH as a CMake option via -DHIP_PATH=... or set the HIP_PATH environment variable.")
else()
set(HIP_PATH $ENV{HIP_PATH} CACHE PATH "Path to HIP installation")
endif()
@ -253,47 +262,53 @@ elseif(GPU_API STREQUAL "HIP")
if(HIP_PLATFORM STREQUAL "hcc" OR HIP_PLATFORM STREQUAL "amd")
set(HIP_ARCH "gfx906" CACHE STRING "HIP target architecture")
elseif(HIP_PLATFORM STREQUAL "spirv")
set(HIP_ARCH "spirv" CACHE STRING "HIP target architecture")
elseif(HIP_PLATFORM STREQUAL "nvcc")
find_package(CUDA REQUIRED)
set(HIP_ARCH "sm_50" CACHE STRING "HIP primary CUDA architecture (e.g. sm_60)")
# build arch/gencode commands for nvcc based on CUDA toolkit version and use choice
# --arch translates directly instead of JIT, so this should be for the preferred or most common architecture
set(HIP_CUDA_GENCODE "-arch=${HIP_ARCH}")
# Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0
if((CUDA_VERSION VERSION_GREATER_EQUAL "3.2") AND (CUDA_VERSION VERSION_LESS "9.0"))
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_20,code=[sm_20,compute_20]")
endif()
# Kepler (GPU Arch 3.0) is supported by CUDA 5 to CUDA 10.2
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "11.0"))
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_30,code=[sm_30,compute_30]")
endif()
# Kepler (GPU Arch 3.5) is supported by CUDA 5 to CUDA 11.0
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "12.0"))
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_35,code=[sm_35,compute_35]")
endif()
# Maxwell (GPU Arch 5.x) is supported by CUDA 6 and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "6.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52]")
endif()
# Pascal (GPU Arch 6.x) is supported by CUDA 8 and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "8.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61]")
endif()
# Volta (GPU Arch 7.0) is supported by CUDA 9 and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "9.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_70,code=[sm_70,compute_70]")
endif()
# Turing (GPU Arch 7.5) is supported by CUDA 10 and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "10.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_75,code=[sm_75,compute_75]")
endif()
# Ampere (GPU Arch 8.0) is supported by CUDA 11 and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_80,code=[sm_80,compute_80]")
endif()
if(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
message(WARNING "Unsupported CUDA version. Use at your own risk.")
if(CUDA_VERSION VERSION_LESS 8.0)
message(FATAL_ERROR "CUDA Toolkit version 8.0 or later is required")
elseif(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
message(WARNING "Untested CUDA Toolkit version ${CUDA_VERSION}. Use at your own risk")
set(HIP_CUDA_GENCODE "-arch=all")
else()
# build arch/gencode commands for nvcc based on CUDA toolkit version and use choice
# --arch translates directly instead of JIT, so this should be for the preferred or most common architecture
set(HIP_CUDA_GENCODE "-arch=${HIP_ARCH}")
# Kepler (GPU Arch 3.0) is supported by CUDA 5 to CUDA 10.2
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "11.0"))
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_30,code=[sm_30,compute_30]")
endif()
# Kepler (GPU Arch 3.5) is supported by CUDA 5 to CUDA 11.0
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "12.0"))
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_35,code=[sm_35,compute_35]")
endif()
# Maxwell (GPU Arch 5.x) is supported by CUDA 6 and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "6.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52]")
endif()
# Pascal (GPU Arch 6.x) is supported by CUDA 8 and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "8.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61]")
endif()
# Volta (GPU Arch 7.0) is supported by CUDA 9 and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "9.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_70,code=[sm_70,compute_70]")
endif()
# Turing (GPU Arch 7.5) is supported by CUDA 10 and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "10.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_75,code=[sm_75,compute_75]")
endif()
# Ampere (GPU Arch 8.0) is supported by CUDA 11 and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_80,code=[sm_80,compute_80]")
endif()
# Hopper (GPU Arch 9.0) is supported by CUDA 12.0? and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_90,code=[sm_90,compute_90]")
endif()
endif()
endif()
@ -328,7 +343,14 @@ elseif(GPU_API STREQUAL "HIP")
VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --fatbin --use_fast_math -DUSE_HIP -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES} ${HIP_CUDA_GENCODE} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_FILE}
DEPENDS ${CU_FILE}
COMMENT "Generating ${CU_NAME}.cubin")
endif()
elseif(HIP_PLATFORM STREQUAL "spirv")
configure_file(${CU_FILE} ${CU_CPP_FILE} COPYONLY)
add_custom_command(OUTPUT ${CUBIN_FILE}
VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} -c -O3 -DUSE_HIP -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_CPP_FILE}
DEPENDS ${CU_CPP_FILE}
COMMENT "Gerating ${CU_NAME}.cubin")
endif()
add_custom_command(OUTPUT ${CUBIN_H_FILE}
COMMAND ${CMAKE_COMMAND} -D SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -D VARNAME=${CU_NAME} -D HEADER_FILE=${CUBIN_H_FILE} -D SOURCE_FILE=${CUBIN_FILE} -P ${CMAKE_CURRENT_SOURCE_DIR}/Modules/GenerateBinaryHeader.cmake
@ -347,6 +369,10 @@ elseif(GPU_API STREQUAL "HIP")
target_link_libraries(gpu PRIVATE hip::host)
if(HIP_USE_DEVICE_SORT)
if(HIP_PLATFORM STREQUAL "amd")
# newer version of ROCm (5.1+) require c++14 for rocprim
set_property(TARGET gpu PROPERTY CXX_STANDARD 14)
endif()
# add hipCUB
target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/../include)
target_compile_definitions(gpu PRIVATE -DUSE_HIP_DEVICE_SORT)

View File

@ -1,5 +1,14 @@
enable_language(C)
# we don't use the parallel i/o interface.
set(HDF5_PREFER_PARALLEL FALSE)
find_package(HDF5 REQUIRED)
# parallel HDF5 will import incompatible MPI headers with a serial build
if((NOT BUILD_MPI) AND HDF5_IS_PARALLEL)
message(FATAL_ERROR "Serial LAMMPS build and parallel HDF5 library are not compatible")
endif()
target_link_libraries(h5md PRIVATE ${HDF5_LIBRARIES})
target_include_directories(h5md PUBLIC ${HDF5_INCLUDE_DIRS})

View File

@ -38,7 +38,7 @@ if(INTEL_LRT_MODE STREQUAL "C++11")
endif()
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
if((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") OR (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM"))
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
message(FATAL_ERROR "INTEL needs at least a 2016 Intel compiler, found ${CMAKE_CXX_COMPILER_VERSION}")
endif()
@ -46,12 +46,12 @@ else()
message(WARNING "INTEL gives best performance with Intel compilers")
endif()
find_package(TBB_MALLOC QUIET)
find_package(TBB_MALLOC)
if(TBB_MALLOC_FOUND)
target_link_libraries(lammps PRIVATE TBB::TBB_MALLOC)
else()
target_compile_definitions(lammps PRIVATE -DLMP_INTEL_NO_TBB)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
if((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") OR (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM"))
message(WARNING "INTEL with Intel compilers should use TBB malloc libraries")
endif()
endif()
@ -112,5 +112,9 @@ if(PKG_KSPACE)
RegisterIntegrateStyle(${INTEL_SOURCES_DIR}/verlet_lrt_intel.h)
endif()
if(PKG_ELECTRODE)
list(APPEND INTEL_SOURCES ${INTEL_SOURCES_DIR}/electrode_accel_intel.cpp)
endif()
target_sources(lammps PRIVATE ${INTEL_SOURCES})
target_include_directories(lammps PRIVATE ${INTEL_SOURCES_DIR})

View File

@ -47,8 +47,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/3.5.00.tar.gz" CACHE STRING "URL for KOKKOS tarball")
set(KOKKOS_MD5 "079323d973ae0e1c38c0a54a150c674e" CACHE STRING "MD5 checksum of KOKKOS tarball")
set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/3.6.01.tar.gz" CACHE STRING "URL for KOKKOS tarball")
set(KOKKOS_MD5 "0ec97fc0c356dd65bd2487defe81a7bf" CACHE STRING "MD5 checksum of KOKKOS tarball")
mark_as_advanced(KOKKOS_URL)
mark_as_advanced(KOKKOS_MD5)
ExternalProject_Add(kokkos_build
@ -72,7 +72,7 @@ if(DOWNLOAD_KOKKOS)
add_dependencies(LAMMPS::KOKKOSCORE kokkos_build)
add_dependencies(LAMMPS::KOKKOSCONTAINERS kokkos_build)
elseif(EXTERNAL_KOKKOS)
find_package(Kokkos 3.5.00 REQUIRED CONFIG)
find_package(Kokkos 3.6.01 REQUIRED CONFIG)
target_link_libraries(lammps PRIVATE Kokkos::kokkos)
target_link_libraries(lmp PRIVATE Kokkos::kokkos)
else()
@ -130,6 +130,11 @@ if(PKG_KSPACE)
target_compile_definitions(lammps PRIVATE -DFFT_CUFFT)
target_link_libraries(lammps PRIVATE cufft)
endif()
elseif(Kokkos_ENABLE_HIP)
if(NOT (FFT STREQUAL "KISS"))
target_compile_definitions(lammps PRIVATE -DFFT_HIPFFT)
target_link_libraries(lammps PRIVATE hipfft)
endif()
endif()
endif()

View File

@ -23,8 +23,9 @@ if(DOWNLOAD_LATTE)
# CMake cannot pass BLAS or LAPACK library variable to external project if they are a list
list(LENGTH BLAS_LIBRARIES} NUM_BLAS)
list(LENGTH LAPACK_LIBRARIES NUM_LAPACK)
if((NUM_BLAS GREATER 1) OR (NUM_LAPACK GREATER 1))
message(FATAL_ERROR "Cannot compile downloaded LATTE library due to a technical limitation")
if((NUM_BLAS GREATER 1) OR (NUM_LAPACK GREATER 1) AND NOT USE_INTERNAL_LINALG)
message(FATAL_ERROR "Cannot compile downloaded LATTE library due to a technical limitation. "
"Try to configure LAMMPS with '-D USE_INTERNAL_LINALG=on' added as a workaround.")
endif()
include(ExternalProject)

View File

@ -36,3 +36,5 @@ endif()
if((CMAKE_CXX_COMPILER_ID STREQUAL "PGI") OR (CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC"))
target_compile_definitions(lammps PRIVATE -DEIGEN_DONT_VECTORIZE)
endif()
target_compile_definitions(lammps PRIVATE -DEIGEN_NO_CUDA)

View File

@ -8,8 +8,8 @@ option(DOWNLOAD_MDI "Download and compile the MDI library instead of using an al
if(DOWNLOAD_MDI)
message(STATUS "MDI download requested - we will build our own")
set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.2.9.tar.gz" CACHE STRING "URL for MDI tarball")
set(MDI_MD5 "ddfa46d6ee15b4e59cfd527ec7212184" CACHE STRING "MD5 checksum for MDI tarball")
set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.1.tar.gz" CACHE STRING "URL for MDI tarball")
set(MDI_MD5 "f9505fccd4c79301a619f6452dad4ad9" CACHE STRING "MD5 checksum for MDI tarball")
mark_as_advanced(MDI_URL)
mark_as_advanced(MDI_MD5)
enable_language(C)
@ -26,8 +26,21 @@ if(DOWNLOAD_MDI)
# detect if we have python development support and thus can enable python plugins
set(MDI_USE_PYTHON_PLUGINS OFF)
if(CMAKE_VERSION VERSION_LESS 3.12)
if(NOT PYTHON_VERSION_STRING)
set(Python_ADDITIONAL_VERSIONS 3.12 3.11 3.10 3.9 3.8 3.7 3.6)
# search for interpreter first, so we have a consistent library
find_package(PythonInterp) # Deprecated since version 3.12
if(PYTHONINTERP_FOUND)
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
endif()
endif()
# search for the library matching the selected interpreter
set(Python_ADDITIONAL_VERSIONS ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR})
find_package(PythonLibs QUIET) # Deprecated since version 3.12
if(PYTHONLIBS_FOUND)
if(NOT (PYTHON_VERSION_STRING STREQUAL PYTHONLIBS_VERSION_STRING))
message(FATAL_ERROR "Python Library version ${PYTHONLIBS_VERSION_STRING} does not match Interpreter version ${PYTHON_VERSION_STRING}")
endif()
set(MDI_USE_PYTHON_PLUGINS ON)
endif()
else()
@ -44,15 +57,17 @@ if(DOWNLOAD_MDI)
ExternalProject_Add(mdi_build
URL ${MDI_URL}
URL_MD5 ${MDI_MD5}
CMAKE_ARGS ${CMAKE_REQUEST_PIC}
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-Dlanguage=C
-Dlibtype=STATIC
-Dmpi=${MDI_USE_MPI}
-Dplugins=ON
-Dpython_plugins=${MDI_USE_PYTHON_PLUGINS}
UPDATE_COMMAND ""
INSTALL_COMMAND ""

View File

@ -1,31 +0,0 @@
if(LAMMPS_SIZES STREQUAL "BIGBIG")
message(FATAL_ERROR "The MESSAGE Package is not compatible with -DLAMMPS_BIGBIG")
endif()
option(MESSAGE_ZMQ "Use ZeroMQ in MESSAGE package" OFF)
file(GLOB_RECURSE cslib_SOURCES
${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.cpp)
add_library(cslib STATIC ${cslib_SOURCES})
target_compile_definitions(cslib PRIVATE -DLAMMPS_${LAMMPS_SIZES})
set_target_properties(cslib PROPERTIES OUTPUT_NAME lammps_cslib${LAMMPS_MACHINE})
if(BUILD_MPI)
target_compile_definitions(cslib PRIVATE -DMPI_YES)
set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi")
target_link_libraries(cslib PRIVATE MPI::MPI_CXX)
else()
target_compile_definitions(cslib PRIVATE -DMPI_NO)
target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_MPI)
set_target_properties(cslib PROPERTIES OUTPUT_NAME "csnompi")
endif()
if(MESSAGE_ZMQ)
target_compile_definitions(cslib PRIVATE -DZMQ_YES)
find_package(ZMQ REQUIRED)
target_link_libraries(cslib PUBLIC ZMQ::ZMQ)
else()
target_compile_definitions(cslib PRIVATE -DZMQ_NO)
target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_ZMQ)
endif()
target_link_libraries(lammps PRIVATE cslib)
target_include_directories(lammps PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src)

View File

@ -0,0 +1,13 @@
# pair style and fix srp/react depend on the fixes bond/break and bond/create from the MC package
if(NOT PKG_MC)
get_property(LAMMPS_FIX_HEADERS GLOBAL PROPERTY FIX)
list(REMOVE_ITEM LAMMPS_FIX_HEADERS ${LAMMPS_SOURCE_DIR}/MISC/fix_srp_react.h)
set_property(GLOBAL PROPERTY FIX "${LAMMPS_FIX_HEADERS}")
get_property(LAMMPS_PAIR_HEADERS GLOBAL PROPERTY PAIR)
list(REMOVE_ITEM LAMMPS_PAIR_HEADERS ${LAMMPS_SOURCE_DIR}/MISC/pair_srp_react.h)
set_property(GLOBAL PROPERTY PAIR "${LAMMPS_PAIR_HEADERS}")
get_target_property(LAMMPS_SOURCES lammps SOURCES)
list(REMOVE_ITEM LAMMPS_SOURCES ${LAMMPS_SOURCE_DIR}/MISC/fix_srp_react.cpp)
list(REMOVE_ITEM LAMMPS_SOURCES ${LAMMPS_SOURCE_DIR}/MISC/pair_srp_react.cpp)
set_property(TARGET lammps PROPERTY SOURCES "${LAMMPS_SOURCES}")
endif()

View File

@ -42,15 +42,11 @@ if(DOWNLOAD_N2P2)
if(NOT BUILD_MPI)
set(N2P2_PROJECT_OPTIONS "-DN2P2_NO_MPI")
else()
# get path to MPI include directory when cross-compiling to windows
if((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING)
get_target_property(N2P2_MPI_INCLUDE MPI::MPI_CXX INTERFACE_INCLUDE_DIRECTORIES)
set(N2P2_PROJECT_OPTIONS "-I${N2P2_MPI_INCLUDE}")
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
get_target_property(N2P2_MPI_INCLUDE MPI::MPI_CXX INTERFACE_INCLUDE_DIRECTORIES)
set(N2P2_PROJECT_OPTIONS "-I${N2P2_MPI_INCLUDE}")
endif()
# get path to MPI include directory
get_target_property(N2P2_MPI_INCLUDE MPI::MPI_CXX INTERFACE_INCLUDE_DIRECTORIES)
foreach (_INCL ${N2P2_MPI_INCLUDE})
set(N2P2_PROJECT_OPTIONS "${N2P2_PROJECT_OPTIONS} -I${_INCL}")
endforeach()
endif()
# prefer GNU make, if available. N2P2 lib seems to need it.
@ -81,7 +77,7 @@ if(DOWNLOAD_N2P2)
UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
PATCH_COMMAND sed -i -e "s/\\(MPI_\\(P\\|Unp\\)ack(\\)/\\1(void *) /" src/libnnpif/LAMMPS/InterfaceLammps.cpp
BUILD_COMMAND ${N2P2_MAKE} -f makefile libnnpif ${N2P2_BUILD_OPTIONS}
BUILD_COMMAND ${N2P2_MAKE} -C <SOURCE_DIR>/src -f makefile libnnpif ${N2P2_BUILD_OPTIONS}
BUILD_ALWAYS YES
INSTALL_COMMAND ""
BUILD_IN_SOURCE 1

View File

@ -1,6 +1,6 @@
set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2021.10.25.tar.gz" CACHE STRING "URL for PACE evaluator library sources")
set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2021.10.25.fix2.tar.gz" CACHE STRING "URL for PACE evaluator library sources")
set(PACELIB_MD5 "a2ac3315c41a1a4a5c912bcb1bc9c5cc" CACHE STRING "MD5 checksum of PACE evaluator library tarball")
set(PACELIB_MD5 "32394d799bc282bb57696c78c456e64f" CACHE STRING "MD5 checksum of PACE evaluator library tarball")
mark_as_advanced(PACELIB_URL)
mark_as_advanced(PACELIB_MD5)
@ -13,8 +13,12 @@ execute_process(
COMMAND ${CMAKE_COMMAND} -E tar xzf libpace.tar.gz
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
get_newest_file(${CMAKE_BINARY_DIR}/lammps-user-pace-* lib-pace)
file(GLOB lib-pace ${CMAKE_BINARY_DIR}/lammps-user-pace-*)
# enforce building libyaml-cpp as static library and turn off optional features
set(YAML_BUILD_SHARED_LIBS OFF)
set(YAML_CPP_BUILD_CONTRIB OFF)
set(YAML_CPP_BUILD_TOOLS OFF)
add_subdirectory(${lib-pace}/yaml-cpp build-yaml-cpp)
set(YAML_CPP_INCLUDE_DIR ${lib-pace}/yaml-cpp/include)
@ -28,5 +32,6 @@ target_include_directories(pace PUBLIC ${PACE_EVALUATOR_INCLUDE_DIR} ${YAML_CPP_
target_link_libraries(pace PRIVATE yaml-cpp-pace)
target_link_libraries(lammps PRIVATE pace)
if(CMAKE_PROJECT_NAME STREQUAL "lammps")
target_link_libraries(lammps PRIVATE pace)
endif()

View File

@ -43,6 +43,7 @@ if(DOWNLOAD_QUIP)
file(WRITE ${CMAKE_BINARY_DIR}/quip.config "${temp}")
message(STATUS "QUIP download via git requested - we will build our own")
set(CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY CHECKOUT)
# QUIP has no releases (except for a tag marking the end of Python 2 support). We use the current "public" branch
# The LAMMPS interface wrapper has a compatibility constant that is being checked at runtime.
include(ExternalProject)

View File

@ -1,8 +1,28 @@
if(CMAKE_VERSION VERSION_LESS 3.12)
if(NOT PYTHON_VERSION_STRING)
set(Python_ADDITIONAL_VERSIONS 3.12 3.11 3.10 3.9 3.8 3.7 3.6)
# search for interpreter first, so we have a consistent library
find_package(PythonInterp) # Deprecated since version 3.12
if(PYTHONINTERP_FOUND)
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
endif()
endif()
# search for the library matching the selected interpreter
set(Python_ADDITIONAL_VERSIONS ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR})
find_package(PythonLibs REQUIRED) # Deprecated since version 3.12
if(NOT (PYTHON_VERSION_STRING STREQUAL PYTHONLIBS_VERSION_STRING))
message(FATAL_ERROR "Python Library version ${PYTHONLIBS_VERSION_STRING} does not match Interpreter version ${PYTHON_VERSION_STRING}")
endif()
target_include_directories(lammps PRIVATE ${PYTHON_INCLUDE_DIRS})
target_link_libraries(lammps PRIVATE ${PYTHON_LIBRARIES})
else()
if(NOT Python_INTERPRETER)
# backward compatibility
if(PYTHON_EXECUTABLE)
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
endif()
find_package(Python COMPONENTS Interpreter)
endif()
find_package(Python REQUIRED COMPONENTS Interpreter Development)
target_link_libraries(lammps PRIVATE Python::Python)
endif()

View File

@ -3,6 +3,9 @@ if(BUILD_TOOLS)
target_compile_definitions(binary2txt PRIVATE -DLAMMPS_${LAMMPS_SIZES})
install(TARGETS binary2txt DESTINATION ${CMAKE_INSTALL_BINDIR})
add_executable(stl_bin2txt ${LAMMPS_TOOLS_DIR}/stl_bin2txt.cpp)
install(TARGETS stl_bin2txt DESTINATION ${CMAKE_INSTALL_BINDIR})
include(CheckGeneratorSupport)
if(CMAKE_GENERATOR_SUPPORT_FORTRAN)
include(CheckLanguage)

View File

@ -31,5 +31,7 @@ set(temp "${temp}const char *LAMMPS_NS::LAMMPS::git_descriptor() { return \"${te
set(temp "${temp}#endif\n\n")
message(STATUS "Generating lmpgitversion.h...")
file(WRITE "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${temp}" )
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h")
string(REPLACE "\\ " " " LAMMPS_GIT_HEADER "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h")
file(WRITE "${LAMMPS_GIT_HEADER}.tmp" "${temp}" )
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_GIT_HEADER}.tmp" "${LAMMPS_GIT_HEADER}")

View File

@ -3,14 +3,16 @@
set(ALL_PACKAGES
ADIOS
AMOEBA
ASPHERE
ATC
AWPMD
BOCS
BODY
BPM
BROWNIAN
CG-DNA
CG-SDK
CG-SPICA
CLASS2
COLLOID
COLVARS
@ -24,6 +26,7 @@ set(ALL_PACKAGES
DPD-REACT
DPD-SMOOTH
DRUDE
ELECTRODE
EFF
EXTRA-COMPUTE
EXTRA-DUMP
@ -48,7 +51,6 @@ set(ALL_PACKAGES
MDI
MEAM
MESONT
MESSAGE
MGPT
MISC
ML-HDNNP

View File

@ -5,14 +5,16 @@
set(ALL_PACKAGES
ADIOS
AMOEBA
ASPHERE
ATC
AWPMD
BOCS
BODY
BPM
BROWNIAN
CG-DNA
CG-SDK
CG-SPICA
CLASS2
COLLOID
COLVARS
@ -26,6 +28,7 @@ set(ALL_PACKAGES
DPD-REACT
DPD-SMOOTH
DRUDE
ELECTRODE
EFF
EXTRA-COMPUTE
EXTRA-DUMP
@ -50,7 +53,6 @@ set(ALL_PACKAGES
MDI
MEAM
MESONT
MESSAGE
MGPT
MISC
ML-HDNNP

View File

@ -3,9 +3,9 @@
# that is compatible with all higher CC, but not the default CC 3.5
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 ON CACHE BOOL "" FORCE)
set(Kokkos_ARCH_MAXWELL50 on CACHE BOOL "" FORCE)
set(Kokkos_ARCH_PASCAL60 ON CACHE BOOL "" FORCE)
set(BUILD_OMP ON CACHE BOOL "" FORCE)
get_filename_component(NVCC_WRAPPER_CMD ${CMAKE_CURRENT_SOURCE_DIR}/../lib/kokkos/bin/nvcc_wrapper ABSOLUTE)
set(CMAKE_CXX_COMPILER ${NVCC_WRAPPER_CMD} CACHE FILEPATH "" FORCE)
# hide deprecation warnings temporarily for stable release
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)

View File

@ -0,0 +1,20 @@
# preset that enables KOKKOS and selects HIP 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_HIP ON CACHE BOOL "" FORCE)
set(Kokkos_ARCH_VEGA90A on CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_HIP_MULTIPLE_KERNEL_INSTANTIATIONS ON CACHE BOOL "" FORCE)
set(BUILD_OMP ON CACHE BOOL "" FORCE)
set(CMAKE_CXX_COMPILER hipcc CACHE STRING "" FORCE)
set(CMAKE_TUNE_FLAGS "-munsafe-fp-atomics" CACHE STRING "" FORCE)
# hide deprecation warnings temporarily for stable release
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)
# these flags are needed to build with Cray MPICH on OLCF Crusher
#-D CMAKE_CXX_FLAGS="-I/${MPICH_DIR}/include"
#-D MPI_CXX_LIBRARIES="-L${MPICH_DIR}/lib -lmpi -L${CRAY_MPICH_ROOTDIR}/gtl/lib -lmpi_gtl_hsa"

View File

@ -4,3 +4,6 @@ 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(BUILD_OMP ON CACHE BOOL "" FORCE)
# hide deprecation warnings temporarily for stable release
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)

View File

@ -3,3 +3,6 @@ set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_OPENMP OFF CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE)
# hide deprecation warnings temporarily for stable release
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)

View File

@ -0,0 +1,18 @@
# 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(Kokkos_ARCH_MAXWELL50 on CACHE BOOL "" FORCE)
set(BUILD_OMP ON CACHE BOOL "" FORCE)
# hide deprecation warnings temporarily for stable release
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)
set(CMAKE_CXX_COMPILER clang++ CACHE STRING "" FORCE)
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
set(CMAKE_CXX_STANDARD 17 CACHE STRING "" FORCE)
set(CMAKE_SHARED_LINKER_FLAGS "-Xsycl-target-frontend -O3" CACHE STRING "" FORCE)
set(CMAKE_TUNE_FLAGS "-fgpu-inline-threshold=100000 -Xsycl-target-frontend -O3 -Xsycl-target-frontend -ffp-contract=on -Wno-unknown-cuda-version" CACHE STRING "" FORCE)

View File

@ -1,12 +1,14 @@
set(WIN_PACKAGES
AMOEBA
ASPHERE
ATC
AWPMD
BOCS
BODY
BPM
BROWNIAN
CG-DNA
CG-SDK
CG-SPICA
CLASS2
COLLOID
COLVARS
@ -20,6 +22,7 @@ set(WIN_PACKAGES
DPD-REACT
DPD-SMOOTH
DRUDE
ELECTRODE
EFF
EXTRA-COMPUTE
EXTRA-DUMP
@ -44,8 +47,8 @@ set(WIN_PACKAGES
MISC
ML-HDNNP
ML-IAP
ML-SNAP
ML-RANN
ML-SNAP
MOFFF
MOLECULE
MOLFILE
@ -54,6 +57,7 @@ set(WIN_PACKAGES
ORIENT
PERI
PHONON
PLUGIN
POEMS
PTM
QEQ

View File

@ -3,12 +3,14 @@
# are removed. The resulting binary should be able to run most inputs.
set(ALL_PACKAGES
AMOEBA
ASPHERE
BOCS
BODY
BPM
BROWNIAN
CG-DNA
CG-SDK
CG-SPICA
CLASS2
COLLOID
COLVARS
@ -22,6 +24,7 @@ set(ALL_PACKAGES
DPD-REACT
DPD-SMOOTH
DRUDE
ELECTRODE
EFF
EXTRA-COMPUTE
EXTRA-DUMP

View File

@ -6,6 +6,7 @@ set(PACKAGES_WITH_LIB
ATC
AWPMD
COMPRESS
ELECTRODE
GPU
H5MD
KIM
@ -15,7 +16,6 @@ set(PACKAGES_WITH_LIB
MACHDYN
MDI
MESONT
MESSAGE
ML-HDNNP
ML-PACE
ML-QUIP

View File

@ -1,4 +1,4 @@
# preset that will enable clang/clang++ with support for MPI and OpenMP (on Linux boxes)
# preset that will enable PGI (Nvidia) compilers with support for MPI and OpenMP (on Linux boxes)
set(CMAKE_CXX_COMPILER "pgc++" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "pgcc" CACHE STRING "" FORCE)

View File

@ -0,0 +1,8 @@
# preset that will enable Intel compilers with support for MPI and OpenMP (on Linux boxes)
set(CMAKE_CXX_COMPILER "icl" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "icl" CACHE STRING "" FORCE)
set(CMAKE_Fortran_COMPILER "ifort" CACHE STRING "" FORCE)
unset(HAVE_OMP_H_INCLUDE CACHE)

View File

@ -0,0 +1,8 @@
# preset that will enable Intel compilers with support for MPI and OpenMP (on Linux boxes)
set(CMAKE_CXX_COMPILER "icx" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "icx" CACHE STRING "" FORCE)
set(CMAKE_Fortran_COMPILER "ifx" CACHE STRING "" FORCE)
set(INTEL_LRT_MODE "C++11" CACHE STRING "" FORCE)
unset(HAVE_OMP_H_INCLUDE CACHE)
set(CMAKE_TUNE_FLAGS -Wno-unused-command-line-argument)

View File

@ -1,10 +1,12 @@
set(WIN_PACKAGES
AMOEBA
ASPHERE
BOCS
BODY
BPM
BROWNIAN
CG-DNA
CG-SDK
CG-SPICA
CLASS2
COLLOID
COLVARS
@ -42,6 +44,7 @@ set(WIN_PACKAGES
PERI
PHONON
POEMS
PLUGIN
PTM
QEQ
QTB

2
doc/.gitignore vendored
View File

@ -1,6 +1,6 @@
/old
/html
/html-offline
/fasthtml
/epub
/latex
/mathjax

View File

@ -13,35 +13,24 @@ VENV = $(BUILDDIR)/docenv
ANCHORCHECK = $(VENV)/bin/rst_anchor_check
SPHINXCONFIG = $(BUILDDIR)/utils/sphinx-config
MATHJAX = $(SPHINXCONFIG)/_static/mathjax
MATHJAXTAG = 3.2.2
PYTHON = $(shell which python3)
DOXYGEN = $(shell which doxygen)
VIRTUALENV = virtualenv
PYTHON = $(word 3,$(shell type python3))
DOXYGEN = $(word 3,$(shell type doxygen))
HAS_PYTHON3 = NO
HAS_VIRTUALENV = NO
HAS_DOXYGEN = NO
HAS_PDFLATEX = NO
ifeq ($(shell which python3 >/dev/null 2>&1; echo $$?), 0)
ifeq ($(shell type python3 >/dev/null 2>&1; echo $$?), 0)
HAS_PYTHON3 = YES
endif
ifeq ($(shell which doxygen >/dev/null 2>&1; echo $$?), 0)
ifeq ($(shell type doxygen >/dev/null 2>&1; echo $$?), 0)
HAS_DOXYGEN = YES
endif
ifeq ($(shell which virtualenv-3 >/dev/null 2>&1; echo $$?), 0)
VIRTUALENV = virtualenv-3
HAS_VIRTUALENV = YES
endif
ifeq ($(shell which virtualenv >/dev/null 2>&1; echo $$?), 0)
VIRTUALENV = virtualenv
HAS_VIRTUALENV = YES
endif
ifeq ($(shell which pdflatex >/dev/null 2>&1; echo $$?), 0)
ifeq ($(shell which latexmk >/dev/null 2>&1; echo $$?), 0)
ifeq ($(shell type pdflatex >/dev/null 2>&1; echo $$?), 0)
ifeq ($(shell type latexmk >/dev/null 2>&1; echo $$?), 0)
HAS_PDFLATEX = YES
endif
endif
@ -58,7 +47,7 @@ SPHINXEXTRA = -E -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiproc
# we only want to use explicitly listed files.
DOXYFILES = $(shell sed -n -e 's/\#.*$$//' -e '/^ *INPUT \+=/,/^[A-Z_]\+ \+=/p' doxygen/Doxyfile.in | sed -e 's/@LAMMPS_SOURCE_DIR@/..\/src/g' -e 's/\\//g' -e 's/ \+/ /' -e 's/[A-Z_]\+ \+= *\(YES\|NO\|\)//')
.PHONY: help clean-all clean clean-spelling epub mobi rst html pdf spelling anchor_check style_check char_check xmlgen
.PHONY: help clean-all clean clean-spelling epub mobi rst html pdf spelling anchor_check style_check char_check xmlgen fasthtml
# ------------------------------------------
@ -70,7 +59,8 @@ help:
@echo " epub create ePUB format manual for e-book readers"
@echo " mobi convert ePUB to MOBI format manual for e-book readers (e.g. Kindle)"
@echo " (requires ebook-convert tool from calibre)"
@echo " clean remove all intermediate RST files"
@echo " fasthtml approximate HTML page creation in fasthtml dir (for development)"
@echo " clean remove all intermediate files"
@echo " clean-all reset the entire build environment"
@echo " anchor_check scan for duplicate anchor labels"
@echo " style_check check for complete and consistent style lists"
@ -83,7 +73,7 @@ clean-all: clean
rm -rf $(BUILDDIR)/docenv $(MATHJAX) $(BUILDDIR)/LAMMPS.mobi $(BUILDDIR)/LAMMPS.epub $(BUILDDIR)/Manual.pdf
clean: clean-spelling
rm -rf $(BUILDDIR)/html $(BUILDDIR)/epub $(BUILDDIR)/latex $(BUILDDIR)/doctrees $(BUILDDIR)/doxygen/xml $(BUILDDIR)/doxygen-warn.log $(BUILDDIR)/doxygen/Doxyfile $(SPHINXCONFIG)/conf.py
rm -rf $(BUILDDIR)/html $(BUILDDIR)/epub $(BUILDDIR)/latex $(BUILDDIR)/doctrees $(BUILDDIR)/doxygen/xml $(BUILDDIR)/doxygen-warn.log $(BUILDDIR)/doxygen/Doxyfile $(SPHINXCONFIG)/conf.py $(BUILDDIR)/fasthtml
clean-spelling:
rm -rf $(BUILDDIR)/spelling
@ -118,6 +108,23 @@ 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)
@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
@(\
. $(VENV)/bin/activate ; env PYTHONWARNINGS= \
sphinx-build -j 4 -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/fasthtml/doctrees $(RSTDIR) fasthtml ;\
deactivate ;\
)
@rm -rf fasthtml/_sources
@rm -rf fasthtml/PDF
@rm -rf fasthtml/USER
@rm -rf fasthtml/JPG
@cp -r src/PDF fasthtml/PDF
@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
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
@(\
@ -220,22 +227,21 @@ $(VENV):
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
@if [ "$(HAS_PYTHON3)" == "NO" ] ; then echo "python3 was not found! Please see README for further instructions" 1>&2; exit 1; fi
@if [ "$(HAS_DOXYGEN)" == "NO" ] ; then echo "doxygen was not found! Please see README for further instructions" 1>&2; exit 1; fi
@if [ "$(HAS_VIRTUALENV)" == "NO" ] ; then echo "virtualenv was not found! Please see README for further instructions" 1>&2; exit 1; fi
@( \
$(VIRTUALENV) -p $(PYTHON) $(VENV); \
$(PYTHON) -m venv $(VENV); \
. $(VENV)/bin/activate; \
pip $(PIP_OPTIONS) install --upgrade pip; \
pip $(PIP_OPTIONS) install --upgrade wheel; \
pip $(PIP_OPTIONS) install -r $(BUILDDIR)/utils/requirements.txt; \
deactivate;\
)
$(MATHJAX):
@git clone -b 3.2.0 -c advice.detachedHead=0 --depth 1 https://github.com/mathjax/MathJax.git $@
@git clone -b $(MATHJAXTAG) -c advice.detachedHead=0 --depth 1 https://github.com/mathjax/MathJax.git $@
$(ANCHORCHECK): $(VENV)
@( \
. $(VENV)/bin/activate; \
(cd utils/converters;\
python setup.py develop);\
pip $(PIP_OPTIONS) install -e utils/converters;\
deactivate;\
)

View File

@ -2,7 +2,7 @@
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "LAMMPS Programmer's Guide"
PROJECT_NUMBER = "24 August 2020"
PROJECT_NUMBER = "4 May 2022"
PROJECT_BRIEF = "Documentation of the LAMMPS library interface and Python wrapper"
PROJECT_LOGO = lammps-logo.png
CREATE_SUBDIRS = NO
@ -437,6 +437,8 @@ INPUT = @LAMMPS_SOURCE_DIR@/utils.cpp \
@LAMMPS_SOURCE_DIR@/math_eigen.h \
@LAMMPS_SOURCE_DIR@/platform.h \
@LAMMPS_SOURCE_DIR@/platform.cpp \
@LAMMPS_SOURCE_DIR@/math_special.h \
@LAMMPS_SOURCE_DIR@/math_special.cpp \
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded

View File

@ -1,7 +1,7 @@
.TH LAMMPS "1" "24 March 2022" "2022-3-24"
.TH LAMMPS "1" "3 August 2022" "2022-8-3"
.SH NAME
.B LAMMPS
\- Molecular Dynamics Simulator. Version 24 March 2022
\- Molecular Dynamics Simulator. Version 3 August 2022
.SH SYNOPSIS
.B lmp
@ -161,7 +161,7 @@ list references for specific cite-able features used during a
run.
.TP
\fB\-pk <style> [options]\fR or \fB\-package <style> [options]\fR
Invoke the \fBpackage\R command with <style> and optional arguments.
Invoke the \fBpackage\fR command with <style> and optional arguments.
The syntax is the same as if the command appeared in an input script.
For example "-pk gpu 2" is the same as "package gpu 2" in the input
script. The possible styles and options are discussed in the

View File

@ -98,7 +98,7 @@ msi2lmp decane -c 0 -f oplsaa
.SH COPYRIGHT
© 2003--2021 Sandia Corporation
© 2003--2022 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

@ -486,14 +486,14 @@ The following options are available.
make fix-whitespace # correct whitespace issues in files
make check-homepage # search for files with old LAMMPS homepage URLs
make fix-homepage # correct LAMMPS homepage URLs in files
make check-errordocs # search for deprecated error docs in header files
make fix-errordocs # remove error docs in header files
make check-permissions # search for files with permissions issues
make fix-permissions # correct permissions issues in files
make check # run all check targets from above
These should help to replace all TAB characters with blanks and remove
any trailing whitespace. Also all LAMMPS homepage URL references can be
updated to the location change from Sandia to the lammps.org domain.
And the permission check can remove executable permissions from non-executable
files (like source code).
These should help to make source and documentation files conforming
to some the coding style preferences of the LAMMPS developers.
Clang-format support
--------------------

View File

@ -45,7 +45,6 @@ This is the list of packages that may require additional steps.
* :ref:`MACHDYN <machdyn>`
* :ref:`MDI <mdi>`
* :ref:`MESONT <mesont>`
* :ref:`MESSAGE <message>`
* :ref:`ML-HDNNP <ml-hdnnp>`
* :ref:`ML-IAP <mliap>`
* :ref:`ML-PACE <ml-pace>`
@ -124,6 +123,7 @@ CMake build
-D GPU_API=value # value = opencl (default) or cuda or hip
-D GPU_PREC=value # precision setting
# value = double or mixed (default) or single
-D HIP_PATH # path to HIP installation. Must be set if GPU_API=HIP
-D GPU_ARCH=value # primary GPU hardware choice for GPU_API=cuda
# value = sm_XX, see below
# default is sm_50
@ -142,8 +142,6 @@ CMake build
:code:`GPU_ARCH` settings for different GPU hardware is as follows:
* sm_12 or sm_13 for GT200 (supported by CUDA 3.2 until CUDA 6.5)
* sm_20 or sm_21 for Fermi (supported by CUDA 3.2 until CUDA 7.5)
* sm_30 for Kepler (supported since CUDA 5 and until CUDA 10.x)
* sm_35 or sm_37 for Kepler (supported since CUDA 5 and until CUDA 11.x)
* sm_50 or sm_52 for Maxwell (supported since CUDA 6)
@ -161,6 +159,12 @@ Thus the GPU_ARCH setting is merely an optimization, to have code for
the preferred GPU architecture directly included rather than having to wait
for the JIT compiler of the CUDA driver to translate it.
When compiling for CUDA or HIP with CUDA, version 8.0 or later of the CUDA toolkit
is required and a GPU architecture of Kepler or later, which must *also* be
supported by the CUDA toolkit in use **and** the CUDA driver in use.
When compiling for OpenCL, OpenCL version 1.2 or later is required and the
GPU must be supported by the GPU driver and OpenCL runtime bundled with the driver.
When building with CMake, you **must NOT** build the GPU library in ``lib/gpu``
using the traditional build procedure. CMake will detect files generated by that
process and will terminate with an error and a suggestion for how to remove them.
@ -176,10 +180,17 @@ set appropriate environment variables. Some variables such as
:code:`HCC_AMDGPU_TARGET` (for ROCm <= 4.0) or :code:`CUDA_PATH` are necessary for :code:`hipcc`
and the linker to work correctly.
Using CHIP-SPV implementation of HIP is now supported. It allows one to run HIP
code on Intel GPUs via the OpenCL or Level Zero backends. To use CHIP-SPV, you must
set :code:`-DHIP_USE_DEVICE_SORT=OFF` in your CMake command line as CHIP-SPV does not
yet support hipCUB. The use of HIP for Intel GPUs is still experimental so you
should only use this option in preparations to run on Aurora system at ANL.
.. code:: bash
# AMDGPU target (ROCm <= 4.0)
export HIP_PLATFORM=hcc
export HIP_PATH=/path/to/HIP/install
export HCC_AMDGPU_TARGET=gfx906
cmake -D PKG_GPU=on -D GPU_API=HIP -D HIP_ARCH=gfx906 -D CMAKE_CXX_COMPILER=hipcc ..
make -j 4
@ -188,6 +199,7 @@ and the linker to work correctly.
# AMDGPU target (ROCm >= 4.1)
export HIP_PLATFORM=amd
export HIP_PATH=/path/to/HIP/install
cmake -D PKG_GPU=on -D GPU_API=HIP -D HIP_ARCH=gfx906 -D CMAKE_CXX_COMPILER=hipcc ..
make -j 4
@ -196,10 +208,20 @@ and the linker to work correctly.
# CUDA target (not recommended, use GPU_ARCH=cuda)
# !!! DO NOT set CMAKE_CXX_COMPILER !!!
export HIP_PLATFORM=nvcc
export HIP_PATH=/path/to/HIP/install
export CUDA_PATH=/usr/local/cuda
cmake -D PKG_GPU=on -D GPU_API=HIP -D HIP_ARCH=sm_70 ..
make -j 4
.. code:: bash
# SPIR-V target (Intel GPUs)
export HIP_PLATFORM=spirv
export HIP_PATH=/path/to/HIP/install
export CMAKE_CXX_COMPILER=<hipcc/clang++>
cmake -D PKG_GPU=on -D GPU_API=HIP ..
make -j 4
Traditional make
^^^^^^^^^^^^^^^^
@ -638,13 +660,27 @@ This list was last updated for version 3.5.0 of the Kokkos library.
-D CMAKE_CXX_COMPILER=${HOME}/lammps/lib/kokkos/bin/nvcc_wrapper
To simplify compilation, three preset files are included in the
For AMD or NVIDIA GPUs using HIP, 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_HIP=yes
-D Kokkos_ENABLE_OPENMP=yes
This will enable FFTs on the GPU, either by the internal KISSFFT library
or with the hipFFT wrapper library, which will call out to the
platform-appropriate vendor library: rocFFT on AMD GPUs or cuFFT on
NVIDIA GPUs.
To simplify compilation, five preset files are included in the
``cmake/presets`` folder, ``kokkos-serial.cmake``,
``kokkos-openmp.cmake``, and ``kokkos-cuda.cmake``. They will
enable the KOKKOS package and enable some hardware choice. So to
compile with OpenMP host parallelization, CUDA device
parallelization (for GPUs with CC 5.0 and up) with some common
packages enabled, you can do the following:
``kokkos-openmp.cmake``, ``kokkos-cuda.cmake``,
``kokkos-hip.cmake``, and ``kokkos-sycl.cmake``. They will enable
the KOKKOS package and enable some hardware choice. So to compile
with CUDA device parallelization (for GPUs with CC 5.0 and up)
with some common packages enabled, you can do the following:
.. code-block:: bash
@ -703,6 +739,15 @@ This list was last updated for version 3.5.0 of the Kokkos library.
KOKKOS_ABSOLUTE_PATH = $(shell cd $(KOKKOS_PATH); pwd)
CC = mpicxx -cxx=$(KOKKOS_ABSOLUTE_PATH)/config/nvcc_wrapper
For AMD or NVIDIA GPUs using HIP:
.. code-block:: make
KOKKOS_DEVICES = HIP
KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is hosting the GPU
# GPUARCH = GPU from list above
FFT_INC = -DFFT_HIPFFT # enable use of hipFFT (optional)
FFT_LIB = -lhipfft # link to hipFFT library
Advanced KOKKOS compilation settings
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -762,8 +807,10 @@ library.
.. code-block:: bash
-D DOWNLOAD_LATTE=value # download LATTE for build, value = no (default) or yes
-D LATTE_LIBRARY=path # LATTE library file (only needed if a custom location)
-D DOWNLOAD_LATTE=value # download LATTE for build, value = no (default) or yes
-D LATTE_LIBRARY=path # LATTE library file (only needed if a custom location)
-D USE_INTERNAL_LINALG=value # Use the internal linear algebra library instead of LAPACK
# value = no (default) or yes
If ``DOWNLOAD_LATTE`` is set, the LATTE library will be downloaded
and built inside the CMake build directory. If the LATTE library
@ -771,6 +818,13 @@ library.
``LATTE_LIBRARY`` is the filename (plus path) of the LATTE library
file, not the directory the library file is in.
The LATTE library requires LAPACK (and BLAS) and CMake can identify
their locations and pass that info to the LATTE build script. But
on some systems this triggers a (current) limitation of CMake and
the configuration will fail. Try enabling ``USE_INTERNAL_LINALG`` in
those cases to use the bundled linear algebra library and work around
the limitation.
.. tab:: Traditional make
You can download and build the LATTE library manually if you
@ -796,47 +850,6 @@ library.
----------
.. _message:
MESSAGE package
-----------------------------
This package can optionally include support for messaging via sockets,
using the open-source `ZeroMQ library <http://zeromq.org>`_, which must
be installed on your system.
.. tabs::
.. tab:: CMake build
.. code-block:: bash
-D MESSAGE_ZMQ=value # build with ZeroMQ support, value = no (default) or yes
-D ZMQ_LIBRARY=path # ZMQ library file (only needed if a custom location)
-D ZMQ_INCLUDE_DIR=path # ZMQ include directory (only needed if a custom location)
.. tab:: Traditional make
Before building LAMMPS, you must build the CSlib library in
``lib/message``\ . You can build the CSlib library manually if
you prefer; follow the instructions in ``lib/message/README``\ .
You can also do it in one step from the ``lammps/src`` dir, using
a command like these, which simply invoke the
``lib/message/Install.py`` script with the specified args:
.. code-block:: bash
$ make lib-message # print help message
$ make lib-message args="-m -z" # build with MPI and socket (ZMQ) support
$ make lib-message args="-s" # build as serial lib with no ZMQ support
The build should produce two files: ``lib/message/cslib/src/libmessage.a``
and ``lib/message/Makefile.lammps``. The latter is copied from an
existing ``Makefile.lammps.*`` and has settings to link with the ZeroMQ
library if requested in the build.
----------
.. _mliap:
ML-IAP package
@ -1289,6 +1302,41 @@ be built for the most part with all major versions of the C++ language.
----------
.. _electrode:
ELECTRODE package
-----------------
This package depends on the KSPACE package.
.. tabs::
.. tab:: CMake build
No additional settings are needed besides ``-D PKG_KSPACE=yes`` and ``-D
PKG_ELECTRODE=yes``.
.. tab:: Traditional make
The package is activated with ``make yes-KSPACE`` and ``make
yes-ELECTRODE``
Note that the ``Makefile.lammps`` file has settings for the BLAS and
LAPACK linear algebra libraries. As explained in ``lib/awpmd/README``
these can either exist on your system, or you can use the files provided
in ``lib/linalg``. In the latter case you also need to build the library
in ``lib/linalg`` with a command like these:
.. code-block:: bash
$ make lib-linalg # print help message
$ make lib-linalg args="-m serial" # build with GNU Fortran compiler (settings as with "make serial")
$ make lib-linalg args="-m mpi" # build with default MPI Fortran compiler (settings as with "make mpi")
$ make lib-linalg args="-m gfortran" # build with GNU Fortran compiler
----------
.. _ml-pace:
ML-PACE package
@ -1893,14 +1941,25 @@ within CMake will download the non-commercial use version.
.. code-block:: bash
-D DOWNLOAD_QUIP=value # download OpenKIM API v2 for build, value = no (default) or yes
-D QUIP_LIBRARY=path # path to libquip.a (only needed if a custom location)
-D DOWNLOAD_QUIP=value # download QUIP library for build, value = no (default) or yes
-D QUIP_LIBRARY=path # path to libquip.a (only needed if a custom location)
-D USE_INTERNAL_LINALG=value # Use the internal linear algebra library instead of LAPACK
# value = no (default) or yes
CMake will try to download and build the QUIP library from GitHub, if it is not
found on the local machine. This requires to have git installed. It will use the same compilers
and flags as used for compiling LAMMPS. Currently this is only supported for the GNU and the
Intel compilers. Set the ``QUIP_LIBRARY`` variable if you want to use a previously compiled
and installed QUIP library and CMake cannot find it.
CMake will try to download and build the QUIP library from GitHub,
if it is not found on the local machine. This requires to have git
installed. It will use the same compilers and flags as used for
compiling LAMMPS. Currently this is only supported for the GNU
and the Intel compilers. Set the ``QUIP_LIBRARY`` variable if you
want to use a previously compiled and installed QUIP library and
CMake cannot find it.
The QUIP library requires LAPACK (and BLAS) and CMake can identify
their locations and pass that info to the QUIP build script. But
on some systems this triggers a (current) limitation of CMake and
the configuration will fail. Try enabling ``USE_INTERNAL_LINALG`` in
those cases to use the bundled linear algebra library and work around
the limitation.
.. tab:: Traditional make

View File

@ -48,18 +48,15 @@ Build using GNU make
The LAMMPS manual is written in `reStructuredText <rst_>`_ format which
can be translated to different output format using the `Sphinx
<sphinx_>`_ document generator tool. It also incorporates programmer
documentation extracted from the LAMMPS C++ sources through the `Doxygen
<https://doxygen.nl>`_ program. Currently the translation to HTML, PDF
(via LaTeX), ePUB (for many e-book readers) and MOBI (for Amazon Kindle
readers) are supported. For that to work a Python 3 interpreter, the
``doxygen`` tools and internet access to download additional files and
tools are required. This download is usually only required once or
after the documentation folder is returned to a pristine state with
``make clean-all``.
.. _rst: https://docutils.readthedocs.io/en/sphinx-docs/user/rst/quickstart.html
.. _sphinx: https://www.sphinx-doc.org
<https://sphinx-doc.org>`_ document generator tool. It also
incorporates programmer documentation extracted from the LAMMPS C++
sources through the `Doxygen <https://doxygen.nl>`_ program. Currently
the translation to HTML, PDF (via LaTeX), ePUB (for many e-book readers)
and MOBI (for Amazon Kindle readers) are supported. For that to work a
Python 3 interpreter, the ``doxygen`` tools and internet access to
download additional files and tools are required. This download is
usually only required once or after the documentation folder is returned
to a pristine state with ``make clean-all``.
For the documentation build a python virtual environment is set up in
the folder ``doc/docenv`` and various python packages are installed into
@ -78,11 +75,12 @@ folder. The following ``make`` commands are available:
make html # generate HTML in html dir using Sphinx
make pdf # generate PDF as Manual.pdf using Sphinx and PDFLaTeX
make fetch # fetch HTML pages and PDF files from LAMMPS website
# and unpack into the html_www folder and Manual_www.pdf
make epub # generate LAMMPS.epub in ePUB format using Sphinx
make mobi # generate LAMMPS.mobi in MOBI format using ebook-convert
make fasthtml # generate approximate HTML in fasthtml dir using Sphinx
# some Sphinx extensions do not work correctly with this
make clean # remove intermediate RST files created by HTML build
make clean-all # remove entire build folder and any cached data
@ -193,8 +191,13 @@ folder need to be updated or new files added. These files are written in
`reStructuredText <rst_>`_ markup for translation with the Sphinx tool.
Before contributing any documentation, please check that both the HTML
and the PDF format documentation can translate without errors. Please also
check the output to the console for any warnings or problems. There will
and the PDF format documentation can translate without errors. During
testing the html translation, you may use the ``make fasthtml`` command
which does an approximate translation (i.e. not all Sphinx features and
extensions will work), but runs very fast because it will only translate
files that have been changed since the last ``make fasthtml`` command.
Please also check the output to the console for any warnings or problems. There will
be multiple tests run automatically:
- A test for correctness of all anchor labels and their references
@ -246,6 +249,5 @@ manual with ``make spelling``. This requires `a library called enchant
positives* (e.g. keywords, names, abbreviations) those can be added to
the file ``lammps/doc/utils/sphinx-config/false_positives.txt``.
.. _rst: https://docutils.readthedocs.io/en/sphinx-docs/user/rst/quickstart.html
.. _lws: https://www.lammps.org
.. _rst: https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html

View File

@ -45,7 +45,6 @@ packages:
* :ref:`KOKKOS <kokkos>`
* :ref:`LATTE <latte>`
* :ref:`MACHDYN <machdyn>`
* :ref:`MESSAGE <message>`
* :ref:`ML-HDNNP <ml-hdnnp>`
* :ref:`ML-PACE <ml-pace>`
* :ref:`ML-QUIP <ml-quip>`
@ -151,7 +150,7 @@ other files dependent on that package are also excluded.
.. _cmake_presets:
CMake presets for installing many packages
""""""""""""""""""""""""""""""""""""""""""
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Instead of specifying all the CMake options via the command-line,
CMake allows initializing its settings cache using script files.
@ -179,6 +178,11 @@ one of them as a starting point and customize it to your needs.
cmake -C ../cmake/presets/all_off.cmake [OPTIONS] ../cmake # disable all packages
mingw64-cmake -C ../cmake/presets/mingw-cross.cmake [OPTIONS] ../cmake # compile with MinGW cross compilers
Presets that have names starting with "windows" are specifically for
compiling LAMMPS :doc:`natively on Windows <Build_windows>` and
presets that have names starting with "kokkos" are specifically for
selecting configurations for compiling LAMMPS with :ref:`KOKKOS <kokkos>`.
.. note::
Running cmake this way manipulates the CMake settings cache in your
@ -221,7 +225,8 @@ These commands install/un-install sets of packages:
.. code-block:: bash
make yes-all # install all packages
make no-all # uninstall all packages
make no-all # check for changes and uninstall all packages
make no-installed # only check and uninstall installed packages
make yes-basic # install a few commonly used packages'
make no-basic # remove a few commonly used packages'
make yes-most # install most packages w/o libs'

View File

@ -287,8 +287,8 @@ Output of JPG, PNG, and movie files
The :doc:`dump image <dump_image>` command has options to output JPEG or
PNG image files. Likewise the :doc:`dump movie <dump_image>` command
outputs movie files in MPEG format. Using these options requires the
following settings:
outputs movie files in a variety of movie formats. Using these options
requires the following settings:
.. tabs::
@ -328,11 +328,12 @@ following settings:
JPG_LIB = -ljpeg -lpng -lz # library names
As with CMake, you do not need to set ``JPG_INC`` or ``JPG_PATH``,
if make can find the graphics header and library files. You must
specify ``JPG_LIB`` with a list of graphics libraries to include
in the link. You must insure ffmpeg is in a directory where
LAMMPS can find it at runtime, that is a directory in your PATH
environment variable.
if make can find the graphics header and library files in their
default system locations. You must specify ``JPG_LIB`` with a
list of graphics libraries to include in the link. You must make
certain that the ffmpeg executable (or ffmpeg.exe on Windows) is
in a directory where LAMMPS can find it at runtime; that is
usually a directory list in your ``PATH`` environment variable.
Using ``ffmpeg`` to output movie files requires that your machine
supports the "popen" function in the standard runtime library.

View File

@ -5,6 +5,7 @@ Notes for building LAMMPS on Windows
* :ref:`Running Linux on Windows <linux>`
* :ref:`Using GNU GCC ported to Windows <gnu>`
* :ref:`Using Visual Studio <msvc>`
* :ref:`Using Intel oneAPI compilers and libraries <oneapi>`
* :ref:`Using a cross-compiler <cross>`
----------
@ -25,8 +26,10 @@ assistance in resolving portability issues. This is particularly true
for compiling LAMMPS on Windows, since this platform has significant
differences in some low-level functionality. As of LAMMPS version 14
December 2021, large parts of LAMMPS can be compiled natively with the
Microsoft Visual C++ Compilers. This is largely facilitated by using
the :doc:`Developer_platform` in the ``platform`` namespace.
Microsoft Visual C++ Compilers. As of LAMMPS version 31 May 2022, also
the Intel oneAPI compilers can compile large parts of LAMMPS natively on
Windows. This is mostly facilitated by using the
:doc:`Developer_platform` in the ``platform`` namespace and CMake.
Before trying to build LAMMPS on Windows yourself, please consider the
`pre-compiled Windows installer packages <https://packages.lammps.org/windows.html>`_
@ -73,8 +76,9 @@ configuration should set this up automatically, but is untested.
In case of problems, you are recommended to contact somebody with
experience in using Cygwin. If you do come across portability problems
requiring changes to the LAMMPS source code, or figure out corrections
yourself, please report them on the lammps-users mailing list, or file
them as an issue or pull request on the LAMMPS GitHub project.
yourself, please report them on the
`LAMMPS forum at MatSci <https://matsci.org/c/lammps/lammps-development/>`_,
or file them as an issue or pull request on the LAMMPS GitHub project.
.. _msvc:
@ -98,6 +102,10 @@ It is possible to use both the integrated CMake support of the Visual
Studio IDE or use an external CMake installation (e.g. downloaded from
cmake.org) to create build files and compile LAMMPS from the command line.
Compilation via command line and unit tests are checked automatically
for the LAMMPS development branch through
`GitHub Actions <https://github.com/lammps/lammps/actions/workflows/compile-msvc.yml>`_.
.. note::
Versions of Visual Studio before version 17.1 may scan the entire
@ -110,6 +118,10 @@ Please note, that for either approach CMake will create a so-called
the command lines for building and testing LAMMPS must be adjusted
accordingly.
The LAMMPS cmake folder contains a ``CMakeSettings.json`` file with
build configurations for MSVC compilers and the MS provided Clang
compiler package in Debug and Release mode.
To support running in parallel you can compile with OpenMP enabled using
the OPENMP package or install Microsoft MPI (including the SDK) and compile
LAMMPS with MPI enabled.
@ -117,8 +129,55 @@ LAMMPS with MPI enabled.
.. note::
This is work in progress and you should contact the LAMMPS developers
via GitHub, the forum, or the mailing list, if you have questions or
LAMMPS specific problems.
via GitHub or the `LAMMPS forum at MatSci <https://matsci.org/c/lammps/lammps-development/>`_,
if you have questions or LAMMPS specific problems.
.. _oneapi:
Using Intel oneAPI Compilers and Libraries
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionadded:: 31May2022
After installing the `Intel oneAPI
<https://www.intel.com/content/www/us/en/developer/tools/oneapi/toolkits.html>`_
base toolkit and the HPC toolkit, it is also possible to compile large
parts of LAMMPS natively on Windows using Intel compilers. The HPC
toolkit provides two sets of C/C++ and Fortran compilers: the so-called
"classic" compilers (``icl.exe`` and ``ifort.exe``) and newer, LLVM
based compilers (``icx.exe`` and ``ifx.exe``). In addition to the
compilers and their dependent modules, also the thread building blocks
(TBB) and the math kernel library (MKL) need to be installed. Two
presets (``cmake/presets/windows-intel-llvm.cmake`` and
``cmake/presets/windows-intel-classic.cmake``) are provided for
selecting the LLVM based or classic compilers, respectively. The preset
``cmake/presets/windows.cmake`` enables compatible packages that are not
dependent on additional features or libraries. You **must** use the
CMake based build procedure and use Ninja as build tool. For compiling
from the command prompt, thus both `CMake <https://cmake.org>`_ and
`Ninja-build <https://ninja-build.org>`_ binaries must be installed. It
is also possible to use Visual Studio, if it is started (``devenv.exe``)
from a command prompt that has the Intel oneAPI compilers enabled. The
Visual Studio settings file in the ``cmake`` folder contains
configurations for both compiler variants in debug and release settings.
Those will use the CMake and Ninja binaries bundled with Visual Studio,
thus a separate installation is not required.
.. admonition:: Known Limitations
:class: note
In addition to portability issues with several packages and external
libraries, the classic Intel compilers are currently not able to
compile the googletest libraries and thus enabling the ``-DENABLE_TESTING``
option will result in compilation failure. The LLVM based compilers
are compatible.
.. note::
This is work in progress and you should contact the LAMMPS developers
via GitHub or the `LAMMPS forum at MatSci <https://matsci.org/c/lammps/lammps-development/>`_,
if you have questions or LAMMPS specific problems.
.. _cross:
@ -144,14 +203,3 @@ LAMMPS developers. We instead rely on the feedback of the users
of these pre-compiled LAMMPS packages for Windows. We will try to resolve
issues to the best of our abilities if we become aware of them. However
this is subject to time constraints and focus on HPC platforms.
.. _native:
Native Visual C++ support
^^^^^^^^^^^^^^^^^^^^^^^^^
Support for the Visual C++ compilers is currently not available. The
CMake build system is capable of creating suitable a Visual Studio
style build environment, but the LAMMPS source code itself is not
ported to fully support Visual C++. Volunteers to take on this task
are welcome.

View File

@ -21,6 +21,7 @@ commands in it are used to define a LAMMPS simulation.
Commands_pair
Commands_bond
Commands_kspace
Commands_dump
.. toctree::
:maxdepth: 1

View File

@ -10,11 +10,12 @@
* :ref:`Dihedral styles <dihedral>`
* :ref:`Improper styles <improper>`
* :doc:`KSpace styles <Commands_kspace>`
* :doc:`Dump styles <Commands_dump>`
General commands
================
An alphabetic list of all general LAMMPS commands.
An alphabetic list of general LAMMPS commands.
.. table_from_list::
:columns: 5
@ -47,36 +48,26 @@ An alphabetic list of all general LAMMPS commands.
* :doc:`displace_atoms <displace_atoms>`
* :doc:`dump <dump>`
* :doc:`dump_modify <dump_modify>`
* :doc:`dynamical_matrix (k) <dynamical_matrix>`
* :doc:`echo <echo>`
* :doc:`fix <fix>`
* :doc:`fix_modify <fix_modify>`
* :doc:`group <group>`
* :doc:`group2ndx <group2ndx>`
* :doc:`hyper <hyper>`
* :doc:`if <if>`
* :doc:`improper_coeff <improper_coeff>`
* :doc:`improper_style <improper_style>`
* :doc:`include <include>`
* :doc:`info <info>`
* :doc:`jump <jump>`
* :doc:`kim <kim_commands>`
* :doc:`kspace_modify <kspace_modify>`
* :doc:`kspace_style <kspace_style>`
* :doc:`label <label>`
* :doc:`lattice <lattice>`
* :doc:`log <log>`
* :doc:`mass <mass>`
* :doc:`mdi/engine <mdi_engine>`
* :doc:`message <message>`
* :doc:`minimize <minimize>`
* :doc:`min_modify <min_modify>`
* :doc:`min_style <min_style>`
* :doc:`min_style spin <min_spin>`
* :doc:`molecule <molecule>`
* :doc:`ndx2group <group2ndx>`
* :doc:`neb <neb>`
* :doc:`neb/spin <neb_spin>`
* :doc:`neigh_modify <neigh_modify>`
* :doc:`neighbor <neighbor>`
* :doc:`newton <newton>`
@ -87,11 +78,8 @@ An alphabetic list of all general LAMMPS commands.
* :doc:`pair_style <pair_style>`
* :doc:`pair_write <pair_write>`
* :doc:`partition <partition>`
* :doc:`plugin <plugin>`
* :doc:`prd <prd>`
* :doc:`print <print>`
* :doc:`processors <processors>`
* :doc:`python <python>`
* :doc:`quit <quit>`
* :doc:`read_data <read_data>`
* :doc:`read_dump <read_dump>`
@ -105,19 +93,13 @@ An alphabetic list of all general LAMMPS commands.
* :doc:`restart <restart>`
* :doc:`run <run>`
* :doc:`run_style <run_style>`
* :doc:`server <server>`
* :doc:`set <set>`
* :doc:`shell <shell>`
* :doc:`special_bonds <special_bonds>`
* :doc:`suffix <suffix>`
* :doc:`tad <tad>`
* :doc:`temper <temper>`
* :doc:`temper/grem <temper_grem>`
* :doc:`temper/npt <temper_npt>`
* :doc:`thermo <thermo>`
* :doc:`thermo_modify <thermo_modify>`
* :doc:`thermo_style <thermo_style>`
* :doc:`third_order (k) <third_order>`
* :doc:`timer <timer>`
* :doc:`timestep <timestep>`
* :doc:`uncompute <uncompute>`
@ -130,3 +112,27 @@ An alphabetic list of all general LAMMPS commands.
* :doc:`write_data <write_data>`
* :doc:`write_dump <write_dump>`
* :doc:`write_restart <write_restart>`
Additional general LAMMPS commands provided by packages. A few
commands have accelerated versions. This is indicated by an
additional letter in parenthesis: k = KOKKOS.
.. table_from_list::
:columns: 5
* :doc:`dynamical_matrix (k) <dynamical_matrix>`
* :doc:`group2ndx <group2ndx>`
* :doc:`hyper <hyper>`
* :doc:`kim <kim_commands>`
* :doc:`mdi <mdi>`
* :doc:`ndx2group <group2ndx>`
* :doc:`neb <neb>`
* :doc:`neb/spin <neb_spin>`
* :doc:`plugin <plugin>`
* :doc:`prd <prd>`
* :doc:`python <python>`
* :doc:`tad <tad>`
* :doc:`temper <temper>`
* :doc:`temper/grem <temper_grem>`
* :doc:`temper/npt <temper_npt>`
* :doc:`third_order (k) <third_order>`

View File

@ -10,6 +10,7 @@
* :ref:`Dihedral styles <dihedral>`
* :ref:`Improper styles <improper>`
* :doc:`KSpace styles <Commands_kspace>`
* :doc:`Dump styles <Commands_dump>`
.. _bond:
@ -32,6 +33,8 @@ OPT.
*
*
*
* :doc:`bpm/rotational <bond_bpm_rotational>`
* :doc:`bpm/spring <bond_bpm_spring>`
* :doc:`class2 (ko) <bond_class2>`
* :doc:`fene (iko) <bond_fene>`
* :doc:`fene/expand (o) <bond_fene_expand>`
@ -72,6 +75,7 @@ OPT.
*
*
*
* :doc:`amoeba <angle_amoeba>`
* :doc:`charmm (iko) <angle_charmm>`
* :doc:`class2 (ko) <angle_class2>`
* :doc:`class2/p6 <angle_class2>`
@ -86,11 +90,11 @@ OPT.
* :doc:`dipole (o) <angle_dipole>`
* :doc:`fourier (o) <angle_fourier>`
* :doc:`fourier/simple (o) <angle_fourier_simple>`
* :doc:`gaussian <angle_gaussian>` - multicentered Gaussian-based angle potential
* :doc:`gaussian <angle_gaussian>`
* :doc:`harmonic (iko) <angle_harmonic>`
* :doc:`mm3 <angle_mm3>`
* :doc:`quartic (o) <angle_quartic>`
* :doc:`sdk (o) <angle_sdk>`
* :doc:`spica (o) <angle_spica>`
* :doc:`table (o) <angle_table>`
.. _dihedral:
@ -150,6 +154,7 @@ OPT.
*
*
*
* :doc:`amoeba <improper_amoeba>`
* :doc:`class2 (ko) <improper_class2>`
* :doc:`cossq (o) <improper_cossq>`
* :doc:`cvff (io) <improper_cvff>`

View File

@ -10,6 +10,7 @@
* :ref:`Dihedral styles <dihedral>`
* :ref:`Improper styles <improper>`
* :doc:`KSpace styles <Commands_kspace>`
* :doc:`Dump styles <Commands_dump>`
Compute commands
================
@ -33,6 +34,7 @@ KOKKOS, o = OPENMP, t = OPT.
* :doc:`body/local <compute_body_local>`
* :doc:`bond <compute_bond>`
* :doc:`bond/local <compute_bond_local>`
* :doc:`born/matrix <compute_born_matrix>`
* :doc:`centro/atom <compute_centro_atom>`
* :doc:`centroid/stress/atom <compute_stress_atom>`
* :doc:`chunk/atom <compute_chunk_atom>`
@ -63,6 +65,7 @@ KOKKOS, o = OPENMP, t = OPT.
* :doc:`event/displace <compute_event_displace>`
* :doc:`fabric <compute_fabric>`
* :doc:`fep <compute_fep>`
* :doc:`fep/ta <compute_fep_ta>`
* :doc:`force/tally <compute_tally>`
* :doc:`fragment/atom <compute_cluster_atom>`
* :doc:`global/atom <compute_global_atom>`
@ -90,6 +93,7 @@ KOKKOS, o = OPENMP, t = OPT.
* :doc:`msd <compute_msd>`
* :doc:`msd/chunk <compute_msd_chunk>`
* :doc:`msd/nongauss <compute_msd_nongauss>`
* :doc:`nbond/atom <compute_nbond_atom>`
* :doc:`omega/chunk <compute_omega_chunk>`
* :doc:`orientorder/atom (k) <compute_orientorder_atom>`
* :doc:`pair <compute_pair>`
@ -135,6 +139,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:`snad/atom <compute_sna_atom>`
* :doc:`snav/atom <compute_sna_atom>`
* :doc:`sph/e/atom <compute_sph_e_atom>`

56
doc/src/Commands_dump.rst Normal file
View File

@ -0,0 +1,56 @@
.. table_from_list::
:columns: 3
* :doc:`General commands <Commands_all>`
* :doc:`Fix styles <Commands_fix>`
* :doc:`Compute styles <Commands_compute>`
* :doc:`Pair styles <Commands_pair>`
* :ref:`Bond styles <bond>`
* :ref:`Angle styles <angle>`
* :ref:`Dihedral styles <dihedral>`
* :ref:`Improper styles <improper>`
* :doc:`KSpace styles <Commands_kspace>`
* :doc:`Dump styles <Commands_dump>`
Dump commands
=============
An alphabetic list of all LAMMPS :doc:`dump <dump>` commands.
.. table_from_list::
:columns: 5
* :doc:`atom <dump>`
* :doc:`atom/adios <dump_adios>`
* :doc:`atom/gz <dump>`
* :doc:`atom/mpiio <dump>`
* :doc:`atom/zstd <dump>`
* :doc:`cfg <dump>`
* :doc:`cfg/gz <dump>`
* :doc:`cfg/mpiio <dump>`
* :doc:`cfg/uef <dump_cfg_uef>`
* :doc:`cfg/zstd <dump>`
* :doc:`custom <dump>`
* :doc:`custom/adios <dump_adios>`
* :doc:`custom/gz <dump>`
* :doc:`custom/mpiio <dump>`
* :doc:`custom/zstd <dump>`
* :doc:`dcd <dump>`
* :doc:`deprecated <dump>`
* :doc:`h5md <dump_h5md>`
* :doc:`image <dump_image>`
* :doc:`local <dump>`
* :doc:`local/gz <dump>`
* :doc:`local/zstd <dump>`
* :doc:`molfile <dump_molfile>`
* :doc:`movie <dump_image>`
* :doc:`netcdf <dump_netcdf>`
* :doc:`netcdf/mpiio <dump>`
* :doc:`vtk <dump_vtk>`
* :doc:`xtc <dump>`
* :doc:`xyz <dump>`
* :doc:`xyz/gz <dump>`
* :doc:`xyz/mpiio <dump>`
* :doc:`xyz/zstd <dump>`
* :doc:`yaml <dump>`

View File

@ -10,6 +10,7 @@
* :ref:`Dihedral styles <dihedral>`
* :ref:`Improper styles <improper>`
* :doc:`KSpace styles <Commands_kspace>`
* :doc:`Dump styles <Commands_dump>`
Fix commands
============
@ -28,6 +29,8 @@ OPT.
* :doc:`adapt/fep <fix_adapt_fep>`
* :doc:`addforce <fix_addforce>`
* :doc:`addtorque <fix_addtorque>`
* :doc:`amoeba/bitorsion <fix_amoeba_bitorsion>`
* :doc:`amoeba/pitorsion <fix_amoeba_pitorsion>`
* :doc:`append/atoms <fix_append_atoms>`
* :doc:`atc <fix_atc>`
* :doc:`atom/swap <fix_atom_swap>`
@ -51,7 +54,6 @@ OPT.
* :doc:`bond/swap <fix_bond_swap>`
* :doc:`box/relax <fix_box_relax>`
* :doc:`charge/regulation <fix_charge_regulation>`
* :doc:`client/md <fix_client_md>`
* :doc:`cmap <fix_cmap>`
* :doc:`colvars <fix_colvars>`
* :doc:`controller <fix_controller>`
@ -67,6 +69,9 @@ OPT.
* :doc:`edpd/source <fix_dpd_source>`
* :doc:`efield <fix_efield>`
* :doc:`ehex <fix_ehex>`
* :doc:`electrode/conp (i) <fix_electrode_conp>`
* :doc:`electrode/conq (i) <fix_electrode_conp>`
* :doc:`electrode/thermo (i) <fix_electrode_conp>`
* :doc:`electron/stopping <fix_electron_stopping>`
* :doc:`electron/stopping/fit <fix_electron_stopping>`
* :doc:`enforce2d (k) <fix_enforce2d>`
@ -101,7 +106,7 @@ OPT.
* :doc:`lb/viscous <fix_lb_viscous>`
* :doc:`lineforce <fix_lineforce>`
* :doc:`manifoldforce <fix_manifoldforce>`
* :doc:`mdi/engine <fix_mdi_engine>`
* :doc:`mdi/qm <fix_mdi_qm>`
* :doc:`meso/move <fix_meso_move>`
* :doc:`mol/swap <fix_mol_swap>`
* :doc:`momentum (k) <fix_momentum>`
@ -142,6 +147,7 @@ OPT.
* :doc:`nve/manifold/rattle <fix_nve_manifold_rattle>`
* :doc:`nve/noforce <fix_nve_noforce>`
* :doc:`nve/sphere (ko) <fix_nve_sphere>`
* :doc:`nve/bpm/sphere <fix_nve_bpm_sphere>`
* :doc:`nve/spin <fix_nve_spin>`
* :doc:`nve/tri <fix_nve_tri>`
* :doc:`nvk <fix_nvk>`
@ -159,7 +165,6 @@ OPT.
* :doc:`orient/fcc <fix_orient>`
* :doc:`orient/eco <fix_orient_eco>`
* :doc:`pafi <fix_pafi>`
* :doc:`pair/tracker <fix_pair_tracker>`
* :doc:`phonon <fix_phonon>`
* :doc:`pimd <fix_pimd>`
* :doc:`planeforce <fix_planeforce>`

View File

@ -10,6 +10,7 @@
* :ref:`Dihedral styles <dihedral>`
* :ref:`Improper styles <improper>`
* :doc:`KSpace styles <Commands_kspace>`
* :doc:`Dump styles <Commands_dump>`
KSpace solvers
==============
@ -27,6 +28,7 @@ OPT.
* :doc:`ewald/disp/dipole <kspace_style>`
* :doc:`ewald/dipole <kspace_style>`
* :doc:`ewald/dipole/spin <kspace_style>`
* :doc:`ewald/electrode <kspace_style>`
* :doc:`msm (o) <kspace_style>`
* :doc:`msm/cg (o) <kspace_style>`
* :doc:`msm/dielectric <kspace_style>`
@ -41,4 +43,5 @@ OPT.
* :doc:`pppm/stagger <kspace_style>`
* :doc:`pppm/tip4p (o) <kspace_style>`
* :doc:`pppm/dielectric <kspace_style>`
* :doc:`pppm/electrode (i) <kspace_style>`
* :doc:`scafacos <kspace_style>`

View File

@ -10,6 +10,7 @@
* :ref:`Dihedral styles <dihedral>`
* :ref:`Improper styles <improper>`
* :doc:`KSpace styles <Commands_kspace>`
* :doc:`Dump styles <Commands_dump>`
Pair_style potentials
======================
@ -34,10 +35,11 @@ OPT.
*
*
*
* :doc:`adp (o) <pair_adp>`
* :doc:`adp (ko) <pair_adp>`
* :doc:`agni (o) <pair_agni>`
* :doc:`airebo (io) <pair_airebo>`
* :doc:`airebo/morse (io) <pair_airebo>`
* :doc:`amoeba <pair_amoeba>`
* :doc:`atm <pair_atm>`
* :doc:`awpmd/cut <pair_awpmd>`
* :doc:`beck (go) <pair_beck>`
@ -53,6 +55,7 @@ OPT.
* :doc:`born/coul/msm (o) <pair_born>`
* :doc:`born/coul/wolf (go) <pair_born>`
* :doc:`born/coul/wolf/cs (g) <pair_cs>`
* :doc:`bpm/spring <pair_bpm_spring>`
* :doc:`brownian (o) <pair_brownian>`
* :doc:`brownian/poly (o) <pair_brownian>`
* :doc:`buck (giko) <pair_buck>`
@ -88,12 +91,12 @@ OPT.
* :doc:`coul/tt <pair_coul_tt>`
* :doc:`coul/wolf (ko) <pair_coul>`
* :doc:`coul/wolf/cs <pair_cs>`
* :doc:`dpd (gio) <pair_dpd>`
* :doc:`dpd (giko) <pair_dpd>`
* :doc:`dpd/fdt <pair_dpd_fdt>`
* :doc:`dpd/ext <pair_dpd_ext>`
* :doc:`dpd/ext/tstat <pair_dpd_ext>`
* :doc:`dpd/ext (k) <pair_dpd_ext>`
* :doc:`dpd/ext/tstat (k) <pair_dpd_ext>`
* :doc:`dpd/fdt/energy (k) <pair_dpd_fdt>`
* :doc:`dpd/tstat (go) <pair_dpd>`
* :doc:`dpd/tstat (gko) <pair_dpd>`
* :doc:`dsmc <pair_dsmc>`
* :doc:`e3b <pair_e3b>`
* :doc:`drip <pair_drip>`
@ -123,8 +126,9 @@ OPT.
* :doc:`hbond/dreiding/lj (o) <pair_hbond_dreiding>`
* :doc:`hbond/dreiding/morse (o) <pair_hbond_dreiding>`
* :doc:`hdnnp <pair_hdnnp>`
* :doc:`ilp/graphene/hbn <pair_ilp_graphene_hbn>`
* :doc:`ilp/tmd <pair_ilp_tmd>`
* :doc:`hippo <pair_amoeba>`
* :doc:`ilp/graphene/hbn (t) <pair_ilp_graphene_hbn>`
* :doc:`ilp/tmd (t) <pair_ilp_tmd>`
* :doc:`kolmogorov/crespi/full <pair_kolmogorov_crespi_full>`
* :doc:`kolmogorov/crespi/z <pair_kolmogorov_crespi_z>`
* :doc:`lcbop <pair_lcbop>`
@ -151,7 +155,7 @@ OPT.
* :doc:`lj/cut/coul/cut/dielectric (o) <pair_dielectric>`
* :doc:`lj/cut/coul/cut/soft (o) <pair_fep_soft>`
* :doc:`lj/cut/coul/debye (gko) <pair_lj_cut_coul>`
* :doc:`lj/cut/coul/debye/dielectric <pair_dielectric>`
* :doc:`lj/cut/coul/debye/dielectric (o) <pair_dielectric>`
* :doc:`lj/cut/coul/dsf (gko) <pair_lj_cut_coul>`
* :doc:`lj/cut/coul/long (gikot) <pair_lj_cut_coul>`
* :doc:`lj/cut/coul/long/cs <pair_cs>`
@ -178,9 +182,9 @@ OPT.
* :doc:`lj/long/tip4p/long (o) <pair_lj_long>`
* :doc:`lj/mdf <pair_mdf>`
* :doc:`lj/relres (o) <pair_lj_relres>`
* :doc:`lj/sdk (gko) <pair_sdk>`
* :doc:`lj/sdk/coul/long (go) <pair_sdk>`
* :doc:`lj/sdk/coul/msm (o) <pair_sdk>`
* :doc:`lj/spica (gko) <pair_spica>`
* :doc:`lj/spica/coul/long (go) <pair_spica>`
* :doc:`lj/spica/coul/msm (o) <pair_spica>`
* :doc:`lj/sf/dipole/sf (go) <pair_dipole>`
* :doc:`lj/smooth (go) <pair_lj_smooth>`
* :doc:`lj/smooth/linear (o) <pair_lj_smooth_linear>`
@ -193,7 +197,7 @@ OPT.
* :doc:`lubricateU/poly <pair_lubricateU>`
* :doc:`mdpd <pair_mesodpd>`
* :doc:`mdpd/rhosum <pair_mesodpd>`
* :doc:`meam <pair_meam>`
* :doc:`meam (k) <pair_meam>`
* :doc:`meam/spline (o) <pair_meam_spline>`
* :doc:`meam/sw/spline <pair_meam_sw_spline>`
* :doc:`mesocnt <pair_mesocnt>`
@ -230,7 +234,7 @@ OPT.
* :doc:`oxrna2/stk <pair_oxrna2>`
* :doc:`oxrna2/xstk <pair_oxrna2>`
* :doc:`oxrna2/coaxstk <pair_oxrna2>`
* :doc:`pace <pair_pace>`
* :doc:`pace (k) <pair_pace>`
* :doc:`peri/eps <pair_peri>`
* :doc:`peri/lps (o) <pair_peri>`
* :doc:`peri/pmb (o) <pair_peri>`
@ -242,8 +246,10 @@ OPT.
* :doc:`reaxff (ko) <pair_reaxff>`
* :doc:`rebo (io) <pair_airebo>`
* :doc:`resquared (go) <pair_resquared>`
* :doc:`saip/metal <pair_saip_metal>`
* :doc:`saip/metal (t) <pair_saip_metal>`
* :doc:`sdpd/taitwater/isothermal <pair_sdpd_taitwater_isothermal>`
* :doc:`smatb <pair_smatb>`
* :doc:`smatb/single <pair_smatb>`
* :doc:`smd/hertz <pair_smd_hertz>`
* :doc:`smd/tlsph <pair_smd_tlsph>`
* :doc:`smd/tri_surface <pair_smd_triangulated_surface>`
@ -265,7 +271,9 @@ OPT.
* :doc:`spin/magelec <pair_spin_magelec>`
* :doc:`spin/neel <pair_spin_neel>`
* :doc:`srp <pair_srp>`
* :doc:`srp/react <pair_srp>`
* :doc:`sw (giko) <pair_sw>`
* :doc:`sw/angle/table <pair_sw_angle_table>`
* :doc:`sw/mod (o) <pair_sw>`
* :doc:`table (gko) <pair_table>`
* :doc:`table/rx (k) <pair_table_rx>`
@ -276,6 +284,7 @@ OPT.
* :doc:`tersoff/table (o) <pair_tersoff>`
* :doc:`tersoff/zbl (gko) <pair_tersoff_zbl>`
* :doc:`thole <pair_thole>`
* :doc:`threebody/table <pair_threebody_table>`
* :doc:`tip4p/cut (o) <pair_coul>`
* :doc:`tip4p/long (o) <pair_coul>`
* :doc:`tip4p/long/soft (o) <pair_fep_soft>`

View File

@ -77,18 +77,19 @@ LAMMPS:
so that you do not have to define (or discard) a temporary variable,
"X" in this case.
Additionally, the "immediate" variable expression may be followed by
a colon, followed by a C-style format string, e.g. ":%f" or ":%.10g".
The format string must be appropriate for a double-precision
floating-point value. The format string is used to output the result
of the variable expression evaluation. If a format string is not
specified a high-precision "%.20g" is used as the default.
Additionally, the entire "immediate" variable expression may be
followed by a colon, followed by a C-style format string,
e.g. ":%f" or ":%.10g". The format string must be appropriate for
a double-precision floating-point value. The format string is used
to output the result of the variable expression evaluation. If a
format string is not specified, a high-precision "%.20g" is used as
the default format.
This can be useful for formatting print output to a desired precision:
.. code-block:: LAMMPS
print "Final energy per atom: $(pe/atoms:%10.3f) eV/atom"
print "Final energy per atom: $(v_ke_per_atom+v_pe_per_atom:%10.3f) eV/atom"
Note that neither the curly-bracket or immediate form of variables
can contain nested $ characters for other variables to substitute
@ -122,14 +123,15 @@ LAMMPS:
.. _six:
6. If you want text with spaces to be treated as a single argument, it
can be enclosed in either single or double or triple quotes. A long
single argument enclosed in single or double quotes can span multiple
lines if the "&" character is used, as described above. When the
lines are concatenated together (and the "&" characters and line
breaks removed), the text will become a single line. If you want
multiple lines of an argument to retain their line breaks, the text
can be enclosed in triple quotes, in which case "&" characters are
not needed. For example:
can be enclosed in either single (') or double (") or triple (""")
quotes. A long single argument enclosed in single or double quotes
can span multiple lines if the "&" character is used, as described
in :ref:`1 <one>` above. When the lines are concatenated together
by LAMMPS (and the "&" characters and line breaks removed), the
combined text will become a single line. If you want multiple lines
of an argument to retain their line breaks, the text can be enclosed
in triple quotes, in which case "&" characters are not needed and do
not function as line continuation character. For example:
.. code-block:: LAMMPS
@ -143,8 +145,9 @@ LAMMPS:
System temperature = $t
"""
In each case, the single, double, or triple quotes are removed when
the single argument they enclose is stored internally.
In each of these cases, the single, double, or triple quotes are
removed and the enclosed text stored internally as a single
argument.
See the :doc:`dump modify format <dump_modify>`, :doc:`print
<print>`, :doc:`if <if>`, and :doc:`python <python>` commands for

View File

@ -17,6 +17,7 @@ of time and requests from the LAMMPS user community.
Developer_flow
Developer_write
Developer_notes
Developer_updating
Developer_plugins
Developer_unittest
Classes

View File

@ -68,7 +68,7 @@ Members of ``lammpsplugin_t``
* - author
- String with the name and email of the author
* - creator.v1
- Pointer to factory function for pair, bond, angle, dihedral, improper or command styles
- Pointer to factory function for pair, bond, angle, dihedral, improper, kspace, or command styles
* - creator.v2
- Pointer to factory function for compute, fix, or region styles
* - handle
@ -262,3 +262,41 @@ A plugin may be registered under an existing style name. In that case
the plugin will override the existing code. This can be used to modify
the behavior of existing styles or to debug new versions of them without
having to re-compile or re-install all of LAMMPS.
Compiling plugins
^^^^^^^^^^^^^^^^^
Plugins need to be compiled with the same compilers and libraries
(e.g. MPI) and compilation settings (MPI on/off, OpenMP, integer sizes)
as the LAMMPS executable and library. Otherwise the plugin will likely
not load due to mismatches in the function signatures (LAMMPS is C++ so
scope, type, and number of arguments are encoded into the symbol names
and thus differences in them will lead to failed plugin load commands.
Compilation of the plugin can be managed via both, CMake or traditional
GNU makefiles. Some examples that can be used as a template are in the
``examples/plugins`` folder. The CMake script code has some small
adjustments to allow building the plugins for running unit tests with
them.
Another example that converts the KIM package into a plugin can be found
in the ``examples/kim/plugin`` folder. No changes to the sources of the
KIM package themselves are needed; only the plugin interface and loader
code needs to be added. This example only supports building with CMake,
but is probably a more typical example. To compile you need to run CMake
with -DLAMMPS_SOURCE_DIR=<path/to/lammps/src/folder>. Other
configuration setting are identical to those for compiling LAMMPS.
A second example for a plugin from a package is in the
``examples/PACKAGES/pace/plugin`` folder that will create a plugin from
the ML-PACE package. In this case the bulk of the code is in a static
external library that is being downloaded and compiled first and then
combined with the pair style wrapper and the plugin loader. This
example also contains a NSIS script that can be used to create an
Installer package for Windows (the mutual licensing terms of the
external library and LAMMPS conflict when distributing binaries, so the
ML-PACE package cannot be linked statically, but the LAMMPS headers
required to build the plugin are also available under a less restrictive
license). This will automatically set the required environment variable
and launching a (compatible) LAMMPS binary will load and register the
plugin and the ML-PACE package can then be used as it was linked into
LAMMPS.

View File

@ -0,0 +1,324 @@
Notes for updating code written for older LAMMPS versions
---------------------------------------------------------
This section documents how C++ source files that are available *outside
of the LAMMPS source distribution* (e.g. in external USER packages or as
source files provided as a supplement to a publication) that are written
for an older version of LAMMPS and thus need to be updated to be
compatible with the current version of LAMMPS. Due to the active
development of LAMMPS it is likely to always be incomplete. Please
contact developer@lammps.org in case you run across an issue that is not
(yet) listed here. Please also review the latest information about the
LAMMPS :doc:`programming style conventions <Modify_style>`, especially
if you are considering to submit the updated version for inclusion into
the LAMMPS distribution.
Available topics in mostly chronological order are:
- `Setting flags in the constructor`_
- `Rename of pack/unpack_comm() to pack/unpack_forward_comm()`_
- `Use ev_init() to initialize variables derived from eflag and vflag`_
- `Use utils::numeric() functions instead of force->numeric()`_
- `Use utils::open_potential() function to open potential files`_
- `Simplify customized error messages`_
- `Use of "override" instead of "virtual"`_
- `Simplified and more compact neighbor list requests`_
----
Setting flags in the constructor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
As LAMMPS gains additional functionality, new flags may need to be set
in the constructor or a class to signal compatibility with such features.
Most of the time the defaults are chosen conservatively, but sometimes
the conservative choice is the uncommon choice, and then those settings
need to be made when updating code.
Pair styles:
- ``manybody_flag``: set to 1 if your pair style is not pair-wise additive
- ``restartinfo``: set to 0 if your pair style does not store data in restart files
Rename of pack/unpack_comm() to pack/unpack_forward_comm()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: 8Aug2014
In this change set the functions to pack data into communication buffers
and to unpack data from communication buffers for :doc:`forward
communications <Developer_comm_ops>` were renamed from ``pack_comm()``
and ``unpack_comm()`` to ``pack_forward_comm()`` and
``unpack_forward_comm()``, respectively. Also the meaning of the return
value of these functions was changed: rather than returning the number
of items per atom stored in the buffer, now the total number of items
added (or unpacked) needs to be returned. Here is an example from the
`PairEAM` class. Of course the member function declaration in corresponding
header file needs to be updated accordingly.
Old:
.. code-block:: C++
int PairEAM::pack_comm(int n, int *list, double *buf, int pbc_flag, int *pbc)
{
int m = 0;
for (int i = 0; i < n; i++) {
int j = list[i];
buf[m++] = fp[j];
}
return 1;
}
New:
.. code-block:: C++
int PairEAM::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc)
{
int m = 0;
for (int i = 0; i < n; i++) {
int j = list[i];
buf[m++] = fp[j];
}
return m;
}
.. note::
Because the various "pack" and "unpack" functions are defined in the
respective base classes as dummy functions doing nothing, and because
of the the name mismatch the custom versions in the derived class
will no longer be called, there will be no compilation error when
this change is not applied. Only calculations will suddenly produce
incorrect results because the required forward communication calls
will cease to function correctly.
Use ev_init() to initialize variables derived from eflag and vflag
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: 29Mar2019
There are several variables that need to be initialized based on
the values of the "eflag" and "vflag" variables and since sometimes
there are new bits added and new variables need to be set to 1 or 0.
To make this consistent, across all styles, there is now an inline
function ``ev_init(eflag, vflag)`` that makes those settings
consistently and calls either ``ev_setup()`` or ``ev_unset()``.
Example from a pair style:
Old:
.. code-block:: C++
if (eflag || vflag) ev_setup(eflag, vflag);
else evflag = vflag_fdotr = eflag_global = eflag_atom = 0;
New:
.. code-block:: C++
ev_init(eflag, vflag);
Not applying this change will not cause a compilation error, but
can lead to inconsistent behavior and incorrect tallying of
energy or virial.
Use utils::numeric() functions instead of force->numeric()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: 18Sep2020
The "numeric()" conversion functions (including "inumeric()",
"bnumeric()", and "tnumeric()") have been moved from the Force class to
the utils namespace. Also they take an additional argument that selects
whether the ``Error::all()`` or ``Error::one()`` function should be
called in case of an error. The former should be used when *all* MPI
processes call the conversion function and the latter *must* be used
when they are called from only one or a subset of the MPI processes.
Old:
.. code-block:: C++
val = force->numeric(FLERR, arg[1]);
num = force->inumeric(FLERR, arg[2]);
New:
.. code-block:: C++
val = utils::numeric(FLERR, true, arg[1], lmp);
num = utils::inumeric(FLERR, false, arg[2], lmp);
.. seealso::
:cpp:func:`utils::numeric() <LAMMPS_NS::utils::numeric>`,
:cpp:func:`utils::inumeric() <LAMMPS_NS::utils::inumeric>`,
:cpp:func:`utils::bnumeric() <LAMMPS_NS::utils::bnumeric>`,
:cpp:func:`utils::tnumeric() <LAMMPS_NS::utils::tnumeric>`
Use utils::open_potential() function to open potential files
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: 18Sep2020
The :cpp:func:`utils::open_potential()
<LAMMPS_NS::utils::open_potential>` function must be used to replace
calls to ``force->open_potential()`` and should be used to replace
``fopen()`` for opening potential files for reading. The custom
function does three additional steps compared to ``fopen()``: 1) it will
try to parse the ``UNITS:`` and ``DATE:`` metadata will stop with an
error on a units mismatch and will print the date info, if present, in
the log file; 2) for pair styles that support it, it will set up
possible automatic unit conversions based on the embedded unit
information and LAMMPS' current units setting; 3) it will not only try
to open a potential file at the given path, but will also search in the
folders listed in the ``LAMMPS_POTENTIALS`` environment variable. This
allows to keep potential files in a common location instead of having to
copy them around for simulations.
Old:
.. code-block:: C++
fp = force->open_potential(filename);
fp = fopen(filename, "r");
New:
.. code-block:: C++
fp = utils::open_potential(filename, lmp);
Simplify customized error messages
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: 14May2021
Aided by features of the bundled {fmt} library, error messages now
can have a variable number of arguments and the string will be interpreted
as a {fmt} style format string so that custom error messages can be
easily customized without having to use temporary buffers and ``sprintf()``.
Example:
Old:
.. code-block:: C++
if (fptr == NULL) {
char str[128];
sprintf(str,"Cannot open AEAM potential file %s",filename);
error->one(FLERR,str);
}
New:
.. code-block:: C++
if (fptr == nullptr)
error->one(FLERR, "Cannot open AEAM potential file {}: {}", filename, utils::getsyserror());
Use of "override" instead of "virtual"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: 17Feb2022
Since LAMMPS requires C++11 we switched to use the "override" keyword
instead of "virtual" to indicate polymorphism in derived classes. This
allows the C++ compiler to better detect inconsistencies when an
override is intended or not. Please note that "override" has to be
added to **all** polymorph functions in derived classes and "virtual"
*only* to the function in the base class (or the destructor). Here is
an example from the ``FixWallReflect`` class:
Old:
.. code-block:: C++
FixWallReflect(class LAMMPS *, int, char **);
virtual ~FixWallReflect();
int setmask();
void init();
void post_integrate();
New:
.. code-block:: C++
FixWallReflect(class LAMMPS *, int, char **);
~FixWallReflect() override;
int setmask() override;
void init() override;
void post_integrate() override;
This change set will neither cause a compilation failure, nor will it
change functionality, but if you plan to submit the updated code for
inclusion into the LAMMPS distribution, it will be requested for achieve
a consistent :doc:`programming style <Modify_style>`.
Simplified function names for forward and reverse communication
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: 24Mar2022
Rather then using the function name to distinguish between the different
forward and reverse communication functions for styles, LAMMPS now uses
the type of the "this" pointer argument.
Old:
.. code-block:: C++
comm->forward_comm_pair(this);
comm->forward_comm_fix(this);
comm->forward_comm_compute(this);
comm->forward_comm_dump(this);
comm->reverse_comm_pair(this);
comm->reverse_comm_fix(this);
comm->reverse_comm_compute(this);
comm->reverse_comm_dump(this);
New:
.. code-block:: C++
comm->forward_comm(this);
comm->reverse_comm(this);
This change is required or else the code will not compile.
Simplified and more compact neighbor list requests
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: 24Mar2022
This change set reduces the amount of code required to request a
neighbor list. It enforces consistency and no longer requires to change
internal data of the request. More information on neighbor list
requests can be :doc:`found here <Developer_notes>`. Example from the
``ComputeRDF`` class:
Old:
.. code-block:: C++
int irequest = neighbor->request(this,instance_me);
neighbor->requests[irequest]->pair = 0;
neighbor->requests[irequest]->compute = 1;
neighbor->requests[irequest]->occasional = 1;
if (cutflag) {
neighbor->requests[irequest]->cut = 1;
neighbor->requests[irequest]->cutoff = mycutneigh;
}
New:
.. code-block:: C++
auto req = neighbor->add_request(this, NeighConst::REQ_OCCASIONAL);
if (cutflag) req->set_cutoff(mycutneigh);
Public access to the ``NeighRequest`` class data members has been
removed so this update is *required* to avoid compilation failure.

View File

@ -133,6 +133,9 @@ and parsing files or arguments.
.. doxygenfunction:: trim_comment
:project: progguide
.. doxygenfunction:: star_subst
:project: progguide
.. doxygenfunction:: has_utf8
:project: progguide
@ -151,6 +154,9 @@ and parsing files or arguments.
.. doxygenfunction:: trim_and_count_words
:project: progguide
.. doxygenfunction:: join_words
:project: progguide
.. doxygenfunction:: split_words
:project: progguide
@ -208,6 +214,12 @@ Convenience functions
.. doxygenfunction:: logmesg(LAMMPS *lmp, const std::string &mesg)
:project: progguide
.. doxygenfunction:: errorurl
:project: progguide
.. doxygenfunction:: missing_cmd_args
:project: progguide
.. doxygenfunction:: flush_buffers(LAMMPS *lmp)
:project: progguide
@ -237,6 +249,44 @@ Customized standard functions
---------------------------
Special Math functions
----------------------
The ``MathSpecial`` namespace implements a selection of custom and optimized
mathematical functions for a variety of applications.
.. doxygenfunction:: factorial
:project: progguide
.. doxygenfunction:: exp2_x86
:project: progguide
.. doxygenfunction:: fm_exp
:project: progguide
.. doxygenfunction:: my_erfcx
:project: progguide
.. doxygenfunction:: expmsq
:project: progguide
.. doxygenfunction:: square
:project: progguide
.. doxygenfunction:: cube
:project: progguide
.. doxygenfunction:: powsign
:project: progguide
.. doxygenfunction:: powint
:project: progguide
.. doxygenfunction:: powsinxx
:project: progguide
---------------------------
Tokenizer classes
-----------------

View File

@ -11,6 +11,7 @@ them.
:maxdepth: 1
Errors_common
Errors_details
Errors_bugs
Errors_debug
Errors_messages

View File

@ -17,9 +17,8 @@ the steps outlined below:
if your issue has already been reported and if it is still open.
* Check the `GitHub Pull Requests page <https://github.com/lammps/lammps/pulls>`_
to see if there is already a fix for your bug pending.
* Check the `mailing list archives <https://www.lammps.org/mail.html>`_ or
the `LAMMPS forum <https://www.lammps.org/forum.html>`_ to see if the
issue has been discussed before.
* Check the `LAMMPS forum at MatSci <https://matsci.org/lammps/>`_
to see if the issue has been discussed before.
If none of these steps yields any useful information, please file a new
bug report on the `GitHub Issue page <https://github.com/lammps/lammps/issues>`_.
@ -38,12 +37,9 @@ generate this restart from a data file or a simple additional input.
This input deck can be used with tools like a debugger or `valgrind
<https://valgrind.org>`_ to further :doc:`debug the crash <Errors_debug>`.
You may also send an email to the LAMMPS mailing list at
"lammps-users at lists.sourceforge.net" describing the problem with the
same kind of information. The mailing list can provide a faster response,
especially if the bug reported is actually expected behavior. But because
of the high volume of the mailing list, it can happen that your e-mail
is overlooked and then forgotten. Issues on GitHub have to be explicitly
closed, so that will *guarantee* that at least one LAMMPS developer will
have looked at it.
You may also post a message in the `development category of the LAMMPS
forum at MatSci <https://matsci.org/c/lammps/lammps-development/>`_
describing the problem with the same kind of information. The forum can
provide a faster response, especially if the bug reported is actually
expected behavior or other LAMMPS users have come across it before.

View File

@ -0,0 +1,27 @@
Error and warning details
=========================
Many errors or warnings are self-explanatory and thus straightforward to
resolve. However, there are also cases, where there is no single cause
and explanation, where LAMMPS can only detect symptoms of an error but
not the exact cause, or where the explanation needs to be more detailed than
what can be fit into a message printed by the program. The following are
discussions of such cases.
.. _err0001:
Unknown identifier in data file
-------------------------------
This error happens when LAMMPS encounters a line of text in an unexpected format
while reading a data file. This is most commonly cause by inconsistent header and
section data. The header section informs LAMMPS how many entries or lines are expected in the
various sections (like Atoms, Masses, Pair Coeffs, *etc.*\ ) of the data file.
If there is a mismatch, LAMMPS will either keep reading beyond the end of a section
or stop reading before the section has ended.
Such a mismatch can happen unexpectedly when the first line of the data
is *not* a comment as required by the format. That would result in
LAMMPS expecting, for instance, 0 atoms because the "atoms" header line
is treated as a comment.

View File

@ -476,65 +476,6 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
*Bonds defined but no bond types*
The data file header lists bonds but no bond types.
*Bond/react: Cannot use fix bond/react with non-molecular systems*
Only systems with bonds that can be changed can be used. Atom_style
template does not qualify.
*Bond/react: Invalid template atom ID in map file*
Atom IDs in molecule templates range from 1 to the number of atoms in the template.
*Bond/react: Rmax cutoff is longer than pairwise cutoff*
This is not allowed because bond creation is done using the pairwise
neighbor list.
*Bond/react: Molecule template ID for fix bond/react does not exist*
A valid molecule template must have been created with the molecule
command.
*Bond/react: Reaction templates must contain the same number of atoms*
There should be a one-to-one correspondence between atoms in the
pre-reacted and post-reacted templates, as specified by the map file.
*Bond/react: Unknown section in map file*
Please ensure reaction map files are properly formatted.
*Bond/react: Atom/Bond type affected by reaction too close to template edge*
This means an atom which changes type or connectivity during the
reaction is too close to an 'edge' atom defined in the map
file. This could cause incorrect assignment of bonds, angle, etc.
Generally, this means you must include more atoms in your templates,
such that there are at least two atoms between each atom involved in
the reaction and an edge atom.
*Bond/react: Fix bond/react needs ghost atoms from farther away*
This is because a processor needs to map the entire unreacted
molecule template onto simulation atoms it knows about. The
comm_modify cutoff command can be used to extend the communication
range.
*Bond/react: A deleted atom cannot remain bonded to an atom that is not deleted*
Self-explanatory.
*Bond/react: First neighbors of chiral atoms must be of mutually different types*
Self-explanatory.
*Bond/react: Chiral atoms must have exactly four first neighbors*
Self-explanatory.
*Bond/react: Molecule template 'Coords' section required for chiralIDs keyword*
The coordinates of atoms in the pre-reacted template are used to determine
chirality.
*Bond/react special bond generation overflow*
The number of special bonds per-atom created by a reaction exceeds the
system setting. See the read_data or create_box command for how to
specify this value.
*Bond/react topology/atom exceed system topology/atom*
The number of bonds, angles etc per-atom created by a reaction exceeds
the system setting. See the read_data or create_box command for how to
specify this value.
*Both restart files must use % or neither*
Self-explanatory.
@ -1291,7 +1232,7 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
*Cannot use chosen neighbor list style with lj/gromacs/kk*
Self-explanatory.
*Cannot use chosen neighbor list style with lj/sdk/kk*
*Cannot use chosen neighbor list style with lj/spica/kk*
That style is not supported by Kokkos.
*Cannot use chosen neighbor list style with pair eam/kk*
@ -1659,10 +1600,10 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
*Cannot use newton pair with lj/gromacs/gpu pair style*
Self-explanatory.
*Cannot use newton pair with lj/sdk/coul/long/gpu pair style*
*Cannot use newton pair with lj/spica/coul/long/gpu pair style*
Self-explanatory.
*Cannot use newton pair with lj/sdk/gpu pair style*
*Cannot use newton pair with lj/spica/gpu pair style*
Self-explanatory.
*Cannot use newton pair with lj96/cut/gpu pair style*
@ -3521,6 +3462,65 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
acquire needed info, The comm_modify cutoff command can be used to
extend the communication range.
*Fix bond/react: Cannot use fix bond/react with non-molecular systems*
Only systems with bonds that can be changed can be used. Atom_style
template does not qualify.
*Fix bond/react: Invalid template atom ID in map file*
Atom IDs in molecule templates range from 1 to the number of atoms in the template.
*Fix bond/react: Rmax cutoff is longer than pairwise cutoff*
This is not allowed because bond creation is done using the pairwise
neighbor list.
*Fix bond/react: Molecule template ID for fix bond/react does not exist*
A valid molecule template must have been created with the molecule
command.
*Fix bond/react: Reaction templates must contain the same number of atoms*
There should be a one-to-one correspondence between atoms in the
pre-reacted and post-reacted templates, as specified by the map file.
*Fix bond/react: Unknown section in map file*
Please ensure reaction map files are properly formatted.
*Fix bond/react: Atom/Bond type affected by reaction too close to template edge*
This means an atom which changes type or connectivity during the
reaction is too close to an 'edge' atom defined in the map
file. This could cause incorrect assignment of bonds, angle, etc.
Generally, this means you must include more atoms in your templates,
such that there are at least two atoms between each atom involved in
the reaction and an edge atom.
*Fix bond/react: Fix bond/react needs ghost atoms from farther away*
This is because a processor needs to map the entire unreacted
molecule template onto simulation atoms it knows about. The
comm_modify cutoff command can be used to extend the communication
range.
*Fix bond/react: A deleted atom cannot remain bonded to an atom that is not deleted*
Self-explanatory.
*Fix bond/react: First neighbors of chiral atoms must be of mutually different types*
Self-explanatory.
*Fix bond/react: Chiral atoms must have exactly four first neighbors*
Self-explanatory.
*Fix bond/react: Molecule template 'Coords' section required for chiralIDs keyword*
The coordinates of atoms in the pre-reacted template are used to determine
chirality.
*Fix bond/react special bond generation overflow*
The number of special bonds per-atom created by a reaction exceeds the
system setting. See the read_data or create_box command for how to
specify this value.
*Fix bond/react topology/atom exceed system topology/atom*
The number of bonds, angles etc per-atom created by a reaction exceeds
the system setting. See the read_data or create_box command for how to
specify this value.
*Fix bond/swap cannot use dihedral or improper styles*
These styles cannot be defined when using this fix.
@ -6782,7 +6782,7 @@ keyword to allow for additional bonds to be formed
This is because the computation of constraint forces within a water
molecule adds forces to atoms owned by other processors.
*Pair style lj/sdk/coul/long/gpu requires atom attribute q*
*Pair style lj/spica/coul/long/gpu requires atom attribute q*
The atom style defined does not have this attribute.
*Pair style nb3b/harmonic requires atom IDs*

View File

@ -68,14 +68,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
length, multiplying by the number of bonds in the interaction (e.g. 3
for a dihedral) and adding a small amount of stretch.
*Bond/react: Atom affected by reaction too close to template edge*
This means an atom which changes type or connectivity during the
reaction is too close to an 'edge' atom defined in the superimpose
file. This could cause incorrect assignment of bonds, angle, etc.
Generally, this means you must include more atoms in your templates,
such that there are at least two atoms between each atom involved in
the reaction and an edge atom.
*Both groups in compute group/group have a net charge; the Kspace boundary correction to energy will be non-zero*
Self-explanatory.
@ -206,12 +198,20 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
*Fix SRD walls overlap but fix srd overlap not set*
You likely want to set this in your input script.
* Fix bond/create is used multiple times or with fix bond/break - may not work as expected*
*Fix bond/create is used multiple times or with fix bond/break - may not work as expected*
When using fix bond/create multiple times or in combination with
fix bond/break, the individual fix instances do not share information
about changes they made at the same time step and thus it may result
in unexpected behavior.
*Fix bond/react: Atom affected by reaction too close to template edge*
This means an atom which changes type or connectivity during the
reaction is too close to an 'edge' atom defined in the superimpose
file. This could cause incorrect assignment of bonds, angle, etc.
Generally, this means you must include more atoms in your templates,
such that there are at least two atoms between each atom involved in
the reaction and an edge atom.
*Fix bond/swap will ignore defined angles*
See the page for fix bond/swap for more info on this
restriction.
@ -470,6 +470,12 @@ This will most likely cause errors in kinetic fluctuations.
*More than one compute sna/atom*
Self-explanatory.
*More than one compute sna/grid*
Self-explanatory.
*More than one compute sna/grid/local*
Self-explanatory.
*More than one compute snad/atom*
Self-explanatory.
@ -804,4 +810,3 @@ This will most likely cause errors in kinetic fluctuations.
*Using pair tail corrections with pair_modify compute no*
The tail corrections will thus not be computed.

View File

@ -54,6 +54,8 @@ Lowercase directories
+-------------+------------------------------------------------------------------+
| body | body particles, 2d system |
+-------------+------------------------------------------------------------------+
| bpm | BPM simulations of pouring elastic grains and plate impact |
+-------------+------------------------------------------------------------------+
| cmap | CMAP 5-body contributions to CHARMM force field |
+-------------+------------------------------------------------------------------+
| colloid | big colloid particles in a small particle solvent, 2d system |
@ -94,12 +96,12 @@ Lowercase directories
+-------------+------------------------------------------------------------------+
| latte | examples for using fix latte for DFTB via the LATTE library |
+-------------+------------------------------------------------------------------+
| mdi | use of the MDI package and MolSSI MDI code coupling library |
+-------------+------------------------------------------------------------------+
| meam | MEAM test for SiC and shear (same as shear examples) |
+-------------+------------------------------------------------------------------+
| melt | rapid melt of 3d LJ system |
+-------------+------------------------------------------------------------------+
| message | demos for LAMMPS client/server coupling with the MESSAGE package |
+-------------+------------------------------------------------------------------+
| micelle | self-assembly of small lipid-like molecules into 2d bilayers |
+-------------+------------------------------------------------------------------+
| min | energy minimization of 2d LJ melt |

View File

@ -22,8 +22,9 @@ General howto
Howto_replica
Howto_library
Howto_couple
Howto_client_server
Howto_mdi
Howto_bpm
Howto_broken_bonds
Settings howto
==============
@ -64,6 +65,7 @@ Force fields howto
:maxdepth: 1
Howto_bioFF
Howto_amoeba
Howto_tip3p
Howto_tip4p
Howto_spc

324
doc/src/Howto_amoeba.rst Normal file
View File

@ -0,0 +1,324 @@
AMOEBA and HIPPO force fields
=============================
The AMOEBA and HIPPO polarizable force fields were developed by Jay
Ponder's group at the U Washington at St Louis. Their implementation
in LAMMPS was done using F90 code provided by the Ponder group from
their `Tinker MD code <https://dasher.wustl.edu/tinker/>`_.
The current implementation (July 2022) of AMOEBA in LAMMPS matches the
version discussed in :ref:`(Ponder) <amoeba-Ponder>`, :ref:`(Ren)
<amoeba-Ren>`, and :ref:`(Shi) <amoeba-Shi>`. Likewise the current
implementation of HIPPO in LAMMPS matches the version discussed in
:ref:`(Rackers) <amoeba-Rackers>`.
These force fields can be used when polarization effects are desired
in simulations of water, organic molecules, and biomolecules including
proteins, provided that parameterizations (Tinker PRM force field
files) are available for the systems you are interested in. Files in
the LAMMPS potentials directory with a "amoeba" or "hippo" suffix can
be used. The Tinker distribution and website have additional force
field files as well:
`https://github.com/TinkerTools/tinker/tree/release/params
<https://github.com/TinkerTools/tinker/tree/release/params>`_.
Note that currently, HIPPO can only be used for water systems, but
HIPPO files for a variety of small organic and biomolecules are in
preparation by the Ponder group. Those force field files will be
included in the LAMMPS distribution when available.
To use the AMOEBA or HIPPO force fields, a simulation must be 3d, and
fully periodic or fully non-periodic, and use an orthogonal (not
triclinic) simulation box.
----------
The AMOEBA and HIPPO force fields contain the following terms in their
energy (U) computation. Further details for AMOEBA equations are in
:ref:`(Ponder) <amoeba-Ponder>`, further details for the HIPPO
equations are in :ref:`(Rackers) <amoeba-Rackers>`.
.. math::
U & = U_{intermolecular} + U_{intramolecular} \\
U_{intermolecular} & = U_{hal} + U_{repulsion} + U_{dispersion} + U_{multipole} + U_{polar} + U_{qxfer} \\
U_{intramolecular} & = U_{bond} + U_{angle} + U_{torsion} + U_{oop} + U_{b\theta} + U_{UB} + U_{pitorsion} + U_{bitorsion}
For intermolecular terms, the AMOEBA force field includes only the
:math:`U_{hal}`, :math:`U_{multipole}`, :math:`U_{polar}` terms. The
HIPPO force field includes all but the :math:`U_{hal}` term. In
LAMMPS, these are all computed by the :doc:`pair_style amoeba or hippo
<pair_style>` command. Note that the :math:`U_{multipole}` and
:math:`U_{polar}` terms in this formula are not the same for the
AMOEBA and HIPPO force fields.
For intramolecular terms, the :math:`U_{bond}`, :math:`U_{angle}`,
:math:`U_{torsion}`, :math:`U_{oop}` terms are computed by the
:doc:`bond_style class2 <bond_class2>` :doc:`angle_style amoeba
<angle_amoeba>`, :doc:`dihedral_style fourier <dihedral_fourier>`, and
:doc:`improper_style amoeba <improper_amoeba>` commands respectively.
The :doc:`angle_style amoeba <angle_amoeba>` command includes the
:math:`U_{b\theta}` bond-angle cross term, and the :math:`U_{UB}` term
for a Urey-Bradley bond contribution between the I,K atoms in the IJK
angle.
The :math:`U_{pitorsion}` term is computed by the :doc:`fix
amoeba/pitorsion <fix_amoeba_pitorsion>` command. It computes 6-body
interaction between a pair of bonded atoms which each have 2
additional bond partners.
The :math:`U_{bitorsion}` term is computed by the :doc:`fix
amoeba/bitorsion <fix_amoeba_bitorsion>` command. It computes 5-body
interaction between two 4-body torsions (dihedrals) which overlap,
having 3 atoms in common.
These command doc pages have additional details on the terms they
compute:
* :doc:`pair_style amoeba or hippo <pair_amoeba>`
* :doc:`bond_style class2 <bond_class2>`
* :doc:`angle_style amoeba <angle_amoeba>`
* :doc:`dihedral_style fourier <dihedral_fourier>`
* :doc:`improper_style amoeba <improper_amoeba>`
* :doc:`fix amoeba/pitorsion <fix_amoeba_pitorsion>`
* :doc:`fix amoeba/bitorsion <fix_amoeba_bitorsion>`
----------
To use the AMOEBA or HIPPO force fields in LAMMPS, use commands like
the following appropriately in your input script. The only change
needed for AMOEBA vs HIPPO simulation is for the :doc:`pair_style
<pair_style>` and :doc:`pair_coeff <pair_coeff>` commands, as shown
below. See examples/amoeba for example input scripts for both AMOEBA
and HIPPO.
.. code-block:: LAMMPS
units real # required
atom_style amoeba
bond_style class2 # CLASS2 package
angle_style amoeba
dihedral_style fourier # EXTRA-MOLECULE package
improper_style amoeba
# required per-atom data
fix amtype all property/atom i_amtype ghost yes
fix extra all property/atom &
i_amgroup i_ired i_xaxis i_yaxis i_zaxis d_pval ghost yes
fix polaxe all property/atom i_polaxe
fix pit all amoeba/pitorsion # PiTorsion terms in FF
fix_modify pit energy yes
# Bitorsion terms in FF
fix bit all amoeba/bitorsion bitorsion.ubiquitin.data
fix_modify bit energy yes
read_data data.ubiquitin fix amtype NULL "Tinker Types" &
fix pit "pitorsion types" "PiTorsion Coeffs" &
fix pit pitorsions PiTorsions &
fix bit bitorsions BiTorsions
pair_style amoeba # AMOEBA FF
pair_coeff * * amoeba_ubiquitin.prm amoeba_ubiquitin.key
pair_style hippo # HIPPO FF
pair_coeff * * hippo_water.prm hippo_water.key
special_bonds lj/coul 0.5 0.5 0.5 one/five yes # 1-5 neighbors
The data file read by the :doc:`read_data <read_data>` command should
be created by the tools/tinker/tinker2lmp.py conversion program
described below. It will create a section in the data file with the
header "Tinker Types". A :doc:`fix property/atom <fix_property_atom>`
command for the data must be specified before the read_data command.
In the example above the fix ID is *amtype*.
Similarly, if the system you are simulating defines AMOEBA/HIPPO
pitorsion or bitorsion interactions, there will be entries in the data
file for those interactions. They require a :doc:`fix
amoeba/pitortion <fix_amoeba_pitorsion>` and :doc:`fix
amoeba/bitorsion <fix_amoeba_bitorsion>` command be defined. In the
example above, the IDs for these two fixes are *pit* and *bit*.
Of course, if the system being modeled does not have one or more of
the following -- bond, angle, dihedral, improper, pitorsion,
bitorsion interactions -- then the corresponding style and fix
commands above do not need to be used. See the example scripts in
examples/amoeba for water systems as examples; they are simpler than
what is listed above.
The two :doc:`fix property/atom <fix_property_atom>` commands with IDs
(in the example above) *extra* and *polaxe* are also needed to define
internal per-atom quantities used by the AMOEBA and HIPPO force
fields.
The :doc:`pair_coeff <pair_coeff>` command used for either the AMOEBA
or HIPPO force field takes two arguments for Tinker force field files,
namely a PRM and KEY file. The keyfile can be specified as NULL and
default values for a various settings will be used. Note that these 2
files are meant to allow use of native Tinker files as-is. However
LAMMPS does not support all the options which can be included
in a Tinker PRM or KEY file. See specifics below.
A :doc:`special_bonds <special_bonds>` command with the *one/five*
option is required, since the AMOEBA/HIPPO force fields define
weighting factors for not only 1-2, 1-3, 1-4 interactions, but also
1-5 interactions. This command will trigger a per-atom list of 1-5
neighbors to be generated. The AMOEBA and HIPPO force fields define
their own custom weighting factors for all the 1-2, 1-3, 1-4, 1-5
terms which in the Tinker PRM and KEY files; they can be different for
different terms in the force field.
In addition to the list above, these command doc pages have additional
details:
* :doc:`atom_style amoeba <atom_style>`
* :doc:`fix property/atom <fix_property_atom>`
* :doc:`special_bonds <special_bonds>`
----------
Tinker PRM and KEY files
A Tinker PRM file is composed of sections, each of which has multiple
lines. This is the list of PRM sections LAMMPS knows how to parse and
use. Any other sections are skipped:
* Angle Bending Parameters
* Atom Type Definitions
* Atomic Multipole Parameters
* Bond Stretching Parameters
* Charge Penetration Parameters
* Charge Transfer Parameters
* Dipole Polarizability Parameters
* Dispersion Parameters
* Force Field Definition
* Literature References
* Out-of-Plane Bend Parameters
* Pauli Repulsion Parameters
* Pi-Torsion Parameters
* Stretch-Bend Parameters
* Torsion-Torsion Parameters
* Torsional Parameters
* Urey-Bradley Parameters
* Van der Waals Pair Parameters
* Van der Waals Parameters
A Tinker KEY file is composed of lines, each of which has a keyword
followed by zero or more parameters. This is the list of keywords
LAMMPS knows how to parse and use in the same manner Tinker does. Any
other keywords are skipped. The value in parenthesis is the default
value for the keyword if it is not specified, or if the keyfile in the
:doc:`pair_coeff <pair_coeff>` command is specified as NULL:
* a-axis (0.0)
* b-axis (0.0)
* c-axis (0.0)
* ctrn-cutoff (6.0)
* ctrn-taper (0.9 * ctrn-cutoff)
* cutoff
* delta-halgren (0.07)
* dewald (no long-range dispersion unless specified)
* dewald-alpha (0.4)
* dewald-cutoff (7.0)
* dispersion-cutoff (9.0)
* dispersion-taper (9.0 * dispersion-cutoff)
* dpme-grid
* dpme-order (4)
* ewald (no long-range electrostatics unless specified)
* ewald-alpha (0.4)
* ewald-cutoff (7.0)
* gamma-halgren (0.12)
* mpole-cutoff (9.0)
* mpole-taper (0.65 * mpole-cutoff)
* pcg-guess (enabled by default)
* pcg-noguess (disable pcg-guess if specified)
* pcg-noprecond (disable pcg-precond if specified)
* pcg-peek (1.0)
* pcg-precond (enabled by default)
* pewald-alpha (0.4)
* pme-grid
* pme-order (5)
* polar-eps (1.0e-6)
* polar-iter (100)
* polar-predict (no prediction operation unless specified)
* ppme-order (5)
* repulsion-cutoff (6.0)
* repulsion-taper (0.9 * repulsion-cutoff)
* taper
* usolve-cutoff (4.5)
* usolve-diag (2.0)
* vdw-cutoff (9.0)
* vdw-taper (0.9 * vdw-cutoff)
----------
Tinker2lmp.py tool
This conversion tool is found in the tools/tinker directory.
As shown in examples/amoeba/README, these commands produce
the data files found in examples/amoeba, and also illustrate
all the options available to use with the tinker2lmp.py script:
.. code-block:: bash
% python tinker2lmp.py -xyz water_dimer.xyz -amoeba amoeba_water.prm -data data.water_dimer.amoeba # AMOEBA non-periodic system
% python tinker2lmp.py -xyz water_dimer.xyz -hippo hippo_water.prm -data data.water_dimer.hippo # HIPPO non-periodic system
% python tinker2lmp.py -xyz water_box.xyz -amoeba amoeba_water.prm -data data.water_box.amoeba -pbc 18.643 18.643 18.643 # AMOEBA periodic system
% python tinker2lmp.py -xyz water_box.xyz -hippo hippo_water.prm -data data.water_box.hippo -pbc 18.643 18.643 18.643 # HIPPO periodic system
% python tinker2lmp.py -xyz ubiquitin.xyz -amoeba amoeba_ubiquitin.prm -data data.ubiquitin.new -pbc 54.99 41.91 41.91 -bitorsion bitorsion.ubiquitin.data.new # system with bitorsions
Switches and their arguments may be specified in any order.
The -xyz switch is required and specifies an input XYZ file as an
argument. The format of this file is an extended XYZ format defined
and used by Tinker for its input. Example \*.xyz files are in the
examples/amoeba directory. The file lists the atoms in the system.
Each atom has the following information: Tinker species name (ignored
by LAMMPS), xyz coordinates, Tinker numeric type, and a list of atom
IDs the atom is bonded to.
Here is more information about the extended XYZ format defined and
used by Tinker, and links to programs that convert standard PDB files
to the extended XYZ format:
* `http://openbabel.org/docs/current/FileFormats/Tinker_XYZ_format.html <http://openbabel.org/docs/current/FileFormats/Tinker_XYZ_format.html>`_
* `https://github.com/emleddin/pdbxyz-xyzpdb <https://github.com/emleddin/pdbxyz-xyzpdb>`_
* `https://github.com/TinkerTools/tinker/blob/release/source/pdbxyz.f <https://github.com/TinkerTools/tinker/blob/release/source/pdbxyz.f>`_
The -amoeba or -hippo switch is required. It specifies an input
AMOEBA or HIPPO PRM force field file as an argument. This should be
the same file used by the :doc:`pair_style <pair_style>` command in
the input script.
The -data switch is required. It specifies an output file name for
the LAMMPS data file that will be produced.
For periodic systems, the -pbc switch is required. It specifies the
periodic box size for each dimension (x,y,z). For a Tinker simulation
these are specified in the KEY file.
The -bitorsion switch is only needed if the system contains Tinker
bitorsion interactions. The data for each type of bitorsion
interaction will be written to the specified file, and read by the
:doc:`fix amoeba/bitorsion <fix_amoeba_bitorsion>` command. The data
includes 2d arrays of values to which splines are fit, and thus is not
compatible with the LAMMPS data file format.
----------
.. _howto-Ponder:
**(Ponder)** Ponder, Wu, Ren, Pande, Chodera, Schnieders, Haque, Mobley, Lambrecht, DiStasio Jr, M. Head-Gordon, Clark, Johnson, T. Head-Gordon, J Phys Chem B, 114, 2549-2564 (2010).
.. _howto-Rackers:
**(Rackers)** Rackers, Silva, Wang, Ponder, J Chem Theory Comput, 17, 7056-7084 (2021).
.. _howto-Ren:
**(Ren)** Ren and Ponder, J Phys Chem B, 107, 5933 (2003).
.. _howto-Shi:
**(Shi)** Shi, Xia, Zhang, Best, Wu, Ponder, Ren, J Chem Theory Comp, 9, 4046, 2013.

View File

@ -239,7 +239,7 @@ is consistent with the 6 moments of inertia: ixx iyy izz ixy ixz iyz =
.. parsed-literal::
3 1 27
3 1 19
4
1 1 4 0 0 0
-0.7071 -0.7071 0

119
doc/src/Howto_bpm.rst Normal file
View File

@ -0,0 +1,119 @@
Bonded particle models
======================
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.
Unlike traditional bonds in molecular dynamics, the equilibrium bond
length can vary between bonds. Bonds store the reference state. This
includes setting the equilibrium length equal to the initial distance
between the two particles but can also include data on the bond
orientation for rotational models. This produces a stress free initial
state. Furthermore, bonds are allowed to break under large strains
producing fracture. The examples/bpm directory has sample input scripts
for simulations of the fragmentation of an impacted plate and the
pouring of extended, elastic bodies.
----------
Bonds can be created using a :doc:`read data <read_data>` or
:doc:`create bonds <create_bonds>` command. Alternatively, a
:doc:`molecule <molecule>` template with bonds can be used with
:doc:`fix deposit <fix_deposit>` or :doc:`fix pour <fix_pour>` to
create solid grains.
In this implementation, bonds store their reference state when they are
first computed in the setup of the first simulation run. Data is then
preserved across run commands and is written to :doc:`binary restart
files <restart>` such that restarting the system will not reset the
reference state of a bond. Bonds that are created midway into a run,
such as those created by pouring grains using :doc:`fix pour
<fix_pour>`, are initialized on that timestep.
As bonds can be broken between neighbor list builds, the
:doc:`special_bonds <special_bonds>` command works differently for BPM
bond styles. There are two possible settings which determine how pair
interactions work between bonded particles. First, one can turn off
all pair interactions between bonded particles. Unlike :doc:`bond
quartic <bond_quartic>`, this is not done by subtracting pair forces
during the bond computation but rather by dynamically updating the
special bond list. This is the default behavior of BPM bond styles and
is done by updating the 1-2 special bond list as bonds break. To do
this, LAMMPS requires :doc:`newton <newton>` bond off such that all
processors containing an atom know when a bond breaks. Additionally,
one must do either (A) or (B).
A) Use the following special bond settings
.. code-block:: LAMMPS
special_bonds lj 0 1 1 coul 1 1 1
These settings accomplish two goals. First, they turn off 1-3 and 1-4
special bond lists, which are not currently supported for BPMs. As
BPMs often have dense bond networks, generating 1-3 and 1-4 special
bond lists is expensive. By setting the lj weight for 1-2 bonds to
zero, this turns off pairwise interactions. Even though there are no
charges in BPM models, setting a nonzero coul weight for 1-2 bonds
ensures all bonded neighbors are still included in the neighbor list
in case bonds break between neighbor list builds.
B) Alternatively, one can simply overlay pair interactions such that all
bonded particles also feel pair interactions. This can be
accomplished by using the *overlay/pair* keyword present in all bpm
bond styles and by using the following special bond settings
.. code-block:: LAMMPS
special_bonds lj/coul 1 1 1
See the :doc:`Howto <Howto_broken_bonds>` page on broken bonds for
more information.
----------
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 <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 :doc:`granular package
<Howto_granular>`, :doc:`atom style sphere <atom_style>`. However,
they must also track the current orientation of particles and store bonds
and therefore use a :doc:`bpm/sphere atom style <atom_style>`.
This also requires a unique integrator :doc:`fix nve/bpm/sphere
<fix_nve_bpm_sphere>` which numerically integrates orientation similar
to :doc:`fix nve/asphere <fix_nve_asphere>`.
To monitor the fracture of bonds in the system, all BPM bond styles
have the ability to record instances of bond breakage to output using
the :doc:`dump local <dump>` command. Additionally, one can use
:doc:`compute nbond/atom <compute_nbond_atom>` to tally the current
number of bonds per atom.
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.
----------
While LAMMPS has many utilities to create and delete bonds, *only*
the following are currently compatible with BPM bond styles:
* :doc:`create_bonds <create_bonds>`
* :doc:`delete_bonds <delete_bonds>`
* :doc:`fix bond/create <fix_bond_create>`
* :doc:`fix bond/break <fix_bond_break>`
* :doc:`fix bond/swap <fix_bond_swap>`
Note :doc:`create_bonds <create_bonds>` requires certain special_bonds settings.
To subtract pair interactions, one will need to switch between different
special_bonds settings in the input script. An example is found in
examples/bpm/impact.

View File

@ -0,0 +1,48 @@
Broken Bonds
============
Typically, bond interactions persist for the duration of a simulation
in LAMMPS. However, there are some exceptions that allow for bonds to
break including the :doc:`quartic bond style <bond_quartic>` and the
bond styles in the :doc:`BPM package <Howto_bpm>` which contains the
:doc:`bpm/spring <bond_bpm_spring>` and
:doc:`bpm/rotational <bond_bpm_rotational>` bond styles. In these cases,
a bond can be broken if it is stretched beyond a user-defined threshold.
LAMMPS accomplishes this by setting the bond type to zero such that the
bond force is no longer computed.
Users are normally able to weight the contribution of pair forces to atoms
that are bonded using the :doc:`special_bonds command <special_bonds>`.
When bonds break, this is not always the case. For the quartic bond style,
pair forces are always turned off between bonded particles. LAMMPS does
this via a computational sleight-of-hand. It subtracts the pairwise
interaction as part of the bond computation. When the bond breaks, the
subtraction stops. For this to work, the pairwise interaction must always
be computed by the :doc:`pair_style <pair_style>` command, whether the bond
is broken or not. This means that :doc:`special_bonds <special_bonds>` must
be set to 1,1,1. After the bond breaks, the pairwise interaction between the
two atoms is turned on, since they are no longer bonded.
In the BPM package, one can either turn off all pair interactions between
bonded particles or leave them on, overlaying pair forces on top of bond
forces. To remove pair forces, the special bond list is dynamically
updated. More details can be found on the :doc:`Howto BPM <Howto_bpm>`
page.
Bonds can also be broken by fixes which change bond topology, including
:doc:`fix bond/break <fix_bond_break>` and
:doc:`fix bond/react <fix_bond_react>`. These fixes will automatically
trigger a rebuild of the neighbor list and update special bond data structures
when bonds are broken.
Note that when bonds are dumped to a file via the :doc:`dump local <dump>` command, bonds with type 0 are not included. The
:doc:`delete_bonds <delete_bonds>` command can also be used to query the
status of broken bonds or permanently delete them, e.g.:
.. code-block:: LAMMPS
delete_bonds all stats
delete_bonds all bond 0 remove
The compute :doc:`nbond/atom <compute_nbond_atom>` can also be used
to tally the current number of bonds per atom, excluding broken bonds.

View File

@ -1,163 +0,0 @@
Using LAMMPS in client/server mode
==================================
Client/server coupling of two codes is where one code is the "client"
and sends request messages to a "server" code. The server responds to
each request with a reply message. This enables the two codes to work
in tandem to perform a simulation. LAMMPS can act as either a client
or server code.
Some advantages of client/server coupling are that the two codes run
as stand-alone executables; they are not linked together. Thus
neither code needs to have a library interface. This often makes it
easier to run the two codes on different numbers of processors. If a
message protocol (format and content) is defined for a particular kind
of simulation, then in principle any code that implements the
client-side protocol can be used in tandem with any code that
implements the server-side protocol, without the two codes needing to
know anything more specific about each other.
A simple example of client/server coupling is where LAMMPS is the
client code performing MD timestepping. Each timestep it sends a
message to a server quantum code containing current coords of all the
atoms. The quantum code computes energy and forces based on the
coords. It returns them as a message to LAMMPS, which completes the
timestep.
A more complex example is where LAMMPS is the client code and
processes a series of data files, sending each configuration to a
quantum code to compute energy and forces. Or LAMMPS runs dynamics
with an atomistic force field, but pauses every N steps to ask the
quantum code to compute energy and forces.
Alternate methods for code coupling with LAMMPS are described on
the :doc:`Howto couple <Howto_couple>` doc page.
The protocol for using LAMMPS as a client is to use these 3 commands
in this order (other commands may come in between):
* :doc:`message client <message>` # initiate client/server interaction
* :doc:`fix client/md <fix_client_md>` # any client fix which makes specific requests to the server
* :doc:`message quit <message>` # terminate client/server interaction
In between the two message commands, a client fix command and
:doc:`unfix <unfix>` command can be used multiple times. Similarly,
this sequence of 3 commands can be repeated multiple times, assuming
the server program operates in a similar fashion, to initiate and
terminate client/server communication.
The protocol for using LAMMPS as a server is to use these 2 commands
in this order (other commands may come in between):
* :doc:`message server <message>` # initiate client/server interaction
* :doc:`server md <server_md>` # any server command which responds to specific requests from the client
This sequence of 2 commands can be repeated multiple times, assuming
the client program operates in a similar fashion, to initiate and
terminate client/server communication.
LAMMPS support for client/server coupling is in its :ref:`MESSAGE package <PKG-MESSAGE>` which implements several
commands that enable LAMMPS to act as a client or server, as discussed
below. The MESSAGE package also wraps a client/server library called
CSlib which enables two codes to exchange messages in different ways,
either via files, sockets, or MPI. The CSlib is provided with LAMMPS
in the lib/message dir. The CSlib has its own
`website <https://cslib.sandia.gov>`_ with documentation and test
programs.
.. note::
For client/server coupling to work between LAMMPS and another
code, the other code also has to use the CSlib. This can sometimes be
done without any modifications to the other code by simply wrapping it
with a Python script that exchanges CSlib messages with LAMMPS and
prepares input for or processes output from the other code. The other
code also has to implement a matching protocol for the format and
content of messages that LAMMPS exchanges with it.
These are the commands currently in the MESSAGE package for two
protocols, MD and MC (Monte Carlo). New protocols can easily be
defined and added to this directory, where LAMMPS acts as either the
client or server.
* :doc:`message <message>`
* :doc:`fix client md <fix_client_md>` = LAMMPS is a client for running MD
* :doc:`server md <server_md>` = LAMMPS is a server for computing MD forces
* :doc:`server mc <server_mc>` = LAMMPS is a server for computing a Monte Carlo energy
The server doc files give details of the message protocols
for data that is exchanged between the client and server.
These example directories illustrate how to use LAMMPS as either a
client or server code:
* examples/message
* examples/COUPLE/README
* examples/COUPLE/lammps_mc
* examples/COUPLE/lammps_nwchem
* examples/COUPLE/lammps_vasp
The examples/message directory couples a client instance of LAMMPS to a
server instance of LAMMPS.
The files in the *lammps_mc* folder show how to couple LAMMPS as
a server to a simple Monte Carlo client code as the driver.
The files in the *lammps_nwchem* folder show how to couple LAMMPS
as a client code running MD timestepping to NWChem acting as a
server providing quantum DFT forces, through a Python wrapper script
on NWChem.
The files in the *lammps_vasp* folder show how to couple LAMMPS as
a client code running MD timestepping to VASP acting as a server
providing quantum DFT forces, through a Python wrapper script on VASP.
Here is how to launch a client and server code together for any of the
4 modes of message exchange that the :doc:`message <message>` command
and the CSlib support. Here LAMMPS is used as both the client and
server code. Another code could be substituted for either.
The examples below show launching both codes from the same window (or
batch script), using the "&" character to launch the first code in the
background. For all modes except *mpi/one*, you could also launch the
codes in separate windows on your desktop machine. It does not
matter whether you launch the client or server first.
In these examples either code can be run on one or more processors.
If running in a non-MPI mode (file or zmq) you can launch a code on a
single processor without using mpirun.
IMPORTANT: If you run in mpi/two mode, you must launch both codes via
mpirun, even if one or both of them runs on a single processor. This
is so that MPI can figure out how to connect both MPI processes
together to exchange MPI messages between them.
For message exchange in *file*, *zmq*, or *mpi/two* modes:
.. code-block:: bash
% mpirun -np 1 lmp_mpi -log log.client < in.client &
% mpirun -np 2 lmp_mpi -log log.server < in.server
% mpirun -np 4 lmp_mpi -log log.client < in.client &
% mpirun -np 1 lmp_mpi -log log.server < in.server
% mpirun -np 2 lmp_mpi -log log.client < in.client &
% mpirun -np 4 lmp_mpi -log log.server < in.server
For message exchange in *mpi/one* mode:
Launch both codes in a single mpirun command:
.. code-block:: bash
mpirun -np 2 lmp_mpi -mpicolor 0 -in in.message.client -log log.client : -np 4 lmp_mpi -mpicolor 1 -in in.message.server -log log.server
The two -np values determine how many procs the client and the server
run on.
A LAMMPS executable run in this manner must use the -mpicolor color
command-line option as their its option, where color is an integer
label that will be used to distinguish one executable from another in
the multiple executables that the mpirun command launches. In this
example the client was colored with a 0, and the server with a 1.

View File

@ -12,16 +12,16 @@ LAMMPS can be coupled to other codes in at least 4 ways. Each has
advantages and disadvantages, which you will have to think about in the
context of your application.
1. Define a new :doc:`fix <fix>` command that calls the other code. In
this scenario, LAMMPS is the driver code. During timestepping,
1. Define a new :doc:`fix <fix>` command that calls the other code.
In this scenario, LAMMPS is the driver code. During timestepping,
the fix is invoked, and can make library calls to the other code,
which has been linked to LAMMPS as a library. This is the way how the
which has been linked to LAMMPS as a library. This is the way the
:ref:`LATTE <PKG-LATTE>` package, which performs density-functional
tight-binding calculations using the `LATTE software <https://github.com/lanl/LATTE>`_
to compute forces, is hooked to LAMMPS.
See the :doc:`fix latte <fix_latte>` command for more details.
Also see the :doc:`Modify <Modify>` doc pages for info on how to
add a new fix to LAMMPS.
tight-binding calculations using the `LATTE software
<https://github.com/lanl/LATTE>`_ to compute forces, is hooked to
LAMMPS. See the :doc:`fix latte <fix_latte>` command for more
details. Also see the :doc:`Modify <Modify>` doc pages for info on
how to add a new fix to LAMMPS.
.. spacer
@ -58,6 +58,12 @@ context of your application.
.. spacer
4. Couple LAMMPS with another code in a client/server mode. This is
described on the :doc:`Howto client/server <Howto_client_server>` doc
page.
4. Couple LAMMPS with another code in a client/server fashion, using
using the `MDI Library
<https://molssi-mdi.github.io/MDI_Library/html/index.html>`_
developed by the `Molecular Sciences Software Institute (MolSSI)
<https://molssi.org>`_ to run LAMMPS as either an MDI driver
(client) or an MDI engine (server). The MDI driver issues commands
to the MDI server to exchange data between them. See the
:doc:`Howto mdi <Howto_mdi>` page for more information about how
LAMMPS can operate in either of these modes.

View File

@ -18,23 +18,52 @@ At zero temperature, it is easy to estimate these derivatives by
deforming the simulation box in one of the six directions using the
:doc:`change_box <change_box>` command and measuring the change in the
stress tensor. A general-purpose script that does this is given in the
examples/elastic directory described on the :doc:`Examples <Examples>`
examples/ELASTIC directory described on the :doc:`Examples <Examples>`
doc page.
Calculating elastic constants at finite temperature is more
challenging, because it is necessary to run a simulation that performs
time averages of differential properties. One way to do this is to
measure the change in average stress tensor in an NVT simulations when
time averages of differential properties. There are at least
3 ways to do this in LAMMPS. The most reliable way to do this is
by exploiting the relationship between elastic constants, stress
fluctuations, and the Born matrix, the second derivatives of energy
w.r.t. strain :ref:`(Ray) <Ray>`.
The Born matrix calculation has been enabled by
the :doc:`compute born/matrix <compute_born_matrix>` command,
which works for any bonded or non-bonded potential in LAMMPS.
The most expensive part of the calculation is the sampling of
the stress fluctuations. Several examples of this method are
provided in the examples/ELASTIC_T/BORN_MATRIX directory
described on the :doc:`Examples <Examples>` doc page.
A second way is to measure
the change in average stress tensor in an NVT simulations when
the cell volume undergoes a finite deformation. In order to balance
the systematic and statistical errors in this method, the magnitude of
the deformation must be chosen judiciously, and care must be taken to
fully equilibrate the deformed cell before sampling the stress
tensor. Another approach is to sample the triclinic cell fluctuations
tensor. An example of this method is provided in the
examples/ELASTIC_T/DEFORMATION directory
described on the :doc:`Examples <Examples>` doc page.
Another approach is to sample the triclinic cell fluctuations
that occur in an NPT simulation. This method can also be slow to
converge and requires careful post-processing :ref:`(Shinoda) <Shinoda1>`
converge and requires careful post-processing :ref:`(Shinoda) <Shinoda1>`.
We do not provide an example of this method.
A nice review of the advantages and disadvantages of all of these methods
is provided in the paper by Clavier et al. :ref:`(Clavier) <Clavier>`.
----------
.. _Ray:
**(Ray)** J. R. Ray and A. Rahman, J Chem Phys, 80, 4423 (1984).
.. _Shinoda1:
**(Shinoda)** Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
.. _Clavier:
**(Clavier)** G. Clavier, N. Desbiens, E. Bourasseau, V. Lachet, N. Brusselle-Dupend and B. Rousseau, Mol Sim, 43, 1413 (2017).

View File

@ -1,132 +1,163 @@
Using LAMMPS with the MDI library for code coupling
===================================================
.. note::
This Howto page will eventually replace the
:doc:`Howto client/server <Howto_client_server>` doc page.
Client/server coupling of two codes is where one code is the "client"
and sends request messages (data) to a "server" code. The server
responds to each request with a reply message. This enables the two
codes to work in tandem to perform a simulation. LAMMPS can act as
either a client or server code; it does this by using the `MolSSI
Driver Interface (MDI) library
<https://molssi-mdi.github.io/MDI_Library/html/index.html>`_,
Client/server coupling of two (or more) codes is where one code is the
"client" and sends request messages (data) to one (or more) "server"
code(s). A server responds to each request with a reply message
(data). This enables two (or more) codes to work in tandem to perform
a simulation. In this context, LAMMPS can act as either a client or
server code. It does this by using the `MolSSI Driver Interface (MDI)
library <https://molssi-mdi.github.io/MDI_Library/html/index.html>`_,
developed by the `Molecular Sciences Software Institute (MolSSI)
<https://molssi.org>`_.
<https://molssi.org>`_, which is supported by the :ref:`MDI <PKG-MDI>`
package.
Alternate methods for code coupling with LAMMPS are described on the
:doc:`Howto couple <Howto_couple>` doc page.
Some advantages of client/server coupling are that the two codes can run
Some advantages of client/server coupling are that the codes can run
as stand-alone executables; they need not be linked together. Thus
neither code needs to have a library interface. This also makes it easy
to run the two codes on different numbers of processors. If a message
protocol (format and content) is defined for a particular kind of
simulation, then in principle any code which implements the client-side
protocol can be used in tandem with any code which implements the
server-side protocol. Neither code needs to know what specific other
code it is working with.
neither code needs to have a library interface. This also makes it
easy to run the two codes on different numbers of processors. If a
message protocol (format and content) is defined for a particular kind
of simulation, then in principle any code which implements the
client-side protocol can be used in tandem with any code which
implements the server-side protocol. Neither code needs to know what
specific other code it is working with.
In MDI nomenclature, a client code is the "driver", and a server code is
an "engine". One driver code can communicate with one or more instances
of one or more engine codes. Driver and engine codes can be written in
any language: C, C++, Fortran, Python, etc.
In addition to allowing driver and engine(s) running to run as
stand-alone executables, MDI also enables a server code to be a
"plugin" to the client code. In this scenario, server code(s) are
compiled as shared libraries, and one (or more) instances of the
server are instantiated by the driver code. If the driver code runs
in parallel, it can split its MPI communicator into multiple
sub-communicators, and launch each plugin engine instance on a
sub-communicator. Driver processors in that sub-communicator exchange
messages with that engine instance, and can also send MPI messages to
other processors in the driver. The driver code can also destroy
engine instances and re-instantiate them.
In addition to allowing driver and engine(s) to run as stand-alone
executables, MDI also enables an engine to be a *plugin* to the client
code. In this scenario, server code(s) are compiled as shared
libraries, and one (or more) instances of the server are instantiated
by the driver code. If the driver code runs in parallel, it can split
its MPI communicator into multiple sub-communicators, and launch each
plugin engine instance on a sub-communicator. Driver processors
within that sub-communicator exchange messages with the corresponding
engine instance, and can also send MPI messages to other processors in
the driver. The driver code can also destroy engine instances and
re-instantiate them. LAMMPS can operate as either a stand-alone or
plugin MDI engine. When it operates as a driver, if can use either
stand-alone or plugin MDI engines.
The way that a driver communicates with an engine is by making
MDI_Send() and MDI_Recv() calls, which are conceptually similar to
MPI_Send() and MPI_Recv() calls. Each send or receive has a string
which identifies the command name, and optionally some data, which can
be a single value or vector of values of any data type. Inside the
MDI library, data is exchanged between the driver and engine via MPI
calls or sockets. This a run-time choice by the user.
The way in which an MDI driver communicates with an MDI engine is by
making MDI_Send() and MDI_Recv() calls, which are conceptually similar
to MPI_Send() and MPI_Recv() calls. Each send or receive operation
uses a string to identify the command name, and optionally some data,
which can be a single value or vector of values of any data type.
Inside the MDI library, data is exchanged between the driver and
engine via MPI calls or sockets. This a run-time choice by the user.
----------
The :ref:`MDI <PKG-MDI>` package provides a :doc:`mdi engine <mdi>`
command which enables LAMMPS to operate as an MDI engine. Its doc
page explains the variety of standard and custom MDI commands which
the LAMMPS engine recognizes and can respond to.
The package also provides a :doc:`mdi plugin <mdi>` command which
enables LAMMPS to operate as an MDI driver and load an MDI engine as a
plugin library.
The package also has a `fix mdi/qm <fix_mdi_qm>` command in which
LAMMPS operates as an MDI driver in conjunction with a quantum
mechanics code as an MDI engine. The post_force() method of the
fix_mdi_qm.cpp file shows how a driver issues MDI commands to another
code. This command can be used to couple to an MDI engine which is
either a stand-alone code or a plugin library.
As explained on the `fix mdi/qm <fix_mdi_qm>` command doc page, it can
be used to perform *ab initio* MD simulations or energy minimizations,
or to evaluate the quantum energy and forces for a series of
independent systems. The examples/mdi directory has example input
scripts for all of these use cases.
----------
The examples/mdi directory contains Python scripts and LAMMPS input
script which use LAMMPS as either an MDI driver or engine or both.
Currently, 5 example use cases are provided:
* Run ab initio MD (AIMD) using 2 instances of LAMMPS. As a driver
LAMMPS performs the timestepping in either NVE or NPT mode. As an
engine, LAMMPS computes forces and is a surrogate for a quantum
code.
* As a driver, LAMMPS runs an MD simulation. Every N steps it passes
the current snapshot to an MDI engine to evaluate the energy,
virial, and peratom forces. As the engine LAMMPS is a surrogate for
a quantum code.
* As a driver, LAMMPS loops over a series of data files and passes the
configuration to an MDI engine to evaluate the energy, virial, and
peratom forces. As the engine LAMMPS is a surrogate for a quantum
code.
* A Python script driver invokes a sequence of unrelated LAMMPS
calculations. Calculations can be single-point energy/force
evaluations, MD runs, or energy minimizations.
* Run AIMD with a Python driver code and 2 LAMMPS instances as
engines. The first LAMMPS instance performs MD timestepping. The
second LAMMPS instance acts as a surrogate QM code to compute
forces.
Note that in any of these example where LAMMPS is used as an engine,
an actual QM code (which supports MDI) could be used in its place,
without modifying the input scripts or launch commands, except to
specify the name of the QM code.
The examples/mdi/Run.sh file illustrates how to launch both driver and
engine codes so that they communicate using the MDI library via either
MPI or sockets. Or using the engine as a stand-alone code or plugin
library.
-------------
As an example, LAMMPS and the ``pw.x`` command from Quantum Espresso (a
suite of quantum DFT codes), can work together via the MDI library to
perform an ab initio MD (AIMD) simulation, where LAMMPS runs an MD
simulation and sends a message each timestep to ``pw.x`` asking it to
compute quantum forces on the current configuration of atoms. Here is
how the 2 codes are launched to communicate by MPI:
Currently there are at least two quantum DFT codes which have direct
MDI support, `Quantum ESPRESSO (QE)
<https://www.quantum-espresso.org/>`_ and `INQ
<https://qsg.llnl.gov/node/101.html>`_. There are also several QM
codes which have indirect support through QCEngine or i-PI. The
former means they require a wrapper program (QCEngine) with MDI
support which writes/read files to pass data to the quantum code
itself. The list of QCEngine-supported and i-PI-supported quantum
codes is on the `MDI webpage
<https://molssi-mdi.github.io/MDI_Library/html/index.html>`_.
Here is how to build QE as a stand-alone ``pw.x`` file which can be
used in stand-alone mode:
.. code-block:: bash
% mpirun -np 2 lmp_mpi -mdi "-role DRIVER -name d -method MPI" \
-in in.aimd : -np 16 pw.x -in qe.in -mdi "-role ENGINE -name e -method MPI"
% git clone --branch mdi_plugin https://github.com/MolSSI-MDI/q-e.git <base_path>/q-e
% build the executable pw.x, following the `QE build guide <https://gitlab.com/QEF/q-e/-/wikis/Developers/CMake-build-system>`_
In this case LAMMPS runs on 2 processors (MPI tasks), ``pw.x`` runs on 16
processors.
Here is how the 2 codes are launched to communicate by sockets:
Here is how to build QE as a shared library which can be used in plugin mode,
which results in a libqemdi.so file in <base_path>/q-e/MDI/src:
.. code-block:: bash
% mpirun -np 2 lmp_mpi -mdi "-role DRIVER -name d -method TCP -port 8021" -in in.aimd
% mpirun -np 16 pw.x -in qe.in -mdi "-role ENGINE -name e -method TCP -port 8021 -hostname localhost"
% git clone --branch mdi_plugin https://github.com/MolSSI-MDI/q-e.git <base_path>/q-e
% cd <base_path>/q-e
% ./configure --enable-parallel --enable-openmp --enable-shared FFLAGS="-fPIC" FCFLAGS="-fPIC" CFLAGS="-fPIC" foxflags="-fPIC" try_foxflags="-fPIC"
% make -j 4 mdi
These commands could be issued in different windows on a desktop
machine. Or in the same window, if the first command is ended with
"&" so as to run in the background. If "localhost" is replaced by an
IP address, ``pw.x`` could be run on another machine on the same network, or
even on another machine across the country.
INQ cannot be built as a stand-alone code; it is by design a library.
Here is how to build INQ as a shared library which can be used in
plugin mode, which results in a libinqmdi.so file in
<base_path>/inq/build/examples:
After both codes initialize themselves to model the same system, this is
what occurs each timestep:
.. code-block:: bash
* LAMMPS send a ">COORDS" message to ``pw.x`` with a 3*N vector of current atom coords
* ``pw.x`` receives the message/coords and computes quantum forces on all the atoms
* LAMMPS send a "<FORCES" message to ``pw.x`` and waits for the result
* ``pw.x`` receives the message (after its computation finishes) and sends a 3*N vector of forces
* LAMMPS receives the forces and time integrates to complete a single timestep
-------------
Examples scripts for using LAMMPS as an MDI engine are in the
examples/mdi directory. See the README file in that directory for
instructions on how to run the examples.
.. note::
Work is underway to add commands that allow LAMMPS to be used as an
MDI driver, e.g. for the AIMD example discussed above. Example
scripts for this usage mode will be added the same directory when
available.
If LAMMPS is used as a stand-alone engine it should set up the system
it will be modeling in its input script, then invoke the
:doc:`mdi/engine <mdi_engine>` command. This will put LAMMPS into
"engine mode" where it waits for messages and data from the driver.
When the driver sends an "EXIT" command, LAMMPS will exit engine mode
and the input script will continue.
If LAMMPS is used as a plugin engine it operates the same way, except
that the driver will pass LAMMPS an input script to initialize itself.
Upon receiving the "EXIT" command, LAMMPS will exit engine mode and the
input script will continue. After finishing execution of the input
script, the instance of LAMMPS will be destroyed.
LAMMPS supports the full set of MD-appropriate engine commands defined
by the MDI library. See the :doc:`mdi/engine <mdi_engine>` page for
a list of these.
If those commands are not sufficient for a user-developed driver to use
LAMMPS as an engine, then new commands can be easily added. See these
two files which implement the definition of MDI commands and the logic
for responding to them:
* src/MDI/mdi_engine.cpp
* src/MDI/fix_mdi_engine.cpp
% git clone --branch mdi --recurse-submodules https://gitlab.com/taylor-a-barnes/inq.git <base_path>/inq
% cd <base_path>/inq
% mkdir -p build
% cd build
% ../configure --prefix=<install_path>/install
% make -j 4
% make install

View File

@ -19,7 +19,7 @@ atoms and the water molecule to run a rigid SPC model.
| LJ :math:`\sigma` of OO = 3.166
| LJ :math:`\epsilon`, :math:`\sigma` of OH, HH = 0.0
| :math:`r_0` of OH bond = 1.0
| :math:`\theta` of HOH angle = 109.47\ :math:`^{\circ}`
| :math:`\theta_0` of HOH angle = 109.47\ :math:`^{\circ}`
|
Note that as originally proposed, the SPC model was run with a 9

View File

@ -55,6 +55,9 @@ JSON
YAML format thermo_style output
===============================
Extracting data from log file
-----------------------------
.. versionadded:: 24Mar2022
LAMMPS supports the thermo style "yaml" and for "custom" style
@ -66,7 +69,7 @@ the following style:
.. code-block:: yaml
---
keywords: [Step, Temp, E_pair, E_mol, TotEng, Press, ]
keywords: ['Step', 'Temp', 'E_pair', 'E_mol', 'TotEng', 'Press', ]
data:
- [100, 0.757453103239935, -5.7585054860159, 0, -4.62236133677021, 0.207261053624721, ]
- [110, 0.759322359337036, -5.7614668389562, 0, -4.62251889318624, 0.194314975399602, ]
@ -79,6 +82,10 @@ This data can be extracted and parsed from a log file using python with:
.. code-block:: python
import re, yaml
try:
from yaml import CSafeLoader as Loader
except ImportError:
from yaml import SafeLoader as Loader
docs = ""
with open("log.lammps") as f:
@ -86,7 +93,7 @@ This data can be extracted and parsed from a log file using python with:
m = re.search(r"^(keywords:.*$|data:$|---$|\.\.\.$| - \[.*\]$)", line)
if m: docs += m.group(0) + '\n'
thermo = list(yaml.load_all(docs, Loader=yaml.SafeLoader))
thermo = list(yaml.load_all(docs, Loader=Loader))
print("Number of runs: ", len(thermo))
print(thermo[1]['keywords'][4], ' = ', thermo[1]['data'][2][4])
@ -105,6 +112,135 @@ of that run:
Number of runs: 2
TotEng = -4.62140097780047
.. versionadded:: 4May2022
YAML format output has been added to multiple commands in LAMMPS,
for example :doc:`dump yaml <dump>` or :doc:`fix ave/time <fix_ave_time>`
Depending on the kind of data being written, organization of the data
or the specific syntax used may change, but the principles are very
similar and all files should be readable with a suitable YAML parser.
Processing scalar data with Python
----------------------------------
.. figure:: JPG/thermo_bondeng.png
:figwidth: 33%
:align: right
After reading and parsing the YAML format data, it can be easily
imported for further processing and visualization with the `pandas
<https://pandas.pydata.org/>`_ and `matplotlib
<https://matplotlib.org/>`_ Python modules. Because of the organization
of the data in the YAML format thermo output, it needs to be told to
process only the 'data' part of the imported data to create a pandas
data frame, and one needs to set the column names from the 'keywords'
entry. The following Python script code example demonstrates this, and
creates the image shown on the right of a simple plot of various bonded
energy contributions versus the timestep from a run of the 'peptide'
example input after changing the :doc:`thermo style <thermo_style>` to
'yaml'. The properties to be used for x and y values can be
conveniently selected through the keywords. Please note that those
keywords can be changed to custom strings with the :doc:`thermo_modify
colname <thermo_modify>` command.
.. code-block:: python
import re, yaml
import pandas as pd
import matplotlib.pyplot as plt
try:
from yaml import CSafeLoader as Loader
except ImportError:
from yaml import SafeLoader as Loader
docs = ""
with open("log.lammps") as f:
for line in f:
m = re.search(r"^(keywords:.*$|data:$|---$|\.\.\.$| - \[.*\]$)", line)
if m: docs += m.group(0) + '\n'
thermo = list(yaml.load_all(docs, Loader=Loader))
df = pd.DataFrame(data=thermo[0]['data'], columns=thermo[0]['keywords'])
fig = df.plot(x='Step', y=['E_bond', 'E_angle', 'E_dihed', 'E_impro'], ylabel='Energy in kcal/mol')
plt.savefig('thermo_bondeng.png')
Processing vector data with Python
----------------------------------
Global *vector* data as produced by :doc:`fix ave/time <fix_ave_time>`
uses a slightly different organization of the data. You still have the
dictionary keys 'keywords' and 'data' for the column headers and the
data. But the data is a dictionary indexed by the time step and for
each step there are multiple rows of values each with a list of the
averaged properties. This requires a slightly different processing,
since the entire data cannot be directly imported into a single pandas
DataFrame class instance. The following Python script example
demonstrates how to read such data. The result will combine the data
for the different steps into one large "multi-index" table. The pandas
IndexSlice class can then be used to select data from this combined data
frame.
.. code-block:: python
import yaml
import pandas as pd
try:
from yaml import CSafeLoader as Loader
except ImportError:
from yaml import SafeLoader as Loader
with open("ave.yaml") as f:
ave = yaml.load(f, Loader=Loader)
keys = ave['keywords']
df = {}
for k in ave['data'].keys():
df[k] = pd.DataFrame(data=ave['data'][k], columns=keys)
# create multi-index data frame
df = pd.concat(df)
# output only the first 3 value for steps 200 to 300 of the column Pressure
idx = pd.IndexSlice
print(df['Pressure'].loc[idx[200:300, 0:2]])
Processing scalar data with Perl
--------------------------------
The ease of processing YAML data is not limited to Python. Here is an
example for extracting and processing a LAMMPS log file with Perl instead.
.. code-block:: perl
use YAML::XS;
open(LOG, "log.lammps") or die("could not open log.lammps: $!");
my $file = "";
while(my $line = <LOG>) {
if ($line =~ /^(keywords:.*$|data:$|---$|\.\.\.$| - \[.*\]$)/) {
$file .= $line;
}
}
close(LOG);
# convert YAML to perl as nested hash and array references
my $thermo = Load $file;
# convert references to real arrays
my @keywords = @{$thermo->{'keywords'}};
my @data = @{$thermo->{'data'}};
# print first two columns
print("$keywords[0] $keywords[1]\n");
foreach (@data) {
print("${$_}[0] ${$_}[1]\n");
}
Writing continuous data during a simulation
===========================================

View File

@ -68,7 +68,8 @@ liquid Ar via the GK formalism:
# Sample LAMMPS input script for viscosity of liquid Ar
units real
variable T equal 86.4956
variable T equal 200.0 # run temperature
variable Tinit equal 250.0 # equilibration temperature
variable V equal vol
variable dt equal 4.0
variable p equal 400 # correlation length
@ -99,12 +100,14 @@ liquid Ar via the GK formalism:
# equilibration and thermalization
velocity all create $T 102486 mom yes rot yes dist gaussian
fix NVT all nvt temp $T $T 10 drag 0.2
velocity all create ${Tinit} 102486 mom yes rot yes dist gaussian
fix NVT all nvt temp ${Tinit} ${Tinit} 10 drag 0.2
run 8000
# viscosity calculation, switch to NVE if desired
velocity all create $T 102486 mom yes rot yes dist gaussian
fix NVT all nvt temp $T $T 10 drag 0.2
#unfix NVT
#fix NVE all nve
@ -122,7 +125,7 @@ liquid Ar via the GK formalism:
run 100000
variable v equal (v_v11+v_v22+v_v33)/3.0
variable ndens equal count(all)/vol
print "average viscosity: $v [Pa.s] @ $T K, ${ndens} /A^3"
print "average viscosity: $v [Pa.s] @ $T K, ${ndens} atoms/A^3"
The fifth method is related to the above Green-Kubo method,
but uses the Einstein formulation, analogous to the Einstein
@ -131,9 +134,9 @@ time-integrated momentum fluxes play the role of Cartesian
coordinates, whose mean-square displacement increases linearly
with time at sufficiently long times.
The sixth is periodic perturbation method. It is also a non-equilibrium MD method.
However, instead of measure the momentum flux in response of applied velocity gradient,
it measures the velocity profile in response of applied stress.
The sixth is the periodic perturbation method, which is also a non-equilibrium MD method.
However, instead of measuring the momentum flux in response to an applied velocity gradient,
it measures the velocity profile in response to applied stress.
A cosine-shaped periodic acceleration is added to the system via the
:doc:`fix accelerate/cos <fix_accelerate_cos>` command,
and the :doc:`compute viscosity/cos<compute_viscosity_cos>` command is used to monitor the

View File

@ -3,10 +3,20 @@ Install LAMMPS
You can download LAMMPS as an executable or as source code.
With source code, you also have to :doc:`build LAMMPS <Build>`. But you
have more flexibility as to what features to include or exclude in the
build. If you plan to :doc:`modify or extend LAMMPS <Modify>`, then you
need the source code.
When downloading the LAMMPS source code, you also have to :doc:`build
LAMMPS <Build>`. But you have more flexibility as to what features to
include or exclude in the build. When you download and install
pre-compiled LAMMPS executables, you are limited to install which
version of LAMMPS is available and which features are included of these
builds. If you plan to :doc:`modify or extend LAMMPS <Modify>`, then
you **must** build LAMMPS from the source code.
.. note::
If you have questions about the pre-compiled LAMMPS executables, you
need to contact the people preparing those executables. The LAMMPS
developers have no control over their choices of how they configure
and build their packages and when they update them.
.. toctree::
:maxdepth: 1

View File

@ -38,3 +38,10 @@ up the Conda capability.
.. _openkim: https://openkim.org
.. _conda: https://docs.conda.io/en/latest/index.html
.. _mini_conda_install: https://docs.conda.io/en/latest/miniconda.html
.. note::
If you have questions about these pre-compiled LAMMPS executables,
you need to contact the people preparing those packages. The LAMMPS
developers have no control over their choices of how they configure
and build their packages and when they update them.

View File

@ -3,13 +3,19 @@ Download an executable for Linux
Binaries are available for different versions of Linux:
| :ref:`Pre-built Ubuntu Linux executables <ubuntu>`
| :ref:`Pre-built Fedora Linux executables <fedora>`
| :ref:`Pre-built EPEL Linux executables (RHEL, CentOS) <epel>`
| :ref:`Pre-built OpenSuse Linux executables <opensuse>`
| :ref:`Gentoo Linux executable <gentoo>`
| :ref:`Arch Linux build-script <arch>`
|
- :ref:`Pre-built Ubuntu Linux executables <ubuntu>`
- :ref:`Pre-built Fedora Linux executables <fedora>`
- :ref:`Pre-built EPEL Linux executables (RHEL, CentOS) <epel>`
- :ref:`Pre-built OpenSuse Linux executables <opensuse>`
- :ref:`Gentoo Linux executable <gentoo>`
- :ref:`Arch Linux build-script <arch>`
.. note::
If you have questions about these pre-compiled LAMMPS executables,
you need to contact the people preparing those packages. The LAMMPS
developers have no control over their choices of how they configure
and build their packages and when they update them.
----------
@ -18,41 +24,28 @@ Binaries are available for different versions of Linux:
Pre-built Ubuntu Linux executables
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A pre-built LAMMPS executable suitable for running on the latest
Ubuntu Linux versions, can be downloaded as a Debian package. This
allows you to install LAMMPS with a single command, and stay
up-to-date with the current stable version of LAMMPS by simply updating
your operating system. Please note, that the repository below offers
two LAMMPS packages, ``lammps-daily`` and ``lammps-stable``. The
LAMMPS developers recommend to use the ``lammps-stable`` package for
any production simulations. The ``lammps-daily`` package is built
from the LAMMPS development sources, and those versions may have known
issues and bugs when new features are added and the software has not
undergone full release testing.
To install the appropriate personal-package archives (PPAs), do the
following once:
.. code-block:: bash
$ sudo add-apt-repository ppa:gladky-anton/lammps
$ sudo add-apt-repository ppa:openkim/latest
$ sudo apt-get update
A pre-built LAMMPS executable suitable for running on the latest Ubuntu
Linux versions, can be downloaded as a Debian package. This allows you
to install LAMMPS with a single command, and stay (mostly) up-to-date
with the current stable version of LAMMPS by simply updating your
operating system.
To install LAMMPS do the following once:
.. code-block:: bash
$ sudo apt-get install lammps-stable
$ sudo apt-get install lammps
This downloads an executable named ``lmp_stable`` to your box, which
can then be used in the usual way to run input scripts:
This downloads an executable named ``lmp`` to your box and multiple
packages with supporting data, examples and libraries as well as any
missing dependencies. This executable can then be used in the usual way
to run input scripts:
.. code-block:: bash
$ lmp_stable -in in.lj
$ lmp -in in.lj
To update LAMMPS to the most current stable version, do the following:
To update LAMMPS to the latest packaged version, do the following:
.. code-block:: bash
@ -60,44 +53,24 @@ To update LAMMPS to the most current stable version, do the following:
which will also update other packages on your system.
To get a copy of the current documentation and examples:
.. code-block:: bash
$ sudo apt-get install lammps-stable-doc
which will download the doc files in
``/usr/share/doc/lammps-stable-doc/doc`` and example problems in
``/usr/share/doc/lammps-doc/examples``.
To get a copy of the current potentials files:
.. code-block:: bash
$ sudo apt-get install lammps-stable-data
which will download the potentials files to
``/usr/share/lammps-stable/potentials``. The ``lmp_stable`` binary is
hard-coded to look for potential files in this directory (it does not
use the ``LAMMPS_POTENTIALS`` environment variable, as described
in :doc:`pair_coeff <pair_coeff>` command).
The ``lmp_stable`` binary is built with the :ref:`KIM package <kim>` which
results in the above command also installing the ``kim-api`` binaries when LAMMPS
is installed. In order to use potentials from `openkim.org <openkim_>`_, you
can install the ``openkim-models`` package
The ``lmp`` binary is built with the :ref:`KIM package <kim>` included,
which results in the above command also installing the ``kim-api``
binaries when LAMMPS is installed. In order to use potentials from
`openkim.org <openkim_>`_, you can also install the ``openkim-models``
package
.. code-block:: bash
$ sudo apt-get install openkim-models
Or use the KIM-API commands to download and install individual models.
To un-install LAMMPS, do the following:
.. code-block:: bash
$ sudo apt-get remove lammps-stable
$ sudo apt-get remove lammps
Please use ``lmp_stable -help`` to see which compilation options, packages,
Please use ``lmp -help`` to see which compilation options, packages,
and styles are included in the binary.
Thanks to Anton Gladky (gladky.anton at gmail.com) for setting up this
@ -110,21 +83,21 @@ Ubuntu package capability.
Pre-built Fedora Linux executables
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Pre-built LAMMPS packages for stable releases are available
in the Fedora Linux distribution as of version 28. The packages
can be installed via the dnf package manager. There are 3 basic
varieties (lammps = no MPI, lammps-mpich = MPICH MPI library,
lammps-openmpi = OpenMPI MPI library) and for each support for
linking to the C library interface (lammps-devel, lammps-mpich-devel,
lammps-openmpi-devel), the header for compiling programs using
the C library interface (lammps-headers), and the LAMMPS python
module for Python 3. All packages can be installed at the same
time and the name of the LAMMPS executable is ``lmp`` and ``lmp_openmpi``
or ``lmp_mpich`` respectively. By default, ``lmp`` will refer to the
serial executable, unless one of the MPI environment modules is loaded
(``module load mpi/mpich-x86_64`` or ``module load mpi/openmpi-x86_64``).
Then the corresponding parallel LAMMPS executable can be used.
The same mechanism applies when loading the LAMMPS python module.
Pre-built LAMMPS packages for stable releases are available in the
Fedora Linux distribution as of Fedora version 28. The packages can be
installed via the dnf package manager. There are 3 basic varieties
(lammps = no MPI, lammps-mpich = MPICH MPI library, lammps-openmpi =
OpenMPI MPI library) and for each support for linking to the C library
interface (lammps-devel, lammps-mpich-devel, lammps-openmpi-devel), the
header for compiling programs using the C library interface
(lammps-headers), and the LAMMPS python module for Python 3. All
packages can be installed at the same time and the name of the LAMMPS
executable is ``lmp`` and ``lmp_openmpi`` or ``lmp_mpich`` respectively.
By default, ``lmp`` will refer to the serial executable, unless one of
the MPI environment modules is loaded (``module load mpi/mpich-x86_64``
or ``module load mpi/openmpi-x86_64``). Then the corresponding parallel
LAMMPS executable can be used. The same mechanism applies when loading
the LAMMPS python module.
To install LAMMPS with OpenMPI and run an input ``in.lj`` with 2 CPUs do:
@ -273,3 +246,10 @@ Alternatively, you may use an AUR helper to install these packages.
Note that the AUR provides build-scripts that download the source and
the build the package on your machine.
.. note::
It looks like the Arch Linux AUR repository build scripts for LAMMPS
have not been updated since the 29 October 2020 version. You may want
to consider installing a more current version of LAMMPS from source
directly.

View File

@ -5,7 +5,7 @@ LAMMPS can be downloaded, built, and configured for OS X on a Mac with
`Homebrew <homebrew_>`_. (Alternatively, see the install instructions for
:doc:`Download an executable via Conda <Install_conda>`.) The following LAMMPS
packages are unavailable at this time because of additional needs not yet met:
GPU, KOKKOS, LATTE, MSCG, MESSAGE, MPIIO POEMS VORONOI.
GPU, KOKKOS, LATTE, MSCG, MPIIO, POEMS, VORONOI.
After installing Homebrew, you can install LAMMPS on your system with
the following commands:

View File

@ -6,7 +6,7 @@ of the `LAMMPS website <lws_>`_.
.. _download: https://www.lammps.org/download.html
.. _bug: https://www.lammps.org/bug.html
.. _older: https://www.lammps.org/tars
.. _older: https://download.lammps.org/tars/
.. _lws: https://www.lammps.org
You have two choices of tarballs, either the most recent stable

View File

@ -30,12 +30,12 @@ initial versions of LAMMPS is:
`S. Plimpton, Fast Parallel Algorithms for Short-Range Molecular Dynamics, J Comp Phys, 117, 1-19 (1995). <http://www.sandia.gov/~sjplimp/papers/jcompphys95.pdf>`_
DOI for the LAMMPS code
^^^^^^^^^^^^^^^^^^^^^^^
DOI for the LAMMPS source code
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
LAMMPS developers use the `Zenodo service at CERN <https://zenodo.org/>`_
to create digital object identifies (DOI) for stable releases of the
LAMMPS source code. There are two types of DOIs for the LAMMPS source code.
The LAMMPS developers use the `Zenodo service at CERN <https://zenodo.org/>`_
to create digital object identifiers (DOI) for stable releases of the
LAMMPS source code. There are two types of DOIs for the LAMMPS source code.
The canonical DOI for **all** versions of LAMMPS, which will always
point to the **latest** stable release version is:
@ -46,7 +46,7 @@ In addition there are DOIs for individual stable releases. Currently there are:
- 3 March 2020 version: `DOI:10.5281/zenodo.3726417 <https://dx.doi.org/10.5281/zenodo.3726417>`_
- 29 October 2020 version: `DOI:10.5281/zenodo.4157471 <https://dx.doi.org/10.5281/zenodo.4157471>`_
- 29 September 2021 version: `DOI:10.5281/zenodo.6386596 <https//dx.doi.org/10.5281/zenodo.6386596>`_
Home page
^^^^^^^^^

View File

@ -20,7 +20,6 @@ available online are listed below.
* `Glossary of terms relevant to LAMMPS <https://www.lammps.org/glossary.html>`_
* `LAMMPS highlights with images <https://www.lammps.org/pictures.html>`_
* `LAMMPS highlights with movies <https://www.lammps.org/movies.html>`_
* `Mailing list <https://www.lammps.org/mail.html>`_
* `LAMMPS forum <https://www.lammps.org/forum.html>`_
* `Workshops <https://www.lammps.org/workshops.html>`_
* `Tutorials <https://www.lammps.org/tutorials.html>`_

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -14,11 +14,11 @@ LAMMPS is an open-source code, distributed freely under the terms of
the GNU Public License Version 2 (GPLv2).
The `LAMMPS website <lws_>`_ has a variety of information about the
code. It includes links to an on-line version of this manual, a
`mailing list <https://www.lammps.org/mail.html>`_ and
`online forum <https://www.lammps.org/forum.html>`_ where users can
post questions, and a `GitHub site <https://github.com/lammps/lammps>`_
where all LAMMPS development is coordinated.
code. It includes links to an on-line version of this manual, an
`online forum <https://www.lammps.org/forum.html>`_ where users can post
questions and discuss LAMMPS, and a `GitHub site
<https://github.com/lammps/lammps>`_ where all LAMMPS development is
coordinated.
----------
@ -110,6 +110,7 @@ Command Reference
angles
dihedrals
impropers
dumps
fix_modify_atc_commands
Bibliography

View File

@ -9,34 +9,34 @@ A new atom style can be created if one of the existing atom styles
does not define all the attributes you need to store and communicate
with atoms.
Atom_vec_atomic.cpp is the simplest example of an atom style.
The file ``atom_vec_atomic.cpp`` is the simplest example of an atom style.
Examining the code for others will make these instructions more clear.
Note that the :doc:`atom style hybrid <atom_style>` command can be
used to define atoms or particles which have the union of properties
of individual styles. Also the :doc:`fix property/atom <fix_property_atom>`
command can be used to add a single property (e.g. charge
or a molecule ID) to a style that does not have it. It can also be
used to add custom properties to an atom, with options to communicate
them with ghost atoms or read them from a data file. Other LAMMPS
commands can access these custom properties, as can new pair, fix,
compute styles that are written to work with these properties. For
Note that the :doc:`atom style hybrid <atom_style>` command can be used
to define atoms or particles which have the union of properties of
individual styles. Also the :doc:`fix property/atom
<fix_property_atom>` command can be used to add a single property
(e.g. charge or a molecule ID) to a style that does not have it. It can
also be used to add custom properties to an atom, with options to
communicate them with ghost atoms or read them from a data file. Other
LAMMPS commands can access these custom properties, as can new pair,
fix, compute styles that are written to work with these properties. For
example, the :doc:`set <set>` command can be used to set the values of
custom per-atom properties from an input script. All of these methods
are less work than writing code for a new atom style.
are less work than writing and testing(!) code for a new atom style.
If you follow these directions your new style will automatically work
in tandem with others via the :doc:`atom_style hybrid <atom_style>`
command.
The first step is to define a set of strings in the constructor of the
new derived class. Each string will have zero or more space-separated
variable names which are identical to those used in the atom.h header
file for per-atom properties. Note that some represent per-atom
The first step is to define a set of string lists in the constructor of
the new derived class. Each list will have zero or more comma-separated
strings that correspond to the variable names used in the ``atom.h``
header file for per-atom properties. Note that some represent per-atom
vectors (q, molecule) while other are per-atom arrays (x,v). For all
but the last 2 strings you do not need to specify any of
but the last two lists you do not need to specify any of
(id,type,x,v,f). Those are included automatically as needed in the
other strings.
other lists.
.. list-table::
@ -65,16 +65,16 @@ other strings.
* - fields_data_vel
- list of properties (in order) in the Velocities section of a data file, as read by :doc:`read_data <read_data>`
In these strings you can list variable names which LAMMPS already
defines (in some other atom style), or you can create new variable
names. You should not re-use a LAMMPS variable for something with
different meaning in your atom style. If the meaning is related, but
interpreted differently by your atom style, then using the same
variable name means a user should not use your style and the other
style together in a :doc:`atom_style hybrid <atom_style>` command.
Because there will only be one value of the variable and different
parts of LAMMPS will then likely use it differently. LAMMPS has
no way of checking for this.
In these lists you can list variable names which LAMMPS already defines
(in some other atom style), or you can create new variable names. You
should not re-use a LAMMPS variable in your atom style that is used for
something with a different meaning in another atom style. If the
meaning is related, but interpreted differently by your atom style, then
using the same variable name means a user must not use your style and
the other style together in a :doc:`atom_style hybrid <atom_style>`
command. Because there will only be one value of the variable and
different parts of LAMMPS will then likely use it differently. LAMMPS
has no way of checking for this.
If you are defining new variable names then make them descriptive and
unique to your new atom style. For example choosing "e" for energy is
@ -85,32 +85,31 @@ If any of the variable names in your new atom style do not exist in
LAMMPS, you need to add them to the src/atom.h and atom.cpp files.
Search for the word "customize" or "customization" in these 2 files to
see where to add your variable. Adding a flag to the 2nd
customization section in atom.h is only necessary if your code (e.g. a
pair style) needs to check that a per-atom property is defined. These
flags should also be set in the constructor of the atom style child
class.
see where to add your variable. Adding a flag to the 2nd customization
section in ``atom.h`` is only necessary if your code (e.g. a pair style)
needs to check that a per-atom property is defined. These flags should
also be set in the constructor of the atom style child class.
In atom.cpp, aside from the constructor and destructor, there are 3
In ``atom.cpp``, aside from the constructor and destructor, there are 3
methods that a new variable name or flag needs to be added to.
In Atom::peratom_create() when using the add_peratom() method, a
final length argument of 0 is for per-atom vectors, a length > 1 is
for per-atom arrays. Note the use of an extra per-thread flag and the
add_peratom_vary() method when last dimension of the array is
In ``Atom::peratom_create()`` when using the ``Atom::add_peratom()``
method, a cols argument of 0 is for per-atom vectors, a length >
1 is for per-atom arrays. Note the use of the extra per-thread flag and
the add_peratom_vary() method when last dimension of the array is
variable-length.
Adding the variable name to Atom::extract() enable the per-atom data
Adding the variable name to Atom::extract() enables the per-atom data
to be accessed through the :doc:`LAMMPS library interface
<Howto_library>` by a calling code, including from :doc:`Python
<Python_head>`.
The constructor of the new atom style will also typically set a few
flags which are defined at the top of atom_vec.h. If these are
flags which are defined at the top of ``atom_vec.h``. If these are
unclear, see how other atom styles use them.
The grow_pointers() method is also required to make
a copy of peratom data pointers, as explained in the code.
The grow_pointers() method is also required to make a copy of peratom
data pointers, as explained in the code.
There are a number of other optional methods which your atom style can
implement. These are only needed if you need to do something

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