Compare commits

...

626 Commits

Author SHA1 Message Date
7a00ec90e5 Merge pull request #2134 from akohlmey/next_lammps_version
Update version strings for next patch release
2020-06-15 18:20:17 -04:00
a598a66eda Merge pull request #2157 from akohlmey/use-clang-format-demo
Demonstrate use of clang-format in LAMMPS
2020-06-15 17:55:42 -04:00
30100d33c6 get rid of tabs and trailing whitespace 2020-06-15 17:37:45 -04:00
3abbf57146 remove executable permissions on files that should not have them 2020-06-15 17:34:21 -04:00
fd8cfed86d fix typo 2020-06-15 17:33:50 -04:00
05319cae66 updates for using {fmt} and reordering of include statements exposing hidden includes 2020-06-15 16:55:38 -04:00
05d1924d62 update for using {fmt} 2020-06-15 16:48:20 -04:00
14c22a004a Merge branch 'master' into use-clang-format-demo
# Conflicts:
#	unittest/force-styles/pair_style.cpp
#	unittest/utils/test_utils.cpp
2020-06-15 16:14:13 -04:00
4a3d9afb54 Merge pull request #2154 from rbberger/coding_standard
Add utilities for checking code
2020-06-15 15:32:35 -04:00
65ff6bb617 Require clang-format >= 8.0 2020-06-15 14:59:43 -04:00
c987dfb2c9 Merge pull request #2156 from akohlmey/collected-small-changes
Collected changes for the next patch release
2020-06-15 14:40:27 -04:00
e083416dd8 Merge pull request #2159 from akohlmey/potential-unit-tag
Add a units consistency check by adding a UNITS: tag to potential files.
2020-06-15 13:55:20 -04:00
0ca7270668 re-enable USER-MESONT package for MinGW cross compilation 2020-06-15 13:47:16 -04:00
0199e369fa work around race condition and minimizing download attemps for transparently downloaded potential files 2020-06-15 13:46:54 -04:00
868e5450db Merge branch 'patch-1' of github.com:cjknight/lammps into collected-small-changes 2020-06-15 12:13:25 -04:00
9aee8d41bd Merge branch 'master' into collected-small-changes 2020-06-15 12:12:45 -04:00
71c075e0e4 Update atom_vec_sph.cpp
Looks like one 'de' wasn't renamed to 'desph' in recent commit.
2020-06-15 10:55:18 -05:00
70e809895f Merge pull request #1873 from iafoss/feature-cnt
Tubular potential force field package for carbon nanotubes
2020-06-15 11:41:56 -04:00
419ebd74fe Merge pull request #2155 from akohlmey/gmake-makefile-improvements
Portability improvement for src/Makefile
2020-06-15 11:35:11 -04:00
e840fa23f1 Add format-tests target 2020-06-15 11:21:43 -04:00
57eab1f785 USER-MESONT fails to download with Win64 for some strange reason. disabling from mingw preset for now 2020-06-15 11:12:55 -04:00
b5ee87697a workaround for GNU Fortran 10 and later when compiling downloaded ScaFaCoS lib 2020-06-15 10:59:32 -04:00
12b379df36 improve MEAM file detection in pair_coeff command, get rid of ERRFMT() 2020-06-15 08:18:11 -04:00
a7e2cc3320 initialize _need_tag differently. 2020-06-14 23:14:22 -04:00
59dcf2d7f9 make sure _need_tag in intel buffers is always initialized for all precision settings 2020-06-14 21:40:29 -04:00
b067880803 update code owners 2020-06-14 20:11:31 -04:00
753e2b00cf potential file metadata may only be in the first line of a file. 2020-06-14 19:59:17 -04:00
b3a99f3165 add and document new "download" preset 2020-06-14 19:50:14 -04:00
149571873f avoid illegal read after delete 2020-06-14 19:35:09 -04:00
2f5587da53 use std::string.empty() instead of comparing to "" 2020-06-14 17:25:20 -04:00
2a25fe16e7 fix delete[] vs. free() issue with pair styles eam/fs, eam/alloy, eim 2020-06-14 17:23:42 -04:00
7d9e0076c7 update some test yaml files 2020-06-14 17:01:28 -04:00
8736565977 document the use and generation of "DATE:" and "UNITS:" tags 2020-06-14 14:41:04 -04:00
5abfcde3f7 make subheaders and typesetting more consistent 2020-06-14 12:41:19 -04:00
4042b836c2 enable full c++11 in colvars, same as LAMMPS 2020-06-14 12:18:51 -04:00
b587500b19 update false positives 2020-06-14 11:56:24 -04:00
083fe85b68 import updates to the manual from the progguide branch 2020-06-14 11:25:02 -04:00
a8c0e8d30a FERMI GPU hardware is no longer supported by CUDA drivers and toolkit 2020-06-14 11:05:29 -04:00
3083306dbc remove obsolete inputs and logs 2020-06-14 11:04:00 -04:00
d2404cc88e replace more potentials with symlinks 2020-06-14 11:02:41 -04:00
78117205ce make He table potentials canonical and add UNITS: tag 2020-06-14 10:46:56 -04:00
21e34c5c76 Merge branch 'small-typo' of github.com:aatxutegi/lammps into collected-small-changes 2020-06-14 10:36:06 -04:00
03bf678e70 Small type at the Z rotation matrix member 2020-06-14 16:02:50 +02:00
7077db7eec update contributing guidelines to mention creating unit tests and regression test data. add checkbox to pull request template 2020-06-14 08:16:51 -04:00
c1d61edbcf Add unit style consistency check to pair_write and bond_write commands.
When a new table file is created, a line with DATE: and UNITS: tags is added
When a table is appended to an existing file, the DATE: is printed and the UNITS: tag is checked for consistency
The command aborts with an error, if the units do not match.
2020-06-14 07:56:39 -04:00
758d73e63d add UNITS: tag to a bunch more potential files 2020-06-14 07:02:55 -04:00
f0fadc1342 document UNITS: tag 2020-06-14 06:44:29 -04:00
41e050aa8a apply UNITS: tag to a whole bunch of potential files 2020-06-14 06:44:19 -04:00
2e844971a8 extend PotentialFileReader class to check for a UNITS: tag and error out if it doesn't match the current units 2020-06-14 06:23:49 -04:00
0481184862 add utility function to get the units tag value from a potential file 2020-06-14 06:22:47 -04:00
9b0213f1ab small CMake tweaks from progguide branch 2020-06-13 12:03:50 -04:00
daae6ea97f whitespace fix 2020-06-13 11:24:17 -04:00
8739067593 implement method to pass command line flags to test programs when run through ctest
based on the suggestion at: https://stackoverflow.com/questions/28812533/how-to-pass-command-line-arguments-in-ctest-at-runtime
but customized for the force-style tests
2020-06-13 11:19:56 -04:00
49982e22bf Add check for permissions 2020-06-13 09:54:12 -04:00
fcd3e9a3f9 Make quiet Python 3 check 2020-06-13 08:40:27 -04:00
0e708469b6 add unittest for ErrorStats class 2020-06-13 02:49:12 -04:00
d5d28bcbd2 use fmt::format() for error_stats output. 2020-06-13 02:11:21 -04:00
9c3d108bbc enable aligning consecutive assignments 2020-06-13 02:05:13 -04:00
3db944decc apply clang-format settings to the c++ sources in the unittest tree 2020-06-13 01:54:58 -04:00
4d62ea98cf add clang-format configuration file for the unittest tree 2020-06-13 01:51:16 -04:00
e006286603 rather than forcing tcp communication for OpenMPI, we disable infiniband instead for better stability of tests 2020-06-13 01:40:53 -04:00
00ebbb311a whitespace fixes 2020-06-13 01:40:34 -04:00
8d5452d653 must use fabs() instead of abs() on floating point values. update cauchystat example logs 2020-06-13 01:39:55 -04:00
ec6d3586ce require at least python 3.5 for building docs and import CMake improvements from progguide branch 2020-06-13 01:20:24 -04:00
e9a9c7e53d avoid using $(shell...) in master makefile thus execute faster and become independent of shell commands 2020-06-13 00:29:11 -04:00
dfc250339e move release date (again) 2020-06-12 23:49:47 -04:00
cf5fa3959c Add first version of whitespace utility 2020-06-12 21:52:51 -04:00
d84b4a3fff Merge pull request #2152 from stanmoore1/kk_snap_mem
Remove unnecessary memory allocation in Kokkos PairSNAP
2020-06-12 15:28:28 -04:00
49556edd50 Remove unnecessary allocation 2020-06-12 12:39:03 -06:00
497e30af82 fully integrate and update USER-MESONT docs. Add notes about C++ pair style and download of potential files 2020-06-12 09:02:56 -04:00
92d54d2764 not portable to use "mpi" 2020-06-12 09:01:59 -04:00
e52a05f525 whitespace fixes 2020-06-12 08:26:25 -04:00
e3f8af6cec Merge remote-tracking branch 'github/master' into feature-cnt 2020-06-12 08:25:52 -04:00
0c23fcae91 Merge pull request #2149 from jtclemm/sort-atom-callbacks
Sort atom callbacks
2020-06-12 08:22:02 -04:00
2b49d2398c Merge branch 'master' into feature-cnt 2020-06-12 07:17:02 -04:00
55089df679 add a few missing typecasts 2020-06-12 07:01:32 -04:00
b246c96056 remove duplicate package name 2020-06-12 06:36:44 -04:00
ba5e78b97a move pair style mesocnt example to the USER-MESONT folder. unbundle potential file 2020-06-12 06:33:45 -04:00
cf359dede2 Merge pull request #2139 from akohlmey/fetch-potentials
Add feature to transparently download external potential files when packages are enabled
2020-06-12 06:28:42 -04:00
d61d8899ff Merge branch 'fetch-potentials' into feature-cnt 2020-06-12 05:54:45 -04:00
cf5c748fb4 Merge branch 'master' into feature-cnt 2020-06-12 05:53:17 -04:00
22ed175632 Merge pull request #2151 from akohlmey/move-ubuf-to-lmptype
Move definition(s) of union ubuf to lmptype.h
2020-06-12 05:51:41 -04:00
0bc1c3b2a2 update example logs and inputs 2020-06-12 05:48:49 -04:00
53e0cc1b88 remove dead code, fix up a few details and reduce compiler warnings 2020-06-12 05:35:50 -04:00
5862dcbb3a fully integrate USER-MESONT into the conventional build system 2020-06-12 05:35:25 -04:00
d1546262a4 replace non-standard tabs with blanks 2020-06-12 05:15:23 -04:00
74df1bcf7d update makefiles and add dependencies for parallel compile 2020-06-12 05:07:19 -04:00
5f86bac419 Merge pull request #2144 from rbberger/tokenizer-performance-fixes
Performance optimization of Tokenizer
2020-06-12 04:20:05 -04:00
3c99471df8 add a few more unit tests for functions in utils 2020-06-12 01:29:42 -04:00
8c470b9e8b Merge branch 'master' into tokenizer-performance-fixes 2020-06-12 00:43:43 -04:00
554905ba36 move version date one more time 2020-06-11 23:11:44 -04:00
6b783d31ad fix spelling 2020-06-11 21:28:32 -04:00
219a3e4ce2 fix format (again) 2020-06-11 21:27:27 -04:00
bb144f0d1b Merge branch 'reset-ids-sort' into move-ubuf-to-lmptype
# Conflicts:
#	src/reset_ids.h
2020-06-11 20:12:37 -04:00
965ec37e80 whitespace/format fixes 2020-06-11 20:11:38 -04:00
1e8ef99fa7 use compile time tests instead of runtime checks for skipping 64bit tests on 32bit integers 2020-06-11 19:17:17 -04:00
9ca0d01a5b silence compiler warnings 2020-06-11 19:05:06 -04:00
a8c1ce98cf remove trailing whitespace 2020-06-11 19:04:15 -04:00
6274234376 have a single union ubuf definition in lmptype.h and remove others 2020-06-11 18:37:31 -04:00
883a6c5aa1 Addressing include conflict 2020-06-11 16:24:29 -06:00
006f7956c1 Merge remote-tracking branch 'github/reset-ids-sort' into move-ubuf-to-lmptype 2020-06-11 18:11:51 -04:00
fc9bbd4d06 Merge pull request #2121 from rbberger/gran-wall-store-contacts-fix
Document and fix store_contacts in fix gran/wall and gran/wall/region
2020-06-11 18:04:23 -04:00
bdce720337 Merge pull request #2143 from lammps/hyper-eligible
fix a bug with checking too early for ineligibilty for biasing
2020-06-11 18:02:19 -04:00
e70f23cdcc Switching to std::sort 2020-06-11 15:42:37 -06:00
b9303378ac move pair style mesocnt from USER-MISC to (upcoming) USER-MESONT package
the remaining documentation and README files will be updated once USER-MESONT is integrated
2020-06-11 17:41:19 -04:00
9ca7091385 Merge pull request #2141 from akohlmey/kokkos-make-arch-case-insensitive
Make kokkos configuration keywords with gmake case insensitive
2020-06-11 17:20:43 -04:00
77a38c2a0a remove (unsupported) reference to AMD Ryzen 2020-06-11 17:03:20 -04:00
9896d10d0c whitespace cleanup 2020-06-11 16:52:38 -04:00
d95859c73b update hyperdynamics example log files 2020-06-11 16:52:30 -04:00
96a6afd42a Merge pull request #2148 from akohlmey/kim-echo-log-refactor
KIM package echo/log refactor and bugfix
2020-06-11 16:46:41 -04:00
765b547a40 Merge pull request #2147 from stanmoore1/kk_sw
Fix compile error with pair_sw_kokkos
2020-06-11 16:20:03 -04:00
ca424772df Improving clarity of loops 2020-06-11 14:10:26 -06:00
006ada3a52 Sorting atom callback lists 2020-06-11 14:03:59 -06:00
3a5cdd384f vector -> array 2020-06-11 14:51:36 -04:00
43d3133583 Whitespace 2020-06-11 14:00:13 -04:00
f25f7fee8d Only count new words 2020-06-11 13:56:47 -04:00
6a9073a0cb Add count_words for C-Strings 2020-06-11 13:50:26 -04:00
645d3b61ba Only count new words 2020-06-11 13:49:58 -04:00
6cb5345cd0 Add optimized version of count_words for default whitespace chars 2020-06-11 13:37:22 -04:00
505cc1036f refactor KIM package code for using {fmt} and std::string 2020-06-11 13:25:41 -04:00
61d0592e6a Fix compile error with pair_sw_kokkos 2020-06-11 11:13:36 -06:00
558b9201ac Fix typo 2020-06-11 12:37:44 -04:00
e9a52a2b1b More doc updates 2020-06-11 12:30:02 -04:00
b299601a41 Update fix_wall_gran docs 2020-06-11 12:22:55 -04:00
ff35f421ac Don't store atom tag, just if there is a contact 2020-06-11 11:35:27 -04:00
7ace10238d change interface to Input::write_echo() to accept const std::string 2020-06-11 10:23:44 -04:00
9945f73743 fix spelling in a few more files 2020-06-11 01:05:58 -04:00
81d937ee97 Performance optimization of Tokenizer
Reduces string allocations and removes std::vector from Tokenizer
Most processing now happens on-demand.
2020-06-11 00:22:04 -04:00
b287651ed6 fix a bug with checking too early for ineligibilty for biasing 2020-06-10 16:56:52 -06:00
e4d1068c70 flag a couple fixes and their derived clases as incompatible with resetting atom IDs 2020-06-10 16:47:55 -06:00
d02363b8fb adding a reset_ids sort option 2020-06-10 16:33:05 -06:00
64a4e5e21a make kokkos configuration keywords in traditional build case insensitive 2020-06-10 15:53:09 -04:00
6f78dd688a Minor doc changes & rename store_contacts to contacts 2020-06-10 15:52:47 -04:00
71d3827cce Merge pull request #2140 from stanmoore1/kk_depend
Add missing Kokkos dependency
2020-06-10 15:50:10 -04:00
c3d5e46f9a one more permission fix 2020-06-10 13:48:25 -04:00
8a71d760f2 fixup permission on doc file 2020-06-10 13:41:57 -04:00
4c3a13873e {fmt}: don't use [[gnu::fallthrough]] on intel compilers 2020-06-10 13:37:30 -04:00
404516060d Add missing Kokkos dependency 2020-06-10 10:49:41 -06:00
1a1cc99144 use correct expression for source folder. small output tweak. 2020-06-10 12:41:20 -04:00
6891fa2610 update a few URLs to use https: instead of http: 2020-06-10 12:34:09 -04:00
f36a84bdd3 add CMake support for fetching external potential files 2020-06-10 12:29:48 -04:00
20a9794b92 fix permissions 2020-06-10 11:26:08 -04:00
72ce9dfacb add feature to transparently fetch external potential files when a package is installed 2020-06-10 11:25:59 -04:00
d436550d63 remove too big C_10_10.mesocnt potential 2020-06-10 09:56:47 -04:00
59353513e0 move date 2020-06-09 19:02:27 -04:00
0b7f58e674 Merge pull request #2137 from jtclemm/ptemp
Adding new ptemp keyword to fix/nh
2020-06-09 19:01:30 -04:00
2f5a8d0937 remove trailing whitespace 2020-06-09 17:28:26 -04:00
3ea39f5a23 Update fix_nh.rst
Removed mbox commands
2020-06-09 14:58:25 -06:00
833ebeb0a0 remove \mbox{} macros which are incompatible with make pdf 2020-06-09 16:42:26 -04:00
c3831f8971 Merge pull request #2126 from vmohles/add-ECO-DF
Add fix orient/eco to USER-MISC
2020-06-09 16:41:07 -04:00
32984cb8c4 add reference to LAMMPS slack 2020-06-09 16:06:47 -04:00
1221906ed9 fix whitespace issues 2020-06-09 15:14:49 -04:00
ecc142229d update outputs again 2020-06-09 15:09:45 -04:00
fa07f64b81 add missing linefeed 2020-06-09 15:06:13 -04:00
999ed36e6a update log files for new version 2020-06-09 15:04:53 -04:00
bb5b931d78 Merge remote-tracking branch 'github/master' into add-ECO-DF 2020-06-09 14:55:40 -04:00
89fb194f51 update to fix orient/eco from the authors 2020-06-09 14:55:31 -04:00
719936580a Merge pull request #2135 from akohlmey/cmake-legacy-gpu-conflict
Handle conflict between conventional build and CMake build in lib/gpu
2020-06-09 14:26:42 -04:00
4c6c4ac405 Update fix_nh.rst
Adding linebreaks for legibility
2020-06-09 12:20:21 -06:00
e47d48eed8 Change output message and use list(APPEND) 2020-06-09 12:10:35 -04:00
954f728225 Always set CMAKE_LIBRARY_PATH if environment variable LIBRARY_PATH is set
This resolves issues such as CUDA_CUDA_LIBRARY NOTFOUND if LIBRARY_PATH is
set to the CUDA stubs folder, but ignored by CMake.
2020-06-09 11:30:54 -04:00
2010cf97a9 add documentation for the cubin header check and explain the reason 2020-06-09 07:41:18 -04:00
78f030a07a test for *cubin.h files in lib/gpu that conflict with cmake compilation 2020-06-09 07:32:49 -04:00
9d3dda9307 step version strings for next patch release 2020-06-08 19:57:07 -04:00
e641671da9 Merge pull request #2132 from akohlmey/collected-bugfixes-and-updates
Collected bugfixes and updates
2020-06-08 19:55:34 -04:00
3b1219f0f5 Merge pull request #2133 from ThFriedrich/master
Added missing and correct a few existing "Syntax" and "Examples" labels in docs
2020-06-08 19:20:32 -04:00
016629252d a few more tweaks needed for centos8 and fedora32 2020-06-08 19:18:01 -04:00
ac85071bc4 need one more step with ubuntu to allow enabling PPA repos 2020-06-08 16:08:03 -04:00
2668e3deb6 add manual installation of plumed library 2020-06-08 14:39:34 -04:00
8b154cfbf6 must not set *any* communicators in plumed lib when using MPI_STUBS 2020-06-08 10:38:20 -04:00
7512cd3518 Merge branch 'master' of github.com:ThFriedrich/lammps into collected-bugfixes-and-updates 2020-06-08 09:48:21 -04:00
ee5e479343 make sure that when unpacking the Nbr struct you convert the index back to the closest image relative to the center atom 2020-06-08 09:33:21 -04:00
2e9859bacf don't request neighbors of ghosts 2020-06-08 09:29:32 -04:00
c90f303a7a structs are all public by default 2020-06-08 09:28:43 -04:00
942a9e936d remove changes to upstream 2020-06-08 09:28:22 -04:00
d106ed8981 add missing pair_style command to commands overview 2020-06-08 01:49:16 -04:00
99fcf21a74 Fix "Example" Tag formatting 2020-06-08 04:21:24 +02:00
448bccd138 tweak test epsilons so they pass with -DLAMMPS_BIGBIG 2020-06-07 22:20:46 -04:00
e5f937388a fix bugs with reading restart files when using -DLAMMPS_BIGBIG 2020-06-07 22:14:51 -04:00
864103f93e fix cut-n-paste bug that crashed LAMMPS on reading molecular data files with -DLAMMPS_BIGBIG 2020-06-07 21:35:06 -04:00
f9cdf0913c Fix Formatting of "Examples" Label 2020-06-07 23:27:02 +02:00
def387c21e Added missing "Syntax" label 2020-06-07 23:01:48 +02:00
a9d1932032 update singularity definition files to include kim-api packages 2020-06-07 16:11:26 -04:00
dd746f7695 whitespace 2020-06-07 15:59:50 -04:00
bbb6f408be fix syntax issue 2020-06-07 15:56:18 -04:00
4da8ff3d21 avoid division by zero 2020-06-07 15:47:46 -04:00
fc1be785fc port bugfix from fix qtb to fix qbmsst and some output simplification 2020-06-07 15:33:32 -04:00
5c1236084c correctly compute the size of the maxexchange buffer. we put all fixes into one buffer. 2020-06-07 14:37:20 -04:00
db9543ede2 use more common coding patterns, set maxexchange, use correct argument conversion functions 2020-06-07 14:36:41 -04:00
cee7cd5fe9 consolidate enumerator for per-atom array data types 2020-06-07 11:44:42 -04:00
edc7237f15 more thorough checking if the reaxff force field is consistent. 2020-06-07 10:46:50 -04:00
586f2c00b0 add missing linefeed character 2020-06-07 10:13:35 -04:00
09a005414b recover compilation of the KIM package 2020-06-06 17:27:10 -04:00
64664d0b18 Merge pull request #2122 from rbberger/refactor-table-reading
Refactor table reading
2020-06-06 16:44:57 -04:00
7088746e36 update logs 2020-06-06 11:59:38 -04:00
a1afb8e1da when communicating always communicate global atom ID and convert back 2020-06-06 11:53:50 -04:00
d343d2beb1 whitespace and output fixes. 2020-06-06 11:10:32 -04:00
92012ef047 fix permissions 2020-06-06 10:44:09 -04:00
8a71645a4b must pass the filename, not file pointer to error message 2020-06-06 10:41:42 -04:00
17306c0469 Merge branch 'master' into add-ECO-DF 2020-06-06 10:37:12 -04:00
4e05eaa811 reduce compiler warnings, use new error class and format options 2020-06-06 10:37:06 -04:00
8bfabcab56 update fix orient/eco example to be aligned with LAMMPS conventions 2020-06-06 10:36:35 -04:00
4832de4a76 add to USER-MISC README file 2020-06-06 10:03:21 -04:00
9482f7f834 fix up typesetting of docs, spelling, and integrated into fix command table 2020-06-06 10:01:07 -04:00
890c5fc1be update src/.gitignore 2020-06-06 10:00:11 -04:00
c6abcc8518 must not include installed copies of package files 2020-06-06 09:59:59 -04:00
2ed8652545 Fix whitespace 2020-06-05 19:15:31 -04:00
52f5968695 Merge remote-tracking branch 'origin/master' into refactor-table-reading 2020-06-05 19:09:24 -04:00
a57a8a879b Merge pull request #2129 from akohlmey/collected-small-changes
Collected small changes for the next patch release
2020-06-05 18:49:47 -04:00
4f804f58e3 Merge remote-tracking branch 'origin/master' into refactor-table-reading 2020-06-05 16:41:05 -04:00
04d7eacc2f remove .c_str() in several places because it is no longer neede 2020-06-05 16:40:48 -04:00
c7ef89dc4a Merge branch 'master' into collected-small-changes 2020-06-05 16:40:30 -04:00
2203e1e9e5 Change next_dvector(n, buf) to next_dvector(buf, n) 2020-06-05 16:40:14 -04:00
12386945d5 Merge pull request #2128 from akohlmey/more-fmtlib-and-string
Use {fmt}, std::string and utils::logmesg() in more places
2020-06-05 16:37:38 -04:00
9bf47cd9f3 make KOKKOS library compilation compatible with mode=shared 2020-06-05 13:58:11 -04:00
8b5469590d Fix error message in pair_airebo.cpp 2020-06-05 12:25:10 -04:00
4d99092e37 Fix error message in bond_table.cpp 2020-06-05 12:23:20 -04:00
a42a86c0d2 Remove more c_str() 2020-06-05 12:13:41 -04:00
7df387f7d5 Merge remote-tracking branch 'origin/master' into refactor-table-reading 2020-06-05 12:09:57 -04:00
cd08dc8425 Simplify by using next_values() helper 2020-06-05 11:57:12 -04:00
78468f41d5 make definition consistent and silence a whole bunch of warnings from recent clang versions 2020-06-05 11:52:06 -04:00
f547d66104 Merge branch 'master' into more-fmtlib-and-string
# Conflicts:
#	src/write_restart.cpp
2020-06-05 11:13:44 -04:00
863828540a Merge pull request #2127 from akohlmey/error-using-string-class
Use std::string in arguments to Error class function
2020-06-05 11:05:14 -04:00
9ba84f37d7 add workaround for compilation error with MPIIO on windows due to old ROMIO API 2020-06-05 11:03:17 -04:00
cbd4f59d45 updates "add eco df"
We think we followed all your requests/advice/suggestions (thanks!). We were unable to compile the current master (!) on Ubuntu and MacOS unless we added -std=c++11 to the Makefile(s) compiler flags. Note that this is NOT related to this pull request / the ECO Force. With  this compiler flag, the current master works well with the fix_orient_eco (now renamed). The fix has been moved to USER-MISC (but we hope to get it to MISC later). We can't "make style_check ", but we have added our command to commands_fix.rst. We don't know GitHub well enough, so we don't know how to make sure that the PR #2122 was already included in the master, which we downloaded today.
2020-06-05 14:57:59 +02:00
ad76f5267b whitespace fix 2020-06-05 08:54:41 -04:00
d874e8a2be remove TAGINT_FORMAT from ntopo styles 2020-06-05 08:45:18 -04:00
73c6171ad6 get rid of BIGINT_FORMAT and use utils::logmesg() 2020-06-05 08:19:45 -04:00
8ed32f95b3 simplify writing restarts a bit more 2020-06-05 07:31:39 -04:00
8814fc0147 use const char * for compatibility with std::string.c_str() 2020-06-05 07:31:02 -04:00
3e289bbc5e fixup whitespace 2020-06-04 22:37:32 -04:00
0ee1393955 fix typo 2020-06-04 22:17:50 -04:00
48b7b7d722 fix up change_box and displace_atoms lost atoms error message 2020-06-04 22:09:40 -04:00
923e740872 get rid of more BIGINT_FORMAT macros 2020-06-04 22:07:47 -04:00
c02c352ca2 use {fmt} to write out atomic data 2020-06-04 21:56:00 -04:00
439eee3b86 get rid of BIGINT_FORMAT and use std::string.replace() to expand time step in data and restart file names 2020-06-04 21:38:00 -04:00
54a8b4e08b more local buffers removed and file error status added. 2020-06-04 20:14:19 -04:00
4a6d3bc0e0 Move common potentials opening code to utils 2020-06-04 17:18:28 -04:00
62ee8d41f3 get rid of local buffers and snprinf() 2020-06-04 16:41:24 -04:00
7ab65c05da Simplify Pair COMB3 2020-06-04 16:29:15 -04:00
8689b31bca Add convenience method next_values 2020-06-04 16:27:27 -04:00
57821c7bea Add missing error message 2020-06-04 16:26:22 -04:00
e5263e502d Fix bug in next_dvector
It did not ignore comment lines
2020-06-04 16:24:48 -04:00
6c41c2f69d Make Tokenizers movable 2020-06-04 16:23:46 -04:00
4b58e33b1e remove local buffer for error message in Force class 2020-06-04 15:24:10 -04:00
ad15385f4c convert code in Info to use {fmt} and string 2020-06-04 15:21:57 -04:00
b27ef02bc2 no local buffers and snprintf() in a bunch of style creation functions 2020-06-04 14:36:56 -04:00
d9345a1652 Update Pair BOP 2020-06-04 14:36:25 -04:00
c22aee142d remove unused variable 2020-06-04 13:31:30 -04:00
2777d37a61 remove local buffers and snprintf() for file open error messages. 2020-06-04 13:30:44 -04:00
47888b587a add convenience function to get the output of strerror(errno) as c++ string 2020-06-04 12:01:02 -04:00
b2c4cce826 Update PairAirebo 2020-06-04 11:31:35 -04:00
481d3cb219 avoid using a local buffer and snprintf() 2020-06-04 11:21:25 -04:00
34ff7aa1fe Add convenience functions to PotentialFileReader 2020-06-04 11:18:33 -04:00
9291d2a9d7 Simplify count_words, add trim_and_count_words
The original count_words function (before it was put into utils::) also trimmed
comments. For compatibility this behaviour was retained at first. However, due
to the name the trimming is not immediatly apparent and many times not
wanted.

Therefore, this commit replaces count_words with an implementation that
just does what it says. If a comment should be trimmed there is a
trim_comment function. For convenience, a trim_and_count_words function was
added and is now used where the old behaviour was needed.
2020-06-04 11:13:37 -04:00
75e4cff44a simplify communication cutoff warnings 2020-06-04 11:13:21 -04:00
98f8b9632d avoid division by zero when reading tersoff potentials with powern == 0.0 2020-06-04 11:01:56 -04:00
97e69abcda get rid of snprintf() and local buffers in atom style creation 2020-06-04 10:45:24 -04:00
aab4bc8ac2 update fix restrain to use {fmt} and be 64-bit atom id compatible 2020-06-03 23:43:54 -04:00
00fd82016c simplify Domain::print_box() 2020-06-03 22:52:49 -04:00
fc216edf10 simplify create/delete_atoms/bonds 2020-06-03 22:36:51 -04:00
ef190962b8 simplify deprecated styles 2020-06-03 22:14:38 -04:00
c0fb794848 update load balancing output to use utils::logmesg() and {fmt} 2020-06-03 21:21:58 -04:00
9297211b06 fix style issue 2020-06-03 16:58:08 -04:00
dd11fb3964 remove .c_str() and simplify output in several places 2020-06-03 16:37:30 -04:00
9f3f53cc6b convert Error class to accept 'const std::string &' instead of 'const char *' 2020-06-03 15:43:05 -04:00
3c6ce73ccf Remove unused define 2020-06-03 15:10:22 -04:00
1247096680 Add missing OMP version of Pair Tersoff ZBL 2020-06-03 15:09:33 -04:00
98e2e34a36 fix division by zero issue in pair style bop 2020-06-03 14:12:42 -04:00
c81aca3509 Update fix_eco_force.h 2020-06-03 19:48:22 +02:00
df11b2b3ad Update fix_eco_force.cpp 2020-06-03 19:47:28 +02:00
9e8ce240a0 Merge pull request #2124 from sachu92/fix_controller_process_variable_fix
Parsing of process variable in fix controller corrected
2020-06-03 13:44:24 -04:00
08a6efe6b1 Update fix_eco_force.rst 2020-06-03 12:32:05 +02:00
aacb964888 Parsing of process variable in fix controller corrected 2020-06-03 11:25:45 +02:00
91e8469389 Update DihedralTable 2020-06-02 19:06:25 -04:00
185eeaea8b Add missing try-catch 2020-06-02 18:37:04 -04:00
18bb4bfdc2 Merge remote-tracking branch 'akohlmey/unit-test-updates' into refactor-table-reading 2020-06-02 18:24:23 -04:00
2fd3d21414 add tests for pair style table 2020-06-02 17:12:52 -04:00
5688fd41bb Remove trailing whitespace 2020-06-02 16:43:41 -04:00
352cea3957 Remove unused import 2020-06-02 16:23:36 -04:00
95e12ccb73 Update PairTable 2020-06-02 16:11:36 -04:00
a80c80c77e Add type information for table potentials 2020-06-02 16:08:49 -04:00
d6e062d0b9 Update BondTable 2020-06-02 15:42:23 -04:00
392a4f4e06 Update AngleTable 2020-06-02 15:28:46 -04:00
7658d05c73 Add TableFileReader 2020-06-02 15:11:53 -04:00
d478ad2ccb Refactor PotentialFileReader 2020-06-02 15:11:30 -04:00
24a0933e2a Refactor PotentialFileReader 2020-06-02 14:18:11 -04:00
60f17e7397 Add filesystem utils functions 2020-06-02 14:11:09 -04:00
5c01c5c4af make internal name for test consistent with external name 2020-06-02 07:41:10 -04:00
def79f246a Update fix_eco_force.rst 2020-06-02 10:35:22 +02:00
b9cec30c2b add test for exceptions with incompatible format 2020-06-01 22:18:45 -04:00
c6d04343e3 add tests for custom large integer type conversions 2020-06-01 19:09:27 -04:00
644ef3da4c add LAMMPS copyright header 2020-06-01 19:08:59 -04:00
005fe9db8b add initial unit test for {fmt} testing only conversions frequently used by LAMMPS 2020-06-01 17:50:00 -04:00
886a950fd6 silence compiler warning in test programs 2020-06-01 17:49:05 -04:00
981cfd42f6 Merge pull request #2120 from lammps/next_lammps_version
Update version strings for the next patch release
2020-06-01 15:08:09 -04:00
5193ee7035 Merge pull request #2106 from jrgissing/bond/react-molecule-fragment-support
Bond/react: molecule fragment support
2020-06-01 14:42:14 -04:00
8b61b12921 Add missing initialization of potential_name 2020-06-01 13:53:36 -04:00
ff6675e4d8 Update docs for fix wall/gran and wall/gran/region 2020-06-01 12:00:27 -04:00
f5ea01e901 Clear wall/gran contacts before each calculation 2020-06-01 11:18:07 -04:00
1ca236da7e Merge pull request #2119 from akohlmey/more-test-files
More unit test files
2020-06-01 10:21:23 -04:00
b81826131b Merge branch 'master' into bond/react-molecule-fragment-support 2020-05-31 16:34:41 -04:00
09ce0d1198 rephrase to use more common term 2020-05-31 16:33:37 -04:00
e449cdf924 Merge pull request #2103 from lammps/add-fmt-lib
Use {fmt} in LAMMPS to simplify formatted output
2020-05-31 12:02:15 -04:00
acf280811a step version strings for next patch release 2020-05-31 11:14:50 -04:00
7ab55a868f remove unneeded justification marker 2020-05-31 10:45:32 -04:00
88cedc2784 add a bunch of tests for utils::strmatch() 2020-05-31 10:36:44 -04:00
4a21ad7b3d expand tests for valid and invalid numbers 2020-05-31 10:14:09 -04:00
f5be01e4f1 sync with header 2020-05-31 10:05:39 -04:00
89bffb2ee9 add extra parenthesis to indicate that assignment is intentional in logical expression 2020-05-31 10:05:22 -04:00
4f169e99e6 silence compiler warnings: const has no effect on return type 2020-05-31 09:49:22 -04:00
ee90796679 Merge branch 'master' into add-fmt-lib
# Conflicts:
#	src/lammps.cpp
#	src/utils.cpp
2020-05-31 09:45:54 -04:00
7ebad52727 add tests for a bunch of coulomb only pair styles 2020-05-31 09:26:54 -04:00
633b66d4c9 correct forces in single function and simplify a little 2020-05-31 09:26:26 -04:00
661b0ee8b2 cannot compare Pair::compute() vs. Pair::single for styles with coul/dsf or coul/wolf due to missing self energy 2020-05-31 09:25:50 -04:00
64b684eec3 add tests for a whole bunch of CHARMM pair styles 2020-05-31 08:34:25 -04:00
1493ae5c87 correct force calculation in lj/charmm/coul/msm/omp 2020-05-31 08:33:26 -04:00
a820b7d3fc fix bug in r-RESPA neighborlist setup for lj/charmmfsw/coul/long 2020-05-31 08:33:05 -04:00
f7a0f6671c fix factor 0.5 bug in lj/charmm/coul/charmm/implicit/omp 2020-05-31 07:19:36 -04:00
eb60b049fc add endpoint gradients for two bond tables 2020-05-30 21:49:42 -04:00
91272e7654 output endpoint gradient for some angle tabulations 2020-05-30 21:36:47 -04:00
bb8f6e94d3 Merge pull request #2113 from rbberger/tokenizer
Refactoring to reduce strtok usage
2020-05-30 21:13:12 -04:00
0f6e963058 add a whole bunch of angle style tests 2020-05-30 21:10:48 -04:00
69ba5ea9f0 use a smaller bond table 2020-05-30 21:05:03 -04:00
814082a23b Merge pull request #2105 from ndtrung81/rigid-nve-norot
Fixed an issue with fix rigid/nve for bodies with very small values of inertia moments
2020-05-30 19:49:08 -04:00
f33584cfb2 fix missing factor of 2 bug in single function 2020-05-30 18:37:54 -04:00
f4431d0525 remove dead code 2020-05-30 18:00:23 -04:00
bd4d4bc015 update bond/angle yaml files for changed equilibrium keyword syntax 2020-05-30 17:51:29 -04:00
1042e16423 change format for equilibrium values and update writer and reader code, so it will become compatible with class2 angles/dihedrals/impropers 2020-05-30 17:50:38 -04:00
07163a710a correct bond table coefficients to find the table file 2020-05-30 17:22:33 -04:00
e32409d32c add tests for most bond styles except FENE type bonds 2020-05-30 10:44:40 -04:00
1452e6dfca reduce displacements in single test for pair styles 2020-05-30 10:23:52 -04:00
4c0ce402c1 fix bug in bond style gromos/omp 2020-05-30 10:23:25 -04:00
fac897587f Checked for zero inertia moments in a simpler way, similar to what is done in mq_to_omega() 2020-05-30 07:42:34 -05:00
2b960d94ec Fix pair_comb3 2020-05-30 08:01:39 -04:00
1ec179e80a add a few more test inputs 2020-05-29 23:47:15 -04:00
43171052d5 fix multiple bugs in pair style tester for Pair::single() 2020-05-29 23:46:37 -04:00
8409e9d2be Merge pull request #2118 from akohlmey/pair-hybrid-better-check
Better argument parsing of pair style hybrid
2020-05-29 22:54:34 -04:00
549ffda4d8 implement better pair style name detection in pair style hybrid arguments 2020-05-29 20:52:21 -04:00
40cf106b8f Fix segfault when running with MPI 2020-05-29 19:57:47 -04:00
7a9590f007 More whitespace 2020-05-29 18:04:20 -04:00
636a1bffe3 Fix whitespace 2020-05-29 17:25:41 -04:00
447784212a Remove d0 in float numbers in ffield.comb 2020-05-29 17:14:41 -04:00
e4d6970ac1 Fix whitespace 2020-05-29 16:32:17 -04:00
8e1a6bc706 Update pair polymorphic 2020-05-29 16:12:19 -04:00
d173ea4ad9 Merge pull request #2114 from akohlmey/more-unittest-changes
More updates and corrections for unit tests
2020-05-29 15:33:30 -04:00
1375c154f9 Update pair eim 2020-05-29 14:58:04 -04:00
10b0d60709 Fix typo 2020-05-29 14:56:10 -04:00
c34501c137 Merge pull request #2116 from jdevemy/master
Test to avoid bad delete and Seg Fault
2020-05-29 11:34:14 -04:00
1984092135 Test to avoid bad delete and Seg Fault 2020-05-29 15:25:05 +02:00
2a4bd9ef53 small tweaks and documentation update to coverage cleaning targets 2020-05-29 08:33:34 -04:00
7bcf50b129 mention reset_coverage data 2020-05-29 08:26:26 -04:00
c2ab177c3a add some explanations and figures for code coverage 2020-05-29 08:24:05 -04:00
30020594df add custom target to remove/reset collected coverage data 2020-05-29 08:23:25 -04:00
0c503ab122 Move coverage html into folder 2020-05-29 08:23:08 -04:00
99c0c1ace1 simplify parsing of equilibrium data 2020-05-29 08:22:34 -04:00
7d62fd5106 remove debug code 2020-05-29 08:22:23 -04:00
797ba373c4 simplify reading key/value pairs from string 2020-05-28 22:38:23 -04:00
08ee1cb4fa add single test to angle_style, add support for equilibrium data 2020-05-28 22:38:07 -04:00
47e4da4903 add support for writing/reading equilibrium bond/angle data 2020-05-28 22:20:43 -04:00
6ed4103365 synchronize flow of control and formatting between pair_style, bond_style and angle_style 2020-05-28 21:11:38 -04:00
9fc6abb2ef add tests for pair style polymorphic 2020-05-28 20:43:26 -04:00
5a4bbcc37a Update pair vashishta 2020-05-28 16:17:15 -04:00
cadc374e0b Update pair nb3b harmonic 2020-05-28 16:05:56 -04:00
e206647717 Update pair gw zbl 2020-05-28 15:56:36 -04:00
607581e7f3 Use correct error function 2020-05-28 15:53:33 -04:00
2632d30970 Update pair gw 2020-05-28 15:44:53 -04:00
7d61fbc68b Update pair adp 2020-05-28 15:08:48 -04:00
5bdc3e9f84 Remove unused PairEAM::grab 2020-05-28 14:37:52 -04:00
2b9ab58971 Update accelerator pair eam alloy 2020-05-28 14:37:27 -04:00
903a73d2c7 Update accelerator pair eam fs 2020-05-28 14:26:42 -04:00
8e46c53d57 Update fix_eco_force.h 2020-05-28 19:19:54 +02:00
fac7b864fc Update pair eam alloy 2020-05-28 12:54:14 -04:00
e08404f53c Indentation 2020-05-28 12:53:32 -04:00
e8ee1df993 Update pair eam cd 2020-05-28 12:35:02 -04:00
0dc05698f3 Update pair eam fs 2020-05-28 12:20:54 -04:00
49a40f5006 Update pair eam 2020-05-28 11:35:24 -04:00
e7909f4598 Remove unused define 2020-05-28 10:36:38 -04:00
f5d8417d96 Update pair tersoff zbl 2020-05-28 10:36:20 -04:00
c0324e55ad Update pair tersoff mod c 2020-05-28 10:06:43 -04:00
d3e160f3d0 tweak epsilon for gcc 10 2020-05-28 10:00:13 -04:00
a4db35e15d Update pair tersoff mod 2020-05-28 09:56:54 -04:00
8329a5498b Move NPARAMS_PER_LINE to parent classes 2020-05-28 09:48:34 -04:00
1889b165dc Merge branch 'tokenizer' of github.com:rbberger/lammps into tokenizer 2020-05-28 09:01:29 -04:00
2eaf710488 Hide stdout during tests 2020-05-28 08:01:54 -04:00
98b0619c3c ECO Driving force
adds an energy to each atom depending on the surrounding crystal orientation, in order to drive grain boundaries
2020-05-28 13:51:56 +02:00
2710a22574 Merge branch 'master' into tokenizer 2020-05-28 07:33:10 -04:00
51c632acd4 increase code coverage for pair_eam_cd.cpp 2020-05-28 06:25:35 -04:00
245f949e12 functions theta(), theta_mod(), and cutoff() are never used in pair style bop 2020-05-28 06:20:33 -04:00
e0ee0986fd tweak pair style bop unit tests to increase code coverage 2020-05-28 06:20:22 -04:00
b0f6eafac8 minor doc clarification 2020-05-27 23:37:35 -06:00
db13dff499 minor efficiency correction 2020-05-27 23:32:55 -06:00
315463e65f Merge pull request #2108 from akohlmey/more-pair-style-tests
Add unit tests for manybody pair styles
2020-05-27 18:48:22 -04:00
69b8635125 Merge pull request #2111 from akohlmey/collected-small-changes
Collected small changes and fixes for the next patch release
2020-05-27 18:35:11 -04:00
c47cbe5f34 Merge pull request #2110 from yafshar/kim
Explicitly set the pValue pointer to NULL.
2020-05-27 18:25:36 -04:00
9bc03034ef add some initial documentation about the included tests 2020-05-27 18:02:32 -04:00
c22bbecb58 Update pair tersoff 2020-05-27 16:49:36 -04:00
013756bfa7 add tests for AIREBO/REBO family of potentials 2020-05-27 16:37:36 -04:00
78ad33eb2e USER-INTEL tweaks for REBO family. will have to file bug reports at some point. 2020-05-27 16:37:05 -04:00
dddc34e214 Merge remote-tracking branch 'akohlmey/more-pair-style-tests' into tokenizer 2020-05-27 16:32:52 -04:00
a1216c4fb2 remove unused variable definition 2020-05-27 13:35:17 -04:00
9142d4893d make sure we compile and link against mpi_stubs when BUILD_MPI is disabled 2020-05-27 13:35:07 -04:00
477a7125c9 Update PairComb and PairComb3 2020-05-27 13:15:19 -04:00
507064d45d Add Tersoff potential file read test 2020-05-27 13:13:50 -04:00
477e18b789 update makefiles for conventional build to always build a new static library 2020-05-27 13:09:42 -04:00
68e2c0bca8 Correct next_line in PotentialFileReader 2020-05-27 13:03:17 -04:00
6d339c8b03 Add unit tests for PotentialFileReader 2020-05-27 13:02:39 -04:00
caa43c7ed6 Merge remote-tracking branch 'akohlmey/more-pair-style-tests' into tokenizer 2020-05-27 12:59:32 -04:00
e2765a5c49 silence compiler warnings about unused arguments and variables and alike 2020-05-27 12:55:59 -04:00
bb57e90a27 add test for tabulated manybody styles 2020-05-27 12:31:19 -04:00
efbf9807d1 tests for MANYBODY almost complete 2020-05-27 10:59:12 -04:00
7c9ad91d8f fix bug in pair style tersoff/zbl/omp 2020-05-27 10:53:29 -04:00
4d237f6640 Explicitly set the pValue pointer to NULL.
PyTuple_SetItem “steals” a reference to pValue, but
does not set it to NULL after dereferencing it. It
causes segmentation fault when running lammps on some
systems and on multiple processors since it is trying
to decrement the reference count for an object which
does not exist.
2020-05-27 09:29:18 -05:00
3415ccd60d Merge branch 'more-pair-style-tests' into tokenizer 2020-05-27 09:37:22 -04:00
b5b66d0e78 tweak bop test to run faster 2020-05-27 08:50:20 -04:00
51e3cba0ba tweak error margins to pass with gcc 9.x plus Release setting 2020-05-27 06:59:58 -04:00
66e34f541c four more 2020-05-27 06:43:37 -04:00
1930a8fd00 make some more use of {fmt} in lammps.cpp 2020-05-27 05:29:42 -04:00
dd61ac80f7 simplify lammps.cpp using {fmt} and utils::logmesg() 2020-05-27 04:52:21 -04:00
b208e39ba7 remove obsolete c++98 workaround warning 2020-05-27 04:30:12 -04:00
29bd22a7ea add tests for eam/cd and eim 2020-05-26 21:08:39 -04:00
7f699e9233 fix verbosity handling issue in pair style tests 2020-05-26 21:08:26 -04:00
2e3f03f9ca remove pair style eam/cd/omp which seems broken beyond repair 2020-05-26 20:55:57 -04:00
e01e72cc8e Formatting 2020-05-26 20:29:09 -04:00
5e4ce8d03c Use Error::one in PotentialFileReader 2020-05-26 20:27:16 -04:00
13942a4d20 Use PotentialFileReader in PairComb 2020-05-26 20:23:28 -04:00
c302c0bca2 Add PotentialFileReader and use it in PairSW 2020-05-26 20:10:48 -04:00
541ab46e97 add tests for comb and comb3 2020-05-26 19:58:24 -04:00
ff3ebd4f6a fix two memory allocation/deallocation bugs in pair style comb3 2020-05-26 19:56:28 -04:00
151d1fb42b cosmetic updates 2020-05-26 19:55:54 -04:00
f1685afaa7 correct logic and also skip for USER-OMP 2020-05-26 18:42:47 -04:00
c91cad5155 add test for bop 2020-05-26 18:36:33 -04:00
0f8ff07da2 skip over newton_pair == off tests if newton_pair is forced to be on 2020-05-26 18:36:22 -04:00
dff78c19aa add tests for pair styles adp, atm, sw and tersoff and new data/input 2020-05-26 18:22:21 -04:00
74249380ec Add count method to ValueTokenizer 2020-05-26 16:30:46 -04:00
4a2ddb2c5e restore required header 2020-05-26 15:22:03 -04:00
b5b71bbb92 (re-)add example uses of {fmt} 2020-05-26 15:16:35 -04:00
56cb761b04 add fmtlib as copy. too many complications from keeping it in a separate dir. 2020-05-26 15:15:53 -04:00
5d6c18dbed one more correction for cmake --build 2020-05-26 12:29:03 -04:00
31a3e84950 correct documentation about cmake --build with targets 2020-05-26 12:26:44 -04:00
bc5c267630 Reverted to using a threshold much smaller than 1e-6 for zero inertia moments 2020-05-25 23:37:49 -05:00
18320ded89 image correction for fragment location 2020-05-24 14:47:50 -06:00
375fb4b314 bond/react: change 'general name' for method
and update contact info
2020-05-23 23:32:49 -06:00
faec8ac2be correctly update dihedral constraint 2020-05-23 23:22:56 -06:00
60e0a8a6a8 Update fix_bond_react.rst 2020-05-23 23:12:16 -06:00
4250def29a dihedral constraint: fragment support 2020-05-23 22:58:37 -06:00
093f981719 Improved the way body inertia moments are checked if they are zero when updating body quaterions in fix rigid/nve 2020-05-23 23:52:00 -05:00
74d58778b4 angle constraint: fragment support 2020-05-23 22:29:14 -06:00
a64a9c1253 distance constraint: fragment support 2020-05-23 22:13:20 -06:00
5e3fe19756 Merge pull request #2101 from rbberger/unittest_compilation_bugfix
Make sure include directories are passed to test binaries
2020-05-21 15:45:05 -04:00
73b537f6c3 Make sure include directories are passed to test binaries 2020-05-21 15:06:08 -04:00
8de046270e Merge pull request #2100 from akohlmey/respa-related-fixes-and-unittest
Add basic unit test for r-RESPA and some related bugfixes
2020-05-21 13:09:37 -04:00
8e92530e79 add code owners for unit tests 2020-05-21 11:34:15 -04:00
4f44159d56 add a test for r-RESPA (only with newton on and for plain styles for now) 2020-05-21 11:17:49 -04:00
0788a8ee4f only collect the per-atom data specific to this test to compare against total pe. 2020-05-21 11:06:11 -04:00
799b676f89 must skip corresponding per-atom data accumulation if compute_flag for pair or kspace is 0 2020-05-21 11:05:16 -04:00
2371db3242 add missing "reciprocal" 2020-05-21 07:41:07 -04:00
2dad3cbb2f update false positives list for time units correction to the docs 2020-05-21 01:37:11 -04:00
b8544de37b tweak error margin 2020-05-21 01:30:04 -04:00
f9e57392f3 properly honor verbose/no-verbose run flag 2020-05-21 01:14:02 -04:00
4eca3c46a6 fix bug that messes up r-RESPA from some strange reason. 2020-05-21 01:13:48 -04:00
e784afd60f use proper units (fmsec -> fs, psec -> ps and so on) 2020-05-21 01:13:15 -04:00
293bfa0485 fix typo 2020-05-21 01:13:03 -04:00
4868f5fdfc update 2020-05-20 22:04:00 -04:00
3d567c14ef Revert changes to be more C-like for Steve 2020-05-20 18:00:01 -04:00
7ac0f869ef Add ValueTokenizer 2020-05-20 15:53:50 -04:00
46239e4577 Add utils::is_double and utils::is_integer 2020-05-20 15:53:41 -04:00
9e3759d0fc Add missing newlines 2020-05-20 15:53:29 -04:00
4a2d3e95cb Replace Atom::count_words with utils::count_words 2020-05-20 15:53:19 -04:00
db46521d64 Add utils::count_words and utils::trim_comment 2020-05-20 15:53:08 -04:00
807130c771 Replace AtomVec::tokenize and use Tokenizer 2020-05-20 15:50:10 -04:00
d41927b056 Add Tokenizer class 2020-05-20 15:49:02 -04:00
8691579def Merge pull request #2098 from lammps/unittest
Add first part of an integrated unit test framework
2020-05-20 15:44:52 -04:00
5281dea651 Merge pull request #2095 from stanmoore1/kk_snap_beta
Fix redundant computation in Kokkos Pair SNAP on GPUs
2020-05-20 15:30:17 -04:00
8bc2c4748c add option to test main program to override the value of the INPUT_FOLDER variable 2020-05-20 15:23:32 -04:00
917b7dd4fa move definition of the INPUT_FOLDER variable from header to implementation file 2020-05-20 15:22:43 -04:00
58ca1dcf8e Merge pull request #2094 from akohlmey/collected-small-changes
Collected small changes and bug fixes for the next patch release
2020-05-20 14:33:34 -04:00
c50bd25d42 Merge pull request #2093 from junghans/lammps_cleanup
remove fftw_cleanup() from main()
2020-05-20 14:26:41 -04:00
2536076ce9 cosmetic changes for consistent source formatting 2020-05-20 07:40:37 -04:00
2712a20f91 build common unit test sources into a static library and link with it 2020-05-20 07:32:32 -04:00
76fb797264 Simplify tests 2020-05-20 04:12:48 -04:00
5533b9233f Fix indentation 2020-05-20 02:48:02 -04:00
ad6ae7317e Use std::make_pair 2020-05-20 02:45:16 -04:00
34456294dd Cleanup 2020-05-20 02:03:00 -04:00
46e0c8b6b7 Remove duplicated read_yaml_file function 2020-05-20 01:32:50 -04:00
73e766b933 Remove another unneeded class 2020-05-20 01:30:34 -04:00
35f7aa810d update 2020-05-20 00:33:36 -04:00
50d4cf210c Remove unnecessary classes 2020-05-19 23:37:11 -04:00
bd2d74b2cf update 2020-05-19 23:26:23 -04:00
bddd6d5e84 update 2020-05-19 23:19:49 -04:00
c0acb3a438 Remove multiple definitions of STRINGIFY 2020-05-19 23:15:22 -04:00
c04a71a239 add unit test framework for pair, bond, angle styles from progguide branch 2020-05-19 22:24:31 -04:00
1517daeaed add support for extracting r0 array to bond style zero 2020-05-19 21:54:50 -04:00
16ce10aefc the first argument to Bond::extract() should be const char * not char *. 2020-05-19 21:54:31 -04:00
5827f69da5 OpenMPI's "sm" transport layer has gone from some newer versions. use "tcp" as lowest common denominator 2020-05-19 20:25:53 -04:00
48a9e0d732 consolidate setting CMake policy CMP0074 into main cmake file 2020-05-19 15:20:41 -04:00
16db223d03 update test for whether to set CMake policy CMP0074 is needed. 2020-05-19 11:53:47 -04:00
ffaa77af6b reintroduce bugfix for bessel function distributed random numbers 2020-05-19 09:02:17 -04:00
4ac7a26fe1 add support for extracting r0 array to bond style zero 2020-05-18 19:37:54 -04:00
ed43c1e22b Merge branch 'master' into feature-cnt 2020-05-18 18:23:16 -04:00
6b1dbe2393 the first argument to Bond::extract() should be const char * not char *. 2020-05-18 18:15:10 -04:00
93fe33553a need to set CMake policy CMP0074 to NEW behavior also for finding TBB Malloc 2020-05-18 17:50:28 -04:00
48fa824a32 Merge pull request #5 from lammps/master
update to the current state
2020-05-18 17:33:40 -04:00
e26be18b1e update 2020-05-18 17:28:48 -04:00
8395ec9e43 avoid segfault with eam/intel when using it with a hybrid pair style 2020-05-18 14:31:57 -04:00
c67ca88b04 Fix redundant computation in SNAP on GPUs 2020-05-18 08:42:30 -07:00
9ed2824de8 add missing coulomb tabulation to pair style lj/class2/coul/long 2020-05-15 22:14:08 -04:00
dc74fac4d3 silence compiler warning 2020-05-15 20:04:49 -04:00
fa7319e626 drop fftw_cleanup() completely 2020-05-15 16:57:44 -06:00
b1ee9ad1fe Merge pull request #2091 from stanmoore1/kk_summit
Rename Kokkos Makefile
2020-05-15 17:39:53 -04:00
d39457e46e Merge pull request #2092 from lammps/omega-angmom
Initialize omega and angmom when reading a data file
2020-05-15 17:20:54 -04:00
6f0a56c176 cmake: fftw is now a private dep 2020-05-15 13:42:51 -06:00
58b304be62 move fftw_cleanup() into LAMMPS::cleanup() 2020-05-15 13:30:55 -06:00
f1a9eab5da initialze omega and angmom when read data file 2020-05-15 13:07:34 -06:00
1d52e7f243 Rename Kokkos Makefile 2020-05-15 12:19:16 -06:00
37442ca5cf fix bug in USER-OMP with "pair_modify compute no" and "kspace_modify compute no" 2020-05-15 08:06:23 -04:00
e36d2ce3e6 Do not use -ffast-math by default. Too large a chance of miscompiled code. 2020-05-14 20:48:43 -04:00
87c34fb144 dihedral base class did not initialize suffix_flag member. 2020-05-14 20:48:21 -04:00
20ad924a54 Merge pull request #2082 from stanmoore1/kk_bigint
Fix 32-bit integer overflow in Kokkos neighlist build on GPUs
2020-05-11 20:55:14 -04:00
040cbe378c Merge pull request #2080 from akohlmey/collected-small-changes
Collected small changes for the next patch release
2020-05-11 20:37:59 -04:00
3d0186987d simplify 2020-05-11 18:31:07 -04:00
a6cfe8f642 update Kokkos related documentation about JIT compilation and UVM. 2020-05-11 18:07:51 -04:00
af1aa03446 Merge pull request #2074 from akohlmey/singularity-update
Updates for singularity definition files
2020-05-11 17:44:14 -04:00
b1ac51f721 Fix 32-bit integer overflow in Kokkos neighlist build 2020-05-11 15:11:24 -06:00
9b99ad271f Adding new ptemp keyword to fix nh 2020-05-11 14:34:00 -06:00
23c55b0046 fix "use of class after delete" bug 2020-05-11 16:23:04 -04:00
0ab3ebbac0 improve readability 2020-05-11 13:31:47 -04:00
822c7c5ca1 elimitate nthreads member, change threads from int to bool and determine number of threads dynamically
this fixes #2081
2020-05-11 10:57:27 -04:00
8228cc8987 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes
# Conflicts:
#	src/atom_vec.cpp
2020-05-10 14:09:31 -04:00
6e53608789 a new communicator should have a different number than the old 2020-05-10 14:08:54 -04:00
4ee5eee7cb don't use C++ style comments in C code 2020-05-10 14:08:06 -04:00
afd769314b define _noopt macro with -D_FORTIFY_SOURCE to be empty to avoid false positives 2020-05-10 14:06:56 -04:00
987bff27d4 fix issues in AtomVec refactoring detected by compiler warnings 2020-05-10 14:05:32 -04:00
873a638cc3 fix issues in AtomVec refactoring detected by compiler warnings 2020-05-09 19:45:28 -04:00
b799e44e5c Merge pull request #2077 from rbberger/cmake-fixes
Fix issue when generating lmpgitversion.h
2020-05-08 16:57:33 -04:00
cbd4ce5130 Use absolute path to LAMMPS_DIR for collecting git info 2020-05-08 16:04:55 -04:00
06737ce7a7 Merge pull request #1788 from lammps/atomvec-custom
Refactoring of AtomVec class
2020-05-08 15:18:11 -04:00
6b7e0df7f2 Merge pull request #2073 from ndtrung81/gpu-triclinic
GPU package pair styles to support neighbor list builds on the GPU with triclinic boxes
2020-05-08 14:29:55 -04:00
366d3fe249 update .gitignore and Purge.list 2020-05-08 14:09:59 -04:00
9004b47251 remove trailing whitespace 2020-05-08 01:33:16 -04:00
eefeaf4d25 make OpenMPI only use shared memory comm by default and silence some warnings 2020-05-07 18:15:57 -04:00
18c77db8c3 Add Kokkos vel methods 2020-05-07 15:16:17 -06:00
095801e1d6 Merge pull request #2071 from wmbrownIntel/wmb_mf_cleanup
Partial Cleanup of Conventional Build Makefiles.
2020-05-07 17:02:28 -04:00
d7650e8e02 no need to include googletest libs, we download and compile internally 2020-05-07 17:02:04 -04:00
5db1e4fe8d Initialize variables since Kokkos doesn't call setup_fields 2020-05-07 13:19:12 -06:00
3b77546eb9 Merge pull request #2069 from junghans/latte_v1.2.2
latte: bump to v1.2.2
2020-05-07 14:27:19 -04:00
5fa7e138ea Merge pull request #2070 from junghans/kokkos_v3.1.01
cmake: bump kokkos to v3.1.01
2020-05-07 14:16:56 -04:00
d69009ac45 Fix pointer delete issue with Kokkos package 2020-05-07 11:10:09 -06:00
cc18177153 Whitespace cleanup 2020-05-07 10:46:32 -06:00
3a23a97f64 Merge branch 'atomvec-custom' of github.com:lammps/lammps into atomvec-custom 2020-05-07 10:42:50 -06:00
71149768c6 fix atom_vec_hybrid bug 2020-05-07 10:42:40 -06:00
2b9a1a6982 Fix Kokkos runtime issue with special bonds 2020-05-07 10:35:08 -06:00
69a6a8e064 pull in kokkos-3.1.01 2020-05-07 10:22:42 -06:00
8ed5829d32 Merge branch 'atomvec-custom' of github.com:lammps/lammps into atomvec-custom 2020-05-06 16:25:22 -06:00
25632992f4 updates to USER-SPH example scripts 2020-05-06 16:25:07 -06:00
8301c7a9c6 Merge branch 'master' of ssh://github.com/lammps/lammps into atomvec-custom 2020-05-06 15:53:21 -06:00
7d9091cacc Add back in old hybrid functions, needed by Kokkos package 2020-05-06 15:49:44 -06:00
9e7765064c Merge branch 'atomvec-custom' of github.com:lammps/lammps into atomvec-custom 2020-05-06 15:28:41 -06:00
1225f7d1e0 small changes to examples scripts for regression purposes 2020-05-06 15:28:27 -06:00
801144d2dc make rbberger and akohlmey owner of the singularity defition files 2020-05-06 15:16:21 -04:00
4dce25d89e update some defitions files and also include hack to indicate image type in prompt 2020-05-06 15:07:02 -04:00
bd87b112b5 Allowed pppm/gpu to fall back to pppm for triclinic boxes 2020-05-06 12:07:23 -05:00
229203bac0 Supported neighbor list builds for triclinic boxes on the GPU 2020-05-06 08:51:17 -05:00
db71b3b994 update singularity image defitions to include gtest and libyaml. drop f30 2020-05-06 00:02:04 -04:00
14fb49c1cb Merge pull request #2068 from junghans/cmake_enable_chain.x
cmake: enable Fortran before checking for the compiler
2020-05-05 18:36:08 -04:00
66994562e6 cmake: bump kokkos to v3.1.01 2020-05-05 11:46:09 -06:00
fe62e1dbc9 latte: bump to v1.2.2 2020-05-05 10:51:11 -06:00
fc7b1dc4fd Merge branch 'cmake_enable_chain.x' of github.com:junghans/lammps into cmake_enable_chain.x 2020-05-05 11:27:40 -04:00
b933538dfa tweak tbbmalloc search path for intel 19.1 compiler 2020-05-05 11:27:19 -04:00
8a114fca97 cmake: include where it is used 2020-05-05 08:53:49 -06:00
9708b58939 check for fortran instead of directly enabling it 2020-05-05 10:41:18 -04:00
bcd50646b4 don't enable fortran if the generator does not support it. 2020-05-05 10:23:04 -04:00
b5af7da2c6 cmake: enable Fortran before checking for the compiler 2020-05-05 07:10:42 -06:00
ec0939751e Conventional Makefile cleanup. 2020-05-05 03:27:08 -07:00
ab1ecdccfc fix typo in comment 2020-05-01 14:34:35 -04:00
3ccab20e9e add new false positives 2020-05-01 14:34:27 -04:00
5cb9d12538 whitespace cleanup 2020-05-01 14:34:20 -04:00
8e32f623f1 reformatted table for per-atom fields 2020-05-01 11:48:08 -06:00
a72f034b72 Merge branch 'atomvec-custom' of github.com:lammps/lammps into atomvec-custom 2020-05-01 09:48:11 -06:00
807b0fce7e fix broken doc page links to new fix sph commands 2020-05-01 09:48:01 -06:00
6659946de1 fix more warnins and 64-bit issues 2020-05-01 08:50:07 -04:00
4930389ea4 propagate bugfix in fix omp to OpenMP pragma 2020-05-01 08:38:36 -04:00
adc04f87f6 whitespace fixes 2020-05-01 08:24:24 -04:00
ffc96d6af6 Merge branch 'atomvec-custom' of github.com:lammps/lammps into atomvec-custom 2020-04-30 21:33:16 -06:00
907ffae7b4 add return 0 to atom_vec 2020-04-30 21:32:59 -06:00
e52fee0c56 fix omp uses desph 2020-04-30 21:27:24 -06:00
9dacbe5f46 two other dirs depend on changed esph and desph 2020-04-30 21:22:19 -06:00
25b6d98658 correct references and table format 2020-04-30 20:19:23 -04:00
8689b7a404 Merge branch 'master' into atomvec-custom 2020-04-30 20:09:23 -04:00
5e619b65f6 USER-SPH doc tweak 2020-04-30 17:08:05 -06:00
ec9b7c787d more doc changes for USER-SPH 2020-04-30 16:52:32 -06:00
4eb4839f6d renaming of variables and command names in USER-SPH 2020-04-30 16:40:09 -06:00
5ec357adfc spelling errors 2020-04-30 15:06:59 -06:00
dda5cb0967 typo in atom_vec.h 2020-04-30 12:02:49 -06:00
ecd3652f61 update to current master 2020-04-30 11:57:17 -06:00
be93ef7b20 update 2020-03-25 22:53:58 -04:00
25199e0e57 update 2020-03-25 22:37:26 -04:00
09097e14b9 update 2020-03-25 22:35:55 -04:00
4f0540b331 update 2020-03-25 22:24:26 -04:00
9c51bb6cb3 Merge pull request #4 from lammps/master
update
2020-03-25 21:25:33 -04:00
9ac445005b Merge pull request #3 from lammps/master
update
2020-03-25 21:10:27 -04:00
c05e1871bf style issues 2020-03-25 20:26:39 -04:00
fa4ef70829 code issues 2020-03-25 20:18:07 -04:00
c793db66d2 fix style related issues 2020-03-20 14:45:26 -04:00
a8fc2005d4 Merge branch 'master' into feature-cnt 2020-03-20 14:35:57 -04:00
53ccc4c607 fix code related issues 2020-03-20 14:21:24 -04:00
f60a7ace87 Merge pull request #2 from lammps/master
update the fork to the current state
2020-03-20 14:19:23 -04:00
986e5b746e new doc edits for refactored AtomVec styles 2020-03-18 16:40:29 -06:00
bdbbe00ec7 Merge branch 'master' into feature-cnt 2020-03-06 18:41:38 -05:00
8c580c1d47 Merge pull request #1 from lammps/master
update fork to the state of the current master
2020-03-06 18:39:09 -05:00
8c82c60f2f fix of style related issues 2020-02-07 13:29:05 -05:00
0204bf286b CNT package
The tubular potential model (TPM) force field for Carbon Nanotubes (CNTs) package.
2020-02-06 16:50:38 -05:00
950300c86a Merge branch 'atomvec-custom' of github.com:lammps/lammps into atomvec-custom 2020-01-30 14:28:10 -07:00
d34f9af291 fixed bug with writing of data file velocities 2020-01-30 14:27:45 -07:00
34778c4919 Restore virtual keyword for Kokkos package 2020-01-29 14:10:42 -07:00
44178a335e Propagate rename to Kokkos styles 2020-01-29 13:56:34 -07:00
ccc8f29d60 added support for USER-AWPMD package 2019-12-18 12:04:37 -07:00
b6374bacfb enable replicate to work with local ptrs 2019-12-18 08:56:03 -07:00
db6d272303 more additions to USER atom styles and bug fixes 2019-12-13 13:54:12 -07:00
9af08f2d54 small change for atom_style mdpd 2019-12-06 10:06:16 -07:00
f51ee40640 atom_vec.cpp 2019-12-03 11:24:12 -07:00
9e52980aaa all of remaining USER package styles except AWPMD 2019-12-03 11:15:16 -07:00
ccca80a6a5 changes to enable atom_style hybrid to work 2019-12-02 15:39:54 -07:00
4f6cb13592 added atom styles with bonus data, also a few USER packages 2019-11-27 16:03:50 -07:00
6c18e366d7 changes to start to make atom style hybrid work 2019-11-26 18:34:51 -07:00
3736af0aaf initial refactoring on AtomVec class 2019-11-26 13:42:32 -07:00
1246 changed files with 881554 additions and 2048828 deletions

9
.github/CODEOWNERS vendored
View File

@ -10,6 +10,7 @@ lib/molfile/* @akohlmey
lib/qmmm/* @akohlmey
lib/vtk/* @rbberger
lib/kim/* @ellio167
lib/mesont/* @iafoss
# whole packages
src/COMPRESS/* @akohlmey
@ -25,6 +26,7 @@ src/USER-COLVARS/* @giacomofiorin
src/USER-INTEL/* @wmbrownintel
src/USER-MANIFOLD/* @Pakketeretet2
src/USER-MEAMC/* @martok
src/USER-MESONT/* @iafoss
src/USER-MOFFF/* @hheenen
src/USER-MOLFILE/* @akohlmey
src/USER-NETCDF/* @pastewka
@ -111,14 +113,21 @@ src/fix_nh.* @athomps
src/info.* @akohlmey @rbberger
src/timer.* @akohlmey
src/min* @sjplimp @stanmoore1
src/utils.* @akohlmey @rbberger
# tools
tools/msi2lmp/* @akohlmey
tools/emacs/* @HaoZeke
tools/singularity/* @akohlmey @rbberger
# tests
unittest/* @akohlmey @rbberger
# cmake
cmake/* @junghans @rbberger
cmake/Modules/Packages/USER-COLVARS.cmake @junghans @rbberger @giacomofiorin
cmake/Modules/Packages/KIM.cmake @junghans @rbberger @ellio167
cmake/presets/*.cmake @junghans @rbberger @akohlmey
# python
python/* @rbberger

View File

@ -75,7 +75,9 @@ Here is a checklist of steps you need to follow to submit a single file or user
* Your new source files need to have the LAMMPS copyright, GPL notice, and your name and email address at the top, like other user-contributed LAMMPS source files. They need to create a class that is inside the LAMMPS namespace. If the file is for one of the USER packages, including USER-MISC, then we are not as picky about the coding style (see above). I.e. the files do not need to be in the same stylistic format and syntax as other LAMMPS files, though that would be nice for developers as well as users who try to read your code.
* You **must** also create or extend a documentation file for each new command or style you are adding to LAMMPS. For simplicity and convenience, the documentation of groups of closely related commands or styles may be combined into a single file. This will be one file for a single-file feature. For a package, it might be several files. These are files in the [reStructuredText](https://docutils.sourceforge.io/rst.html) markup language, that are then converted to HTML and PDF. The tools for this conversion are included in the source distribution, and the translation can be as simple as doing "make html pdf" in the doc folder. Thus the documentation source files must be in the same format and style as other `<name>.rst` files in the lammps/doc/src directory for similar commands and styles; use one or more of them as a starting point. An introduction to reStructuredText can be found at [https://docutils.sourceforge.io/docs/user/rst/quickstart.html](https://docutils.sourceforge.io/docs/user/rst/quickstart.html). The text files can include mathematical expressions and symbol in ".. math::" sections or ":math:" expressions or figures (see doc/JPG for examples), or even additional PDF files with further details (see doc/PDF for examples). The doc page should also include literature citations as appropriate; see the bottom of doc/fix_nh.rst for examples and the earlier part of the same file for how to format the cite itself. The "Restrictions" section of the doc page should indicate that your command is only available if LAMMPS is built with the appropriate USER-MISC or USER-FOO package. See other user package doc files for examples of how to do this. The prerequisite for building the HTML format files are Python 3.x and virtualenv. Please run at least `make html`, `make pdf` and `make spelling` and carefully inspect and proofread the resulting HTML format doc page as well as the output produced to the screen. Make sure that all spelling errors are fixed or the necessary false positives are added to the `doc/utils/sphinx-config/false_positives.txt` file. For new styles, those usually also need to be added to lists on the respective overview pages. This can be checked for also with `make style_check`.
* For a new package (or even a single command) you should include one or more example scripts demonstrating its use. These should run in no more than a couple minutes, even on a single processor, and not require large data files as input. See directories under examples/USER for examples of input scripts other users provided for their packages. These example inputs are also required for validating memory accesses and testing for memory leaks with valgrind
* If there is a paper of yours describing your feature (either the algorithm/science behind the feature itself, or its initial usage, or its implementation in LAMMPS), you can add the citation to the *.cpp source file. See src/USER-EFF/atom_vec_electron.cpp for an example. A LaTeX citation is stored in a variable at the top of the file and a single line of code that references the variable is added to the constructor of the class. Whenever a user invokes your feature from their input script, this will cause LAMMPS to output the citation to a log.cite file and prompt the user to examine the file. Note that you should only use this for a paper you or your group authored. E.g. adding a cite in the code for a paper by Nose and Hoover if you write a fix that implements their integrator is not the intended usage. That kind of citation should just be in the doc page you provide.
* For new utility functions or class (i.e. anything that does not depend on a LAMMPS object), new unit tests should be added to the unittest tree.
* When adding a new LAMMPS style, a .yaml file with a test configuration and reference data should be added for the styles where a suitable tester program already exists (e.g. pair styles, bond styles, etc.).
* If there is a paper of yours describing your feature (either the algorithm/science behind the feature itself, or its initial usage, or its implementation in LAMMPS), you can add the citation to the <name>.cpp source file. See src/USER-EFF/atom_vec_electron.cpp for an example. A LaTeX citation is stored in a variable at the top of the file and a single line of code that references the variable is added to the constructor of the class. Whenever a user invokes your feature from their input script, this will cause LAMMPS to output the citation to a log.cite file and prompt the user to examine the file. Note that you should only use this for a paper you or your group authored. E.g. adding a cite in the code for a paper by Nose and Hoover if you write a fix that implements their integrator is not the intended usage. That kind of citation should just be in the doc page you provide.
Finally, as a general rule-of-thumb, the more clear and self-explanatory you make your documentation and README files, and the easier you make it for people to get started, e.g. by providing example scripts, the more likely it is that users will try out your new feature.

View File

@ -34,6 +34,7 @@ By submitting this pull request, I agree, that my contribution will be included
- [ ] The added/updated documentation is integrated and tested with the documentation build system
- [ ] The feature has been verified to work with the conventional build system
- [ ] The feature has been verified to work with the CMake based build system
- [ ] Suitable tests have been added to the unittest tree.
- [ ] A package specific README file has been included or updated
- [ ] One or more example input decks are included

View File

@ -1,51 +0,0 @@
These are input scripts used to run versions of several of the
benchmarks in the top-level bench directory using the GPU accelerator
package. The results of running these scripts on two different machines
(a desktop with 2 Tesla GPUs and the ORNL Titan supercomputer) are shown
on the "GPU (Fermi)" section of the Benchmark page of the LAMMPS WWW
site: lammps.sandia.gov/bench.
Examples are shown below of how to run these scripts. This assumes
you have built 3 executables with the GPU package
installed, e.g.
lmp_linux_single
lmp_linux_mixed
lmp_linux_double
------------------------------------------------------------------------
To run on just CPUs (without using the GPU styles),
do something like the following:
mpirun -np 1 lmp_linux_double -v x 8 -v y 8 -v z 8 -v t 100 < in.lj
mpirun -np 12 lmp_linux_double -v x 16 -v y 16 -v z 16 -v t 100 < in.eam
The "xyz" settings determine the problem size. The "t" setting
determines the number of timesteps.
These mpirun commands run on a single node. To run on multiple
nodes, scale up the "-np" setting.
------------------------------------------------------------------------
To run with the GPU package, do something like the following:
mpirun -np 12 lmp_linux_single -sf gpu -v x 32 -v y 32 -v z 64 -v t 100 < in.lj
mpirun -np 8 lmp_linux_mixed -sf gpu -pk gpu 2 -v x 32 -v y 32 -v z 64 -v t 100 < in.eam
The "xyz" settings determine the problem size. The "t" setting
determines the number of timesteps. The "np" setting determines how
many MPI tasks (per node) the problem will run on. The numeric
argument to the "-pk" setting is the number of GPUs (per node); 1 GPU
is the default. Note that you can use more MPI tasks than GPUs (per
node) with the GPU package.
These mpirun commands run on a single node. To run on multiple nodes,
scale up the "-np" setting, and control the number of MPI tasks per
node via a "-ppn" setting.
------------------------------------------------------------------------
If the script has "titan" in its name, it was run on the Titan
supercomputer at ORNL.

View File

@ -1,24 +0,0 @@
# bulk Cu lattice
units metal
atom_style atomic
lattice fcc 3.615
region box block 0 $x 0 $y 0 $z
create_box 1 box
create_atoms 1 box
pair_style eam
pair_coeff 1 1 Cu_u3.eam
velocity all create 1600.0 376847 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 5 check yes
fix 1 all nve
timestep 0.005
thermo 50
run $t

View File

@ -1,37 +0,0 @@
# bulk Cu lattice
newton off
package gpu force/neigh 0 0 1
processors * * * grid numa
variable x index 1
variable y index 1
variable z index 1
variable xx equal 20*$x
variable yy equal 20*$y
variable zz equal 20*$z
units metal
atom_style atomic
lattice fcc 3.615
region box block 0 ${xx} 0 ${yy} 0 ${zz}
create_box 1 box
create_atoms 1 box
pair_style eam/gpu
pair_coeff 1 1 Cu_u3.eam
velocity all create 1600.0 376847 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 5 check yes
fix 1 all nve
timestep 0.005
thermo 50
run 15
run 100

View File

@ -1,22 +0,0 @@
# 3d Lennard-Jones melt
units lj
atom_style atomic
lattice fcc 0.8442
region box block 0 $x 0 $y 0 $z
create_box 1 box
create_atoms 1 box
mass 1 1.0
velocity all create 1.44 87287 loop geom
pair_style lj/cut 2.5
pair_coeff 1 1 1.0 1.0 2.5
neighbor 0.3 bin
neigh_modify delay 0 every 20 check no
fix 1 all nve
run $t

View File

@ -1,35 +0,0 @@
# 3d Lennard-Jones melt
newton off
package gpu force/neigh 0 0 1
processors * * * grid numa
variable x index 1
variable y index 1
variable z index 1
variable xx equal 20*$x
variable yy equal 20*$y
variable zz equal 20*$z
units lj
atom_style atomic
lattice fcc 0.8442
region box block 0 ${xx} 0 ${yy} 0 ${zz}
create_box 1 box
create_atoms 1 box
mass 1 1.0
velocity all create 1.44 87287 loop geom
pair_style lj/cut/gpu 2.5
pair_coeff 1 1 1.0 1.0 2.5
neighbor 0.3 bin
neigh_modify delay 0 every 20 check no
fix 1 all nve
run 15
run 100

View File

@ -1,30 +0,0 @@
# Rhodopsin model
units real
neigh_modify delay 5 every 1
atom_style full
atom_modify map hash
bond_style harmonic
angle_style charmm
dihedral_style charmm
improper_style harmonic
pair_style lj/charmm/coul/long 8.0 10.0
pair_modify mix arithmetic
kspace_style pppm 1e-4
read_data data.rhodo
replicate $x $y $z
fix 1 all shake 0.0001 5 0 m 1.0 a 232
fix 2 all npt temp 300.0 300.0 100.0 &
z 0.0 0.0 1000.0 mtk no pchain 0 tchain 1
special_bonds charmm
thermo 50
thermo_style multi
timestep 2.0
run $t

View File

@ -1,39 +0,0 @@
# Rhodopsin model
newton off
package gpu force/neigh 0 0 1
processors * * * grid numa
variable x index 1
variable y index 1
variable z index 1
units real
neigh_modify delay 5 every 1
atom_style full
atom_modify map hash
bond_style harmonic
angle_style charmm
dihedral_style charmm
improper_style harmonic
pair_style lj/charmm/coul/long/gpu 8.0 ${cutoff}
pair_modify mix arithmetic
kspace_style pppm/gpu 1e-4
read_data data.rhodo
replicate $x $y $z
fix 1 all shake 0.0001 5 0 m 1.0 a 232
fix 2 all npt temp 300.0 300.0 100.0 &
z 0.0 0.0 1000.0 mtk no pchain 0 tchain 1
special_bonds charmm
thermo 50
# thermo_style multi
timestep 2.0
run 15
run 100

View File

@ -1,42 +0,0 @@
# Rhodopsin model
newton off
package gpu force/neigh 0 0 1
partition yes 1 processors * * * grid twolevel ${grid} * * * &
part 1 2 multiple
partition yes 2 processors * * * part 1 2 multiple
variable x index 1
variable y index 1
variable z index 1
units real
neigh_modify delay 5 every 1
atom_style full
atom_modify map hash
bond_style harmonic
angle_style charmm
dihedral_style charmm
improper_style harmonic
pair_style lj/charmm/coul/long/gpu 8.0 ${cutoff}
pair_modify mix arithmetic
kspace_style pppm/gpu 1e-4
read_data data.rhodo
replicate $x $y $z
fix 1 all shake 0.0001 5 0 m 1.0 a 232
fix 2 all npt temp 300.0 300.0 100.0 &
z 0.0 0.0 1000.0 mtk no pchain 0 tchain 1
special_bonds charmm
thermo 50
# thermo_style multi
timestep 2.0
run_style verlet/split
run 15
run 100

View File

@ -1,2 +0,0 @@
rc = 4.0
delr = 0.1

1
bench/POTENTIALS/Ni.meam Symbolic link
View File

@ -0,0 +1 @@
../../potentials/Ni.meam

View File

@ -1,17 +0,0 @@
# Stillinger-Weber parameters for various elements and mixtures
# multiple entries can be added to this file, LAMMPS reads the ones it needs
# these entries are in LAMMPS "metal" units:
# epsilon = eV; sigma = Angstroms
# other quantities are unitless
# format of a single entry (one or more lines):
# element 1, element 2, element 3,
# epsilon, sigma, a, lambda, gamma, costheta0, A, B, p, q, tol
# Here are the original parameters in metal units, for Silicon from:
#
# Stillinger and Weber, Phys. Rev. B, v. 31, p. 5262, (1985)
#
Si Si Si 2.1683 2.0951 1.80 21.0 1.20 -0.333333333333
7.049556277 0.6022245584 4.0 0.0 0.0

1
bench/POTENTIALS/Si.sw Symbolic link
View File

@ -0,0 +1 @@
../../potentials/Si.sw

View File

@ -1,16 +0,0 @@
# Tersoff parameters for various elements and mixtures
# multiple entries can be added to this file, LAMMPS reads the ones it needs
# these entries are in LAMMPS "metal" units:
# A,B = eV; lambda1,lambda2,lambda3 = 1/Angstroms; R,D = Angstroms
# other quantities are unitless
# This is the Si parameterization from a particular Tersoff paper:
# J. Tersoff, PRB, 37, 6991 (1988)
# See the SiCGe.tersoff file for different Si variants.
# format of a single entry (one or more lines):
# element 1, element 2, element 3,
# m, gamma, lambda3, c, d, costheta0, n, beta, lambda2, B, R, D, lambda1, A
Si Si Si 3.0 1.0 1.3258 4.8381 2.0417 0.0000 22.956
0.33675 1.3258 95.373 3.0 0.2 3.2394 3264.7

1
bench/POTENTIALS/Si.tersoff Symbolic link
View File

@ -0,0 +1 @@
../../potentials/Si.tersoff

View File

@ -1,24 +0,0 @@
# bulk Ni in MEAM
units metal
atom_style atomic
lattice fcc 3.52
region box block 0 20 0 20 0 20
create_box 1 box
create_atoms 1 box
pair_style meam
pair_coeff * * library.meam Ni4 Ni.meam Ni4
velocity all create 1600.0 376847 loop geom
neighbor 1.0 bin
neigh_modify delay 5 every 1
fix 1 all nve
timestep 0.005
thermo 50
run 100

View File

@ -1,22 +0,0 @@
# ReaxFF benchmark: simulation of PETN crystal, replicated unit cell
units real
atom_style charge
read_data data.reax
#replicate 7 8 10
replicate 7 8 5
velocity all create 300.0 9999
pair_style reax
pair_coeff * * ffield.reax 1 2 3 4
timestep 0.1
fix 2 all nve
thermo 10
thermo_style custom step temp ke pe pxx pyy pzz etotal
run 100

View File

@ -1,162 +0,0 @@
# meam data from vax files fcc,bcc,dia 11/4/92
# elt lat z ielement atwt
# alpha b0 b1 b2 b3 alat esub asub
# t0 t1 t2 t3 rozero ibar
'Sn5' 'dia' 4. 50 118.
5.09 5.00 16.0 04.0 5.0 6.483 3.14 1.00
1.0 2.00 5.756 -0.30 1. 0
'Sn' 'dia' 4. 50 118.
5.09 5.42 8.0 5.0 6.0 6.483 3.14 1.12
1.0 3.0 5.707 +0.30 1. 0
'Cu' 'fcc' 12. 29 63.54
5.10570729 3.634 2.20 6 2.20 3.62 3.54 1.07
1.0 3.13803254 2.49438711 2.95269237 1. 0
'Ag' 'fcc' 12. 47 107.870
5.89222008 4.456 2.20 6 2.20 4.08 2.85 1.06
1.0 5.54097609 2.45015783 1.28843988 1. 0
'Au' 'fcc' 12. 79 196.967
6.34090112 5.449 2.20 6 2.20 4.07 3.93 1.04
1.0 1.58956328 1.50776392 2.60609758 1. 0
'Ni1' 'fcc' 12. 28 58.71
4.99 2.45 2.20 6 2.20 3.52 4.45 1.10
1.0 3.57 1.60 3.70 1.0 0
'Ni2' 'fcc' 12. 28 58.71
4.99 2.45 2.20 6 2.20 3.52 4.45 1.10
1.0 3.57 1.60 3.70 1.0 3
'Ni3' 'fcc' 12. 28 58.71
4.99 2.45 1.50 6 1.50 3.52 4.45 1.10
1.0 3.57 1.60 3.70 1.0 3
'Ni4' 'fcc' 12. 28 58.71
4.99 2.45 1.50 6 1.50 3.52 4.45 1.10
1.0 3.57 1.60 3.70 1.0 0
'Ni' 'fcc' 12. 28 58.71
4.99 2.64 1.50 4.50 1.50 3.52 4.45 1.10
1.0 1.692 4.987 3.683 1.0 1
'Nix' 'fcc' 12. 28 58.71
4.99 2.64 1.50 4.50 1.50 3.52 4.45 1.10
1.0 0.00 0.000 3.683 1.0 1
'Ni' 'fcc' 12. 28 58.71
4.99 3.25 0.80 4 1.50 3.52 4.45 1.07
1.0 -4.052 13.14 3.786 1.0 1
'Pd' 'fcc' 12. 46 106.4
6.43230473 4.975 2.20 6 2.20 3.89 3.91 1.01
1.0 2.33573516 1.38343023 4.47989049 1. 0
'Pt' 'fcc' 12. 78 195.09
6.44221724 4.673 2.20 6 2.20 3.92 5.77 1.04
1.0 2.73335406 -1.3759593 3.29322278 1. 0
'Al' 'fcc' 12. 13 26.9815
4.61 2.21 2.20 6.0 2.20 4.05 3.58 1.07
1.0 -1.78 -2.21 8.01 0.6 0
'Al' 'fcc' 12. 13 26.9815
4.69 1.56 4.00 5.5 0.60 4.05 3.36 1.09
1.0 -0.251 -3.450 8.298 0.6 1
'Al' 'fcc' 12. 13 26.9815
4.69 1.58 1.00 6.0 0.60 4.05 3.36 1.09
1.0 -0.808 -2.614 8.298 0.6 1
'Pb' 'fcc' 12. 82 207.19
6.0564428 5.306 2.20 6 2.20 4.95 2.04 1.01
1.0 2.74022352 3.06323991 1.2 1. 0
'Rh' 'fcc' 12. 45 102.905
6.0045385 1.131 1.00 2 1.00 3.8 5.75 1.05
1.0 2.9900 4.60231784 4.8 1. 0
'Ir' 'fcc' 12. 77 192.2
6.52315787 1.13 1.00 2 1.00 3.84 6.93 1.05
1.0 1.50000 8.09942666 4.8 1. 0
'Li' 'bcc' 8. 3 6.939
2.97244804 1.425 1.00 1.00169907 1.00 3.509 1.65 0.87
1.0 0.26395017 0.44431129 -0.2 1. 0
'Na' 'bcc' 8. 11 22.9898
3.64280541 2.313 1.00 1.00173951 1.00 4.291 1.13 0.9
1.0 3.55398839 0.68807569 -0.2 1. 0
'K' 'bcc' 8. 19 39.102
3.90128376 2.687 1.00 1.00186667 1.00 5.344 0.94 0.92
1.0 5.09756981 0.69413264 -0.2 1. 0
'V' 'bcc' 8. 23 50.942
4.83265262 4.113 1.00 1.00095022 1.00 3.04 5.3 1
1.0 4.20161301 4.09946561 -1 1. 0
'Nb' 'bcc' 8. 41 92.906
4.79306197 4.374 1.00 1.00101441 1.00 3.301 7.47 1
1.0 3.75762849 3.82514598 -1 1. 0
'Ta' 'bcc' 8. 73 180.948
4.89528669 3.709 1.00 1.00099783 1.00 3.303 8.09 0.99
1.0 6.08617812 3.35255804 -2.9 1. 0
'Cr' 'bcc' 8. 24 51.996
5.12169218 3.224 1.00 1.00048646 1.00 2.885 4.1 0.94
1.0 -0.207535 12.2600006 -1.9 1. 0
'Mo' 'bcc' 8. 42 95.94
5.84872871 4.481 1.00 1.00065204 1.00 3.15 6.81 0.99
1.0 3.47727181 9.48582009 -2.9 1. 0
'W' 'bcc' 8. 74 183.85
5.62777409 3.978 1.00 1.00065894 1.00 3.165 8.66 0.98
1.0 3.16353338 8.24586928 -2.7 1. 0
'WL' 'bcc' 8 74 183.85
5.6831 6.54 1 1 1 3.1639 8.66 0.4
1 -0.6 0.3 -8.7 1 3
'Fe' 'bcc' 8. 26 55.847
5.07292627 2.935 1.00 1.00080073 1.00 2.866 4.29 0.89
1.0 5.13579244 4.12042448 -2.7 1. 0
'Si' 'dia' 4. 14 28.086
4.87 4.8 4.8 4.8 4.8 5.431 4.63 1.
1.0 3.30 5.105 -0.80 1. 1
'Si97' 'dia' 4. 14 28.086
4.87 4.4 5.5 5.5 5.5 5.431 4.63 1.
1.0 3.13 4.47 -1.80 2.05 0
'Si92' 'dia' 4. 14 28.086
4.87 4.4 5.5 5.5 5.5 5.431 4.63 1.
1.0 3.13 4.47 -1.80 2.35 0
'Six' 'dia' 4 14 28.086
4.87 4.4 5.5 5.5 5.5 5.431 4.63 1.0
1.0 2.05 4.47 -1.8 2.05 0
'Sixb' 'dia' 4 14 28.086
4.87 4.4 5.5 5.5 5.5 5.431 4.63 1.0
1.0 2.05 4.47 -1.8 2.5 0
'Mg' 'hcp' 12. 12 24.305
5.45 2.70 0.0 0.35 3.0 3.20 1.55 1.11
1.0 8.00 04.1 -02.0 1.0 0
'C' 'dia' 4. 6 12.0111
4.38 4.10 4.200 5.00 3.00 3.567 7.37 1.000
1.0 5.0 9.34 -1.00 2.25 1
'C' 'dia' 4. 6 12.0111
4.38 5.20 3.87 4.00 4.50 3.567 7.37 1.278
1.0 15. 2.09 -6.00 2.5 1
'C' 'dia' 4. 6 12.0111
4.38 4.50 4.00 3.50 4.80 3.567 7.37 1.00
1.0 10.5 1.54 -8.75 3.2 1
'C' 'dia' 4. 6 12.0111
4.38 3.30 2.80 1.50 3.20 3.567 7.37 1.00
1.0 10.3 1.54 -8.80 2.5 1
'C' 'dia' 4. 6 12.0111
4.38 4.60 3.45 4.00 4.20 3.567 7.37 1.061
1.0 15.0 1.74 -8.00 2.5 1
'C' 'dia' 4. 6 12.0111
4.38 4.50 4.00 3.50 4.80 3.567 7.37 1.00
1.0 10.5 1.54 -8.75 3.2 1
'h' 'dim' 1. 1 1.0079
2.96 2.70 3.5 3.4 3.4 0.74 2.235 2.27
1.0 0.19 0.00 0.00 20.00 0
'h' 'dim' 1. 1 1.0079
2.96 2.00 4.0 4.0 0.0 0.74 2.235 1.00
1.0 -0.60 -0.80 -0.0 01.0 1
'H' 'dim' 1. 1 1.0079
2.96 2.96 3.0 3.0 3.0 0.74 2.235 2.50
1.0 0.20 -0.10 0.0 0.5 0
'H' 'dim' 1. 1 1.0079
2.96 2.0 3.0 4.0 0.0 0.74 2.225 1.00
1.0 -0.5 -1.00 0.0 0.15 1
'H' 'dim' 1. 1 1.0079
2.96 2.00 2.0 2.0 2.0 0.74 2.235 1.00
1.0 -0.60 -0.80 -0.0 01.0 2
'Hni' 'dim' 1. 1 1.0079
2.96 2.96 3.0 3.0 3.0 0.74 2.235 2.50
1.0 0.2 -0.1 0.0 0.5 0
'Hni' 'dim' 1. 1 1.0079
2.96 2.96 3.0 2.0 3.0 0.74 2.235 36.4
1.0 0.2 6.0 0.0 22.8 0
'Vac' 'fcc' 12. 1 1.
0 0 0.0 0 0.0 1E+08 0 1
0 0 0 0 1. 0
'zz' 'zzz' 99. 1 1.
0 0 0.0 0 0.0 0. 0. 0.
0 0 0 0 1. 0

View File

@ -0,0 +1 @@
../../potentials/library.meam

View File

@ -1,84 +0,0 @@
LAMMPS (16 Mar 2018)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
using 1 OpenMP thread(s) per MPI task
# bulk Ni in MEAM
units metal
atom_style atomic
lattice fcc 3.52
Lattice spacing in x,y,z = 3.52 3.52 3.52
region box block 0 20 0 20 0 20
create_box 1 box
Created orthogonal box = (0 0 0) to (70.4 70.4 70.4)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 32000 atoms
Time spent = 0.00186539 secs
pair_style meam
WARNING: The pair_style meam command is unsupported. Please use pair_style meam/c instead (../pair_meam.cpp:51)
pair_coeff * * library.meam Ni4 Ni.meam Ni4
velocity all create 1600.0 376847 loop geom
neighbor 1.0 bin
neigh_modify delay 5 every 1
fix 1 all nve
timestep 0.005
thermo 50
run 100
Neighbor list info ...
update every 1 steps, delay 5 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 5
ghost atom cutoff = 5
binsize = 2.5, bins = 29 29 29
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair meam, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
(2) pair meam, perpetual, half/full from (1)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 55.91 | 55.91 | 55.91 Mbytes
Step Temp E_pair E_mol TotEng Press
0 1600 -142400 0 -135782.09 20259.18
50 885.10702 -139411.51 0 -135750.54 32425.433
100 895.5097 -139454.3 0 -135750.3 31804.187
Loop time of 30.6278 on 1 procs for 100 steps with 32000 atoms
Performance: 1.410 ns/day, 17.015 hours/ns, 3.265 timesteps/s
99.8% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 30.088 | 30.088 | 30.088 | 0.0 | 98.24
Neigh | 0.48914 | 0.48914 | 0.48914 | 0.0 | 1.60
Comm | 0.015916 | 0.015916 | 0.015916 | 0.0 | 0.05
Output | 0.00022554 | 0.00022554 | 0.00022554 | 0.0 | 0.00
Modify | 0.025481 | 0.025481 | 0.025481 | 0.0 | 0.08
Other | | 0.009055 | | | 0.03
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 13576 ave 13576 max 13576 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 780360 ave 780360 max 780360 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 1.56072e+06 ave 1.56072e+06 max 1.56072e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 1560720
Ave neighs/atom = 48.7725
Neighbor list builds = 8
Dangerous builds = 0
Total wall time: 0:00:30

View File

@ -1,84 +0,0 @@
LAMMPS (16 Mar 2018)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
using 1 OpenMP thread(s) per MPI task
# bulk Ni in MEAM
units metal
atom_style atomic
lattice fcc 3.52
Lattice spacing in x,y,z = 3.52 3.52 3.52
region box block 0 20 0 20 0 20
create_box 1 box
Created orthogonal box = (0 0 0) to (70.4 70.4 70.4)
1 by 2 by 2 MPI processor grid
create_atoms 1 box
Created 32000 atoms
Time spent = 0.000587463 secs
pair_style meam
WARNING: The pair_style meam command is unsupported. Please use pair_style meam/c instead (../pair_meam.cpp:51)
pair_coeff * * library.meam Ni4 Ni.meam Ni4
velocity all create 1600.0 376847 loop geom
neighbor 1.0 bin
neigh_modify delay 5 every 1
fix 1 all nve
timestep 0.005
thermo 50
run 100
Neighbor list info ...
update every 1 steps, delay 5 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 5
ghost atom cutoff = 5
binsize = 2.5, bins = 29 29 29
2 neighbor lists, perpetual/occasional/extra = 2 0 0
(1) pair meam, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
(2) pair meam, perpetual, half/full from (1)
attributes: half, newton on
pair build: halffull/newton
stencil: none
bin: none
Per MPI rank memory allocation (min/avg/max) = 17.41 | 17.41 | 17.41 Mbytes
Step Temp E_pair E_mol TotEng Press
0 1600 -142400 0 -135782.09 20259.18
50 885.10702 -139411.51 0 -135750.54 32425.433
100 895.5097 -139454.3 0 -135750.3 31804.187
Loop time of 8.21941 on 4 procs for 100 steps with 32000 atoms
Performance: 5.256 ns/day, 4.566 hours/ns, 12.166 timesteps/s
99.2% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 8.0277 | 8.0384 | 8.0504 | 0.3 | 97.80
Neigh | 0.12555 | 0.12645 | 0.12713 | 0.2 | 1.54
Comm | 0.024279 | 0.036776 | 0.048389 | 4.5 | 0.45
Output | 9.4414e-05 | 0.00011903 | 0.00018597 | 0.0 | 0.00
Modify | 0.01252 | 0.012608 | 0.012795 | 0.1 | 0.15
Other | | 0.005028 | | | 0.06
Nlocal: 8000 ave 8045 max 7947 min
Histogram: 1 0 0 1 0 0 0 1 0 1
Nghost: 6066.75 ave 6120 max 6021 min
Histogram: 1 0 1 0 0 0 1 0 0 1
Neighs: 195090 ave 196403 max 193697 min
Histogram: 1 0 0 1 0 0 0 1 0 1
FullNghs: 390180 ave 392616 max 387490 min
Histogram: 1 0 0 1 0 0 0 1 0 1
Total # of neighbors = 1560720
Ave neighs/atom = 48.7725
Neighbor list builds = 8
Dangerous builds = 0
Total wall time: 0:00:08

View File

@ -1,86 +0,0 @@
LAMMPS (16 Mar 2018)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
using 1 OpenMP thread(s) per MPI task
# ReaxFF benchmark: simulation of PETN crystal, replicated unit cell
units real
atom_style charge
read_data data.reax
orthogonal box = (0 0 0) to (9.49107 9.49107 6.99123)
1 by 1 by 1 MPI processor grid
reading atoms ...
58 atoms
#replicate 7 8 10
replicate 7 8 5
orthogonal box = (0 0 0) to (66.4375 75.9285 34.9562)
1 by 1 by 1 MPI processor grid
16240 atoms
Time spent = 0.000834942 secs
velocity all create 300.0 9999
pair_style reax
WARNING: The pair_style reax command is unsupported. Please switch to pair_style reax/c instead (../pair_reax.cpp:49)
pair_coeff * * ffield.reax 1 2 3 4
timestep 0.1
fix 2 all nve
thermo 10
thermo_style custom step temp ke pe pxx pyy pzz etotal
run 100
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 12
ghost atom cutoff = 12
binsize = 6, bins = 12 13 6
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair reax, perpetual
attributes: half, newton off
pair build: half/bin/newtoff
stencil: half/bin/3d/newtoff
bin: standard
Per MPI rank memory allocation (min/avg/max) = 115.8 | 115.8 | 115.8 Mbytes
Step Temp KinEng PotEng Pxx Pyy Pzz TotEng
0 300 14521.612 -1616144.2 22296.712 -29858.677 5721.0921 -1601622.5
10 298.98728 14472.591 -1616093.9 21955.847 -24067.096 7389.148 -1601621.3
20 294.76158 14268.045 -1615890.1 19179.258 -10513.494 10789.925 -1601622
30 288.56967 13968.323 -1615591.2 13854.377 5833.02 13949.731 -1601622.9
40 282.06725 13653.571 -1615278.2 6259.9845 19406.33 14947.939 -1601624.6
50 274.84112 13303.787 -1614931.9 -2009.6832 26964.336 13346.855 -1601628.2
60 266.20153 12885.585 -1614519.7 -8441.1641 28485.532 10195.429 -1601634.1
70 259.17085 12545.262 -1614184.2 -11426.993 24941.516 6572.2953 -1601638.9
80 259.73004 12572.33 -1614216.7 -10867.598 16928.461 3033.9021 -1601644.3
90 269.2352 13032.431 -1614679 -7962.3129 4931.5317 -280.22164 -1601646.6
100 280.67181 13586.024 -1615234.3 -3606.1519 -8769.8482 -2527.5887 -1601648.3
Loop time of 358.104 on 1 procs for 100 steps with 16240 atoms
Performance: 0.002 ns/day, 9947.338 hours/ns, 0.279 timesteps/s
99.8% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 358.07 | 358.07 | 358.07 | 0.0 | 99.99
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.01623 | 0.01623 | 0.01623 | 0.0 | 0.00
Output | 0.0013328 | 0.0013328 | 0.0013328 | 0.0 | 0.00
Modify | 0.012679 | 0.012679 | 0.012679 | 0.0 | 0.00
Other | | 0.006895 | | | 0.00
Nlocal: 16240 ave 16240 max 16240 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 32428 ave 32428 max 32428 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 6.69975e+06 ave 6.69975e+06 max 6.69975e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 6699752
Ave neighs/atom = 412.546
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:06:02

View File

@ -1,86 +0,0 @@
LAMMPS (16 Mar 2018)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90)
using 1 OpenMP thread(s) per MPI task
# ReaxFF benchmark: simulation of PETN crystal, replicated unit cell
units real
atom_style charge
read_data data.reax
orthogonal box = (0 0 0) to (9.49107 9.49107 6.99123)
2 by 2 by 1 MPI processor grid
reading atoms ...
58 atoms
#replicate 7 8 10
replicate 7 8 5
orthogonal box = (0 0 0) to (66.4375 75.9285 34.9562)
2 by 2 by 1 MPI processor grid
16240 atoms
Time spent = 0.000491619 secs
velocity all create 300.0 9999
pair_style reax
WARNING: The pair_style reax command is unsupported. Please switch to pair_style reax/c instead (../pair_reax.cpp:49)
pair_coeff * * ffield.reax 1 2 3 4
timestep 0.1
fix 2 all nve
thermo 10
thermo_style custom step temp ke pe pxx pyy pzz etotal
run 100
Neighbor list info ...
update every 1 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 12
ghost atom cutoff = 12
binsize = 6, bins = 12 13 6
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair reax, perpetual
attributes: half, newton off
pair build: half/bin/newtoff
stencil: half/bin/3d/newtoff
bin: standard
Per MPI rank memory allocation (min/avg/max) = 35.58 | 35.68 | 35.77 Mbytes
Step Temp KinEng PotEng Pxx Pyy Pzz TotEng
0 300 14521.612 -1616144.1 22296.712 -29858.677 5721.0922 -1601622.5
10 298.98728 14472.591 -1616093.8 21955.847 -24067.094 7389.149 -1601621.3
20 294.76158 14268.044 -1615890 19179.258 -10513.494 10789.925 -1601622
30 288.56967 13968.323 -1615591.2 13854.38 5833.0219 13949.731 -1601622.9
40 282.06725 13653.571 -1615278.2 6259.981 19406.327 14947.938 -1601624.7
50 274.84112 13303.787 -1614931.9 -2009.6844 26964.334 13346.855 -1601628.1
60 266.20153 12885.585 -1614519.8 -8441.1628 28485.533 10195.428 -1601634.2
70 259.17085 12545.262 -1614184.2 -11426.992 24941.517 6572.295 -1601639
80 259.73004 12572.33 -1614216.8 -10867.596 16928.464 3033.9024 -1601644.5
90 269.2352 13032.431 -1614679 -7962.3097 4931.5336 -280.21988 -1601646.5
100 280.67181 13586.024 -1615234.3 -3606.1482 -8769.8463 -2527.5874 -1601648.3
Loop time of 97.054 on 4 procs for 100 steps with 16240 atoms
Performance: 0.009 ns/day, 2695.944 hours/ns, 1.030 timesteps/s
99.0% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 94.83 | 95.764 | 96.883 | 9.2 | 98.67
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0.16123 | 1.2801 | 2.2132 | 79.9 | 1.32
Output | 0.00056076 | 0.00066662 | 0.00095987 | 0.0 | 0.00
Modify | 0.0048354 | 0.0049006 | 0.0049515 | 0.1 | 0.01
Other | | 0.004639 | | | 0.00
Nlocal: 4060 ave 4080 max 4040 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Nghost: 14972 ave 14992 max 14952 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Neighs: 1.8135e+06 ave 1.82186e+06 max 1.80514e+06 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Total # of neighbors = 7253988
Ave neighs/atom = 446.674
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:01:38

View File

@ -1,69 +0,0 @@
#define PORTABLECOMMENTFLAG
#ifndef PORTABLECOMMENTFLAG
// This is just a way to have portable comments
// for both C++ and FORTRAN preprocessing.
/* ///:EOH~ */
/* */
/* This file contains array dimension parameters for all the main */
/* ReaxFF data structures, some of which need to be directly accessed */
/* by Grasp C++ functions. If they are set too small, the calculation */
/* will run out of allocated memory. If they are set too big, the machine */
/* will not be able to allocate enough memory. */
/* */
/* NNEIGHMAXDEF = Max number of neighbors / NATDEF */
/* NATDEF = Max number of atoms */
/* NATTOTDEF = Max number of global atoms */
/* NSORTDEF = Max number of atom types */
/* MBONDDEF = Max number of bonds connected to one atom */
/* NAVIBDEF = for 2nd derivatives */
/* NBOTYMDEF = Max number of bond types */
/* NVATYMDEF = Max number of valency angle types */
/* NTOTYMDEF = Max number of torsion angle types */
/* NHBTYMDEF = Max number of hydrogen bond types */
/* NODMTYMDEF = Max number of off-diagonal Morse types */
/* NBOALLMAXDEF = Max number of all bonds */
/* NBOMAXDEF = Max number of bonds */
/* NHBMAXDEF = Max number of hydrogen bonds */
/* NVAMAXDEF = Max number of valency angles */
/* NOPMAXDEF = Max number of out of plane angles */
/* NTOMAXDEF = Max number of torsion angles */
/* NPAMAXDEF = Max number of general parameters in force field */
/* NMOLMAXDEF = Max number of molecules in system */
/* NMOLSETDEF = Max number of molecules in training set */
/* MRESTRADEF = Max number of restraints */
/* MTREGDEF = Max number of temperature regimes */
/* MTZONEDEF = Max number of temperature zones */
/* MVREGDEF = Max number of volume regimes */
/* MVZONEDEF = Max number of volume zones */
/* MEREGDEF = Max number of electric field regimes */
/* MEZONEDEF = Max number of electric field zones */
#endif
#define NNEIGHMAXDEF 200
#define NATDEF 50000
#define NATTOTDEF 1
#define NSORTDEF 20
#define MBONDDEF 20
#define NAVIBDEF 50
#define NBOTYMDEF 200
#define NVATYMDEF 200
#define NTOTYMDEF 200
#define NHBTYMDEF 200
#define NODMTYMDEF 20
#define NBOALLMAXDEF 180000
#define NBOMAXDEF 90000
#define NHBMAXDEF 400000
#define NVAMAXDEF 300000
#define NOPMAXDEF 00010
#define NTOMAXDEF 200000
#define NPAMAXDEF 50
#define NMOLMAXDEF 2000
#define NMOLSETDEF 1500
#define MRESTRADEF 100
#define MTREGDEF 100
#define MTZONEDEF 5
#define MVREGDEF 100
#define MVZONEDEF 6
#define MEREGDEF 100
#define MEZONEDEF 3

View File

@ -3,16 +3,24 @@
# This file is part of LAMMPS
# Created by Christoph Junghans and Richard Berger
cmake_minimum_required(VERSION 3.10)
# set policy to silence warnings about ignoring <PackageName>_ROOT but use it
if(POLICY CMP0074)
cmake_policy(SET CMP0074 NEW)
endif()
########################################
project(lammps CXX)
set(SOVERSION 0)
get_filename_component(LAMMPS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../src ABSOLUTE)
get_filename_component(LAMMPS_LIB_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../lib ABSOLUTE)
get_filename_component(LAMMPS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/.. ABSOLUTE)
get_filename_component(LAMMPS_LIB_BINARY_DIR ${CMAKE_BINARY_DIR}/lib ABSOLUTE)
get_filename_component(LAMMPS_DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../doc ABSOLUTE)
get_filename_component(LAMMPS_TOOLS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../tools ABSOLUTE)
get_filename_component(LAMMPS_PYTHON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../python ABSOLUTE)
get_filename_component(LAMMPS_POTENTIALS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../potentials ABSOLUTE)
set(LAMMPS_SOURCE_DIR ${LAMMPS_DIR}/src)
set(LAMMPS_LIB_SOURCE_DIR ${LAMMPS_DIR}/lib)
set(LAMMPS_DOC_DIR ${LAMMPS_DIR}/doc)
set(LAMMPS_TOOLS_DIR ${LAMMPS_DIR}/tools)
set(LAMMPS_PYTHON_DIR ${LAMMPS_DIR}/python)
set(LAMMPS_POTENTIALS_DIR ${LAMMPS_DIR}/potentials)
find_package(Git)
@ -24,6 +32,12 @@ endif()
# Cmake modules/macros are in a subdirectory to keep this file cleaner
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Modules)
# make sure LIBRARY_PATH is set if environment variable is set
if (DEFINED ENV{LIBRARY_PATH})
list(APPEND CMAKE_LIBRARY_PATH "$ENV{LIBRARY_PATH}")
message(STATUS "Appending $ENV{LIBRARY_PATH} to CMAKE_LIBRARY_PATH: ${CMAKE_LIBRARY_PATH}")
endif()
include(LAMMPSUtils)
get_lammps_version(${LAMMPS_SOURCE_DIR}/version.h PROJECT_VERSION)
@ -57,11 +71,11 @@ if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
endif()
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
set(CMAKE_TUNE_DEFAULT "-ffast-math -march=native")
set(CMAKE_TUNE_DEFAULT "-march=native")
endif()
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
set(CMAKE_TUNE_DEFAULT "-ffast-math -march=native")
set(CMAKE_TUNE_DEFAULT "-march=native")
endif()
# we require C++11 without extensions
@ -112,7 +126,7 @@ set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE
REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI
USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESODPD USER-CGSDK USER-COLVARS
USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-LB
USER-MANIFOLD USER-MEAMC USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE
USER-MANIFOLD USER-MEAMC USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE
USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB USER-REACTION
USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY
USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-ADIOS)
@ -351,6 +365,15 @@ target_link_libraries(lammps PRIVATE ${MATH_LIBRARIES})
include(StyleHeaderUtils)
RegisterStyles(${LAMMPS_SOURCE_DIR})
########################################################
# Fetch missing external files and archives for packages
########################################################
foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES})
if(PKG_${PKG})
FetchPotentials(${LAMMPS_SOURCE_DIR}/${PKG} ${LAMMPS_POTENTIALS_DIR})
endif()
endforeach()
##############################################
# add sources of enabled packages
############################################
@ -397,13 +420,19 @@ endforeach()
##############################################
# add lib sources of (simple) enabled packages
############################################
foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD)
foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD USER-MESONT)
if(PKG_${SIMPLE_LIB})
string(REGEX REPLACE "^USER-" "" PKG_LIB "${SIMPLE_LIB}")
string(TOLOWER "${PKG_LIB}" PKG_LIB)
file(GLOB_RECURSE ${PKG_LIB}_SOURCES
${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.c
${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.cpp)
if(PKG_LIB STREQUAL mesont)
enable_language(Fortran)
file(GLOB_RECURSE ${PKG_LIB}_SOURCES
${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.f90)
else()
file(GLOB_RECURSE ${PKG_LIB}_SOURCES
${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.c
${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.cpp)
endif()
add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES})
set_target_properties(${PKG_LIB} PROPERTIES OUTPUT_NAME lammps_${PKG_LIB}${LAMMPS_MACHINE})
target_link_libraries(lammps PRIVATE ${PKG_LIB})
@ -491,7 +520,7 @@ execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HE
# Generate lmpgitversion.h
######################################
add_custom_target(gitversion COMMAND ${CMAKE_COMMAND}
-DCMAKE_CURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
-DLAMMPS_DIR="${LAMMPS_DIR}"
-DGIT_EXECUTABLE="${GIT_EXECUTABLE}"
-DGIT_FOUND="${GIT_FOUND}"
-DLAMMPS_STYLE_HEADERS_DIR="${LAMMPS_STYLE_HEADERS_DIR}"
@ -538,8 +567,6 @@ if(BUILD_SHARED_LIBS)
configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS)
file(GLOB MODULE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Modules/Find*.cmake)
install(FILES ${MODULE_FILES} DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS)
include(CMakePackageConfigHelpers)
configure_file(LAMMPSConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake @ONLY)
write_basic_package_version_file("LAMMPSConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY ExactVersion)
@ -553,11 +580,17 @@ if(BUILD_TOOLS)
install(TARGETS binary2txt DESTINATION ${CMAKE_INSTALL_BINDIR})
include(CheckGeneratorSupport)
if(CMAKE_GENERATOR_SUPPORT_FORTRAN AND CMAKE_Fortran_COMPILER)
enable_language(Fortran)
add_executable(chain.x ${LAMMPS_TOOLS_DIR}/chain.f)
target_link_libraries(chain.x PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES})
install(TARGETS chain.x DESTINATION ${CMAKE_INSTALL_BINDIR})
if(CMAKE_GENERATOR_SUPPORT_FORTRAN)
include(CheckLanguage)
check_language(Fortran)
if(CMAKE_Fortran_COMPILER)
enable_language(Fortran)
add_executable(chain.x ${LAMMPS_TOOLS_DIR}/chain.f)
target_link_libraries(chain.x PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES})
install(TARGETS chain.x DESTINATION ${CMAKE_INSTALL_BINDIR})
else()
message(WARNING "No suitable Fortran compiler found, skipping building 'chain.x'")
endif()
else()
message(WARNING "CMake build doesn't support fortran, skipping building 'chain.x'")
endif()
@ -598,6 +631,8 @@ install(
###############################################################################
if(BUILD_SHARED_LIBS)
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.8 3.7 3.6 3.5)
find_package(PythonInterp) # Deprecated since version 3.12
if(PYTHONINTERP_FOUND)
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
@ -649,6 +684,7 @@ endif()
include(Testing)
include(CodeCoverage)
include(CodingStandard)
###############################################################################
# Print package summary
@ -753,3 +789,6 @@ if(PKG_KSPACE)
endif()
endif()
endif()
if(BUILD_DOC)
message(STATUS "<<< Building HTML Manual >>>")
endif()

View File

@ -1,11 +1,5 @@
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
include(CMakeFindDependencyMacro)
if(@BUILD_MPI@)
find_dependency(MPI REQUIRED CXX)
endif()
if(@PKG_KSPACE@)
if(@FFT@ STREQUAL "FFTW3")
find_dependency(@FFTW@ REQUIRED MODULE)
endif()
endif()
include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake")

View File

@ -15,14 +15,35 @@ if(ENABLE_COVERAGE)
gen_coverage_xml
COMMAND ${GCOVR_BINARY} -s -x -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.xml
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Generating XML Coverage Report..."
COMMENT "Generating XML coverage report..."
)
set(COVERAGE_HTML_DIR ${CMAKE_BINARY_DIR}/coverage_html)
add_custom_target(coverage_html_folder
COMMAND ${CMAKE_COMMAND} -E make_directory ${COVERAGE_HTML_DIR})
add_custom_target(
gen_coverage_html
COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.html
COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o ${COVERAGE_HTML_DIR}/index.html
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Generating HTML Coverage Report..."
COMMENT "Generating HTML coverage report..."
)
add_dependencies(gen_coverage_html coverage_html_folder)
add_custom_target(clean_coverage_html
${CMAKE_COMMAND} -E remove_directory ${COVERAGE_HTML_DIR}
COMMENT "Deleting HTML coverage report..."
)
add_custom_target(reset_coverage
${CMAKE_COMMAND} -E remove -f */*.gcda */*/*.gcda */*/*/*.gcda
*/*/*/*/*.gcda */*/*/*/*/*.gcda */*/*/*/*/*/*.gcda
*/*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*.gcda
*/*/*/*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*/*/*.gcda
WORKIND_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Deleting coverage data files..."
)
add_dependencies(reset_coverage clean_coverage_html)
endif()
endif()

View File

@ -0,0 +1,34 @@
if(CMAKE_VERSION VERSION_LESS 3.12)
find_package(PythonInterp 3.5 QUIET) # Deprecated since version 3.12
if(PYTHONINTERP_FOUND)
set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE})
set(Python3_VERSION ${PYTHON_VERSION_STRING})
endif()
else()
find_package(Python3 COMPONENTS Interpreter QUIET)
endif()
if (Python3_EXECUTABLE)
if(Python3_VERSION VERSION_GREATER_EQUAL 3.5)
add_custom_target(
check-whitespace
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/whitespace.py .
WORKING_DIRECTORY ${LAMMPS_DIR}
COMMENT "Check for whitespace errors")
add_custom_target(
check-permissions
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/permissions.py .
WORKING_DIRECTORY ${LAMMPS_DIR}
COMMENT "Check for permission errors")
add_custom_target(
fix-whitespace
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/whitespace.py -f .
WORKING_DIRECTORY ${LAMMPS_DIR}
COMMENT "Fix whitespace errors")
add_custom_target(
fix-permissions
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/permissions.py -f .
WORKING_DIRECTORY ${LAMMPS_DIR}
COMMENT "Fix permission errors")
endif()
endif()

View File

@ -2,10 +2,19 @@
# Build documentation
###############################################################################
option(BUILD_DOC "Build LAMMPS HTML documentation" OFF)
if(BUILD_DOC)
find_package(PythonInterp 3 REQUIRED)
set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv)
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})
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})
endif()
file(GLOB DOC_SOURCES ${LAMMPS_DOC_DIR}/src/[^.]*.rst)
@ -25,11 +34,10 @@ if(BUILD_DOC)
)
# download mathjax distribution and unpack to folder "mathjax"
file(DOWNLOAD "https://github.com/mathjax/MathJax/archive/3.0.5.tar.gz"
"${CMAKE_CURRENT_BINARY_DIR}/mathjax.tar.gz"
EXPECTED_MD5 5d9d3799cce77a1a95eee6be04eb68e7)
if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/mathjax)
if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/mathjax/es5)
file(DOWNLOAD "https://github.com/mathjax/MathJax/archive/3.0.5.tar.gz"
"${CMAKE_CURRENT_BINARY_DIR}/mathjax.tar.gz"
EXPECTED_MD5 5d9d3799cce77a1a95eee6be04eb68e7)
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf mathjax.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
file(GLOB MATHJAX_VERSION_DIR ${CMAKE_CURRENT_BINARY_DIR}/MathJax-*)
execute_process(COMMAND ${CMAKE_COMMAND} -E rename ${MATHJAX_VERSION_DIR} ${CMAKE_CURRENT_BINARY_DIR}/mathjax)
@ -37,11 +45,18 @@ if(BUILD_DOC)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/_static/mathjax)
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/mathjax/es5 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/html/_static/mathjax/)
# for increased browser compatibility
if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/html/_static/polyfill.js)
file(DOWNLOAD "https://polyfill.io/v3/polyfill.min.js?features=es6"
"${CMAKE_CURRENT_BINARY_DIR}/html/_static/polyfill.js")
endif()
# note, this may run in parallel with other tasks, so we must not use multiple processes here
add_custom_command(
OUTPUT html
DEPENDS ${DOC_SOURCES} docenv requirements.txt
COMMAND ${DOCENV_BINARY_DIR}/sphinx-build -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${LAMMPS_DOC_DIR}/src html
COMMAND ${CMAKE_COMMAND} -E create_symlink Manual.html ${CMAKE_CURRENT_BINARY_DIR}/html/index.html
)
# copy selected image files to html output tree
@ -56,17 +71,17 @@ if(BUILD_DOC)
set(HTML_IMAGE_TARGETS "")
foreach(_IMG ${HTML_EXTRA_IMAGES})
string(PREPEND _IMG JPG/)
list(APPEND HTML_IMAGE_TARGETS "html/${_IMG}")
list(APPEND HTML_IMAGE_TARGETS "${CMAKE_CURRENT_BINARY_DIR}/html/${_IMG}")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html/${_IMG}
DEPENDS ${LAMMPS_DOC_DIR}/src/${_IMG} html/JPG
DEPENDS ${LAMMPS_DOC_DIR}/src/${_IMG} ${CMAKE_CURRENT_BINARY_DIR}/html/JPG
COMMAND ${CMAKE_COMMAND} -E copy ${LAMMPS_DOC_DIR}/src/${_IMG} ${CMAKE_BINARY_DIR}/html/${_IMG}
)
endforeach()
add_custom_target(
doc ALL
DEPENDS html html/_static/mathjax/es5 ${HTML_IMAGE_TARGETS}
DEPENDS html ${CMAKE_CURRENT_BINARY_DIR}/html/_static/mathjax/es5 ${HTML_IMAGE_TARGETS}
SOURCES ${LAMMPS_DOC_DIR}/utils/requirements.txt ${DOC_SOURCES}
)

View File

@ -0,0 +1,46 @@
# Find clang-format
find_program(ClangFormat_EXECUTABLE NAMES clang-format
clang-format-10.0
clang-format-9.0
clang-format-8.0
clang-format-7.0
clang-format-6.0
DOC "clang-format executable")
mark_as_advanced(ClangFormat_EXECUTABLE)
if(ClangFormat_EXECUTABLE)
# find version
execute_process(COMMAND ${ClangFormat_EXECUTABLE} --version
OUTPUT_VARIABLE clang_format_version
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(clang_format_version MATCHES "^clang-format version .*")
# Arch Linux
# clang-format version 10.0.0
# Ubuntu 18.04 LTS Output
# clang-format version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
string(REGEX REPLACE "clang-format version ([0-9.]+).*"
"\\1"
ClangFormat_VERSION
"${clang_format_version}")
elseif(clang_format_version MATCHES ".*LLVM version .*")
# CentOS 7 Output
# LLVM (http://llvm.org/):
# LLVM version 3.4.2
# Optimized build.
# Built Nov 1 2018 (15:06:24).
# Default target: x86_64-redhat-linux-gnu
# Host CPU: x86-64
string(REGEX REPLACE ".*LLVM version ([0-9.]+).*"
"\\1"
ClangFormat_VERSION
"${clang_format_version}")
else()
set(ClangFormat_VERSION "0.0")
endif()
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(ClangFormat REQUIRED_VARS ClangFormat_EXECUTABLE VERSION_VAR ClangFormat_VERSION)

View File

@ -1,27 +0,0 @@
# - Find latte
# Find the native LATTE libraries.
#
# LATTE_LIBRARIES - List of libraries when using latte.
# LATTE_FOUND - True if latte found.
#
find_library(LATTE_LIBRARY NAMES latte)
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LATTE_FOUND to TRUE
# if all listed variables are TRUE
find_package_handle_standard_args(LATTE DEFAULT_MSG LATTE_LIBRARY)
# Copy the results to the output variables and target.
if(LATTE_FOUND)
set(LATTE_LIBRARIES ${LATTE_LIBRARY})
if(NOT TARGET LATTE::latte)
add_library(LATTE::latte UNKNOWN IMPORTED)
set_target_properties(LATTE::latte PROPERTIES
IMPORTED_LOCATION "${LATTE_LIBRARY}")
endif()
endif()
mark_as_advanced(LATTE_LIBRARY)

View File

@ -6,12 +6,12 @@
# TBB_MALLOC_FOUND - True if tbb found.
#
########################################################
# TBB Malloc
find_path(TBB_MALLOC_INCLUDE_DIR NAMES tbb/tbb.h PATHS $ENV{TBBROOT}/include)
find_library(TBB_MALLOC_LIBRARY NAMES tbbmalloc PATHS $ENV{TBBROOT}/lib/intel64/gcc4.7
find_library(TBB_MALLOC_LIBRARY NAMES tbbmalloc PATHS $ENV{TBBROOT}/lib/intel64/gcc4.8
$ENV{TBBROOT}/lib/intel64/gcc4.7
$ENV{TBBROOT}/lib/intel64/gcc4.4
$ENV{TBBROOT}/lib/intel64/gcc4.1)

View File

@ -0,0 +1,30 @@
# - Find libyaml
# Find the native Yaml headers and libraries.
#
# YAML_INCLUDE_DIRS - where to find yaml.h
# YAML_LIBRARIES - List of libraries when using libyaml
# YAML_FOUND - True if libyaml is found.
#
find_path(YAML_INCLUDE_DIR yaml.h PATH_SUFFIXES yaml)
find_library(YAML_LIBRARY NAMES yaml)
# handle the QUIET and REQUIRED arguments and
# set YAML_FOUND to TRUE if all variables are non-zero
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(YAML DEFAULT_MSG YAML_LIBRARY YAML_INCLUDE_DIR)
# Copy the results to the output variables and target.
if(YAML_FOUND)
set(YAML_LIBRARIES ${YAML_LIBRARY})
set(YAML_INCLUDE_DIRS ${YAML_INCLUDE_DIR})
if(NOT TARGET Yaml::Yaml)
add_library(Yaml::Yaml UNKNOWN IMPORTED)
set_target_properties(Yaml::Yaml PROPERTIES
IMPORTED_LOCATION "${YAML_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${YAML_INCLUDE_DIR}")
endif()
endif()
mark_as_advanced(YAML_INCLUDE_DIR YAML_LIBRARY)

77
cmake/Modules/GTest.cmake Normal file
View File

@ -0,0 +1,77 @@
message(STATUS "Downloading and building Google Test library")
if(CMAKE_BUILD_TYPE STREQUAL Debug)
set(GTEST_LIB_POSTFIX d)
else()
set(GTEST_LIB_POSTFIX)
endif()
include(ExternalProject)
ExternalProject_Add(googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG release-1.10.0
SOURCE_DIR "${CMAKE_BINARY_DIR}/gtest-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/gtest-build"
CMAKE_ARGS ${CMAKE_REQUEST_PIC} ${CMAKE_EXTRA_GTEST_OPTS}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
BUILD_BYPRODUCTS <BINARY_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest${GTEST_LIB_POSTFIX}.a
<BINARY_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock${GTEST_LIB_POSTFIX}.a
<BINARY_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest_main${GTEST_LIB_POSTFIX}.a
<BINARY_DIR>/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock_main${GTEST_LIB_POSTFIX}.a
LOG_DOWNLOAD ON
LOG_CONFIGURE ON
LOG_BUILD ON
INSTALL_COMMAND ""
TEST_COMMAND "")
ExternalProject_Get_Property(googletest SOURCE_DIR)
set(GTEST_INCLUDE_DIR ${SOURCE_DIR}/googletest/include)
set(GMOCK_INCLUDE_DIR ${SOURCE_DIR}/googlemock/include)
# workaround for CMake 3.10 on ubuntu 18.04
file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIR})
file(MAKE_DIRECTORY ${GMOCK_INCLUDE_DIR})
ExternalProject_Get_Property(googletest BINARY_DIR)
set(GTEST_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest${GTEST_LIB_POSTFIX}.a)
set(GMOCK_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock${GTEST_LIB_POSTFIX}.a)
set(GTEST_MAIN_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gtest_main${GTEST_LIB_POSTFIX}.a)
set(GMOCK_MAIN_LIBRARY_PATH ${BINARY_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gmock_main${GTEST_LIB_POSTFIX}.a)
# Prevent GoogleTest from overriding our compiler/linker options
# when building with Visual Studio
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
find_package(Threads QUIET)
add_library(GTest::GTest UNKNOWN IMPORTED)
set_target_properties(GTest::GTest PROPERTIES
IMPORTED_LOCATION ${GTEST_LIBRARY_PATH}
INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR}
IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
add_dependencies(GTest::GTest googletest)
add_library(GTest::GMock UNKNOWN IMPORTED)
set_target_properties(GTest::GMock PROPERTIES
IMPORTED_LOCATION ${GMOCK_LIBRARY_PATH}
INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIR}
IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
add_dependencies(GTest::GMock googletest)
add_library(GTest::GTestMain UNKNOWN IMPORTED)
set_target_properties(GTest::GTestMain PROPERTIES
IMPORTED_LOCATION ${GTEST_MAIN_LIBRARY_PATH}
INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR}
IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
add_dependencies(GTest::GTestMain googletest)
add_library(GTest::GMockMain UNKNOWN IMPORTED)
set_target_properties(GTest::GMockMain PROPERTIES
IMPORTED_LOCATION ${GMOCK_MAIN_LIBRARY_PATH}
INTERFACE_INCLUDE_DIRECTORIES ${GMOCK_INCLUDE_DIR}
IMPORTED_LINK_INTERFACE_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
add_dependencies(GTest::GMockMain googletest)

View File

@ -85,3 +85,26 @@ function(GenerateBinaryHeader varname outfile files)
file(APPEND ${outfile} "const unsigned int ${varname}_size = sizeof(${varname});\n")
endforeach()
endfunction(GenerateBinaryHeader)
# fetch missing potential files
function(FetchPotentials pkgfolder potfolder)
if (EXISTS "${pkgfolder}/potentials.txt")
set(LAMMPS_POTENTIALS_URL "https://download.lammps.org/potentials")
file(STRINGS "${pkgfolder}/potentials.txt" linelist REGEX "^[^#].")
foreach(line ${linelist})
string(FIND ${line} " " blank)
math(EXPR plusone "${blank}+1")
string(SUBSTRING ${line} 0 ${blank} pot)
string(SUBSTRING ${line} ${plusone} -1 sum)
if(EXISTS ${LAMMPS_POTENTIALS_DIR}/${pot})
file(MD5 "${LAMMPS_POTENTIALS_DIR}/${pot}" oldsum)
endif()
if(NOT sum STREQUAL oldsum)
message(STATUS "Checking external potential ${pot} from ${LAMMPS_POTENTIALS_URL}")
file(DOWNLOAD "${LAMMPS_POTENTIALS_URL}/${pot}.${sum}" "${CMAKE_BINARY_DIR}/${pot}"
EXPECTED_HASH MD5=${sum} SHOW_PROGRESS)
file(COPY "${CMAKE_BINARY_DIR}/${pot}" DESTINATION ${LAMMPS_POTENTIALS_DIR})
endif()
endforeach()
endif()
endfunction(FetchPotentials)

View File

@ -40,6 +40,17 @@ if(GPU_API STREQUAL "CUDA")
set(GPU_ARCH "sm_50" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)")
# ensure that no *cubin.h files exist from a compile in the lib/gpu folder
file(GLOB GPU_LIB_OLD_CUBIN_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/*_cubin.h)
if (GPU_LIB_OLD_CUBIN_HEADERS)
message(FATAL_ERROR "########################################################################\n"
"Found file(s) generated by the make-based build system in lib/gpu\n"
"Please run\n"
" make -C ${LAMMPS_LIB_SOURCE_DIR}/gpu -f Makefile.serial clean\n"
"to remove\n"
"########################################################################")
endif()
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu)
list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu)
@ -79,7 +90,7 @@ if(GPU_API STREQUAL "CUDA")
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_75,code=[sm_75,compute_75] ")
endif()
cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS
cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS ${CUDA_REQUEST_PIC}
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING})
cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC}
@ -115,7 +126,7 @@ if(GPU_API STREQUAL "CUDA")
elseif(GPU_API STREQUAL "OPENCL")
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
# download and unpack support binaries for compilation of windows binaries.
set(LAMMPS_THIRDPARTY_URL "http://download.lammps.org/thirdparty")
set(LAMMPS_THIRDPARTY_URL "https://download.lammps.org/thirdparty")
file(DOWNLOAD "${LAMMPS_THIRDPARTY_URL}/opencl-win-devel.tar.gz" "${CMAKE_CURRENT_BINARY_DIR}/opencl-win-devel.tar.gz"
EXPECTED_MD5 2c00364888d5671195598b44c2e0d44d)
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf opencl-win-devel.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})

View File

@ -35,8 +35,8 @@ if(DOWNLOAD_KOKKOS)
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}")
include(ExternalProject)
ExternalProject_Add(kokkos_build
URL https://github.com/kokkos/kokkos/archive/3.1.00.tar.gz
URL_MD5 f638a6c786f748a602b26faa0e96ebab
URL https://github.com/kokkos/kokkos/archive/3.1.01.tar.gz
URL_MD5 3ccb2100f7fc316891e7dad3bc33fa37
CMAKE_ARGS ${KOKKOS_LIB_BUILD_ARGS}
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libkokkoscore.a
)
@ -50,10 +50,7 @@ if(DOWNLOAD_KOKKOS)
target_link_libraries(lammps PRIVATE LAMMPS::KOKKOS)
add_dependencies(LAMMPS::KOKKOS kokkos_build)
elseif(EXTERNAL_KOKKOS)
find_package(Kokkos 3.1)
if(NOT Kokkos_FOUND)
message(FATAL_ERROR "KOKKOS library version 3.1 or later not found, help CMake to find it by setting KOKKOS_LIBRARY, or set DOWNLOAD_KOKKOS=ON to download it")
endif()
find_package(Kokkos 3.1.01 REQUIRED CONFIG)
target_link_libraries(lammps PRIVATE Kokkos::kokkos)
else()
set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos)

View File

@ -2,7 +2,7 @@ option(FFT_SINGLE "Use single precision FFTs instead of double precision FFTs" O
set(FFTW "FFTW3")
if(FFT_SINGLE)
set(FFTW "FFTW3F")
target_compile_definitions(lammps PUBLIC -DFFT_SINGLE)
target_compile_definitions(lammps PRIVATE -DFFT_SINGLE)
endif()
find_package(${FFTW} QUIET)
if(${FFTW}_FOUND)
@ -17,8 +17,8 @@ string(TOUPPER ${FFT} FFT)
if(FFT STREQUAL "FFTW3")
find_package(${FFTW} REQUIRED)
target_compile_definitions(lammps PUBLIC -DFFT_FFTW3)
target_link_libraries(lammps PUBLIC ${FFTW}::${FFTW})
target_compile_definitions(lammps PRIVATE -DFFT_FFTW3)
target_link_libraries(lammps PRIVATE ${FFTW}::${FFTW})
if(FFTW3_OMP_LIBRARY OR FFTW3F_OMP_LIBRARY)
option(FFT_FFTW_THREADS "Use threaded FFTW library" ON)
else()

View File

@ -6,7 +6,7 @@ if(TARGET LATTE::latte)
return()
endif()
find_package(LATTE)
find_package(LATTE 1.2.2 CONFIG)
if(LATTE_FOUND)
set(DOWNLOAD_LATTE_DEFAULT OFF)
else()
@ -17,8 +17,8 @@ if(DOWNLOAD_LATTE)
message(STATUS "LATTE download requested - we will build our own")
include(ExternalProject)
ExternalProject_Add(latte_build
URL https://github.com/lanl/LATTE/archive/v1.2.1.tar.gz
URL_MD5 85ac414fdada2d04619c8f936344df14
URL https://github.com/lanl/LATTE/archive/v1.2.2.tar.gz
URL_MD5 820e73a457ced178c08c71389a385de7
SOURCE_SUBDIR cmake
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> ${CMAKE_REQUEST_PIC} -DCMAKE_INSTALL_LIBDIR=lib
-DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES}
@ -35,10 +35,6 @@ if(DOWNLOAD_LATTE)
target_link_libraries(lammps PRIVATE LAMMPS::LATTE)
add_dependencies(LAMMPS::LATTE latte_build)
else()
find_package(LATTE)
if(NOT LATTE_FOUND)
message(FATAL_ERROR "LATTE library not found, help CMake to find it by setting LATTE_LIBRARY, or set DOWNLOAD_LATTE=ON to download it")
endif()
# latte needs lapack
target_link_libraries(lammps PRIVATE LATTE::latte ${LAPACK_LIBRARIES})
find_package(LATTE 1.2.2 REQUIRED CONFIG)
target_link_libraries(lammps PRIVATE LATTE::latte)
endif()

View File

@ -1,8 +1,5 @@
enable_language(C)
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12)
cmake_policy(SET CMP0074 NEW)
endif()
find_package(HDF5 REQUIRED)
target_link_libraries(h5md PRIVATE ${HDF5_LIBRARIES})
target_include_directories(h5md PUBLIC ${HDF5_INCLUDE_DIRS})

View File

@ -1,8 +1,7 @@
# USER-NETCDF can use NetCDF, Parallel NetCDF (PNetCDF), or both. At least one necessary.
# NetCDF library enables dump style "netcdf", while PNetCDF enables dump style "netcdf/mpiio"
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12)
cmake_policy(SET CMP0074 NEW)
endif()
# may use NetCDF or PNetCDF with MPI, but must have NetCDF without
if(NOT BUILD_MPI)
find_package(NetCDF REQUIRED)
else()

View File

@ -14,6 +14,29 @@ endif()
option(DOWNLOAD_SCAFACOS "Download ScaFaCoS library instead of using an already installed one" ${DOWNLOAD_SCAFACOS_DEFAULT})
if(DOWNLOAD_SCAFACOS)
message(STATUS "ScaFaCoS download requested - we will build our own")
# create variables to pass our compiler flags along to the subsystem compile
# need to apply -fallow-argument-mismatch, if the fortran compiler supports it
include(CheckFortranCompilerFlag)
check_fortran_compiler_flag("-fallow-argument-mismatch" GNUFortran_ARGUMENT_MISMATCH_FLAG)
if(GNUFortran_ARGUMENT_MISMATCH_FLAG)
set(APPEND_Fortran_FLAG "-fallow-argument-mismatch")
endif()
if(CMAKE_Fortran_FLAGS)
set(SCAFACOS_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${APPEND_Fortran_FLAG}")
else()
set(SCAFACOS_Fortran_FLAGS "${CMAKE_Fortran_${CMAKE_BUILD_TYPE}_FLAGS} ${APPEND_Fortran_FLAG}")
endif()
if(CMAKE_CXX_FLAGS)
set(SCAFACOS_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
else()
set(SCAFACOS_CXX_FLAGS "${CMAKE_CXX_${CMAKE_BUILD_TYPE}_FLAGS}")
endif()
if(CMAKE_C_FLAGS)
set(SCAFACOS_C_FLAGS "${CMAKE_C_FLAGS}")
else()
set(SCAFACOS_C_FLAGS "${CMAKE_C_${CMAKE_BUILD_TYPE}_FLAGS}")
endif()
include(ExternalProject)
ExternalProject_Add(scafacos_build
URL https://github.com/scafacos/scafacos/releases/download/v1.0.1/scafacos-1.0.1.tar.gz
@ -22,9 +45,9 @@ if(DOWNLOAD_SCAFACOS)
--enable-fcs-solvers=fmm,p2nfft,direct,ewald,p3m
--with-internal-fftw --with-internal-pfft
--with-internal-pnfft ${CONFIGURE_REQUEST_PIC}
FC=${CMAKE_MPI_Fortran_COMPILER}
CXX=${CMAKE_MPI_CXX_COMPILER}
CC=${CMAKE_MPI_C_COMPILER}
FC=${CMAKE_MPI_Fortran_COMPILER} FCFLAGS=${SCAFACOS_Fortran_FLAGS}
CXX=${CMAKE_MPI_CXX_COMPILER} CXXFLAGS=${SCAFACOS_CXX_FLAGS}
CC=${CMAKE_MPI_C_COMPILER} CFLAGS=${SCAFACOS_C_FLAGS}
F77=
BUILD_BYPRODUCTS
<INSTALL_DIR>/lib/libfcs.a

View File

@ -9,7 +9,7 @@ if(DOWNLOAD_EIGEN3)
message(STATUS "Eigen3 download requested - we will build our own")
include(ExternalProject)
ExternalProject_Add(Eigen3_build
URL http://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz
URL https://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz
URL_MD5 f2a417d083fe8ca4b8ed2bc613d20f07
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
)

View File

@ -4,48 +4,7 @@
option(ENABLE_TESTING "Enable testing" OFF)
if(ENABLE_TESTING)
enable_testing()
option(LAMMPS_TESTING_SOURCE_DIR "Location of lammps-testing source directory" "")
option(LAMMPS_TESTING_GIT_TAG "Git tag of lammps-testing" "master")
mark_as_advanced(LAMMPS_TESTING_SOURCE_DIR LAMMPS_TESTING_GIT_TAG)
if (CMAKE_VERSION VERSION_GREATER "3.10.3" AND NOT LAMMPS_TESTING_SOURCE_DIR)
include(FetchContent)
FetchContent_Declare(lammps-testing
GIT_REPOSITORY https://github.com/lammps/lammps-testing.git
GIT_TAG ${LAMMPS_TESTING_GIT_TAG}
)
FetchContent_GetProperties(lammps-testing)
if(NOT lammps-testing_POPULATED)
message(STATUS "Downloading tests...")
FetchContent_Populate(lammps-testing)
endif()
set(LAMMPS_TESTING_SOURCE_DIR ${lammps-testing_SOURCE_DIR})
elseif(NOT LAMMPS_TESTING_SOURCE_DIR)
message(WARNING "Full test-suite requires CMake >= 3.11 or copy of\n"
"https://github.com/lammps/lammps-testing in LAMMPS_TESTING_SOURCE_DIR")
endif()
add_test(NAME ShowHelp COMMAND $<TARGET_FILE:lmp> -help)
if(EXISTS ${LAMMPS_TESTING_SOURCE_DIR})
message(STATUS "Running test discovery...")
file(GLOB_RECURSE TEST_SCRIPTS ${LAMMPS_TESTING_SOURCE_DIR}/tests/core/*/in.*)
foreach(script_path ${TEST_SCRIPTS})
get_filename_component(TEST_NAME ${script_path} EXT)
get_filename_component(SCRIPT_NAME ${script_path} NAME)
get_filename_component(PARENT_DIR ${script_path} DIRECTORY)
string(SUBSTRING ${TEST_NAME} 1 -1 TEST_NAME)
string(REPLACE "-" "_" TEST_NAME ${TEST_NAME})
string(REPLACE "+" "_" TEST_NAME ${TEST_NAME})
set(TEST_NAME "test_core_${TEST_NAME}_serial")
add_test(NAME ${TEST_NAME} COMMAND $<TARGET_FILE:lmp> -in ${SCRIPT_NAME} WORKING_DIRECTORY ${PARENT_DIR})
endforeach()
list(LENGTH TEST_SCRIPTS NUM_TESTS)
message(STATUS "Found ${NUM_TESTS} tests.")
endif()
get_filename_component(LAMMPS_UNITTEST_DIR ${LAMMPS_SOURCE_DIR}/../unittest ABSOLUTE)
get_filename_component(LAMMPS_UNITTEST_BIN ${CMAKE_BINARY_DIR}/unittest ABSOLUTE)
add_subdirectory(${LAMMPS_UNITTEST_DIR} ${LAMMPS_UNITTEST_BIN})
endif()

View File

@ -3,17 +3,19 @@ set(temp_git_commit "(unknown)")
set(temp_git_branch "(unknown)")
set(temp_git_describe "(unknown)")
set(temp_git_info "false")
if(GIT_FOUND AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.git)
message(STATUS "Git Directory: ${LAMMPS_DIR}/.git")
if(GIT_FOUND AND EXISTS ${LAMMPS_DIR}/.git)
set(temp_git_info "true")
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. rev-parse HEAD
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} rev-parse HEAD
OUTPUT_VARIABLE temp_git_commit
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. rev-parse --abbrev-ref HEAD
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} rev-parse --abbrev-ref HEAD
OUTPUT_VARIABLE temp_git_branch
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. describe --dirty=-modified
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} describe --dirty=-modified
OUTPUT_VARIABLE temp_git_describe
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)

View File

@ -8,7 +8,7 @@ set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP
USER-H5MD USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESODPD
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP
USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ
USER-SPH USER-TALLY USER-UEF USER-VTK USER-YAFF)

View File

@ -10,7 +10,7 @@ set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP
USER-H5MD USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESODPD
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP
USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ
USER-SPH USER-TALLY USER-UEF USER-VTK USER-YAFF)

View File

@ -0,0 +1,17 @@
# preset that turns on packages with automatic downloads of sources of potentials
# compilation of libraries like Plumed or ScaFaCoS can take a considerable amount of time.
set(ALL_PACKAGES KIM LATTE MSCG VORONOI USER-PLUMED USER-SCAFACOS USER-SMD USER-MESONT)
foreach(PKG ${ALL_PACKAGES})
set(PKG_${PKG} ON CACHE BOOL "" FORCE)
endforeach()
set(DOWNLOAD_KIM ON CACHE BOOL "" FORCE)
set(DOWNLOAD_LATTE ON CACHE BOOL "" FORCE)
set(DOWNLOAD_MSCG ON CACHE BOOL "" FORCE)
set(DOWNLOAD_VORO ON CACHE BOOL "" FORCE)
set(DOWNLOAD_EIGEN3 ON CACHE BOOL "" FORCE)
set(DOWNLOAD_PLUMED ON CACHE BOOL "" FORCE)
set(DOWNLOAD_SCAFACOS ON CACHE BOOL "" FORCE)

View File

@ -4,7 +4,7 @@ set(WIN_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF
USER-FEP USER-INTEL USER-MANIFOLD USER-MEAMC USER-MESODPD
USER-MISC USER-MGPT USER-MOFFF USER-MOLFILE USER-OMP
USER-MESONT USER-MISC USER-MGPT USER-MOFFF USER-MOLFILE USER-OMP
USER-PHONON USER-PTM USER-QTB USER-REACTION USER-REAXC
USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF
USER-YAFF)

View File

@ -3,7 +3,7 @@
set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MPIIO MSCG PYTHON
VORONOI USER-ADIOS USER-ATC USER-AWPMD USER-H5MD USER-LB
USER-MOLFILE USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP
USER-MOLFILE USER-MESONT USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP
USER-SCAFACOS USER-SMD USER-VTK)
foreach(PKG ${PACKAGES_WITH_LIB})

View File

@ -1,4 +1,4 @@
.TH LAMMPS "5 May 2020" "2020-05-5"
.TH LAMMPS "15 June 2020" "2020-06-15"
.SH NAME
.B LAMMPS
\- Molecular Dynamics Simulator.

0
doc/src/99/crib.html Executable file → Normal file
View File

View File

@ -225,7 +225,7 @@ A few example command lines are:
For compiling with the Clang/LLVM compilers a CMake preset is provided that
can be loaded with `-C ../cmake/presets/clang.cmake`. Similarly,
`-C ../cmake/presets/intel.cmake` should switch the
`-C ../cmake/presets/intel.cmake` should switch the
In addition you can set ``CMAKE_TUNE_FLAGS`` to specifically add
compiler flags to tune for optimal performance on given hosts. By
@ -372,7 +372,8 @@ it. The build step will also create generic soft links, named
``liblammps.a`` and ``liblammps.so``\ , which point to the specific
``liblammps_machine.a/so`` files.
**CMake and make info**\ :
CMake and make info
^^^^^^^^^^^^^^^^^^^
Note that for creating a shared library, all the libraries it depends on
must be compiled to be compatible with shared libraries. This should be
@ -462,7 +463,8 @@ tool. The actual translation is then done via make commands.
.. _rst: https://docutils.readthedocs.io/en/sphinx-docs/user/rst/quickstart.html
.. _sphinx: https://sphinx-doc.org
**Documentation make option**\ :
Documentation make option
^^^^^^^^^^^^^^^^^^^^^^^^^
The following make commands can be issued in the doc folder of the
LAMMPS source distribution.
@ -489,7 +491,8 @@ your system.
current LAMMPS version (HTML and PDF files), from the website
`download page <https://lammps.sandia.gov/download.html>`_.
**CMake build option**\ :
CMake build option
^^^^^^^^^^^^^^^^^^
It is also possible to create the HTML version of the manual within
the :doc:`CMake build directory <Build_cmake>`. The reason for this
@ -512,7 +515,8 @@ Build LAMMPS tools
Some tools described in :doc:`Auxiliary tools <Tools>` can be built directly
using CMake or Make.
**CMake build3**\ :
CMake build
^^^^^^^^^^^
.. code-block:: bash
@ -521,7 +525,8 @@ using CMake or Make.
The generated binaries will also become part of the LAMMPS installation
(see below).
**Traditional make**\ :
Traditional make
^^^^^^^^^^^^^^^^
.. code-block:: bash
@ -545,7 +550,8 @@ a globally visible place on your system, for others to access. Note
that you may need super-user privileges (e.g. sudo) if the directory
you want to copy files to is protected.
**CMake build**\ :
CMake build
^^^^^^^^^^^
.. code-block:: bash
@ -553,7 +559,8 @@ you want to copy files to is protected.
make # perform make after CMake command
make install # perform the installation into prefix
**Traditional make**\ :
Traditional make
^^^^^^^^^^^^^^^^
There is no "install" option in the ``src/Makefile`` for LAMMPS. If
you wish to do this you will need to first build LAMMPS, then manually

View File

@ -107,7 +107,7 @@ re-compile and relink the LAMMPS executable with ``cmake --build .`` (or
``cmake .`` and then compile again. The included dependency tracking
should make certain that only the necessary subset of files are
re-compiled. You can also delete compiled objects, libraries and
executables with ``cmake --build . clean`` (or ``make clean``).
executables with ``cmake --build . --target clean`` (or ``make clean``).
After compilation, you may optionally install the LAMMPS executable into
your system with:

View File

@ -57,53 +57,252 @@ variable during configuration. Examples:
.. _testing:
Code Coverage and Testing
---------------------------------------
Code Coverage and Unit Testing
------------------------------
We do extensive regression testing of the LAMMPS code base on a continuous
basis. Some of the logic to do this has been added to the CMake build so
developers can run the tests directly on their workstation.
The LAMMPS code is subject to multiple levels of automated testing
during development: integration testing (i.e. whether the code compiles
on various platforms and with a variety of settings), unit testing
(i.e. whether certain individual parts of the code produce the expected
results for given inputs), run testing (whether selected complete input
decks run without crashing for multiple configurations), and regression
testing (i.e. whether selected input examples reproduce the same
results over a given number of steps and operations within a given
error margin). The status of this automated testing can be viewed on
`https://ci.lammps.org <https://ci.lammps.org>`_.
The unit testing facility is integrated into the CMake build process
of the LAMMPS source code distribution itself. It can be enabled by
setting ``-D ENABLE_TESTING=on`` during the CMake configuration step.
It requires the `YAML <http://pyyaml.org/>`_ library and development
headers to compile and will download and compile a recent version of the
`Googletest <https://github.com/google/googletest/>`_ C++ test framework
for implementing the tests.
After compilation is complete, the unit testing is started in the build
folder using the ``ctest`` command, which is part of the CMake software.
The output of this command will be looking something like this::
[...]$ ctest
Test project /home/akohlmey/compile/lammps/build-testing
Start 1: MolPairStyle:hybrid-overlay
1/26 Test #1: MolPairStyle:hybrid-overlay ......... Passed 0.02 sec
Start 2: MolPairStyle:hybrid
2/26 Test #2: MolPairStyle:hybrid ................. Passed 0.01 sec
Start 3: MolPairStyle:lj_class2
[...]
Start 25: AngleStyle:harmonic
25/26 Test #25: AngleStyle:harmonic ................. Passed 0.01 sec
Start 26: AngleStyle:zero
26/26 Test #26: AngleStyle:zero ..................... Passed 0.01 sec
100% tests passed, 0 tests failed out of 26
Total Test time (real) = 0.27 sec
The ``ctest`` command has many options, the most important ones are:
.. list-table::
* - Option
- Function
* - -V
- verbose output: display output of individual test runs
* - -j <num>
- parallel run: run <num> tests in parallel
* - -R <regex>
- run subset of tests matching the regular expression <regex>
* - -E <regex>
- exclude subset of tests matching the regular expression <regex>
* - -N
- dry-run: display list of tests without running them
In its full implementation, the unit test framework will consist of multiple
kinds of tests implemented in different programming languages (C++, C, Python,
Fortran) and testing different aspects of the LAMMPS software and its features.
At the moment only tests for "force styles" are implemented. More on those
in the next section.
.. note::
this is incomplete and only represents a small subset of tests that we run
The unit test framework is new and still under development.
The coverage is only minimal and will be expanded over time.
Tests styles of the same kind of style (e.g. pair styles or
bond styles) are performed with the same executable using
different input files in YAML format. So to add a test for
another pair style can be done by copying the YAML file and
editing the style settings and then running the individual test
program with a flag to update the computed reference data.
Detailed documentation about how to add new test program and
the contents of the YAML files for existing test programs
will be provided in time as well.
Unit tests for force styles
^^^^^^^^^^^^^^^^^^^^^^^^^^^
A large part of LAMMPS are different "styles" for computing non-bonded
and bonded interactions selected through the :doc:`pair_style`,
:doc:`bond_style`, :doc:`angle_style`, :doc:`dihedral_style`,
:doc:`improper_style`, and :doc:`kspace_style`. Since these all share
common interfaces, it is possible to write generic test programs that
will call those common interfaces for small test systems with less than
100 atoms and compare the results with pre-recorded reference results.
A test run is then a a collection multiple individual test runs each
with many comparisons to reference results based on template input
files, individual command settings, relative error margins, and
reference data stored in a YAML format file with ``.yaml``
suffix. Currently the programs ``pair_style``, ``bond_style``, and
``angle_style`` are implemented. They will compare forces, energies and
(global) stress for all atoms after a ``run 0`` calculation and after a
few steps of MD with :doc:`fix nve <fix_nve>`, each in multiple variants
with different settings and also for multiple accelerated styles. If a
prerequisite style or package is missing, the individual tests are
skipped. All tests will be executed on a single MPI process, so using
the CMake option ``-D BUILD_MPI=off`` can significantly speed up testing,
since this will skip the MPI initialization for each test run.
Below is an example command and output:
.. parsed-literal::
[tests]$ pair_style mol-pair-lj_cut.yaml
[==========] Running 6 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 6 tests from PairStyle
[ RUN ] PairStyle.plain
[ OK ] PairStyle.plain (24 ms)
[ RUN ] PairStyle.omp
[ OK ] PairStyle.omp (18 ms)
[ RUN ] PairStyle.intel
[ OK ] PairStyle.intel (6 ms)
[ RUN ] PairStyle.opt
[ SKIPPED ] PairStyle.opt (0 ms)
[ RUN ] PairStyle.single
[ OK ] PairStyle.single (7 ms)
[ RUN ] PairStyle.extract
[ OK ] PairStyle.extract (6 ms)
[----------] 6 tests from PairStyle (62 ms total)
[----------] Global test environment tear-down
[==========] 6 tests from 1 test suite ran. (63 ms total)
[ PASSED ] 5 tests.
[ SKIPPED ] 1 test, listed below:
[ SKIPPED ] PairStyle.opt
In this particular case, 5 out of 6 sets of tests were conducted, the
tests for the ``lj/cut/opt`` pair style was skipped, since the tests
executable did not include it. To learn what individual tests are performed,
you (currently) need to read the source code. You can use code coverage
recording (see next section) to confirm how well the tests cover the individual
source files.
The force style test programs have a common set of options:
.. list-table::
* - Option
- Function
* - -g <newfile>
- regenerate reference data in new YAML file
* - -u
- update reference data in the original YAML file
* - -s
- print error statistics for each group of comparisons
* - -v
- verbose output: also print the executed LAMMPS commands
To add a test for a style that is not yet covered, it is usually best
to copy a YAML file for a similar style to a new file, edit the details
of the style (how to call it, how to set its coefficients) and then
run test command with either the *-g* and the replace the initial
test file with the regenerated one or the *-u* option. The *-u* option
will destroy the original file, if the generation run does not complete,
so using *-g* is recommended unless the YAML file is fully tested
and working.
.. admonition:: Recommendations and notes for YAML files
:class: note
- The reference results should be recorded without any code
optimization or related compiler flags enabled.
- The ``epsilon`` parameter defines the relative precision with which
the reference results must be met. The test geometries often have
high and low energy parts and thus a significant impact from
floating-point math truncation errors is to be expected. Some
functional forms and potentials are more noisy than others, so this
parameter needs to be adjusted. Typically a value around 1.0e-13
can be used, but it may need to be as large as 1.0e-8 in some
cases.
- The tests for pair styles from OPT, USER-OMP and USER-INTEL are
performed with automatically rescaled epsilon to account for
additional loss of precision from code optimizations and different
summation orders.
- When compiling with (aggressive) compiler optimization, some tests
are likely to fail. It is recommended to inspect the individual
tests in detail to decide, whether the specific error for a specific
property is acceptable (it often is), or this may be an indication
of mis-compiled code (or an undesired large loss of precision due
to significant reordering of operations and thus less error cancellation).
Collect and visualize code coverage metrics
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can also collect code coverage metrics while running LAMMPS or the
tests by enabling code coverage support during the CMake configuration:
.. code-block:: bash
-D ENABLE_TESTING=value # enable simple run tests of LAMMPS, value = no (default) or yes
-D LAMMPS_TESTING_SOURCE_DIR=path # path to lammps-testing repository (option if in custom location)
-D LAMMPS_TESTING_GIT_TAG=value # version of lammps-testing repository that should be used, value = master (default) or custom git commit or tag
-D ENABLE_COVERAGE=on # enable coverage measurements (off by default)
If you enable testing in the CMake build it will create an additional
target called "test". You can run them with:
This will instrument all object files to write information about which
lines of code were accessed during execution in files next to the
corresponding object files. These can be post-processed to visually
show the degree of coverage and which code paths are accessed and which
are not taken. When working on unit tests (see above), this can be
extremely helpful to determine which parts of the code are not executed
and thus what kind of tests are still missing. The coverage data is
cumulative, i.e. new data is added with each new run.
Enabling code coverage will also add the following build targets to
generate coverage reports after running the LAMMPS executable or the
unit tests:
.. code-block:: bash
cmake --build . test
make gen_coverage_html # generate coverage report in HTML format
make gen_coverage_xml # generate coverage report in XML format
make clean_coverage_html # delete folder with HTML format coverage report
make reset_coverage # delete all collected coverage data and HTML output
The test cases used come from the lammps-testing repository. They are
derivatives of the examples folder with some modifications to make the
run faster.
You can also collect code coverage metrics while running the tests by
enabling coverage support during building.
.. code-block:: bash
-D ENABLE_COVERAGE=value # enable coverage measurements, value = no (default) or yes
This will also add the following targets to generate coverage reports
after running the LAMMPS executable:
.. code-block:: bash
make test # run tests first!
make gen_coverage_html # generate coverage report in HTML format
make gen_coverage_xml # generate coverage report in XML format
These reports require GCOVR to be installed. The easiest way to do this
to install it via pip:
These reports require `GCOVR <https://gcovr.com/>`_ to be installed. The easiest way
to do this to install it via pip:
.. code-block:: bash
pip install git+https://github.com/gcovr/gcovr.git
After post-processing with ``gen_coverage_html`` the results are in
a folder ``coverage_html`` and can be viewed with a web browser.
The images below illustrate how the data is presented.
.. list-table::
* - .. figure:: JPG/coverage-overview-top.png
:target: JPG/coverage-overview-top.png
Top of the overview page
- .. figure:: JPG/coverage-overview-manybody.png
:target: JPG/coverage-overview-manybody.png
Styles with good coverage
- .. figure:: JPG/coverage-file-top.png
:target: JPG/coverage-file-top.png
Top of individual source page
- .. figure:: JPG/coverage-file-branches.png
:target: JPG/coverage-file-branches.png
Source page with branches

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,12 @@
Link LAMMPS as a library to another code
========================================
LAMMPS is designed as a library of C++ objects and can thus be
LAMMPS is designed as a library of C++ objects that can be
integrated into other applications including Python scripts.
The files ``src/library.cpp`` and ``src/library.h`` define a
C-style API for using LAMMPS as a library. See the :doc:`Howto
library <Howto_library>` doc page for a description of the interface
and how to extend it for your needs.
library <Howto_library>` page for a description of the interface
and how to use it for your needs.
The :doc:`Build basics <Build_basics>` doc page explains how to build
LAMMPS as either a shared or static library. This results in a file
@ -31,18 +31,18 @@ the suffix ``.so.0`` (or some other number).
communicator with a subset of MPI ranks to the function creating the
LAMMPS instance.
----------
**Link with LAMMPS as a static library**\ :
Link with LAMMPS as a static library
------------------------------------
The calling application can link to LAMMPS as a static library with
compilation and link commands as in the examples shown below. These
are examples for a code written in C in the file *caller.c*.
are examples for a code written in C in the file ``caller.c``.
The benefit of linking to a static library is, that the resulting
executable is independent of that library since all required
executable code from the library is copied into the calling executable.
*CMake build*\ :
CMake build
^^^^^^^^^^^
This assumes that LAMMPS has been configured without setting a
``LAMMPS_MACHINE`` name, installed with "make install", and the
@ -55,7 +55,8 @@ The commands to compile and link a coupled executable are then:
mpicc -c -O $(pkgconf liblammps --cflags) caller.c
mpicxx -o caller caller.o -$(pkgconf liblammps --libs)
*Traditional make*\ :
Traditional make
^^^^^^^^^^^^^^^^
This assumes that LAMMPS has been compiled in the folder
``${HOME}/lammps/src`` with "make mpi". The commands to compile and link
@ -83,20 +84,20 @@ LAMMPS library without any optional packages that depend on libraries
need to include all flags, libraries, and paths for the coupled
executable, that are also required to link the LAMMPS executable.
*CMake build*\ :
CMake build
^^^^^^^^^^^
When using CMake, additional libraries with sources in the lib folder
are built, but not included in ``liblammps.a`` and (currently) not
installed with "make install" and not included in the *pkgconfig*
installed with ``make install`` and not included in the ``pkgconfig``
configuration file. They can be found in the top level build folder,
but you have to determine the necessary link flags manually. It is
therefore recommended to either use the traditional make procedure to
build and link with a static library or build and link with a shared
library instead.
.. TODO: this needs to be updated to reflect that latest CMake changes after they are complete.
*Traditional make*\ :
Traditional make
^^^^^^^^^^^^^^^^
After you have compiled a static LAMMPS library using the conventional
build system for example with "make mode=static serial". And you also
@ -110,10 +111,10 @@ change to:
g++ -o caller caller.o -L${HOME}/lammps/lib/poems \
-L${HOME}/lammps/src/STUBS -L${HOME}/lammps/src -llammps_serial -lpoems -lmpi_stubs
Note, that you need to link with "g++" instead of "gcc", since the
LAMMPS library is C++ code. You can display the currently applied
settings for building LAMMPS for the "serial" machine target by using
the command:
Note, that you need to link with ``g++`` instead of ``gcc`` even if you have
written your code in C, since LAMMPS itself is C++ code. You can display the
currently applied settings for building LAMMPS for the "serial" machine target
by using the command:
.. code-block:: bash
@ -123,25 +124,24 @@ Which should output something like:
.. code-block:: bash
# Compiler:
# Compiler:
CXX=g++
# Linker:
# Linker:
LD=g++
# Compilation:
# Compilation:
CXXFLAGS=-g -O3 -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 -I${HOME}/compile/lammps/lib/poems -I${HOME}/compile/lammps/src/STUBS
# Linking:
# Linking:
LDFLAGS=-g -O
# Libraries:
# Libraries:
LDLIBS=-L${HOME}/compile/lammps/src -llammps_serial -L${HOME}/compile/lammps/lib/poems -L${HOME}/compile/lammps/src/STUBS -lpoems -lmpi_stubs
From this you can gather the necessary paths and flags. With
makefiles for other *machine* configurations you need to do the
equivalent and replace "serial" with the corresponding *machine* name
equivalent and replace "serial" with the corresponding "machine" name
of the makefile.
----------
**Link with LAMMPS as a shared library**\ :
Link with LAMMPS as a shared library
------------------------------------
When linking to LAMMPS built as a shared library, the situation becomes
much simpler, as all dependent libraries and objects are either included
@ -151,7 +151,8 @@ linking the calling executable. Only the *-I* flags are needed. So the
example case from above of the serial version static LAMMPS library with
the POEMS package installed becomes:
*CMake build*\ :
CMake build
^^^^^^^^^^^
The commands with a shared LAMMPS library compiled with the CMake
build process are the same as for the static library.
@ -161,10 +162,11 @@ build process are the same as for the static library.
mpicc -c -O $(pkgconf liblammps --cflags) caller.c
mpicxx -o caller caller.o -$(pkgconf --libs)
*Traditional make*\ :
Traditional make
^^^^^^^^^^^^^^^^
The commands with a shared LAMMPS library compiled with the
traditional make build using "make mode=shared serial" becomes:
traditional make build using ``make mode=shared serial`` becomes:
.. code-block:: bash
@ -231,29 +233,3 @@ If a required library is missing, you would get a 'not found' entry:
libc.so.6 => /usr/lib64/libc.so.6 (0x00007fb7c7b5d000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb7c80a2000)
----------
**Calling the LAMMPS library**\ :
Either flavor of library (static or shared) allows one or more LAMMPS
objects to be instantiated from the calling program. When used from a
C++ program, most of the symbols and functions in LAMMPS are wrapped
in a ``LAMMPS_NS`` namespace; you can safely use any of its classes and
methods from within the calling code, as needed, and you will not incur
conflicts with functions and variables in your code that share the name.
This, however, does not extend to all additional libraries bundled with
LAMMPS in the lib folder and some of the low-level code of some packages.
To be compatible with C, Fortran, Python programs, the library has a simple
C-style interface, provided in ``src/library.cpp`` and ``src/library.h``.
See the :doc:`Python library <Python_library>` doc page for a
description of the Python interface to LAMMPS, which wraps the C-style
interface from a shared library through the `ctypes python module <ctypes_>`_.
See the sample codes in ``examples/COUPLE/simple`` for examples of C++ and
C and Fortran codes that invoke LAMMPS through its library interface.
Other examples in the COUPLE directory use coupling ideas discussed on
the :doc:`Howto couple <Howto_couple>` doc page.
.. _ctypes: https://docs.python.org/3/library/ctypes.html

View File

@ -45,7 +45,8 @@ packages:
The mechanism for including packages is simple but different for CMake
versus make.
**CMake build**\ :
CMake build
^^^^^^^^^^^
.. code-block:: csh
@ -72,7 +73,8 @@ once with CMake.
invoke cmake. CMake will give an error if that is not the case,
indicating how you can un-install all packages in the src dir.
**Traditional make**\ :
Traditional make
^^^^^^^^^^^^^^^^
.. code-block:: bash
@ -108,7 +110,8 @@ once with make.
within the same command. You can include or exclude multiple packages
in a single make command, e.g. make yes-colloid no-manybody.
**CMake and make info**\ :
CMake and make info
^^^^^^^^^^^^^^^^^^^
Any package can be included or excluded in a LAMMPS build, independent
of all other packages. However, some packages include files derived
@ -132,7 +135,7 @@ src directory.
.. _cmake_presets:
**CMake shortcuts for installing many packages**\ :
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.
@ -148,13 +151,14 @@ one of them as a starting point and customize it to your needs.
.. code-block:: bash
cmake -C ../cmake/presets/minimal.cmake [OPTIONS] ../cmake # enable just a few core packages
cmake -C ../cmake/presets/most.cmake [OPTIONS] ../cmake # enable most packages
cmake -C ../cmake/presets/nolib.cmake [OPTIONS] ../cmake # disable packages that do require extra libraries or tools
cmake -C ../cmake/presets/clang.cmake [OPTIONS] ../cmake # change settings to use the Clang compilers by default
cmake -C ../cmake/presets/intel.cmake [OPTIONS] ../cmake # change settings to use the Intel compilers by default
cmake -C ../cmake/presets/all_on.cmake [OPTIONS] ../cmake # enable all packages
cmake -C ../cmake/presets/all_off.cmake [OPTIONS] ../cmake # disable all packages
cmake -C ../cmake/presets/minimal.cmake [OPTIONS] ../cmake # enable just a few core packages
cmake -C ../cmake/presets/most.cmake [OPTIONS] ../cmake # enable most packages
cmake -C ../cmake/presets/download.cmake [OPTIONS] ../cmake # enable packages which download sources or potential files
cmake -C ../cmake/presets/nolib.cmake [OPTIONS] ../cmake # disable packages that do require extra libraries or tools
cmake -C ../cmake/presets/clang.cmake [OPTIONS] ../cmake # change settings to use the Clang compilers by default
cmake -C ../cmake/presets/intel.cmake [OPTIONS] ../cmake # change settings to use the Intel compilers by default
cmake -C ../cmake/presets/all_on.cmake [OPTIONS] ../cmake # enable all packages
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
.. note::
@ -184,7 +188,8 @@ one of them as a starting point and customize it to your needs.
----------
**Make shortcuts for installing many packages**\ :
Make shortcuts for installing many packages
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The following commands are useful for managing package source files
and their installation when building LAMMPS via traditional make.

View File

@ -44,7 +44,8 @@ require use of an FFT library to compute 1d FFTs. The KISS FFT
library is included with LAMMPS but other libraries can be faster.
LAMMPS can use them if they are available on your system.
**CMake variables**\ :
CMake build
^^^^^^^^^^^
.. code-block:: bash
@ -74,7 +75,12 @@ to assist:
-D FFT_MKL_THREADS=on # enable using threaded FFTs with MKL libraries
-D MKL_LIBRARIES=path
**Makefile.machine settings**\ :
Traditional make
^^^^^^^^^^^^^^^^
To change the FFT library to be used and its options, you have to edit
your machine Makefile. Below are examples how the makefile variables
could be changed.
.. code-block:: make
@ -104,7 +110,8 @@ As with CMake, you do not need to set paths in ``FFT_INC`` or ``FFT_PATH``, if
the compiler can find the FFT header and library files in its default search path.
You must specify ``FFT_LIB`` with the appropriate FFT libraries to include in the link.
**CMake and make info**\ :
CMake build
^^^^^^^^^^^
The `KISS FFT library <http://kissfft.sf.net>`_ is included in the LAMMPS
distribution. It is portable across all platforms. Depending on the size
@ -127,7 +134,7 @@ download it from `www.fftw.org <http://www.fftw.org>`_. LAMMPS requires
version 3.X; the legacy version 2.1.X is no longer supported.
Building FFTW for your box should be as simple as ``./configure; make;
make install``\ . The install command typically requires root privileges
make install``. The install command typically requires root privileges
(e.g. invoke it via sudo), unless you specify a local directory with
the "--prefix" option of configure. Type ``./configure --help`` to see
various options.
@ -169,20 +176,25 @@ ARRAY mode.
.. _size:
Size of LAMMPS data types
Size of LAMMPS integer types
------------------------------------
LAMMPS has a few integer data types which can be defined as 4-byte or
8-byte integers. The default setting of "smallbig" is almost always
adequate.
LAMMPS has a few integer data types which can be defined as either
4-byte (= 32-bit) or 8-byte (= 64-bit) integers at compile time.
The default setting of "smallbig" is almost always adequate.
**CMake variable**\ :
CMake build
^^^^^^^^^^^
.. code-block:: bash
-D LAMMPS_SIZES=value # smallbig (default) or bigbig or smallsmall
**Makefile.machine setting**\ :
Traditional build
^^^^^^^^^^^^^^^^^
If you want a setting different from the default, you need to edit your
machine Makefile.
.. code-block:: make
@ -190,7 +202,8 @@ adequate.
The default setting is ``-DLAMMPS_SMALLBIG`` if nothing is specified
**CMake and make info**\ :
CMake and make info
^^^^^^^^^^^^^^^^^^^
The default "smallbig" setting allows for simulations with:
@ -251,7 +264,8 @@ PNG image files. Likewise the :doc:`dump movie <dump_image>` command
outputs movie files in MPEG format. Using these options requires the
following settings:
**CMake variables**\ :
CMake build
^^^^^^^^^^^
.. code-block:: bash
@ -276,7 +290,8 @@ variables:
-D ZLIB_LIBRARIES=path # path to libz.a (.so) file
-D FFMPEG_EXECUTABLE=path # path to ffmpeg executable
**Makefile.machine settings**\ :
Traditional make
^^^^^^^^^^^^^^^^
.. code-block:: make
@ -295,7 +310,8 @@ 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.
**CMake and make info**\ :
CMake and make info
^^^^^^^^^^^^^^^^^^^
Using ``ffmpeg`` to output movie files requires that your machine
supports the "popen" function in the standard runtime library.
@ -318,7 +334,8 @@ If this option is enabled, large files can be read or written with
gzip compression by several LAMMPS commands, including
:doc:`read_data <read_data>`, :doc:`rerun <rerun>`, and :doc:`dump <dump>`.
**CMake variables**\ :
CMake build
^^^^^^^^^^^
.. code-block:: bash
@ -326,13 +343,15 @@ gzip compression by several LAMMPS commands, including
# default is yes if CMake can find gzip, else no
-D GZIP_EXECUTABLE=path # path to gzip executable if CMake cannot find it
**Makefile.machine setting**\ :
Traditional make
^^^^^^^^^^^^^^^^
.. code-block:: make
LMP_INC = -DLAMMPS_GZIP
**CMake and make info**\ :
CMake and make info
^^^^^^^^^^^^^^^^^^^
This option requires that your machine supports the "popen()" function
in the standard runtime library and that a gzip executable can be
@ -363,7 +382,8 @@ pointers that are aligned to 16-byte boundaries. Using SSE vector
instructions efficiently, however, requires memory blocks being
aligned on 64-byte boundaries.
**CMake variable**\ :
CMake build
^^^^^^^^^^^
.. code-block:: bash
@ -374,7 +394,8 @@ and revert to using the malloc() C-library function instead. When
compiling LAMMPS for Windows systems, malloc() will always be used
and this setting ignored.
**Makefile.machine setting**\ :
Traditional make
^^^^^^^^^^^^^^^^
.. code-block:: make
@ -398,13 +419,15 @@ types, the following setting will be needed. It converts "long long"
to a "long" data type, which should be the desired 8-byte integer on
those systems:
**CMake variable**\ :
CMake build
^^^^^^^^^^^
.. code-block:: bash
-D LAMMPS_LONGLONG_TO_LONG=value # yes or no (default)
**Makefile.machine setting**\ :
Traditional make
^^^^^^^^^^^^^^^^
.. code-block:: make
@ -420,17 +443,26 @@ Exception handling when using LAMMPS as a library
This setting is useful when external codes drive LAMMPS as a library.
With this option enabled, LAMMPS errors do not kill the calling code.
Instead, the call stack is unwound and control returns to the caller,
e.g. to Python. Of course the calling code has to be set up to
*catch* exceptions from within LAMMPS.
e.g. to Python. Of course, the calling code has to be set up to
*catch* exceptions thrown from within LAMMPS.
**CMake variable**\ :
CMake build
^^^^^^^^^^^
.. code-block:: bash
-D LAMMPS_EXCEPTIONS=value # yes or no (default)
**Makefile.machine setting**\ :
Traditional make
^^^^^^^^^^^^^^^^
.. code-block:: make
LMP_INC = -DLAMMPS_EXCEPTIONS
.. note::
When LAMMPS is running in parallel, it is not always possible to
cleanly recover from an exception since not all parallel ranks may
throw an exception and thus other MPI ranks may get stuck waiting for
messages from the ones with errors.

View File

@ -94,6 +94,7 @@ An alphabetic list of all general LAMMPS commands.
* :doc:`package <package>`
* :doc:`pair_coeff <pair_coeff>`
* :doc:`pair_modify <pair_modify>`
* :doc:`pair_style <pair_style>`
* :doc:`pair_write <pair_write>`
* :doc:`partition <partition>`
* :doc:`prd <prd>`

View File

@ -79,9 +79,7 @@ KOKKOS, o = USER-OMP, t = OPT.
* :doc:`ke/atom/eff <compute_ke_atom_eff>`
* :doc:`ke/eff <compute_ke_eff>`
* :doc:`ke/rigid <compute_ke_rigid>`
* :doc:`meso/e/atom <compute_meso_e_atom>`
* :doc:`meso/rho/atom <compute_meso_rho_atom>`
* :doc:`meso/t/atom <compute_meso_t_atom>`
* :doc:`mesont <compute_mesont>`
* :doc:`momentum <compute_momentum>`
* :doc:`msd <compute_msd>`
* :doc:`msd/chunk <compute_msd_chunk>`
@ -133,6 +131,9 @@ KOKKOS, o = USER-OMP, t = OPT.
* :doc:`sna/atom <compute_sna_atom>`
* :doc:`snad/atom <compute_sna_atom>`
* :doc:`snav/atom <compute_sna_atom>`
* :doc:`sph/e/atom <compute_sph_e_atom>`
* :doc:`sph/rho/atom <compute_sph_rho_atom>`
* :doc:`sph/t/atom <compute_sph_t_atom>`
* :doc:`spin <compute_spin>`
* :doc:`stress/atom <compute_stress_atom>`
* :doc:`stress/mop <compute_stress_mop>`

View File

@ -95,9 +95,7 @@ OPT.
* :doc:`lb/viscous <fix_lb_viscous>`
* :doc:`lineforce <fix_lineforce>`
* :doc:`manifoldforce <fix_manifoldforce>`
* :doc:`meso <fix_meso>`
* :doc:`meso/move <fix_meso_move>`
* :doc:`meso/stationary <fix_meso_stationary>`
* :doc:`momentum (k) <fix_momentum>`
* :doc:`move <fix_move>`
* :doc:`mscg <fix_mscg>`
@ -149,6 +147,7 @@ OPT.
* :doc:`oneway <fix_oneway>`
* :doc:`orient/bcc <fix_orient>`
* :doc:`orient/fcc <fix_orient>`
* :doc:`orient/eco <fix_orient_eco>`
* :doc:`phonon <fix_phonon>`
* :doc:`pimd <fix_pimd>`
* :doc:`planeforce <fix_planeforce>`
@ -202,6 +201,8 @@ OPT.
* :doc:`smd/move_tri_surf <fix_smd_move_triangulated_surface>`
* :doc:`smd/setvel <fix_smd_setvel>`
* :doc:`smd/wall_surface <fix_smd_wall_surface>`
* :doc:`sph <fix_sph>`
* :doc:`sph/stationary <fix_sph_stationary>`
* :doc:`spring <fix_spring>`
* :doc:`spring/chunk <fix_spring_chunk>`
* :doc:`spring/rg <fix_spring_rg>`

View File

@ -31,9 +31,9 @@ does something different than this sequence:
run 100
In the first case, the specified timestep (0.5 fs) is used for two
simulations of 100 timesteps each. In the 2nd case, the default
timestep (1.0 fs) is used for the 1st 100 step simulation and a 0.5 fs
timestep is used for the 2nd one.
simulations of 100 timesteps each. In the second case, the default
timestep (1.0 fs) is used for the first 100 step simulation and a 0.5 fs
timestep is used for the second one.
(2) Some commands are only valid when they follow other commands. For
example you cannot set the temperature of a group of atoms until atoms

View File

@ -78,7 +78,7 @@ OPT.
* :doc:`coul/long/soft (o) <pair_fep_soft>`
* :doc:`coul/msm (o) <pair_coul>`
* :doc:`coul/slater/cut <pair_coul_slater>`
* :doc:`coul/slater/long <pair_coul_slater>`
* :doc:`coul/slater/long <pair_coul_slater>`
* :doc:`coul/shield <pair_coul_shield>`
* :doc:`coul/streitz <pair_coul>`
* :doc:`coul/wolf (ko) <pair_coul>`
@ -92,8 +92,8 @@ OPT.
* :doc:`drip <pair_drip>`
* :doc:`eam (gikot) <pair_eam>`
* :doc:`eam/alloy (gikot) <pair_eam>`
* :doc:`eam/cd (o) <pair_eam>`
* :doc:`eam/cd/old (o) <pair_eam>`
* :doc:`eam/cd <pair_eam>`
* :doc:`eam/cd/old <pair_eam>`
* :doc:`eam/fs (gikot) <pair_eam>`
* :doc:`edip (o) <pair_edip>`
* :doc:`edip/multi <pair_edip>`
@ -180,6 +180,7 @@ OPT.
* :doc:`meam/spline (o) <pair_meam_spline>`
* :doc:`meam/sw/spline <pair_meam_sw_spline>`
* :doc:`mesocnt <pair_mesocnt>`
* :doc:`mesont/tpm <pair_mesont_tpm>`
* :doc:`mgpt <pair_mgpt>`
* :doc:`mie/cut (g) <pair_mie>`
* :doc:`mm3/switch3/coulgauss/long <pair_mm3_switch3_coulgauss_long>`

View File

@ -142,7 +142,7 @@ follows:
minimize.
\item The Special class walks the bond topology of a molecular system
to find 1st, 2nd, 3rd neighbors of each atom. It is invoked by
to find first, second, third neighbors of each atom. It is invoked by
several commands, like read\_data, read\_restart, and replicate.
\item The Atom class stores all per-atom arrays. More precisely, they

View File

@ -23,7 +23,7 @@ We use it to show how to identify the origin of a segmentation fault.
double *special_lj = force->special_lj;
int newton_pair = force->newton_pair;
+ double comx = 0.0;
inum = list->inum;
ilist = list->ilist;
@@ -134,8 +135,10 @@ void PairLJCut::compute(int eflag, int vflag)
@ -31,7 +31,7 @@ We use it to show how to identify the origin of a segmentation fault.
}
}
- }
+ comx += atom->rmass[i]*x[i][0]; /* BUG */
+ }
+ printf("comx = %g\n",comx);
@ -42,7 +42,7 @@ After recompiling LAMMPS and running the input you should get something like thi
.. code-block:
$ ./lmp -in in.melt
$ ./lmp -in in.melt
LAMMPS (19 Mar 2020)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94)
using 1 OpenMP thread(s) per MPI task
@ -98,11 +98,11 @@ drop back to the GDB prompt.
Unit style : lj
Current step : 0
Time step : 0.005
Program received signal SIGSEGV, Segmentation fault.
0x00000000006653ab in LAMMPS_NS::PairLJCut::compute (this=0x829740, eflag=1, vflag=<optimized out>) at /home/akohlmey/compile/lammps/src/pair_lj_cut.cpp:139
139 comx += atom->rmass[i]*x[i][0]; /* BUG */
(gdb)
(gdb)
Now typing the command "where" will show the stack of functions starting from
the current function back to "main()".
@ -119,7 +119,7 @@ the current function back to "main()".
#4 0x0000000000410ad3 in LAMMPS_NS::Input::execute_command (this=0x7d1410) at /home/akohlmey/compile/lammps/src/input.cpp:864
#5 0x00000000004111fb in LAMMPS_NS::Input::file (this=0x7d1410) at /home/akohlmey/compile/lammps/src/input.cpp:229
#6 0x000000000040933a in main (argc=<optimized out>, argv=<optimized out>) at /home/akohlmey/compile/lammps/src/main.cpp:65
(gdb)
(gdb)
You can also print the value of variables and see if there is anything
unexpected. Segmentation faults, for example, commonly happen when a
@ -189,12 +189,12 @@ the console are not mixed.
.. code-block::
$ valgrind ./lmp -in in.melt
$ valgrind ./lmp -in in.melt
==1933642== Memcheck, a memory error detector
==1933642== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==1933642== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==1933642== Command: ./lmp -in in.melt
==1933642==
==1933642==
LAMMPS (19 Mar 2020)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94)
using 1 OpenMP thread(s) per MPI task
@ -228,7 +228,7 @@ the console are not mixed.
==1933642== by 0x4111FA: LAMMPS_NS::Input::file() (input.cpp:229)
==1933642== by 0x409339: main (main.cpp:65)
==1933642== Address 0x0 is not stack'd, malloc'd or (recently) free'd
==1933642==
==1933642==
As you can see, the stack trace information is similar to that obtained
from GDB. In addition you get a more specific hint about what cause the

View File

@ -381,7 +381,7 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
are defined.
*Bond atom missing in box size check*
The 2nd atoms needed to compute a particular bond is missing on this
The second atom needed to compute a particular bond is missing on this
processor. Typically this is because the pairwise cutoff is set too
short or the bond has blown apart and an atom is too far away.
@ -391,7 +391,7 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
the atoms are too far apart to make a valid bond.
*Bond atom missing in image check*
The 2nd atom in a particular bond is missing on this processor.
The second atom in a particular bond is missing on this processor.
Typically this is because the pairwise cutoff is set too short or the
bond has blown apart and an atom is too far away.
@ -401,12 +401,12 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
are too far apart to make a valid bond.
*Bond atoms %d %d missing on proc %d at step %ld*
The 2nd atom needed to compute a particular bond is missing on this
The second atom needed to compute a particular bond is missing on this
processor. Typically this is because the pairwise cutoff is set too
short or the bond has blown apart and an atom is too far away.
*Bond atoms missing on proc %d at step %ld*
The 2nd atom needed to compute a particular bond is missing on this
The second atom needed to compute a particular bond is missing on this
processor. Typically this is because the pairwise cutoff is set too
short or the bond has blown apart and an atom is too far away.
@ -1374,7 +1374,7 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
template does not qualify.
*Cannot use fix box/relax on a 2nd non-periodic dimension*
When specifying an off-diagonal pressure component, the 2nd of the two
When specifying an off-diagonal pressure component, the second of the two
dimensions must be periodic. E.g. if the xy component is specified,
then the y dimension must be periodic.
@ -1388,7 +1388,7 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
also keyword tri or xy, this is wrong.
*Cannot use fix box/relax with tilt factor scaling on a 2nd non-periodic dimension*
When specifying scaling on a tilt factor component, the 2nd of the two
When specifying scaling on a tilt factor component, the second of the two
dimensions must be periodic. E.g. if the xy component is specified,
then the y dimension must be periodic.
@ -1429,7 +1429,7 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
This would be changing the same box dimension twice.
*Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension*
When specifying an off-diagonal pressure component, the 2nd of the two
When specifying an off-diagonal pressure component, the second of the two
dimensions must be periodic. E.g. if the xy component is specified,
then the y dimension must be periodic.
@ -1447,13 +1447,13 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
Self-explanatory.
*Cannot use fix nvt/npt/nph with xy scaling when y is non-periodic dimension*
The 2nd dimension in the barostatted tilt factor must be periodic.
The second dimension in the barostatted tilt factor must be periodic.
*Cannot use fix nvt/npt/nph with xz scaling when z is non-periodic dimension*
The 2nd dimension in the barostatted tilt factor must be periodic.
The second dimension in the barostatted tilt factor must be periodic.
*Cannot use fix nvt/npt/nph with yz scaling when z is non-periodic dimension*
The 2nd dimension in the barostatted tilt factor must be periodic.
The second dimension in the barostatted tilt factor must be periodic.
*Cannot use fix pour rigid and not molecule*
Self-explanatory.
@ -7192,7 +7192,7 @@ keyword to allow for additional bonds to be formed
does not exist.
*Replacing a fix, but new style != old style*
A fix ID can be used a 2nd time, but only if the style matches the
A fix ID can be used a second time, but only if the style matches the
previous fix. In this case it is assumed you with to reset a fix's
parameters. This error may mean you are mistakenly re-using a fix ID
when you do not intend to.

View File

@ -43,17 +43,17 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
Self-explanatory.
*Bond atom missing in box size check*
The 2nd atoms needed to compute a particular bond is missing on this
The second atom needed to compute a particular bond is missing on this
processor. Typically this is because the pairwise cutoff is set too
short or the bond has blown apart and an atom is too far away.
*Bond atom missing in image check*
The 2nd atom in a particular bond is missing on this processor.
The second atom in a particular bond is missing on this processor.
Typically this is because the pairwise cutoff is set too short or the
bond has blown apart and an atom is too far away.
*Bond atoms missing at step %ld*
The 2nd atom needed to compute a particular bond is missing on this
The second atom needed to compute a particular bond is missing on this
processor. Typically this is because the pairwise cutoff is set too
short or the bond has blown apart and an atom is too far away.
@ -486,7 +486,7 @@ This will most likely cause errors in kinetic fluctuations.
a new style.
*No Kspace calculation with verlet/split*
The 2nd partition performs a kspace calculation so the kspace_style
The second partition performs a kspace calculation so the kspace_style
command must be used.
*No automatic unit conversion to XTC file format conventions possible for units lj*

View File

@ -163,7 +163,7 @@ Here is how you can run and visualize one of the sample problems:
Running the simulation produces the files *dump.indent* and
*log.lammps*\ . You can visualize the dump file of snapshots with a
variety of 3rd-party tools highlighted on the
variety of third-party tools highlighted on the
`Visualization <https://lammps.sandia.gov/viz.html>`_ page of the LAMMPS
web site.

View File

@ -197,7 +197,7 @@ compress individual polymer chains (molecules) in a mixture, is
explained on the :doc:`compute chunk/spread/atom <compute_chunk_spread_atom>` command doc page.
(7) An example for using one set of per-chunk values for molecule
chunks, to create a 2nd set of micelle-scale chunks (clustered
chunks, to create a second set of micelle-scale chunks (clustered
molecules, due to hydrophobicity), is explained on the :doc:`compute chunk/reduce <compute_reduce_chunk>` command doc page.
(8) An example for using one set of per-chunk values (dipole moment

View File

@ -114,19 +114,19 @@ summary screen will look like this:
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /usr/bin/git (found version "2.25.2")
-- Found Git: /usr/bin/git (found version "2.25.2")
-- Running check for auto-generated files from make-based build system
-- Found MPI_CXX: /usr/lib64/mpich/lib/libmpicxx.so (found version "3.1")
-- Found MPI: TRUE (found version "3.1")
-- Found MPI_CXX: /usr/lib64/mpich/lib/libmpicxx.so (found version "3.1")
-- Found MPI: TRUE (found version "3.1")
-- Looking for C++ include omp.h
-- Looking for C++ include omp.h - found
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- Found JPEG: /usr/lib64/libjpeg.so (found version "62")
-- Found PNG: /usr/lib64/libpng.so (found version "1.6.37")
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.11")
-- Found GZIP: /usr/bin/gzip
-- Found FFMPEG: /usr/bin/ffmpeg
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- Found JPEG: /usr/lib64/libjpeg.so (found version "62")
-- Found PNG: /usr/lib64/libpng.so (found version "1.6.37")
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.11")
-- Found GZIP: /usr/bin/gzip
-- Found FFMPEG: /usr/bin/ffmpeg
-- Performing Test COMPILER_SUPPORTS-ffast-math
-- Performing Test COMPILER_SUPPORTS-ffast-math - Success
-- Performing Test COMPILER_SUPPORTS-march=native
@ -143,7 +143,7 @@ summary screen will look like this:
* JPEG
* PNG
* ZLIB
-- <<< Build configuration >>>
Build type: RelWithDebInfo
Install path: /home/akohlmey/.local
@ -157,7 +157,7 @@ summary screen will look like this:
Options: -ffast-math;-march=native
-- <<< Linker flags: >>>
-- Executable name: lmp
-- Static library flags:
-- Static library flags:
-- <<< MPI flags >>>
-- MPI includes: /usr/include/mpich-x86_64
-- MPI libraries: /usr/lib64/mpich/lib/libmpicxx.so;/usr/lib64/mpich/lib/libmpi.so;
@ -291,7 +291,7 @@ Some common CMake variables
.. list-table::
:header-rows: 1
* - Variable
- Description
* - ``CMAKE_INSTALL_PREFIX``
@ -313,13 +313,13 @@ Some common CMake variables
- Fortran compiler to be used for compilation (default: system specific, ``gfortran`` on Linux)
* - ``CXX_COMPILER_LAUNCHER``
- tool to launch the C++ compiler, e.g. ``ccache`` or ``distcc`` for faster compilation (default: empty)
Some common LAMMPS specific variables
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. list-table::
:header-rows: 1
* - Variable
- Description
* - ``BUILD_MPI``
@ -415,8 +415,10 @@ This is particularly convenient, if you have set a custom build command
via the ``CMAKE_MAKE_PROGRAM`` variable.
When calling the build program, you can also select which "target" is to
be build through appending the name of the target to the build command.
Example: ``cmake --build . all``. The following abstract targets are available:
be build through appending the ``--target`` flag and the name of the target
to the build command. When using ``make`` as build tool, you can just append
the target name to the command. Example: ``cmake --build . --target all`` or
``make all``. The following abstract targets are available:
.. list-table::
:header-rows: 1
@ -432,11 +434,11 @@ Example: ``cmake --build . all``. The following abstract targets are available:
* - ``install``
- install all target files into folders in ``CMAKE_INSTALL_PREFIX``
* - ``test``
- run some simple tests (if configured with ``-D ENABLE_TESTING=on``)
- run some tests (if configured with ``-D ENABLE_TESTING=on``)
* - ``clean``
- remove all generated files
Choosing generators
-------------------

View File

@ -119,7 +119,7 @@ non-polarized ions (ions without an attached satellite particle). The
groups, one for the core atoms, another for the shell atoms.
Non-polarized ions which might also be included in the treated system
should not be included into either of these groups, they are taken
into account by the *group-ID* (2nd argument) of the compute. The
into account by the *group-ID* (second argument) of the compute. The
groups can be defined using the :doc:`group *type*\ <group>` command.
Note that to perform thermostatting using this definition of
temperature, the :doc:`fix modify temp <fix_modify>` command should be

View File

@ -91,4 +91,4 @@ With these modifications, the 8 simulations of each script would run
on the 3 partitions one after the other until all were finished.
Initially, 3 simulations would be started simultaneously, one on each
partition. When one finished, that partition would then start
the 4th simulation, and so forth, until all 8 were completed.
the fourth simulation, and so forth, until all 8 were completed.

View File

@ -28,7 +28,7 @@ scripts are based on. If that script had the line
added to it, it would produce 2 binary restart files (tmp.restart.50
and tmp.restart.100) as it ran.
This script could be used to read the 1st restart file and re-run the
This script could be used to read the first restart file and re-run the
last 50 timesteps:
.. code-block:: LAMMPS

View File

@ -85,7 +85,7 @@ where *V* is the volume of the box, **X** is the original vector quantity and
**x** is the vector in the LAMMPS basis.
There is no requirement that a triclinic box be periodic in any
dimension, though it typically should be in at least the 2nd dimension
dimension, though it typically should be in at least the second dimension
of the tilt (y in xy) if you want to enforce a shift in periodic
boundary conditions across that boundary. Some commands that work
with triclinic boxes, e.g. the :doc:`fix deform <fix_deform>` and :doc:`fix npt <fix_nh>` commands, require periodicity or non-shrink-wrap
@ -120,7 +120,7 @@ The 9 parameters, as well as lx,ly,lz, can be output via the
To avoid extremely tilted boxes (which would be computationally
inefficient), LAMMPS normally requires that no tilt factor can skew
the box more than half the distance of the parallel box length, which
is the 1st dimension in the tilt factor (x for xz). This is required
is the first dimension in the tilt factor (x for xz). This is required
both when the simulation box is created, e.g. via the
:doc:`create_box <create_box>` or :doc:`read_data <read_data>` commands,
as well as when the box shape changes dynamically during a simulation,
@ -137,7 +137,7 @@ limit during a dynamics run (e.g. via the :doc:`fix deform <fix_deform>`
command), then the box is "flipped" to an equivalent shape with a tilt
factor within the bounds, so the run can continue. See the :doc:`fix deform <fix_deform>` doc page for further details.
One exception to this rule is if the 1st dimension in the tilt
One exception to this rule is if the first dimension in the tilt
factor (x for xy) is non-periodic. In that case, the limits on the
tilt factor are not enforced, since flipping the box in that dimension
does not change the atom positions due to non-periodicity. In this

View File

@ -34,7 +34,7 @@ Here are suggestions on how to perform these tasks:
molecular builder that will generate complex molecular models. See
the :doc:`Tools <Tools>` doc page for details on tools packaged with
LAMMPS. The `Pre/post processing page <http:/lammps.sandia.gov/prepost.html>`_ of the LAMMPS website
describes a variety of 3rd party tools for this task. Furthermore,
describes a variety of third party tools for this task. Furthermore,
some LAMMPS internal commands allow to reconstruct, or selectively add
topology information, as well as provide the option to insert molecule
templates instead of atoms for building bulk molecular systems.

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

View File

@ -32,11 +32,12 @@ a brief description of the basic code structure of LAMMPS.
----------
Once you are familiar with LAMMPS, you may want to bookmark :doc:`this page <Commands>` since it gives quick access to a doc page for
Once you are familiar with LAMMPS, you may want to bookmark :doc:`this page <Commands_all>` since it gives quick access to a doc page for
every LAMMPS command.
.. _lws: https://lammps.sandia.gov
.. _user_documentation:
.. toctree::
:maxdepth: 2
:numbered: 3

View File

@ -1,60 +1,62 @@
Building the LAMMPS manual
**************************
Depending on how you obtained LAMMPS, the doc directory has up
to 6 sub-directories, 2 Nroff files, and optionally 2 PDF files
plus 2 e-book format files:
Depending on how you obtained LAMMPS and whether you have built the
manual yourself, this directory has a number of sub-directories and
files. Here is a list with descriptions:
.. code-block:: bash
src # content files for LAMMPS documentation
html # HTML version of the LAMMPS manual (see html/Manual.html)
utils # tools and settings for building the documentation
docenv # virtualenv for processing the manual sources
doctrees # temporary data from processing the manual
mathjax # code and fonts for rendering math in html
Manual.pdf # large PDF version of entire manual
Developer.pdf # small PDF with info about how LAMMPS is structured
LAMMPS.epub # Manual in ePUB e-book format
LAMMPS.mobi # Manual in MOBI e-book format
lammps.1 # man page for the lammps command
msi2lmp.1 # man page for the msi2lmp command
README # brief info about the documentation
src # content files for LAMMPS documentation
html # HTML version of the LAMMPS manual (see html/Manual.html)
utils # tools and settings for building the documentation
lammps.1 # man page for the lammps command
msi2lmp.1 # man page for the msi2lmp command
Manual.pdf # large PDF version of entire manual
Developer.pdf # small PDF with info about how LAMMPS is structured
LAMMPS.epub # Manual in ePUB e-book format
LAMMPS.mobi # Manual in MOBI e-book format
docenv # virtualenv folder for processing the manual sources
doctrees # temporary data from processing the manual
mathjax # code and fonts for rendering math in html
doxygen # doxygen configuration and output
.gitignore # list of files and folders to be ignored by git
doxygen-warn.log # logfile with warnings from running doxygen
github-development-workflow.md # notes on the LAMMPS development workflow
include-file-conventions.md # notes on LAMMPS' include file conventions
If you downloaded LAMMPS as a tarball from the web site, the html folder
and the PDF files should be included.
If you downloaded LAMMPS as a tarball from `the LAMMPS website <lws_>`_,
the html folder and the PDF files should be included.
If you downloaded LAMMPS from the public git repository, then the HTML
and PDF files are not included. Instead you need to create them, in one
of two ways:
a. You can "fetch" the current HTML and PDF files from the LAMMPS web
site. Just type "make fetch". This should download a html_www
site. Just type ``make fetch``. This should download a html_www
directory and Manual_www.pdf/Developer_www.pdf files. Note that if
new LAMMPS features have been added more recently than the date of
your LAMMPS version, the fetched documentation will include those
changes (but your source code will not, unless you update your local
repository).
b. You can build the HTML or PDF files yourself, by typing "make html"
or "make pdf". This requires various tools including Sphinx, git,
and the MathJax javascript library, which the build process will attempt
to download automatically into a virtual environment in the folder
doc/docenv and the folder mathjax, respectively, if not already available.
This download is required only once, unless you type "make clean-all".
After that, viewing and processing of the documentation can be done
without internet access. To generate the PDF version of the manual,
the PDFLaTeX software and several LaTeX packages are required as well.
However, those cannot be installed automatically at the moment.
b. You can build the HTML or PDF files yourself, by typing ``make html``
or ``make pdf``. This requires various tools and files. Some of them
have to be installed (more on that below). For the rest the build
process will attempt to download and install them into a python
virtual environment and local folders. This download is required
only once, unless you type ``make clean-all``. After that, viewing and
processing of the documentation can be done without internet access.
----------
The generation of all documentation is managed by the Makefile in
the doc directory.
The generation of all documentation is managed by the Makefile in the
doc directory. The following documentation related make commands are
available:
.. code-block:: bash
Documentation Build Options:
make html # generate HTML in html dir using Sphinx
make pdf # generate 2 PDF files (Manual.pdf,Developer.pdf)
# in doc dir via htmldoc and pdflatex
@ -62,8 +64,10 @@ the doc directory.
# as a tarball and unpack into html dir and 2 PDFs
make epub # generate LAMMPS.epub in ePUB format using Sphinx
make mobi # generate LAMMPS.mobi in MOBI format using ebook-convert
make clean # remove intermediate RST files created by HTML build
make clean-all # remove entire build folder and any cached data
make anchor_check # check for duplicate anchor labels
make style_check # check for complete and consistent style lists
make package_check # check for complete and consistent package lists
@ -74,29 +78,30 @@ the doc directory.
Installing prerequisites for HTML build
=======================================
To run the HTML documentation build toolchain, Python 3 and virtualenv
have to be installed. Here are instructions for common setups:
To run the HTML documentation build toolchain, python 3, git, doxygen,
and virtualenv have to be installed locally. Here are instructions for
common setups:
Ubuntu
------
.. code-block:: bash
sudo apt-get install python-virtualenv
sudo apt-get install python-virtualenv git doxygen
Fedora (up to version 21) and Red Hat Enterprise Linux or CentOS (up to version 7.x)
------------------------------------------------------------------------------------
.. code-block:: bash
sudo yum install python3-virtualenv
sudo yum install python3-virtualenv git doxygen
Fedora (since version 22)
-------------------------
.. code-block:: bash
sudo dnf install python3-virtualenv
sudo dnf install python3-virtualenv git doxygen
MacOS X
-------
@ -120,22 +125,92 @@ Once Python 3 is installed, open a Terminal and type
This will install virtualenv from the Python Package Index.
----------
Installing prerequisites for PDF build
======================================
Installing prerequisites for epub build
=======================================
In addition to the tools needed for building the HTML format manual,
a working LaTeX installation with support for PDFLaTeX and a selection
of LaTeX styles/packages are required.
ePUB
----
Installing prerequisites for e-book reader builds
=================================================
Same as for HTML. This uses mostly the same tools and configuration
files as the HTML tree. In addition it uses LaTeX to convert embedded
In addition to the tools needed for building the HTML format manual,
a working LaTeX installation with a few add-on LaTeX packages
as well as the ``dvipng`` tool are required to convert embedded
math expressions transparently into embedded images.
For converting the generated ePUB file to a MOBI format file
(for e-book readers, like Kindle, that cannot read ePUB), you
also need to have the 'ebook-convert' tool from the "calibre"
software installed. `http://calibre-ebook.com/ <http://calibre-ebook.com/>`_
You first create the ePUB file and then convert it with 'make mobi'
On the Kindle readers in particular, you also have support for
PDF files, so you could download and view the PDF version as an alternative.
For converting the generated ePUB file to a MOBI format file (for e-book
readers, like Kindle, that cannot read ePUB), you also need to have the
``ebook-convert`` tool from the "calibre" software
installed. `http://calibre-ebook.com/ <http://calibre-ebook.com/>`_
Typing ``make mobi`` will first create the ePUB file and then convert
it. On the Kindle readers in particular, you also have support for PDF
files, so you could download and view the PDF version as an alternative.
Instructions for Developers
===========================
When adding new styles or options to the LAMMPS code, corresponding
documentation is required and either existing files in the ``src``
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
be multiple tests run automatically:
- A test for correctness of all anchor labels and their references
- A test that all LAMMPS packages (= folders with sources in
``lammps/src``) are documented and listed. A typical warning shows
the name of the folder with the suspected new package code and the
documentation files where they need to be listed:
.. parsed-literal::
Found 33 standard and 41 user packages
Standard package NEWPACKAGE missing in Packages_standard.rst
Standard package NEWPACKAGE missing in Packages_details.rst
- A test that only standard, printable ASCII text characters are used.
This runs the command ``env LC_ALL=C grep -n '[^ -~]' src/*.rst`` and
thus prints all offending lines with filename and line number
prepended to the screen. Special characters like the Angstrom
:math:`\mathrm{\mathring{A}}` should be typeset with embedded math
(like this ``:math:`\mathrm{\mathring{A}}```\ ).
- A test whether all styles are documented and listed in their
respective overview pages. A typical output with warnings looks like this:
.. parsed-literal::
Parsed style names w/o suffixes from C++ tree in ../src:
Angle styles: 21 Atom styles: 24
Body styles: 3 Bond styles: 17
Command styles: 41 Compute styles: 143
Dihedral styles: 16 Dump styles: 26
Fix styles: 223 Improper styles: 13
Integrate styles: 4 Kspace styles: 15
Minimize styles: 9 Pair styles: 234
Reader styles: 4 Region styles: 8
Compute style entry newcomp is missing or incomplete in Commands_compute.rst
Compute style entry newcomp is missing or incomplete in compute.rst
Fix style entry newfix is missing or incomplete in Commands_fix.rst
Fix style entry newfix is missing or incomplete in fix.rst
Pair style entry new is missing or incomplete in Commands_pair.rst
Pair style entry new is missing or incomplete in pair_style.rst
Found 6 issue(s) with style lists
In addition, there is the option to run a spellcheck on the entire
manual with ``make spelling``. This requires `a library called enchant
<https://github.com/AbiWord/enchant>`_. To avoid printing out *false
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://lammps.sandia.gov

View File

@ -3,115 +3,169 @@ Atom styles
Classes that define an :doc:`atom style <atom_style>` are derived from
the AtomVec class and managed by the Atom class. The atom style
determines what attributes are associated with an atom. 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.
determines what attributes are associated with an atom and
communicated when it is a ghost atom or migrates to a new processor.
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 a simple example of an atom style.
Atom_vec_atomic.cpp is the simplest example of an atom style.
Examining the code for others will make these instructions more clear.
Here is a brief description of methods you define in your new derived
class. See atom_vec.h for details.
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.
+-------------------------+--------------------------------------------------------------------------------+
| init | one time setup (optional) |
+-------------------------+--------------------------------------------------------------------------------+
| grow | re-allocate atom arrays to longer lengths (required) |
+-------------------------+--------------------------------------------------------------------------------+
| grow_reset | make array pointers in Atom and AtomVec classes consistent (required) |
+-------------------------+--------------------------------------------------------------------------------+
| copy | copy info for one atom to another atom's array locations (required) |
+-------------------------+--------------------------------------------------------------------------------+
| pack_comm | store an atom's info in a buffer communicated every timestep (required) |
+-------------------------+--------------------------------------------------------------------------------+
| pack_comm_vel | add velocity info to communication buffer (required) |
+-------------------------+--------------------------------------------------------------------------------+
| pack_comm_hybrid | store extra info unique to this atom style (optional) |
+-------------------------+--------------------------------------------------------------------------------+
| unpack_comm | retrieve an atom's info from the buffer (required) |
+-------------------------+--------------------------------------------------------------------------------+
| unpack_comm_vel | also retrieve velocity info (required) |
+-------------------------+--------------------------------------------------------------------------------+
| unpack_comm_hybrid | retrieve extra info unique to this atom style (optional) |
+-------------------------+--------------------------------------------------------------------------------+
| pack_reverse | store an atom's info in a buffer communicating partial forces (required) |
+-------------------------+--------------------------------------------------------------------------------+
| pack_reverse_hybrid | store extra info unique to this atom style (optional) |
+-------------------------+--------------------------------------------------------------------------------+
| unpack_reverse | retrieve an atom's info from the buffer (required) |
+-------------------------+--------------------------------------------------------------------------------+
| unpack_reverse_hybrid | retrieve extra info unique to this atom style (optional) |
+-------------------------+--------------------------------------------------------------------------------+
| pack_border | store an atom's info in a buffer communicated on neighbor re-builds (required) |
+-------------------------+--------------------------------------------------------------------------------+
| pack_border_vel | add velocity info to buffer (required) |
+-------------------------+--------------------------------------------------------------------------------+
| pack_border_hybrid | store extra info unique to this atom style (optional) |
+-------------------------+--------------------------------------------------------------------------------+
| unpack_border | retrieve an atom's info from the buffer (required) |
+-------------------------+--------------------------------------------------------------------------------+
| unpack_border_vel | also retrieve velocity info (required) |
+-------------------------+--------------------------------------------------------------------------------+
| unpack_border_hybrid | retrieve extra info unique to this atom style (optional) |
+-------------------------+--------------------------------------------------------------------------------+
| pack_exchange | store all an atom's info to migrate to another processor (required) |
+-------------------------+--------------------------------------------------------------------------------+
| unpack_exchange | retrieve an atom's info from the buffer (required) |
+-------------------------+--------------------------------------------------------------------------------+
| size_restart | number of restart quantities associated with proc's atoms (required) |
+-------------------------+--------------------------------------------------------------------------------+
| pack_restart | pack atom quantities into a buffer (required) |
+-------------------------+--------------------------------------------------------------------------------+
| unpack_restart | unpack atom quantities from a buffer (required) |
+-------------------------+--------------------------------------------------------------------------------+
| create_atom | create an individual atom of this style (required) |
+-------------------------+--------------------------------------------------------------------------------+
| data_atom | parse an atom line from the data file (required) |
+-------------------------+--------------------------------------------------------------------------------+
| data_atom_hybrid | parse additional atom info unique to this atom style (optional) |
+-------------------------+--------------------------------------------------------------------------------+
| data_vel | parse one line of velocity information from data file (optional) |
+-------------------------+--------------------------------------------------------------------------------+
| data_vel_hybrid | parse additional velocity data unique to this atom style (optional) |
+-------------------------+--------------------------------------------------------------------------------+
| memory_usage | tally memory allocated by atom arrays (required) |
+-------------------------+--------------------------------------------------------------------------------+
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 constructor of the derived class sets values for several variables
that you must set when defining a new atom style, which are documented
in atom_vec.h. New atom arrays are defined in atom.cpp. Search for
the word "customize" and you will find locations you will need to
modify.
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
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
(id,type,x,v,f). Those are included automatically as needed in the
other strings.
.. note::
.. list-table::
It is possible to add some attributes, such as a molecule ID, to
atom styles that do not have them via the :doc:`fix property/atom <fix_property_atom>` command. This command also
allows new custom attributes consisting of extra integer or
floating-point values to be added to atoms. See the :doc:`fix property/atom <fix_property_atom>` doc page for examples of cases
where this is useful and details on how to initialize, access, and
output the custom values.
* - fields_grow
- full list of properties which is allocated and stored
* - fields_copy
- list of properties to copy atoms are rearranged on-processor
* - fields_comm
- list of properties communicated to ghost atoms every step
* - fields_comm_vel
- additional properties communicated if :doc:`comm_modify vel <atom_style>` is used
* - fields_reverse
- list of properties summed from ghost atoms every step
* - fields_border
- list of properties communicated with ghost atoms every reneighboring step
* - fields_border_vel
- additional properties communicated if :doc:`comm_modify vel <atom_style>` is used
* - fields_exchange
- list of properties communicated when an atom migrates to another processor
* - fields_restart
- list of properties written/read to/from a restart file
* - fields_create
- list of properties defined when an atom is created by :doc:`create_atoms <create_atoms>`
* - fields_data_atom
- list of properties (in order) in the Atoms section of a data file, as read by :doc:`read_data <read_data>`
* - fields_data_vel
- list of properties (in order) in the Velocities section of a data file, as read by :doc:`read_data <read_data>`
New :doc:`pair styles <pair_style>`, :doc:`fixes <fix>`, or
:doc:`computes <compute>` can be added to LAMMPS, as discussed below.
The code for these classes can use the per-atom properties defined by
fix property/atom. The Atom class has a find_custom() method that is
useful in this context:
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.
.. code-block:: c++
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
a bad choice; it is too generic. A better choice would be "e_foo",
where "foo" is specific to your style.
int index = atom->find_custom(char *name, int &flag);
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.
The "name" of a custom attribute, as specified in the :doc:`fix property/atom <fix_property_atom>` command, is checked to verify
that it exists and its index is returned. The method also sets flag =
0/1 depending on whether it is an integer or floating-point attribute.
The vector of values associated with the attribute can then be
accessed using the returned index as
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.
.. code-block:: c++
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.
int *ivector = atom->ivector[index];
double *dvector = atom->dvector[index];
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
variable-length.
Ivector or dvector are vectors of length Nlocal = # of owned atoms,
which store the attributes of individual atoms.
Adding the variable name to Atom::extract() enable 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
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.
There are a number of other optional methods which your atom style can
implement. These are only needed if you need to do something
out-of-the-ordinary which the default operation of the AtomVec parent
class does not take care of. The best way to figure out why they are
sometimes useful is to look at how other atom styles use them.
* process_args = use if the atom style has arguments
* init = called before each run
* force_clear = called before force computations each timestep
A few atom styles define "bonus" data associated with some or all of
their particles, such as :doc:`atom_style ellipsoid or tri
<atom_style>`. These methods work with that data:
* copy_bonus
* clear_bonus
* pack_comm_bonus
* unpack_comm_bonus
* pack_border_bonus
* unpack_border_bonus
* pack_exchange_bonus
* unpack_exchange_bonus
* size_restart_bonus
* pack_restart_bonus
* unpack_restart_bonus
* data_atom_bonus
* memory_usage_bonus
The :doc:`atom_style body <atom_style>` command can define a particle
geometry with an arbitrary number of values. This method reads it
from a data file:
* data_body
These methods are called before or after operations handled by the
parent AtomVec class. They allow an atom style to do customized
operations on the per-atom values. For example :doc:`atom_style
sphere <atom_style>` reads a diameter and density of each particle
from a data file. But these need to be converted internally to a
radius and mass. That operation is done in the data_atom_post()
method.
* pack_restart_pre
* pack_restart_post
* unpack_restart_init
* create_atom_post
* data_atom_post
* pack_data_pre
* pack_data_post
These methods enable the :doc:`compute property/atom <compute_property_atom>`
command to access per-atom variables it does not
already define as arguments, so that they can be written to a dump
file or used by other LAMMPS commands.
* property_atom
* pack_property_atom

View File

@ -1,37 +1,51 @@
Submitting new features for inclusion in LAMMPS
===============================================
We encourage users to submit new features or modifications for LAMMPS
to `the core developers <https://lammps.sandia.gov/authors.html>`_ so they
can be added to the LAMMPS distribution. The preferred way to manage
and coordinate this is as of Fall 2016 via the LAMMPS project on
`GitHub <https://github.com/lammps/lammps>`_. An alternative is to
contact the LAMMPS developers or the indicated developer of a package
or feature directly and send in your contribution via e-mail.
We encourage users to submit new features or modifications for LAMMPS to
`the core developers <https://lammps.sandia.gov/authors.html>`_ so they
can be added to the LAMMPS distribution. The preferred way to manage and
coordinate this is via the LAMMPS project on `GitHub
<https://github.com/lammps/lammps>`_. Please see the :doc:`GitHub
Tutorial <Howto_github>` for a demonstration on how to do that. An
alternative is to contact the LAMMPS developers or the indicated
developer of a package or feature directly and send in your contribution
via e-mail, but that can add a significant delay on getting your
contribution included, depending on how busy the developer is you
contact, how complex a task it would be to integrate that code, and how
many - if any - changes are required before the code can be included.
For any larger modifications or programming project, you are
encouraged to contact the LAMMPS developers ahead of time, in order to
discuss implementation strategies and coding guidelines, that will
make it easier to integrate your contribution and result in less work
for everybody involved. You are also encouraged to search through the
list of `open issues on GitHub <https://github.com/lammps/lammps/issues>`_ and submit a new issue
for a planned feature, so you would not duplicate the work of others
(and possibly get scooped by them) or have your work duplicated by
others.
For any larger modifications or programming project, you are encouraged
to contact the LAMMPS developers ahead of time, in order to discuss
implementation strategies and coding guidelines, that will make it
easier to integrate your contribution and result in less work for
everybody involved. You are also encouraged to search through the list
of `open issues on GitHub <https://github.com/lammps/lammps/issues>`_
and submit a new issue for a planned feature, so you would not duplicate
the work of others (and possibly get scooped by them) or have your work
duplicated by others.
How quickly your contribution will be integrated depends largely on
how much effort it will cause to integrate and test it, how much it
requires changes to the core codebase, and of how much interest it is
to the larger LAMMPS community. Please see below for a checklist of
typical requirements. Once you have prepared everything, see the
:doc:`Using GitHub with LAMMPS Howto <Howto_github>` doc page for instructions on how to
submit your changes or new files through a GitHub pull request. If you
prefer to submit patches or full files, you should first make certain,
that your code works correctly with the latest patch-level version of
LAMMPS and contains all bug fixes from it. Then create a gzipped tar
file of all changed or added files or a corresponding patch file using
'diff -u' or 'diff -c' and compress it with gzip. Please only use gzip
compression, as this works well on all platforms.
For informal communication with (some of) the LAMMPS developers you may
ask to join the `LAMMPS developers on Slack <https://lammps.slack.com>`_.
This slack work space is by invitation only. Thus for access, please
send an e-mail to ``slack@lammps.org`` explaining what part of LAMMPS
you are working on. Only discussions related to LAMMPS development are
tolerated, so this is **NOT** for people that look for help with compiling,
installing, or using LAMMPS. Please contact the `lammps-users mailing
list <https://lammps.sandia.gov>`_ for those purposes instead.
How quickly your contribution will be integrated depends largely on how
much effort it will cause to integrate and test it, how much it requires
changes to the core codebase, and of how much interest it is to the
larger LAMMPS community. Please see below for a checklist of typical
requirements. Once you have prepared everything, see the :doc:`Using
GitHub with LAMMPS Howto <Howto_github>` doc page for instructions on
how to submit your changes or new files through a GitHub pull
request. If you prefer to submit patches or full files, you should first
make certain, that your code works correctly with the latest patch-level
version of LAMMPS and contains all bug fixes from it. Then create a
gzipped tar file of all changed or added files or a corresponding patch
file using 'diff -u' or 'diff -c' and compress it with gzip. Please only
use gzip compression, as this works well on all platforms.
If the new features/files are broadly useful we may add them as core
files to LAMMPS or as part of a :doc:`standard package <Packages_standard>`. Else we will add them as a

View File

@ -27,7 +27,7 @@ derived class. See fix.h for details.
+---------------------------+--------------------------------------------------------------------------------------------+
| setup_pre_force | called before force computation in setup (optional) |
+---------------------------+--------------------------------------------------------------------------------------------+
| setup | called immediately before the 1st timestep and after forces are computed (optional) |
| setup | called immediately before the first timestep and after forces are computed (optional) |
+---------------------------+--------------------------------------------------------------------------------------------+
| min_setup_pre_force | like setup_pre_force, but for minimizations instead of MD runs (optional) |
+---------------------------+--------------------------------------------------------------------------------------------+

View File

@ -10,12 +10,12 @@ Ewald.cpp is an example of computing K-space interactions.
Here is a brief description of methods you define in your new derived
class. See kspace.h for details.
+---------------+----------------------------------------------+
| init | initialize the calculation before a run |
+---------------+----------------------------------------------+
| setup | computation before the 1st timestep of a run |
+---------------+----------------------------------------------+
| compute | every-timestep computation |
+---------------+----------------------------------------------+
| memory_usage | tally of memory usage |
+---------------+----------------------------------------------+
+---------------+------------------------------------------------+
| init | initialize the calculation before a run |
+---------------+------------------------------------------------+
| setup | computation before the first timestep of a run |
+---------------+------------------------------------------------+
| compute | every-timestep computation |
+---------------+------------------------------------------------+
| memory_usage | tally of memory usage |
+---------------+------------------------------------------------+

View File

@ -81,6 +81,7 @@ page gives those details.
* :ref:`USER-MANIFOLD <PKG-USER-MANIFOLD>`
* :ref:`USER-MEAMC <PKG-USER-MEAMC>`
* :ref:`USER-MESODPD <PKG-USER-MESODPD>`
* :ref:`USER-MESONT <PKG-USER-MESONT>`
* :ref:`USER-MGPT <PKG-USER-MGPT>`
* :ref:`USER-MISC <PKG-USER-MISC>`
* :ref:`USER-MOFFF <PKG-USER-MOFFF>`
@ -489,7 +490,7 @@ interactions. These include Ewald, particle-particle particle-mesh
Building with this package requires a 1d FFT library be present on
your system for use by the PPPM solvers. This can be the KISS FFT
library provided with LAMMPS, 3rd party libraries like FFTW, or a
library provided with LAMMPS, third party libraries like FFTW, or a
vendor-supplied FFT library. See the :doc:`Build settings <Build_settings>` doc page for details on how to select
different FFT options for your LAMPMS build.
@ -1712,6 +1713,56 @@ algorithm.
* examples/USER/mesodpd
* https://lammps.sandia.gov/movies.html#mesodpd
* examples/USER/meso
* http://lammps.sandia.gov/movies.html#mesodpd
----------
.. _PKG-USER-MESONT:
USER-MESONT package
-------------------
**Contents:**
USER-MESONT is a LAMMPS package for simulation of nanomechanics of
nanotubes (NTs). The model is based on a coarse-grained representation
of NTs as "flexible cylinders" consisting of a variable number of
segments. Internal interactions within a NT and the van der Waals
interaction between the tubes are described by a mesoscopic force field
designed and parameterized based on the results of atomic-level
molecular dynamics simulations. The description of the force field is
provided in the papers listed below. This package contains two
independent implementations of this model: :doc:`pair_style mesocnt
<pair_mesocnt>` is a (minimal) C++ implementation, and :doc:`pair_style
mesont/tpm <pair_mesont_tpm>` is a more general and feature rich
implementation based on a Fortran library in the ``lib/mesont`` folder.
**Download of potential files:**
The potential files for these pair styles are *very* large and thus
are not included in the regular downloaded packages of LAMMPS or the
git repositories. Instead, they will be automatically downloaded
from a web server when the package is installed for the first time.
**Authors of the *mesont* styles:**
Maxim V. Shugaev (University of Virginia), Alexey N. Volkov (University of Alabama), Leonid V. Zhigilei (University of Virginia)
**Author of the *mesocnt* pair style:**
Philipp Kloza (U Cambridge)
**Supporting info:**
* src/USER-MESONT: filenames -> commands
* src/USER-MESONT/README
* :doc:`atom_style mesont <atom_style>`
* :doc:`pair_style mesont/tpm <pair_mesont_tpm>`
* :doc:`compute mesont <compute_mesont>`
* :doc:`pair_style mesocnt <pair_mesocnt>`
* examples/USER/mesont
* tools/mesont
----------
.. _PKG-USER-MOFFF:
@ -2064,7 +2115,7 @@ molecules, and chiral-sensitive reactions.
* examples/USER/reaction
* `2017 LAMMPS Workshop <https://lammps.sandia.gov/workshops/Aug17/pdf/gissinger.pdf>`_
* `2019 LAMMPS Workshop <https://lammps.sandia.gov/workshops/Aug19/talk_gissinger.pdf>`_
* disarmmd.org
* reacter.org
----------

View File

@ -67,6 +67,8 @@ package:
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-MESODPD <PKG-USER-MESODPD>` | mesoscale DPD models | :doc:`pair_style edpd <pair_mesodpd>` | USER/mesodpd | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-MESONT <PKG-USER-MESONT>` | mesoscopic tubular potential model for nanotubes | pair style :doc:`mesont/tpm <pair_mesont_tpm>`, :doc:`mesocnt <pair_mesocnt>` | USER/mesont | int |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-MGPT <PKG-USER-MGPT>` | fast MGPT multi-ion potentials | :doc:`pair_style mgpt <pair_mgpt>` | USER/mgpt | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-MISC <PKG-USER-MISC>` | single-file contributions | USER-MISC/README | USER/misc | no |

View File

@ -254,12 +254,3 @@ following steps:
* You should now be able to invoke the new interface function from a
Python script.
----------
.. autoclass:: lammps.lammps
:members:
:no-undoc-members:
.. autoclass:: lammps.NeighList
:members:
:no-undoc-members:

View File

@ -10,7 +10,7 @@ and type:
>>> lmp = lammps()
If you get no errors, you're ready to use LAMMPS from Python. If the
2nd command fails, the most common error to see is
second command fails, the most common error to see is
.. parsed-literal::

View File

@ -324,17 +324,17 @@ physical processors is done by MPI before LAMMPS begins. It may be
useful in some cases to alter the rank order. E.g. to insure that
cores within each node are ranked in a desired order. Or when using
the :doc:`run_style verlet/split <run_style>` command with 2 partitions
to insure that a specific Kspace processor (in the 2nd partition) is
matched up with a specific set of processors in the 1st partition.
to insure that a specific Kspace processor (in the second partition) is
matched up with a specific set of processors in the first partition.
See the :doc:`Speed tips <Speed_tips>` doc page for more details.
If the keyword *nth* is used with a setting *N*\ , then it means every
Nth processor will be moved to the end of the ranking. This is useful
when using the :doc:`run_style verlet/split <run_style>` command with 2
partitions via the -partition command-line switch. The first set of
processors will be in the first partition, the 2nd set in the 2nd
processors will be in the first partition, the second set in the second
partition. The -reorder command-line switch can alter this so that
the 1st N procs in the 1st partition and one proc in the 2nd partition
the first N procs in the first partition and one proc in the second partition
will be ordered consecutively, e.g. as the cores on one physical node.
This can boost performance. For example, if you use "-reorder nth 4"
and "-partition 9 3" and you are running on 12 processors, the

View File

@ -37,7 +37,7 @@ The *charmm* angle style uses the potential
E = K (\theta - \theta_0)^2 + K_{ub} (r - r_{ub})^2
with an additional Urey_Bradley term based on the distance :math:`r` between
the 1st and 3rd atoms in the angle. :math:`K`, :math:`\theta_0`,
the first and third atoms in the angle. :math:`K`, :math:`\theta_0`,
:math:`K_{ub}`, and :math:`R_{ub}` are coefficients defined for each angle
type.

View File

@ -31,7 +31,7 @@ Angle coefficients can also be set in the data file read by the
:doc:`read_data <read_data>` command or in a restart file.
N can be specified in one of two ways. An explicit numeric value can
be used, as in the 1st example above. Or a wild-card asterisk can be
be used, as in the first example above. Or a wild-card asterisk can be
used to set the coefficients for multiple angle types. This takes the
form "\*" or "\*n" or "n\*" or "m\*n". If N = the number of angle types,
then an asterisk with no numeric values means all types from 1 to N. A
@ -53,7 +53,7 @@ same format as the arguments of the :doc:`angle_coeff <angle_coeff>` command in
script, except that wild-card asterisks should not be used since
coefficients for all N types must be listed in the file. For example,
under the "Angle Coeffs" section of a data file, the line that
corresponds to the 1st example above would be listed as
corresponds to the first example above would be listed as
.. parsed-literal::

View File

@ -75,7 +75,7 @@ parenthesized comments):
...
181 180.0 0.0 0.0
A section begins with a non-blank line whose 1st character is not a
A section begins with a non-blank line whose first character is not a
"#"; blank lines or lines starting with "#" can be used as comments
between sections. The first line begins with a keyword which
identifies the section. The line can contain additional text, but the
@ -99,7 +99,7 @@ is in the tabulated file (with effectively no preliminary
interpolation), you should set Ntable = Nfile.
The "FP" parameter is optional. If used, it is followed by two values
fplo and fphi, which are the 2nd derivatives at the innermost and
fplo and fphi, which are the second derivatives at the innermost and
outermost angle settings. These values are needed by the spline
construction routines. If not specified by the "FP" parameter, they
are estimated (less accurately) by the first two and last two
@ -110,9 +110,9 @@ equilibrium angle value, which is used, for example, by the :doc:`fix shake <fix
set to 180.0.
Following a blank line, the next N lines list the tabulated values.
On each line, the 1st value is the index from 1 to N, the 2nd value is
the angle value (in degrees), the 3rd value is the energy (in energy
units), and the 4th is -dE/d(theta) (also in energy units). The 3rd
On each line, the first value is the index from 1 to N, the second value is
the angle value (in degrees), the third value is the energy (in energy
units), and the fourth is -dE/d(theta) (also in energy units). The third
term is the energy of the 3-atom configuration for the specified
angle. The last term is the derivative of the energy with respect to
the angle (in degrees, not radians). Thus the units of the last term

View File

@ -15,7 +15,7 @@ Syntax
fix_modify AtC control momentum glc_velocity
fix_modify AtC control momentum hoover
fix_modify AtC control momentum flux [faceset face_set_id, interpolate]
* AtC fixID = ID of :doc:`fix atc <fix_atc>` instance
* control = name of the AtC sub-command
* physics_type = *thermal* or *momentum*
@ -52,7 +52,7 @@ the finite element temperature. *flux* is a similar mode, but rather
adds energy to the atoms based on conservation of energy.
*correction_max_iterations* sets the maximum number of iterations to
compute the 2nd order in time correction term for lambda with the
compute the second order in time correction term for lambda with the
fractional step method. The method uses the same tolerance as the
controller's matrix solver.

View File

@ -56,7 +56,7 @@ adds energy to the atoms based on conservation of energy. *hoover* and
atoms.
*correction_max_iterations* sets the maximum number of iterations to
compute the 2nd order in time correction term for lambda with the
compute the second order in time correction term for lambda with the
fractional step method. The method uses the same tolerance as the
controller's matrix solver.

View File

@ -25,8 +25,8 @@ Syntax
- temperature : temperature derived from the relative atomic kinetic energy
- kinetic_temperature : temperature derived from the full kinetic energy
- number_density : simple kernel estimation of number of atoms per unit volume
- stress : Cauchy stress tensor for eulerian analysis (atom_element_map), or 1st Piola-Kirchhoff stress tensor for lagrangian analysis
- transformed_stress : 1st Piola-Kirchhoff stress tensor for eulerian analysis (atom_element_map), or Cauchy stress tensor for lagrangian analysis
- stress : Cauchy stress tensor for eulerian analysis (atom_element_map), or first Piola-Kirchhoff stress tensor for lagrangian analysis
- transformed_stress : first Piola-Kirchhoff stress tensor for eulerian analysis (atom_element_map), or Cauchy stress tensor for lagrangian analysis
- heat_flux : spatial heat flux vector for eulerian, or referential heat flux vector for lagrangian
- potential_energy : potential energy per unit volume
- kinetic_energy : kinetic energy per unit volume
@ -37,7 +37,7 @@ Syntax
- eshelby_stress : configurational stress (energy-momentum) tensor defined by [Eshelby]_
- vacancy_concentration : volume fraction of vacancy content
- type_concentration : volume fraction of a specific atom type
Examples
""""""""

View File

@ -23,8 +23,8 @@ Syntax
- temperature : temperature derived from the relative atomic kinetic energy
- kinetic_temperature : temperature derived from the full kinetic energy
- number_density : simple kernel estimation of number of atoms per unit volume
- stress : Cauchy stress tensor for eulerian analysis (atom_element_map), or 1st Piola-Kirchhoff stress tensor for lagrangian analysis
- transformed_stress : 1st Piola-Kirchhoff stress tensor for eulerian analysis (atom_element_map), or Cauchy stress tensor for lagrangian analysis
- stress : Cauchy stress tensor for eulerian analysis (atom_element_map), or first Piola-Kirchhoff stress tensor for lagrangian analysis
- transformed_stress : first Piola-Kirchhoff stress tensor for eulerian analysis (atom_element_map), or Cauchy stress tensor for lagrangian analysis
- heat_flux : spatial heat flux vector for eulerian, or referential heat flux vector for lagrangian
- potential_energy : potential energy per unit volume
- kinetic_energy : kinetic energy per unit volume

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