Compare commits

...

1939 Commits

Author SHA1 Message Date
c9742056d8 Merge pull request #2701 from akohlmey/next_lammps_version
Step version strings for next patch release
2021-04-07 19:39:52 -04:00
6569c2e434 Merge pull request #2694 from akohlmey/neighlist-interface-updates
Neighbor list library/python interface improvements
2021-04-07 16:25:38 -04:00
3c5424722e Merge pull request #2698 from jtclemm/gran_attractive
New option for granular pairstyles and updates to granular walls
2021-04-07 16:02:57 -04:00
5bc630f008 step version strings for next patch release 2021-04-07 15:07:06 -04:00
5bdf032035 Merge pull request #2308 from akohlmey/gpu-unittest
Add support for testing pair styles in the GPU package
2021-04-07 15:03:03 -04:00
ea8277ce87 whitespace fixes 2021-04-07 14:59:33 -04:00
f072289ac1 need to initialize limit_damping array to NULL 2021-04-07 14:52:36 -04:00
7b18bc1fec correctly handle r-RESPA for lj/class2 and lj/class2/gpu 2021-04-07 14:26:27 -04:00
9af086916b skip GPU tests for a couple more tabulated coulomb tests 2021-04-07 14:11:25 -04:00
835820ba00 reorder includes 2021-04-07 14:00:27 -04:00
5d00fa7ec5 update constants for lj/cubic/gpu from CPU version 2021-04-07 14:00:14 -04:00
6909bc234a Merge pull request #2700 from rbberger/python_calls_refactor
Python package refactor
2021-04-07 13:35:53 -04:00
da56b9de56 Adding user-omp support 2021-04-07 07:48:43 -06:00
717faa6515 correctly detect GPU package with CUDA api 2021-04-06 19:12:28 -04:00
932ea80b25 update reference data for angle style cosine/periodic 2021-04-06 18:39:37 -04:00
0ae75aabcd Remove unused variables 2021-04-06 17:10:16 -04:00
b6776ca3de Remove GCC optimization pragma for GCC < 4.9 due to compiler segfault 2021-04-06 16:48:18 -04:00
5af294d49e Update test_potential_file_reader.cpp 2021-04-06 16:47:06 -04:00
4ba45ddd84 Merge pull request #2697 from ndtrung81/fix-rigid-nh-small-deposit
Fixed a bug with rigid/{nvt,npt,nve,nph}/small when used with fix deposit
2021-04-06 16:08:12 -04:00
c44b8f18ee Adding explicit parentheses to logical operations 2021-04-06 13:54:11 -06:00
8e43d58fab Switching logical operators to match preferred style 2021-04-06 13:48:56 -06:00
6294a7c0dd Merge branch 'master' into gran_attractive 2021-04-06 13:11:37 -06:00
80a65150c2 Patching uninitialized values, replacing lines in documentation 2021-04-06 13:09:46 -06:00
0aa9aa96f6 Update pair_python 2021-04-06 14:50:08 -04:00
7e9fa25121 Update fix_python_move.cpp 2021-04-06 14:48:44 -04:00
5ee24c5b89 Update fix_python_invoke 2021-04-06 14:47:20 -04:00
da5bd578ad Simplify python_impl.cpp 2021-04-06 14:46:35 -04:00
e5a665c1d9 Add utilities for Python code 2021-04-06 14:45:07 -04:00
190a689354 Merge branch 'master' into gpu-unittest
# Conflicts:
#	unittest/force-styles/test_pair_style.cpp
#	unittest/force-styles/tests/angle-cosine_periodic.yaml
#	unittest/force-styles/tests/mol-pair-born.yaml
#	unittest/force-styles/tests/mol-pair-born_coul_dsf.yaml
#	unittest/force-styles/tests/mol-pair-born_coul_long.yaml
#	unittest/force-styles/tests/mol-pair-born_coul_msm.yaml
#	unittest/force-styles/tests/mol-pair-born_coul_msm_table.yaml
#	unittest/force-styles/tests/mol-pair-born_coul_wolf.yaml
#	unittest/force-styles/tests/mol-pair-morse.yaml
#	unittest/force-styles/tests/mol-pair-morse_smooth_linear.yaml
2021-04-06 14:45:06 -04:00
00e4bdb2b7 Merge pull request #2692 from arghdos/master
Porting to new default platform for AMD/HIP in ROCm 4.1
2021-04-06 14:39:30 -04:00
0b4d3588b5 Merge pull request #2695 from akohlmey/collected-small-changes
Collected small changes and fixes
2021-04-06 14:12:51 -04:00
e332382dea Merge pull request #2696 from rbberger/offline_builds
CMake: Improve support for offline builds
2021-04-06 13:52:11 -04:00
698b9b9519 relax epsilon some more 2021-04-06 13:36:27 -04:00
e01e0298cb fix uninitialized data access after restart bug in USER-YAFF pair styles
also fix some source formatting issues
2021-04-06 13:32:42 -04:00
db400c91ae relax error a little bit to avoid failure on macos 2021-04-06 11:37:59 -04:00
d346c53914 silence compiler warnings about formats 2021-04-06 11:28:19 -04:00
11d62b71c3 use clang preset when compiling on MacOS 2021-04-06 11:11:01 -04:00
ac0fa51b0b Merge branch 'master' into gran_attractive 2021-04-06 08:40:56 -06:00
1fe284dbba add examples for using fix rigid/nv?/small with fix deposit 2021-04-06 07:55:43 -04:00
8e28252ac9 Updated fix rigid/nh for the (g_f == 0) case 2021-04-06 00:19:20 -05:00
2fc9734fab Fixed a bug with rigid/*/small when starting with an empty group of rigid bodies such as when using fix deposit 2021-04-05 23:51:11 -05:00
94068cc4c7 Add missing GTEST_MD5 2021-04-05 16:17:41 -04:00
7e57d6a334 add tests for "rerun" 2021-04-05 16:01:27 -04:00
fc6e10921d add post yes/no keyword to rerun commmand (with default to no) 2021-04-05 15:38:59 -04:00
cbd439692e Update cmake/Modules/Packages/KIM.cmake 2021-04-05 15:36:14 -04:00
d4550dbb4b Update cmake/Modules/Packages/USER-SMD.cmake 2021-04-05 15:32:18 -04:00
2509190dae Update cmake/Modules/YAML.cmake 2021-04-05 15:29:33 -04:00
88b9e99707 Update cmake/Modules/Packages/GPU.cmake 2021-04-05 15:26:58 -04:00
b718903efc Update cmake/Modules/Packages/USER-PLUMED.cmake 2021-04-05 15:10:01 -04:00
8ccc19bb2a Update cmake/Modules/Packages/LATTE.cmake 2021-04-05 15:05:48 -04:00
0277883fb2 Update cmake/Modules/Packages/USER-SCAFACOS.cmake 2021-04-05 15:05:48 -04:00
725332614a Update cmake/Modules/Packages/MSCG.cmake 2021-04-05 15:05:47 -04:00
42ca8c5ba0 Update cmake/Modules/Packages/VORONOI.cmake 2021-04-05 15:05:47 -04:00
192ee276b1 Update cmake/Modules/Packages/KOKKOS.cmake 2021-04-05 15:05:47 -04:00
614411130b Update cmake/Modules/Documentation.cmake 2021-04-05 14:44:27 -04:00
3b14606f06 Update cmake/Modules/MPI4WIN.cmake 2021-04-05 14:43:05 -04:00
8533bb17e7 Update cmake/Modules/OpenCLLoader.cmake 2021-04-05 14:36:38 -04:00
4e4a571dbd Add advanced LAMMPS_DOWNLOADS_URL cmake option 2021-04-05 14:31:13 -04:00
f323fb29b3 Reverting no_attraction option in wall gran region docu 2021-04-05 11:53:49 -06:00
6bdf0138ac Typos in documentation 2021-04-05 11:50:53 -06:00
773ec40d3a Misc small fixes 2021-04-05 11:37:35 -06:00
9126fd6ddb Merge pull request #1 from dsbolin/gran_attractive
Gran attractive
2021-04-05 08:46:26 -06:00
e00e2676fc add tests for utils::open_potential() 2021-04-04 22:23:13 -04:00
a858c07e8a add unit tests for empty id, invalid timespecs, and merge sort 2021-04-04 21:51:48 -04:00
67d4302fc7 add tests for tokenizer skip() function and throwing an exception 2021-04-04 21:51:06 -04:00
1e7e930d55 generalize match to fit all rigid/small derived fixes 2021-04-04 21:14:40 -04:00
36c6410fd8 make skip() function argument optional and default to 1 2021-04-04 21:14:12 -04:00
d1b6aaa3f3 plugins also have a .so suffix on MacOS (unlike shared libs) 2021-04-04 20:57:29 -04:00
5e0b017d30 update information about adding unit tests to reflect recent changes 2021-04-04 20:51:58 -04:00
b2e9ffa673 add missing entry to standard packages list 2021-04-03 11:15:00 -04:00
17355f967a address spelling and manual processing issues 2021-04-03 11:11:18 -04:00
a4a23f3ef1 add an example for looking up and looping over a neighbor list 2021-04-03 11:04:24 -04:00
7244ccf8b1 update format 2021-04-03 11:04:02 -04:00
cfc39b5a73 complete porting python neighborlist test to c-library version 2021-04-03 10:44:07 -04:00
6205375c03 allow const char for compute/fix id arguments 2021-04-03 10:26:49 -04:00
1a48667026 add minimal test for neighbor list functions 2021-04-03 10:25:14 -04:00
cea4298946 silence LAMMPS output, if requested 2021-04-03 10:25:03 -04:00
5520d6edd7 confirm that no incompatible neighbor lists are found 2021-04-03 10:24:46 -04:00
432ccffb3e find manybody potentials 2021-04-03 10:23:31 -04:00
46f98ec4dc make compatible with const data pointers as arguments 2021-04-03 10:23:16 -04:00
50b789cc36 Merge branch 'master' into neighlist-interface-updates 2021-04-03 10:18:28 -04:00
b1faf17eeb Updates fix wall/gran to mirror recent updates to pair granular. Also some minor changes related to the limit_damping option 2021-04-03 00:48:00 -06:00
678302bfcb avoid a floating point exception in RanMars::rayleigh() from taking log(0) 2021-04-02 22:08:39 -04:00
d3b2ccf9dd numpy version of neighbor list tests 2021-04-02 21:41:26 -04:00
85a5698c1b add find method to neighbor list wrapper classes 2021-04-02 21:41:08 -04:00
7e70def4cc fix errors/typos in manual 2021-04-02 21:00:42 -04:00
c74bb9b56b add more unit tests for neighbor list access 2021-04-02 21:00:26 -04:00
51212e62d9 correct/update docs and parameter names for finding neighbor lists 2021-04-02 19:55:53 -04:00
9da49d9c6f Merge pull request #2685 from akohlmey/collected-small-changes
Collected small changes and fixes
2021-04-02 19:42:04 -04:00
66e885b6e5 Merge branch 'master' into collected-small-changes
# Conflicts:
#	src/USER-YAFF/pair_lj_switch3_coulgauss_long.cpp
#	src/USER-YAFF/pair_mm3_switch3_coulgauss_long.cpp
2021-04-02 17:57:54 -04:00
b976c2d13c Merge pull request #2679 from akohlmey/more-unittests
Expand unit tests
2021-04-02 17:51:29 -04:00
1c43b4a4c3 Merge branch 'fix_ave_chunk_cdof_bug' into collected-small-changes 2021-04-02 17:50:33 -04:00
90ab63f9ad Merge branch 'master' into collected-small-changes 2021-04-02 17:49:27 -04:00
2c00136f22 used correct suffix when installing plugin binaries for testing 2021-04-02 17:49:15 -04:00
abfe8bab59 fix uninitialized memory access issues. consolidate enumerators. 2021-04-02 17:32:29 -04:00
2a10b5ba69 fix bug causing segfaults 2021-04-02 17:21:34 -04:00
af6452065f correct URL to XTC file format docs on the gromacs homepage 2021-04-02 16:48:13 -04:00
7d85461e97 Prevent compilation from breaking with Python 2 2021-04-02 16:32:25 -04:00
79a413aeea replace calls to sqrt() in constant initializers with precomputed numbers.
this also moves those arrays into a separate file and out of the header
2021-04-02 16:15:28 -04:00
160f2cc630 Update ROCm container definitions 2021-04-02 16:11:23 -04:00
7995fd8923 Merge pull request #2689 from bhanudaysharma/patch-1
Update units.rst (documentation for units commands)
2021-04-02 16:09:56 -04:00
c62b1b1050 Merge remote-tracking branch 'github/master' into collected-small-changes 2021-04-02 16:08:51 -04:00
c4f59764d4 reformat pair_coeff section that got misformatted as string 2021-04-02 15:28:09 -04:00
e613da98d6 Merge pull request #2650 from akohlmey/plugin-loader
New PLUGIN package with a LAMMPS plugin loader command
2021-04-02 15:08:44 -04:00
5583901b2c should not set neighbor list request id to non-zero when just requesting a single neighbor list 2021-04-02 13:51:42 -04:00
43735fd3f5 update neighbor list library interface to use ID field in neighbor list to uniquely identify lists 2021-04-02 13:50:50 -04:00
d24f74b582 add stop on file example to fix halt docs 2021-04-02 12:31:46 -04:00
366b49c581 copy NeighRequest::id to NeighList::id so we can identify them when a style has multiple requests 2021-04-02 12:14:34 -04:00
887eb40ad4 fix crash when requesting verbose output. 2021-04-02 12:07:59 -04:00
2dfafe4adb add is_file() special variable function and unit tests for it 2021-04-02 12:07:43 -04:00
6e97417dbf Merge branch 'gran_attractive' of https://github.com/jtclemm/lammps into gran_attractive 2021-04-01 22:24:04 -06:00
c3eb52f46a add force tests for USER-YAFF pair styles 2021-04-01 12:43:24 -04:00
994ee59fd5 correct single() functions for USER-YAFF pair styles to be consistent with compute() 2021-04-01 12:42:48 -04:00
b5ef98cc22 consolidate the documentation for lj/switch3/coulgauss/long and mm3/switch3/coulgauss/long into a single file 2021-04-01 12:42:07 -04:00
9ac246011e remove flags and setup for multi-cutoff r-RESPA support which is missing 2021-04-01 12:14:40 -04:00
e7422a6bf7 silence compiler warnings 2021-04-01 11:28:18 -04:00
3668ce1374 Merge branch 'master' into more-unittests
# Conflicts:
#	unittest/testing/core.h
2021-04-01 11:11:18 -04:00
4c2fb7a431 Porting to new default platform for AMD/HIP in ROCm 4.1 2021-04-01 09:43:13 -05:00
0b60650c1b Merge branch 'master' into collected-small-changes 2021-04-01 10:11:59 -04:00
21c934d2cd Merge pull request #2682 from rbberger/python_unittests
Python package unit tests
2021-04-01 10:11:26 -04:00
f2a28dea4e Merge pull request #2686 from ProfessorMiller/master
Better handling of incorrect boundary conditions for KIM models with Coulomb interactions
2021-04-01 10:11:08 -04:00
52e5f1e962 Merge pull request #2690 from ohenrich/user-cgdna
USER-CGDNA: Corrected error message
2021-04-01 09:54:45 -04:00
b5d2f5f2b2 address whitespace issues 2021-04-01 09:45:01 -04:00
e0aec1b5d9 remove obsoleted comment 2021-04-01 09:39:17 -04:00
f867e69290 include new split_lines() function in Developer docs 2021-04-01 09:35:52 -04:00
c9652f3aa6 update documentation for the extract_global() method of the lammps.lammps class 2021-04-01 09:31:54 -04:00
eeaa221ee7 Merge pull request #2691 from wmbrownIntel/gpu_cudpp_fix
Fixing bug with GPU neighboring when using builds supporting CUDPP.
2021-04-01 09:21:18 -04:00
d72b390c41 correct check for box changing fixes 2021-04-01 08:48:39 -04:00
f48af95d49 update gcmc example to use fix rigid/small 2021-04-01 08:23:10 -04:00
8b37f3c044 Fixing incorrect arg for pair gran 2021-03-31 17:25:41 -06:00
8b2676a103 Moving arguments in gran wall, renaming toarg limit_damping 2021-03-31 16:57:13 -06:00
bed57e02f7 avoiding static variable 2021-03-31 16:18:05 -04:00
7699fb3708 generalize some checks in fix rigid and rigid/small 2021-03-31 15:55:31 -04:00
c53f2d4629 correct USER-OMP respa/omp check 2021-03-31 14:55:07 -04:00
9e412bb7a6 Fixing bug with GPU neighboring when using builds supporting CUDPP.
...introduced in Feb 2021 GPU package update. Manifests when GPU library is built with -DUSE_CUDPP and -DLAL_USE_OLD_NEIGHBOR (latter forced with CUDA 11.2).
2021-03-31 11:42:39 -07:00
0bde6c82a3 remove newton bond off check again 2021-03-31 14:40:54 -04:00
e1cf6a312f Corrected error message 2021-03-31 18:56:50 +01:00
d36894ccf5 Adding pertype flag to pair granular 2021-03-30 22:16:47 -06:00
ad2b2c7768 Merge branch 'gran_attractive' of https://github.com/jtclemm/lammps into gran_attractive 2021-03-30 21:55:21 -06:00
2988aa2d1f Fixes bug where accumulated tangential and rolling displacements are not rotated correctly. Pointed out by Deng Pan on LAMMPS mailing list 3/26/21 2021-03-30 21:55:06 -06:00
7e0d44e0ca Adding no_attraction flag to granular pair and wall styles 2021-03-30 20:51:23 -06:00
7092a7769c Update units.rst
In LJ units, the conversion formula between rho and rho* should be corrected to   
\rho^* = \rho \frac{\sigma^{dim}}{m}
2021-03-31 06:44:52 +05:30
183b30abd7 use strmatch() consistently to detect respa and verlet runstyles with optional suffix 2021-03-30 18:30:22 -04:00
eea2f45a95 force newton bond to be on since we don't support it to be off (yet) 2021-03-30 17:19:28 -04:00
e22f9c4768 newton bond off does not work with atom style template currently 2021-03-30 16:48:51 -04:00
2e86cb4176 for atom style template number of bonds does not depend on newton_bond 2021-03-30 15:33:11 -04:00
8f5d11c0c5 add missing return 2021-03-30 13:34:31 -04:00
4ee24b85b0 fix a few minor issues with the docs 2021-03-30 11:45:47 -04:00
2dbf59efa9 update install instructions for updates via patch and git for CMake/GNU make 2021-03-30 11:43:56 -04:00
2b5af8894e Merge branch 'master' of git://github.com/lammps/lammps 2021-03-30 11:36:23 -04:00
24d9d6d17d update to kim_interactions to correctly handle incorrect combinations of periodic and f/s boundary conditions when the SM has to choose between kspace or real space coulomb calculations. This version treats "p p p" in kspace, "f f f" or "s s s" in realspace, and "p p f" with kspace-slab. all others are sent to kspace-slab and then caught there as an error. 2021-03-30 11:27:39 -04:00
71dbf43e09 error our when Fix:set_molecule() is called with unsupported fixes
also add example input for using fix rigid/small with fix deposit
2021-03-30 11:10:59 -04:00
57ad6d50f4 silence compiler warnings 2021-03-30 10:36:00 -04:00
bfca619957 fix typos 2021-03-30 07:49:15 -04:00
40f1a74a7f use more precise detection of verlet and respa run styles 2021-03-30 07:37:39 -04:00
3041561383 add proper r-RESPA support for fix cmap 2021-03-30 07:36:53 -04:00
ea105a3c9a fix typo 2021-03-30 07:36:22 -04:00
41de02ee9d update granular howto 2021-03-29 23:44:38 -04:00
20e6174e59 cannot use tokenizer for parse_args() as the search for commata must be away of parenthesis 2021-03-29 21:11:07 -04:00
ddaeabf4d3 Merge branch 'more-unittests' of github.com:akohlmey/lammps into more-unittests 2021-03-29 16:18:38 -04:00
ea808b8563 Merge branch 'master' into more-unittests 2021-03-29 15:27:26 -04:00
2b11848fcc bugfix from dan bolintineanu for issue reported on lammps-users by Deng Pan 2021-03-29 15:26:57 -04:00
6f986eee4e Add missing changes 2021-03-29 15:01:29 -04:00
aaf9aa6d69 Refactoring of more tests 2021-03-29 14:27:42 -04:00
9058216a54 silence compiler warnings 2021-03-29 14:11:56 -04:00
180d2895c4 Merge pull request #2678 from akohlmey/collected-small-changes
Collected small changes and fixes
2021-03-29 14:05:08 -04:00
dbc30f9c19 Merge pull request #2683 from akohlmey/pair-map-refactor
Refactor element to type mapping code  in pair styles
2021-03-29 12:15:02 -04:00
1e3f1c584c simplify by using utils::strdup() fmt::format() and reorder includes 2021-03-29 08:12:37 -04:00
806f4e73ed make dihedral style table/cut a derived class from table and remove redundant code 2021-03-29 07:32:43 -04:00
e481eb1154 simplify by using utils::strdup() fmt::format() and reorder includes 2021-03-29 07:29:14 -04:00
b32570c15e simplify by using utils::strdup() and reorder includes 2021-03-28 22:22:13 -04:00
31726f56e6 refactor group2ndx and ndx2group commands to use fmtlib, tokenizer and utils 2021-03-28 14:48:39 -04:00
dfb18caf5a simplify using utils::strdup(), update order of include files 2021-03-27 16:25:55 -04:00
436be824e1 use std:: namespace for STL containers 2021-03-27 12:10:40 -04:00
0b73ab96d2 avoid replicated code, consolidate variables and element mapping 2021-03-27 12:09:36 -04:00
35abca1b40 we should include <strings.h> when using strcasecmp() 2021-03-27 11:18:59 -04:00
e85f945d8e fix typos 2021-03-26 23:12:29 -04:00
1752bd0276 Refactoring of some test files 2021-03-26 12:23:58 -04:00
664335420a Start refactoring tests 2021-03-26 11:50:58 -04:00
b1efdda75c Merge remote-tracking branch 'origin/master' into more-unittests 2021-03-26 11:35:22 -04:00
756d935d06 use std:: namespace for STL containers 2021-03-25 21:13:24 -04:00
029db1413e Add missing verbose after merge 2021-03-25 21:01:32 -04:00
439bc4bb8e Merge remote-tracking branch 'origin/master' into python_unittests 2021-03-25 20:58:28 -04:00
cb25e4aa39 Add nve respa testcase for python/move 2021-03-25 20:34:25 -04:00
a193d9d429 fix several issues when using extract_global() from python exposed by tests 2021-03-25 20:34:25 -04:00
b8f02d759a add support for extracting respa levels and timestep values 2021-03-25 20:34:25 -04:00
e0fdd2ad89 correct lammps.extract_global() method for returned arrays which are returned as list 2021-03-25 20:34:24 -04:00
53f32cea7e simplify using utils::strdup() 2021-03-25 19:42:41 -04:00
2baafda517 simplify 2021-03-25 17:19:11 -04:00
2b34d88b71 fix bug 2021-03-25 17:19:03 -04:00
4efe60ec43 compatibility with older CMake versions 2021-03-25 17:14:57 -04:00
27e31c4b15 simplify 2021-03-25 14:49:49 -04:00
28ac1fddc7 add tests for fix adapt with pairwise and coulomb interactions 2021-03-25 14:20:44 -04:00
6d6e2a7920 add simple check whether the compiled executable can actually run 2021-03-24 21:51:55 -04:00
a772c3b7d2 test a few more functions and constants 2021-03-24 21:27:32 -04:00
47b7653d4d Merge pull request #2653 from rbberger/code_coverage
Add tests to increase code coverage
2021-03-24 20:57:46 -04:00
3c41c12dbc Add testcase for python/move 2021-03-24 18:58:46 -04:00
4fa5ce2dbc Remove unnecessary import 2021-03-24 18:11:31 -04:00
d04d326413 more tests for expressions and vector style variables 2021-03-24 18:02:30 -04:00
55b0e33200 fix typo 2021-03-24 18:01:48 -04:00
b0bc0b9a2f Use time.strptime instead of datetime.strptime
Embedding the Python interpreter multiple times in the same process can
cause this issue due to import caching. https://bugs.python.org/issue27400
This seems to be avoidable by using the time module instead.
2021-03-24 17:54:13 -04:00
81e8676c7e Prepare python/move unittest 2021-03-24 17:15:07 -04:00
aab51fe70e more coverage of utility functions in Variable class 2021-03-24 16:47:56 -04:00
157698543f add tests for "next" command 2021-03-24 16:47:08 -04:00
45191e9f7c Refactor and add fix python/invoke tests 2021-03-24 16:33:39 -04:00
b15502ddc8 Add utils::split_lines 2021-03-24 15:53:00 -04:00
1c9c46d2c1 Add tests to cover python command 2021-03-24 15:42:38 -04:00
407212153f create more variables of different styles 2021-03-24 15:14:58 -04:00
cc54f553e0 complete tests for if command booleans 2021-03-24 14:35:48 -04:00
9d3e37b102 Add more python variable tests 2021-03-24 12:43:47 -04:00
51946205ce add YAML files for MLIAP nn and quadratic snap model input 2021-03-24 12:26:07 -04:00
487c55edf0 simplify and apply clang-format 2021-03-24 11:24:55 -04:00
8790ecc141 Refactor existing tests 2021-03-24 11:18:21 -04:00
b6a030532d add tests for boolean evaluation in "if" command 2021-03-24 10:33:00 -04:00
67f1f12c20 more tests for expressions 2021-03-23 21:42:45 -04:00
85d1257222 move redundant enumerator to Variable class definition in variable.h 2021-03-23 21:41:50 -04:00
23c8d8ccfb Use HasSubstr since output order is dependent on buffering 2021-03-23 20:13:39 -04:00
359a369573 Ensure that global Py_UnbufferedStdioFlag is set when PYTHONUNBUFFERED=1 2021-03-23 19:57:45 -04:00
6b24006d43 Use Info::has_package to check for PYTHON support 2021-03-23 19:56:18 -04:00
180e816886 Simplify PythonPackage tests 2021-03-23 19:55:08 -04:00
4f46ee30a2 avoid crash when functions expecting an argument are used without 2021-03-23 18:13:01 -04:00
346c36e227 replace redundant functions to handle constants with (unordered) map 2021-03-23 17:48:47 -04:00
1efd72eb58 a couple more expressions and functions 2021-03-23 16:55:05 -04:00
1ebb600829 add tests for expressions and functions 2021-03-23 16:47:40 -04:00
014f9ad527 simplify Variable::parse_args() by using Tokenizer class 2021-03-23 16:47:04 -04:00
16c08516a7 test definition of more different variable styles 2021-03-23 16:14:40 -04:00
08d4fec142 add framework for testing the variable command 2021-03-23 14:38:54 -04:00
73b9f22681 Merge pull request #2675 from jrgissing/bond/react-tweak-recent-updates
Bond/react: tweak recent updates
2021-03-23 13:51:48 -04:00
b7296b6d0b consolidate documentation for dihedral styles table and table/cut into one file 2021-03-23 13:49:37 -04:00
403a7a6f84 Merge pull request #2677 from stanmoore1/kk_snap_opt
Optimizations to Kokkos SNAP
2021-03-23 13:32:02 -04:00
875327117b add unit test for dihedral styles table and table/cut 2021-03-23 08:07:35 -04:00
4b076e01be silence compiler warning 2021-03-22 21:36:33 -04:00
ca1496e028 simplify 2021-03-22 21:36:25 -04:00
56121a524c correct equilibrium angle computation for angle style cosine/periodic if b < 0 2021-03-22 16:26:50 -04:00
58744f0a49 correct expression for K 2021-03-22 15:32:24 -04:00
aabfe40ad3 add missing 1/n**2 term to pair style cosine/periodic energy function 2021-03-22 15:10:45 -04:00
e8c8ceaf81 correct attribution of angle style cosine/squared with DREIDING 2021-03-22 11:28:22 -04:00
e2591a90cf Merge branch 'master' of https://github.com/lammps/lammps into kk_snap_opt 2021-03-22 11:24:46 -04:00
b8f6063578 correct documentation of angle style cosine/periodic 2021-03-22 10:47:49 -04:00
2bab4808b6 Improve memory coalescing in Kokkos snap force computation, pointed out by @weinbe2 2021-03-22 08:28:43 -06:00
b3f465babe decrease foward_comm nsize
due to new placement of probability evaluation
2021-03-20 16:34:55 -04:00
012cdf3763 performance improvement bugfix 2021-03-20 16:20:57 -04:00
c4e1255f3e Merge pull request #2674 from rbberger/small_changes
Small code changes
2021-03-19 20:05:41 -04:00
dbe41778fa Merge branch 'small_changes' of github.com:rbberger/lammps into small_changes 2021-03-19 18:51:44 -04:00
06ee5be2ce Fix unhandled cases in docs LAMMPS syntax highlighting 2021-03-19 18:51:21 -04:00
4269eeeef7 Optimize quadratic Kokkos SNAP, pointed out by @weinbe2 2021-03-19 17:22:40 -04:00
125ddb0c82 Merge pull request #2670 from stanmoore1/kk_debye
Fix issues in pair_coul_debye_kokkos
2021-03-19 16:13:28 -04:00
9707771f1c apply UTF-8 character replacement before creating tokens 2021-03-19 16:10:37 -04:00
6503a7c3ba skip explicit temporaries 2021-03-19 15:52:27 -04:00
1f50557b38 Adopt utils::strdup in dump styles 2021-03-19 15:34:43 -04:00
a33a04a392 Remove redundant has_next() check in Tokenizer 2021-03-19 14:12:09 -04:00
5d4614b626 Correct vformat for bigint in dump_custom.cpp 2021-03-19 14:10:20 -04:00
772d270974 Merge pull request #2662 from evoyiatzis/master
Addition of a PyLammps script to compute elastic constants using OpenKIM
2021-03-19 13:43:19 -04:00
41c2a82ccc Merge pull request #2666 from akohlmey/collected-small-changes
Collected small changes and fixes
2021-03-19 13:32:42 -04:00
945ecd1f1c Update kim commands 2021-03-19 13:23:15 -04:00
154b8cb401 remove dead code 2021-03-19 11:42:09 -04:00
ca102e4920 remove dead code 2021-03-19 11:20:32 -04:00
b9bc226e39 save style names alongside the classes when using read_data nocoeff
this fixes #2673
2021-03-19 10:06:02 -04:00
2e7e5aeac4 make fix gcmc and fix widom compatible with USER-INTEL
this fixes #2672
2021-03-19 10:04:28 -04:00
a5563e8d04 simplify using utils::strdup() 2021-03-18 20:56:04 -04:00
1710fb86d3 when using INTEL_LR_THREADS from C++11 we must add the threads library 2021-03-18 20:33:36 -04:00
59c0325f08 simplify by using utils::strdup() 2021-03-18 20:22:08 -04:00
0dd32d2f99 Merge pull request #2671 from rbberger/python_update
Improve LAMMPS error/exception detection in Python package
2021-03-18 19:37:24 -04:00
ff1b6deff0 Merge pull request #2668 from ellio167/trim-models-list
Trim models list returned by "kim query ... get_available_models ..." to those installed on user's system
2021-03-18 18:32:30 -04:00
024a9600b1 update docs 2021-03-18 18:20:32 -04:00
a5ce7c1ac9 better checks for valid data 2021-03-18 18:03:26 -04:00
023d42b5bb add support for region style plugins 2021-03-18 18:03:12 -04:00
03793d5e4d simplify 2021-03-18 17:23:25 -04:00
b2309f6246 add support for computes 2021-03-18 17:09:08 -04:00
fbb3bb14af synchronize interface to managing computes in Modify with that of fixes
- add find_compute_by_style()
- add delete_compute(int)
2021-03-18 17:08:49 -04:00
9b29b1594b add support for bond/angle/dihedral/improper plugins 2021-03-18 14:40:41 -04:00
692802921d Add SYCL output to info command 2021-03-18 14:28:47 -04:00
4c0efceb1e Remove invalid thermo accesses 2021-03-18 14:26:52 -04:00
64ba2f4ee2 Add missing checks for C++ exceptions 2021-03-18 14:26:18 -04:00
4cbf8eb2f8 Fix issues in pair_coul_debye_kokkos, pointed out by @weinbe2 2021-03-18 11:55:04 -06:00
c5ab2becd7 fix bug in utils::expand_args() 2021-03-18 12:25:31 -04:00
d5a1591cd1 simplify code
- use Tokenizer instead of ValueTokenizer since no value conversions are needed
- don't use fmt::format() when no string formatting is needed
2021-03-18 12:12:30 -04:00
b6498c8b9b Merge pull request #2665 from masterleinad/kokkos_sycl
Allow compiling with SYCL
2021-03-18 11:27:42 -04:00
482aa7a66d Reset LAMMPS_LAMBDA to KOKKOS_LAMBDA 2021-03-18 14:19:57 +00:00
199595c510 Small adjustment to log message 2021-03-17 10:54:55 -05:00
232611c184 Merge branch 'master' into gpu-unittest
# Conflicts:
#	unittest/force-styles/tests/atomic-pair-reax_c.yaml
#	unittest/force-styles/tests/improper-cvff.yaml
#	unittest/force-styles/tests/improper-harmonic.yaml
#	unittest/force-styles/tests/improper-hybrid.yaml
#	unittest/force-styles/tests/mol-pair-lj_cubic.yaml
2021-03-17 08:50:26 -04:00
ecbb75ff3c removing parentheses from mass dictionary 2021-03-17 12:30:02 +01:00
05d6c1e757 Update python/examples/pylammps/elastic/elastic.py
Co-authored-by: Richard Berger <richard.berger@temple.edu>
2021-03-17 10:37:39 +01:00
611eb306be Update python/examples/pylammps/elastic/elastic.py
Co-authored-by: Richard Berger <richard.berger@temple.edu>
2021-03-17 10:37:24 +01:00
5ba57fdd44 forgot to delete this line 2021-03-17 00:21:40 -04:00
2dc0b70575 simplify some more code by using utils::strdup() 2021-03-17 00:10:01 -04:00
ddc77be911 update docs for converting the plugin feature to a package 2021-03-16 23:52:44 -04:00
2a6fcee5e0 add missing file (was ignored by default) 2021-03-16 23:42:06 -04:00
a76a8eae59 fix segfault when processing empty lines 2021-03-16 23:41:18 -04:00
78126c5eb3 fix cmake unit test issue 2021-03-16 23:32:08 -04:00
28e986c266 add python module support for plugins 2021-03-16 23:25:46 -04:00
125ae33ccf convert plugin functionality into a package 2021-03-16 23:00:16 -04:00
a6773bad5d remove unnecessary echo 2021-03-16 19:40:49 -05:00
11894f83b9 clarify and fix grammar issues 2021-03-16 19:50:45 -04:00
31009b0517 Merge branch 'master' into plugin-loader 2021-03-16 19:46:21 -04:00
42895ac6df Merge pull request #2654 from akohlmey/collected-small-changes
Collected small changes
2021-03-16 19:34:54 -04:00
22fdfa27b5 Updated documentation to clarify the treatment of temperature using norm all 2021-03-17 09:01:35 +10:00
1b5a7e2e1e Merge pull request #2664 from rbberger/pylammps_update
PyLammps Examples update
2021-03-16 18:45:38 -04:00
2e45c84c6a Merge pull request #2655 from akohlmey/collected-refactoring
Collected small code refactoring changes
2021-03-16 18:39:30 -04:00
46b86f3b1e Define LAMMPS_DEVICE_FUNCTION 2021-03-16 22:20:47 +00:00
0e8f64251e Correct the token to avoid missing model names
Correct the missing & available strings to match with the rest of query
Add error message when there is no OpenKIM model installed on the system
Correct the header file inlcusion order
2021-03-16 16:23:54 -05:00
772190efd1 Merge pull request #2657 from rbberger/refactor_meam_reader
Refactor MEAMC potential reader
2021-03-16 17:14:34 -04:00
ec5490e467 Allow compiling with SYCL 2021-03-16 21:04:51 +00:00
3eb9b21713 Merge pull request #2658 from akohlmey/more-unittests
Update and expand unit tests
2021-03-16 16:59:14 -04:00
c5a4488c23 Merge pull request #2663 from masterleinad/kokkos_avoid_intrinsics
Avoid intrinsics KOKKOS/npair_kokkos
2021-03-16 16:40:13 -04:00
3b9d5916c9 add backward compatibility for recent changes to KIM commands 2021-03-16 16:38:56 -04:00
5e3ddb6986 Use stable branch for checkout 2021-03-16 16:36:34 -04:00
c81610a3e8 Check for installed OpenKIM models to be returned by kim query command 2021-03-16 14:39:24 -05:00
45b01aba0c Update Jupyter notebooks 2021-03-16 15:18:07 -04:00
32a2ee6dc2 Update mc.ipynb 2021-03-16 14:38:26 -04:00
e9e1a96335 Update simply.ipynb 2021-03-16 14:22:26 -04:00
644b61cd1f Add __dir__() to Atom class 2021-03-16 14:21:19 -04:00
a8597de4be Add __dir__() to variable_set 2021-03-16 14:04:24 -04:00
dc435d8188 Improve indentation 2021-03-16 17:53:41 +00:00
e81fe91c2b don't output null pointers as strings with fmtlib in variable info list 2021-03-16 13:45:05 -04:00
1fae21622a remove trailing whitespace 2021-03-16 13:37:15 -04:00
3304dfcbfe don't output null pointers as strings with fmtlib in variable info list 2021-03-16 13:31:56 -04:00
ac32d907c0 Avoid intrinsics KOKKOS/npair_kokkos 2021-03-16 17:09:37 +00:00
d1b4af60a3 disable GPU binning via CUDPP by default and describe why 2021-03-16 11:58:47 -04:00
b4633bc2b2 Update PyLammps examples README 2021-03-16 11:49:24 -04:00
cf19197f79 revert change causing memory corruption. we need extra space in the allocated string buffer. 2021-03-16 10:03:22 -04:00
eb90fcecb1 simplify using utils::strdup() 2021-03-16 09:39:45 -04:00
1ef1a7d865 simplify using std::string 2021-03-16 09:39:28 -04:00
b7759b0cdb use ValueTokenizer instead of sscanf() for safer parsing of custom processor grids 2021-03-16 09:15:49 -04:00
5d5fc4a04d simplify by using utils::strdup() 2021-03-16 08:56:52 -04:00
a1d8e21b04 Add files via upload 2021-03-16 13:14:20 +01:00
6f07564a92 Create README 2021-03-16 13:13:45 +01:00
11d2b488c1 Fixed incorrect scaling of cdof for 'norm all' 2021-03-16 16:51:10 +10:00
2f8770971c make use of utils::strdup() and simplify 2021-03-16 01:17:10 -04:00
3d67d1eee9 simplify 2021-03-16 00:50:29 -04:00
c39d494ae4 update "magic" for restart files to have more information 2021-03-15 22:58:19 -04:00
68b6296f90 accept negative numbers for group definition by id 2021-03-15 21:53:27 -04:00
154ae86469 fix bug 2021-03-15 21:42:43 -04:00
f2890e39ef update to use new intel fortran compiler name
Co-authored-by: Richard Berger <richard.berger@temple.edu>
2021-03-15 20:53:49 -04:00
f835d5e69e refactor utils::expand_args() 2021-03-15 20:50:26 -04:00
ece2433208 use utils::strdup() for duplicating strings 2021-03-15 17:55:19 -04:00
0808453618 remove dead code 2021-03-15 17:00:27 -04:00
a6a2879807 add a few more tokenizer test cases for added use cases. 2021-03-15 12:02:58 -04:00
63110fd588 replace use of strtok() with Tokenizer class 2021-03-15 12:02:38 -04:00
dbf7b9c24a simplify and get rid of strtok() 2021-03-15 11:28:25 -04:00
23e4078b4e use enumerator constants from base class 2021-03-15 11:27:57 -04:00
ffb86eb2ab fix bug 2021-03-15 11:27:27 -04:00
b13e5fa234 simplify using std::string and utils::strdup(); get rid of strtok() 2021-03-15 09:36:49 -04:00
16387eda40 Merge pull request #2659 from evoyiatzis/patch-2
Updating displace.mod
2021-03-15 07:43:48 -04:00
6a67df7ebc fix typo 2021-03-15 00:34:06 -04:00
88c6e5cb31 correctly identify new Intel compiler. mark old Intel compiler as "classic" 2021-03-15 00:32:31 -04:00
097eebaa36 use __INTEL_LLVM_COMPILER macro to detect new intel compilers as intel, not clang 2021-03-15 00:25:29 -04:00
47b305b558 with the new llvm based intel compiler getrusage.mu_maxrss is zero 2021-03-15 00:07:57 -04:00
e6d8209b9d use new intel LLVM based fortran compiler as well 2021-03-15 00:06:58 -04:00
0f7913a665 Fix token types and remove unused header 2021-03-14 20:46:22 -04:00
11ff1fecf9 use ValueTokenizer to parse group range selector string with strict syntax check 2021-03-14 19:10:44 -04:00
5d795130db more strict checking of valid input in utils::bounds() with new tests 2021-03-14 17:59:00 -04:00
4c17217ad2 add unit tests for the exceptions thrown by ValueTokenizer when data is missing 2021-03-14 17:28:03 -04:00
6158802974 add support for testing per-atom properties with fix property/atom 2021-03-14 17:18:03 -04:00
a6e6f43d55 write a comment to the custom data file section with the column assignment 2021-03-14 15:36:09 -04:00
3642dcfedb use ValueTokenizer for parsing fix property/atom sections of data files 2021-03-14 15:35:12 -04:00
194a551590 complete refactor of file/atomfile variable parsing code 2021-03-14 10:45:07 -04:00
14abdade03 ValueTokenizer will throw a "Not enough tokens" exception, if trying to get the next value without one present 2021-03-14 10:44:27 -04:00
f72013c5db Update displace.mod
The pressure tensor was not computed as time-averaged quantity but as instantaneous value
2021-03-14 12:36:46 +01:00
1b409fbae8 update docs for magic patterns 2021-03-14 06:39:59 -04:00
18be1a2ea3 fix typo in false positives 2021-03-14 05:45:25 -04:00
ad878bbf73 tweak epsilon 2021-03-14 05:44:39 -04:00
84b0da3054 add a "magic" file for use with the file(1) command to detect LAMMPS files 2021-03-14 05:44:28 -04:00
59977d07ef fix unit test failure for non-verbose runs 2021-03-14 05:00:22 -04:00
8c4918457f consistently compare atom->molecular against enumerator constants 2021-03-14 01:25:22 -05:00
5e18518f7a group tester covers now about 40% of group.cpp 2021-03-14 00:49:35 -05:00
0062645cbc check for Atom::molecule_flag instead of Atom::molecular when using molecule ID only 2021-03-14 00:48:36 -05:00
9be96fb96a add unit test for groups 2021-03-13 22:53:03 -05:00
0cdd433eca better error checking 2021-03-13 22:52:37 -05:00
7936a6296f simplify 2021-03-13 22:52:25 -05:00
11386097c6 avoid strtok() when reading variables from file 2021-03-13 21:00:09 -05:00
a1b26fdfc4 small unit test epsion tweaks for impropers 2021-03-13 20:48:34 -05:00
3183c4bdb7 avoid calling strtok() when reading per-atom data in data files 2021-03-13 19:23:24 -05:00
15e30ed44d report dynamic linker error messages on failures 2021-03-13 18:41:36 -05:00
9c13361a17 avoid calling strtok() in group command 2021-03-13 18:33:42 -05:00
e6def05178 refactor parse_coeffs() function to avoid calling strtok() 2021-03-13 18:09:36 -05:00
882b221a17 rename arg,narg,maxarg to avoid shadowing in command() function 2021-03-13 17:35:49 -05:00
5f3649ed95 correctly process strings with DOS-style CR-LF in lammps_commands_string() 2021-03-13 15:48:22 -05:00
ec2be3f8bc add preset for Intel's new oneAPI LLVM based compiler 2021-03-13 13:07:25 -05:00
98fa3661f3 silence compiler warning 2021-03-13 12:41:01 -05:00
10189760c6 fix issue of not removing unloaded plugins from fix map 2021-03-13 12:40:49 -05:00
88760fa648 add plugin clear command to unload all loaded plugins 2021-03-13 12:40:04 -05:00
79d438e090 add support for plugin command to LAMMPS shell 2021-03-13 12:18:07 -05:00
dd94bac0c8 better error message when trying to unload an unsupported plugin style 2021-03-13 12:17:45 -05:00
76cff1ed1e add library interface for introspection of loaded plugins 2021-03-13 12:17:20 -05:00
e3d9c3126b revert back to not supporting loading plugins on windows 2021-03-13 10:25:44 -05:00
4ae7f84c2a whitespace 2021-03-12 22:27:38 -05:00
d05137455c ignore build folders 2021-03-12 22:21:24 -05:00
3e90b1971a add preliminary support for compiling/loading plugins on windows 2021-03-12 22:21:11 -05:00
b2085f56d6 install compiled plugins into the current working directory of the tester 2021-03-12 18:35:39 -05:00
93bbaef547 add unit tests for plugin command 2021-03-12 17:28:22 -05:00
a689c19047 Refactor MEAMC potential file reader 2021-03-12 15:54:20 -05:00
98013a1528 add draft version of unit test (will have to be improved for MacOS) 2021-03-12 15:32:50 -05:00
1c222286e2 correct output 2021-03-12 14:30:08 -05:00
4b1924fad1 add missing check 2021-03-12 14:29:59 -05:00
7b4e143176 support building plugins on MacOS (tested on version 11.0 aka Big Sur) 2021-03-12 14:29:40 -05:00
1dd69a3c00 avoid warnings when processing embedded docs with doxygen 2021-03-12 11:44:34 -05:00
c3f6fb914f add CMake build environment demo for plugins 2021-03-12 11:43:37 -05:00
a2bcd7fe68 programmer documentation update 2021-03-12 00:07:52 -05:00
930c0fca30 must link with -ldl 2021-03-11 23:59:23 -05:00
d95d5f1954 store different factory variants in a union 2021-03-11 23:52:35 -05:00
524c62994e update docs 2021-03-11 23:12:00 -05:00
dde00ab344 add plugin command documentation 2021-03-11 23:10:26 -05:00
83583c465e add support for command plugins with example 2021-03-11 23:09:37 -05:00
256c478a6b reorder functions and make header and implemention order consistent 2021-03-11 22:34:47 -05:00
347db1458d always link with libdl.so/.a or equivalent except on windows 2021-03-11 22:34:23 -05:00
b9028a07bf bugfix 2021-03-11 22:09:50 -05:00
a28d9a6e69 activate workaround for problems with new GPU code neighbor lists 2021-03-11 22:06:10 -05:00
6a14403a27 silence compiler warnings 2021-03-11 22:05:24 -05:00
620dd09509 delete active fixes when unloading fix style plugin 2021-03-11 21:36:14 -05:00
19c042c8d2 add false positives 2021-03-11 21:19:49 -05:00
3d1c6b30af refuse to load a plugin over an existing plugin for the same style 2021-03-11 21:19:29 -05:00
9209cbba92 add support for loading plugins for fixes 2021-03-11 21:19:04 -05:00
f982d98574 small tweaks 2021-03-11 19:34:28 -05:00
b252946fba now fix windows compile for real 2021-03-11 19:34:13 -05:00
dfe4f7a49d small tweaks and simplify 2021-03-11 19:33:50 -05:00
c61de8740c add preliminary documentation for plugin command and about how to write plugins 2021-03-11 19:33:07 -05:00
3ec9f2fd5e whitespace 2021-03-11 17:44:11 -05:00
ee8246f590 recover compilation on windows 2021-03-11 17:44:05 -05:00
b8ae2f5c6f add comments, extra checks, have output only on MPI rank 0 2021-03-11 17:41:08 -05:00
c78ddb29dd implement reference counting and means to close unused DSO. Must delete pair style when plugin version is in use 2021-03-11 16:57:37 -05:00
36ccb4ddb9 Merge branch 'master' into plugin-loader 2021-03-11 15:02:33 -05:00
76d857e428 Add more tests for COMPRESS package 2021-03-11 14:21:16 -05:00
88962784aa silence warnings when compiling/linking the LAMMPS main object with nvcc_wrapper 2021-03-11 14:03:57 -05:00
0590dddae4 don't use "constexpr" here because multiple compilers are complaining about the missing initializer 2021-03-11 14:03:24 -05:00
ffda7fcc04 simpler interfaces 2021-03-11 14:02:21 -05:00
14da94d189 Add more compression tests for dump local 2021-03-11 13:27:54 -05:00
f53fcf0545 Add more compression tests for dump custom 2021-03-11 13:12:43 -05:00
7e3d1923ab Add more compression tests for dump cfg 2021-03-11 13:02:18 -05:00
c5cb294506 Add other compression tests to xyz tests 2021-03-11 12:42:19 -05:00
3ebc7823b0 Unify dump xyz/gz and xyz/zstd tests 2021-03-11 12:28:56 -05:00
fca6d6bf8f Unify dump local/gz and local/zstd tests 2021-03-11 12:20:25 -05:00
116ffd62de Unify dump custom/gz and custom/zstd tests 2021-03-11 12:11:23 -05:00
aed8608c7c Unify dump cfg/gz and cfg/zstd tests 2021-03-11 11:59:49 -05:00
8e1ccb6123 next iteration: rename functions/files, split header, store dso handle 2021-03-11 07:26:57 -05:00
8325740663 add test for partition command 2021-03-11 06:46:53 -05:00
423772b1fa avoid strtok() when processing the "partition" command 2021-03-11 06:46:40 -05:00
af9321c4d8 correct output 2021-03-11 06:46:14 -05:00
56e3962d9c Merge pull request #2648 from akohlmey/next_lammps_version
Update version strings for the next patch release
2021-03-10 18:05:55 -05:00
20a546c824 Move testcase in its own file 2021-03-10 16:08:51 -05:00
aa625eaf65 Unify dump atom/gz and atom/zstd tests 2021-03-10 15:48:20 -05:00
27ac2bb485 Merge pull request #2652 from rbberger/small_fixes
Collection of small changes
2021-03-10 15:15:23 -05:00
fcec6699ac Merge pull request #2651 from athomps/snap-element-checking
Tightened up the consistency checks on SNAP elements and LAMMPS types
2021-03-10 14:48:54 -05:00
a548ea3bca Add more tests for dump atom/gz 2021-03-10 13:40:10 -05:00
96e92949d0 Merge pull request #2649 from ellio167/kim-citation-update
Add support for unpublished KIM potential citations and citation from pair_kim
2021-03-10 12:21:51 -05:00
592490be4e add unload/list commands 2021-03-10 09:50:28 -05:00
c3249625ab Add addtional constructor to PotentialFileReader 2021-03-10 09:16:46 -05:00
f092eb01e4 Correct array destruction in mliap_model_nn.cpp 2021-03-10 07:36:10 -05:00
ba7872ad5f modernize, simplify, and errorcheck SNAP potential file parse
Specifically this commit makes the following changes:
- use fmtlib to avoid temporary string buffers and snprintf()
- use fmtlib for more specific error messages
- use Tokenizer class instead of strtok() for thread safe and simpler parsing
- use std::string() and '==' for string comparisons
- use utils::*numeric() instead of atoi()/atof() for parsing values
2021-03-10 06:17:47 -05:00
c6bf9a893a rearrange include file order 2021-03-10 06:13:04 -05:00
c9ea640320 whitespace fixes (no tabs, no trailing whitespace) 2021-03-10 04:58:57 -05:00
2162d2fb3f Clarified rules about SNAP elements and LAMMPS types 2021-03-09 19:19:36 -07:00
9329ab6ab8 Added another check specially for chemsnap 2021-03-09 19:14:17 -07:00
115723a4d4 Tightened up the consistency checks on SNAP elements and LAMMPS types 2021-03-09 18:38:47 -07:00
f68a7094ad include /omp variant into plugin example 2021-03-09 18:44:51 -05:00
fb39ceaaeb fix whitespace and typo 2021-03-09 16:00:14 -05:00
f0381b48ca add example for loading a pair style 2021-03-09 15:50:27 -05:00
27a81ffc86 add initial version of a plugin loader interface (for pair styles) 2021-03-09 15:34:48 -05:00
c00887020e Add support for unpublished KIM potential citations and citation from pair_kim 2021-03-09 10:56:50 -06:00
571a65a06d step version strings for the next patch release 2021-03-09 07:26:59 -05:00
6b3f0ddd3b Merge pull request #2647 from agiliopadua/fep
Updated examples in USER-FEP
2021-03-08 23:00:33 -05:00
7ae2da0ace Merge pull request #2641 from pedroantoniosantosf/mliap_nn
Add support for neural network (nn) models to MLIAP package to compute energies and forces without going through Python
2021-03-08 20:27:01 -05:00
37afa0e6d5 Merge pull request #2638 from akohlmey/parse-molecule-refactor
Further refactor parsing of molecule files
2021-03-08 20:04:07 -05:00
f17ac30875 Merge pull request #2590 from markc242/relres-update
New pair style lj/relres
2021-03-08 19:53:03 -05:00
728b4801fd Use other example for thermo_style multi test 2021-03-08 18:15:43 -05:00
83fddb1123 Merge branch 'master' into fep 2021-03-08 23:21:11 +01:00
ee07c88184 Update fep examples 2021-03-08 23:19:51 +01:00
d1c79d54fa Merge remote-tracking branch 'github/master' into mliap_nn 2021-03-08 16:33:38 -05:00
80b902c0c5 Merge pull request #2644 from akohlmey/collected-small-changes
Small bug fix for fixes to fix deposit and fix pour
2021-03-08 16:26:39 -05:00
fc8b3bcfd6 Fixed bigint check 2021-03-08 14:00:34 -07:00
025b18999a Cleaned up the MLIAPData variable names 2021-03-08 13:31:24 -07:00
f1e01274b1 fix pyx file location 2021-03-08 12:15:21 -05:00
e26c9387ae Update fep examples CHhyd CH4-CF4 2021-03-08 15:58:18 +01:00
ce4d622b15 Improved CH4hyd examples 2021-03-08 00:05:48 +01:00
1220aa2eff acquire GIL before updating python path 2021-03-06 14:40:18 -05:00
42035ef99f forgot to include header for Error class 2021-03-06 00:28:12 -05:00
db8f378a20 add check when system becomes too large for MLIAP package 2021-03-05 23:14:57 -05:00
eee08204c3 Merge branch 'master' into mliap_nn 2021-03-05 22:14:57 -05:00
ed5b573286 whitespace fixes 2021-03-05 22:14:46 -05:00
cfcf30975d move .pyx file back where it belongs 2021-03-05 22:14:21 -05:00
08a25af1c9 catch format errors and print suitable error message 2021-03-05 18:04:05 -05:00
0e6736b614 correct logic for detectig 4-byte UTF-8 characters 2021-03-05 17:57:09 -05:00
facb7bd269 make logic explicit through use of parentheses 2021-03-05 17:54:25 -05:00
502d05c88a update reference log files for lj/relres 2021-03-05 17:54:00 -05:00
b62a208f4a edit citation reminder short message to match new conventions 2021-03-05 17:23:55 -05:00
89174ddf91 final update with @sjplimp suggested change 2021-03-05 16:28:50 -05:00
e105f1cb05 Merge branch 'relres-update' of https://github.com/markc242/lammps into relres-update
pull
2021-03-05 16:26:34 -05:00
45fabdd16e final update with @sjplimp suggested change 2021-03-05 16:23:05 -05:00
9a8ac23663 indicate that we use GPLv2 2021-03-05 14:16:40 -05:00
2777eafe98 small fix for previous fix for fix pour and fix deposit 2021-03-05 14:15:59 -05:00
b5af4f32b9 Merge pull request #2637 from akohlmey/collected-small-changes
Collected small changes and fixes
2021-03-05 13:22:18 -05:00
d8daf1da4c next_reneighbor should be initialized in setup_pre_exchange() 2021-03-05 06:30:41 -05:00
39abc9dce3 nfirst should be a bigint 2021-03-05 06:30:23 -05:00
135099e23f next_reneighbor must be initialized in setup_pre_exchange() 2021-03-05 06:08:06 -05:00
2f4fc31696 since nfirst stores the timestep, it must be a bigint 2021-03-05 06:07:36 -05:00
de6bae6333 stabilize timer based load balancing by adding minimum time of 0.1 seconds 2021-03-05 05:40:28 -05:00
38586669f8 Removed compute*.dat and *v2 files 2021-03-04 19:03:11 -03:00
add929fa06 Removed incorrect and useless early-exit 2021-03-04 11:48:42 -07:00
9b98981e6e Merge branch 'mliap_nn' of github.com:pedroantoniosantosf/lammps into mliap_nn 2021-03-04 08:49:29 -07:00
3bda036ca5 Eliminated shortcut exit that was causing memory overflow 2021-03-04 08:49:06 -07:00
31cf07947e fix typo 2021-03-04 03:11:45 -03:00
97d1964383 Merge branch 'master' into collected-small-changes 2021-03-03 21:49:48 -05:00
73c874a042 whitespace 2021-03-03 21:29:59 -05:00
897c337e1c apply suggested improvements and clarifications 2021-03-03 21:27:05 -05:00
26086e04a5 add option to set the runtime path on installation (vs. the default to remove it) 2021-03-03 17:59:05 -05:00
73c36f5e12 Merge branch 'mliap_nn' of github.com:pedroantoniosantosf/lammps into mliap_nn 2021-03-03 14:27:25 -07:00
cf04303daf Final edits to doc page 2021-03-03 14:27:04 -07:00
2f9cca97a9 Removed static functions and cmath include from header 2021-03-03 13:12:02 -07:00
862a5ad2b6 Cleaned up names of PyTorch files 2021-03-03 12:07:45 -07:00
aa5da53b8a more rearranging, tried to elimiante unnecessary name elements 2021-03-03 11:55:26 -07:00
26c5cdfb92 whitespace 2021-03-03 13:49:15 -05:00
f455869de3 update a few more error messages 2021-03-03 13:43:54 -05:00
abfc4465b0 Rearranged nn file locations and names 2021-03-03 11:38:05 -07:00
6c0c6ce3b0 example Ta06A using nn 2021-03-03 14:53:56 -03:00
b7367e713a Update in.mliap.snap.nn.Cu 2021-03-03 14:09:03 -03:00
8f9520b4bb Create log.Cu_nn 2021-03-03 13:39:26 -03:00
38d076e22e Updating nn example and mliap .rst 2021-03-03 13:36:00 -03:00
4af4c0a99b parsing is done on all MPI ranks, so we better use error->all() instead of error->one() 2021-03-03 08:43:51 -05:00
2db78823a0 open() method not really needed. 2021-03-03 08:43:23 -05:00
f02b0cf09b review error messages for Coords, Types, Molecules, and Fragments sections 2021-03-03 08:24:21 -05:00
390e6eb965 Merge branch 'master' into fep 2021-03-03 14:01:43 +01:00
404d46c5b6 add missing keyword to list 2021-03-03 05:37:41 -05:00
21dd629acf correct C7 in Ethanol example for USER-FEP. update logs 2021-03-03 05:36:42 -05:00
7b4034d07a reformat. compute/check some molecule properties 2021-03-02 23:05:27 -05:00
c44dbc567d tweak test for creating atoms and bond from a molecule file 2021-03-02 22:41:09 -05:00
6ab8de58bc add a few more tests 2021-03-02 22:26:40 -05:00
7ddb0c7014 clarify some more error messages 2021-03-02 22:26:23 -05:00
d17daf150b Update to use cutoff term 2021-03-02 20:55:37 -05:00
3ab5b5f63a Documentation updated according to @sjplimp request 2021-03-02 18:57:23 -05:00
16631a0c18 add tests for one file with two molecules and two files with one each 2021-03-02 15:54:06 -05:00
92ff812e9d simplify 2021-03-02 15:53:33 -05:00
d6dbdfdbe6 detect and warn about unknown header keywords (instead of error out on an empty line) 2021-03-02 15:53:17 -05:00
e3942a0d48 update test to use stdio consistently 2021-03-02 12:53:15 -05:00
eecc85659d add missing line 2021-03-02 12:43:06 -05:00
e4ce1de66b add "death tests" for no molecule file and molecule file w/o atoms 2021-03-02 12:16:12 -05:00
60694b2a94 better error check and error message when looking for section headers 2021-03-02 11:59:54 -05:00
861ad834c6 fix typo 2021-03-02 11:22:43 -05:00
01a32b67b0 add minimal unit test program for molecule files 2021-03-02 11:07:03 -05:00
371ee63c2c begin refactor of parsing of sections 2021-03-02 11:06:24 -05:00
e941d0fd4a simplify parsing of keywords 2021-03-02 11:05:18 -05:00
2d96a01bb2 use trim functions in utils to remove whitespace and comments 2021-03-02 11:03:51 -05:00
e09f4b6e7a simplify checking for valid molecule ID 2021-03-02 11:03:17 -05:00
ca8b268ad5 new convencience function for checking valid IDs (includes unit tests) 2021-03-02 11:02:09 -05:00
299cc08232 Merge branch 'master' into gpu-unittest 2021-03-01 23:01:41 -05:00
73de926f09 safer detection and load of lammps shared library 2021-03-01 23:01:05 -05:00
cf5614e7d7 change precision handling so we can on the GPU also run with mixed and single precision 2021-03-01 22:44:24 -05:00
92dd89f9e6 skip a few more tests that crash with the GPU package (/w OpenCL) 2021-03-01 22:41:13 -05:00
7b49b39a93 fix typo 2021-03-01 22:28:23 -05:00
6c7de1cbd0 no support for pppm on GPU (yet) with nozforce or triclinic cell 2021-03-01 22:14:35 -05:00
e02ad44b8b GPU package does not support tabulated long-range coulomb 2021-03-01 22:05:47 -05:00
fb57d86364 dpd and dpd/tsat may only run with 1 thread due to use of per-thread pRNG 2021-03-01 21:45:36 -05:00
6fa3e6d23e remove hardcoded checks for incompatible styles. use skip_tests keyword instead 2021-03-01 21:44:41 -05:00
5629947d89 add skip test entries for tests failing to run for GPU or USER-INTEL 2021-03-01 21:43:38 -05:00
205b45423c combine repetitive code into convenience function 2021-03-01 20:07:19 -05:00
59eaa46f8d Tweaked README.md and changed permissions on source 2021-03-01 17:41:02 -07:00
74713be4a2 add new key to YAML files: skip_tests 2021-03-01 19:27:11 -05:00
4b66c1e570 better error message for incorrect range string 2021-03-01 12:36:29 -05:00
0f63f07ce5 Merge pull request #2634 from evoyiatzis/master
Small extension of extract method in Buckingham pair styles
2021-03-01 09:03:49 -05:00
7e3ca726b1 Merge pull request #2635 from ssande7/fix_nh_extract_bug
[BUGFIX] Correct return values for FixNH::extract()
2021-03-01 08:49:12 -05:00
5407d2968a update unit test reference 2021-02-28 23:33:05 -05:00
e75f1f2f82 Merge branch 'master' into relres-update 2021-02-28 23:20:44 -05:00
a7e5f1acf2 improve grammar and use terms consistent with the rest of LAMMPS 2021-02-28 23:20:02 -05:00
cac03a85f3 add false positive 2021-02-28 23:19:45 -05:00
175e6c964a Documentation and examples updated according to @sjplimp request 2021-02-28 21:30:55 -05:00
0ae38fb2ea Fix return values of extract for pressure variables 2021-03-01 09:48:31 +10:00
a57311ce3a whitespace fixes 2021-02-28 12:03:50 -05:00
30d15b9b22 test for extract parameters in unit tests 2021-02-28 11:59:17 -05:00
4e7df729ae Update fix_adapt_fep.rst 2021-02-28 11:41:28 +01:00
97718fa957 Update fix_adapt.rst 2021-02-28 11:40:43 +01:00
39422dff94 Update compute_fep.rst 2021-02-28 11:39:02 +01:00
2f764edadc Addition of extract method in PairBuckCoulCut cpp 2021-02-28 11:30:12 +01:00
947fa67531 Addition of extract method in BuckCoulCut 2021-02-28 11:25:49 +01:00
b622416417 Extent extract method of PairBuckCoulMSM 2021-02-28 11:21:38 +01:00
6ff8fc093e Extent extract method of BuckCoulLong 2021-02-28 11:20:31 +01:00
76ef7a9081 safer detection and load of lammps shared library 2021-02-27 15:50:58 -05:00
dfeee1f19b run neighbor list on CPU for hybrid pair styles 2021-02-27 15:42:32 -05:00
121774dde3 adjust epsilon for one test 2021-02-27 10:58:04 -05:00
a6f32e472d add explanation why we set pair_modify table only in the lammps_init() 2021-02-27 10:39:03 -05:00
f797d9cb2e must always set pair_modify table (and table/disp) explicitly for long-range styles 2021-02-27 10:36:38 -05:00
981ed01983 recreate all yaml files with updated timestamps 2021-02-26 23:16:51 -05:00
19311d408d use utils::trim() to remove extra whitespace from ctime() output. 2021-02-26 23:10:43 -05:00
fff215b48f Merge branch 'master' into gpu-unittest
# Conflicts:
#	unittest/force-styles/tests/mol-pair-born.yaml
#	unittest/force-styles/tests/mol-pair-born_coul_dsf.yaml
#	unittest/force-styles/tests/mol-pair-born_coul_long.yaml
#	unittest/force-styles/tests/mol-pair-born_coul_msm.yaml
#	unittest/force-styles/tests/mol-pair-born_coul_wolf.yaml
#	unittest/force-styles/tests/mol-pair-buck.yaml
#	unittest/force-styles/tests/mol-pair-buck_coul_long.yaml
#	unittest/force-styles/tests/mol-pair-buck_coul_msm.yaml
#	unittest/force-styles/tests/mol-pair-lj_cubic.yaml
#	unittest/force-styles/tests/mol-pair-morse.yaml
#	unittest/force-styles/tests/mol-pair-tip4p_cut.yaml
#	unittest/force-styles/tests/mol-pair-zbl.yaml
2021-02-26 22:47:11 -05:00
9efc83195a Merge pull request #2624 from rbberger/collected_small_changes
Collection of small changes
2021-02-26 20:38:47 -05:00
1521c7a370 Merge pull request #2625 from yafshar/kim_citation
Updating the kim citation report to lammps conventions
2021-02-26 20:38:28 -05:00
ad7f14936e Merge pull request #2627 from jrgissing/bond/react-performance-improvement
Bond/react performance improvement
2021-02-26 20:38:01 -05:00
2ab9c34e52 Merge pull request #2631 from rbberger/python_additions
Add LAMMPS output readers to Python package
2021-02-26 20:27:52 -05:00
15c5aa9bc1 Merge pull request #2633 from evan-charmworks/utils-regex-context
Make regex code in utils thread-safe
2021-02-26 20:22:12 -05:00
a89f0f332d Make regex code in utils thread-safe
regex_context_t is only 520 bytes on platforms with 8-byte pointers,
which is reasonable to allocate on the stack instead of as a global in
a userland program.
2021-02-26 15:24:08 -06:00
f69768d919 one more change 2021-02-26 15:58:26 -05:00
09e33fd342 fix bugs found by or avoid warnings from coverity scan 2021-02-26 15:55:20 -05:00
099dcedb7f correct docs 2021-02-26 15:54:20 -05:00
3042e28297 try to catch format errors from fmtlib 2021-02-26 14:08:38 -05:00
335a6308d0 update kim query example log file 2021-02-26 13:04:29 -06:00
e88c124da6 add extra cases for query unit test 2021-02-26 12:47:43 -06:00
820cd83713 use utils::strmatch instead of strchr 2021-02-26 12:47:21 -06:00
bb13ce4349 silence compiler warning 2021-02-26 11:35:26 -05:00
9503a089ef adapt kim_init code to use the utils::strfind() and drop using std::regex 2021-02-26 11:20:06 -05:00
272b89688e Merge branch 'master' into kim_citation 2021-02-26 10:51:15 -05:00
aea0ceac03 Merge pull request #2632 from akohlmey/utils-regex-update
Add new utils::strfind() function and update mini-regex code
2021-02-26 10:50:34 -05:00
9017d46235 Merge pull request #2629 from akohlmey/citeme-use-hash
Use a 64-bit hash in the CiteMe class to identify unique citations
2021-02-26 10:49:58 -05:00
e7c829e31e use correct data type for storing hashes 2021-02-26 09:49:06 -05:00
dfae88cf13 address spelling issues 2021-02-25 23:11:41 -05:00
533b406d77 add docs for utils::strfind() 2021-02-25 23:11:25 -05:00
cfc86f7a2d add unit tests for new utils::strfind() function 2021-02-25 23:05:48 -05:00
92d892aa2d add new utility function utils::strfind() 2021-02-25 23:03:17 -05:00
a9467e830e update regex code in utils to state of git repo of 2021-02-25 2021-02-25 23:02:46 -05:00
8e63f1ebf5 detect and abort if inconsistent body data for rounded polygon/polyhedra was provided 2021-02-25 18:26:20 -05:00
37086c391f use std::hash instead of a local crc32 implementation. 2021-02-25 18:15:09 -05:00
f92089298d Fix bug in AvgChunkReader and add docs 2021-02-25 16:56:19 -05:00
69245cb294 add unit tests for citeme class crc32 checks of unique citations 2021-02-25 15:52:38 -05:00
3d96d0a674 Fix wrong group name output in fix ave/chunk 2021-02-25 15:34:29 -05:00
977ba9ff66 Add LogFile and AvgChunkFile readers
Implements changes proposed in #144
2021-02-25 15:32:53 -05:00
0ad39757e2 Cleaning up legacy C-style string processing
Most of the C-style strcmp in the code are replaced with string for
simpler/safer/readable alternatives,
2021-02-25 13:55:24 -06:00
be81376426 use crc32 checksum instead of pointer addresses as unique id for citations 2021-02-25 14:45:17 -05:00
1d2c53b9dd remove redundant function call 2021-02-25 14:14:01 -05:00
4422bfbc7a bond/react: performance improvement 2021-02-25 14:04:56 -05:00
06091a95d2 use a safer utils::strmatch instead of strncmp 2021-02-25 10:11:26 -06:00
3f83adefa5 use a safer utils::strmatch instead of strncmp 2021-02-25 10:00:30 -06:00
9d2408754e use more conventional and thus more familiar way to avoid memory leak 2021-02-25 10:34:39 -05:00
441279d935 don't use custom debug library postfix for libOpenCL.a 2021-02-25 10:30:39 -05:00
42c1e264cb small cleanup in fix gpu 2021-02-25 10:30:26 -05:00
c16064d493 update kim examples log files 2021-02-25 08:23:26 -06:00
7d49773294 updating the kim citation report to lammps conventions 2021-02-25 08:22:36 -06:00
1fc284f3ed Correct fix wall/gran docs 2021-02-25 09:09:00 -05:00
f245467f32 Merge pull request #2290 from abhiShandy/improper-tester
Tester for dihedrals and impropers with their unit-tests
2021-02-25 08:46:53 -05:00
03559dfe21 add tests for dihedral and improper style hybrid 2021-02-24 20:51:05 -05:00
dd0d06e373 fix a few more issues in USER-OMP and update indentation 2021-02-24 20:45:07 -05:00
a0a865643e add missing coefficiencts to data file. no more need to set afterwards 2021-02-24 20:42:25 -05:00
785e1ca9f5 add missing writedata=1 setting in constructor 2021-02-24 20:41:53 -05:00
8f3675344f fix bug not ported to USER-OMP version and adapt code style 2021-02-24 20:18:02 -05:00
09192d63a5 plug another memory leak 2021-02-24 19:56:12 -05:00
2d1dcc95a6 update refrence data for impropers 2021-02-24 19:49:42 -05:00
c401d21c38 update include statements to follow conventions 2021-02-24 19:49:11 -05:00
a910c08b57 correct input 2021-02-24 19:39:14 -05:00
9fbec51ac6 update reference data 2021-02-24 19:34:39 -05:00
bd7c37d539 CHARMM dihedral styles require a matching pair style. add code for that. 2021-02-24 19:34:15 -05:00
4245614c0d plug memory leaks 2021-02-24 19:15:02 -05:00
cf9255a90d avoid problems testing dihedrals and impropers 2021-02-24 18:37:58 -05:00
7efacdc911 correctly handle the case of n=1. clean up some ugliness 2021-02-24 18:37:39 -05:00
d81ca27e96 align tester sources with current state of other testers 2021-02-24 17:31:09 -05:00
c45658f1c7 Merge branch 'master' into improper-tester 2021-02-24 17:08:34 -05:00
e916c5d852 Merge pull request #2599 from weinbe2/snap-launch-bounds
Kokkos SNAP cleanup/optimizations --- templating, Kokkos::LaunchBounds, tuning
2021-02-23 21:53:07 -05:00
d2d6b63820 Merge branch 'master' of https://github.com/lammps/lammps into snap-launch-bounds 2021-02-23 20:55:39 -05:00
358c0a0c04 Merge pull request #2620 from yafshar/kim_commands
Refactor kim commands
2021-02-23 20:31:22 -05:00
de14ece848 Merge pull request #2622 from rbberger/hip_corrections
Correct compilation of GPU package when using HIP
2021-02-23 16:14:17 -05:00
7d1670d91c cuda 11.0 does not support sm_86, it was added in 11.1 2021-02-23 14:23:54 -05:00
70ca055113 Add workaround to compile with HIP, new neighbor code still needs to be ported 2021-02-23 11:28:05 -05:00
2a0b7a26c0 Add missing cq() getter 2021-02-23 11:26:07 -05:00
446a068159 Use hipGetDeviceProperties to avoid int overflows 2021-02-23 10:14:05 -05:00
6ecbcc277b update death tests for removed commands 2021-02-23 09:59:24 -05:00
d44af3256d Fix lal_charmm.cu to support HIP compilation 2021-02-23 09:51:27 -05:00
8c9e9fa9ee add removed commands to Deprecated commands list and processing 2021-02-23 09:36:20 -05:00
293ebad98f Merge branch 'master' into kim_commands 2021-02-23 09:34:32 -05:00
ba1cb4218f update the label to prevent warning on duplicate label 2021-02-23 07:11:43 -06:00
464d9a01c5 apply utils::strdup() in a few more cases 2021-02-23 06:48:45 -06:00
120cdcd7f6 update the kim commands doc 2021-02-23 06:12:11 -06:00
d6380f2fd3 Set the skin and timestep default values
Set the skin and timestep default values as 2.0 Angstroms and 1.0
femtosecond for every unit system
2021-02-23 06:12:10 -06:00
906afd9a32 set the skin value to 2.0 Angstroms 2021-02-23 06:12:10 -06:00
fd9a568df4 clean up the kim command, remove unused targets and double used one to avoid warning 2021-02-23 06:12:10 -06:00
efa5eff85c Some minor changes to kim_commands.rst 2021-02-23 06:12:10 -06:00
9273a45d34 Revising kim command documentation. 2021-02-23 06:12:10 -06:00
31a878bcd6 remove the old kim commands 2021-02-23 06:12:10 -06:00
f04b8f525e naming update 2021-02-23 06:12:10 -06:00
9023847708 update the kim command name 2021-02-23 06:12:09 -06:00
f0fd379c70 update the kim command interface with the new changes 2021-02-23 06:12:09 -06:00
5c00162367 Adding extra cases for 'kim query command' 2021-02-23 06:12:09 -06:00
eea023321a Fix a minor mistake in variable name 2021-02-23 06:12:09 -06:00
2fb0506a43 Fix some typos in kim interface 2021-02-23 06:12:09 -06:00
d73ba9a3b4 Update the 'kim param' doc with the new interface 2021-02-23 06:12:09 -06:00
ad93c64fa6 update the kim command unittests to match with the new kim param interface 2021-02-23 06:12:08 -06:00
4af0714a8c Update the 'kim param' interface
Remove the dependency to 'kim init'. To get/set the parameter
values, pair style must be assigned. Must use 'kim interactions'
or 'pair_style kim' before 'kim param get/set'
2021-02-23 06:12:08 -06:00
21a78d8031 Corect the function name in lower case 2021-02-23 06:12:08 -06:00
9fc0753cef correct the reference to kim command 2021-02-23 06:12:08 -06:00
40e8f01aa6 correct the reference to kim command 2021-02-23 06:12:08 -06:00
0fdaf58610 correct the reference to kim command 2021-02-23 06:12:08 -06:00
a254d5b480 minor correction 2021-02-23 06:12:08 -06:00
aefd965065 update the intro for the kim command 2021-02-23 06:12:07 -06:00
0e46551632 Remove the old command interface and update the kim command as the only one 2021-02-23 06:12:07 -06:00
4cd42093a0 fixed the correct models for extra tests and update the command interface 2021-02-23 06:12:07 -06:00
3b9cbe4361 Update the kim command doc
Update the document with the latest interface changes. Replace the
discontinued models in the examples with the correct models. Test all
provided examples and fix the mistakes in them.
2021-02-23 06:12:07 -06:00
29926c4f71 update kim command unittests with extra test cases for kim param command 2021-02-23 06:12:07 -06:00
c139adf95b Fix the index for get argument and correct the string variable format 2021-02-23 06:12:07 -06:00
21a60235eb Fix a wrong indexing for optional explicit argument 2021-02-23 06:12:06 -06:00
a73f6f58ad Extra check to prevent illegal neighbor request esp, in unit conversion mode 2021-02-23 06:12:06 -06:00
ab05e9f5c1 update the log files for the kim command examples 2021-02-23 06:11:54 -06:00
ce4dc4e2c6 Merge pull request #2617 from akohlmey/build-opencl-loader
Build and link a static OpenCL ICD loader library by default instead of  system OpenCL lib
2021-02-22 13:37:17 -05:00
1bf2e18bcd Merge pull request #2614 from akohlmey/collected-small-changes
Collected small changes and bugfixes
2021-02-22 13:31:37 -05:00
2378850085 Merge pull request #2616 from jrgissing/bond/react-updates
Bond/react updates
2021-02-22 11:12:57 -05:00
910c78449b Merge pull request #2618 from rbberger/pylammps_history
Make PyLammps command history feature optional
2021-02-22 10:57:51 -05:00
f3ee948450 need to use column 1 in fix ave/time example 2021-02-22 07:10:35 -05:00
f467832e0f Make PyLammps command history feature optional
PyLammps so far has been saving a history for every executed command.  This was
originally added to allow writing out the commands of interactive PyLammps
sessions as regular input scripts.

This commit disables this history by default, which avoids the small, but
rising memory consumption over time. It can be enabled and disabled with the
enable_cmd_history property. There is also now a method to clear the history
at any time.
2021-02-22 01:29:50 -05:00
4786391fad must explicitly register fix gpu 2021-02-21 20:40:11 -05:00
e0e89c588b correct library prefix name use also for building libyaml 2021-02-21 17:11:38 -05:00
db95552f2b update md5sum for updated archive (again) 2021-02-21 16:42:30 -05:00
1a68d761a3 correct how to construct the path to the generated OpenCL lib 2021-02-21 16:21:45 -05:00
06f6766ed6 CMAKE_FIND_LIBRARY_PREFIXES is a path. must use plain "lib" instead, but there is a variable for the suffix 2021-02-21 16:20:36 -05:00
826c618aa9 replace a few more cases of atoi()/atof() with utils::*numeric() functions 2021-02-21 15:09:50 -05:00
0c6671ad64 do not always add styles that depend on other packages 2021-02-21 11:06:58 -05:00
24079e9302 update docs 2021-02-21 10:45:01 -05:00
70327861b2 update for improved OpenCL stub driver with tests 2021-02-21 09:43:56 -05:00
d025b281cf Build and link a static OpenCL loader library for all platforms 2021-02-21 01:28:44 -05:00
d5917652d4 remove output that is no longer necessary. settings are adapted automatically 2021-02-20 23:50:55 -05:00
d9941b1648 Update in.tiny_nylon.stabilized_variable_probability 2021-02-20 20:29:39 -05:00
196b6b9273 variable probability fix 2021-02-20 20:22:53 -05:00
7d9187cff8 eval reaction prob after constraints check 2021-02-20 16:24:24 -05:00
80ae5ba7ac refactor constraints check 2021-02-20 15:14:42 -05:00
a98177c366 ring_check refactor 2021-02-20 15:07:50 -05:00
f0f5962676 Merge pull request #2615 from wmbrownIntel/user-intel-hyb-fix
Fix for hybrid pair style with certain combinations of USER-INTEL styles
2021-02-20 07:48:09 -05:00
231a495129 Merge pull request #2610 from wmbrownIntel/gpu-omp-threads
Fixing issue from recent GPU package update with OMP_NUM_THREADS env …
2021-02-20 00:52:05 -05:00
421eb5df0e Merge pull request #2613 from lammps/ssao_bugfix
Fix bug in dump image SSAO depth shading
2021-02-19 18:47:41 -05:00
0f23036450 Merge pull request #2612 from rbberger/small_fixes
Use mallinfo2 with glibc >= 2.33
2021-02-19 18:29:17 -05:00
0a355c0194 Fix bug in dump image ssao depth shading 2021-02-19 15:20:09 -07:00
99ff0bb4d2 fix cut-n-paste bug 2021-02-19 16:57:49 -05:00
d36df19a2d Use mallinfo2 with glibc >= 2.33 2021-02-19 13:22:35 -05:00
fd67f83bb7 replace atoi() with utils::inumeric() 2021-02-19 10:27:31 -05:00
a40db8ddf1 Fix for hybrid pair style with certain combinations of USER-INTEL styles.
Specifically, fixes issue where memory was not zeroed correctly with a hybrid
pair style including an intel variant and a non-intel variant combined with
intel variant(s) of non-pair styles.
2021-02-19 05:59:25 -08:00
ab9552b63a Adding some notes about KOKKOS thread settings to the package doc. 2021-02-19 05:55:37 -08:00
45c782308c Fixing issue from recent GPU package update with OMP_NUM_THREADS env being overridden in GPU library.
Fixing race condition with OpenMP for GPU styles using torque (missed in regression tests due to the first fix)
Documenting GPU package option for setting the number of threads (consistent with USER-INTEL and USER-OMP).
2021-02-18 21:08:18 -08:00
53fdaa5741 Merge pull request #2603 from wmbrownIntel/gpu-updateFeb2021
GPU Package Update February 2021
2021-02-17 19:04:55 -05:00
45f6e9ec2e whitespace 2021-02-17 18:47:41 -05:00
f367e66aba documentation corrections, spelling fixes and updates 2021-02-17 18:47:35 -05:00
e575c5fa29 -fopenmp implies -fopenmp-simd 2021-02-17 18:30:02 -05:00
97f36d31d6 Merge pull request #2609 from akohlmey/collected-small-changes
Python MPI compatibility improvements
2021-02-17 18:03:08 -05:00
1e5a73c468 silence warnings when using default OpenCL headers. Pick OpenCL v2.1 as default. 2021-02-17 17:36:35 -05:00
1f109b0db2 update unittest for lammps_config_has_mpi() change 2021-02-17 15:50:45 -05:00
0c34810518 lmp.mpi4py will always be false if LAMMPS has been compiled without MPI support 2021-02-17 15:29:33 -05:00
db841dd412 correct return value when no packages are installed 2021-02-17 15:28:44 -05:00
1552b0d1d6 update/correct documentation for changes to the STUBS library and its implications 2021-02-17 15:19:24 -05:00
61585b1eb6 make MPI STUBS a C++ library so its symbols won't collide when loading a real MPI library 2021-02-17 15:02:02 -05:00
742eebec2d support checking the size of MPI communicators and fail if LAMMPS and mpi4py have a mismatch 2021-02-16 20:22:18 -05:00
f929e57261 avoid loading mpi4py if the LAMMPS executable has been built without MPI 2021-02-16 14:38:03 -05:00
286a15c452 Merge pull request #2604 from akohlmey/collected-small-changes
Correct a few small issues
2021-02-16 14:32:31 -05:00
57b630acbb update documentation for building the manual with PIP_OPTIONS settings 2021-02-16 12:32:37 -05:00
b37ae4aea6 propagate PIP_OPTIONS change to CMake doc build module 2021-02-16 12:26:59 -05:00
395f6f6107 Merge branch 'master' into collected-small-changes 2021-02-16 12:16:14 -05:00
4fdc7a1362 Merge pull request #2602 from ellio167/fixup_kim_cmake
Fixup errors/issues in cmake/Modules/Packages/KIM.cmake
2021-02-16 12:15:44 -05:00
4af8de3287 Merge pull request #2600 from jrgissing/bond/react-same-type-initiators-fix
bond/react: same-type initiators fix
2021-02-16 12:14:22 -05:00
f6454dce64 Merge pull request #2601 from rbberger/update_python_docs
Fix docs of python module after refactor
2021-02-16 12:07:20 -05:00
7bdbdad271 Update mliap_model_nn.cpp 2021-02-16 14:07:16 -03:00
e7a37877c0 apply changes to doc Makefile to limit the impact of SNL network config changes 2021-02-16 11:40:25 -05:00
96643cc5ec Updating README file 2021-02-16 12:31:29 -03:00
2512b3b942 Adding nn model 2021-02-16 12:28:11 -03:00
9713c11d6c Original MLIAP 2021-02-16 12:27:12 -03:00
7b943948ea Point users to the LAMMPS GitHub Releases page for downloading archives 2021-02-16 06:51:50 -05:00
721c6d96cc Removing Makefile.opencl from lib/gpu 2021-02-16 00:36:37 -08:00
775446b60f Add GERYON_NUMA_FISSION define in CMake 2021-02-16 15:03:17 -05:00
d85a5e3290 Remove OCL_TUNE option in CMake
The GPU package now auto-detects these settings.
2021-02-16 14:57:10 -05:00
224da33b22 Add missing fix_nh_gpu files to CMake build 2021-02-16 12:29:50 -05:00
44ab383917 Remove duplicate line in GPU/Install.sh
Otherwise, after running

$ make yes-all
$ make no-lib

the generated Makefile.package would still contain the LMP_GPU define
2021-02-16 11:14:22 -05:00
515da32215 Fixup errors/issues in cmake/Modules/Packages/KIM.cmake 2021-02-15 16:00:47 -06:00
e2c32d12a4 Feb2021 GPU Package Update - Documentation Files 2021-02-15 11:07:43 -08:00
d256614c9f Fix docs after PR #2592 2021-02-15 13:19:25 -05:00
d3123dd5c3 Feb2021 GPU Package Update - Core LAMMPS Files 2021-02-15 08:37:38 -08:00
e7e2d2323b Feb2021 GPU Package Update - GPU Package Files 2021-02-15 08:20:50 -08:00
74fe20b9a9 Update affiliations 2021-02-15 15:05:40 +01:00
fddb62d0af Update affiliation in fep 2021-02-15 15:00:34 +01:00
6571f238f6 Merge branch 'master' into fep 2021-02-15 14:03:10 +01:00
7584fbb28f Updating fep examples 2021-02-15 13:34:22 +01:00
1fc3fe108e Update mliap_model.cpp 2021-02-13 19:27:29 -03:00
91f74cf956 permissions! 2021-02-13 20:48:31 +00:00
a60853cca6 memory leak
introduced in recent 'create atoms' feature
2021-02-13 14:39:28 -05:00
389f8b040d Testing examples 2021-02-12 20:09:28 -03:00
b165d5a7ed Update mliap_model.cpp 2021-02-12 13:03:24 -03:00
2aa326c827 bond/react: same-type initiators fix
previously, if/when a reaction happens could depend on the order of listed initiator atoms, if they have the same type, in some cases
2021-02-12 10:56:48 -05:00
6bbda594b1 Update mliap_model_nn.cpp 2021-02-12 12:18:44 -03:00
8f55701da8 adding 'kim query' command examples 2021-02-12 08:03:32 -06:00
90e748aa5c Update the 'kim query' unittest
Update the unittest with the latest extension.
Replace the discontinued model of
`EAM_Dynamo_Mendelev_2007_Zr__MO_848899341753_000`
and replace it with the identical version,
`EAM_Dynamo_MendelevAckland_2007v3_Zr__MO_004835508849_000`
2021-02-12 08:03:32 -06:00
7c102a6096 Extend the 'kim query' command
Extend the 'kim query' command to get all available models meeting
certain requirements. To query for KIM models the query function
is `get_available_models`. Now, the 'kim query' works with the `model`
argument and can also be used with no 'kim init' call requirement.
2021-02-12 08:03:32 -06:00
12a9b6165a remove old log files 2021-02-12 08:03:32 -06:00
10a48f18d0 update kim command examples 2021-02-12 08:03:21 -06:00
6769ded03c update the unittests with the latest interface changes 2021-02-12 06:16:34 -06:00
7d7c433fd7 update the error messages to 'kim query' and clean up the code 2021-02-12 06:16:33 -06:00
a859643bac update the error messages to 'kim property' and clean up the code 2021-02-12 06:16:33 -06:00
2d9dcf4e8d clean up and add extra space after comma 2021-02-12 06:16:33 -06:00
265650d97c update the error messages to 'kim param' and clean up the code 2021-02-12 06:16:33 -06:00
98e734845e clean up and add extra space after comma 2021-02-12 06:16:33 -06:00
e5efe21d90 update the error messages to 'kim interactions' and clean up the code 2021-02-12 06:16:33 -06:00
c36a52a8f9 clean up and add extra space after comma 2021-02-12 06:16:33 -06:00
c3393cfc4b update the error messages to 'kim init' and clean up 2021-02-12 06:16:32 -06:00
dac21e5c76 using unique_ptr to prevent memory leak 2021-02-12 06:16:32 -06:00
0c5b3bc611 clean up and remove unnecessary comments 2021-02-12 06:16:32 -06:00
856c9064fb prototype implementation for KIM wrapper command by @akohlmey 2021-02-12 06:16:19 -06:00
45ba0bd313 refactor kim commands by @akohlmey 2021-02-12 06:15:06 -06:00
a742935817 change version strings to 10 Feb 2021 2021-02-12 06:15:06 -06:00
bd547a3c42 Step version strings for next patch release 2021-02-12 06:15:05 -06:00
d83827508f use neighbor->nrequest to be safer, since neighbor->nlist may be larger 2021-02-12 06:15:05 -06:00
258452d1d4 whitespace 2021-02-12 06:15:05 -06:00
7da64cba89 fix issues with multiple uses of create_bonds command 2021-02-12 06:15:05 -06:00
89011570e9 Update MLIAP 2021-02-11 17:59:02 -03:00
d371278765 correct dump style cfg label generation 2021-02-11 07:54:28 -05:00
87fad6b82e Merge branch 'master' into snap-launch-bounds 2021-02-10 22:29:46 -05:00
334c0d9969 Fix compiler error uncovered by a host-only Kokkos build 2021-02-10 22:26:40 -05:00
16004e8f45 Merge pull request #2587 from akohlmey/next-patch-version
Step version strings for next patch release
2021-02-10 21:30:20 -05:00
8eb79cf329 Merge pull request #2596 from lammps/create-bonds-bugs
fix issues with multiple uses of create_bonds command
2021-02-10 20:35:55 -05:00
5c415a1ba3 use neighbor->nrequest to be safer, since neighbor->nlist may be larger 2021-02-10 20:14:19 -05:00
697f82c145 whitespace 2021-02-10 18:40:25 -05:00
cb7e68644f fix issues with multiple uses of create_bonds command 2021-02-10 16:21:25 -07:00
11d99d9513 Merge pull request #2545 from akohlmey/citation-refactor
Refactor citation handling in LAMMPS
2021-02-10 18:19:21 -05:00
f8a5991416 rearrange output a little bit 2021-02-10 17:43:18 -05:00
8e8ef0cf63 Re-tune tile size for Kokkos SNAP ComputeYi/Zi. 2021-02-10 16:51:06 -05:00
4ee614b5c2 fix whitespace 2021-02-10 16:16:09 -05:00
ca39dea58b Various cleanup in Kokkos SNAP, replacing verbose Kokkos MDRangePolicy and TeamPolicy types with simpler using definitions. No performance implications. 2021-02-10 16:07:11 -05:00
dd2fc5df62 Introduction of Kokkos::LaunchBounds in Kokkos SNAP. 2021-02-10 15:40:22 -05:00
fc572a0ca8 Cleanup of "magic" numbers in Kokkos SNAP, making team and tile sizes static constexpr int in a centralized place. Various other cleanup. 2021-02-10 15:16:06 -05:00
6adcb4f5b9 Merge pull request #2594 from lammps/voigt-doc
Voigt documentation
2021-02-10 15:08:11 -05:00
d237550854 Replace runtime direction in Kokkos SNAP ComputeFusedDeidrj with compile time templated version. 2021-02-10 14:33:52 -05:00
95a4ac157b update a few more comments 2021-02-10 14:27:17 -05:00
006de01c05 update false positives list for spell checking 2021-02-10 12:20:04 -05:00
6c1f1df7e2 Merge pull request #2592 from akohlmey/fix-python-issues
Fix a few python module/interface issues with python2.x
2021-02-10 12:02:19 -05:00
5fecd9ed72 more Voigt clarifications 2021-02-10 09:58:53 -07:00
761527e563 clarified Voigt ordering and non-Voigt ordering for virial[6] 2021-02-10 09:55:28 -07:00
11341a5b66 enforce documented Python version requirement for MLIAP with Python 2021-02-10 08:57:14 -05:00
bbb355b1f5 check error status of calls to Python and if they failed print error and terminate 2021-02-10 00:29:39 -05:00
71139ffc9c change version strings to 10 Feb 2021 2021-02-09 21:34:08 -05:00
2dd3b368cd do not install mliap python support for python 2.x 2021-02-09 20:57:08 -05:00
fff1c0c9a7 rename numpy.py to numpy_wrapper.py to avoid lookup conflicts with python2.7 2021-02-09 20:56:33 -05:00
2beef8580a Merge pull request #2589 from akohlmey/check-python-version-match
Add version check for liblammps vs. python module
2021-02-09 16:22:20 -05:00
cc8d435502 Merge pull request #2591 from akohlmey/collected-small-changes
Correct some inconsistencies
2021-02-09 15:09:12 -05:00
903433d9dd use datetime module to convert string date to numeric date 2021-02-09 14:22:37 -05:00
62a152e4a2 get version number from package version instead of rewriting the __init__.py file 2021-02-09 14:13:18 -05:00
e7bcd1ea43 must purge python/build folder so we don't inherit outdated files 2021-02-09 14:12:43 -05:00
f92e07185b initialize arrays for per-level gridcomm buffers to NULL 2021-02-09 13:21:04 -05:00
418135667f address a whole bunch of spelling issues that suddenly popped up. 2021-02-09 12:38:46 -05:00
653c296246 document __version__ module member and version check 2021-02-09 12:29:14 -05:00
65affd6f12 Merge branch 'master' into check-python-version-match 2021-02-09 11:44:29 -05:00
e706f75d17 fix permissions 2021-02-09 11:44:26 -05:00
5646714470 update example inputs and logfile for fix_modify energy yes/no changes, where needed 2021-02-09 11:01:34 -05:00
1e3b63c335 add demonstration of using r-RESPA with a FG/CG sites split 2021-02-09 10:15:42 -05:00
e054b6c1d2 reformat and improve grammar 2021-02-09 09:49:45 -05:00
b75f046146 update pair_coeff in lj/relres unit test to FG and CG atoms 2021-02-09 09:47:32 -05:00
12e8b9eb8b include references to USER-OMP accelerator variant 2021-02-09 09:40:23 -05:00
2773bd7276 add multi-thread version of lj/relres 2021-02-09 09:24:19 -05:00
270a0dfaf6 reformat to use LAMMPS coding style 2021-02-09 09:19:28 -05:00
caf8e14e57 should use ev_init() not ev_setup() 2021-02-09 09:18:56 -05:00
dc61cc39fc rearrange include files 2021-02-09 09:18:43 -05:00
d26c744e54 should use ev_init() not ev_setup() 2021-02-09 09:17:08 -05:00
23acba4184 add simple pair style unit test input 2021-02-09 08:42:47 -05:00
1cbb37b92c clean up input and replace log with logs following LAMMPS conventions 2021-02-09 08:42:31 -05:00
9e25dff8b8 do not include generated files in git repo 2021-02-09 08:42:03 -05:00
29eb700615 whitespace 2021-02-09 08:27:29 -05:00
cd31c99c68 update false positives for added docs 2021-02-09 08:27:19 -05:00
0687ac79c6 fix LaTeX typesetting of equation that was broken with MathJax and pdfLaTeX 2021-02-09 08:27:07 -05:00
69f5d840df New pair style lj/relres 2021-02-09 07:29:38 -05:00
b53b993c68 recover in-place usage by defaulting to version 0 and changing it back after installation 2021-02-09 02:12:37 -05:00
09edb26101 Merge pull request #2586 from akohlmey/collected-small-changes
Final small changes and bugfixes for the patch release.
2021-02-09 01:10:51 -05:00
86b3e8ba2a fix permisssions 2021-02-09 00:52:17 -05:00
7f338a17af fix whitespace 2021-02-09 00:42:30 -05:00
2d1f9646a3 update src/.gitignore 2021-02-09 00:40:55 -05:00
7826b58f73 add check to lammps python module to check consistent versions between module and shared library 2021-02-09 00:38:17 -05:00
1b48ac0eaf Merge branch 'master' into collected-small-changes 2021-02-08 22:46:21 -05:00
db26902393 Merge pull request #2560 from lammps/thermo-energy
Standardize fix contributions to energy and virial, remove THERMO_ENERGY mask
2021-02-08 22:45:23 -05:00
d2b3677d6f whitespace fixes 2021-02-08 21:45:58 -05:00
11866dfcb4 avoid segfault when accessing fix compute data before the fix is initialized 2021-02-08 21:20:25 -05:00
82dc03ab3d update examples and log files for cases affected by the fix_modify changes 2021-02-08 21:17:52 -05:00
6f08e81bf8 don't access uninitialized data and avoid shadowing a class member variable 2021-02-08 20:19:22 -05:00
5e55ab0e9b silence compiler warnings 2021-02-08 20:19:01 -05:00
72ce5c6238 Merge branch 'thermo-energy' of github.com:lammps/lammps into thermo-energy 2021-02-08 20:04:46 -05:00
a6aabc0a93 fix typo 2021-02-08 20:03:13 -05:00
56ae498814 reduce memory leakage in kspace style msm 2021-02-08 17:27:54 -05:00
c5bb414c37 remove dead code 2021-02-08 17:26:39 -05:00
0797d15219 Merge branch 'thermo-energy' of github.com:lammps/lammps into thermo-energy 2021-02-08 14:15:00 -07:00
6909cf9dd5 Uncomment Kokkos code 2021-02-08 14:14:38 -07:00
d42a165ccf Merge branch 'master' into collected-small-changes 2021-02-08 15:33:22 -05:00
33939a0e26 Merge branch 'master' into thermo-energy
# Conflicts:
#	doc/src/fix_ti_spring.rst
#	src/RIGID/fix_rigid_small.cpp
#	src/fix_langevin.cpp
#	src/fix_temp_berendsen.cpp
#	src/fix_temp_csld.cpp
#	src/fix_temp_csvr.cpp
#	src/fix_temp_rescale.cpp
#	src/thermo.cpp
2021-02-08 15:24:29 -05:00
ca1a5731e7 remove files left behind by accident 2021-02-08 12:32:27 -05:00
3d46b084e8 must include LAMMPS_MACHINE suffix when installing python package 2021-02-08 11:08:00 -05:00
b8282a1152 search for python 3.9 as preferred version as well 2021-02-08 11:07:13 -05:00
a3a84c4493 Merge pull request #2584 from jrgissing/bond-react_create_atoms
Bond/react: create atoms
2021-02-08 10:44:36 -05:00
01a05b88b4 avoid memory leak in unit test fixture 2021-02-08 10:43:18 -05:00
c810cda64c must free MPI communicators created by MPI_Comm_split() 2021-02-08 10:40:20 -05:00
92605393f7 correct initialization and memory leaks issues detected by valgrind 2021-02-08 10:39:59 -05:00
9cdacbdebd apply cast to first variable in sequence of multiplications 2021-02-07 21:18:54 -05:00
06e484d3e0 make flags for supporting GPU archs consistent, add ampere consumer GPU arch 2021-02-07 15:30:55 -05:00
8134296311 fix typo 2021-02-07 09:39:07 -05:00
7c1569459c Step version strings for next patch release 2021-02-06 18:28:18 -05:00
5573d01079 Use typecast to silence CodeQL warnings 2021-02-06 18:18:52 -05:00
1609c498bc avoid integer overflow when computing memory usage 2021-02-06 18:15:48 -05:00
779bbd0853 avoid overflows when computing time or timestep related values 2021-02-06 18:15:24 -05:00
77402bdbc8 avoid overflows when computing memory offsets and allocating memory 2021-02-06 18:14:27 -05:00
1380b7b142 replace (temporary) long double with double. 2021-02-06 18:04:41 -05:00
26037982bc convert to double early when computing memory usage 2021-02-05 19:42:40 -05:00
12f49c4c89 avoid overflow when computing memory address offsets on 64-bit machines 2021-02-05 19:42:07 -05:00
e223ea3784 cast timestep related expressions to bigint before they can overflow 2021-02-05 19:41:17 -05:00
5036adeff0 timestep processing functions must use bigint instead of int 2021-02-05 19:23:05 -05:00
9995bef911 file permissions 2021-02-05 17:50:23 -05:00
19811077b7 fix strdup() vs utils::strdup() bug 2021-02-05 17:16:38 -05:00
960713be3b make recent change to fix ti/spring docs use mathjax 2021-02-05 17:01:28 -05:00
c74c3b3f22 update docs for mention CUDPP and MPS support with conventional make 2021-02-05 16:50:59 -05:00
fc8b8d8825 disallow use of CUDPP with CUDA multiprocessor server 2021-02-05 16:44:26 -05:00
754a469a01 add variable for handling cuda-mps-server 2021-02-05 16:43:51 -05:00
4166235be6 synchronize settings with CMake support 2021-02-05 16:43:18 -05:00
ba8f7bf3d8 address argument indexing bug reported by stan 2021-02-05 13:56:47 -05:00
47783aaa9c whitespace 2021-02-05 13:56:06 -05:00
6e11dee2f1 Merge branch 'master' into citation-refactor
# Conflicts:
#	doc/src/fix_bond_react.rst
2021-02-05 13:42:23 -05:00
5d75ae98a8 Merge pull request #2583 from akohlmey/replace-strstr-w-strmatch
Simplify some internal string processing
2021-02-05 13:34:24 -05:00
1da995d2e3 Merge pull request #2580 from akohlmey/collected-small-changes
Collected small changes for the next patch release
2021-02-05 10:32:07 -05:00
89e47e7aae memory fix 2021-02-04 22:31:15 -05:00
dde3a8cebb update log files 2021-02-04 21:00:46 -05:00
9a0805529c rename example files 2021-02-04 20:25:26 -05:00
bd1cc91bdd update create atoms example 2021-02-04 20:20:18 -05:00
cf140e7893 another case where using utils::strdup() reduces code massively. 2021-02-04 18:19:57 -05:00
8d68623b35 silence compiler warnings with IBM XL compilers 2021-02-04 18:08:41 -05:00
cf427bcad8 apply utils::strdup() in a few more cases 2021-02-04 17:52:32 -05:00
5c8bbb42f6 replace variable name "string" with "text" to avoid confusion with std::string 2021-02-04 17:33:54 -05:00
24bf1e5b0c make use of utils::strdup() 2021-02-04 17:33:02 -05:00
ab697be9e7 simplify using fmtlib 2021-02-04 17:00:27 -05:00
0f07215a2b add utils::strdup() convenience function 2021-02-04 17:00:02 -05:00
c129259854 rebase correction 2021-02-04 15:49:16 -05:00
f5bf10e00f remove dead code 2021-02-04 15:34:56 -05:00
e5ead83c8f near->overlap keyword update 2021-02-04 15:33:45 -05:00
4e791ac4f7 replace 'strstr(xxx,"x_") == xxx' with utils::strmatch("^x_") 2021-02-04 15:20:43 -05:00
1e8d57c207 Merge pull request #120 from lammps/master
rebase
2021-02-04 13:02:09 -07:00
8c742fee3e Merge branch 'lammps-master' into bond-react_create_atoms
rebase
2021-02-04 14:59:26 -05:00
2bc2140ed9 Merge branch 'master' of https://github.com/lammps/lammps into lammps-master 2021-02-04 14:58:52 -05:00
11b2a1e1ac reorder package names to be in 2 groups (non-user, user) and each sorted alphabetically 2021-02-04 14:58:49 -05:00
3e07711739 simplify using C++11 syntax 2021-02-04 14:35:39 -05:00
dadea34663 reformat comment 2021-02-04 14:35:39 -05:00
5e29cba076 replace Get_Time() with MPI_Wtime() 2021-02-04 14:35:39 -05:00
95e2214d96 more typecasts to double to avoid 32-bit int overflows when computing memory usage 2021-02-04 14:35:38 -05:00
49ea762300 Merge pull request #2571 from akohlmey/arg-info-class
Add ArgInfo class for simpler processing of compute, fix, and variable references
2021-02-04 14:32:34 -05:00
de5ba601f2 Update fix_bond_react.rst
manual rebase
2021-02-04 13:41:58 -05:00
96f67ebeaa Merge pull request #2582 from ellio167/pair_kim_refactor
Small pair kim refactor to better support multiple run commands with different models
2021-02-04 13:27:06 -05:00
5256631bee test for correctly supporting the use of multiple calls to pair_style kim 2021-02-04 11:28:38 -06:00
302be3f946 Fix typo 2021-02-04 10:09:14 -06:00
8da3bc9144 Increment instance_me in pair_kim to ensure neighbor correct list updates 2021-02-04 09:47:29 -06:00
c9cf8b57f4 Fix behavor of a 2nd call to 'pair_style kim ...' & a bug for parameter changes 2021-02-04 09:45:08 -06:00
8574a417fb Merge pull request #2579 from lammps/fix-ti-spring-doc
Clarify one of the outputs of fix ti/spring
2021-02-04 05:50:35 -05:00
c6c9c82f96 ID strings are immutable, so make them const char * arguments 2021-02-03 21:13:54 -05:00
9f7dc78f86 convert a few more styles to use ArgInfo 2021-02-03 21:06:23 -05:00
9fa1688f39 small corrections for dump custom 2021-02-03 21:06:04 -05:00
04a46bfd99 Merge remote-tracking branch 'github/master' into arg-info-class 2021-02-03 17:43:49 -05:00
4b15ffcf14 more use of ArgInfo class 2021-02-03 17:43:39 -05:00
91d913b7ee Merge pull request #2576 from akohlmey/collected-small-changes
Collected small changes for the next patch release
2021-02-03 17:08:04 -05:00
1ee27e2bc2 clarify one of the outputs of fix ti/spring 2021-02-03 15:01:35 -07:00
a700e506ae use utils::strmatch(name,"^x_") instead of (strstr(name,"x_") == name) 2021-02-03 16:50:19 -05:00
2f7d6672df more files with ArgInfo support added 2021-02-03 16:39:01 -05:00
f745d5d7be continue adding ArgInfo support 2021-02-03 10:52:16 -05:00
4eb143bfee fix another border communication issue in KOKKOS version of atom style dpd 2021-02-02 17:27:29 -05:00
e2e6639013 add typecast to avoid (unlikely but possible) integer overflows.
this will silence a lot of static code analysis warnings
2021-02-02 17:27:04 -05:00
5196926c28 remove meaningless typecast 2021-02-02 14:36:37 -05:00
1da3ba87f4 use -mpicolor flag as documented (and not -mpi). closes #2575 2021-02-02 14:12:46 -05:00
4404469f5c run GitHub actions only on merges/pushes to master to save minutes 2021-02-02 11:38:24 -05:00
85539765d0 update docs about thermo_modify flush 2021-02-02 11:37:08 -05:00
c2c8c5e493 Merge remote-tracking branch 'github/master' into arg-info-class
# Conflicts:
#	src/compute_chunk_atom.cpp
#	src/compute_chunk_spread_atom.cpp
#	src/compute_reduce.cpp
#	src/compute_reduce_region.cpp
#	src/compute_slice.cpp
#	src/fix_ave_atom.cpp
2021-02-02 11:33:01 -05:00
4d98d9f6aa add arginfo to fix saed/vtk 2021-02-02 11:29:08 -05:00
f2479e7d05 Merge pull request #2401 from lammps/configure-github-actions
Enable CodeQL static analysis and integration and unit tests on MacOS via GitHub actions
2021-02-02 10:27:25 -05:00
bfe64629fd switch to do CodeQL analysis and Unittest on MacOS. currently for PRs and master 2021-02-01 20:32:24 -05:00
6d836d8f30 run documentation actions in parallel 2021-02-01 20:32:24 -05:00
a83fe46860 spelling target needs conf.py 2021-02-01 20:32:19 -05:00
88e182da64 speed up compilation for static code analysis by switching to debug build type and turning off optimization 2021-02-01 20:31:37 -05:00
b15555724d combine analysis and simplify 2021-02-01 20:31:37 -05:00
0be1a419c7 split codeql workflow into two files as no compilation is needed for python 2021-02-01 20:31:37 -05:00
60a11b9ea1 do parallel compilation 2021-02-01 20:31:36 -05:00
c11bd658fc Add documentation and style check workflow 2021-02-01 20:31:36 -05:00
9ca0653c3e add CodeQL static code analysis workflow 2021-02-01 20:31:36 -05:00
1a7cb4647f Merge pull request #2569 from akohlmey/collected-small-changes
Collected small changes for the next patch release
2021-02-01 20:18:48 -05:00
2ee701f719 also flush screen stdio buffer with thermo_modify flush yes 2021-02-01 18:43:42 -05:00
2b44d67128 consistent dependencies for targes in "doc" folder makefile 2021-02-01 18:13:00 -05:00
179fbe6172 Merge pull request #2572 from akohlmey/consistent-invoked
Move definition of INVOKED_* constants as enumerator to compute.h
2021-02-01 17:52:57 -05:00
9a419154fa whitespace 2021-02-01 10:15:06 -05:00
5c3b88d938 whitespace 2021-02-01 10:14:31 -05:00
0e9c44d155 IDs are immutable strings 2021-02-01 10:12:13 -05:00
55da46f3e3 add ArgInfo support to some dump styles 2021-02-01 10:12:03 -05:00
fae6fef1ac add tests for DNAME/INAME argument references 2021-02-01 09:39:13 -05:00
3b9f3d989e IDs are immutable strings 2021-02-01 09:08:07 -05:00
660572a0e6 add support for processing "d_" and "i_" for DNAME and INAME, respectively 2021-02-01 09:07:15 -05:00
6d2d3cc33b translated the final compute style to use ArgInfo 2021-02-01 08:01:11 -05:00
26ea789834 add some documentation for the programmer guide and doxygen decorations 2021-01-31 23:06:59 -05:00
d5e6bcd9d3 correctly check for index and dimensionality 2021-01-31 22:13:43 -05:00
99184eb653 correctly use index and dim 2021-01-31 22:06:06 -05:00
2882208e0b must report index1 as 0 for type == ArgInfo::NONE 2021-01-31 22:05:33 -05:00
0f49ce81c7 convert some more files 2021-01-31 21:47:55 -05:00
829e5a7f85 update docs about the organization of sources and relation between classes 2021-01-31 21:06:35 -05:00
48f15e485d put consistent definition of INVOKED_* constants as enumerator into compute.h 2021-01-31 20:13:47 -05:00
f0e4f90608 reformat paragraph 2021-01-31 13:06:10 -05:00
aeaaeed703 clarify and fix typo 2021-01-30 06:08:35 -05:00
3ce92db405 correct path to CMake preset folder in example command 2021-01-30 06:08:17 -05:00
4747e0496a add a bunch of unicode space equivalents 2021-01-30 02:22:49 -05:00
03136ed3e3 two example cases of using the ArgInfo class 2021-01-30 00:51:06 -05:00
c1742aa3d1 add unit tests for ArgInfo class 2021-01-30 00:50:15 -05:00
10834321b0 ArgInfo class for simpler parsing of compute, fix, variable references 2021-01-30 00:49:57 -05:00
065c4939ed relax some unit test epsilons, so the tests pass on MacOS 2021-01-29 18:48:05 -05:00
0e2b528351 add additional heuristics to prevent python unit tests from failing on MacOS 2021-01-29 18:40:24 -05:00
95b445a25a must initialized has_exceptions to avoid false positives in unit tests 2021-01-29 18:38:33 -05:00
72b022c5fa make implicit copy contructor explicit and thus silence compiler warnings 2021-01-29 16:25:32 -05:00
48fa5e6736 fix argument bug 2021-01-29 16:25:32 -05:00
a23e45cc0c remove dead code 2021-01-29 16:25:32 -05:00
461364c006 silence compiler warnings 2021-01-29 16:25:32 -05:00
1312a76dec eliminate use of strtok() by using ValueTokenizer class 2021-01-29 16:25:32 -05:00
222d842b45 Merge pull request #2435 from sramirezh/adding_new_pair
Adding new Wang-Frenkel potential pair style
2021-01-29 16:22:39 -05:00
830ca32fa8 Merge pull request #2479 from james1123581321/master
Updated AGNI pair files and added new AGNI force fields
2021-01-29 15:41:08 -05:00
03e7edd38f Merge pull request #2565 from prs513rosewood/explicit_netcdf_error
Explicit netcdf dumper error message when trying to append to non-existant file
2021-01-29 15:00:01 -05:00
759ac0ddd9 Merge pull request #2564 from akohlmey/detect-utf8-multibytes
Detect UTF-8 multibyte characters input and replace with ASCII equivalents where known
2021-01-29 13:02:34 -05:00
9a9e7759e4 Merge pull request #1 from akohlmey/adding_new_pair
Additional changes for LAMMPS pull request #2435
2021-01-29 11:24:59 -05:00
21eab7affa Merge pull request #2566 from hocky-research-group/fix-python-bug
Fixed bug in get_thermo_data in parsing log files with multiple run() commands
2021-01-29 10:13:49 -05:00
8d2652fa7a Merge pull request #2540 from stanmoore1/kk_update_3.3.0
Update Kokkos library in LAMMPS to v3.3.1
2021-01-29 09:11:27 -05:00
083c098171 fix spelling ( https://en.wiktionary.org/wiki/existant ) 2021-01-29 09:09:36 -05:00
9f8857cd47 Merge pull request #2567 from stanmoore1/auto_sync
Fix sync/modify issue in Kokkos atom_vec
2021-01-29 08:33:29 -05:00
b2d5c32cba Fix sync/modify issue in Kokkos atom_vec 2021-01-28 14:56:51 -07:00
51ac5e34ee make name of include guard consistent with file name 2021-01-28 04:12:39 -05:00
740ae28e3d address spelling issues 2021-01-28 03:59:30 -05:00
9c630d9906 scale down image 2021-01-28 03:59:19 -05:00
8260fbd344 add unit test for wf/cut pair style 2021-01-28 03:48:39 -05:00
cd6ebec652 fix incorrect data type (double vs int) in restart and data file handling 2021-01-28 03:46:46 -05:00
ef351bc9a6 simplify using the powint() function by importing the MathSpecial namespace 2021-01-28 03:46:09 -05:00
dac0a685e1 remove dead code 2021-01-28 03:45:15 -05:00
e3cc058c74 reformat to have shorter lines 2021-01-28 03:43:56 -05:00
cafabbd550 Merge branch 'adding_new_pair' of github.com:sramirezh/lammps-Developing into adding_new_pair 2021-01-28 03:09:45 +00:00
191a91caa2 imported math_special 2021-01-28 03:08:53 +00:00
46984f69ee Added the potential comparison with LJ 2021-01-27 21:39:52 -05:00
458120bdd5 Merge branch 'adding_new_pair' of github.com:sramirezh/lammps-Developing into adding_new_pair 2021-01-28 02:23:37 +00:00
0f31cfc554 corrected the documentation 2021-01-27 21:21:23 -05:00
10af9fbb7d Merge branch 'adding_new_pair' of github.com:sramirezh/lammps-Developing into adding_new_pair 2021-01-28 01:58:57 +00:00
3ed1aa3a72 replaced pow by powint 2021-01-27 20:57:46 -05:00
9ceef78bec included inumeric instead of numeric 2021-01-28 01:35:15 +00:00
21cd69b5d7 Changed the header 2021-01-28 01:31:36 +00:00
6e43ccf32b Fixed bug in get_thermo_data where columns is set to None instead of an empty list 2021-01-27 19:41:24 -05:00
0df55bb3b6 Merge branch 'adding_new_pair' of github.com:sramirezh/lammps-Developing into adding_new_pair 2021-01-28 00:40:12 +00:00
4925243d7e corrected mistake with the link 2021-01-28 00:36:42 +00:00
c6b8b9e8fe moved the potential to user-misc 2021-01-28 00:36:42 +00:00
11841bf638 created the pair style files 2021-01-28 00:36:42 +00:00
ddcde9c2a5 Updated the user-misc readme 2021-01-28 00:36:42 +00:00
6ba9ebe9b8 added the pair to pairs style doc 2021-01-28 00:36:42 +00:00
d295ab9296 Added the pair documentation 2021-01-28 00:36:42 +00:00
1f6539934c added the pair to the commands 2021-01-28 00:36:42 +00:00
e67977377b Added the documentation 2021-01-28 00:36:42 +00:00
09f6d1fa57 added the pair files 2021-01-28 00:36:42 +00:00
bca3164fc4 fix whitespace issues 2021-01-26 18:39:02 -05:00
d1be5d49ca Merge branch 'master' into thermo-energy 2021-01-26 18:37:05 -05:00
2b290d5e42 recover from compilation failures 2021-01-26 18:31:23 -05:00
4f8b81385b fixing grammar of error message 2021-01-26 13:57:39 -05:00
80bac27184 extra files that were not checked in 2021-01-26 11:02:27 -07:00
78b46e819b added Developer doc info for this refactoring 2021-01-26 10:54:02 -07:00
eb9e28e665 fix some typos 2021-01-26 09:30:28 -07:00
fc0936c778 doc pages for virial contributions of fixes 2021-01-26 09:26:31 -07:00
f3d974e5a3 Explicit error message when trying to append to non-existant file
Previous behavior would print "at keyword requires use of 'append yes'" when
trying to append to non-existant file.
2021-01-26 11:21:57 -05:00
6147b9c2ef doc page updates for energy contributions of thermostat and non-thermostat fixes 2021-01-26 08:51:47 -07:00
89216ce1ed add UTF-8 handling to ValueTokenizer class 2021-01-25 23:26:54 -05:00
05f08c0799 avoid false positives in has_utf8() check 2021-01-25 21:44:38 -05:00
afc58659db add not input parsing section about handling of UFT-8 characters 2021-01-25 21:44:02 -05:00
a119164496 add utf-8 check, substitution, and warning to Input::parse() function 2021-01-25 20:53:59 -05:00
69e7480fed update utils::*numeric() functions to use utf8 check and substitution 2021-01-25 20:41:05 -05:00
1f6cc25176 Fix link 2021-01-25 14:04:26 -07:00
0f2d0c539d Update Kokkos arch list 2021-01-25 13:52:35 -07:00
f83b796c83 Add note on C++14 requirement in Docs 2021-01-25 13:44:07 -07:00
af9b796855 Update Kokkos version in KOKKOS.cmake 2021-01-25 13:31:01 -07:00
064e0d1c44 redo changes to modify_kokkos.cpp/h 2021-01-25 09:18:37 -07:00
a0e4817a2c more changes to Kokkos Modify class 2021-01-25 09:08:40 -07:00
46b4043966 more changes to Kokkos Modify class 2021-01-25 09:01:51 -07:00
72168d6780 add utility functions to detect UTF-8 characters and substitute with ASCII equivalents 2021-01-25 01:41:38 -05:00
0c35981e31 fep CH4hyd examples 2021-01-23 19:02:21 +01:00
6dfa138037 Update Kokkos version in CMake 2021-01-22 21:08:15 -07:00
d8e2f90632 Update Kokkos library in LAMMPS to v3.3.1 2021-01-22 21:02:05 -07:00
14aac4d348 Merge branch 'master' of github.com:lammps/lammps into kk_update_3.3.0 2021-01-22 21:01:58 -07:00
a77bb30730 Merge pull request #2561 from akohlmey/collected-small-changes
Address minor issues indicated by compiler warnings and static code analysis
2021-01-22 16:24:04 -05:00
893a5018de fep yet more doc 2021-01-22 22:23:47 +01:00
804def066a fep more doc 2021-01-22 22:21:56 +01:00
4244198b10 fep update doc 2021-01-22 22:15:44 +01:00
f37bfc3fdc fep CH4hyd/fdti10 2021-01-22 22:01:26 +01:00
25420fc030 Start update of fep examples and doc 2021-01-22 21:39:09 +01:00
70998c0509 Merge pull request #2562 from stanmoore1/kk_space
Fix issues in Kokkos package with pair/only on
2021-01-22 14:02:31 -05:00
7e1a1d7a2c hoist "shift_flag" outside of inner loops. 2021-01-22 12:27:22 -05:00
bdd2bd21dc add const qualifiers 2021-01-22 12:26:33 -05:00
56e4545ebc restore incorrectly changed code 2021-01-22 12:16:12 -05:00
3bbedb1cd9 whitespace 2021-01-22 08:55:20 -07:00
0b409116aa Template other lambdas on DeviceType 2021-01-22 08:44:29 -07:00
4d4d28d49d Fix issues in Kokkos package with pair/only on 2021-01-22 08:16:30 -07:00
a77c15c185 correct overeager deletion of statements 2021-01-22 09:48:49 -05:00
6d5c88b045 simplify and avoid a redundant computation 2021-01-22 09:27:17 -05:00
50e366cc91 remove dead code 2021-01-22 09:26:33 -05:00
d8fbf7f0ca remove last v_setup() calls from fixes 2021-01-21 17:36:20 -07:00
d169f6c169 USER-BOCS and other compute pressures 2021-01-21 17:27:45 -07:00
5a23b804d9 vtally changes to USER packages 2021-01-21 16:06:54 -07:00
320ba4ef8f more changes to USER-MISC 2021-01-21 15:44:08 -07:00
5a51c74b9d vtally change to fix smd 2021-01-21 15:41:06 -07:00
54e3ee74a2 changes to USER-MISC package 2021-01-21 15:37:18 -07:00
4397706654 missing a change in fix langevin/spin 2021-01-21 15:18:16 -07:00
c091515427 changed syntax for virial tallying in standard package fixes 2021-01-21 15:12:16 -07:00
b5525a19bc changes to files with THERMO_ENERGY mask in standard packages 2021-01-21 13:56:50 -07:00
dbb923e1b2 Merge branch 'thermo-energy' of git+ssh://singsing.sandia.gov/~/lammps/git into thermo-energy 2021-01-21 12:18:21 -07:00
9decb3b37a more changes 2021-01-21 12:17:53 -07:00
20650dc7ce more changes 2021-01-21 12:16:39 -07:00
2c1b6adce3 change virial_atom to virial_peratom 2021-01-21 12:00:16 -07:00
6e3b9307a4 remove ecouple variable from Fix 2021-01-21 11:56:33 -07:00
182eb35f1a changes to fixes that use THERMO_ENERGY 2021-01-21 11:32:11 -07:00
f54fd8fa72 intial refactoring of THERMO_ENERGY mask 2021-01-21 10:31:53 -07:00
6518c95b71 Consolidated publication list 2021-01-19 20:29:53 -08:00
771497e7a5 Added name to contributing authors, added two new references to citation list 2021-01-19 20:19:20 -08:00
bcb5f00743 disable dump by default 2021-01-19 22:59:17 -05:00
1c6aa9292c more consistent formatting. remove dead code. 2021-01-19 22:58:35 -05:00
d0ec325adb re-add log files for AGNI examples 2021-01-19 22:49:41 -05:00
68b9879962 port AGNI pair style changes to USER-OMP version 2021-01-19 22:45:31 -05:00
ade134361e fix memory leak when using pair_coeff multiple times 2021-01-19 22:26:20 -05:00
b8bec5ae39 switch to memory->create()/destroy() for contigous 2d-allocation 2021-01-19 22:25:58 -05:00
d0ed4e42d8 fix bug corrupting the params data structure on MPI ranks != 0 2021-01-19 22:24:43 -05:00
302b09c470 remove redundant MPI communication 2021-01-19 22:24:01 -05:00
a95ee4c945 fix parallel memmory allocation and communication issue 2021-01-19 21:34:12 -05:00
909664409e update c++ source format 2021-01-19 21:33:42 -05:00
a66e4d2f5e fix small memory leak 2021-01-19 21:33:20 -05:00
ad124106e2 update c++ source style to more closely resemble other LAMMPS sources 2021-01-19 21:11:14 -05:00
832a22ee36 Updated file reader 2021-01-19 17:31:10 -08:00
320b5e5c55 Rewrote file-reader to be backwards comaptible with old agni files, reverted Al_jpc.agni 2021-01-19 17:30:11 -08:00
9a04e7e10c make sum variable unambiguous and handle out-of-bounds accesses 2021-01-19 16:55:17 -05:00
9da847e4c0 Added Axel's suggestions for char* to string, updated potential files 2021-01-19 12:55:03 -08:00
61c177ee63 Merge https://github.com/lammps/lammps 2021-01-19 12:03:11 -08:00
4a65aaf5c1 Revised file reader which still crashes, code cleanup 2021-01-19 12:02:38 -08:00
833d5b3bb4 Merge branch 'master' into collected-small-changes 2021-01-19 11:49:07 -05:00
364727acdd Merge pull request #2559 from jrgissing/bond/react-reaction-constraints-bugfix
bond/react: reaction constraints bugfix
2021-01-18 16:59:40 -05:00
d49f021c8b silence compiler warnings 2021-01-18 14:40:23 -05:00
7b87f45d1a Merge pull request #2554 from akohlmey/accelerator-introspection
Add accelerator introspection functionality
2021-01-18 11:59:00 -05:00
f65ea359ac Merge pull request #2558 from akohlmey/use-math-extra
Replace redundant 3-vector function definitions in pair styles with MathExtra functions
2021-01-18 10:42:24 -05:00
06f70723af Merge pull request #2557 from akohlmey/collected-small-changes
Collected small changes and updates
2021-01-18 10:26:50 -05:00
e88d42f596 correct indentation 2021-01-17 16:06:08 -05:00
a2d7d47cac add unittest for python interface of accelerator config introspection 2021-01-16 17:12:29 -05:00
d4a0006388 silence compiler warnings and remove dead code 2021-01-16 15:46:42 -05:00
847ad67fb6 silence compiler warning 2021-01-16 15:38:55 -05:00
7c3cd30ef7 replace non-ASCII character with ASCII equivalent 2021-01-16 01:22:38 -05:00
1cdce9233e identify offloading to Xeon Phi accelerator coprocessors 2021-01-16 01:07:44 -05:00
99ae866973 add Kokkos introspection. correct package names. 2021-01-16 00:57:46 -05:00
a647c236d0 make categories contain lists instead of strings as we may have multiple supported settings 2021-01-16 00:56:27 -05:00
a644375afa make code python2/3 compatible 2021-01-16 00:23:44 -05:00
efda7559c0 Merge branch 'master' into accelerator-introspection 2021-01-16 00:15:07 -05:00
acbcf44437 remove math_vector.h and math_complex.h 2021-01-15 17:52:21 -05:00
37cd54bd57 convert ewald disp to use MathExtra and copy features from math_complex.h and math_vector.h not available 2021-01-15 17:52:10 -05:00
49bc05aa1b replace use of math_vector.h with math_extra.h in some more pair styles 2021-01-15 17:25:44 -05:00
a7c02bb6b8 Update fix_bond_react.cpp 2021-01-15 16:58:18 -05:00
303156848b remove use of math_vector.h from /sphere integrator fixes 2021-01-15 16:55:23 -05:00
3269f6a2e3 bond/react: reaction constraints bugfix
bug could occur if subsequent reaction has fewer constraints than previous
2021-01-15 16:52:39 -05:00
be1fb12bfa convert use of per-style vec3_*() functions to use MathExtra:: functions 2021-01-15 16:13:13 -05:00
33a0c30cfe add const for better optimization, add overload for scaleadd3() 2021-01-15 16:12:14 -05:00
675256f72d replace vec3_*() functions in Tersoff class with equivalent from MathExtra:: 2021-01-15 15:21:07 -05:00
f2c2876f8f add second version of scale3 with alternate argument list to match MANYBODY inlines 2021-01-15 15:20:14 -05:00
8407145e71 remove obsolete makefiles from lib/gpu based on info from @ndtrung81 2021-01-15 14:51:29 -05:00
fdb34f52d7 Merge branch 'master' into collected-small-changes 2021-01-15 14:45:16 -05:00
2a508ee976 Merge pull request #2555 from ndtrung81/gpu-makefiles
Improvements to the GPU library Makefiles
2021-01-15 14:25:19 -05:00
5e6411ea5a Merge pull request #2514 from oywg11/tersoff-shift
Add a shift option to most Tersoff potential variants
2021-01-15 13:59:56 -05:00
8060a750d4 Merge pull request #2556 from akohlmey/eam-he-pair-style
Add eam/he pair style for modeling He bubbles in metals
2021-01-15 12:34:59 -05:00
6d1babfe89 correct reference for eam/he publication 2021-01-15 11:59:21 -05:00
d501fd7e29 simplify description of the HE EAM file format 2021-01-15 11:43:46 -05:00
ff1a7080a8 whitespace 2021-01-14 14:34:00 -05:00
fef1816927 Merge branch 'whitespace-fix' into eam-he-pair-style 2021-01-14 14:33:38 -05:00
537019f91f Made Nvidia.makefile and Opencl.makefile more compact, stored their older version 2021-01-13 22:52:01 -06:00
57db3631e5 Added Makefile.cuda for CUDA and Makefile.opencl for OpenCL, similar to what has been done in Makefile.hip for HIP 2021-01-13 22:50:32 -06:00
a3d21297bc complete integration of eam/he pair style into manual 2021-01-13 22:37:29 -05:00
59ef2e17ea add eam/he pair style to distribution 2021-01-13 22:24:44 -05:00
84ca5b53e3 Moved hBN_shift example to ./examples/tersoff and removed ./examples/USER/misc/tersoff_shift 2021-01-13 19:28:13 -07:00
7bff94910f Created new set of tests for Tersoff variants 2021-01-13 17:05:26 -07:00
b28f6cb8ca Removed some tersoff variants from threebody test set 2021-01-13 16:49:36 -07:00
0ae5d963ce update formulations in docs to incorporate suggestions by @sjplimp 2021-01-12 20:44:43 -05:00
2c26f9d14d Merge branch 'whitespace-fix' into accelerator-introspection 2021-01-12 20:26:46 -05:00
22bf810b63 recover current package names. this will become simpler once #2525 is implemented 2021-01-12 20:23:57 -05:00
702de49f59 add documentation for added keyword and library interface functions 2021-01-12 20:11:38 -05:00
3d3590f02d add c-library interface and export to python 2021-01-12 20:10:47 -05:00
9ff011728c Merge pull request #2553 from jrgissing/class2_improper_bug
write_data bugfix for nonzero class2 impropers
2021-01-12 16:40:04 -05:00
2b1a93bd15 expand accelerator output options 2021-01-11 23:18:10 -05:00
56909e88b1 implement accelerator introspection for GPU package 2021-01-11 17:03:23 -05:00
db2eefae5c consistently allow comments in molecule file section headers 2021-01-11 16:12:31 -05:00
1f23fd4829 convert back to degrees when writing class 2 impropers 2021-01-11 15:39:12 -05:00
e0087472e8 Fix issues with 'modify' in unpack_border 2021-01-11 10:29:03 -07:00
c5298c24be start creating API for querying accelerator package features 2021-01-11 11:08:22 -05:00
4758e43a2e add support for setting -DLMP_GPU when the GPU package is installed 2021-01-11 10:18:09 -05:00
1f8faeda5b Merge branch 'whitespace-fix' into tersoff-shift 2021-01-11 09:50:24 -05:00
c779b749b5 benchmark test for the optimized codes 2021-01-11 16:26:06 +02:00
cbca189490 Merge branch 'master' into tersoff-shift 2021-01-11 04:30:11 -05:00
412d1c1b72 rebless unit test data for tersoff shift bugfix 2021-01-11 04:21:23 -05:00
c21ec5f7e8 attempt to reduce the negative performance impact of adding the shift option 2021-01-11 04:20:43 -05:00
ab3fdc718d pass local tests 2021-01-11 10:33:26 +02:00
eec0cc4921 clean the codes 2021-01-11 08:48:40 +02:00
86264c85a5 eliminating the discrepancies 2021-01-11 08:43:15 +02:00
547fcc93d0 Merge branch 'whitespace-fix' into citation-refactor 2021-01-08 18:32:38 -05:00
9ce477dd3f Merge branch 'master' into citation-refactor 2021-01-08 18:32:30 -05:00
6428e542db document updated citation reminder 2021-01-08 18:29:15 -05:00
d3c14dcb51 update citation output to more closely resemble what had been proposed 2021-01-08 18:28:29 -05:00
e5d2ca99d8 Merge branch 'master' of https://github.com/lammps/lammps into kk_update_3.3.0 2021-01-08 11:11:22 -07:00
b15bb11334 remove trailing whitespace 2021-01-08 12:26:04 -05:00
102a6eba79 Merge pull request #2506 from lammps/fft-flip-sign
Flip sign convention for FFTs used by KSpace methods
2021-01-08 12:09:34 -05:00
acb7cab150 whitespace 2021-01-07 21:52:09 -07:00
91252176af Cleanup 2021-01-07 21:49:25 -07:00
7abab6dd0f Fix bug in Kokkos PPPM per-atom introduced by 985fc86aa3 2021-01-07 21:36:59 -07:00
99ecefca63 Don't use the enum in fft3d_kokkos.cpp so as to match fft3d.cpp 2021-01-07 11:16:57 -07:00
21a0d26c4a cuFFT uses reverse notation 2021-01-07 11:08:48 -07:00
77b19b7ce5 Merge branch 'master' into fft-flip-sign 2021-01-07 10:16:26 -07:00
dec574babf Flip sign in pppm_kokkos 2021-01-07 09:52:40 -07:00
21bffd5258 Fix compile error 2021-01-07 08:48:41 -07:00
3c36737607 Merge pull request #2547 from akohlmey/collected-small-changes
Collected small fixes and code formatting updates
2021-01-06 11:13:49 -05:00
164d2fb64f Work around bug in GCC 7 2021-01-06 08:26:16 -07:00
f2bdd4654e Update from master 2021-01-06 08:15:37 -07:00
cf841e99c4 change '){' tp ') {' 2021-01-05 15:45:52 -05:00
e42845799d more consistent formatting for conditionals and loops 2021-01-05 15:42:35 -05:00
ae3bcff4b6 Merge branch 'master' into collected-small-changes 2021-01-05 15:24:00 -05:00
d6ff307390 Merge pull request #2532 from stanmoore1/kk_pair_fix_comm
Add more granular control of Kokkos pair and fix comm
2021-01-05 15:20:50 -05:00
74a1e9f272 Merge pull request #2549 from weinbe2/fea-snap-ui-aosoa
Kokkos SNAP optimizations --- Recursive polynomial evaluation optimizations, improved parallelism, various C++11-isms
2021-01-05 15:17:26 -05:00
fffbb8ac7f Switch 'real' to 'real_type' 2021-01-05 09:08:57 -07:00
45fab72fdc benchmark test for shift=0 2021-01-05 17:45:34 +02:00
dfcfb4e206 benchmark test for shift=0 2021-01-05 17:45:01 +02:00
12ccc00ac9 Formatting tweak 2021-01-05 08:34:08 -07:00
973c230185 Update chunksize 2021-01-05 08:29:47 -07:00
af993c9518 benchmark test on tersoff shift 2021-01-05 11:53:44 +02:00
df01bbc016 provide input script backward compatibility w/o documenting the old option 2021-01-04 23:28:58 -05:00
6bdf427522 add unit tests for tersoff pair styles used with shift keyword 2021-01-04 23:13:38 -05:00
2e0ae2c810 whitespace 2021-01-04 23:03:56 -05:00
7ca7dfe179 add check to error out if an accelerated variant is used that does not support the shift flag 2021-01-04 23:03:40 -05:00
612d49d69d update docs a bit more 2021-01-04 23:02:17 -05:00
47b4504917 Merge branch 'master' into tersoff-shift 2021-01-04 22:19:59 -05:00
e0f8d01176 Whitespace fix. 2021-01-04 19:33:31 -05:00
3cf9a0758f Cosmetic fixes, start of new potential_reader 2021-01-04 16:25:34 -08:00
80d992a5ac Replies to PR review: comment and variable name clean-up. 2021-01-04 19:06:03 -05:00
07fe926df6 Merge https://github.com/lammps/lammps 2021-01-04 13:28:39 -08:00
4d96b068de properly initialize pointers to be freed 2021-01-04 11:01:12 -05:00
dd69e26cb5 Added clarification of threebody typing of R 2021-01-02 19:51:23 -07:00
0eb3c01eb8 Added false positives 2021-01-02 17:14:17 -07:00
15a599102d Updated doc pages 2021-01-02 17:02:38 -07:00
068e26e0a0 Cleaned up the examples, added loop geom to velocity initializations 2020-12-31 21:22:24 -07:00
6688e2fd6e Changed if( to if ( 2020-12-31 19:01:35 -07:00
f00ca10b1e PR-specific whitespace fixes. 2020-12-30 15:35:37 -05:00
5b34d58e48 Removed kokkos_type.h include from pair_snap_kokkos.h 2020-12-30 15:01:56 -05:00
b08582de69 fix bond/react buffer overflow: must not use sprintf to write to char variable 2020-12-30 09:55:46 -05:00
51a20175c9 more code formatting consistency changes for loops and conditionals 2020-12-30 09:47:45 -05:00
28de7e351a fix off-by-one bug (arrhenius type constraint uses 5 parameters) 2020-12-30 09:23:47 -05:00
4f5192fa86 silence compiler warnings 2020-12-30 09:21:11 -05:00
382ade15fe more consistent formatting of for/while loops and if statements 2020-12-30 09:09:08 -05:00
eef28b58ab remove extra word 2020-12-30 08:55:32 -05:00
23866d9a6f Restored correctness for USER-OMP mod, mod/c, and zbl variants 2020-12-29 20:59:51 -07:00
c3cceeeeb0 Restored correctness for USER-OMP 2020-12-29 20:18:58 -07:00
0e83e792d0 add false positives 2020-12-29 20:31:00 -05:00
bc0b963f98 remove extra empty line 2020-12-29 20:25:42 -05:00
3e6bd3ef32 Propagated changes in PairTersoff to tersoff/mod and tersoff/mod/c 2020-12-29 12:54:29 -07:00
840dd61095 Further optimized algorithm for computing the Wigner U matrices and derivatives thereof. Replaced explicit double within the SNAP kernels with a compile-time "real" type. Optimized GPU compressed neighbor build within SNAP. 2020-12-29 14:23:58 -05:00
fec52f6a48 make CMake script formatting more consistent 2020-12-29 10:40:39 -05:00
76cb49d0a0 silence compiler warnings 2020-12-29 10:31:35 -05:00
086ac30267 whitespace 2020-12-29 10:21:14 -05:00
427d037747 Merge pull request #2508 from athomps/mliappy3
Add support for Python based models to the MLIAP package
2020-12-29 09:59:43 -05:00
2e623ff0a5 Rearranged force calc to move shift-dependence out of low-level code 2020-12-28 20:00:18 -07:00
5dc868ec30 whitespace 2020-12-28 09:37:13 -05:00
1d38cc1990 must not output and add separator line on empty buffers when flushing citations. 2020-12-27 13:46:09 -05:00
4912cde2ae initial attempt to refactor the citation logging in LAMMPS
this implements the basic features and flow of control.
to be done are the specific texts and the documentation.
2020-12-27 12:14:12 -05:00
a38223411f parse the shift option only for basic tersoff class 2020-12-25 15:40:52 +02:00
0a4bee5cd9 parse the shift option only for basic tersoff class and reject for others 2020-12-25 15:20:02 +02:00
cbc6197891 also flip sign on 1d timing FFTs 2020-12-24 16:10:03 -07:00
a4897d38b9 Tweak sync/modify in pair_multi_lucy_rx_kokkos 2020-12-24 10:36:24 -07:00
4382529158 Fix sync/modify issues in fix_qeq 2020-12-24 10:28:52 -07:00
ab5a1f229e Merge pull request #2538 from akohlmey/next-patch-release
Step version strings for the next patch release
2020-12-24 10:30:13 -05:00
3ada956897 Merge branch 'master' of https://github.com/lammps/lammps into kk_pair_fix_comm 2020-12-24 08:08:19 -07:00
9b6ba42c19 revise the doc of Tersoff potential accordingly 2020-12-24 16:45:22 +02:00
7b4d4e41b8 merge tersoff/shift as an option of orginal Tersoff Potential 2020-12-24 16:26:36 +02:00
ddeae8a3ba step version string one more time 2020-12-23 20:15:52 -05:00
fb1cc56b2b Merge pull request #2542 from akohlmey/plumed-update-to-2.7
Add support plumed2 library version 2.7.0
2020-12-23 19:06:44 -05:00
41d6648ac9 Merge pull request #2504 from jrgissing/bond/react-add-logic-to-constraints
Bond/react: add logic to constraints
2020-12-23 15:39:30 -05:00
8e6b89cc81 fix multiplication issue in shake stats 2020-12-23 15:14:00 -05:00
c6fb9c3836 update supported version test in fix plumed for new version 2020-12-23 15:13:38 -05:00
cc2a986f2f Workaround for GCC 7 internal compiler error 2020-12-23 12:26:05 -07:00
78a20a988e add support for plumed version 2.7.0 and make it default 2020-12-23 14:23:39 -05:00
780c31c5f7 Updated PyTorch ReLU example to latest 2020-12-23 12:22:44 -07:00
320c32448c Fix merge conflicts 2020-12-23 10:53:19 -07:00
4519cc02eb Workaround GCC 7 internal compiler error 2020-12-23 10:39:51 -07:00
06d7e5ab02 Merge pull request #2533 from akohlmey/pair-only-suffix
Add pair/only option for accelerator styles
2020-12-23 12:30:39 -05:00
9122b18c6f Updated README files 2020-12-23 10:17:55 -07:00
181ff5298f Merge pull request #2483 from z-gong/tgnh
Temperature-grouped Nose-Hoover thermostat for Drude polarizable model
2020-12-23 11:39:33 -05:00
37063ab61f Small tweaks 2020-12-23 09:22:27 -07:00
e25e32c14e enabling KOKKOS requires raising the required C++ standard to C++14 2020-12-23 10:43:55 -05:00
ddfa5c3e87 document pair/only keyword to package command 2020-12-23 10:09:54 -05:00
5aed28359b Merge pull request #2539 from lammps/doc-developer-notes
new Developer_notes doc page
2020-12-23 09:32:35 -05:00
6fd7d584c2 move release date 2020-12-23 01:05:52 -05:00
acd48f7553 Merge pull request #2517 from stanmoore1/kk_roundup
Fix Kokkos performance regression for small systems
2020-12-23 01:04:08 -05:00
2962fa561d Revert comm flags if pair/only is turned off 2020-12-22 21:08:07 -07:00
a02471967b Tweak DELTA constant 2020-12-22 16:08:21 -07:00
4befc0fa56 Fix logic error 2020-12-22 15:25:40 -07:00
06596683c7 Add back in param 2020-12-22 14:51:27 -07:00
d192a77763 Small tweaks 2020-12-22 14:47:41 -07:00
bfb85d3cb4 Fix typo in docs 2020-12-22 14:37:34 -07:00
3162618512 Update docs 2020-12-22 14:24:24 -07:00
4520ef16e3 Cleanup 2020-12-22 14:22:41 -07:00
679f1e83a4 More cleanup 2020-12-22 13:49:21 -07:00
8ba288e167 Remove unneeded UVM code 2020-12-22 13:16:58 -07:00
6f852e7b2c Remove 'host' option for Kokkos pair and fix comm 2020-12-22 12:55:44 -07:00
271cbad787 Remove redundant code 2020-12-22 11:58:32 -07:00
6dc18d4ff2 Merge pull request #2 from lubbersnick/mliappy3
switch setuptools back to distutils
2020-12-22 10:56:50 -07:00
cf3ae8cdd2 switch setuptools back to distutils 2020-12-22 09:59:50 -07:00
ecc98cc05f Merge branch 'master' of https://github.com/lammps/lammps into kk_pair_fix_comm 2020-12-22 09:19:18 -07:00
60dc9f6187 Update docs 2020-12-22 09:19:11 -07:00
8efd1c93ec Add more granular control of Kokkos pair and fix comm 2020-12-22 09:19:01 -07:00
0c54f07e71 Update CMake Kokkos version 2020-12-22 09:06:05 -07:00
eea14c55a9 Update Kokkos library in LAMMPS to v3.3.0 2020-12-22 08:52:37 -07:00
7a934eac37 use constexpr instead of define for better typechecking 2020-12-22 10:40:28 -05:00
d07cf22ac5 use parsed-literal sections to reduce spellchecking variable names 2020-12-22 10:25:40 -05:00
ce24d70ccc Add comments about smaller DELTA in atom_vec_kokkos.cpp 2020-12-22 08:15:51 -07:00
f9dd28dbbe Merge branch 'master' of github.com:lammps/lammps into kk_roundup 2020-12-22 08:11:57 -07:00
75eadabaf0 change ordering of sub sections 2020-12-22 08:02:28 -07:00
a1c5ed93ab new Developer_notes doc page 2020-12-21 17:13:32 -07:00
d46fb3cc96 Merge pull request #1 from lubbersnick/mliappy3
Changes to MLIAP python
2020-12-21 15:50:06 -07:00
e7fa0a6bac Changes to MLIAP python
- update lammps python package to use setuptools
- refactor MLIAP classes into lammps python package

lammps.mliap package
- change TorchWrapper to use dtype and device as arguments
- turn activation of mliappy into functions (was a class)
- add a check to see if python interpreter is compatible
  with python lib calls internal to lammps

mliap_model_python_couple.pyx:
- load models ending in '.pt' or '.pth' with pytorch rather than pickle
2020-12-21 11:51:10 -07:00
7c7f13faf5 step version strings for the next LAMMPS release 2020-12-21 10:21:53 -05:00
8678e82a82 Merge pull request #2530 from akohlmey/collected-small-changes
Collected small changes and bugfixes for the next patch release
2020-12-21 10:04:33 -05:00
800ff0f1c2 update spelling/grammar and false positives 2020-12-20 15:02:59 -05:00
24e2166357 add missing references 2020-12-20 15:02:01 -05:00
2e33887d0b Merge branch 'master' into tgnh 2020-12-20 14:48:49 -05:00
a13f70790a spelling 2020-12-18 23:02:28 -05:00
151110f07f refactor constant vs define in edip pair styles 2020-12-18 22:55:15 -05:00
2022dc0aa9 whitespace fixes 2020-12-18 22:45:26 -05:00
9f206b471e Merge branch 'master' into collected-small-changes 2020-12-18 22:41:27 -05:00
09028b27d4 Merge pull request #2423 from jtclemm/multi_ishan
Extend multi style neighbor lists to finite-sized particles
2020-12-18 22:39:01 -05:00
384376bc51 increase precision of lj/cubic constants and document how to compute them 2020-12-18 22:33:56 -05:00
71e340a792 Adding multi+granular note in neighbor documentation 2020-12-18 17:56:51 -07:00
3641428d27 Merge pull request #2502 from jdevemy/master
Fix invalid result when dihedral quadratic angle is > pi or < -pi
2020-12-18 14:38:04 -05:00
4c7f71bef3 Merge branch 'master' into mliappy3 2020-12-18 09:16:44 -05:00
959f67962d allow to revert the pair/only setting 2020-12-17 22:59:12 -05:00
96fa85f61c alternate implementation of pair/only option (for KOKKOS and GPU) 2020-12-17 22:39:36 -05:00
de94e28c8b correct path to find liblammps.dll with Windows installer package 2020-12-17 21:48:04 -05:00
f6fa564ef2 whitespace 2020-12-17 17:43:04 -05:00
6035c53bb7 Merge branch 'master' into collected-small-changes 2020-12-17 17:41:46 -05:00
79833f9b83 Merge pull request #2521 from rbberger/python_package
Turn LAMMPS Python module into Python package
2020-12-17 17:06:03 -05:00
09023edc98 small python installation docs update 2020-12-17 16:41:18 -05:00
3e2b004d21 more use of constexpr 2020-12-17 16:01:26 -05:00
2426e6245d move static constants in pair style out of the globally included header 2020-12-17 14:03:15 -05:00
a403e209d3 use C++11 constexpr instead of C++98 const. 2020-12-17 13:00:51 -05:00
72f68f3d56 consolidate multiple factorial() function definitions into MathSpecial::factorial() 2020-12-17 12:47:04 -05:00
511a1a5395 Update comments mentioning lammps.py 2020-12-17 12:13:06 -05:00
bcb89a1d90 Honor DESTDIR for packaging 2020-12-17 12:13:06 -05:00
47cdafe651 reduce size of executable/library by replacing static const int with enum 2020-12-17 12:06:44 -05:00
f9f9c37bd2 Update docs 2020-12-17 11:57:40 -05:00
527ffa79dc refactor for clarity 2020-12-17 09:34:56 -05:00
5ddeb45c0a whitespace 2020-12-17 09:25:54 -05:00
e3c3106795 fix incorrect use of MPI_Gather() 2020-12-17 09:20:38 -05:00
181b18beeb tweak epsilon for better compiler compatibility 2020-12-17 07:21:17 -05:00
ba64e7c75c simplify/improve multi-partition test 2020-12-17 07:20:53 -05:00
a1b7d263c2 Modify the expresion of Tersoff Potential to include Tersoff/shift 2020-12-17 11:08:00 +02:00
b36363e0fb Merge pull request #2505 from akohlmey/collected-small-changes
Collected small changes
2020-12-16 23:24:07 -05:00
ed0f045465 Merge pull request #2515 from PabloPiaggi/patch-1
Update temp/csvr manual
2020-12-16 23:18:54 -05:00
f7e0bd45f3 Merge pull request #2520 from akohlmey/add-pgi-preset
Add a CMake preset and some workarounds for using PGI (Nvidia) compilers with LAMMPS
2020-12-16 21:30:04 -05:00
a01b376391 Energy conservation for non-zero lambda3 2020-12-17 03:31:59 +02:00
21f1fae60e FFT changes for KOKKOS 2020-12-16 15:05:38 -07:00
dd8d0f17ed Merge pull request #2522 from yafshar/kim_improvement
Kim improvement
2020-12-16 12:45:30 -05:00
2ac91eb75c Merge pull request #2523 from srtee/master
build_one() should update parent of skiplist
2020-12-16 12:16:29 -05:00
f434797a3e Modify Tersoff/shift as a derived class 2020-12-16 16:30:16 +02:00
0e6e1b6de1 Update the mode to FATAL_ERROR when CURL not found 2020-12-16 07:53:37 -06:00
f614aa401e build_one() update parent skiplist
if an occasional skip list has an occasional parent list, the parent list must be built when the skip list is built. This patch ensures that behavior. (Otherwise, build_one(foo) returns an empty skip list with no warnings or errors.)
2020-12-16 15:42:10 +10:00
21c3a51557 skip unsupported GCC pragma 2020-12-15 20:47:40 -05:00
8fc2c13f8d add PGI compiler version detection 2020-12-15 20:47:20 -05:00
6671e7ba3c relax some more unittest thresholds to reduce failures with crappy compilers 2020-12-15 20:37:14 -05:00
7a9d6611d9 add false positive 2020-12-15 20:36:27 -05:00
3103fe85f6 Update Python_module.rst 2020-12-15 19:16:29 -05:00
ac203b3683 Keep numpy imports inside of functions 2020-12-15 18:50:38 -05:00
ccb304fa13 Remove deprecated PyEval_InitThreads() not needed by Python > 3.6 2020-12-15 18:23:40 -05:00
a575662d5c flip sign within FFT3d itself 2020-12-15 16:08:32 -07:00
162d34d168 Update Python coverage tests 2020-12-15 17:58:41 -05:00
9f8b42acca Add extra unit tests and uncomment the kim_query tests 2020-12-15 16:31:23 -06:00
94cbee7710 Document the cmake KIM_EXTRA_UNITTESTS option
Document KIM_EXTRA_UNITTESTS option and it's pre-requisites.
2020-12-15 15:50:15 -06:00
47d18c9f90 Add KIM_EXTRA_UNITTESTS option
Add KIM_EXTRA_UNITTESTS option which defaults to OFF
and can be enabled on request to add a corresponding
pre-processor define to do extra tests.
2020-12-15 15:48:49 -06:00
33f9a29639 Split core.py into more files 2020-12-15 16:33:21 -05:00
df58a1fc5f Update the eflag_global & eflag_atom
Update the eflag_global & eflag_atom use based on
the flag use in LAMMPS.
2020-12-15 15:22:24 -06:00
9e188a3818 Clean up imports 2020-12-15 16:19:23 -05:00
b390c1e3d3 Split lammps.py into core.py and pylammps.py 2020-12-15 16:15:16 -05:00
588198c5dd Add --embed to python-config for legacy build
Newer versions of Python (v3.9) do not include the python library
in their python-config --ldflags unless you also pass --embed.
2020-12-15 16:10:52 -05:00
aca2eefce5 Transform LAMMPS Python module into package
- Moves lammps.py into its own package
- Imports entire module in __init__.py
- Changes both how legacy and CMake build systems install
- Added traditional setup.py for Python-only installation

Note: the CMake install target runs setup.py build and install
in a way that produces files in CMAKE_BINARY_DIR/python instead
of python/build. This is to maintain out-of-source compilation
support.
2020-12-15 15:11:21 -05:00
2a763d1713 PythonCommands test fails without exceptions enabled 2020-12-15 15:00:31 -05:00
fcf39b613a make fix phonon use of FFTs compatible 2020-12-15 12:36:02 -07:00
65dc5c0351 work around PGI compiler issues 2020-12-15 14:32:18 -05:00
f7dc7e3f3f add preset for use with PGI compilers (tested with version 20.11) 2020-12-15 14:31:40 -05:00
4c09549bbd more changes to pppm/disp and pppm/dipole 2020-12-15 12:25:08 -07:00
3dea3188aa Added a simple neural network potential 2020-12-15 12:14:03 -07:00
a7fa4739f5 update reference 2020-12-15 11:39:14 -05:00
40d260dcc6 Remove word kinetic 2020-12-14 18:45:46 -05:00
4b69693b89 correct/improve warning messages related to per-atom properties 2020-12-14 18:24:50 -05:00
231b40995f work around dump output issues with TAD 2020-12-14 17:49:12 -05:00
1fee2add51 Merge pull request #2518 from ellio167/bump-kim-api-2.2.1
update for kim-api-2.2.1
2020-12-14 17:17:52 -05:00
ac36fb8290 must not use MPI_COMM_WORLD to be compatible with multi-partition runs 2020-12-14 15:53:21 -05:00
17f8aed268 must not use MPI_COMM_WORLD inside of LAMMPS. value of "me" is already computed. 2020-12-14 13:03:16 -05:00
65d1594474 Fix typo and adjust grammar 2020-12-14 08:39:27 -05:00
7f29c56c8f update for kim-api-2.2.1 2020-12-14 00:03:59 -06:00
524302e6e6 whitespace 2020-12-13 00:07:48 -05:00
623f674ee5 Merge branch 'master' into collected-small-changes 2020-12-13 00:07:24 -05:00
acce3c265a use C++ string operations 2020-12-13 00:00:15 -05:00
b53f37a9ac fix typo 2020-12-12 23:43:11 -05:00
d913b5fadf Fix Kokkos performance regression for small systems 2020-12-11 08:46:26 -07:00
dbdb108512 update temp/csvr manual 2020-12-10 15:18:48 -05:00
73db18d3ed add citation information 2020-12-10 15:33:24 +02:00
946dae583b add author information 2020-12-10 15:18:56 +02:00
6078d22405 Shifted Tersoff Potential 2020-12-10 14:02:31 +02:00
57032c661d Merge pull request #1 from lammps/master
update the forked repository
2020-12-10 03:55:35 +02:00
bf0acf9581 Tried to distinguish MLIAP package with Python support from PYTHON package 2020-12-09 17:38:31 -07:00
8f10691ae6 Added link to on-line build info 2020-12-09 17:33:29 -07:00
b8a7edfaa1 Tried to distinguish MLIAP package with Python support from PYTHON package 2020-12-09 17:27:20 -07:00
4964a56974 Tweaked build instructions 2020-12-09 17:12:35 -07:00
56feb03b38 Edits to README 2020-12-09 16:51:36 -07:00
cc222791a5 use variables to infer filenames from original .pyx source 2020-12-09 10:47:06 -05:00
f7e0fbf064 update MLIAP readme files 2020-12-09 10:28:40 -05:00
50a9ac92a7 update docs for MLIAP some more 2020-12-09 10:28:27 -05:00
ddcd5a3c2e small CMake tweaks and cleanups 2020-12-09 10:28:12 -05:00
c4ee2f2e42 don't need Python interpreter for compiling the PYTHON package 2020-12-08 00:28:16 -05:00
5b6b327a5d fix CMake errors 2020-12-08 00:04:54 -05:00
33888ec345 Merge pull request #2507 from ohenrich/user-cgdna
USER-CGDNA: Introduced ellipsoid pointer in quaternion data access
2020-12-07 18:35:05 -05:00
77168b5105 delete hack 2020-12-07 18:32:11 -05:00
161fdbd7ec whitespace 2020-12-07 18:30:41 -05:00
1e8391b324 Merge branch 'master' into mliappy3 2020-12-07 18:30:21 -05:00
9feb7414f1 Merge pull request #2510 from athomps/wurtzite-error
Fixed error in Wurtzite script and added more explanation
2020-12-07 18:20:15 -05:00
2ccb39b54c doc updates 2020-12-07 18:08:13 -05:00
3eb22e2406 cleanup and compilation for python off 2020-12-07 17:47:21 -05:00
280c19cf32 rename CMake configuation variable to MLIAP_ENABLE_PYTHON to be more consistent with other packages 2020-12-07 17:46:54 -05:00
3f5a896aab update build system to make it auto-adapt to include python support or not into MLIAP 2020-12-07 17:35:10 -05:00
d350f46a2c Fixed error in Wurtzite script and added more explanation 2020-12-07 09:22:34 -07:00
fd37abd649 fix typo flagged by compiler warning 2020-12-07 01:45:27 -05:00
1695bf3d67 silence compiler warnings and correct issues with energy/virial accumulators
- must not zero global accumulators from Pair class (already done by parent)
- must add not set accumulated values
2020-12-07 01:09:24 -05:00
36c2947de7 silence compiler warnings 2020-12-07 01:06:47 -05:00
3ed41295cd Tweaked build instructions 2020-12-04 15:01:39 -07:00
ed7775f083 Added blessed log files 2020-12-04 14:48:02 -07:00
2654aca658 Added blessed examples 2020-12-04 14:04:35 -07:00
851f0775f1 Fixed spelling errors 2020-12-04 11:59:01 -07:00
fddf80b972 further changes to pppm/disp for sign flip 2020-12-04 11:01:36 -07:00
d1422aa109 Removed MLIAPPY package from docs 2020-12-03 19:46:19 -07:00
05bd2c5375 Added some author credits 2020-12-03 19:37:07 -07:00
36a5e9d20e Added some author credits 2020-12-03 19:36:52 -07:00
3c34bdfded Updated the build files 2020-12-03 19:04:53 -07:00
16f11f3421 Moved all mliappy files in to src/MLIAP and examples/mliap 2020-12-03 18:40:01 -07:00
664ed0f850 Merge remote-tracking branch 'origin/mliappy2' into mliappy3 2020-12-03 17:37:26 -07:00
973382295b Clean up file 2020-12-03 16:47:27 -07:00
42e8bfbcaf first step to flip sign of FFTs 2020-12-03 10:28:03 -07:00
90f00c01a4 Introduced ellipsoid pointer in quaternion data access 2020-12-03 12:57:55 +00:00
c332b5ff09 bugfix when no constraints 2020-12-02 13:02:10 -05:00
bffd87a84f clarify docs 2020-12-02 13:02:10 -05:00
64f7ea6c38 docs for boolean constraint logic 2020-12-02 13:02:09 -05:00
1e5611f776 finally, add the logic eval 2020-12-02 13:02:09 -05:00
855cf2146f set for boolean constraint logic 2020-12-02 13:02:09 -05:00
63e8c83599 refactor constraints array into per-rxn 2020-12-02 13:02:09 -05:00
8df26f551e clean constraints refactor 2020-12-02 13:02:09 -05:00
3a07eef523 refactor dihedral constraint 2020-12-02 13:02:09 -05:00
2af32741fd refactor angle constraint 2020-12-02 13:02:09 -05:00
04e586c83d refactor distanace constraint
NOTE: messes up angle and dihedral constraints!
2020-12-02 13:02:09 -05:00
0de8f829f3 refactor Arrhenius constraint 2020-12-02 13:02:09 -05:00
29667da947 refactor RMSD constraint 2020-12-02 13:02:09 -05:00
206bc93026 bond/react:refactor constraint framework
constraints are now an array of Contraint structs
2020-12-02 13:02:09 -05:00
71827f0099 update pair meam/spline docs to reflect limitations of the implementation
this closes #2500
2020-12-01 19:06:54 -05:00
63d8182ff3 fix spelling 2020-12-01 19:06:09 -05:00
6ac481409a remove temporary flag for using the new pip resolver which is now the default 2020-12-01 19:04:43 -05:00
5a00d3c157 Fix invalid result when dihedral quadratic angle is > pi or < -pi 2020-12-01 09:21:12 +01:00
97b77e0f13 Added preprocessor flag 2020-11-30 19:29:28 -07:00
280c2258c7 Trying to recover from README merge conflict 2020-11-30 16:20:28 -07:00
5ea9d97024 Merge pull request #2498 from rbberger/next_lammps_version
Step version string for next LAMMPS release
2020-11-30 17:58:01 -05:00
cec3e08569 Merge pull request #2499 from rbberger/small_changes
Small changes before next release
2020-11-30 17:57:35 -05:00
302d024909 Make reaxc test case less sensitive 2020-11-30 17:03:10 -05:00
85a69cedcf whitespace 2020-11-30 15:40:32 -05:00
b5d43f1570 Merge branch 'master' into small_changes 2020-11-30 15:39:25 -05:00
cf608d221c Merge pull request #2436 from stanmoore1/eam_tweaks
Kokkos EAM tweaks for V100
2020-11-30 15:38:16 -05:00
c6eed8c3e1 Merge pull request #2497 from stanmoore1/kk_update_3.2.1
Update Kokkos library in LAMMPS to v3.2.1
2020-11-30 15:37:55 -05:00
40dd4e57fb Merge pull request #2467 from jrgissing/bond/react-delete_atoms_bugfix
Bond/react: molecule keyword + bugfixes
2020-11-30 15:35:14 -05:00
ce3c92d52e Avoid duplicate doc target 2020-11-30 14:55:35 -05:00
14f691f0af Add support for NVIDIA OpenCL in Ubuntu gpu containers 2020-11-30 14:46:24 -05:00
a67c4d8d05 Fix Kokkos verison 2020-11-30 12:23:33 -07:00
0f27ba34b0 whitespace 2020-11-30 13:33:09 -05:00
5ffba2d2fa step version string for next LAMMPS release 2020-11-30 13:27:35 -05:00
ec7d3dd84c Add tweak suggested by @weinbe2 to reduce memory reads 2020-11-30 11:21:16 -07:00
369197fd5e Update KOKKOS.cmake 2020-11-30 10:55:40 -07:00
e2e86bbffa Merge pull request #2486 from tomswinburne/master
Very minor bug fix for NEB
2020-11-30 12:55:21 -05:00
e0c87fc0b6 Merge pull request #2419 from akohlmey/reset-invalid-image-flags
Reset invalid image flags on read_data
2020-11-30 12:53:50 -05:00
a6037a957f Update Kokkos library in LAMMPS to v3.2.1 2020-11-30 10:36:13 -07:00
91f21fcd9e Merge pull request #2487 from akohlmey/collected-small-changes
Collected small changes and fixes
2020-11-30 11:36:23 -05:00
7edc34f81c Merge pull request #2495 from auroraustc/fix-fortran2-build
add LAMMPS_LIB_MPI flag to COUPLE-fortran2
2020-11-29 21:25:33 -05:00
7555c82c09 Merge pull request #2492 from lammps/balance-neigh-skin
separate cut planes by neigh skin for balance shift
2020-11-29 17:05:27 -05:00
f58d87b3ec Merge pull request #2478 from rbberger/python_interface_coverage
Add Python unit tests to increase test coverage
2020-11-29 15:19:42 -05:00
bddbc516b5 Merge branch 'master' into collected-small-changes 2020-11-29 12:26:30 -05:00
a5858e350c Merge pull request #2488 from ellio167/kim-api-2.2
Update KIM.cmake for kim-api-2.2.0
2020-11-29 12:17:29 -05:00
357e1de919 Merge pull request #2477 from yafshar/kim_improvement
Misc. KIM updates
2020-11-29 12:17:17 -05:00
76f43f4c57 Merge pull request #2440 from evoyiatzis/bond_gaussian
Bond & angle styles gaussian
2020-11-29 10:13:51 -05:00
db3991a09d Merge pull request #2391 from jstewa-snl/master
Added an electronic stopping fix to USER-MISC
2020-11-29 01:01:55 -05:00
5fb90694eb add LAMMPS_LIB_MPI flag to COUPLE-fortran2 2020-11-28 17:38:29 +08:00
62f5f3a3b8 fix whitespace 2020-11-27 15:17:39 -05:00
5af15984e5 fix typos and remove false false positive 2020-11-27 15:16:32 -05:00
b162961b84 remove unbundled potential file (again) 2020-11-27 15:16:04 -05:00
1dee2debfd Comment the model due to an 2020-11-27 11:59:24 -06:00
8df0ee0dfa make new warning more gentle 2020-11-27 12:15:31 -05:00
fcf5f34a49 memory fix 2020-11-27 12:08:09 -05:00
5c5e55b11d Update the kim model name 2020-11-27 09:10:42 -06:00
35f2c9bdf2 Several improvements to capabilities and build.
- cmake fixed, no longer needs numpy headers.
- models can be loaded from an external interepreter.
2020-11-26 12:40:28 -07:00
3601be6ceb Update the list of include statements, for classes derived from Pointers 2020-11-26 10:40:17 -06:00
dde42a5bd0 updated pbc correction 2020-11-26 16:10:58 +01:00
2bb05d6f89 Minor edits in Developer_unittest.rst 2020-11-25 17:08:39 -05:00
d5d151f34d complete first draft of unit test documentation 2020-11-25 16:51:44 -05:00
f05a53cb9a whitespace (again) 2020-11-25 16:51:43 -05:00
82703e5bac update fmtlib to version 7.1.3 2020-11-25 16:51:43 -05:00
2868f37304 update keyword summary 2020-11-25 16:51:43 -05:00
b9f5de3ca0 update URLs in README file 2020-11-25 16:51:43 -05:00
f0e4f9932f whitespace fixes 2020-11-25 16:51:43 -05:00
7f6638b681 more unittest docs 2020-11-25 16:51:43 -05:00
583d3823d8 address spelling issues 2020-11-25 16:51:42 -05:00
a8275e0e51 fix issues with compute stress/atom docs 2020-11-25 16:51:42 -05:00
2b6c995e12 more unittest docs 2020-11-25 16:51:42 -05:00
bbe50ab5c1 more documentation for adding unittest 2020-11-25 16:51:42 -05:00
2a8cc331e7 add test for "newton" command to match the c-library interface tests 2020-11-25 16:51:42 -05:00
27144ce0dd more details about mass and time units when using reduced units 2020-11-25 16:51:42 -05:00
569a000e6b reformat unittest sources with clang-format 2020-11-25 16:51:41 -05:00
a8b60848c3 small updates. 2020-11-25 16:51:41 -05:00
36ae363b8b Start section in the programmer guide describing how to add unit tests 2020-11-25 16:51:41 -05:00
9d7319dd2b whitespace fixes 2020-11-25 16:51:41 -05:00
800fb167f4 fix small render issue 2020-11-25 16:51:41 -05:00
849e5ffee2 add option to extract newton_bond/newton_pair settings 2020-11-25 16:51:37 -05:00
f2dca6d08e complete integration into document build and add a few format fixes 2020-11-25 16:12:27 -05:00
5e75b8d58c Merge branch 'master' into jstewa-snl/master 2020-11-25 16:04:38 -05:00
6932426973 update src/USER-MISC/README 2020-11-25 15:59:08 -05:00
4bf7ba5016 address documentation link, spelling, and characterset issues 2020-11-25 15:57:18 -05:00
abdfcceab2 Merge branch 'master' into bond_gaussian 2020-11-25 15:50:54 -05:00
6b9cbd91bc Merge pull request #2485 from stanmoore1/kk_reax_tweaks
Kokkos ReaxFF tweaks
2020-11-25 15:13:20 -05:00
ec662a41de Merge branch 'master' of github.com:lammps/lammps into kk_reax_tweaks 2020-11-25 10:38:07 -07:00
79be140633 move doc file to correct dir 2020-11-25 08:12:57 -07:00
c497cf1a6d Merge branch 'master' into python_interface_coverage 2020-11-25 09:45:51 -05:00
c247a4f709 More adjustments 2020-11-24 21:06:27 -06:00
8faee10da5 Hack to work with preinstalled kim-api-2.1.3 2020-11-24 20:37:17 -06:00
23f9a76469 Merge branch 'master' into kim-api-2.2 2020-11-24 14:59:32 -05:00
7cb644b425 Merge pull request #2491 from rbberger/evflag_corrections
Collected small changes and fixes
2020-11-24 14:46:00 -05:00
109cee1ce1 Doc string update for Pair::ev_setup() 2020-11-24 14:24:53 -05:00
c7d8e93f5a Add missing init of virial 2020-11-24 13:55:10 -05:00
af0df870f4 Fix bug introduced by uninitialized moloffset 2020-11-24 13:55:10 -05:00
1769f1d3a1 separate cut planes by neigh skin for balance shift 2020-11-24 09:06:15 -07:00
c3e012c70c KIM.cmake changes to support 2.1.3 kim-api too 2020-11-23 16:53:25 -06:00
0f3b0eabd3 Adjust KIM.cmake to continue to work with kim-api < 2.2.0 2020-11-23 16:42:58 -06:00
3c79bf7d0f updated to new version of lammps-master 2020-11-23 11:36:46 -08:00
7aa45ea816 Add numpy variants of extract_variable tests 2020-11-23 14:14:29 -05:00
d59aba43e7 Merge pull request #2469 from yafshar/kim
Fix a bug in pair_kim
2020-11-23 14:11:50 -05:00
ebf3c180c2 Add unit test for extract_global (LAMMPS_DOUBLE) 2020-11-23 13:43:15 -05:00
2ce10cc435 Add unit test for get_thermo 2020-11-23 13:35:17 -05:00
3ddc1e680c Add unit test for extract_variable (atomstyle) 2020-11-23 13:14:15 -05:00
24d2f05f8f resolved centroidstressflag conflict 2020-11-23 10:11:53 -08:00
5ff0c3d4f0 Add unit test for extract_variable (equalstyle) 2020-11-23 13:07:00 -05:00
875057538f Fix docstring of extract_variable 2020-11-23 12:45:37 -05:00
49a1683dda Merge branch 'master' into python_interface_coverage 2020-11-23 11:47:23 -05:00
1a2911c883 Merge pull request #2420 from rbberger/mpi_tests
Add MPI-enabled unit tests (C/C++ only)
2020-11-23 10:35:55 -05:00
b8d821e1f9 Merge pull request #2481 from lammps/energy_virial_constants
Introduce enums for energy and virial flags
2020-11-23 10:35:20 -05:00
519fbcbc01 Correct the KIM objects names to be consistent, and fix their white spaces 2020-11-23 08:44:36 -06:00
15ee87fc12 Set the identity of the Log object
Set the identity of the Log object associated with different KIM
objects.
2020-11-23 08:44:35 -06:00
883c665168 Add the missing headers 2020-11-23 08:44:35 -06:00
7f6089e259 Clean up the interface, update the error messages, remove sstream and update to use the fmt::format, update the headers 2020-11-23 08:44:35 -06:00
bb77f294e8 Update the KIM_SupportStatus WARNING message to only appear on master node 2020-11-23 08:44:35 -06:00
b0d2e4c135 Update the vflag_atom based on the intended use in LAMMPS 2020-11-23 08:44:31 -06:00
3f31c69216 Update the vflag_atom based on the intended use in LAMMPS 2020-11-23 08:33:19 -06:00
968ca6f7ba Add missing updates to conventional build system 2020-11-22 02:40:17 -06:00
e1835250c7 missing brace 2020-11-20 13:51:08 -07:00
0623817afe Updated README 2020-11-20 11:47:31 -07:00
cbde5619b0 leave placeholder for KSpace in compute centroid/stress/atom 2020-11-20 10:51:33 -07:00
2d69051cdf add documentation for sublo/subhi extracted flags. add corresponding entries to get data type. 2020-11-19 19:24:36 -05:00
f42e907d30 update terminology 2020-11-19 19:06:33 -05:00
371b1a80e3 add support for '-in none' for multi-partition runs from the library interface 2020-11-19 18:58:21 -05:00
9306f8a905 Merge pull request #111 from lammps/master
rebase
2020-11-19 15:29:08 -05:00
7ec7430c6e Update KIM.cmake for kim-api-2.2.0 2020-11-19 13:29:16 -06:00
dba84be75a Update false_positives.txt 2020-11-19 13:52:58 -05:00
7450d9547a add tests for accessing world/universe size and rank with different MPI settings 2020-11-19 13:52:26 -05:00
6acc69ddd2 reformat with clang-format 2020-11-19 13:51:32 -05:00
2a765efc8c bond/react: update map file section
retain old section title for backwards compatibility
2020-11-19 13:50:30 -05:00
c7247aaaaf provide access to universe and world size and rank information. and number of OpenMP threads 2020-11-19 13:49:10 -05:00
949274a2a4 refactor handling of partition arguments so it does not modify the string passed 2020-11-19 13:48:28 -05:00
5aff81946b bond/react: update examples with new keyword 2020-11-19 13:48:11 -05:00
3d7fd453c3 allow extracting variables that are not atom or equal style compatible 2020-11-19 13:47:23 -05:00
aa129bc218 bond/react: update doc terminology
change 'bonding atoms' to 'initiator atoms'
(bonds need not form or break between initiator atoms)
2020-11-19 13:29:55 -05:00
9ea025295d need to define LAMMPS_LIB_MPI to make lammps_open() visible 2020-11-19 11:33:15 -05:00
96dece97ef Merge branch 'master' into mpi_tests 2020-11-19 11:22:58 -05:00
d1af1aa12d Merge pull request #2424 from jtclemm/restart_neigh_hist
Patching neighbor history restarts
2020-11-19 11:13:50 -05:00
96db39f08b Merge pull request #2450 from jrgissing/molecule-custom_id_order
molecule: use user-provided IDs in molecule files
2020-11-18 17:52:16 -05:00
6d0c8e71de Correct assignment of centroidstressflag 2020-11-18 17:51:04 -05:00
5691ec3dfd insure cvflag is zero, other tweaks 2020-11-18 15:05:11 -07:00
61ccccf908 Merge pull request #2462 from akohlmey/replicate-template-fixes
Preserve molecule templates when using "replicate"
2020-11-18 16:48:06 -05:00
0927e52dea cleanup dead code 2020-11-18 16:18:34 -05:00
c62c907281 doc string tweak 2020-11-18 13:02:07 -07:00
006fae0ee1 one more optimization 2020-11-18 12:52:59 -07:00
3ee6203e5a simplification to Pair::ev_setup() 2020-11-18 12:51:24 -07:00
8ca690acd3 missed one file 2020-11-18 12:22:06 -07:00
0876684780 energy/virial flags with CENTROID enum 2020-11-18 12:17:14 -07:00
95c267c21b update example with new syntax 2020-11-18 12:02:19 -05:00
9b7831dc4f rename example folder 2020-11-18 11:59:13 -05:00
aa683eca59 bond/react, create_atom: bugfix when create is aborted 2020-11-18 11:47:28 -05:00
7507773ead Merge pull request #2441 from stanmoore1/kk_fix_shake
Add Kokkos support for fix shake and forward comm on Device for fixes
2020-11-18 11:17:57 -05:00
1002383a45 Merge branch 'master' into replicate-template-fixes 2020-11-18 10:37:57 -05:00
898ffc7d80 Merge branch 'master' into reset-invalid-image-flags 2020-11-18 10:36:54 -05:00
ce9d85d11c pbc correction 2020-11-18 13:19:16 +01:00
337d47ca6c update docs 2020-11-17 22:46:42 -05:00
1931cfa56a add 'near' keyword 2020-11-17 22:18:08 -05:00
c4bf7766fe refactor insert_atoms 2020-11-17 21:37:00 -05:00
400812c4f1 refactor where/when atoms are insert, set up for near keyword 2020-11-17 21:06:47 -05:00
21e495d5ec bond/react: update modify_create syntax
now, allows for multiple sub-keywords
2020-11-17 14:47:50 -05:00
a40301bc21 Clean up the interface, remove sstream and update to use the fmt::format, update the headers, remove the unnecessary echo function 2020-11-17 11:15:54 -06:00
86d3761ec5 Remove the unnecessary echo function 2020-11-17 11:14:56 -06:00
90b06781db Remove the unnecessary if condition and update the echo 2020-11-17 09:33:46 -06:00
56bf60dd9e Clean up and update to use fmt::format when possible 2020-11-17 08:36:42 -06:00
fc140af115 Add the missing header file, and remove unnecessary fclose 2020-11-17 08:27:18 -06:00
4e2a1efdf9 Fix the white space and indentation 2020-11-17 08:19:35 -06:00
3d28f5d610 make NH propagation a const method 2020-11-17 13:51:38 +01:00
0f0188d7bf Fix BIGBIG build 2020-11-17 13:45:58 +01:00
6ff269b1eb Kokkos ReaxFF tweaks 2020-11-16 15:49:37 -07:00
64910d636c Merge pull request #2464 from iafoss/patch-1
bug fix in pair_mesont_tpm.cpp
2020-11-16 16:48:18 -05:00
35035189e6 Replace a few more 2s with VIRIAL_FDOTR 2020-11-16 16:36:06 -05:00
f6a1352be3 Update remaining lines 2020-11-16 16:23:30 -05:00
251dcdf8a2 Make use of ENERGY_ and VIRIAL_ constants 2020-11-16 15:33:15 -05:00
145d688fa4 clairfy docs 2020-11-16 15:09:17 -05:00
bf34112672 Init nullptr 2020-11-16 20:36:29 +01:00
746655ed2e Undo more changes to make values match new constants 2020-11-16 11:52:42 -05:00
c3b9a30b8a Minor fix for molecular DOF calculation. Update doc. 2020-11-16 17:23:53 +01:00
5ce536f2e9 Update constant names 2020-11-16 11:03:18 -05:00
1ba9dd7435 Apply CENTROID_* constants 2020-11-16 11:01:31 -05:00
c0f3697d9e Undo value changes for CENTROID constants 2020-11-16 10:51:56 -05:00
f3bc76d6a4 Add CENTROID enum and rename some constants 2020-11-16 10:35:42 -05:00
dd23db9369 standardize flags for energy/virial computations in forces 2020-11-16 08:13:33 -07:00
348afb6867 correct cutsq check in proper place 2020-11-14 17:27:49 -05:00
d287e11610 clarify docs 2020-11-14 16:04:39 -05:00
8b9f2e0539 molecule: add atom ID completeness check 2020-11-14 15:51:26 -05:00
8e3a556461 Merge pull request #109 from lammps/master
rebase
2020-11-14 13:52:16 -05:00
af179f9901 yaml file for angle gaussian 2020-11-14 17:20:13 +01:00
af785039f4 Update docs for TGNH 2020-11-14 17:08:26 +01:00
80d9b22105 yaml file for bond gaussian 2020-11-14 16:52:26 +01:00
4de5b1b612 Added README explaining how to run cythonize 2020-11-13 16:30:05 -07:00
aaae3da12a Update comment 2020-11-13 17:52:37 -05:00
4b136d9eeb Merge pull request #2482 from stanmoore1/kk_fft_bugfix
Fix memory bug in Kokkos KISS FFT
2020-11-13 17:45:59 -05:00
4a8c458634 Update comment 2020-11-13 17:21:41 -05:00
7500d902da Shorten constant names and move to force.h 2020-11-13 17:15:40 -05:00
bfd71f330b Simplify other AtomStyles tests 2020-11-13 17:03:52 -05:00
5d79ba12d7 Use macro for better message during failure 2020-11-13 15:14:40 -05:00
a48f463faf Fix memory bug in Kokkos KISS FFT 2020-11-13 13:12:50 -07:00
504e675023 Splitting up long test methods 2020-11-13 13:21:49 -05:00
76e3639db2 Set molindex_flag and molatom_flag 2020-11-13 13:11:50 -05:00
e6c844d719 Simplify template and template_charge test cases 2020-11-13 13:11:16 -05:00
00557e00a4 Add AtomState struct and ASSERT helpers 2020-11-13 12:35:25 -05:00
bb52af9a07 revert cutoff check
temporary fix for hybrid pair style
2020-11-13 00:51:48 -05:00
c013e6db10 revert cutoff check
add temporary fix for hybrid pair_style
2020-11-13 00:50:01 -05:00
75608feb55 cleaned pair_agni.cpp 2020-11-12 20:19:13 -08:00
a3ce72c1b2 actually correct image flag fix
hopefully
2020-11-12 23:07:36 -05:00
d6ff8dec62 updated pair_agni.cpp 2020-11-12 17:29:24 -08:00
2c4e4a469a Added updated AGNI files 2020-11-12 17:10:11 -08:00
ebf8fd3a84 Added updated AGNI files 2020-11-12 17:09:45 -08:00
a2d7def363 Merge pull request #2410 from julient31/exchange-biquadratic
Adding a new pair style in SPIN package
2020-11-12 15:58:16 -05:00
d5169a9dc2 Add Python unit tests for extract_box and reset_box 2020-11-12 12:29:13 -05:00
fb00fc6646 correct image flags in example data file
bond/react, create_atoms
2020-11-12 12:21:05 -05:00
6740f8dbab Fix the compatibility issue with latest LAMMPS. Add examples. 2020-11-12 18:12:23 +01:00
bd19cf73eb bond/react, create_atoms: correct image flag fix 2020-11-12 12:01:59 -05:00
47a5d47582 Merge branch 'exchange-biquadratic' of https://github.com/julient31/lammps into exchange-biquadratic 2020-11-12 09:45:03 -07:00
497f0dd593 Removing binder and m2,m4 declarations from compute/spin 2020-11-12 09:43:38 -07:00
aadc668771 Fix pair_spin_exchange doc page title 2020-11-12 11:04:11 -05:00
c407d547cd Whitespace 2020-11-12 10:54:20 -05:00
e7ccbd0ce6 Replace NULL with nullptr 2020-11-12 10:44:04 -05:00
3991f704e1 Fix whitespace errors 2020-11-12 10:42:09 -05:00
724a9978c8 Merge branch 'master' into exchange-biquadratic 2020-11-12 10:39:10 -05:00
b3181a1fa3 Merge pull request #2476 from akohlmey/download-libyaml
Add CMake code to download and compile a suitable version of libyaml in case it is not found locally
2020-11-12 10:25:39 -05:00
edb09b8bdd Merge pull request #2474 from GenieTim/master
Fix typos in documentation
2020-11-12 10:25:22 -05:00
39bc47a4da Fix inconsistent formatting in Error & Warning doc 2020-11-12 13:35:04 +01:00
f24320d26a Introduce enums for energy and virial flags 2020-11-11 22:09:03 -05:00
9d4ed1a201 bond/react, create_atoms: image flag fix 2020-11-11 21:47:04 -05:00
b5c2dac6e6 bond/react, create_atoms: fix bug in parallel 2020-11-11 20:55:47 -05:00
20159fff23 reformulate section about resetting image flags and add reference to change_box command 2020-11-11 17:01:56 -05:00
a96cb43957 Merge branch 'master' into reset-invalid-image-flags 2020-11-11 16:15:11 -05:00
fdd7ecd9d9 bond/react, create_atoms: correctly update molecule IDs 2020-11-11 14:08:35 -05:00
64cc0adb9e bond/react: add new reference 2020-11-11 13:27:34 -05:00
d09eb491f8 molecule: add iatom < 0 check 2020-11-11 13:00:10 -05:00
c0a101192e Merge pull request #2471 from akohlmey/collected-small-changes
Collected small fixes and updates
2020-11-11 11:20:32 -05:00
2f21ef6322 Merge pull request #2466 from rbberger/bugfixes
Collection of bugfixes
2020-11-11 11:19:52 -05:00
5157b8216a Merge branch 'kim' into kim_improvement 2020-11-11 05:42:12 -06:00
355ddce286 Update the vflag_atom based on the intended use in LAMMPS 2020-11-11 05:36:48 -06:00
420b0c4a22 Update the error message 2020-11-10 19:14:33 -06:00
47be98ca77 Adding the missing header file 2020-11-10 19:13:53 -06:00
c76eb66286 Update the EXPECTT_TRUE to ASSERT_TRUE 2020-11-10 17:06:42 -06:00
552dc7fba9 whitespace 2020-11-10 18:05:06 -05:00
2aa26a1b8f Update the kim_query assertions 2020-11-10 17:04:58 -06:00
2c6ccf0d0f update docs for download and compilation of yaml sources 2020-11-10 18:04:00 -05:00
2f3cbfed13 add CMake code to download and compile libyaml if not found locally 2020-11-10 17:58:26 -05:00
39c5f63a0d Remove the unnecessary delimiter and fix the code accordingly 2020-11-10 16:49:58 -06:00
03d090c860 Replace tabs with white spaces, correct the indentation, header inclusion, formatting 2020-11-10 16:48:56 -06:00
12011cdca3 Commenting the extra tests that need network access 2020-11-10 16:25:50 -06:00
7fcd7638f7 Update the kim_query unittest with several cases 2020-11-10 16:24:43 -06:00
98fb095ae9 Update the kim_query
-Clean up the interface and remove the unnecessary function.
-Update the error messages to be more expressive in case of a mistake.
-Update the interface and remove the strtok to be compliant with LAMMPS.

Now, kim_query can also be used with LAMMPS variable replacement, where
the variable is a LAMMPS variable string without quotation marks around it.
2020-11-10 16:18:40 -06:00
884acd34e5 Clean up the interface and remove the unnecessary function 2020-11-10 16:18:31 -06:00
d1ce362fca Remove wrong word 'regoin' from false positive list 2020-11-10 17:15:42 +01:00
2c65df1bc2 Revert typo fix in python due to auto-formatter changing too much 2020-11-10 16:29:02 +01:00
22e6d8283e Merge branch 'master' of github.com:GenieTim/lammps 2020-11-10 14:22:52 +01:00
4be2a99977 Fix casing of the word GitHub 2020-11-10 14:20:52 +01:00
ad56e0ca9f Fix casing of the word 2020-11-10 14:16:12 +01:00
eae9fea026 Consistently use instead of 2020-11-10 14:04:49 +01:00
5aae2cb44d Fix typo in Howto Walls 2020-11-10 14:03:16 +01:00
2acb0aaedd fix typo that has propagated to multiple pair style doc files 2020-11-10 05:00:56 -05:00
6ece19f919 Update fix_bond_react.rst 2020-11-09 16:29:52 -05:00
df672fe7d4 Correcting indentation issue in pair_spin_dmi.cpp 2020-11-09 12:42:12 -07:00
f6975bf4eb also add molecule_keyword to close_partner, for consistency 2020-11-09 14:10:41 -05:00
958ab461b3 bond/react:molecule keyword docs 2020-11-09 14:06:17 -05:00
91d9cf97f3 bond/react:add molecule keyword 2020-11-09 13:47:29 -05:00
d55eeefc32 Undo change in library interface breaking compatibility 2020-11-09 13:47:27 -05:00
6056171b45 Merge pull request #2451 from akohlmey/update-fmtlib
Update bundled fmtlib to version 7.1.2
2020-11-09 13:10:37 -05:00
862bf643f3 Add fix for TGNH thermostat. Copy doc file from fix nh. 2020-11-09 16:53:24 +01:00
17c14661bc port over some recent bugfixes 2020-11-09 00:18:24 -05:00
4d493fd082 relax cutoff checks
also fixes some issues when using hybrid pair styles
2020-11-09 00:05:20 -05:00
badbb411eb ringed structures bugfix
previously,  atoms at 'end' of symmetric ring could behave like edge atoms
2020-11-08 22:59:45 -05:00
773a31a628 improve read_dump and rerun documentation. mention that native binary dumps are not supported 2020-11-06 17:30:08 -05:00
c68829f17d update granular pair style example to comply to tighter history fix requirements 2020-11-06 17:17:18 -05:00
c2b9b6d57b fix bug using the wrong flag variable and print warning only if a change was made 2020-11-06 17:14:48 -05:00
ce5f7b76e8 Remove the error message end dots to be compliant with LAMMPS 2020-11-06 15:42:21 -06:00
8698d6661a minor clean up 2020-11-06 15:14:52 -06:00
24dff7f136 Fix the KIM_SET_TYPE_PARAMETERS routine
This fix prevents the failure when the commented line does not start from
char 0. It trims anything from '#' onward and if the line is blank continue
to the next line.
2020-11-06 15:11:10 -06:00
5b4de087dd Clean up the code and improving the error messages 2020-11-06 15:09:41 -06:00
7c1634e57f Squashed commit for MLIAPPY package
Includes CMAKE install, doc updates, example files.
2020-11-06 13:12:59 -07:00
720b569790 Clean up the code and improving the error messages 2020-11-06 12:16:16 -06:00
db809d6556 Improving the error message in case of failure 2020-11-06 09:28:13 -06:00
6cb2795de6 Improving the error message in case of failure 2020-11-06 09:27:56 -06:00
2777e690f0 clean up the code, and remove unnecessary else conditions 2020-11-05 14:19:48 -06:00
c7b02b5bb2 Fix a bug in pair_kim for per-atom virial
This results in wrong computation of stress/atom in LAMMPS. The
issue happens after the PR #1704, where the `vflag_atom` is updated
from `vflag_atom = vflag / 4;` to `vflag_atom = vflag & 4;` and
causes paasing the wrong pointer to the KIM-API.
2020-11-05 14:12:42 -06:00
207831d7a0 corrected mistake with the link 2020-11-05 19:50:54 +00:00
4f3e693b4a Delete README 2020-11-05 12:50:41 -07:00
16b734a794 Updated fix_electron_stopping.rst with fix_electron_stopping_fit information 2020-11-05 12:40:55 -07:00
100229334e Updated fix_electron_stopping.rst with fix_electron_stopping_fit information 2020-11-05 12:38:41 -07:00
4ac183ff77 Updated fix_electron_stopping.rst with fix_electron_stopping_fit information 2020-11-05 12:35:18 -07:00
a04faff152 Merge branch 'master' of github.com:lammps/lammps 2020-11-05 10:03:06 -07:00
24aafc024b moved the potential to user-misc 2020-11-05 16:26:45 +00:00
129807cb7a created the pair style files 2020-11-05 16:03:38 +00:00
33881917f7 Updated the user-misc readme 2020-11-05 15:59:15 +00:00
30d976d175 added the pair to pairs style doc 2020-11-05 15:57:35 +00:00
7ad8a9f103 Added the pair documentation 2020-11-05 15:29:27 +00:00
4f10ea3ef4 added the pair to the commands 2020-11-05 15:24:14 +00:00
da96833921 Merge remote-tracking branch 'lammps_upstream/stable' into adding_new_pair 2020-11-05 13:16:48 +00:00
124feffafa bond/react: add helpful hint for recurring mistake 2020-11-04 21:35:25 -05:00
cb4549e0f2 bond/react:bugfix for delete atoms feature 2020-11-04 20:31:38 -05:00
3ea395615a update fmtlib version 7.1.1 to 7.1.2 2020-11-04 10:54:20 -05:00
280e98b074 Added explicit energy updates 2020-11-03 20:26:34 -07:00
af14739541 typo 2020-11-02 22:09:55 -05:00
3e7df13203 c++11 2020-11-02 21:22:14 -05:00
4d19b8bf3a stype adjustment 2020-11-02 19:38:56 -05:00
aff54e948a eflag fix 2020-11-02 18:39:34 -05:00
559d6b10cf fix bug with memory allocation 2020-11-02 16:39:13 -05:00
62c7aca26f fix bug with memory allocation
fix bug with eatom_s, eatom_b, eatom_t allocation
2020-11-02 16:35:50 -05:00
769e7a0995 Revert "Add files via upload"
This reverts commit e664397951.
2020-11-02 16:24:57 -05:00
e664397951 Add files via upload 2020-11-02 16:12:57 -05:00
e86b4d3a78 bug fix in pair_mesont_tpm.cpp 2020-11-02 11:54:11 -05:00
c24f7acdd0 Avoid passing invalid pointer during integrator creation 2020-11-02 11:00:36 -05:00
0e8e93b2a0 Add space for readability 2020-11-02 10:59:33 -05:00
e8337fd128 Safeguard against possible string overflow 2020-11-02 10:52:59 -05:00
7020418589 update fmtlib version 7.1.0 to 7.1.1 2020-11-02 10:31:46 -05:00
b6c4985745 short documentation file for the angle gaussian 2020-11-02 15:11:19 +01:00
2a672b638c Update Commands_bond.rst 2020-11-02 15:04:09 +01:00
64c5286401 Update angle_style.rst 2020-11-02 15:00:45 +01:00
cafe9c3500 source files for gaussian angle_style 2020-11-02 14:52:46 +01:00
b1de97a3cd abort with an error if Pair::single() cannot work for granular pair style 2020-11-01 16:10:16 -05:00
0b51bba75c avoid division by zero 2020-11-01 16:09:30 -05:00
4e147632be simplify call to replace_fix() 2020-11-01 16:08:57 -05:00
6e64ce7228 add Modify::replace_fix() convenience function 2020-11-01 16:05:41 -05:00
2dc80e9521 avoid crash in the case of checking an empty potential file 2020-11-01 15:19:52 -05:00
4dac7625c5 error out instead of segfaulting when calling Pair::single() on pair style granular without active history 2020-11-01 14:53:33 -05:00
66ed16760f do not allow access to rigid body properties before they are fully set up 2020-10-31 11:48:29 -04:00
980fce06de pretty 2020-10-30 13:21:01 -04:00
4435ed4870 bond/react:example for create_atoms feature
builds a polysytrene 50-mer in vacuum
2020-10-29 23:08:10 -04:00
756e979545 update DOIs for new stable release. fix URLs. 2020-10-29 21:38:01 -04:00
26a8d875e9 whitespace fix 2020-10-29 14:52:22 -04:00
f2b9db0de4 update atom style tester to test replicate for atom style template 2020-10-29 06:21:54 -04:00
c7b39283b1 need to transfer molecule templates when using "replicate" 2020-10-29 05:58:39 -04:00
584943fc92 Merge pull request #2458 from akohlmey/next_lammps_version
Step version string for next LAMMPS release
2020-10-28 19:53:36 -04:00
00ef63049a Merge pull request #2456 from akohlmey/final-changes-for-stable
Final changes for stable release
2020-10-28 18:46:51 -04:00
f55c24ff96 Merge pull request #2455 from stanmoore1/relax_NaN
Add non-numeric pressure check to fix box/relax
2020-10-28 17:37:42 -04:00
4f9ec11311 Merge pull request #2448 from akohlmey/fix-read-dump-issues
Fix a couple issues related to read dump
2020-10-28 17:15:26 -04:00
bf87c0dc56 add (incomplete) unit test for atom style template 2020-10-28 15:43:36 -04:00
9f1526c66d cannot currently use replicate command with atom style template 2020-10-28 15:42:50 -04:00
c25ef8edb0 fix segfault: must not count bonds on atoms that are not in a molecule 2020-10-28 15:11:19 -04:00
72f4650b52 Merge pull request #2460 from stanmoore1/kk_bugfix
Kokkos bugfix for pair forward comm
2020-10-28 12:46:46 -04:00
99c99e86e0 Kokkos bugfix for pair forward comm 2020-10-28 09:15:49 -06:00
94462bfb48 do not add langevin thermostat forces and torques if disabled, e.g. in 2d system.
Note that fix rigid/small does not support the force or torque options and thus
the zeroing has to be done directly when computing the langevin data.
2020-10-28 10:41:20 -04:00
d2c6c89ccc step version string for next LAMMPS release 2020-10-28 08:09:23 -04:00
94f57d8849 rephrase paragraph about availability of the manual and add note about browser compatibility 2020-10-28 04:49:09 -04:00
9a3f935c9b do not include polyfill.js anymore 2020-10-27 20:17:59 -04:00
5dc09ae3c0 increase timeout, properly handle timeouts, and fix symbol lookup in exception handling 2020-10-27 17:16:47 -04:00
6f66f5b23b Add non-numeric pressure check to fix box/relax 2020-10-27 13:55:50 -06:00
22a804e634 Fix memory issue 2020-10-27 12:25:27 -06:00
91d558310a Fix atomic issue 2020-10-27 11:23:05 -06:00
e38dcb9302 Merge branch 'master' into fix-read-dump-issues 2020-10-27 13:06:52 -04:00
5872b05e2f Merge pull request #2447 from akohlmey/atom-style-template-fixes
Fix bugs and update implementation of atom style template
2020-10-27 13:03:05 -04:00
b8e84d0070 Merge pull request #2442 from ProfessorMiller/master
Create logic in parsing KIM Simulator Models to treat periodic vs. aperiodic simulations differently
2020-10-27 11:44:20 -04:00
bfb8f0f4c0 Merge branch 'clean-master2' of github.com:julient31/lammps into exchange-biquadratic 2020-10-27 09:41:19 -06:00
e2ab5f1ce9 Fix race condition in Kokkos pair and fix forward comm 2020-10-27 09:31:19 -06:00
3b267430ac Merge pull request #2452 from jrgissing/bond_react-small-docs-updates
Bond/react: docs clarifications
2020-10-27 11:03:46 -04:00
86f8b566f0 eliminate TABs 2020-10-27 00:39:52 -04:00
8976cf0230 Update data.spce
The masses were assigned wrongly in the data file (although they eventually get overwritten in the in.gcmc.h2o script)
2020-10-27 00:35:51 -04:00
a3c887accb update examples and include restart example, too. 2020-10-27 00:31:25 -04:00
6af2da7603 Correct path for icons and .desktop file 2020-10-26 23:56:55 -04:00
4a853cd838 Merge branch 'master' into atom-style-template-fixes 2020-10-26 23:56:48 -04:00
af483ca34f small documentation update 2020-10-26 23:15:43 -04:00
d64bbb99bf add examples for demonstrating the use of atom style template 2020-10-26 23:10:45 -04:00
955da06aca avoid segfaults with non-template atoms when reading data files 2020-10-26 23:02:24 -04:00
8975c7e316 relax checks to avoid segfaults and accept non-template atoms 2020-10-26 23:01:58 -04:00
efd31fbb60 fix up placement of polyfill loader layout.html and load it only for internet explorer 2020-10-26 21:03:05 -04:00
731072cfb8 handle case of molecule template atoms not included in shake 2020-10-26 18:49:59 -04:00
f70775bd52 cannot determine communication without a box 2020-10-26 18:49:30 -04:00
656b7eac8b correctly report number of constrained bonds and angles 2020-10-26 18:49:09 -04:00
4475a095ce Merge pull request #2453 from rbberger/cmake_gitversion_fix
Enable gathering of git info with git v1.8.3.1
2020-10-26 18:45:52 -04:00
f7d9cf813f Enable gathering of git info with git v1.8.3.1
The -C flag wasn't supported back then. The workaround is to change the
working directory via CMake. This issue was detected while building on
CentOS 7.
2020-10-26 17:26:46 -04:00
d84bb54019 do not enforce atom types in molecule files for atom style template.
types are only needed when creating atoms and presence is tested then.
2020-10-26 17:26:18 -04:00
ba97141d45 restore and correct read_data docs for atom style template 2020-10-26 17:25:16 -04:00
6554547b41 Merge pull request #2444 from stanmoore1/kk_global_dof
Add support for extra global DOFs to Kokkos minimize
2020-10-26 17:07:27 -04:00
65e93cbaab decrement/increment molindex and atomindex to have 1-based indices in files and 0-based internally 2020-10-26 17:06:27 -04:00
d9646472c3 Revert "support choosing the molecule index from the set of molecules in a template"
This reverts commit 186359caa9.
The same functionality will be implemented differently later
in a fashion consistent with fix deposit and fix pour.
2020-10-26 15:46:58 -04:00
f9b45faa76 Merge pull request #2445 from akohlmey/lammps-shell-desktop
Add desktop integration for LAMMPS shell
2020-10-26 15:41:25 -04:00
f2b575d3ec Fix GPU memory issues 2020-10-26 12:42:26 -06:00
406d6e27ce bond/react: clarify how reactions are searched for
thanks to Ben Jensen (NASA Langley)
2020-10-26 11:22:35 -04:00
5159d255a7 update bundled fmtlib to version 7.1.0 2020-10-26 11:02:09 -04:00
254963cddd Update fix_bond_react.rst 2020-10-25 21:16:04 -04:00
4b111d7c43 bond/react:better initial vels for created atoms 2020-10-25 20:57:46 -04:00
b8d2b65d8d bond/react: generalize get_temperature 2020-10-25 18:56:00 -04:00
d5c6007797 bond/react: revert some overzealous optimization
could cause hang
2020-10-25 17:19:03 -04:00
40b750769b Merge pull request #107 from lammps/master
rebase
2020-10-24 14:56:13 -04:00
b67950e130 update email 2020-10-24 13:54:27 -04:00
c2a852ddef clarify exactly what is used to identify reaction site
thanks to Øystein Gullbrekken for the suggestion
2020-10-24 13:46:28 -04:00
7df8b81af9 Update molecule.rst 2020-10-24 13:08:49 -04:00
bb2e616c5f molecule: use user-provided IDs in molecule files 2020-10-24 12:56:02 -04:00
4fd5f4d9a6 Update false_positives.txt 2020-10-24 18:03:40 +02:00
83d7f7b70d Update false_positives.txt 2020-10-24 17:53:34 +02:00
e35c6cb19b Update false_positives.txt 2020-10-24 17:42:14 +02:00
e66b1bf3fc Update false_positives.txt 2020-10-24 17:32:21 +02:00
f6d0f47ba0 Update bond_gaussian.rst 2020-10-24 17:27:39 +02:00
6517e97bed Update bond_gaussian.rst 2020-10-24 17:22:07 +02:00
9c129d3a34 update output of read_restart to make read_data and signify if atom style template is used 2020-10-24 01:05:11 -04:00
186359caa9 support choosing the molecule index from the set of molecules in a template 2020-10-24 00:45:41 -04:00
13450606c6 update read_data docs with actual format for atom style template 2020-10-24 00:45:06 -04:00
4a6517fd51 for atom style template only write out the number of types 2020-10-23 21:51:55 -04:00
00e4e23456 only check for type overflows if a box has been created. 2020-10-23 21:51:10 -04:00
9e0062a9ef we have a new map style when using atom style template 2020-10-23 21:50:38 -04:00
23e2a4af00 use symbolic constant 2020-10-23 21:50:18 -04:00
3bf081745d add missing velocity comm ids 2020-10-23 21:50:04 -04:00
c62ddaa4a2 remove pre-box check so that atom style template can work 2020-10-23 21:10:41 -04:00
b4f1779b62 reformat with clang-format 2020-10-23 21:04:45 -04:00
1382559dbe adapt behavior of lammps-shell when passing filename without -in/-i flag
To better handle the case of file association. We now split the path into
a directory and basename string and change the current working directory
to that directory and read the file with the basename.
This simplifies the .desktop file and makes the LAMMPS shell behave as
expected on Windows, too.
2020-10-23 20:42:24 -04:00
b931501711 add utils::path_dirname() to complement utils::path_basename() 2020-10-23 20:40:18 -04:00
c51d2a286a call resource compiler to include icon files into LAMMPS shell on Windows 2020-10-23 20:06:21 -04:00
5c98eeec1b remove strtok dependency 2020-10-23 11:25:35 -04:00
ceaaf149eb Whitespace cleanup 2020-10-23 08:53:53 -06:00
9543ff02c6 Fix memory issue 2020-10-23 08:49:53 -06:00
30c050fda7 Add missing global DOF calls 2020-10-23 08:36:48 -06:00
e3ecb6ccc4 must nullify "readers" array, so there is no crash when deleting it later 2020-10-23 04:21:15 -04:00
114f039a68 must not check for compatible dump frequency when using write_dump 2020-10-23 04:20:40 -04:00
6c020f4cfa Update bond_gaussian.cpp
removing "this->" construct  from source file
2020-10-23 09:20:59 +02:00
39da827a2d correct formatting style for keywords block 2020-10-23 02:24:11 -04:00
aa15f221d4 add missing "boff" keyword 2020-10-23 02:21:58 -04:00
3242cd5d31 mention desktop file and icons in README 2020-10-23 00:29:48 -04:00
8854e7b8de Add desktop integration for LAMMPS shell 2020-10-23 00:20:15 -04:00
ef048cad55 Add extra global DOFs for Kokkos minimize 2020-10-22 16:03:42 -06:00
3d6119a574 Merge branch 'master' of https://github.com/lammps/lammps into eam_tweaks 2020-10-22 13:15:26 -06:00
cfbeaad112 updates to kim_interactions to generalize interpretor for smspec.edn (logic to allow variants for aperiodic vs periodic simulations 2020-10-22 15:05:07 -04:00
b562619cf0 Update other EAM styles 2020-10-22 12:44:48 -06:00
6a3a17c63e Update docs 2020-10-22 12:08:12 -06:00
e804235d23 Add Kokkos support for fix shake and forward comm on Device 2020-10-22 11:59:41 -06:00
91bf2e5983 Update README 2020-10-22 11:32:44 +02:00
4e728ca81f Update bond_gaussian.cpp
deleting white spaces
2020-10-22 11:07:20 +02:00
461f1001f9 Update Commands_bond.rst 2020-10-22 11:00:11 +02:00
f545b297b4 Update bond_style.rst 2020-10-22 10:57:12 +02:00
c0fde537eb Add files via upload
documentation file for gaussian bond_style
2020-10-22 10:55:27 +02:00
6df9006689 Add files via upload
source code for gaussian bond_style
2020-10-22 10:54:43 +02:00
20000a5e62 Kokkos EAM tweaks for V100 2020-10-21 14:07:46 -06:00
c738d92e81 Added the documentation 2020-10-21 13:06:41 +01:00
09170c84d5 added the pair files 2020-10-20 11:50:57 +01:00
f6433f1c40 Removing trailing whitespace 2020-10-14 20:05:07 -06:00
fd8ff18abc Adding restart method to fix neigh/history 2020-10-14 20:00:48 -06:00
d519f4fd4f Missed reference to bin, minor uniform style changes 2020-10-14 16:06:14 -06:00
0ae09c0f3b Adding OMP classes 2020-10-14 15:52:20 -06:00
7fdf70c960 Merge branch 'master' of github.com:lammps/lammps 2020-10-13 19:10:32 -06:00
939b8fd0c7 Update add_mpi_test() CMake function 2020-10-13 11:44:11 -04:00
414cf024cd Merge branch 'clean-master2' of github.com:julient31/lammps into exchange-biquadratic 2020-10-12 11:45:57 -06:00
73b2ad0acc - slight modifs of the damped exchange example 2020-10-12 11:38:52 -06:00
8abe8cb003 Add tests for lammps_gather() and lammps_scatter() 2020-10-12 12:58:42 -04:00
00f87722a2 Add CMake function add_mpi_test() 2020-10-12 10:41:54 -04:00
fcd6074190 correct test name 2020-10-12 02:38:27 -04:00
d0cf52fafd fix typos 2020-10-12 00:03:18 -04:00
d5e6bd3cdc document the changed behavior read_data with respect to non-zero image flags for non-periodic directions 2020-10-11 23:17:18 -04:00
7ef892cc4b add tester for image flag resets when using change_box and read_data 2020-10-11 20:20:23 -04:00
64b046e022 implement that non-zero image flags will be reset to 0 for non-periodic directions when reading a data file 2020-10-11 20:20:00 -04:00
d26eafbe3f Refactor MPI test driver 2020-10-10 17:22:18 -04:00
ca405823ae Add test for sublo and subhi 2020-10-09 18:03:02 -04:00
d7201bae33 Add library access to sublo and subhi 2020-10-09 18:01:51 -04:00
3de60fac65 Add custom TestEventListener for MPI testing 2020-10-09 17:50:29 -04:00
d0981db66a Minor edits 2020-10-09 13:51:35 -06:00
dc86c37e23 Minor updates and documentation 2020-10-09 11:38:18 -06:00
e3b8563ed9 correcting spelling errors 2020-10-05 21:28:26 -06:00
dddafb3c92 Merge pull request #104 from lammps/master
rebase
2020-10-05 23:19:23 -04:00
ccb7a6ee11 remove unnecessary check
because it breaks create_atoms feature
2020-10-05 23:16:46 -04:00
4baf60ffd1 adding examples of the biquadratic pair_style and offset option 2020-10-05 20:47:07 -06:00
3147dd850c adding corrections to doc page 2020-10-05 20:01:34 -06:00
8d0d7f4f55 Fix testers after API change 2020-10-05 21:53:38 -04:00
2d7494186c rerun all validations tests (modifed one) 2020-10-05 19:37:24 -06:00
2ac83a0e84 Merge remote-tracking branch 'origin/master' into improper-tester 2020-10-05 21:35:42 -04:00
208bd10480 Merge branch 'exchange-biquadratic' of https://github.com/julient31/lammps into exchange-biquadratic 2020-10-05 17:14:26 -06:00
2825abb028 Improved scripts validaton problems 2020-10-05 17:13:54 -06:00
1cb0b9dece - modified all pairs (if on rcut)
- clean KOKKOS from atom spin/kk (other PR)
2020-10-05 17:11:53 -06:00
bc1c16d1a6 Removing gran/multi pairstyles 2020-10-05 16:14:01 -06:00
e95bab1994 Merge branch 'clean-master2' of github.com:julient31/lammps into exchange-biquadratic 2020-10-05 13:38:37 -06:00
61c51847c2 bond/react: basic create atoms feature 2020-10-02 20:53:27 -04:00
dfb5cd3262 merged with mastered, copied Ishan's files 2020-10-02 16:37:01 -06:00
21079b3ac2 Added multi-stencil files from Ishan 2020-10-02 16:35:53 -06:00
121dc82f1b Merge branch 'clean-master2' of https://github.com/julient31/lammps into exchange-biquadratic 2020-10-02 10:57:38 -06:00
84c104641b adding offset option and doc 2020-10-02 10:47:29 -06:00
a8d304405d before pull from other machine 2020-09-30 15:55:18 -06:00
d3aa2d1cd0 compilable kokkos files (still a segfault issue) 2020-09-30 10:27:22 -06:00
735676241f start correcting atom spin/kk 2020-09-29 08:06:41 -06:00
f0729551ae adding for good new kokkos spin style 2020-09-28 16:54:10 -06:00
9aba7b0050 adding a kokkos/spin atom style 2020-09-28 15:42:26 -06:00
0cc0d10092 Removing the electron_stopping_fit folder 2020-09-24 20:36:29 -06:00
1778c82307 Moved electron/stopping/fit information to the exisiting electron_stopping folder 2020-09-24 20:34:31 -06:00
60e237a39f Fixing text 2020-09-24 20:32:40 -06:00
9e520b63c6 Fixing text 2020-09-24 20:31:33 -06:00
88b0963cf8 Deleting files 2020-09-24 20:24:34 -06:00
0511bc38e0 Updated 2 species example to use an existing potential, and generated new log files for each case. 2020-09-24 20:22:10 -06:00
9b28280668 Cleaned up the #include statements section 2020-09-24 19:27:53 -06:00
f40ae1ad0c Replacing pow() with MathSpecial::square() 2020-09-24 18:05:13 -06:00
476d58628f Initializing variables to (nullptr) 2020-09-24 17:40:54 -06:00
01e4f51455 Changing atof() to utils::numeric() 2020-09-24 17:25:59 -06:00
ff3637c88c Added the line: delete [] energy_coh_in 2020-09-24 16:58:14 -06:00
33bf8270a6 Editing system sizes and run times 2020-09-24 16:34:16 -06:00
a6e18eaf42 Deleting files 2020-09-24 16:23:25 -06:00
c997925584 Commented out dump commands in input files, edited in.cascade_SiSi to read from /potentials/SiC.tersoff.zbl, and deleted Si.tersoff.zbl file 2020-09-24 16:21:51 -06:00
808b8bf431 Merge branch 'master' of github.com:lammps/lammps 2020-09-24 16:12:50 -06:00
6675371d6b Removed elec_drag folder 2020-09-24 15:40:56 -06:00
7d0650a09c Delete fix_elec_drag.h 2020-09-24 15:28:14 -06:00
0b7e5601e0 Delete fix_elec_drag.cpp 2020-09-24 15:27:56 -06:00
f5635208e3 Modified the fix_elec_drag.* name to fix_electron_stopping_fit.* to align with and distinguish from existing fix_electron_stopping.* 2020-09-23 17:14:14 -06:00
6392d24411 Added an electronic stopping fix (fix_elec_drag.*) to USER-MISC/, with corresponding examples in examples/USER/misc/ 2020-09-23 16:36:12 -06:00
0b903fa7c2 bond/react: create-atoms-draft-docs 2020-09-21 14:53:30 -04:00
ede28cc1bf bond/react:modify-create-correction 2020-09-21 12:01:40 -04:00
0236cabce9 bond/react:add-modify-create-keyword 2020-09-21 10:29:42 -04:00
db8767ee63 Merge branch 'TEMP-master' into bond-react_create_atoms 2020-09-19 10:53:02 -04:00
45eeb403a2 Merge branch 'master' of https://github.com/lammps/lammps into TEMP-master 2020-09-19 10:51:58 -04:00
74e3a1fe8c manual rebase take 2 2020-09-19 10:41:50 -04:00
dbd7b1e001 bond/react: manual rebase header 2020-09-19 10:02:45 -04:00
7d5109454f correcting small issue with offset of biquadratic exchange 2020-09-15 20:16:48 -06:00
901fe9d3aa modification of pair spin exchange/biquadratic, to offset
ground state spin pressure
2020-09-15 18:22:11 -06:00
e6d340aee1 Merge branch 'master' into gpu-unittest 2020-09-09 14:39:29 -04:00
e01a926c87 bond/react: add create_atoms section to map file 2020-09-02 19:16:18 -04:00
00062205b9 bond/react: rename variable used for possible reaction
create->attempt, to avoid clashing with create-atoms variables
2020-09-02 17:51:53 -04:00
ea9b71a4ce Merge pull request #95 from lammps/master
rebase
2020-09-02 12:54:19 -04:00
9b0c07f797 remove undesired trailing whitespace 2020-08-27 19:06:29 -04:00
82cd39da31 Merge branch 'gpu-bugfix' into gpu-unittest 2020-08-27 19:02:30 -04:00
b1b9fe8d24 Merge branch 'gpu-bugfix' into gpu-unittest 2020-08-27 19:01:02 -04:00
e218d8421e Merge branch 'gpu-unittest' of github.com:akohlmey/lammps into gpu-unittest 2020-08-27 18:02:25 -04:00
d0cffd83af Merge branch 'gpu-bugfix' into gpu-unittest 2020-08-27 18:01:27 -04:00
5127071da2 Fixes segfault due to uninitialized pointers 2020-08-26 18:44:07 -04:00
7054c82b67 added BS function to pair/spin/biquadractic 2020-08-24 09:23:31 -06:00
13cf665712 update pair style unit test input files to be compatible with testing GPU package styles 2020-08-23 21:47:17 -04:00
5ed24b330e add preliminary support for testing pair styles in the GPU package 2020-08-23 21:46:18 -04:00
39750c482d add tester for dihedral style and few tests 2020-08-15 00:19:56 -04:00
051ab1f5c2 add test for dihedral style 2020-08-14 23:21:30 -04:00
a65c672afc add tests for all improper styles except hybrid 2020-08-14 23:10:35 -04:00
194fe17263 merge conflicts in cmakelist 2020-08-14 22:33:10 -04:00
a33c0081cd setup a simple improper-harmonic test 2020-08-08 15:58:41 -04:00
ffb074e812 created an empty tester for improper style 2020-08-07 22:15:40 -04:00
e941670f2c Commit modif biquad 2020-07-13 14:43:14 -06:00
e5acf9da7d Merge branch 'clean-master2' of github.com:julient31/lammps into exchange-biquadratic 2020-04-28 13:12:10 -06:00
0d27591e82 Merge branch 'clean-master2' of github.com:julient31/lammps into exchange-biquadratic 2020-04-22 20:13:49 -06:00
10a3e85796 C1 JT 042220
- added biquadratic pair/spin exchange
2020-04-22 11:53:08 -06:00
3612 changed files with 276413 additions and 888778 deletions

View File

@ -108,7 +108,7 @@ For bug reports, the next step is that one of the core LAMMPS developers will se
For submitting pull requests, there is a [detailed tutorial](https://lammps.sandia.gov/doc/Howto_github.html) in the LAMMPS manual. Thus only a brief breakdown of the steps is presented here. Please note, that the LAMMPS developers are still reviewing and trying to improve the process. If you are unsure about something, do not hesitate to post a question on the lammps-users mailing list or contact one fo the core LAMMPS developers.
Immediately after the submission, the LAMMPS continuing integration server at ci.lammps.org will download your submitted branch and perform a simple compilation test, i.e. will test whether your submitted code can be compiled under various conditions. It will also do a check on whether your included documentation translates cleanly. Whether these tests are successful or fail will be recorded. If a test fails, please inspect the corresponding output on the CI server and take the necessary steps, if needed, so that the code can compile cleanly again. The test will be re-run each the pull request is updated with a push to the remote branch on GitHub.
Next a LAMMPS core developer will self-assign and do an overall technical assessment of the submission. If you are not yet registered as a LAMMPS collaborator, you will receive an invitation for that. As part of the assesment, the pull request will be categorized with labels. There are two special labels: `needs_work` (indicates that work from the submitter of the pull request is needed) and `work_in_progress` (indicates, that the assigned LAMMPS developer will make changes, if not done by the contributor who made the submit).
Next a LAMMPS core developer will self-assign and do an overall technical assessment of the submission. If you are not yet registered as a LAMMPS collaborator, you will receive an invitation for that. As part of the assessment, the pull request will be categorized with labels. There are two special labels: `needs_work` (indicates that work from the submitter of the pull request is needed) and `work_in_progress` (indicates, that the assigned LAMMPS developer will make changes, if not done by the contributor who made the submit).
You may also receive comments and suggestions on the overall submission or specific details and on occasion specific requests for changes as part of the review. If permitted, also additional changes may be pushed into your pull request branch or a pull request may be filed in your LAMMPS fork on GitHub to include those changes.
The LAMMPS developer may then decide to assign the pull request to another developer (e.g. when that developer is more knowledgeable about the submitted feature or enhancement or has written the modified code). It may also happen, that additional developers are requested to provide a review and approve the changes. For submissions, that may change the general behavior of LAMMPS, or where a possibility of unwanted side effects exists, additional tests may be requested by the assigned developer.
If the assigned developer is satisfied and considers the submission ready for inclusion into LAMMPS, the pull request will receive approvals and be merged into the master branch by one of the core LAMMPS developers. After the pull request is merged, you may delete the feature branch used for the pull request in your personal LAMMPS fork.

47
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@ -0,0 +1,47 @@
# GitHub action to run static code analysis on C++ and Python code
name: "CodeQL Code Analysis"
on:
push:
branches: [master]
jobs:
analyze:
name: Analyze
if: ${{ github.repository == 'lammps/lammps' }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: ['cpp', 'python']
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
- name: Create Build Environment
run: cmake -E make_directory ${{github.workspace}}/build
- name: Building LAMMPS via CMake
if: ${{ matrix.language == 'cpp' }}
shell: bash
working-directory: ${{github.workspace}}/build
run: |
cmake -C $GITHUB_WORKSPACE/cmake/presets/most.cmake $GITHUB_WORKSPACE/cmake
cmake --build . --parallel 2
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

36
.github/workflows/unittest-macos.yml vendored Normal file
View File

@ -0,0 +1,36 @@
# GitHub action to build LAMMPS on MacOS and run unit tests
name: "Unittest for MacOS"
on:
push:
branches: [master]
jobs:
build:
name: MacOS Unit Test
if: ${{ github.repository == 'lammps/lammps' }}
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 2
- name: Create Build Environment
run: cmake -E make_directory ${{github.workspace}}/build
- name: Building LAMMPS via CMake
shell: bash
working-directory: ${{github.workspace}}/build
run: |
cmake -C $GITHUB_WORKSPACE/cmake/presets/clang.cmake \
-C $GITHUB_WORKSPACE/cmake/presets/most.cmake \
$GITHUB_WORKSPACE/cmake \
-DENABLE_TESTING=ON -DBUILD_SHARED_LIBS=ON -DLAMMPS_EXCEPTIONS=ON
cmake --build . --parallel 2
- name: Run Tests
working-directory: ${{github.workspace}}/build
shell: bash
run: ctest -V

View File

@ -1,6 +1,6 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
@ -301,9 +301,8 @@ one line to give the program's name and an idea of what it does.
Copyright (C) yyyy name of author
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of

6
README
View File

@ -37,14 +37,14 @@ tools pre- and post-processing tools
Point your browser at any of these files to get started:
https://lammps.sandia.gov/doc/Manual.html LAMMPS user manual
https://lammps.sandia.gov/doc/Manual.html LAMMPS manual
https://lammps.sandia.gov/doc/Intro.html hi-level introduction
https://lammps.sandia.gov/doc/Build.html how to build LAMMPS
https://lammps.sandia.gov/doc/Run_head.html how to run LAMMPS
https://lammps.sandia.gov/doc/Commands_all.html Table of available commands
https://lammps.sandia.gov/doc/pg_library.html LAMMPS programmer guide
https://lammps.sandia.gov/doc/Library.html LAMMPS library interfaces
https://lammps.sandia.gov/doc/Modify.html how to modify and extend LAMMPS
https://lammps.sandia.gov/doc/pg_developer.html LAMMPS developer guide
https://lammps.sandia.gov/doc/Developer.html LAMMPS developer info
You can also create these doc pages locally:

View File

@ -22,18 +22,30 @@ set(LAMMPS_TOOLS_DIR ${LAMMPS_DIR}/tools)
set(LAMMPS_PYTHON_DIR ${LAMMPS_DIR}/python)
set(LAMMPS_POTENTIALS_DIR ${LAMMPS_DIR}/potentials)
set(LAMMPS_DOWNLOADS_URL "https://download.lammps.org" CACHE STRING "Base URL for LAMMPS downloads")
set(LAMMPS_POTENTIALS_URL "${LAMMPS_DOWNLOADS_URL}/potentials")
set(LAMMPS_THIRDPARTY_URL "${LAMMPS_DOWNLOADS_URL}/thirdparty")
mark_as_advanced(LAMMPS_DOWNLOADS_URL)
find_package(Git)
# by default, install into $HOME/.local (not /usr/local), so that no root access (and sudo!!) is needed
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "default install path" FORCE )
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "Default install path" FORCE)
endif()
# If enabled, no need to use LD_LIBRARY_PATH / DYLD_LIBRARY_PATH when installed
option(LAMMPS_INSTALL_RPATH "Set runtime path for shared libraries linked to LAMMPS binaries" OFF)
if(LAMMPS_INSTALL_RPATH)
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR})
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON)
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})
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()
@ -106,14 +118,16 @@ option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF)
set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE
GRANULAR KSPACE LATTE MANYBODY MC MESSAGE MISC MLIAP MOLECULE PERI POEMS
QEQ 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-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)
set(SUFFIX_PACKAGES CORESHELL USER-OMP KOKKOS OPT USER-INTEL GPU)
PLUGIN QEQ REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI
USER-ADIOS 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-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)
set(SUFFIX_PACKAGES CORESHELL GPU KOKKOS OPT USER-INTEL USER-OMP)
foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES})
option(PKG_${PKG} "Build ${PKG} Package" OFF)
endforeach()
@ -154,8 +168,7 @@ if(BUILD_MPI)
endif()
endif()
else()
enable_language(C)
file(GLOB MPI_SOURCES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.c)
file(GLOB MPI_SOURCES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.cpp)
add_library(mpi_stubs STATIC ${MPI_SOURCES})
set_target_properties(mpi_stubs PROPERTIES OUTPUT_NAME lammps_mpi_stubs${LAMMPS_MACHINE})
target_include_directories(mpi_stubs PUBLIC $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}/STUBS>)
@ -220,6 +233,7 @@ if(BUILD_OMP)
endif()
if (((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0)) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "PGI") OR
((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR
((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0)))
# GCC 9.x and later plus Clang 10.x and later implement strict OpenMP 4.0 semantics for consts.
@ -372,7 +386,7 @@ else()
set(CUDA_REQUEST_PIC)
endif()
foreach(PKG_WITH_INCL KSPACE PYTHON VORONOI USER-COLVARS USER-MOLFILE USER-NETCDF USER-PLUMED USER-QMMM
foreach(PKG_WITH_INCL KSPACE PYTHON MLIAP VORONOI USER-COLVARS USER-MOLFILE USER-NETCDF USER-PLUMED USER-QMMM
USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS)
if(PKG_${PKG_WITH_INCL})
include(Packages/${PKG_WITH_INCL})
@ -524,6 +538,18 @@ foreach(PKG_WITH_INCL CORESHELL QEQ USER-OMP USER-SDPD KOKKOS OPT USER-INTEL GPU
endif()
endforeach()
if(PKG_PLUGIN)
if(BUILD_SHARED_LIBS)
target_compile_definitions(lammps PRIVATE -DLMP_PLUGIN)
else()
message(WARNING "Plugin loading will not work unless BUILD_SHARED_LIBS is enabled")
endif()
# link with -ldl or equivalent for plugin loading; except on Windows
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
target_link_libraries(lammps PRIVATE ${CMAKE_DL_LIBS})
endif()
endif()
######################################################################
# the windows version of LAMMPS requires a couple extra libraries
# and the MPI library - if use - has to be linked right before those
@ -579,7 +605,7 @@ add_dependencies(lammps gitversion)
############################################
get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
list (FIND LANGUAGES "Fortran" _index)
if (${_index} GREATER -1)
if(${_index} GREATER -1)
target_link_libraries(lammps PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES})
endif()
set(LAMMPS_CXX_HEADERS angle.h atom.h bond.h citeme.h comm.h compute.h dihedral.h domain.h error.h fix.h force.h group.h improper.h
@ -649,7 +675,7 @@ 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)
set(Python_ADDITIONAL_VERSIONS 3.9 3.8 3.7 3.6 3.5)
find_package(PythonInterp) # Deprecated since version 3.12
if(PYTHONINTERP_FOUND)
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
@ -659,10 +685,10 @@ if(BUILD_SHARED_LIBS)
endif()
if (Python_EXECUTABLE)
add_custom_target(
install-python
${Python_EXECUTABLE} install.py -v ${LAMMPS_SOURCE_DIR}/version.h
-m ${LAMMPS_PYTHON_DIR}/lammps.py
-l ${CMAKE_BINARY_DIR}/liblammps${CMAKE_SHARED_LIBRARY_SUFFIX}
install-python ${CMAKE_COMMAND} -E remove_directory build
COMMAND ${Python_EXECUTABLE} install.py -v ${LAMMPS_SOURCE_DIR}/version.h
-p ${LAMMPS_PYTHON_DIR}/lammps
-l ${CMAKE_BINARY_DIR}/liblammps${LAMMPS_MACHINE}${CMAKE_SHARED_LIBRARY_SUFFIX}
WORKING_DIRECTORY ${LAMMPS_PYTHON_DIR}
COMMENT "Installing LAMMPS Python module")
else()
@ -691,11 +717,8 @@ if(BUILD_SHARED_LIBS OR PKG_PYTHON)
find_package(Python COMPONENTS Interpreter)
endif()
if (Python_EXECUTABLE)
execute_process(COMMAND ${Python_EXECUTABLE}
-c "import distutils.sysconfig as cg; print(cg.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}'))"
OUTPUT_VARIABLE PYTHON_DEFAULT_INSTDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
set(PYTHON_INSTDIR ${PYTHON_DEFAULT_INSTDIR} CACHE PATH "Installation folder for LAMMPS Python module")
install(FILES ${LAMMPS_PYTHON_DIR}/lammps.py DESTINATION ${PYTHON_INSTDIR})
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/python)
install(CODE "execute_process(COMMAND ${Python_EXECUTABLE} setup.py build -b ${CMAKE_BINARY_DIR}/python install --prefix=${CMAKE_INSTALL_PREFIX} --root=\$ENV{DESTDIR}/ WORKING_DIRECTORY ${LAMMPS_PYTHON_DIR})")
endif()
endif()
@ -739,14 +762,14 @@ if(OPTIONS)
endif()
get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
list (FIND LANGUAGES "Fortran" _index)
if (${_index} GREATER -1)
if(${_index} GREATER -1)
message(STATUS "Fortran Compiler: ${CMAKE_Fortran_COMPILER}
Type: ${CMAKE_Fortran_COMPILER_ID}
Version: ${CMAKE_Fortran_COMPILER_VERSION}
Fortran Flags:${CMAKE_Fortran_FLAGS} ${CMAKE_Fortran_FLAGS_${BTYPE}}")
endif()
list (FIND LANGUAGES "C" _index)
if (${_index} GREATER -1)
if(${_index} GREATER -1)
message(STATUS "C compiler: ${CMAKE_C_COMPILER}
Type: ${CMAKE_C_COMPILER_ID}
Version: ${CMAKE_C_COMPILER_VERSION}
@ -778,9 +801,7 @@ if(PKG_GPU)
message(STATUS "<<< GPU package settings >>>
-- GPU API: ${GPU_API}")
if(GPU_API STREQUAL "CUDA")
message(STATUS "GPU architecture: ${GPU_ARCH}")
elseif(GPU_API STREQUAL "OPENCL")
message(STATUS "OpenCL tuning: ${OCL_TUNE}")
message(STATUS "GPU default architecture: ${GPU_ARCH}")
elseif(GPU_API STREQUAL "HIP")
message(STATUS "HIP platform: ${HIP_PLATFORM}")
message(STATUS "HIP architecture: ${HIP_ARCH}")

View File

@ -8,7 +8,7 @@ else()
find_package(Python3 COMPONENTS Interpreter QUIET)
endif()
if (Python3_EXECUTABLE)
if(Python3_EXECUTABLE)
if(Python3_VERSION VERSION_GREATER_EQUAL 3.5)
add_custom_target(
check-whitespace

View File

@ -50,27 +50,25 @@ if(BUILD_DOC)
OUTPUT ${DOC_BUILD_DIR}/requirements.txt
DEPENDS docenv ${DOCENV_REQUIREMENTS_FILE}
COMMAND ${CMAKE_COMMAND} -E copy ${DOCENV_REQUIREMENTS_FILE} ${DOC_BUILD_DIR}/requirements.txt
COMMAND ${DOCENV_BINARY_DIR}/pip install --upgrade pip
COMMAND ${DOCENV_BINARY_DIR}/pip install --upgrade ${LAMMPS_DOC_DIR}/utils/converters
COMMAND ${DOCENV_BINARY_DIR}/pip install --use-feature=2020-resolver -r ${DOC_BUILD_DIR}/requirements.txt --upgrade
COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install --upgrade pip
COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install --upgrade ${LAMMPS_DOC_DIR}/utils/converters
COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install -r ${DOC_BUILD_DIR}/requirements.txt --upgrade
)
set(MATHJAX_URL "https://github.com/mathjax/MathJax/archive/3.1.2.tar.gz" CACHE STRING "URL for MathJax tarball")
set(MATHJAX_MD5 "a4a6a093a89bc2ccab1452d766b98e53" CACHE STRING "MD5 checksum of MathJax tarball")
mark_as_advanced(MATHJAX_URL)
# download mathjax distribution and unpack to folder "mathjax"
if(NOT EXISTS ${DOC_BUILD_STATIC_DIR}/mathjax/es5)
file(DOWNLOAD "https://github.com/mathjax/MathJax/archive/3.0.5.tar.gz"
file(DOWNLOAD ${MATHJAX_URL}
"${CMAKE_CURRENT_BINARY_DIR}/mathjax.tar.gz"
EXPECTED_MD5 5d9d3799cce77a1a95eee6be04eb68e7)
EXPECTED_MD5 ${MATHJAX_MD5})
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} ${DOC_BUILD_STATIC_DIR}/mathjax)
endif()
# for increased browser compatibility
if(NOT EXISTS ${DOC_BUILD_STATIC_DIR}/polyfill.js)
file(DOWNLOAD "https://polyfill.io/v3/polyfill.min.js?features=es6"
"${DOC_BUILD_STATIC_DIR}/polyfill.js")
endif()
# set up doxygen and add targets to run it
file(MAKE_DIRECTORY ${DOXYGEN_BUILD_DIR})
file(COPY ${LAMMPS_DOC_DIR}/doxygen/lammps-logo.png DESTINATION ${DOXYGEN_BUILD_DIR}/lammps-logo.png)

View File

@ -0,0 +1,30 @@
# Find the Cythonize tool.
#
# This code sets the following variables:
#
# Cythonize_EXECUTABLE
#
# adapted from https://github.com/cmarshall108/cython-cmake-example/blob/master/cmake/FindCython.cmake
#=============================================================================
if(CMAKE_VERSION VERSION_LESS 3.12)
find_package(PythonInterp 3.6 QUIET) # Deprecated since version 3.12
if(PYTHONINTERP_FOUND)
set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE})
endif()
else()
find_package(Python3 3.6 COMPONENTS Interpreter QUIET)
endif()
# Use the Cython executable that lives next to the Python executable
# if it is a local installation.
if(Python3_EXECUTABLE)
get_filename_component(_python_path ${Python3_EXECUTABLE} PATH)
find_program(Cythonize_EXECUTABLE
NAMES cythonize3 cythonize cythonize.bat
HINTS ${_python_path})
endif()
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cythonize REQUIRED_VARS Cythonize_EXECUTABLE)
mark_as_advanced(Cythonize_EXECUTABLE)

View File

@ -8,10 +8,12 @@ endif()
include(ExternalProject)
set(GTEST_URL "https://github.com/google/googletest/archive/release-1.10.0.tar.gz" CACHE STRING "URL for GTest tarball")
set(GTEST_MD5 "ecd1fa65e7de707cd5c00bdac56022cd" CACHE STRING "MD5 checksum of GTest tarball")
mark_as_advanced(GTEST_URL)
mark_as_advanced(GTEST_MD5)
ExternalProject_Add(googletest
URL ${GTEST_URL}
URL_MD5 ecd1fa65e7de707cd5c00bdac56022cd
URL ${GTEST_URL}
URL_MD5 ${GTEST_MD5}
SOURCE_DIR "${CMAKE_BINARY_DIR}/gtest-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/gtest-build"
CMAKE_ARGS ${CMAKE_REQUEST_PIC} ${CMAKE_EXTRA_GTEST_OPTS}
@ -20,10 +22,10 @@ ExternalProject_Add(googletest
-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
BUILD_BYPRODUCTS <BINARY_DIR>/lib/libgtest${GTEST_LIB_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}
<BINARY_DIR>/lib/libgmock${GTEST_LIB_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}
<BINARY_DIR>/lib/libgtest_main${GTEST_LIB_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}
<BINARY_DIR>/lib/libgmock_main${GTEST_LIB_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}
LOG_DOWNLOAD ON
LOG_CONFIGURE ON
LOG_BUILD ON
@ -39,10 +41,10 @@ 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)
set(GTEST_LIBRARY_PATH ${BINARY_DIR}/lib/libgtest${GTEST_LIB_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX})
set(GMOCK_LIBRARY_PATH ${BINARY_DIR}/lib/libgmock${GTEST_LIB_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX})
set(GTEST_MAIN_LIBRARY_PATH ${BINARY_DIR}/lib/libgtest_main${GTEST_LIB_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX})
set(GMOCK_MAIN_LIBRARY_PATH ${BINARY_DIR}/lib/libgmock_main${GTEST_LIB_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX})
# Prevent GoogleTest from overriding our compiler/linker options
# when building with Visual Studio

View File

@ -50,6 +50,7 @@ function(check_for_autogen_files source_dir)
file(GLOB SRC_AUTOGEN_FILES ${source_dir}/style_*.h)
file(GLOB SRC_AUTOGEN_PACKAGES ${source_dir}/packages_*.h)
list(APPEND SRC_AUTOGEN_FILES ${SRC_AUTOGEN_PACKAGES} ${source_dir}/lmpinstalledpkgs.h ${source_dir}/lmpgitversion.h)
list(APPEND SRC_AUTOGEN_FILES ${SRC_AUTOGEN_PACKAGES} ${source_dir}/mliap_model_python_couple.h ${source_dir}/mliap_model_python_couple.cpp)
foreach(_SRC ${SRC_AUTOGEN_FILES})
get_filename_component(FILENAME "${_SRC}" NAME)
if(EXISTS ${source_dir}/${FILENAME})
@ -85,7 +86,6 @@ 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)

View File

@ -1,16 +1,25 @@
# Download and configure custom MPICH files for Windows
message(STATUS "Downloading and configuring MPICH-1.4.1 for Windows")
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball")
set(MPICH2_WIN32_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win32-devel.tar.gz" CACHE STRING "URL for MPICH2 (win32) tarball")
set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball")
set(MPICH2_WIN32_DEVEL_MD5 "a61d153500dce44e21b755ee7257e031" CACHE STRING "MD5 checksum of MPICH2 (win32) tarball")
mark_as_advanced(MPICH2_WIN64_DEVEL_URL)
mark_as_advanced(MPICH2_WIN32_DEVEL_URL)
mark_as_advanced(MPICH2_WIN64_DEVEL_MD5)
mark_as_advanced(MPICH2_WIN32_DEVEL_MD5)
include(ExternalProject)
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
ExternalProject_Add(mpi4win_build
URL https://download.lammps.org/thirdparty/mpich2-win64-devel.tar.gz
URL_MD5 4939fdb59d13182fd5dd65211e469f14
URL ${MPICH2_WIN64_DEVEL_URL}
URL_MD5 ${MPICH2_WIN64_DEVEL_MD5}
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
else()
ExternalProject_Add(mpi4win_build
URL https://download.lammps.org/thirdparty/mpich2-win32-devel.tar.gz
URL_MD5 a61d153500dce44e21b755ee7257e031
URL ${MPICH2_WIN32_DEVEL_URL}
URL_MD5 ${MPICH2_WIN32_DEVEL_MD5}
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
endif()

View File

@ -0,0 +1,50 @@
message(STATUS "Downloading and building OpenCL loader library")
set(OPENCL_LOADER_URL "${LAMMPS_THIRDPARTY_URL}/opencl-loader-2020.12.18.tar.gz" CACHE STRING "URL for OpenCL loader tarball")
set(OPENCL_LOADER_MD5 "011cdcbd41030be94f3fced6d763a52a" CACHE STRING "MD5 checksum of OpenCL loader tarball")
mark_as_advanced(OPENCL_LOADER_URL)
mark_as_advanced(OPENCL_LOADER_MD5)
include(ExternalProject)
ExternalProject_Add(opencl_loader
URL ${OPENCL_LOADER_URL}
URL_MD5 ${OPENCL_LOADER_MD5}
SOURCE_DIR "${CMAKE_BINARY_DIR}/opencl_loader-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/opencl_loader-build"
CMAKE_ARGS ${CMAKE_REQUEST_PIC} ${CMAKE_EXTRA_OPENCL_LOADER_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>/libOpenCL${CMAKE_STATIC_LIBRARY_SUFFIX}
LOG_DOWNLOAD ON
LOG_CONFIGURE ON
LOG_BUILD ON
INSTALL_COMMAND ""
TEST_COMMAND "")
ExternalProject_Get_Property(opencl_loader SOURCE_DIR)
set(OPENCL_LOADER_INCLUDE_DIR ${SOURCE_DIR}/inc)
# workaround for CMake 3.10 on ubuntu 18.04
file(MAKE_DIRECTORY ${OPENCL_LOADER_INCLUDE_DIR})
ExternalProject_Get_Property(opencl_loader BINARY_DIR)
set(OPENCL_LOADER_LIBRARY_PATH "${BINARY_DIR}/libOpenCL${CMAKE_STATIC_LIBRARY_SUFFIX}")
find_package(Threads QUIET)
if(NOT WIN32)
set(OPENCL_LOADER_DEP_LIBS "Threads::Threads;${CMAKE_DL_LIBS}")
else()
set(OPENCL_LOADER_DEP_LIBS "cfgmgr32;runtimeobject")
endif()
add_library(OpenCL::OpenCL UNKNOWN IMPORTED)
add_dependencies(OpenCL::OpenCL opencl_loader)
set_target_properties(OpenCL::OpenCL PROPERTIES
IMPORTED_LOCATION ${OPENCL_LOADER_LIBRARY_PATH}
INTERFACE_INCLUDE_DIRECTORIES ${OPENCL_LOADER_INCLUDE_DIR}
INTERFACE_LINK_LIBRARIES "${OPENCL_LOADER_DEP_LIBS}")

View File

@ -1,7 +1,10 @@
set(GPU_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/GPU)
set(GPU_SOURCES ${GPU_SOURCES_DIR}/gpu_extra.h
${GPU_SOURCES_DIR}/fix_gpu.h
${GPU_SOURCES_DIR}/fix_gpu.cpp)
${GPU_SOURCES_DIR}/fix_gpu.cpp
${GPU_SOURCES_DIR}/fix_nh_gpu.h
${GPU_SOURCES_DIR}/fix_nh_gpu.cpp)
target_compile_definitions(lammps PRIVATE -DLMP_GPU)
set(GPU_API "opencl" CACHE STRING "API used by GPU package")
set(GPU_API_VALUES opencl cuda hip)
@ -32,9 +35,12 @@ if(GPU_API STREQUAL "CUDA")
if(NOT BIN2C)
message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.")
endif()
option(CUDPP_OPT "Enable CUDPP_OPT" ON)
option(CUDPP_OPT "Enable GPU binning via CUDAPP (should be off for modern GPUs)" OFF)
option(CUDA_MPS_SUPPORT "Enable tweaks to support CUDA Multi-process service (MPS)" OFF)
if(CUDA_MPS_SUPPORT)
if(CUDPP_OPT)
message(FATAL_ERROR "Must use -DCUDPP_OPT=OFF with -DGPU_CUDA_MPS_SUPPORT=ON")
endif()
set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY")
endif()
@ -97,6 +103,10 @@ if(GPU_API STREQUAL "CUDA")
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0")
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_80,code=[sm_80,compute_80]")
endif()
# Ampere (GPU Arch 8.6) is supported by CUDA 11.1 and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.1")
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_86,code=[sm_86,compute_86]")
endif()
if(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
message(WARNING "Unsupported CUDA version. Use at your own risk.")
endif()
@ -121,7 +131,7 @@ if(GPU_API STREQUAL "CUDA")
add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS})
target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS})
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS})
target_compile_definitions(gpu PRIVATE -DUSE_CUDA -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS})
if(CUDPP_OPT)
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini)
target_compile_definitions(gpu PRIVATE -DUSE_CUDPP)
@ -135,27 +145,13 @@ if(GPU_API STREQUAL "CUDA")
target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS})
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 "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})
add_library(OpenCL::OpenCL UNKNOWN IMPORTED)
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86")
set_target_properties(OpenCL::OpenCL PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win32/libOpenCL.dll")
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
set_target_properties(OpenCL::OpenCL PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/lib_win64/libOpenCL.dll")
endif()
set_target_properties(OpenCL::OpenCL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/OpenCL/include")
option(USE_STATIC_OPENCL_LOADER "Download and include a static OpenCL ICD loader" ON)
mark_as_advanced(USE_STATIC_OPENCL_LOADER)
if (USE_STATIC_OPENCL_LOADER)
include(OpenCLLoader)
else()
find_package(OpenCL REQUIRED)
endif()
set(OCL_TUNE "generic" CACHE STRING "OpenCL Device Tuning")
set(OCL_TUNE_VALUES intel fermi kepler cypress generic)
set_property(CACHE OCL_TUNE PROPERTY STRINGS ${OCL_TUNE_VALUES})
validate_option(OCL_TUNE OCL_TUNE_VALUES)
string(TOUPPER ${OCL_TUNE} OCL_TUNE)
include(OpenCLUtils)
set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h)
@ -199,7 +195,7 @@ elseif(GPU_API STREQUAL "OPENCL")
add_library(gpu STATIC ${GPU_LIB_SOURCES})
target_link_libraries(gpu PRIVATE OpenCL::OpenCL)
target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu)
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT)
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DGERYON_NUMA_FISSION -DUCL_NO_EXIT)
target_compile_definitions(gpu PRIVATE -DUSE_OPENCL)
target_link_libraries(lammps PRIVATE gpu)
@ -207,6 +203,7 @@ elseif(GPU_API STREQUAL "OPENCL")
add_executable(ocl_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp)
target_compile_definitions(ocl_get_devices PRIVATE -DUCL_OPENCL)
target_link_libraries(ocl_get_devices PRIVATE OpenCL::OpenCL)
add_dependencies(ocl_get_devices OpenCL::OpenCL)
elseif(GPU_API STREQUAL "HIP")
if(NOT DEFINED HIP_PATH)
if(NOT DEFINED ENV{HIP_PATH})
@ -221,7 +218,7 @@ elseif(GPU_API STREQUAL "HIP")
if(NOT DEFINED HIP_PLATFORM)
if(NOT DEFINED ENV{HIP_PLATFORM})
set(HIP_PLATFORM "hcc" CACHE PATH "HIP Platform to be used during compilation")
set(HIP_PLATFORM "amd" CACHE PATH "HIP Platform to be used during compilation")
else()
set(HIP_PLATFORM $ENV{HIP_PLATFORM} CACHE PATH "HIP Platform used during compilation")
endif()
@ -229,7 +226,7 @@ elseif(GPU_API STREQUAL "HIP")
set(ENV{HIP_PLATFORM} ${HIP_PLATFORM})
if(HIP_PLATFORM STREQUAL "hcc")
if(HIP_PLATFORM STREQUAL "hcc" OR HIP_PLATFORM STREQUAL "amd")
set(HIP_ARCH "gfx906" CACHE STRING "HIP target architecture")
elseif(HIP_PLATFORM STREQUAL "nvcc")
find_package(CUDA REQUIRED)
@ -287,7 +284,7 @@ elseif(GPU_API STREQUAL "HIP")
set(CUBIN_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}.cubin")
set(CUBIN_H_FILE "${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h")
if(HIP_PLATFORM STREQUAL "hcc")
if(HIP_PLATFORM STREQUAL "hcc" OR HIP_PLATFORM STREQUAL "amd")
configure_file(${CU_FILE} ${CU_CPP_FILE} COPYONLY)
if(HIP_COMPILER STREQUAL "clang")
@ -341,11 +338,16 @@ elseif(GPU_API STREQUAL "HIP")
if(DOWNLOAD_CUB)
message(STATUS "CUB download requested")
set(CUB_URL "https://github.com/NVlabs/cub/archive/1.12.0.tar.gz" CACHE STRING "URL for CUB tarball")
set(CUB_MD5 "1cf595beacafff104700921bac8519f3" CACHE STRING "MD5 checksum of CUB tarball")
mark_as_advanced(CUB_URL)
mark_as_advanced(CUB_MD5)
include(ExternalProject)
ExternalProject_Add(CUB
GIT_REPOSITORY https://github.com/NVlabs/cub
TIMEOUT 5
URL ${CUB_URL}
URL_MD5 ${CUB_MD5}
PREFIX "${CMAKE_CURRENT_BINARY_DIR}"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
@ -357,7 +359,7 @@ elseif(GPU_API STREQUAL "HIP")
else()
find_package(CUB)
if(NOT CUB_FOUND)
message(FATAL_ERROR "CUB library not found. Help CMake to find it by setting CUB_INCLUDE_DIR, or set DOWNLOAD_VORO=ON to download it")
message(FATAL_ERROR "CUB library not found. Help CMake to find it by setting CUB_INCLUDE_DIR, or set DOWNLOAD_CUB=ON to download it")
endif()
endif()
@ -384,18 +386,21 @@ elseif(GPU_API STREQUAL "HIP")
target_compile_definitions(hip_get_devices PRIVATE -D__HIP_PLATFORM_HCC__)
target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/../include)
elseif(HIP_PLATFORM STREQUAL "amd")
target_compile_definitions(gpu PRIVATE -D__HIP_PLATFORM_AMD__)
target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/../include)
target_compile_definitions(hip_get_devices PRIVATE -D__HIP_PLATFORM_AMD__)
target_include_directories(hip_get_devices PRIVATE ${HIP_ROOT_DIR}/../include)
endif()
target_link_libraries(lammps PRIVATE gpu)
endif()
# GPU package
FindStyleHeaders(${GPU_SOURCES_DIR} FIX_CLASS fix_ FIX)
set_property(GLOBAL PROPERTY "GPU_SOURCES" "${GPU_SOURCES}")
# detects styles which have GPU version
# detect styles which have a GPU version
RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES)
RegisterFixStyle(${GPU_SOURCES_DIR}/fix_gpu.h)
get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES)

View File

@ -19,6 +19,8 @@ if(CURL_FOUND)
target_compile_definitions(lammps PRIVATE -DLMP_NO_SSL_CHECK)
endif()
endif()
set(KIM_EXTRA_UNITTESTS OFF CACHE STRING "Set extra unit tests verbose mode on/off. If on, extra tests are included.")
mark_as_advanced(KIM_EXTRA_UNITTESTS)
find_package(PkgConfig QUIET)
set(DOWNLOAD_KIM_DEFAULT ON)
if(PKG_CONFIG_FOUND)
@ -33,9 +35,13 @@ if(DOWNLOAD_KIM)
include(ExternalProject)
enable_language(C)
enable_language(Fortran)
set(KIM_URL "https://s3.openkim.org/kim-api/kim-api-2.2.1.txz" CACHE STRING "URL for KIM tarball")
set(KIM_MD5 "ae1ddda2ef7017ea07934e519d023dca" CACHE STRING "MD5 checksum of KIM tarball")
mark_as_advanced(KIM_URL)
mark_as_advanced(KIM_MD5)
ExternalProject_Add(kim_build
URL https://s3.openkim.org/kim-api/kim-api-2.1.3.txz
URL_MD5 6ee829a1bbba5f8b9874c88c4c4ebff8
URL ${KIM_URL}
URL_MD5 ${KIM_MD5}
BINARY_DIR build
CMAKE_ARGS ${CMAKE_REQUEST_PIC}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
@ -53,11 +59,28 @@ if(DOWNLOAD_KIM)
add_library(LAMMPS::KIM UNKNOWN IMPORTED)
set_target_properties(LAMMPS::KIM PROPERTIES
IMPORTED_LOCATION "${INSTALL_DIR}/lib/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX}"
INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include/kim-api")
target_link_libraries(lammps PRIVATE LAMMPS::KIM)
INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include/kim-api"
)
add_dependencies(LAMMPS::KIM kim_build)
target_link_libraries(lammps PRIVATE LAMMPS::KIM)
# Set rpath so lammps build directory is relocatable
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
set(_rpath_prefix "@loader_path")
else()
set(_rpath_prefix "$ORIGIN")
endif()
set_target_properties(lmp PROPERTIES
BUILD_RPATH "${_rpath_prefix}/kim_build-prefix/lib"
)
else()
find_package(PkgConfig REQUIRED)
pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=${KIM-API_MIN_VERSION})
target_link_libraries(lammps PRIVATE PkgConfig::KIM-API)
if(KIM-API_FOUND AND KIM-API_VERSION VERSION_GREATER_EQUAL 2.2.0)
# For kim-api >= 2.2.0
find_package(KIM-API 2.2.0 CONFIG REQUIRED)
target_link_libraries(lammps PRIVATE KIM-API::kim-api)
else()
# For kim-api 2.1.3 (consistent with previous version of this file)
find_package(PkgConfig REQUIRED)
pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=${KIM-API_MIN_VERSION})
target_link_libraries(lammps PRIVATE PkgConfig::KIM-API)
endif()
endif()

View File

@ -1,4 +1,7 @@
########################################################################
# As of version 3.3.0 Kokkos requires C++14
set(CMAKE_CXX_STANDARD 14)
########################################################################
# consistency checks and Kokkos options/settings required by LAMMPS
if(Kokkos_ENABLE_CUDA)
message(STATUS "KOKKOS: Enabling CUDA LAMBDA function support")
@ -34,9 +37,13 @@ if(DOWNLOAD_KOKKOS)
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}")
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}")
include(ExternalProject)
set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/3.3.01.tar.gz" CACHE STRING "URL for KOKKOS tarball")
set(KOKKOS_MD5 "08201d1c7cf5bc458ce0f5b44a629d5a" CACHE STRING "MD5 checksum of KOKKOS tarball")
mark_as_advanced(KOKKOS_URL)
mark_as_advanced(KOKKOS_MD5)
ExternalProject_Add(kokkos_build
URL https://github.com/kokkos/kokkos/archive/3.2.00.tar.gz
URL_MD5 81569170fe232e5e64ab074f7cca5e50
URL ${KOKKOS_URL}
URL_MD5 ${KOKKOS_MD5}
CMAKE_ARGS ${KOKKOS_LIB_BUILD_ARGS}
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libkokkoscore.a
)
@ -48,10 +55,12 @@ if(DOWNLOAD_KOKKOS)
INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include"
INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS})
target_link_libraries(lammps PRIVATE LAMMPS::KOKKOS)
target_link_libraries(lmp PRIVATE LAMMPS::KOKKOS)
add_dependencies(LAMMPS::KOKKOS kokkos_build)
elseif(EXTERNAL_KOKKOS)
find_package(Kokkos 3.2.00 REQUIRED CONFIG)
find_package(Kokkos 3.3.01 REQUIRED CONFIG)
target_link_libraries(lammps PRIVATE Kokkos::kokkos)
target_link_libraries(lmp PRIVATE Kokkos::kokkos)
else()
set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos)
set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos)
@ -63,6 +72,7 @@ else()
${LAMMPS_LIB_KOKKOS_BIN_DIR})
target_include_directories(lammps PRIVATE ${Kokkos_INCLUDE_DIRS})
target_link_libraries(lammps PRIVATE kokkos)
target_link_libraries(lmp PRIVATE kokkos)
endif()
target_compile_definitions(lammps PRIVATE -DLMP_KOKKOS)

View File

@ -15,10 +15,14 @@ endif()
option(DOWNLOAD_LATTE "Download the LATTE library instead of using an already installed one" ${DOWNLOAD_LATTE_DEFAULT})
if(DOWNLOAD_LATTE)
message(STATUS "LATTE download requested - we will build our own")
set(LATTE_URL "https://github.com/lanl/LATTE/archive/v1.2.2.tar.gz" CACHE STRING "URL for LATTE tarball")
set(LATTE_MD5 "820e73a457ced178c08c71389a385de7" CACHE STRING "MD5 checksum of LATTE tarball")
mark_as_advanced(LATTE_URL)
mark_as_advanced(LATTE_MD5)
include(ExternalProject)
ExternalProject_Add(latte_build
URL https://github.com/lanl/LATTE/archive/v1.2.2.tar.gz
URL_MD5 820e73a457ced178c08c71389a385de7
URL ${LATTE_URL}
URL_MD5 ${LATTE_MD5}
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}

View File

@ -2,9 +2,8 @@ if(LAMMPS_SIZES STREQUAL BIGBIG)
message(FATAL_ERROR "The MESSAGE Package is not compatible with -DLAMMPS_BIGBIG")
endif()
option(MESSAGE_ZMQ "Use ZeroMQ in MESSAGE package" OFF)
file(GLOB_RECURSE cslib_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.F
${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.c
${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.cpp)
file(GLOB_RECURSE cslib_SOURCES
${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.cpp)
add_library(cslib STATIC ${cslib_SOURCES})
target_compile_definitions(cslib PRIVATE -DLAMMPS_${LAMMPS_SIZES})

View File

@ -0,0 +1,40 @@
# if PYTHON package is included we may also include Python support in MLIAP
set(MLIAP_ENABLE_PYTHON_DEFAULT OFF)
if(PKG_PYTHON)
find_package(Cythonize QUIET)
if(Cythonize_FOUND)
set(MLIAP_ENABLE_PYTHON_DEFAULT ON)
endif()
endif()
option(MLIAP_ENABLE_PYTHON "Build MLIAP package with Python support" ${MLIAP_ENABLE_PYTHON_DEFAULT})
if(MLIAP_ENABLE_PYTHON)
find_package(Cythonize REQUIRED)
if(NOT PKG_PYTHON)
message(FATAL_ERROR "Must enable PYTHON package for including Python support in MLIAP")
endif()
if(CMAKE_VERSION VERSION_LESS 3.12)
if(PYTHONLIBS_VERSION_STRING VERSION_LESS 3.6)
message(FATAL_ERROR "Python support in MLIAP requires Python 3.6 or later")
endif()
else()
if(Python_VERSION VERSION_LESS 3.6)
message(FATAL_ERROR "Python support in MLIAP requires Python 3.6 or later")
endif()
endif()
set(MLIAP_BINARY_DIR ${CMAKE_BINARY_DIR}/cython)
set(MLIAP_CYTHON_SRC ${LAMMPS_SOURCE_DIR}/MLIAP/mliap_model_python_couple.pyx)
get_filename_component(MLIAP_CYTHON_BASE ${MLIAP_CYTHON_SRC} NAME_WE)
file(MAKE_DIRECTORY ${MLIAP_BINARY_DIR})
add_custom_command(OUTPUT ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.cpp ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.h
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${MLIAP_CYTHON_SRC} ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.pyx
COMMAND ${Cythonize_EXECUTABLE} -3 ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.pyx
WORKING_DIRECTORY ${MLIAP_BINARY_DIR}
MAIN_DEPENDENCY ${MLIAP_CYTHON_SRC}
COMMENT "Generating C++ sources with cythonize...")
target_compile_definitions(lammps PRIVATE -DMLIAP_PYTHON)
target_sources(lammps PRIVATE ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.cpp)
target_include_directories(lammps PRIVATE ${MLIAP_BINARY_DIR})
endif()

View File

@ -7,10 +7,15 @@ else()
endif()
option(DOWNLOAD_MSCG "Download MSCG library instead of using an already installed one)" ${DOWNLOAD_MSCG_DEFAULT})
if(DOWNLOAD_MSCG)
set(MSCG_URL "https://github.com/uchicago-voth/MSCG-release/archive/1.7.3.1.tar.gz" CACHE STRING "URL for MSCG tarball")
set(MSCG_MD5 "8c45e269ee13f60b303edd7823866a91" CACHE STRING "MD5 checksum of MSCG tarball")
mark_as_advanced(MSCG_URL)
mark_as_advanced(MSCG_MD5)
include(ExternalProject)
ExternalProject_Add(mscg_build
URL https://github.com/uchicago-voth/MSCG-release/archive/1.7.3.1.tar.gz
URL_MD5 8c45e269ee13f60b303edd7823866a91
URL ${MSCG_URL}
URL_MD5 ${MSCG_MD5}
SOURCE_SUBDIR src/CMake
CMAKE_ARGS ${CMAKE_REQUEST_PIC} ${EXTRA_MSCG_OPTS}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}

View File

@ -30,7 +30,12 @@ if(INTEL_LRT_MODE STREQUAL "THREADS")
endif()
endif()
if(INTEL_LRT_MODE STREQUAL "C++11")
target_compile_definitions(lammps PRIVATE -DLMP_INTEL_USELRT -DLMP_INTEL_LRT11)
if(Threads_FOUND)
target_compile_definitions(lammps PRIVATE -DLMP_INTEL_USELRT -DLMP_INTEL_LRT11)
target_link_libraries(lammps PRIVATE Threads::Threads)
else()
message(FATAL_ERROR "Must have working threads library for Long-range thread support")
endif()
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")

View File

@ -2,8 +2,4 @@ set(MOLFILE_INCLUDE_DIR "${LAMMPS_LIB_SOURCE_DIR}/molfile" CACHE STRING "Path to
set(MOLFILE_INCLUDE_DIRS "${MOLFILE_INCLUDE_DIR}")
add_library(molfile INTERFACE)
target_include_directories(molfile INTERFACE ${MOLFILE_INCLUDE_DIRS})
# no need to link with -ldl on windows
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
target_link_libraries(molfile INTERFACE ${CMAKE_DL_LIBS})
endif()
target_link_libraries(lammps PRIVATE molfile)

View File

@ -53,10 +53,16 @@ if(DOWNLOAD_PLUMED)
elseif(PLUMED_MODE STREQUAL "RUNTIME")
set(PLUMED_BUILD_BYPRODUCTS "<INSTALL_DIR>/lib/libplumedWrapper.a")
endif()
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.7.0/plumed-src-2.7.0.tgz" CACHE STRING "URL for PLUMED tarball")
set(PLUMED_MD5 "95f29dd0c067577f11972ff90dfc7d12" CACHE STRING "MD5 checksum of PLUMED tarball")
mark_as_advanced(PLUMED_URL)
mark_as_advanced(PLUMED_MD5)
include(ExternalProject)
ExternalProject_Add(plumed_build
URL https://github.com/plumed/plumed2/releases/download/v2.6.1/plumed-src-2.6.1.tgz
URL_MD5 89a9a450fc6025299fe16af235957163
URL ${PLUMED_URL}
URL_MD5 ${PLUMED_MD5}
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
${CONFIGURE_REQUEST_PIC}

View File

@ -14,15 +14,19 @@ 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")
set(SCAFACOS_URL "https://github.com/scafacos/scafacos/releases/download/v1.0.1/scafacos-1.0.1.tar.gz" CACHE STRING "URL for SCAFACOS tarball")
set(SCAFACOS_MD5 "bd46d74e3296bd8a444d731bb10c1738" CACHE STRING "MD5 checksum of SCAFACOS tarball")
mark_as_advanced(SCAFACOS_URL)
mark_as_advanced(SCAFACOS_MD5)
# version 1.0.1 needs a patch to compile and linke cleanly with GCC 10 and later.
file(DOWNLOAD https://download.lammps.org/thirdparty/scafacos-1.0.1-fix.diff ${CMAKE_CURRENT_BINARY_DIR}/scafacos-1.0.1.fix.diff
file(DOWNLOAD ${LAMMPS_THIRDPARTY_URL}/scafacos-1.0.1-fix.diff ${CMAKE_CURRENT_BINARY_DIR}/scafacos-1.0.1.fix.diff
EXPECTED_HASH MD5=4baa1333bb28fcce102d505e1992d032)
include(ExternalProject)
ExternalProject_Add(scafacos_build
URL https://github.com/scafacos/scafacos/releases/download/v1.0.1/scafacos-1.0.1.tar.gz
URL_MD5 bd46d74e3296bd8a444d731bb10c1738
URL ${SCAFACOS_URL}
URL_MD5 ${SCAFACOS_MD5}
PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_BINARY_DIR}/scafacos-1.0.1.fix.diff
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --disable-doc
--enable-fcs-solvers=fmm,p2nfft,direct,ewald,p3m

View File

@ -7,10 +7,14 @@ endif()
option(DOWNLOAD_EIGEN3 "Download Eigen3 instead of using an already installed one)" ${DOWNLOAD_EIGEN3_DEFAULT})
if(DOWNLOAD_EIGEN3)
message(STATUS "Eigen3 download requested - we will build our own")
set(EIGEN3_URL "https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz" CACHE STRING "URL for Eigen3 tarball")
set(EIGEN3_MD5 "9e30f67e8531477de4117506fe44669b" CACHE STRING "MD5 checksum of Eigen3 tarball")
mark_as_advanced(EIGEN3_URL)
mark_as_advanced(EIGEN3_MD5)
include(ExternalProject)
ExternalProject_Add(Eigen3_build
URL https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz
URL_MD5 9e30f67e8531477de4117506fe44669b
URL ${EIGEN3_URL}
URL_MD5 ${EIGEN3_MD5}
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
)
ExternalProject_get_property(Eigen3_build SOURCE_DIR)

View File

@ -7,6 +7,11 @@ endif()
option(DOWNLOAD_VORO "Download and compile the Voro++ library instead of using an already installed one" ${DOWNLOAD_VORO_DEFAULT})
if(DOWNLOAD_VORO)
message(STATUS "Voro++ download requested - we will build our own")
set(VORO_URL "${LAMMPS_THIRDPARTY_URL}/voro++-0.4.6.tar.gz" CACHE STRING "URL for Voro++ tarball")
set(VORO_MD5 "2338b824c3b7b25590e18e8df5d68af9" CACHE STRING "MD5 checksum for Voro++ tarball")
mark_as_advanced(VORO_URL)
mark_as_advanced(VORO_MD5)
include(ExternalProject)
if(BUILD_SHARED_LIBS)
@ -22,8 +27,8 @@ if(DOWNLOAD_VORO)
endif()
ExternalProject_Add(voro_build
URL https://download.lammps.org/thirdparty/voro++-0.4.6.tar.gz
URL_MD5 2338b824c3b7b25590e18e8df5d68af9
URL ${VORO_URL}
URL_MD5 ${VORO_MD5}
PATCH_COMMAND patch -b -p0 < ${LAMMPS_LIB_SOURCE_DIR}/voronoi/voro-make.patch
CONFIGURE_COMMAND ""
BUILD_COMMAND make ${VORO_BUILD_OPTIONS}

View File

@ -34,13 +34,24 @@ if(BUILD_LAMMPS_SHELL)
if(NOT LAMMPS_EXCEPTIONS)
message(WARNING "The LAMMPS shell needs LAMMPS_EXCEPTIONS enabled for full functionality")
endif()
add_executable(lammps-shell ${LAMMPS_TOOLS_DIR}/lammps-shell/lammps-shell.cpp)
# include resource compiler to embed icons into the executable on Windows
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
enable_language(RC)
set(ICON_RC_FILE ${LAMMPS_TOOLS_DIR}/lammps-shell/lmpicons.rc)
endif()
add_executable(lammps-shell ${LAMMPS_TOOLS_DIR}/lammps-shell/lammps-shell.cpp ${ICON_RC_FILE})
target_include_directories(lammps-shell PRIVATE ${LAMMPS_TOOLS_DIR}/lammps-shell)
# workaround for broken readline pkg-config file on FreeBSD
if(CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
target_include_directories(lammps-shell PRIVATE /usr/local/include)
endif()
target_link_libraries(lammps-shell PRIVATE lammps PkgConfig::READLINE)
install(TARGETS lammps-shell EXPORT LAMMPS_Targets DESTINATION ${CMAKE_INSTALL_BINDIR})
install(DIRECTORY ${LAMMPS_TOOLS_DIR}/lammps-shell/icons DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/)
install(FILES ${LAMMPS_TOOLS_DIR}/lammps-shell/lammps-shell.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications/)
endif()

35
cmake/Modules/YAML.cmake Normal file
View File

@ -0,0 +1,35 @@
message(STATUS "Downloading and building YAML library")
include(ExternalProject)
set(YAML_URL "https://pyyaml.org/download/libyaml/yaml-0.2.5.tar.gz" CACHE STRING "URL for libyaml tarball")
set(YAML_MD5 "bb15429d8fb787e7d3f1c83ae129a999" CACHE STRING "MD5 checksum of libyaml tarball")
mark_as_advanced(YAML_URL)
mark_as_advanced(YAML_MD5)
ExternalProject_Add(libyaml
URL ${YAML_URL}
URL_MD5 ${YAML_MD5}
SOURCE_DIR "${CMAKE_BINARY_DIR}/yaml-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/yaml-build"
CONFIGURE_COMMAND <SOURCE_DIR>/configure ${CONFIGURE_REQUEST_PIC}
CXX=${CMAKE_CXX_COMPILER}
CC=${CMAKE_C_COMPILER}
--prefix=<INSTALL_DIR> --disable-shared
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libyaml${CMAKE_STATIC_LIBRARY_SUFFIX}
TEST_COMMAND "")
ExternalProject_Get_Property(libyaml INSTALL_DIR)
set(YAML_INCLUDE_DIR ${INSTALL_DIR}/include)
set(YAML_LIBRARY_DIR ${INSTALL_DIR}/lib)
# workaround for CMake 3.10 on ubuntu 18.04
file(MAKE_DIRECTORY ${YAML_INCLUDE_DIR})
file(MAKE_DIRECTORY ${YAML_LIBRARY_DIR})
set(YAML_LIBRARY_PATH ${INSTALL_DIR}/lib/libyaml${CMAKE_STATIC_LIBRARY_SUFFIX})
add_library(Yaml::Yaml UNKNOWN IMPORTED)
set_target_properties(Yaml::Yaml PROPERTIES
IMPORTED_LOCATION ${YAML_LIBRARY_PATH}
INTERFACE_INCLUDE_DIRECTORIES ${YAML_INCLUDE_DIR})
add_dependencies(Yaml::Yaml libyaml)

View File

@ -7,17 +7,20 @@ set(temp_git_info "false")
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 ${LAMMPS_DIR} rev-parse HEAD
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
OUTPUT_VARIABLE temp_git_commit
ERROR_QUIET
WORKING_DIRECTORY ${LAMMPS_DIR}
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} rev-parse --abbrev-ref HEAD
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
OUTPUT_VARIABLE temp_git_branch
ERROR_QUIET
WORKING_DIRECTORY ${LAMMPS_DIR}
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} describe --dirty=-modified
execute_process(COMMAND ${GIT_EXECUTABLE} describe --dirty=-modified
OUTPUT_VARIABLE temp_git_describe
ERROR_QUIET
WORKING_DIRECTORY ${LAMMPS_DIR}
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()

View File

@ -4,7 +4,7 @@
set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE
GRANULAR KSPACE MANYBODY MC MISC MLIAP MOLECULE OPT PERI
POEMS PYTHON QEQ REPLICA RIGID SHOCK SNAP SPIN SRD VORONOI
PLUGIN POEMS PYTHON QEQ REPLICA RIGID SHOCK SNAP SPIN SRD VORONOI
USER-BOCS USER-CGDNA USER-CGSDK USER-COLVARS USER-DIFFRACTION
USER-DPD USER-DRUDE USER-EFF USER-FEP USER-MEAMC USER-MESODPD
USER-MISC USER-MOFFF USER-OMP USER-PHONON USER-REACTION

View File

@ -0,0 +1,18 @@
# preset that will enable the LLVM based Intel compilers with support for MPI and OpenMP (on Linux boxes)
set(CMAKE_CXX_COMPILER "icpx" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "icx" CACHE STRING "" FORCE)
set(CMAKE_Fortran_COMPILER "ifx" CACHE STRING "" FORCE)
set(MPI_CXX "icpx" CACHE STRING "" FORCE)
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
unset(HAVE_OMP_H_INCLUDE CACHE)
set(OpenMP_C "icx" CACHE STRING "" FORCE)
set(OpenMP_C_FLAGS "-qopenmp" CACHE STRING "" FORCE)
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_CXX "icpx" CACHE STRING "" FORCE)
set(OpenMP_CXX_FLAGS "-qopenmp" CACHE STRING "" FORCE)
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_Fortran_FLAGS "-qopenmp" CACHE STRING "" FORCE)
set(OpenMP_omp_LIBRARY "libiomp5.so" CACHE PATH "" FORCE)

16
cmake/presets/pgi.cmake Normal file
View File

@ -0,0 +1,16 @@
# preset that will enable clang/clang++ with support for MPI and OpenMP (on Linux boxes)
set(CMAKE_CXX_COMPILER "pgc++" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "pgcc" CACHE STRING "" FORCE)
set(CMAKE_Fortran_COMPILER "pgfortran" CACHE STRING "" FORCE)
set(MPI_CXX "pgc++" CACHE STRING "" FORCE)
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
unset(HAVE_OMP_H_INCLUDE CACHE)
set(OpenMP_C "pgcc" CACHE STRING "" FORCE)
set(OpenMP_C_FLAGS "-mp" CACHE STRING "" FORCE)
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_CXX "pgc++" CACHE STRING "" FORCE)
set(OpenMP_CXX_FLAGS "-mp" CACHE STRING "" FORCE)
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE)

View File

@ -14,7 +14,6 @@ TXT2RST = $(VENV)/bin/txt2rst
ANCHORCHECK = $(VENV)/bin/rst_anchor_check
SPHINXCONFIG = $(BUILDDIR)/utils/sphinx-config
MATHJAX = $(SPHINXCONFIG)/_static/mathjax
POLYFILL = $(SPHINXCONFIG)/_static/polyfill.js
PYTHON = $(shell which python3)
DOXYGEN = $(shell which doxygen)
@ -48,6 +47,8 @@ HAS_PDFLATEX = YES
endif
endif
# override settings for PIP commands
# PIP_OPTIONS = --cert /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt --proxy http://proxy.mydomain.org
#SPHINXEXTRA = -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiprocessing.cpu_count())') $(shell test -f $(BUILDDIR)/doxygen/xml/run.stamp && printf -- "-E")
@ -81,7 +82,7 @@ help:
# ------------------------------------------
clean-all: clean
rm -rf $(BUILDDIR)/docenv $(MATHJAX) $(POLYFILL) $(BUILDDIR)/LAMMPS.mobi $(BUILDDIR)/LAMMPS.epub $(BUILDDIR)/Manual.pdf
rm -rf $(BUILDDIR)/docenv $(MATHJAX) $(BUILDDIR)/LAMMPS.mobi $(BUILDDIR)/LAMMPS.epub $(BUILDDIR)/Manual.pdf
clean: clean-spelling
rm -rf $(BUILDDIR)/html $(BUILDDIR)/epub $(BUILDDIR)/latex $(BUILDDIR)/doctrees $(BUILDDIR)/doxygen/xml $(BUILDDIR)/doxygen-warn.log $(BUILDDIR)/doxygen/Doxyfile $(SPHINXCONFIG)/conf.py
@ -95,7 +96,7 @@ $(SPHINXCONFIG)/conf.py: $(SPHINXCONFIG)/conf.py.in
-e 's,@LAMMPS_PYTHON_DIR@,$(BUILDDIR)/../python,g' \
-e 's,@LAMMPS_DOC_DIR@,$(BUILDDIR),g' $< > $@
html: xmlgen $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX) $(POLYFILL)
html: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
@$(MAKE) $(MFLAGS) -C graphviz all
@(\
@ -119,7 +120,7 @@ html: xmlgen $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX) $(POLYFILL)
@rm -rf html/PDF/.[sg]*
@echo "Build finished. The HTML pages are in doc/html."
spelling: xmlgen $(VENV) $(SPHINXCONFIG)/false_positives.txt
spelling: xmlgen $(SPHINXCONFIG)/conf.py $(VENV) $(SPHINXCONFIG)/false_positives.txt
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
@(\
. $(VENV)/bin/activate ; env PYTHONWARNINGS= \
@ -229,20 +230,13 @@ $(VENV):
@( \
$(VIRTUALENV) -p $(PYTHON) $(VENV); \
. $(VENV)/bin/activate; \
pip install --upgrade pip; \
pip install --use-feature=2020-resolver -r $(BUILDDIR)/utils/requirements.txt; \
pip $(PIP_OPTIONS) install --upgrade pip; \
pip $(PIP_OPTIONS) install -r $(BUILDDIR)/utils/requirements.txt; \
deactivate;\
)
$(MATHJAX):
@git clone --depth 1 https://github.com/mathjax/MathJax.git $@
# fall back to using wget and/or unencrypted download, if curl fails
$(POLYFILL): $(MATHJAX)
@curl -s -o $@ "https://polyfill.io/v3/polyfill.min.js?features=es6" > /dev/null 2>&1 || \
curl -s -o $@ "http://polyfill.io/v3/polyfill.min.js?features=es6" > /dev/null 2>&1 || \
wget -O $@ "https://polyfill.io/v3/polyfill.min.js?features=es6" > /dev/null 2>&1 || \
wget -O $@ "http://polyfill.io/v3/polyfill.min.js?features=es6" > /dev/null 2>&1
@git clone --depth 1 git://github.com/mathjax/MathJax.git $@
$(TXT2RST) $(ANCHORCHECK): $(VENV)
@( \

View File

@ -424,6 +424,8 @@ INPUT = @LAMMPS_SOURCE_DIR@/utils.cpp \
@LAMMPS_SOURCE_DIR@/input.h \
@LAMMPS_SOURCE_DIR@/tokenizer.cpp \
@LAMMPS_SOURCE_DIR@/tokenizer.h \
@LAMMPS_SOURCE_DIR@/arg_info.cpp \
@LAMMPS_SOURCE_DIR@/arg_info.h \
@LAMMPS_SOURCE_DIR@/text_file_reader.cpp \
@LAMMPS_SOURCE_DIR@/text_file_reader.h \
@LAMMPS_SOURCE_DIR@/potential_file_reader.cpp \

View File

@ -95,7 +95,7 @@ on the pull request discussion page on GitHub, so that other developers
can later review the entire discussion after the fact and understand the
rationale behind choices made. Exceptions to this policy are technical
discussions, that are centered on tools or policies themselves
(git, github, c++) rather than on the content of the pull request.
(git, GitHub, c++) rather than on the content of the pull request.
### Checklist for Pull Requests

View File

@ -1,4 +1,4 @@
.TH LAMMPS "22 October 2020" "2020-10-22"
.TH LAMMPS "8 April 2021" "2021-04-08"
.SH NAME
.B LAMMPS
\- Molecular Dynamics Simulator.

View File

@ -1,7 +1,7 @@
Basic build options
===================
The following topics are covered on this page, for building both with
The following topics are covered on this page, for building with both
CMake and make:
* :ref:`Serial vs parallel build <serial>`
@ -95,7 +95,7 @@ standard. A more detailed discussion of that is below.
.. note::
The file ``src/STUBS/mpi.c`` provides a CPU timer function
The file ``src/STUBS/mpi.cpp`` provides a CPU timer function
called ``MPI_Wtime()`` that calls ``gettimeofday()``. If your
operating system does not support ``gettimeofday()``, you will
need to insert code to call another timer. Note that the
@ -234,14 +234,21 @@ LAMMPS.
cmake ../cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_Fortran_COMPILER=gfortran
# Building with Intel Compilers:
cmake ../cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DCMAKE_Fortran_COMPILER=ifort
# Building with Intel oneAPI Compilers:
cmake ../cmake -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DCMAKE_Fortran_COMPILER=ifx
# Building with LLVM/Clang Compilers:
cmake ../cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_Fortran_COMPILER=flang
# Building with PGI/Nvidia Compilers:
cmake ../cmake -DCMAKE_C_COMPILER=pgcc -DCMAKE_CXX_COMPILER=pgc++ -DCMAKE_Fortran_COMPILER=pgfortran
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 compiler
toolchain to the Intel compilers.
toolchain to the legacy Intel compilers, `-C ../cmake/presets/oneapi.cmake`
will switch to the LLVM based oneAPI Intel compilers,
and `-C ../cmake/presets/pgi.cmake`
will switch the compiler to the PGI compilers.
In addition you can set ``CMAKE_TUNE_FLAGS`` to specifically add
compiler flags to tune for optimal performance on given hosts. By
@ -523,6 +530,20 @@ you want to copy files to is protected.
make # perform make after CMake command
make install # perform the installation into prefix
During the installation process CMake will by default remove any runtime
path settings for loading shared libraries. Because of this you may
have to set or modify the ``LD_LIBRARY_PATH`` (or ``DYLD_LIBRARY_PATH``)
environment variable, if you are installing LAMMPS into a non-system
location and/or are linking to libraries in a non-system location that
depend on such runtime path settings.
As an alternative you may set the CMake variable ``LAMMPS_INSTALL_RPATH``
to ``on`` and then the runtime paths for any linked shared libraries
and the library installation folder for the LAMMPS library will be
embedded and thus the requirement to set environment variables is avoided.
The ``off`` setting is usually preferred for packaged binaries or when
setting up environment modules, the ``on`` setting is more convenient
for installing software into a non-system or personal folder.
.. tab:: Traditional make
There is no "install" option in the ``src/Makefile`` for LAMMPS.

View File

@ -108,11 +108,18 @@ results over a given number of steps and operations within a given
error margin). The status of this automated testing can be viewed on
`https://ci.lammps.org <https://ci.lammps.org>`_.
The scripts and inputs for integration, run, and regression testing
are maintained in a
`separate repository <https://github.com/lammps/lammps-testing>`_
of the LAMMPS project on GitHub.
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 `PyYAML <http://pyyaml.org/>`_ library and development
headers to compile and will download and compile a recent version of the
It requires the `YAML <http://pyyaml.org/>`_ library and development
headers (if those are not found locally a recent version will be
downloaded and compiled along with LAMMPS and the test program) to
compile and will download and compile a specific recent version of the
`Googletest <https://github.com/google/googletest/>`_ C++ test framework
for implementing the tests.
@ -162,22 +169,21 @@ The ``ctest`` command has many options, the most important ones are:
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.
The tests will adapt to the compilation settings of LAMMPS, so that tests
will be skipped if prerequisite features are not available in LAMMPS.
.. note::
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.
The unit test framework was added in spring 2020 and is under active
development. The coverage is not complete and will be expanded over
time.
Tests for styles of the same kind of style (e.g. pair styles or bond
styles) are performed with the same test executable using different
input files in YAML format. So to add a test for another style of the
same kind it may be sufficient to add a suitable YAML file.
:doc:`Detailed instructions for adding tests <Developer_unittest>` are
provided in the Programmer Guide part of the manual.
Unit tests for force styles
^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -37,6 +37,7 @@ This is the list of packages that may require additional steps.
* :ref:`KOKKOS <kokkos>`
* :ref:`LATTE <latte>`
* :ref:`MESSAGE <message>`
* :ref:`MLIAP <mliap>`
* :ref:`MSCG <mscg>`
* :ref:`OPT <opt>`
* :ref:`POEMS <poems>`
@ -119,21 +120,21 @@ CMake build
-D GPU_API=value # value = opencl (default) or cuda or hip
-D GPU_PREC=value # precision setting
# value = double or mixed (default) or single
-D OCL_TUNE=value # hardware choice for GPU_API=opencl
# generic (default) or intel (Intel CPU) or fermi, kepler, cypress (NVIDIA)
-D GPU_ARCH=value # primary GPU hardware choice for GPU_API=cuda
# value = sm_XX, see below
# default is sm_50
-D HIP_ARCH=value # primary GPU hardware choice for GPU_API=hip
# value depends on selected HIP_PLATFORM
# default is 'gfx906' for HIP_PLATFORM=hcc and 'sm_50' for HIP_PLATFORM=nvcc
# default is 'gfx906' for HIP_PLATFORM=amd and 'sm_50' for HIP_PLATFORM=nvcc
-D HIP_USE_DEVICE_SORT=value # enables GPU sorting
# value = yes (default) or no
-D CUDPP_OPT=value # optimization setting for GPU_API=cuda
# enables CUDA Performance Primitives Optimizations
# value = yes (default) or no
-D CUDPP_OPT=value # use GPU binning on with CUDA (should be off for modern GPUs)
# enables CUDA Performance Primitives, must be "no" for CUDA_MPS_SUPPORT=yes
# value = yes or no (default)
-D CUDA_MPS_SUPPORT=value # enables some tweaks required to run with active nvidia-cuda-mps daemon
# value = yes or no (default)
-D USE_STATIC_OPENCL_LOADER=value # downloads/includes OpenCL ICD loader library, no local OpenCL headers/libs needed
# value = yes (default) or no
:code:`GPU_ARCH` settings for different GPU hardware is as follows:
@ -160,19 +161,32 @@ When building with CMake, you **must NOT** build the GPU library in ``lib/gpu``
using the traditional build procedure. CMake will detect files generated by that
process and will terminate with an error and a suggestion for how to remove them.
If you are compiling for OpenCL, the default setting is to download, build, and
link with a static OpenCL ICD loader library and standard OpenCL headers. This
way no local OpenCL development headers or library needs to be present and only
OpenCL compatible drivers need to be installed to use OpenCL. If this is not
desired, you can set :code:`USE_STATIC_OPENCL_LOADER` to :code:`no`.
If you are compiling with HIP, note that before running CMake you will have to
set appropriate environment variables. Some variables such as
:code:`HCC_AMDGPU_TARGET` or :code:`CUDA_PATH` are necessary for :code:`hipcc`
:code:`HCC_AMDGPU_TARGET` (for ROCm <= 4.0) or :code:`CUDA_PATH` are necessary for :code:`hipcc`
and the linker to work correctly.
.. code:: bash
# AMDGPU target
# AMDGPU target (ROCm <= 4.0)
export HIP_PLATFORM=hcc
export HCC_AMDGPU_TARGET=gfx906
cmake -D PKG_GPU=on -D GPU_API=HIP -D HIP_ARCH=gfx906 -D CMAKE_CXX_COMPILER=hipcc ..
make -j 4
.. code:: bash
# AMDGPU target (ROCm >= 4.1)
export HIP_PLATFORM=amd
cmake -D PKG_GPU=on -D GPU_API=HIP -D HIP_ARCH=gfx906 -D CMAKE_CXX_COMPILER=hipcc ..
make -j 4
.. code:: bash
# CUDA target (not recommended, use GPU_ARCH=cuda)
@ -218,11 +232,20 @@ Makefile if desired:
* ``CUDA_PRECISION`` = precision (double, mixed, single)
* ``EXTRAMAKE`` = which Makefile.lammps.\* file to copy to Makefile.lammps
The file Makefile.linux_multi is set up to include support for multiple
The file Makefile.cuda is set up to include support for multiple
GPU architectures as supported by the CUDA toolkit in use. This is done
through using the "--gencode " flag, which can be used multiple times and
thus support all GPU architectures supported by your CUDA compiler.
To enable GPU binning via CUDA performance primitives set the Makefile variable
``CUDPP_OPT = -DUSE_CUDPP -Icudpp_mini``. This should **not** be used with
most modern GPUs.
To support the CUDA multiprocessor server you can set the define
``-DCUDA_PROXY``. Please note that in this case you must **not** use
the CUDA performance primitives and thus set the variable ``CUDPP_OPT``
to empty.
If the library build is successful, 3 files should be created:
``lib/gpu/libgpu.a``\ , ``lib/gpu/nvc_get_devices``\ , and
``lib/gpu/Makefile.lammps``\ . The latter has settings that enable LAMMPS
@ -249,18 +272,18 @@ To build with this package, the KIM library with API v2 must be downloaded
and built on your system. It must include the KIM models that you want to
use with LAMMPS.
If you would like to use the :doc:`kim_query <kim_commands>`
If you would like to use the :doc:`kim query <kim_commands>`
command, you also need to have libcurl installed with the matching
development headers and the curl-config tool.
If you would like to use the :doc:`kim_property <kim_commands>`
If you would like to use the :doc:`kim property <kim_commands>`
command, you need to build LAMMPS with the PYTHON package installed
and linked to Python 3.6 or later. See the :ref:`PYTHON package build info <python>`
for more details on this. After successfully building LAMMPS with Python, you
also need to install the kim-property Python package, which can be easily done using
*pip* as ``pip install kim-property``, or from the *conda-forge* channel as
``conda install kim-property`` if LAMMPS is built in Conda. More detailed
information is available at:
also need to install the ``kim-property`` Python package, which can be easily
done using *pip* as ``pip install kim-property``, or from the *conda-forge*
channel as ``conda install kim-property`` if LAMMPS is built in Conda. More
detailed information is available at:
`kim-property installation <https://github.com/openkim/kim-property#installing-kim-property>`_.
In addition to installing the KIM API, it is also necessary to install the
@ -282,6 +305,7 @@ minutes to hours) to build. Of course you only need to do that once.)
-D DOWNLOAD_KIM=value # download OpenKIM API v2 for build, value = no (default) or yes
-D LMP_DEBUG_CURL=value # set libcurl verbose mode on/off, value = off (default) or on
-D LMP_NO_SSL_CHECK=value # tell libcurl to not verify the peer, value = no (default) or yes
-D KIM_EXTRA_UNITTESTS=value # enables extra unit tests, value = no (default) or yes
If ``DOWNLOAD_KIM`` is set to *yes* (or *on*), the KIM API library
will be downloaded and built inside the CMake build directory. If
@ -290,11 +314,16 @@ minutes to hours) to build. Of course you only need to do that once.)
``PKG_CONFIG_PATH`` environment variable so that libkim-api can be
found, or run the command ``source kim-api-activate``.
Extra unit tests can only be available if they are explicitly requested
(``KIM_EXTRA_UNITTESTS`` is set to *yes* (or *on*)) and the prerequisites
are met. See :ref:`KIM Extra unit tests <kim_extra_unittests>` for
more details on this.
.. tab:: Traditional make
You can download and build the KIM library manually if you prefer;
follow the instructions in ``lib/kim/README``. You can also do
this in one step from the lammps/src dir, using a command like
this in one step from the lammps/src directory, using a command like
these, which simply invoke the ``lib/kim/Install.py`` script with
the specified args.
@ -314,7 +343,7 @@ minutes to hours) to build. Of course you only need to do that once.)
.. code-block:: make
LMP_INC = -DLMP_NO_SSL_CHECK
LMP_INC = -DLMP_NO_SSL_CHECK
Debugging OpenKIM web queries in LAMMPS
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -338,6 +367,39 @@ specify your own CA cert path by setting the environment variable
``CURL_CA_BUNDLE`` to the path of your choice. A call to the KIM web
query would get this value from the environment variable.
.. _kim_extra_unittests:
KIM Extra unit tests (CMake only)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
During development, testing, or debugging, if
:doc:`unit testing <Build_development>` is enabled in LAMMPS, one can also
enable extra tests on :doc:`KIM commands <kim_commands>` by setting the
``KIM_EXTRA_UNITTESTS`` to *yes* (or *on*).
Enabling the extra unit tests have some requirements,
* It requires to have internet access.
* It requires to have libcurl installed with the matching development headers
and the curl-config tool.
* It requires to build LAMMPS with the PYTHON package installed and linked to
Python 3.6 or later. See the :ref:`PYTHON package build info <python>` for
more details on this.
* It requires to have ``kim-property`` Python package installed, which can be
easily done using *pip* as ``pip install kim-property``, or from the
*conda-forge* channel as ``conda install kim-property`` if LAMMPS is built in
Conda. More detailed information is available at:
`kim-property installation <https://github.com/openkim/kim-property#installing-kim-property>`_.
* It is also necessary to install
``EAM_Dynamo_MendelevAckland_2007v3_Zr__MO_004835508849_000``,
``EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005``, and
``LennardJones612_UniversalShifted__MO_959249795837_003`` KIM models.
See `Obtaining KIM Models <http://openkim.org/doc/usage/obtaining-models>`_
to learn how to install a pre-built binary of the OpenKIM Repository of
Models or see
`Installing KIM Models <https://openkim.org/doc/usage/obtaining-models/#installing_models>`_
to learn how to install the specific KIM models.
----------
.. _kokkos:
@ -482,11 +544,14 @@ They must be specified in uppercase.
* - VEGA906
- GPU
- AMD GPU MI50/MI60 GFX906
* - VEGA908
- GPU
- AMD GPU GFX908
* - INTEL_GEN
- GPU
- Intel GPUs Gen9+
This list was last updated for version 3.2 of the Kokkos library.
This list was last updated for version 3.3 of the Kokkos library.
.. tabs::
@ -732,6 +797,54 @@ be installed on your system.
----------
.. _mliap:
MLIAP package
---------------------------
Building the MLIAP package requires including the :ref:`SNAP <PKG-SNAP>`
package. There will be an error message if this requirement is not satisfied.
Using the *mliappy* model also requires enabling Python support, which
in turn requires the :ref:`PYTHON <PKG-PYTHON>`
package **and** requires you have the `cython <https://cython.org>`_ software
installed and with it a working ``cythonize`` command. This feature requires
compiling LAMMPS with Python version 3.6 or later.
.. tabs::
.. tab:: CMake build
.. code-block:: bash
-D MLIAP_ENABLE_PYTHON=value # enable mliappy model (default is autodetect)
Without this setting, CMake will check whether it can find a
suitable Python version and the ``cythonize`` command and choose
the default accordingly. During the build procedure the provided
.pyx file(s) will be automatically translated to C++ code and compiled.
Please do **not** run ``cythonize`` manually in the ``src/MLIAP`` folder,
as that can lead to compilation errors if Python support is not enabled.
If you did by accident, please remove the generated .cpp and .h files.
.. tab:: Traditional make
The build uses the ``lib/python/Makefile.mliap_python`` file in the
compile/link process to add a rule to update the files generated by
the ``cythonize`` command in case the corresponding .pyx file(s) were
modified. You may need to modify ``lib/python/Makefile.lammps``
if the LAMMPS build fails.
To manually enforce building MLIAP with Python support enabled,
you can add
``-DMLIAP_PYTHON`` to the ``LMP_INC`` variable in your machine makefile.
You may have to manually run the ``cythonize`` command on .pyx file(s)
in the ``src`` folder, if this is not automatically done during
installing the MLIAP package. Please do **not** run ``cythonize``
in the ``src/MLIAP`` folder, as that can lead to compilation errors
if Python support is not enabled.
If you did by accident, please remove the generated .cpp and .h files.
----------
.. _mscg:
MSCG package

View File

@ -20,16 +20,8 @@ the suffix ``.so.0`` (or some other number).
.. note::
Care should be taken to use the same MPI library for the calling code
and the LAMMPS library. The ``library.h`` file includes ``mpi.h``
and uses definitions from it so those need to be available and
consistent. When LAMMPS is compiled with the included STUBS MPI
library, then its ``mpi.h`` file needs to be included. While it is
technically possible to use a full MPI library in the calling code
and link to a serial LAMMPS library compiled with MPI STUBS, it is
recommended to use the *same* MPI library for both, and then use
``MPI_Comm_split()`` in the calling code to pass a suitable
communicator with a subset of MPI ranks to the function creating the
LAMMPS instance.
and the LAMMPS library unless LAMMPS is to be compiled without (real)
MPI support using the include STUBS MPI library.
Link with LAMMPS as a static library
------------------------------------
@ -110,7 +102,7 @@ executable, that are also required to link the LAMMPS executable.
.. code-block:: bash
gcc -c -O -I${HOME}/lammps/src/STUBS -I${HOME}/lammps/src -caller.c
gcc -c -O -I${HOME}/lammps/src -caller.c
g++ -o caller caller.o -L${HOME}/lammps/lib/poems \
-L${HOME}/lammps/src/STUBS -L${HOME}/lammps/src \
-llammps_serial -lpoems -lmpi_stubs
@ -174,7 +166,7 @@ the POEMS package installed becomes:
.. code-block:: bash
gcc -c -O -I${HOME}/lammps/src/STUBS -I${HOME}/lammps/src -caller.c
gcc -c -O -I${HOME}/lammps/src -caller.c
g++ -o caller caller.o -L${HOME}/lammps/src -llammps_serial
Locating liblammps.so at runtime

View File

@ -73,8 +73,12 @@ after the documentation folder is returned to a pristine state with
For the documentation build a python virtual environment is set up in
the folder ``doc/docenv`` and various python packages are installed into
that virtual environment via the ``pip`` tool. For rendering embedded
LaTeX code also the `MathJax <https://www.mathjax.org/>`_ and the
`Polyfill <https://polyfill.io/>`_ JavaScript engines need to be downloaded.
LaTeX code also the `MathJax <https://www.mathjax.org/>`_ JavaScript
engine needs to be downloaded. If you need to pass additional options
to the pip commands to work (e.g. to use a web proxy or to point to
additional SSL certificates) you can set them via the ``PIP_OPTIONS``
environment variable or uncomment and edit the ``PIP_OPTIONS`` setting
at beginning of the makefile.
The actual translation is then done via ``make`` commands in the doc
folder. The following ``make`` commands are available:
@ -108,7 +112,10 @@ installation of the HTML manual pages into the "install" step when
installing LAMMPS after the CMake build via ``cmake --build . --target
install``. The documentation build is included in the default build
target, but can also be requested independently with
``cmake --build . --target doc``.
``cmake --build . --target doc``. If you need to pass additional options
to the pip commands to work (e.g. to use a web proxy or to point to
additional SSL certificates) you can set them via the ``PIP_OPTIONS``
environment variable.
.. code-block:: bash

View File

@ -160,6 +160,7 @@ one of them as a starting point and customize it to your needs.
cmake -C ../cmake/presets/clang.cmake [OPTIONS] ../cmake # change settings to use the Clang compilers by default
cmake -C ../cmake/presets/gcc.cmake [OPTIONS] ../cmake # change settings to use the GNU compilers by default
cmake -C ../cmake/presets/intel.cmake [OPTIONS] ../cmake # change settings to use the Intel compilers by default
cmake -C ../cmake/presets/pgi.cmake [OPTIONS] ../cmake # change settings to use the PGI 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

View File

@ -60,11 +60,7 @@ An alphabetic list of all general LAMMPS commands.
* :doc:`include <include>`
* :doc:`info <info>`
* :doc:`jump <jump>`
* :doc:`kim_init <kim_commands>`
* :doc:`kim_interactions <kim_commands>`
* :doc:`kim_param <kim_commands>`
* :doc:`kim_property <kim_commands>`
* :doc:`kim_query <kim_commands>`
* :doc:`kim <kim_commands>`
* :doc:`kspace_modify <kspace_modify>`
* :doc:`kspace_style <kspace_style>`
* :doc:`label <label>`
@ -90,6 +86,7 @@ An alphabetic list of all general LAMMPS commands.
* :doc:`pair_style <pair_style>`
* :doc:`pair_write <pair_write>`
* :doc:`partition <partition>`
* :doc:`plugin <plugin>`
* :doc:`prd <prd>`
* :doc:`print <print>`
* :doc:`processors <processors>`

View File

@ -35,6 +35,7 @@ OPT.
* :doc:`class2 (ko) <bond_class2>`
* :doc:`fene (iko) <bond_fene>`
* :doc:`fene/expand (o) <bond_fene_expand>`
* :doc:`gaussian <bond_gaussian>`
* :doc:`gromos (o) <bond_gromos>`
* :doc:`harmonic (iko) <bond_harmonic>`
* :doc:`harmonic/shift (o) <bond_harmonic_shift>`
@ -84,6 +85,7 @@ OPT.
* :doc:`dipole (o) <angle_dipole>`
* :doc:`fourier (o) <angle_fourier>`
* :doc:`fourier/simple (o) <angle_fourier_simple>`
* :doc:`gaussian <angle_gaussian>` - multicentered Gaussian-based angle potential
* :doc:`harmonic (iko) <angle_harmonic>`
* :doc:`mm3 <angle_mm3>`
* :doc:`quartic (o) <angle_quartic>`
@ -124,7 +126,7 @@ OPT.
* :doc:`quadratic (o) <dihedral_quadratic>`
* :doc:`spherical <dihedral_spherical>`
* :doc:`table (o) <dihedral_table>`
* :doc:`table/cut <dihedral_table_cut>`
* :doc:`table/cut <dihedral_table>`
.. _improper:

View File

@ -62,6 +62,7 @@ OPT.
* :doc:`efield <fix_efield>`
* :doc:`ehex <fix_ehex>`
* :doc:`electron/stopping <fix_electron_stopping>`
* :doc:`electron/stopping/fit <fix_electron_stopping>`
* :doc:`enforce2d (k) <fix_enforce2d>`
* :doc:`eos/cv <fix_eos_cv>`
* :doc:`eos/table <fix_eos_table>`
@ -113,7 +114,7 @@ OPT.
* :doc:`nph/eff <fix_nh_eff>`
* :doc:`nph/sphere (o) <fix_nph_sphere>`
* :doc:`nphug <fix_nphug>`
* :doc:`npt (iko) <fix_nh>`
* :doc:`npt (giko) <fix_nh>`
* :doc:`npt/asphere (o) <fix_npt_asphere>`
* :doc:`npt/body <fix_npt_body>`
* :doc:`npt/cauchy <fix_npt_cauchy>`
@ -121,8 +122,8 @@ OPT.
* :doc:`npt/sphere (o) <fix_npt_sphere>`
* :doc:`npt/uef <fix_nh_uef>`
* :doc:`numdiff <fix_numdiff>`
* :doc:`nve (iko) <fix_nve>`
* :doc:`nve/asphere (i) <fix_nve_asphere>`
* :doc:`nve (giko) <fix_nve>`
* :doc:`nve/asphere (gi) <fix_nve_asphere>`
* :doc:`nve/asphere/noforce <fix_nve_asphere_noforce>`
* :doc:`nve/awpmd <fix_nve_awpmd>`
* :doc:`nve/body <fix_nve_body>`
@ -137,7 +138,7 @@ OPT.
* :doc:`nve/spin <fix_nve_spin>`
* :doc:`nve/tri <fix_nve_tri>`
* :doc:`nvk <fix_nvk>`
* :doc:`nvt (iko) <fix_nh>`
* :doc:`nvt (giko) <fix_nh>`
* :doc:`nvt/asphere (o) <fix_nvt_asphere>`
* :doc:`nvt/body <fix_nvt_body>`
* :doc:`nvt/eff <fix_nh_eff>`
@ -195,7 +196,7 @@ OPT.
* :doc:`saed/vtk <fix_saed_vtk>`
* :doc:`setforce (k) <fix_setforce>`
* :doc:`setforce/spin <fix_setforce>`
* :doc:`shake <fix_shake>`
* :doc:`shake (k) <fix_shake>`
* :doc:`shardlow (k) <fix_shardlow>`
* :doc:`smd <fix_smd>`
* :doc:`smd/adjust_dt <fix_smd_adjust_dt>`
@ -220,6 +221,8 @@ OPT.
* :doc:`temp/rescale <fix_temp_rescale>`
* :doc:`temp/rescale/eff <fix_temp_rescale_eff>`
* :doc:`tfmc <fix_tfmc>`
* :doc:`tgnpt/drude <fix_tgnh_drude>`
* :doc:`tgnvt/drude <fix_tgnh_drude>`
* :doc:`thermal/conductivity <fix_thermal_conductivity>`
* :doc:`ti/spring <fix_ti_spring>`
* :doc:`tmd <fix_tmd>`

View File

@ -96,6 +96,7 @@ OPT.
* :doc:`eam/cd <pair_eam>`
* :doc:`eam/cd/old <pair_eam>`
* :doc:`eam/fs (gikot) <pair_eam>`
* :doc:`eam/he <pair_eam>`
* :doc:`edip (o) <pair_edip>`
* :doc:`edip/multi <pair_edip>`
* :doc:`edpd <pair_mesodpd>`
@ -121,7 +122,7 @@ OPT.
* :doc:`lebedeva/z <pair_lebedeva_z>`
* :doc:`lennard/mdf <pair_mdf>`
* :doc:`line/lj <pair_line_lj>`
* :doc:`lj/charmm/coul/charmm (iko) <pair_charmm>`
* :doc:`lj/charmm/coul/charmm (giko) <pair_charmm>`
* :doc:`lj/charmm/coul/charmm/implicit (ko) <pair_charmm>`
* :doc:`lj/charmm/coul/long (gikot) <pair_charmm>`
* :doc:`lj/charmm/coul/long/soft (o) <pair_fep_soft>`
@ -162,6 +163,7 @@ OPT.
* :doc:`lj/long/dipole/long <pair_dipole>`
* :doc:`lj/long/tip4p/long (o) <pair_lj_long>`
* :doc:`lj/mdf <pair_mdf>`
* :doc:`lj/relres (o) <pair_lj_relres>`
* :doc:`lj/sdk (gko) <pair_sdk>`
* :doc:`lj/sdk/coul/long (go) <pair_sdk>`
* :doc:`lj/sdk/coul/msm (o) <pair_sdk>`
@ -185,7 +187,7 @@ OPT.
* :doc:`mgpt <pair_mgpt>`
* :doc:`mie/cut (g) <pair_mie>`
* :doc:`mliap <pair_mliap>`
* :doc:`mm3/switch3/coulgauss/long <pair_mm3_switch3_coulgauss_long>`
* :doc:`mm3/switch3/coulgauss/long <pair_lj_switch3_coulgauss_long>`
* :doc:`momb <pair_momb>`
* :doc:`morse (gkot) <pair_morse>`
* :doc:`morse/smooth/linear (o) <pair_morse>`
@ -241,6 +243,7 @@ OPT.
* :doc:`spin/dipole/long <pair_spin_dipole>`
* :doc:`spin/dmi <pair_spin_dmi>`
* :doc:`spin/exchange <pair_spin_exchange>`
* :doc:`spin/exchange/biquadratic <pair_spin_exchange>`
* :doc:`spin/magelec <pair_spin_magelec>`
* :doc:`spin/neel <pair_spin_neel>`
* :doc:`srp <pair_srp>`
@ -261,6 +264,7 @@ OPT.
* :doc:`ufm (got) <pair_ufm>`
* :doc:`vashishta (gko) <pair_vashishta>`
* :doc:`vashishta/table (o) <pair_vashishta>`
* :doc:`wf/cut <pair_wf_cut>`
* :doc:`yukawa (gko) <pair_yukawa>`
* :doc:`yukawa/colloid (go) <pair_yukawa_colloid>`
* :doc:`zbl (gko) <pair_zbl>`

View File

@ -162,3 +162,26 @@ LAMMPS:
triple quotes can be nested in the usual manner. See the doc pages
for those commands for examples. Only one of level of nesting is
allowed, but that should be sufficient for most use cases.
.. admonition:: ASCII versus UTF-8
:class: note
LAMMPS expects and processes 7-bit ASCII format text internally.
Many modern environments use UTF-8 encoding, which is a superset
of the 7-bit ASCII character table and thus mostly compatible.
However, there are several non-ASCII characters that can look
very similar to their ASCII equivalents or are invisible (so they
look like a blank), but are encoded differently. Web browsers,
PDF viewers, document editors are known to sometimes replace one
with the other for a better looking output. However, that can
lead to problems, for instance, when using cut-n-paste of input
file examples from web pages, or when using a document editor
(not a dedicated plain text editor) for writing LAMMPS inputs.
LAMMPS will try to detect this and substitute the non-ASCII
characters with their ASCII equivalents where known. There also
is going to be a warning printed, if this occurs. It is
recommended to avoid such characters altogether in LAMMPS input,
data and potential files. The replacement tables are likely
incomplete and dependent on users reporting problems processing
correctly looking input containing UTF-8 encoded non-ASCII
characters.

View File

@ -13,5 +13,8 @@ of time and requests from the LAMMPS user community.
Developer_org
Developer_flow
Developer_write
Developer_notes
Developer_plugins
Developer_unittest
Classes
Developer_utils

227
doc/src/Developer_notes.rst Normal file
View File

@ -0,0 +1,227 @@
Notes for developers and code maintainers
-----------------------------------------
This section documents how some of the code functionality within
LAMMPS works at a conceptual level. Comments on code in source files
typically document what a variable stores, what a small section of
code does, or what a function does and its input/outputs. The topics
on this page are intended to document code functionality at a higher level.
Fix contributions to instantaneous energy, virial, and cumulative energy
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Fixes can calculate contributions to the instantaneous energy and/or
virial of the system, both in a global and peratom sense. Fixes that
perform thermostatting or barostatting can calculate the cumulative
energy they add to or subtract from the system, which is accessed by
the *ecouple* and *econserve* thermodynamic keywords. This subsection
explains how both work and what flags to set in a new fix to enable
this functionality.
Let's start with thermostatting and barostatting fixes. Examples are
the :doc:`fix langevin <fix_langevin>` and :doc:`fix npt <fix_nh>`
commands. Here is what the fix needs to do:
* Set the variable *ecouple_flag* = 1 in the constructor. Also set
*scalar_flag* = 1, *extscalar* = 1, and *global_freq* to a timestep
increment which matches how often the fix is invoked.
* Implement a compute_scalar() method that returns the cumulative
energy added or subtracted by the fix, e.g. by rescaling the
velocity of atoms. The sign convention is that subtracted energy is
positive, added energy is negative. This must be the total energy
added to the entire system, i.e. an "extensive" quantity, not a
per-atom energy. Cumulative means the summed energy since the fix
was instantiated, even across multiple runs. This is because the
energy is used by the *econserve* thermodynamic keyword to check
that the fix is conserving the total energy of the system,
i.e. potential energy + kinetic energy + coupling energy = a
constant.
And here is how the code operates:
* The Modify class makes a list of all fixes that set *ecouple_flag* = 1.
* The :doc:`thermo_style custom <thermo_style>` command defines
*ecouple* and *econserve* keywords.
* These keywords sum the energy contributions from all the
*ecouple_flag* = 1 fixes by invoking the energy_couple() method in
the Modify class, which calls the compute_scalar() method of each
fix in the list.
------------------
Next, here is how a fix contributes to the instantaneous energy and
virial of the system. First, it sets any or all of these flags to a
value of 1 in their constructor:
* *energy_global_flag* to contribute to global energy, example: :doc:`fix indent <fix_indent>`
* *energy_peratom_flag* to contribute to peratom energy, :doc:`fix cmap <fix_cmap>`
* *virial_global_flag* to contribute to global virial, example: :doc:`fix wall <fix_wall>`
* *virial_peratom_flag* to contribute to peratom virial, example: :doc:`fix wall <fix_wall>`
The fix must also do the following:
* For global energy, implement a compute_scalar() method that returns
the energy added or subtracted on this timestep. Here the sign
convention is that added energy is positive, subtracted energy is
negative.
* For peratom energy, invoke the ev_init(eflag,vflag) function each
time the fix is invoked, which initializes per-atom energy storage.
The value of eflag may need to be stored from an earlier call to the
fix during the same timestep. See how the :doc:`fix cmap
<fix_cmap>` command does this in src/MOLECULE/fix_cmap.cpp. When an
energy for one or more atoms is calculated, invoke the ev_tally()
function to tally the contribution to each atom. Both the ev_init()
and ev_tally() methods are in the parent Fix class.
* For global and/or peratom virial, invoke the v_init(vflag) function
each time the fix is invoked, which initializes virial storage.
When forces on one or more atoms are calculated, invoke the
v_tally() function to tally the contribution. Both the v_init() and
v_tally() methods are in the parent Fix class. Note that there are
several variants of v_tally(); choose the one appropriate to your
fix.
.. note::
The ev_init() and ev_tally() methods also account for global and
peratom virial contributions. Thus you do not need to invoke the
v_init() and v_tally() methods, if the fix also calculates peratom
energies.
The fix must also specify whether (by default) to include or exclude
these contributions to the global/peratom energy/virial of the system.
For the fix to include the contributions, set either of both of these
variables in the constructor:
* *thermo_energy* = 1, for global and peratom energy
* *thermo_virial* = 1, for global and peratom virial
Note that these variables are zeroed in fix.cpp. Thus if you don't
set the variables, the contributions will be excluded (by default)
However, the user has ultimate control over whether to include or
exclude the contributions of the fix via the :doc:`fix modify
<fix_modify>` command:
* fix modify *energy yes* to include global and peratom energy contributions
* fix modify *virial yes* to include global and peratom virial contributions
If the fix contributes to any of the global/peratom energy/virial
values for the system, it should be explained on the fix doc page,
along with the default values for the *energy yes/no* and *virial
yes/no* settings of the :doc:`fix modify <fix_modify>` command.
Finally, these 4 contributions are included in the output of 4
computes:
* global energy in :doc:`compute pe <compute_pe>`
* peratom energy in :doc:`compute pe/atom <compute_pe_atom>`
* global virial in :doc:`compute pressure <compute_pressure>`
* peratom virial in :doc:`compute stress/atom <compute_stress_atom>`
These computes invoke a method of the Modify class to include
contributions from fixes that have the corresponding flags set,
e.g. *energy_peratom_flag* and *thermo_energy* for :doc:`compute
pe/atom <compute_pe_atom>`.
Note that each compute has an optional keyword to either include or
exclude all contributions from fixes. Also note that :doc:`compute pe
<compute_pe>` and :doc:`compute pressure <compute_pressure>` are what
is used (by default) by :doc:`thermodynamic output <thermo_style>` to
calculate values for its *pe* and *press* keywords.
KSpace PPPM FFT grids
^^^^^^^^^^^^^^^^^^^^^
The various :doc:`KSpace PPPM <kspace_style>` styles in LAMMPS use
FFTs to solve Poisson's equation. This subsection describes:
* how FFT grids are defined
* how they are decomposed across processors
* how they are indexed by each processor
* how particle charge and electric field values are mapped to/from
the grid
An FFT grid cell is a 3d volume; grid points are corners of a grid
cell and the code stores values assigned to grid points in vectors or
3d arrays. A global 3d FFT grid has points indexed 0 to N-1 inclusive
in each dimension.
Each processor owns two subsets of the grid, each subset is
brick-shaped. Depending on how it is used, these subsets are
allocated as a 1d vector or 3d array. Either way, the ordering of
values within contiguous memory x fastest, then y, z slowest.
For the ``3d decomposition`` of the grid, the global grid is
partitioned into bricks that correspond to the sub-domains of the
simulation box that each processor owns. Often, this is a regular 3d
array (Px by Py by Pz) of bricks, where P = number of processors =
Px * Py * Pz. More generally it can be a tiled decomposition, where
each processor owns a brick and the union of all the bricks is the
global grid. Tiled decompositions are produced by load balancing with
the RCB algorithm; see the :doc:`balance rcb <balance>` command.
For the ``FFT decompostion`` of the grid, each processor owns a brick
that spans the entire x dimension of the grid while the y and z
dimensions are partitioned as a regular 2d array (P1 by P2), where P =
P1 * P2.
The following indices store the inclusive bounds of the brick a
processor owns, within the global grid:
.. parsed-literal::
nxlo_in,nxhi_in,nylo_in,nyhi_in,nzlo_in,nzhi_in = 3d decomposition brick
nxlo_fft,nxhi_fft,nylo_fft,nyhi_fft,nzlo_fft,nzhi_fft = FFT decomposition brick
nxlo_out,nxhi_out,nylo_out,nyhi_out,nzlo_out,nzhi_out = 3d decomposition brick + ghost cells
The ``in`` and ``fft`` indices are from 0 to N-1 inclusive in each
dimension, where N is the grid size.
The ``out`` indices index an array which stores the ``in`` subset of
the grid plus ghost cells that surround it. These indices can thus be
< 0 or >= N.
The number of ghost cells a processor owns in each of the 6 directions
is a function of:
.. parsed-literal::
neighbor skin distance (since atoms can move outside a proc subdomain)
qdist = offset or charge from atom due to TIP4P fictitious charge
order = mapping stencil size
shift = factor used when order is an even number (see below)
Here is an explanation of how the PPPM variables ``order``,
``nlower`` / ``nupper``, ``shift``, and ``OFFSET`` work. They are the
relevant variables that determine how atom charge is mapped to grid
points and how field values are mapped from grid points to atoms:
.. parsed-literal::
order = # of nearby grid points in each dim that atom charge/field are mapped to/from
nlower,nupper = extent of stencil around the grid point an atom is assigned to
OFFSET = large integer added/subtracted when mapping to avoid int(-0.75) = 0 when -1 is the desired result
The particle_map() method assigns each atom to a grid point.
If order is even, say 4:
.. parsed-literal::
atom is assigned to grid point to its left (in each dim)
shift = OFFSET
nlower = -1, nupper = 2, which are offsets from assigned grid point
window of mapping grid pts is thus 2 grid points to left of atom, 2 to right
If order is odd, say 5:
.. parsed-literal::
atom is assigned to left/right grid pt it is closest to (in each dim)
shift = OFFSET + 0.5
nlower = 2, nupper = 2
if point is in left half of cell, then window of affected grid pts is 3 grid points to left of atom, 2 to right
if point is in right half of cell, then window of affected grid pts is 2 grid points to left of atom, 3 to right
These settings apply to each dimension, so that if order = 5, an
atom's charge is mapped to 125 grid points that surround the atom.

View File

@ -1,68 +1,75 @@
Source files
------------
The source files of the LAMMPS code are found in two
directories of the distribution: ``src`` and ``lib``.
Most of the code is C++ but there are small numbers of files
in several other languages.
The source files of the LAMMPS code are found in two directories of the
distribution: ``src`` and ``lib``. Most of the code is written in C++
but there are small a number of files in several other languages like C,
Fortran, Shell script, or Python.
The core of the code is located in the
``src`` folder and its sub-directories.
A sizable number of these files are in the ``src`` directory
itself, but there are plenty of :doc:`packages <Packages>`, which can be
included or excluded when LAMMPS is built. See the :doc:`Include
packages in build <Build_package>` section of the manual for more
information about that part of the build process. LAMMPS currently
supports building with :doc:`conventional makefiles <Build_make>` and
through :doc:`CMake <Build_cmake>` which differ in how packages are
enabled or disabled for a LAMMPS binary. The source files for each
The core of the code is located in the ``src`` folder and its
sub-directories. A sizable number of these files are in the ``src``
directory itself, but there are plenty of :doc:`packages <Packages>`,
which can be included or excluded when LAMMPS is built. See the
:doc:`Include packages in build <Build_package>` section of the manual
for more information about that part of the build process. LAMMPS
currently supports building with :doc:`conventional makefiles
<Build_make>` and through :doc:`CMake <Build_cmake>`. Those procedures
differ in how packages are enabled or disabled for inclusion into a
LAMMPS binary so they cannot be mixed. The source files for each
package are in all-uppercase sub-directories of the ``src`` folder, for
example ``src/MOLECULE`` or ``src/USER-MISC``. The ``src/STUBS``
sub-directory is not a package but contains a dummy MPI library, that is
used when building a serial version of the code. The ``src/MAKE``
directory contains makefiles with settings and flags for a variety of
configuration and machines for the build process with traditional
makefiles.
directory and its sub-directories contain makefiles with settings and
flags for a variety of configuration and machines for the build process
with traditional makefiles.
The ``lib`` directory contains the source code for several supporting
libraries or files with configuration settings to use globally installed
libraries, that are required by some of the optional packages.
Each sub-directory, like ``lib/poems`` or ``lib/gpu``, contains the
source files, some of which are in different languages such as Fortran
or CUDA. These libraries are linked to during a LAMMPS build, if the
corresponding package is installed.
libraries, that are required by some of the optional packages. They may
include python scripts that can transparently download additional source
code on request. Each sub-directory, like ``lib/poems`` or ``lib/gpu``,
contains the source files, some of which are in different languages such
as Fortran or CUDA. These libraries included in the LAMMPS build,
if the corresponding package is installed.
LAMMPS C++ source files almost always come in pairs, such as
``src/run.cpp`` (implementation file) and ``src/run.h`` (header file).
Each pair of files defines a C++
class, for example the :cpp:class:`LAMMPS_NS::Run` class which contains
the code invoked by the :doc:`run <run>` command in a LAMMPS input script.
As this example illustrates, source file and class names often have a
one-to-one correspondence with a command used in a LAMMPS input script.
Some source files and classes do not have a corresponding input script
Each pair of files defines a C++ class, for example the
:cpp:class:`LAMMPS_NS::Run` class which contains the code invoked by the
:doc:`run <run>` command in a LAMMPS input script. As this example
illustrates, source file and class names often have a one-to-one
correspondence with a command used in a LAMMPS input script. Some
source files and classes do not have a corresponding input script
command, e.g. ``src/force.cpp`` and the :cpp:class:`LAMMPS_NS::Force`
class. They are discussed in the next section.
A small number of C++ classes and utility functions are implemented with
only a ``.h`` file. Examples are the Pointer class or the MathVec functions.
The names of all source files are in lower case and may use the
underscore character '_' to separate words. Outside of bundled libraries
which may have different conventions, all C and C++ header files have a
``.h`` extension, all C++ files have a ``.cpp`` extension, and C files a
``.c`` extension. A small number of C++ classes and utility functions
are implemented with only a ``.h`` file. Examples are the Pointer class
or the MathVec functions.
Class topology
--------------
Though LAMMPS has a lot of source files and classes, its class topology
is relative flat, as outlined in the :ref:`class-topology` figure. Each
name refers to a class and has a pair of associated source files in the
``src`` folder, for example the class :cpp:class:`LAMMPS_NS::Memory`
corresponds to the files ``memory.cpp`` and ``memory.h``, or the class
:cpp:class:`LAMMPS_NS::AtomVec` corresponds to the files
``atom_vec.cpp`` and ``atom_vec.h``. Full lines in the figure represent
compositing: that is the class to the left holds a pointer to an
instance of the class to the right. Dashed lines instead represent
inheritance: the class to the right is derived from the class on the
left. Classes with a red boundary are not instantiated directly, but
they represent the base classes for "styles". Those "styles" make up
the bulk of the LAMMPS code and only a few typical examples are included
in the figure for demonstration purposes.
is not very deep, which can be seen from the :ref:`class-topology`
figure. In that figure, each name refers to a class and has a pair of
associated source files in the ``src`` folder, for example the class
:cpp:class:`LAMMPS_NS::Memory` corresponds to the files ``memory.cpp``
and ``memory.h``, or the class :cpp:class:`LAMMPS_NS::AtomVec`
corresponds to the files ``atom_vec.cpp`` and ``atom_vec.h``. Full
lines in the figure represent compositing: that is the class at the base
of the arrow holds a pointer to an instance of the class at the tip.
Dashed lines instead represent inheritance: the class to the tip of the
arrow is derived from the class at the base. Classes with a red boundary
are not instantiated directly, but they represent the base classes for
"styles". Those "styles" make up the bulk of the LAMMPS code and only
a few representative examples are included in the figure so it remains
readable.
.. _class-topology:
.. figure:: JPG/lammps-classes.png
@ -82,69 +89,76 @@ in the figure for demonstration purposes.
derived classes, which may also hold instances of other classes.
The :cpp:class:`LAMMPS_NS::LAMMPS` class is the topmost class and
represents what is referred to an "instance" of LAMMPS. It is a
composite holding references to instances of other core classes
represents what is generally referred to an "instance" of LAMMPS. It is
a composite holding pointers to instances of other core classes
providing the core functionality of the MD engine in LAMMPS and through
them abstractions of the required operations. The constructor of the
LAMMPS class will instantiate those instances, process the command line
flags, initialize MPI (if not already done) and set up file pointers for
input and output. The destructor will shut everything down and free all
input and output. The destructor will shut everything down and free all
associated memory. Thus code for the standalone LAMMPS executable in
``main.cpp`` simply initializes MPI, instantiates a single instance of
LAMMPS, and passes it the command line flags and input script. It
LAMMPS while passing it the command line flags and input script. It
deletes the LAMMPS instance after the method reading the input returns
and shuts down the MPI environment before it exits the executable.
The :cpp:class:`LAMMPS_NS::Pointers` is not shown in the
:ref:`class-topology` figure, it holds references to members of the
`LAMMPS_NS::LAMMPS`, so that all classes derived from
:cpp:class:`LAMMPS_NS::Pointers` have direct access to those reference.
From the class topology all classes with blue boundary are referenced in
this class and all classes in the second and third columns, that are not
listed as derived classes are instead derived from
:cpp:class:`LAMMPS_NS::Pointers`.
:ref:`class-topology` figure for clarity. It holds references to many
of the members of the `LAMMPS_NS::LAMMPS`, so that all classes derived
from :cpp:class:`LAMMPS_NS::Pointers` have direct access to those
reference. From the class topology all classes with blue boundary are
referenced in the Pointers class and all classes in the second and third
columns, that are not listed as derived classes are instead derived from
:cpp:class:`LAMMPS_NS::Pointers`. To initialize the pointer references
in Pointers, a pointer to the LAMMPS class instance needs to be passed
to the constructor and thus all constructors for classes derived from it
must do so and pass this pointer to the constructor for Pointers.
Since all storage is encapsulated, the LAMMPS class can also be
instantiated multiple times by a calling code, and that can be either
simultaneously or consecutively. When running in parallel with MPI,
care has to be taken, that suitable communicators are used to not
create conflicts between different instances.
Since all storage is supposed to be encapsulated (there are a few
exceptions), the LAMMPS class can also be instantiated multiple times by
a calling code. Outside of the aforementioned exceptions, those LAMMPS
instances can be used alternately. As of the time of this writing
(early 2021) LAMMPS is not yet sufficiently thread-safe for concurrent
execution. When running in parallel with MPI, care has to be taken,
that suitable copies of communicators are used to not create conflicts
between different instances.
The LAMMPS class currently holds instances of 19 classes representing
different core functionalities There are a handful of virtual parent
classes in LAMMPS that define what LAMMPS calls ``styles``. They are
shaded red in the :ref:`class-topology` figure. Each of these are
The LAMMPS class currently (early 2021) holds instances of 19 classes
representing the core functionality. There are a handful of virtual
parent classes in LAMMPS that define what LAMMPS calls ``styles``. They
are shaded red in the :ref:`class-topology` figure. Each of these are
parents of a number of child classes that implement the interface
defined by the parent class. There are two main categories of these
``styles``: some may only have one instance active at a time (e.g. atom,
pair, bond, angle, dihedral, improper, kspace, comm) and there is a
dedicated pointer variable in the composite class that manages them.
dedicated pointer variable for each of them in the composite class.
Setups that require a mix of different such styles have to use a
*hybrid* class that manages and forwards calls to the corresponding
sub-styles for the designated subset of atoms or data. or the composite
class may have lists of class instances, e.g. Modify handles lists of
compute and fix styles, while Output handles dumps class instances.
*hybrid* class that takes the place of the one allowed instance and then
manages and forwards calls to the corresponding sub-styles for the
designated subset of atoms or data. The composite class may also have
lists of class instances, e.g. Modify handles lists of compute and fix
styles, while Output handles a list of dump class instances.
The exception to this scheme are the ``command`` style classes. These
implement specific commands that can be invoked before, after, or between
runs or are commands which launch a simulation. For these an instance
of the class is created, its command() method called and then, after
completion, the class instance deleted. Examples for this are the
create_box, create_atoms, minimize, run, or velocity command styles.
The exception to this scheme are the ``command`` style classes. These
implement specific commands that can be invoked before, after, or in
between runs. For these an instance of the class is created, its
command() method called and then, after completion, the class instance
deleted. Examples for this are the create_box, create_atoms, minimize,
run, or velocity command styles.
For all those ``styles`` certain naming conventions are employed: for
the fix nve command the class is called FixNVE and the files are
the fix nve command the class is called FixNVE and the source files are
``fix_nve.h`` and ``fix_nve.cpp``. Similarly for fix ave/time we have
FixAveTime and ``fix_ave_time.h`` and ``fix_ave_time.cpp``. Style names
FixAveTime and ``fix_ave_time.h`` and ``fix_ave_time.cpp``. Style names
are lower case and without spaces or special characters. A suffix or
multiple appended with a forward slash '/' denotes a variant of the
corresponding class without the suffix. To connect the style name and
the class name, LAMMPS uses macros like the following ATOM\_CLASS,
PAIR\_CLASS, BOND\_CLASS, REGION\_CLASS, FIX\_CLASS, COMPUTE\_CLASS,
or DUMP\_CLASS in the corresponding header file. During compilation
files with the pattern ``style_name.h`` are created that contain include
statements including all headers of all styles of a given type that
are currently active (or "installed).
words are appended with a forward slash '/' which denotes a variant of
the corresponding class without the suffix. To connect the style name
and the class name, LAMMPS uses macros like: ``AtomStyle()``,
``PairStyle()``, ``BondStyle()``, ``RegionStyle()``, and so on in the
corresponding header file. During configuration or compilation files
with the pattern ``style_<name>.h`` are created that consist of a list
of include statements including all headers of all styles of a given
type that are currently active (or "installed).
More details on individual classes in the :ref:`class-topology` are as
@ -152,11 +166,11 @@ follows:
- The Memory class handles allocation of all large vectors and arrays.
- The Error class prints all error and warning messages.
- The Error class prints all (terminal) error and warning messages.
- The Universe class sets up partitions of processors so that multiple
simulations can be run, each on a subset of the processors allocated
for a run, e.g. by the mpirun command.
- The Universe class sets up one or more partitions of processors so
that one or multiple simulations can be run, on the processors
allocated for a run, e.g. by the mpirun command.
- The Input class reads and processes input input strings and files,
stores variables, and invokes :doc:`commands <Commands_all>`.
@ -241,7 +255,8 @@ follows:
.. TODO section on "Spatial decomposition and parallel operations"
.. diagram of 3d processor grid, brick vs. tiled. local vs. ghost
.. atoms, 6-way communication with pack/unpack functions,
.. PBC as part of the communication
.. PBC as part of the communication, forward and reverse communication
.. rendezvous communication, ring communication.
.. TODO section on "Fixes, Computes, and Variables"
.. how and when data is computed and provided and how it is

View File

@ -0,0 +1,258 @@
Writing plugins
---------------
Plugins provide a mechanism to add functionality to a LAMMPS executable
without recompiling LAMMPS. The functionality for this and the
:doc:`plugin command <plugin>` are implemented in the
:ref:`PLUGIN package <PKG-PLUGIN>` which must be installed to use plugins.
Plugins use the operating system's capability to load dynamic shared
object (DSO) files in a way similar shared libraries and then reference
specific functions in those DSOs. Any DSO file with plugins has to include
an initialization function with a specific name, "lammpsplugin_init", that
has to follow specific rules described below. When loading the DSO with
the "plugin" command, this function is looked up and called and will then
register the contained plugin(s) with LAMMPS.
From the programmer perspective this can work because of the object
oriented design of LAMMPS where all pair style commands are derived from
the class Pair, all fix style commands from the class Fix and so on and
usually only functions present in those base classes are called
directly. When a :doc:`pair_style` command or :doc:`fix` command is
issued a new instance of such a derived class is created. This is done
by a so-called factory function which is mapped to the style name. Thus
when, for example, the LAMMPS processes the command ``pair_style lj/cut
2.5``, LAMMPS will look up the factory function for creating the
``PairLJCut`` class and then execute it. The return value of that
function is a ``Pair *`` pointer and the pointer will be assigned to the
location for the currently active pair style.
A DSO file with a plugin thus has to implement such a factory function
and register it with LAMMPS so that it gets added to the map of available
styles of the given category. To register a plugin with LAMMPS an
initialization function has to be present in the DSO file called
``lammpsplugin_init`` which is called with three ``void *`` arguments:
a pointer to the current LAMMPS instance, a pointer to the opened DSO
handle, and a pointer to the registration function. The registration
function takes two arguments: a pointer to a ``lammpsplugin_t`` struct
with information about the plugin and a pointer to the current LAMMPS
instance. Please see below for an example of how the registration is
done.
Members of ``lammpsplugin_t``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. list-table::
:header-rows: 1
:widths: auto
* - Member
- Description
* - version
- LAMMPS Version string the plugin was compiled for
* - style
- Style of the plugin (pair, bond, fix, command, etc.)
* - name
- Name of the plugin style
* - info
- String with information about the plugin
* - author
- String with the name and email of the author
* - creator.v1
- Pointer to factory function for pair, bond, angle, dihedral, or improper styles
* - creator.v2
- Pointer to factory function for compute, fix, or region styles
* - creator.v3
- Pointer to factory function for command styles
* - handle
- Pointer to the open DSO file handle
Only one of the three alternate creator entries can be used at a time
and which of those is determined by the style of plugin. The "creator.v1"
element is for factory functions of supported styles computing forces (i.e.
pair, bond, angle, dihedral, or improper styles) and the function takes
as single argument the pointer to the LAMMPS instance. The factory function
is cast to the ``lammpsplugin_factory1`` type before assignment. The
"creator.v2" element is for factory functions creating an instance of
a fix, compute, or region style and takes three arguments: a pointer to
the LAMMPS instance, an integer with the length of the argument list and
a ``char **`` pointer to the list of arguments. The factory function pointer
needs to be cast to the ``lammpsplugin_factory2`` type before assignment.
The "creator.v3" element takes the same arguments as "creator.v3" but is
specific to creating command styles: the factory function has to instantiate
the command style locally passing the LAMMPS pointer as argument and then
call its "command" member function with the number and list of arguments.
The factory function pointer needs to be cast to the
``lammpsplugin_factory3`` type before assignment.
Pair style example
^^^^^^^^^^^^^^^^^^
As an example, a hypothetical pair style plugin "morse2" implemented in
a class ``PairMorse2`` in the files ``pair_morse2.h`` and
``pair_morse2.cpp`` with the factory function and initialization
function would look like this:
.. code-block:: C++
#include "lammpsplugin.h"
#include "version.h"
#include "pair_morse2.h"
using namespace LAMMPS_NS;
static Pair *morse2creator(LAMMPS *lmp)
{
return new PairMorse2(lmp);
}
extern "C" void lammpsplugin_init(void *lmp, void *handle, void *regfunc)
{
lammpsplugin_regfunc register_plugin = (lammpsplugin_regfunc) regfunc;
lammpsplugin_t plugin;
plugin.version = LAMMPS_VERSION;
plugin.style = "pair";
plugin.name = "morse2";
plugin.info = "Morse2 variant pair style v1.0";
plugin.author = "Axel Kohlmeyer (akohlmey@gmail.com)";
plugin.creator.v1 = (lammpsplugin_factory1 *) &morse2creator;
plugin.handle = handle;
(*register_plugin)(&plugin,lmp);
}
The factory function in this example is called ``morse2creator()``. It
receives a pointer to the LAMMPS class as only argument and thus has to
be assigned to the *creator.v1* member of the plugin struct and cast to the
``lammpsplugin_factory1`` pointer type. It returns a
pointer to the allocated class instance derived from the ``Pair`` class.
This function may be declared static to avoid clashes with other plugins.
The name of the derived class, ``PairMorse2``, must be unique inside
the entire LAMMPS executable.
Fix style example
^^^^^^^^^^^^^^^^^
If the factory function would be for a fix or compute, which take three
arguments (a pointer to the LAMMPS class, the number of arguments and the
list of argument strings), then the pointer type is ``lammpsplugin_factory2``
and it must be assigned to the *creator.v2* member of the plugin struct.
Below is an example for that:
.. code-block:: C++
#include "lammpsplugin.h"
#include "version.h"
#include "fix_nve2.h"
using namespace LAMMPS_NS;
static Fix *nve2creator(LAMMPS *lmp, int argc, char **argv)
{
return new FixNVE2(lmp,argc,argv);
}
extern "C" void lammpsplugin_init(void *lmp, void *handle, void *regfunc)
{
lammpsplugin_regfunc register_plugin = (lammpsplugin_regfunc) regfunc;
lammpsplugin_t plugin;
plugin.version = LAMMPS_VERSION;
plugin.style = "fix";
plugin.name = "nve2";
plugin.info = "NVE2 variant fix style v1.0";
plugin.author = "Axel Kohlmeyer (akohlmey@gmail.com)";
plugin.creator.v2 = (lammpsplugin_factory2 *) &nve2creator;
plugin.handle = handle;
(*register_plugin)(&plugin,lmp);
}
Command style example
^^^^^^^^^^^^^^^^^^^^^
For command styles there is a third variant of factory function as
demonstrated in the following example, which also shows that the
implementation of the plugin class may also be within the same
file as the plugin interface code:
.. code-block:: C++
#include "lammpsplugin.h"
#include "comm.h"
#include "error.h"
#include "pointers.h"
#include "version.h"
#include <cstring>
namespace LAMMPS_NS {
class Hello : protected Pointers {
public:
Hello(class LAMMPS *lmp) : Pointers(lmp) {};
void command(int, char **);
};
}
using namespace LAMMPS_NS;
void Hello::command(int argc, char **argv)
{
if (argc != 1) error->all(FLERR,"Illegal hello command");
if (comm->me == 0)
utils::logmesg(lmp,fmt::format("Hello, {}!\n",argv[0]));
}
static void hellocreator(LAMMPS *lmp, int argc, char **argv)
{
Hello hello(lmp);
hello.command(argc,argv);
}
extern "C" void lammpsplugin_init(void *lmp, void *handle, void *regfunc)
{
lammpsplugin_t plugin;
lammpsplugin_regfunc register_plugin = (lammpsplugin_regfunc) regfunc;
plugin.version = LAMMPS_VERSION;
plugin.style = "command";
plugin.name = "hello";
plugin.info = "Hello world command v1.0";
plugin.author = "Axel Kohlmeyer (akohlmey@gmail.com)";
plugin.creator.v3 = (lammpsplugin_factory3 *) &hellocreator;
plugin.handle = handle;
(*register_plugin)(&plugin,lmp);
}
Additional Details
^^^^^^^^^^^^^^^^^^
The initialization function **must** be called ``lammpsplugin_init``, it
**must** have C bindings and it takes three void pointers as arguments.
The first is a pointer to the LAMMPS class that calls it and it needs to
be passed to the registration function. The second argument is a
pointer to the internal handle of the DSO file, this needs to be added
to the plugin info struct, so that the DSO can be closed and unloaded
when all its contained plugins are unloaded. The third argument is a
function pointer to the registration function and needs to be stored
in a variable of ``lammpsplugin_regfunc`` type and then called with a
pointer to the ``lammpsplugin_t`` struct and the pointer to the LAMMPS
instance as arguments to register a single plugin. There may be multiple
calls to multiple plugins in the same initialization function.
To register a plugin a struct of the ``lammpsplugin_t`` needs to be filled
with relevant info: current LAMMPS version string, kind of style, name of
style, info string, author string, pointer to factory function, and the
DSO handle. The registration function is called with a pointer to the address
of this struct and the pointer of the LAMMPS class. The registration function
will then add the factory function of the plugin style to the respective
style map under the provided name. It will also make a copy of the struct
in a list of all loaded plugins and update the reference counter for loaded
plugins from this specific DSO file.
The pair style itself (i.e. the PairMorse2 class in this example) can be
written just like any other pair style that is included in LAMMPS. For
a plugin, the use of the ``PairStyle`` macro in the section encapsulated
by ``#ifdef PAIR_CLASS`` is not needed, since the mapping of the class
name to the style name is done by the plugin registration function with
the information from the ``lammpsplugin_t`` struct. It may be included
in case the new code is intended to be later included in LAMMPS directly.

View File

@ -0,0 +1,536 @@
Adding tests for unit testing
-----------------------------
This section discusses adding or expanding tests for the unit test
infrastructure included into the LAMMPS source code distribution.
Unlike example inputs, unit tests focus on testing the "local" behavior
of individual features, tend to run fast, and should be set up to cover
as much of the added code as possible. When contributing code to the
distribution, the LAMMPS developers will appreciate if additions to the
integrated unit test facility are included.
Given the complex nature of MD simulations where many operations can
only be performed when suitable "real" simulation environment has been
set up, not all tests will be unit tests in the strict definition of
the term. They are rather executed on a more abstract level by issuing
LAMMPS script commands and then inspecting the changes to the internal
data. For some classes of tests, generic test programs have been
written that can be applied to parts of LAMMPS that use the same
interface (via polymorphism) and those are driven by input files, so
tests can be added by simply adding more of those input files. Those
tests should be seen more as a hybrid between unit and regression tests.
When adding tests it is recommended to also :ref:`enable support for
code coverage reporting <testing>`, and study the coverage reports
so that it is possible to monitor which parts of the code of a given
file are executed during the tests and which tests would need to be
added to increase the coverage.
The tests are grouped into categories and corresponding folders.
The following sections describe how the tests are implemented and
executed in those categories with increasing complexity of tests
and implementation.
Tests for utility functions
^^^^^^^^^^^^^^^^^^^^^^^^^^^
These tests are driven by programs in the ``unittest/utils`` folder
and most closely resemble conventional unit tests. There is one test
program for each namespace or group of classes or file. The naming
convention for the sources and executables is that they start with
with ``test_``. The following sources and groups of tests are currently
available:
.. list-table::
:header-rows: 1
:widths: auto
:align: left
* - File name:
- Test name:
- Description:
* - ``test_argutils.cpp``
- ArgInfo
- Tests for ``ArgInfo`` class used by LAMMPS
* - ``test_fmtlib.cpp``
- FmtLib
- Tests for ``fmtlib::`` functions used by LAMMPS
* - ``test_math_eigen_impl.cpp``
- MathEigen
- Tests for ``MathEigen::`` classes and functions
* - ``test_mempool.cpp``
- MemPool
- Tests for :cpp:class:`MyPage <LAMMPS_NS::MyPage>` and :cpp:class:`MyPoolChunk <LAMMPS_NS::MyPoolChunk>`
* - ``test_tokenizer.cpp``
- Tokenizer
- Tests for :cpp:class:`Tokenizer <LAMMPS_NS::Tokenizer>` and :cpp:class:`ValueTokenizer <LAMMPS_NS::ValueTokenizer>`
* - ``test_utils.cpp``
- Utils
- Tests for ``utils::`` :doc:`functions <Developer_utils>`
To add tests either an existing source file needs to be modified or a
new source file needs to be added to the distribution and enabled for
testing. To add a new file suitable CMake script code needs to be added
to the ``CMakeLists.txt`` file in the ``unittest/utils`` folder. Example:
.. code-block:: cmake
add_executable(test_tokenizer test_tokenizer.cpp)
target_link_libraries(test_tokenizer PRIVATE lammps GTest::GMockMain GTest::GMock GTest::GTest)
add_test(Tokenizer test_tokenizer)
This adds instructions to build the ``test_tokenizer`` executable from
``test_tokenizer.cpp`` and links it with the GoogleTest libraries and the
LAMMPS library as well as it uses the ``main()`` function from the
GoogleMock library of GoogleTest. The third line registers the executable
as a test program to be run from ``ctest`` under the name ``Tokenizer``.
The test executable itself will execute multiple individual tests
through the GoogleTest framework. In this case each test consists of
creating a tokenizer class instance with a given string and explicit or
default separator choice, and then executing member functions of the
class and comparing their results with expected values. A few examples:
.. code-block:: c++
TEST(Tokenizer, empty_string)
{
Tokenizer t("", " ");
ASSERT_EQ(t.count(), 0);
}
TEST(Tokenizer, two_words)
{
Tokenizer t("test word", " ");
ASSERT_EQ(t.count(), 2);
}
TEST(Tokenizer, default_separators)
{
Tokenizer t(" \r\n test \t word \f");
ASSERT_THAT(t.next(), Eq("test"));
ASSERT_THAT(t.next(), Eq("word"));
ASSERT_EQ(t.count(), 2);
}
Each of these TEST functions will become an individual
test run by the test program. When using the ``ctest``
command as a front end to run the tests, their output
will be suppressed and only a summary printed, but adding
the '-V' option will then produce output from the tests
above like the following:
.. code-block::
[...]
1: [ RUN ] Tokenizer.empty_string
1: [ OK ] Tokenizer.empty_string (0 ms)
1: [ RUN ] Tokenizer.two_words
1: [ OK ] Tokenizer.two_words (0 ms)
1: [ RUN ] Tokenizer.default_separators
1: [ OK ] Tokenizer.default_separators (0 ms)
[...]
The MathEigen test collection has been adapted from a standalone test
and does not use the GoogleTest framework and thus not representative.
The other test sources, however, can serve as guiding examples for
additional tests.
Tests for individual LAMMPS commands
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The tests ``unittest/commands`` are a bit more complex as they require
to first create a :cpp:class:`LAMMPS <LAMMPS_NS::LAMMPS>` class instance
and then use the :doc:`C++ API <Cplusplus>` to pass individual commands
to that LAMMPS instance. For that reason these tests use a GoogleTest
"test fixture", i.e. a class derived from ``testing::Test`` that will
create (and delete) the required LAMMPS class instance for each set of
tests in a ``TEST_F()`` function. Please see the individual source files
for different examples of setting up suitable test fixtures. Here is an
example for implementing a test using a fixture by first checking the
default value and then issuing LAMMPS commands and checking whether they
have the desired effect:
.. code-block:: c++
TEST_F(SimpleCommandsTest, ResetTimestep)
{
ASSERT_EQ(lmp->update->ntimestep, 0);
BEGIN_HIDE_OUTPUT();
command("reset_timestep 10");
END_HIDE_OUTPUT();
ASSERT_EQ(lmp->update->ntimestep, 10);
BEGIN_HIDE_OUTPUT();
command("reset_timestep 0");
END_HIDE_OUTPUT();
ASSERT_EQ(lmp->update->ntimestep, 0);
TEST_FAILURE(".*ERROR: Timestep must be >= 0.*", command("reset_timestep -10"););
TEST_FAILURE(".*ERROR: Illegal reset_timestep .*", command("reset_timestep"););
TEST_FAILURE(".*ERROR: Illegal reset_timestep .*", command("reset_timestep 10 10"););
TEST_FAILURE(".*ERROR: Expected integer .*", command("reset_timestep xxx"););
}
Please note the use of the ``BEGIN_HIDE_OUTPUT`` and ``END_HIDE_OUTPUT``
functions that will capture output from running LAMMPS. This is normally
discarded but by setting the verbose flag (via setting the ``TEST_ARGS``
environment variable, ``TEST_ARGS=-v``) it can be printed and used to
understand why tests fail unexpectedly.
Another complexity of these tests stems from the need to capture
situations where LAMMPS will stop with an error, i.e. handle so-called
"death tests". Here the LAMMPS code will operate differently depending
on whether it was configured to throw C++ exceptions on errors or call
either ``exit()`` or ``MPI_Abort()``. In the latter case, the test code
also needs to detect whether LAMMPS was compiled with the OpenMPI
library, as OpenMPI is **only** compatible the death test options of the
GoogleTest library when C++ exceptions are enabled; otherwise those
"death tests" must be skipped to avoid reporting bogus failures. The
specifics of this step are implemented in the ``TEST_FAILURE()``
macro. These tests operate by capturing the screen output when executing
the failing command and then comparing that with a provided regular
expression string pattern. Example:
.. code-block:: C++
TEST_F(SimpleCommandsTest, UnknownCommand)
{
TEST_FAILURE(".*ERROR: Unknown command.*", lmp->input->one("XXX one two"););
}
The following test programs are currently available:
.. list-table::
:header-rows: 1
:widths: auto
:align: left
* - File name:
- Test name:
- Description:
* - ``test_simple_commands.cpp``
- SimpleCommands
- Tests for LAMMPS commands that do not require a box
* - ``test_lattice_region.cpp``
- LatticeRegion
- Tests to validate the :doc:`lattice <lattice>` and :doc:`region <region>` commands
* - ``test_groups.cpp``
- GroupTest
- Tests to validate the :doc:`group <group>` command
* - ``test_variables.cpp``
- VariableTest
- Tests to validate the :doc:`variable <variable>` command
* - ``test_kim_commands.cpp``
- KimCommands
- Tests for several commands from the :ref:`KIM package <PKG-KIM>`
* - ``test_reset_ids.cpp``
- ResetIDs
- Tests to validate the :doc:`reset_atom_ids <reset_atom_ids>` and :doc:`reset_mol_ids <reset_mol_ids>` commands
Tests for the C-style library interface
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Tests for validating the LAMMPS C-style library interface are in the
``unittest/c-library`` folder. They are implemented in either way used
for utility functions and for LAMMPS commands, but use the functions
implemented in the ``src/library.cpp`` file as much as possible. There
may be some overlap with other tests, but only in as much as is required
to test the C-style library API. The tests are distributed over
multiple test programs which tries to match the grouping of the
functions in the source code and :ref:`in the manual <lammps_c_api>`.
This group of tests also includes tests invoking LAMMPS in parallel
through the library interface, provided that LAMMPS was compiled with
MPI support. These include tests where LAMMPS is run in multi-partition
mode or only on a subset of the MPI world communicator. The CMake
script code for adding this kind of test looks like this:
.. code-block:: CMake
if (BUILD_MPI)
add_executable(test_library_mpi test_library_mpi.cpp)
target_link_libraries(test_library_mpi PRIVATE lammps GTest::GTest GTest::GMock)
target_compile_definitions(test_library_mpi PRIVATE ${TEST_CONFIG_DEFS})
add_mpi_test(NAME LibraryMPI NUM_PROCS 4 COMMAND $<TARGET_FILE:test_library_mpi>)
endif()
Note the custom function ``add_mpi_test()`` which adapts how ``ctest``
will execute the test so it is launched in parallel (with 4 MPI ranks).
Tests for the Python module and package
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The ``unittest/python`` folder contains primarily tests for classes and
functions in the LAMMPS python module but also for commands in the
PYTHON package. These tests are only enabled, if the necessary
prerequisites are detected or enabled during configuration and
compilation of LAMMPS (shared library build enabled, Python interpreter
found, Python development files found).
The Python tests are implemented using the ``unittest`` standard Python
module and split into multiple files with similar categories as the
tests for the C-style library interface.
Tests for the Fortran interface
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Tests for using the Fortran module are in the ``unittest/fortran``
folder. Since they are also using the GoogleTest library, they require
to also implement test wrappers in C++ that will call fortran functions
which provide a C function interface through ISO_C_BINDINGS that will in
turn call the functions in the LAMMPS Fortran module. This part of the
unit tests is incomplete since the Fortran module it is based on is
incomplete as well.
Tests for the C++-style library interface
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The tests in the ``unittest/cplusplus`` folder are somewhat similar to
the tests for the C-style library interface, but do not need to test the
several convenience and utility functions that are only available through
the C-style interface. Instead it can focus on the more generic features
that are used internally. This part of the unit tests is currently still
mostly in the planning stage.
Tests for reading and writing file formats
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The ``unittest/formats`` folder contains test programs for reading and
writing files like data files, restart files, potential files or dump files.
This covers simple things like the file i/o convenience functions in the
``utils::`` namespace to complex tests of atom styles where creating and
deleting of atoms with different properties is tested in different ways
and through script commands or reading and writing of data or restart files.
Tests for styles computing or modifying forces
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
These are tests common configurations for pair styles, bond styles,
angle styles, kspace styles and certain fix styles. Those are tests
driven by some test executables build from sources in the
``unittest/force-styles`` folder and use LAMMPS input template and data
files as well as input files in YAML format from the
``unittest/force-styles/tests`` folder. The YAML file names have to
follow some naming conventions so they get associated with the test
programs and categorized and listed with canonical names in the list
of tests as displayed by ``ctest -N``. If you add a new YAML file,
you need to re-run CMake to update the corresponding list of tests.
A minimal YAML file for a (molecular) pair style test will looks
something like the following (see ``mol-pair-zero.yaml``):
.. code-block:: yaml
---
lammps_version: 24 Aug 2020
date_generated: Tue Sep 15 09:44:21 202
epsilon: 1e-14
prerequisites: ! |
atom full
pair zero
pre_commands: ! ""
post_commands: ! ""
input_file: in.fourmol
pair_style: zero 8.0
pair_coeff: ! |
* *
extract: ! ""
natoms: 29
init_vdwl: 0
init_coul: 0
[...]
The following table describes the available keys and their purpose for
testing pair styles:
.. list-table::
:header-rows: 1
* - Key:
- Description:
* - lammps_version
- LAMMPS version used to last update the reference data
* - date_generated
- date when the file was last updated
* - epsilon
- base value for the relative precision required for tests to pass
* - prerequisites
- list of style kind / style name pairs required to run the test
* - pre_commands
- LAMMPS commands to be executed before the input template file is read
* - post_commands
- LAMMPS commands to be executed right before the actual tests
* - input_file
- LAMMPS input file template based on pair style zero
* - pair_style
- arguments to the pair_style command to be tested
* - pair_coeff
- list of pair_coeff arguments to set parameters for the input template
* - extract
- list of keywords supported by ``Pair::extract()`` and their dimension
* - natoms
- number of atoms in the input file template
* - init_vdwl
- non-Coulomb pair energy after "run 0"
* - init_coul
- Coulomb pair energy after "run 0"
* - init_stress
- stress tensor after "run 0"
* - init_forces
- forces on atoms after "run 0"
* - run_vdwl
- non-Coulomb pair energy after "run 4"
* - run_coul
- Coulomb pair energy after "run 4"
* - run_stress
- stress tensor after "run 4"
* - run_forces
- forces on atoms after "run 4"
The test program will read all this data from the YAML file and then
create a LAMMPS instance, apply the settings/commands from the YAML file
as needed and then issue a "run 0" command, write out a restart file, a
data file and a coeff file. The actual test will then compare computed
energies, stresses, and forces with the reference data, issue a "run 4"
command and compare to the second set of reference data. This will be
run with both the newton_pair setting enabled and disabled and is
expected to generate the same results (allowing for some numerical
noise). Then it will restart from the previously generated restart and
compare with the reference and also start from the data file. A final
check will use multi-cutoff r-RESPA (if supported by the pair style) at
a 1:1 split and compare to the Verlet results. These sets of tests are
run with multiple test fixtures for accelerated styles (OPT, USER-OMP,
USER-INTEL) and for the latter two with 4 OpenMP threads enabled. For
these tests the relative error (epsilon) is lowered by a common factor
due to the additional numerical noise, but the tests are still comparing
to the same reference data.
Additional tests will check whether all listed extract keywords are
supported and have the correct dimensionality and the final set of tests
will set up a few pairs of atoms explicitly and in such a fashion that
the forces on the atoms computed from ``Pair::compute()`` will match
individually with the results from ``Pair::single()``, if the pair style
does support that functionality.
With this scheme a large fraction of the code of any tested pair style
will be executed and consistent results are required for different
settings and between different accelerated pair style variants and the
base class, as well as for computing individual pairs through the
``Pair::single()`` where supported.
The ``test_pair_style`` tester is used with 4 categories of test inputs:
- pair styles compatible with molecular systems using bonded
interactions and exclusions. For pair styles requiring a KSpace style
the KSpace computations are disabled. The YAML files match the
pattern "mol-pair-\*.yaml" and the tests are correspondingly labeled
with "MolPairStyle:\*"
- pair styles not compatible with the previous input template.
The YAML files match the pattern "atomic-pair-\*.yaml" and the tests are
correspondingly labeled with "AtomicPairStyle:\*"
- manybody pair styles.
The YAML files match the pattern "atomic-pair-\*.yaml" and the tests are
correspondingly labeled with "AtomicPairStyle:\*"
- kspace styles.
The YAML files match the pattern "kspace-\*.yaml" and the tests are
correspondingly labeled with "KSpaceStyle:\*". In these cases a compatible
pair style is defined, but the computation of the pair style contributions
is disabled.
The ``test_bond_style`` and ``test_angle_style`` are set up in a similar
fashion and share support functions with the pair style tester. The final
group of tests in this section is for fix styles that add/manipulate forces
and velocities, e.g. for time integration, thermostats and more.
Adding a new test is easiest done by copying and modifying an existing test
for a style that is similar to one to be tested. The file name should follow
the naming conventions described above and after copying the file, the first
step is to replace the style names where needed. The coefficient values
do not have to be meaningful, just in a reasonable range for the given system.
It does not matter if some forces are large, for as long as they do not diverge.
The template input files define a large number of index variables at the top
that can be modified inside the YAML file to control the behavior. For example,
if a pair style requires a "newton on" setting, the following can be used in
as the "pre_commands" section:
.. code-block:: yaml
pre_commands: ! |
variable newton_pair delete
variable newton_pair index on
And for a pair style requiring a kspace solver the following would be used as
the "post_commands" section:
.. code-block:: yaml
post_commands: ! |
pair_modify table 0
kspace_style pppm/tip4p 1.0e-6
kspace_modify gewald 0.3
kspace_modify compute no
Note that this disables computing the kspace contribution, but still will run
the setup. The "gewald" parameter should be set explicitly to speed up the run.
For styles with long-range electrostatics, typically two tests are added one using
the (slower) analytic approximation of the erfc() function and the other using
the tabulated coulomb, to test both code paths. The reference results in the YAML
files then should be compared manually, if they agree well enough within the limits
of those two approximations.
The ``test_pair_style`` and equivalent programs have special command line options
to update the YAML files. Running a command like
.. code-block:: bash
$ test_pair_style mol-pair-lennard_mdf.yaml -g new.yaml
will read the settings from the ``mol-pair-lennard_mdf.yaml`` file and then compute
the reference data and write a new file with to ``new.yaml``. If this step fails,
there are likely some (LAMMPS or YAML) syntax issues in the YAML file that need to
be resolved and then one can compare the two files to see if the output is as expected.
It is also possible to do an update in place with:
.. code-block:: bash
$ test_pair_style mol-pair-lennard_mdf.yaml -u
And one can finally run the full set of tests with:
.. code-block:: bash
$ test_pair_style mol-pair-lennard_mdf.yaml
This will just print a summary of the groups of tests. When using the "-v" flag
the test will also keep any LAMMPS output and when using the "-s" flag, there
will be some statistics reported on the relative errors for the individual checks
which can help to figure out what would be a good choice of the epsilon parameter.
It should be as small as possible to catch any unintended side effects from changes
elsewhere, but large enough to accommodate the numerical noise due to the implementation
of the potentials and differences in compilers.
.. note::
These kinds of tests can be very sensitive to compiler optimization and
thus the expectation is that they pass with compiler optimization turned
off. When compiler optimization is enabled, there may be some failures, but
one has to carefully check whether those are acceptable due to the enhanced
numerical noise from reordering floating-point math operations or due to
the compiler mis-compiling the code. That is not always obvious.
Tests for programs in the tools folder
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The ``unittest/tools`` folder contains tests for programs in the
``tools`` folder. This currently only contains tests for the LAMMPS
shell, which are implemented as a python scripts using the ``unittest``
Python module and launching the tool commands through the ``subprocess``
Python module.

View File

@ -71,12 +71,21 @@ and parsing files or arguments.
----------
.. doxygenfunction:: strdup
:project: progguide
.. doxygenfunction:: trim
:project: progguide
.. doxygenfunction:: trim_comment
:project: progguide
.. doxygenfunction:: has_utf8
:project: progguide
.. doxygenfunction:: utf8_subst
:project: progguide
.. doxygenfunction:: count_words(const char *text)
:project: progguide
@ -92,9 +101,15 @@ and parsing files or arguments.
.. doxygenfunction:: split_words
:project: progguide
.. doxygenfunction:: split_lines
:project: progguide
.. doxygenfunction:: strmatch
:project: progguide
.. doxygenfunction:: strfind
:project: progguide
.. doxygenfunction:: is_integer
:project: progguide
@ -286,6 +301,50 @@ This code example should produce the following output:
----------
Argument parsing classes
---------------------------
The purpose of argument parsing classes it to simplify and unify how
arguments of commands in LAMMPS are parsed and to make abstractions of
repetitive tasks.
The :cpp:class:`LAMMPS_NS::ArgInfo` class provides an abstraction
for parsing references to compute or fix styles or variables. These
would start with a "c\_", "f\_", "v\_" followed by the ID or name of
than instance and may be postfixed with one or two array indices
"[<number>]" with numbers > 0.
A typical code segment would look like this:
.. code-block:: C++
:caption: Usage example for ArgInfo class
int nvalues = 0;
for (iarg = 0; iarg < nargnew; iarg++) {
ArgInfo argi(arg[iarg]);
which[nvalues] = argi.get_type();
argindex[nvalues] = argi.get_index1();
ids[nvalues] = argi.copy_name();
if ((which[nvalues] == ArgInfo::UNKNOWN)
|| (which[nvalues] == ArgInfo::NONE)
|| (argi.get_dim() > 1))
error->all(FLERR,"Illegal compute XXX command");
nvalues++;
}
----------
.. doxygenclass:: LAMMPS_NS::ArgInfo
:project: progguide
:members:
----------
File reader classes
-------------------

View File

@ -119,7 +119,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
:doc:`pair style zero <pair_zero>` with a suitable cutoff or use :doc:`comm_modify cutoff <comm_modify>`.
*Communication cutoff is shorter than a bond length based estimate. This may lead to errors.*
Since LAMMPS stores topology data with individual atoms, all atoms
comprising a bond, angle, dihedral or improper must be present on any
sub-domain that "owns" the atom with the information, either as a

View File

@ -91,6 +91,7 @@ documentation for the formula it computes.
* :doc:`bond_style <bond_harmonic>` harmonic
* :doc:`bond_style <bond_morse>` morse
* :doc:`angle_style <angle_cosine_squared>` cosine/squared
* :doc:`angle_style <angle_harmonic>` harmonic
* :doc:`angle_style <angle_cosine>` cosine
* :doc:`angle_style <angle_cosine_periodic>` cosine/periodic

View File

@ -296,6 +296,8 @@ Some common CMake variables
- Description
* - ``CMAKE_INSTALL_PREFIX``
- root directory of install location for ``make install`` (default: ``$HOME/.local``)
* - ``LAMMPS_INSTALL_RPATH``
- set or remove runtime path setting from binaries for ``make install`` (default: ``off``)
* - ``CMAKE_BUILD_TYPE``
- controls compilation options:
one of ``RelWithDebInfo`` (default), ``Release``, ``Debug``, ``MinSizeRel``
@ -409,10 +411,10 @@ interface (``ccmake`` or ``cmake-gui``).
.. note::
Using a preset to select a compiler package (``clang.cmake``,
``gcc.cmake``, or ``intel.cmake``) are an exception to the option
of updating the configuration incrementally, as they will trigger
a reset of cached internal CMake settings and thus reset them to
their default values.
``gcc.cmake``, ``intel.cmake``, ``oneapi.cmake``, or ``pgi.cmake``)
are an exception to the mechanism of updating the configuration incrementally,
as they will trigger a reset of cached internal CMake settings and thus
reset settings to their default values.
Compilation and build targets
-----------------------------

View File

@ -42,10 +42,11 @@ screening. It may be necessary to use the *extra/special/per/atom*
keyword of the :doc:`read_data <read_data>` command. If using :doc:`fix shake <fix_shake>`, make sure no Drude particle is in this fix
group.
There are two ways to thermostat the Drude particles at a low
There are three ways to thermostat the Drude particles at a low
temperature: use either :doc:`fix langevin/drude <fix_langevin_drude>`
for a Langevin thermostat, or :doc:`fix drude/transform/\* <fix_drude_transform>` for a Nose-Hoover
thermostat. The former requires use of the command :doc:`comm_modify vel yes <comm_modify>`. The latter requires two separate integration
thermostat, or :doc:`fix tgnvt/drude <fix_tgnh_drude>` for a temperature-grouped Nose-Hoover thermostat.
The first and third require use of the command :doc:`comm_modify vel yes <comm_modify>`. The second requires two separate integration
fixes like *nvt* or *npt*\ . The correct temperatures of the reduced
degrees of freedom can be calculated using the :doc:`compute temp/drude <compute_temp_drude>`. This requires also to use the
command *comm_modify vel yes*.

View File

@ -36,7 +36,7 @@ polarizability :math:`\alpha` by
Ideally, the mass of the Drude particle should be small, and the
stiffness of the harmonic bond should be large, so that the Drude
particle remains close ot the core. The values of Drude mass, Drude
particle remains close to the core. The values of Drude mass, Drude
charge, and force constant can be chosen following different
strategies, as in the following examples of polarizable force
fields:
@ -221,6 +221,14 @@ modification of forces but no position/velocity updates), the fix
fix NVE all nve
To avoid the flying ice cube artifact, where the atoms progressively freeze and the
center of mass of the whole system drifts faster and faster, the *fix momentum*
can be used. For instance:
.. code-block:: LAMMPS
fix MOMENTUM all momentum 100 linear 1 1 1
Finally, do not forget to update the atom type elements if you use
them in a *dump_modify ... element ...* command, by adding the element
type of the DPs. Here for instance
@ -376,14 +384,7 @@ For our phenol example, the groups would be defined as
Note that with the fixes *drude/transform*\ , it is not required to
specify *comm_modify vel yes* because the fixes do it anyway (several
times and for the forces also). To avoid the flying ice cube artifact
:ref:`(Lamoureux and Roux) <Lamoureux2>`, where the atoms progressively freeze and the
center of mass of the whole system drifts faster and faster, the *fix
momentum* can be used. For instance:
.. code-block:: LAMMPS
fix MOMENTUM all momentum 100 linear 1 1 1
times and for the forces also).
It is a bit more tricky to run a NPT simulation with Nose-Hoover
barostat and thermostat. First, the volume should be integrated only
@ -404,6 +405,31 @@ instructions for thermostatting and barostatting will look like
fix NVT DRUDES nvt temp 1. 1. 20
fix INVERSE all drude/transform/inverse
Another option for thermalizing the Drude model is to use the
temperature-grouped Nose-Hoover (TGNH) thermostat proposed by :ref:`(Son) <TGNH-SON>`.
This is implemented as :doc:`fix tgnvt/drude <fix_tgnh_drude>` and :doc:`fix tgnpt/drude <fix_tgnh_drude>`.
It separates the kinetic energy into three contributions:
the molecular center of mass (COM) motion, the motion of atoms or atom-Drude pairs relative to molecular COMs,
and the relative motion of atom-Drude pairs.
An independent Nose-Hoover chain is applied to each type of motion.
When TGNH is used, the temperatures of molecular, atomic and Drude motion can be printed out with :doc:`thermo_style` command.
NVT simulation with TGNH thermostat
.. code-block:: LAMMPS
comm_modify vel yes
fix TGNVT all tgnvt/drude temp 300. 300. 100 1. 20
thermo_style custom f_TGNVT[1] f_TGNVT[2] f_TGNVT[3]
NPT simulation with TGNH thermostat
.. code-block:: LAMMPS
comm_modify vel yes
fix TGNPT all tgnpt/drude temp 300. 300. 100 1. 20 iso 1. 1. 500
thermo_style custom f_TGNPT[1] f_TGNPT[2] f_TGNPT[3]
----------
**Rigid bodies**
@ -480,3 +506,7 @@ NPT ensemble using Nose-Hoover thermostat:
**(SWM4-NDP)** Lamoureux, Harder, Vorobyov, Roux, MacKerell, Chem Phys
Let, 418, 245-249 (2006)
.. _TGNH-Son:
**(Son)** Son, McDaniel, Cui and Yethiraj, J Phys Chem Lett, 10, 7523 (2019).

View File

@ -72,7 +72,7 @@ explained in more detail here: `feature branch workflow <https://www.atlassian.c
**Feature branches**
First of all, create a clone of your version on github on your local
First of all, create a clone of your version on GitHub on your local
machine via HTTPS:
.. code-block:: bash
@ -155,7 +155,7 @@ useful message that explains the change.
.. code-block:: bash
$ git commit -m 'Finally updated the github tutorial'
$ git commit -m 'Finally updated the GitHub tutorial'
After the commit, the changes can be pushed to the same branch on GitHub:

View File

@ -18,12 +18,13 @@ This compute
calculates rotational kinetic energy which can be :doc:`output with thermodynamic info <Howto_output>`.
Use one of these 3 pair potentials, which compute forces and torques
Use one of these 4 pair potentials, which compute forces and torques
between interacting pairs of particles:
* :doc:`pair_style <pair_style>` gran/history
* :doc:`pair_style <pair_style>` gran/no_history
* :doc:`pair_style <pair_style>` gran/hertzian
* :doc:`pair_style gran/history <pair_gran>`
* :doc:`pair_style gran/no_history <pair_gran>`
* :doc:`pair_style gran/hertzian <pair_gran>`
* :doc:`pair_style granular <pair_granular>`
These commands implement fix options specific to granular systems:
@ -31,6 +32,7 @@ These commands implement fix options specific to granular systems:
* :doc:`fix pour <fix_pour>`
* :doc:`fix viscous <fix_viscous>`
* :doc:`fix wall/gran <fix_wall_gran>`
* :doc:`fix wall/gran/region <fix_wall_gran_region>`
The fix style *freeze* zeroes both the force and torque of frozen
atoms, and should be used for granular system instead of the fix style

View File

@ -9,8 +9,8 @@ Overview
``PyLammps`` is a Python wrapper class for LAMMPS which can be created
on its own or use an existing lammps Python object. It creates a simpler,
more "pythonic" interface to common LAMMPS functionality, in contrast to
the ``lammps.py`` wrapper for the C-style LAMMPS library interface which
is written using `Python ctypes <ctypes_>`_. The ``lammps.py`` wrapper
the ``lammps`` wrapper for the C-style LAMMPS library interface which
is written using `Python ctypes <ctypes_>`_. The ``lammps`` wrapper
is discussed on the :doc:`Python_head` doc page.
Unlike the flat ``ctypes`` interface, PyLammps exposes a discoverable

View File

@ -67,5 +67,5 @@ rotate.
The only frictional idealized walls currently in LAMMPS are flat or
curved surfaces specified by the :doc:`fix wall/gran <fix_wall_gran>`
command. At some point we plan to allow regoin surfaces to be used as
command. At some point we plan to allow region surfaces to be used as
frictional walls, as well as triangulated surfaces.

View File

@ -86,33 +86,59 @@ check out any other desired branch) first.
Once you have updated your local files with a ``git pull`` (or ``git
checkout``), you still need to re-build LAMMPS if any source files have
changed. To do this, you should cd to the src directory and type:
changed. How to do this depends on the build system you are using.
.. code-block:: bash
.. tabs::
$ make purge # remove any deprecated src files
$ make package-update # sync package files with src files
$ make foo # re-build for your machine (mpi, serial, etc)
.. tab:: CMake build
just as described on the :doc:`Apply patch <Install_patch>` page,
after a patch has been installed.
Change to your build folder and type:
.. warning::
.. code-block:: bash
If you wish to edit/change a src file that is from a
package, you should edit the version of the file inside the package
sub-directory with src, then re-install the package. The version in
the source directory is merely a copy and will be wiped out if you type "make
package-update".
cmake . --build
.. warning::
CMake should auto-detect whether it needs to re-run the CMake
configuration step and otherwise redo the build for all files
that have been changed or files that depend on changed files.
In case some build options have been changed or renamed, you
may have to update those by running:
The GitHub servers support both the "git://" and
"https://" access protocols for anonymous read-only access. If you
have a correspondingly configured GitHub account, you may also use
SSH access with the URL "git@github.com:lammps/lammps.git".
.. code-block:: bash
The LAMMPS GitHub project is managed by Christoph Junghans (LANL,
junghans at lanl.gov), Axel Kohlmeyer (Temple U, akohlmey at
gmail.com) and Richard Berger (Temple U, richard.berger at
temple.edu).
cmake .
and then rebuild.
.. tab:: Traditional make
Switch to the src directory and type:
.. code-block:: bash
$ make purge # remove any deprecated src files
$ make package-update # sync package files with src files
$ make foo # re-build for your machine (mpi, serial, etc)
Just as described on the :doc:`Apply patch <Install_patch>` page,
after a patch has been installed.
.. warning::
If you wish to edit/change a src file that is from a package,
you should edit the version of the file inside the package
sub-directory with src, then re-install the package. The
version in the source directory is merely a copy and will be
wiped out if you type "make package-update".
.. admonition:: Git protocols
:class: note
The servers at github.com support the "git://" and "https://" access
protocols for anonymous, read-only access. If you have a suitably
configured GitHub account, you may also use SSH protocol with the
URL "git@github.com:lammps/lammps.git".
The LAMMPS GitHub project is currently managed by Axel Kohlmeyer
(Temple U, akohlmey at gmail.com) and Richard Berger (Temple U,
richard.berger at temple.edu).

View File

@ -43,24 +43,54 @@ up to date.
* A list of updated files print out to the screen. The -b switch
creates backup files of your originals (e.g. src/force.cpp.orig), so
you can manually undo the patch if something goes wrong.
* Type the following from the src directory, to enforce consistency
between the src and package directories. This is OK to do even if you
don't use one or more packages. If you are applying several patches
successively, you only need to type this once at the end. The purge
command removes deprecated src files if any were removed by the patch
from package sub-directories.
.. code-block:: bash
* Once you have updated your local files you need to re-build LAMMPS.
If you are applying several patches successively, you only need to
do the rebuild once at the end. How to do it depends on the build
system you are using.
$ make purge
$ make package-update
.. tabs::
* Re-build LAMMPS via the "make" command.
.. tab:: CMake build
.. warning::
Change to your build folder and type:
If you wish to edit/change a source file that is part of a package,
you should edit the version of the file inside the package folder in
src, and then re-install or update the package. The version in the
src directory is merely a copy and will be wiped out when you type
"make package-update".
.. code-block:: bash
cmake . --build
CMake should auto-detect whether it needs to re-run the CMake
configuration step and otherwise redo the build for all files
that have been changed or files that depend on changed files.
In case some build options have been changed or renamed, you
may have to update those by running:
.. code-block:: bash
cmake .
and then rebuild.
.. tab:: Traditional make
Switch to the src directory and type:
.. code-block:: bash
$ make purge # remove any deprecated src files
$ make package-update # sync package files with src files
$ make foo # re-build for your machine (mpi, serial, etc)
to enforce consistency of the source between the src folder
and package directories. This is OK to do even if you don't
use any packages. The "make purge" command removes any deprecated
src files if they were removed by the patch from a package
sub-directory.
.. warning::
If you wish to edit/change a src file that is from a package,
you should edit the version of the file inside the package
sub-directory with src, then re-install the package. The
version in the source directory is merely a copy and will be
wiped out if you type "make package-update".

View File

@ -33,22 +33,19 @@ in its name, e.g. lammps-23Jun18.
----------
You can also download a zip file via the "Clone or download" button on
the `LAMMPS GitHub site <git_>`_. The file name will be lammps-master.zip
which can be unzipped with the following command, to create
a lammps-master dir:
You can also download a compressed tar or zip archives from the
"Assets" sections of the `LAMMPS GitHub releases site <git_>`_.
The file name will be lammps-<version>.zip which can be unzipped
with the following command, to create a lammps-<version> dir:
.. code-block:: bash
$ unzip lammps*.zip
This version is the most up-to-date LAMMPS development version. It
will have the date of the most recent patch release (see the file
src/version.h). But it will also include any new bug-fixes or
features added since the last patch release. They will be included in
the next patch release tarball.
This version corresponds to the selected LAMMPS patch or stable
release.
.. _git: https://github.com/lammps/lammps
.. _git: https://github.com/lammps/lammps/releases
----------

View File

@ -24,29 +24,32 @@ DOI for the LAMMPS code
LAMMPS developers use the `Zenodo service at CERN
<https://zenodo.org/>`_ to create digital object identifies (DOI) for
stable releases of the LAMMPS code. There are two types of DOIs for the
LAMMPS source code: 1) the canonical DOI for **all** versions of LAMMPS,
which will always point to the latest stable release version is:
LAMMPS source code: the canonical DOI for **all** versions of LAMMPS,
which will always point to the **latest** stable release version is:
`DOI: 10.5281/zenodo.3726416 <https://dx.doi/org/10.5281/zenodo.3726416>`_
- DOI: `10.5281/zenodo.3726416 <https://dx.doi.org/10.5281/zenodo.3726416>`_
In addition there are DOIs for individual stable releases starting with
the `3 March 2020 version, DOI:10.5281/zenodo.3726417 <https://dx.doi/org/10.5281/zenodo.3726416>`_
In addition there are DOIs for individual stable releases. Currently there are:
- 3 March 2020 version: `DOI:10.5281/zenodo.3726417 <https://dx.doi.org/10.5281/zenodo.3726417>`_
- 29 October 2020 version: `DOI:10.5281/zenodo.4157471 <https://dx.doi.org/10.5281/zenodo.4157471>`_
Home page
^^^^^^^^^
The LAMMPS website at `https://lammps.sandia.gov/ <https://lammps.sandia.gov>`_ is the canonical
location for information about LAMMPS and more detailed lists of publications
using LAMMPS and contributing features.
The LAMMPS website at `https://lammps.sandia.gov/
<https://lammps.sandia.gov>`_ is the canonical location for information
about LAMMPS and its features.
Citing contributions
^^^^^^^^^^^^^^^^^^^^
LAMMPS has many features and uses previously published methods and
algorithms or novel features. It also includes potential parameter
filed for specific models. You can look up relevant publications either
in the LAMMPS output to the screen, the ``log.cite`` file (which is
populated with references to relevant papers through embedding them into
the source code) and in the documentation of the :doc:`corresponding commands
LAMMPS has many features and that use either previously published
methods and algorithms or novel features. It also includes potential
parameter filed for specific models. Where available, a reminder about
references for optional features used in a specific run is printed to
the screen and log file. Style and output location can be selected with
the :ref:`-cite command-line switch <cite>`. Additional references are
given in the documentation of the :doc:`corresponding commands
<Commands_all>` or in the :doc:`Howto tutorials <Howto>`.

View File

@ -85,7 +85,7 @@ commands)
* water potentials: TIP3P, TIP4P, SPC
* implicit solvent potentials: hydrodynamic lubrication, Debye
* force-field compatibility with common CHARMM, AMBER, DREIDING, OPLS, GROMACS, COMPASS options
* access to the `OpenKIM Repository <http://openkim.org>`_ of potentials via :doc:`kim_init, kim_interactions, and kim_query <kim_commands>` commands
* access to the `OpenKIM Repository <http://openkim.org>`_ of potentials via :doc:`kim command <kim_commands>`
* hybrid potentials: multiple pair, bond, angle, dihedral, improper potentials can be used in one simulation
* overlaid potentials: superposition of multiple pair potentials

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

View File

@ -14,6 +14,7 @@ This section documents the following functions:
- :cpp:func:`lammps_config_has_package`
- :cpp:func:`lammps_config_package_count`
- :cpp:func:`lammps_config_package_name`
- :cpp:func:`lammps_config_accelerator`
- :cpp:func:`lammps_has_style`
- :cpp:func:`lammps_style_count`
- :cpp:func:`lammps_style_name`
@ -126,6 +127,11 @@ approach.
-----------------------
.. doxygenfunction:: lammps_config_accelerator
:project: progguide
-----------------------
.. doxygenfunction:: lammps_has_style
:project: progguide

View File

@ -76,7 +76,7 @@ It documents the following functions:
-----------------------
.. doxygenfunction:: lammps_create_atoms(void *handle, int n, int *id, int *type, double *x, double *v, int *image, int bexpand)
.. doxygenfunction:: lammps_create_atoms(void *handle, int n, const int *id, const int *type, const double *x, const double *v, const int *image, int bexpand)
:project: progguide

View File

@ -21,10 +21,16 @@ where all LAMMPS development is coordinated.
----------
The content for this manual is part of the LAMMPS distribution. You can
build a local copy of the Manual as HTML pages or a PDF file, by
following the steps on the :doc:`Build_manual` page. The manual is
organized in two parts:
The content for this manual is part of the LAMMPS distribution. The
online version always corresponds to the latest development version.
If needed, you can download or build a local copy of the manual as
HTML pages or a PDF file by following the steps on the
:doc:`Build_manual` page. If you have difficulties viewing the pages
please :ref:`see this note <webbrowser>`.
-----------
The manual is organized in two parts:
1) the :ref:`User Guide <user_documentation>` for how to install
and use LAMMPS and 2) the :ref:`Programmer Guide <programmer_documentation>`
for how to write programs using the LAMMPS library from different
@ -107,3 +113,15 @@ Indices and tables
* :ref:`genindex`
* :ref:`search`
.. _webbrowser:
.. admonition:: Web Browser Compatibility
The HTML version of the manual makes use of advanced features present
int "modern" web browsers. This can lead to incompatibilities with older
web browsers (released more than 4 years ago) and specific vendor browsers
(e.g. Internet Explorer on Windows; Microsoft Edge works well though)
where parts of the pages are not rendered as expected (e.g. the layout is
broken or mathematical expressions not typeset). In that case we
recommend to install/use a different/newer web browser or use
the `PDF version of the manual <https://lammps.sandia.gov/doc/Manual.pdf>`_.

View File

@ -206,16 +206,22 @@ packages in the src directory for examples. If you are uncertain, please ask.
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.
A LaTeX citation is stored in a variable at the top of the file and
a single line of code registering this variable is added to the
constructor of the class. If there is additional functionality (which
may have been added later) described in a different publication,
additional citation descriptions may be added for as long as they
are only registered when the corresponding keyword activating this
functionality is used. With these options it is possible to have
LAMMPS output a specific citation reminder whenever a user invokes
your feature from their input script. Note that you should only use
this for the most relevant paper for a feature and a publication that
you or your group authored. E.g. adding a citation 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 included in the documentation page you provide describing
your contribution. If you are not sure what the best option would
be, please contact the LAMMPS developers for advice.
Finally, as a general rule-of-thumb, the more clear and
self-explanatory you make your documentation and README files, and the

View File

@ -50,6 +50,7 @@ page gives those details.
* :ref:`MSCG <PKG-MSCG>`
* :ref:`OPT <PKG-OPT>`
* :ref:`PERI <PKG-PERI>`
* :ref:`PLUGIN <PKG-PLUGIN>`
* :ref:`POEMS <PKG-POEMS>`
* :ref:`PYTHON <PKG-PYTHON>`
* :ref:`QEQ <PKG-QEQ>`
@ -367,17 +368,19 @@ KIM package
**Contents:**
This package contains a set of commands that serve as a wrapper on the
This package contains a command with a set of sub-commands that serve as a
wrapper on the
`Open Knowledgebase of Interatomic Models (OpenKIM) <https://openkim.org>`_
repository of interatomic models (IMs) enabling compatible ones to be used in
LAMMPS simulations.
This includes :doc:`kim_init <kim_commands>`, and
:doc:`kim_interactions <kim_commands>` commands to select, initialize and
instantiate the IM, a :doc:`kim_query <kim_commands>` command to perform web
This includes :doc:`kim init <kim_commands>`, and
:doc:`kim interactions <kim_commands>` commands to select, initialize and
instantiate the IM, a :doc:`kim query <kim_commands>` command to perform web
queries for material property predictions of OpenKIM IMs, a
:doc:`kim_param <kim_commands>` command to access KIM Model Parameters from
LAMMPS, and a :doc:`kim_property <kim_commands>` command to write material
:doc:`kim param <kim_commands>` command to access KIM Model Parameters from
LAMMPS, and a :doc:`kim property <kim_commands>` command to write material
properties computed in LAMMPS to standard KIM property instance format.
Support for KIM IMs that conform to the
@ -386,8 +389,8 @@ is provided by the :doc:`pair_style kim <pair_kim>` command.
.. note::
The command *pair_style kim* is called by *kim_interactions* and
is not recommended to be directly used in input scripts.
The command *pair_style kim* is called by *kim interactions* and is not
recommended to be directly used in input scripts.
To use this package you must have the KIM API library available on your
system. The KIM API is available for download on the
@ -404,7 +407,7 @@ and is funded by the `National Science Foundation <https://www.nsf.gov/>`_.
API and the *pair_style kim* command. Yaser Afshar (U Minnesota),
Axel Kohlmeyer (Temple U), Ellad Tadmor (U Minnesota), and
Daniel Karls (U Minnesota) contributed to the
:doc:`kim_commands <kim_commands>` interface in close collaboration with
:doc:`kim command <kim_commands>` interface in close collaboration with
Ryan Elliott.
**Install:**
@ -414,7 +417,7 @@ This package has :ref:`specific installation instructions <kim>` on the
**Supporting info:**
* :doc:`kim_commands <kim_commands>`
* :doc:`kim command <kim_commands>`
* :doc:`pair_style kim <pair_kim>`
* src/KIM: filenames -> commands
* src/KIM/README
@ -662,19 +665,31 @@ MLIAP package
**Contents:**
A general interface for machine-learning interatomic potentials.
A general interface for machine-learning interatomic potentials, including PyTorch.
**Install:**
To use this package, also the :ref:`SNAP package <PKG-SNAP>` needs to be installed.
To use this package, also the :ref:`SNAP package <PKG-SNAP>` package needs
to be installed. To make the *mliappy* model available, also the
:ref:`PYTHON package <PKG-PYTHON>` package needs to be installed, the version
of Python must be 3.6 or later, and the `cython <https://cython.org/>`_ software
must be installed.
**Author:** Aidan Thompson (Sandia).
**Author:** Aidan Thompson (Sandia), Nicholas Lubbers (LANL).
**Supporting info:**
* src/MLIAP: filenames -> commands
* src/MLIAP/README
* :doc:`pair_style mliap <pair_mliap>`
* examples/mliap
* :doc:`compute_style mliap <compute_mliap>`
* examples/mliap (see README)
When built with the *mliappy* model this package includes an extension for
coupling with Python models, including PyTorch. In this case, the Python
interpreter linked to LAMMPS will need the ``cython`` and ``numpy`` modules
installed. The provided examples build models with PyTorch, which would
therefore also needs to be installed to run those examples.
----------
@ -829,6 +844,28 @@ Foster (UTSA).
----------
.. _PKG-PLUGIN:
PLUGIN package
--------------
**Contents:**
A :doc:`plugin <plugin>` command that can load and unload several
kind of styles in LAMMPS from shared object files at runtime without
having to recompile and relink LAMMPS.
**Authors:** Axel Kohlmeyer (Temple U)
**Supporting info:**
* src/PLUGIN: filenames -> commands
* :doc:`plugin command <plugin>`
* :doc:`Information on writing plugins <Developer_plugins>`
* examples/plugin
----------
.. _PKG-POEMS:
POEMS package
@ -1036,9 +1073,11 @@ the usual manner via MD. Various pair, fix, and compute styles.
* :doc:`pair_style spin/dipole/long <pair_spin_dipole>`
* :doc:`pair_style spin/dmi <pair_spin_dmi>`
* :doc:`pair_style spin/exchange <pair_spin_exchange>`
* :doc:`pair_style spin/exchange/biquadratic <pair_spin_exchange>`
* :doc:`pair_style spin/magelec <pair_spin_magelec>`
* :doc:`pair_style spin/neel <pair_spin_neel>`
* :doc:`fix nve/spin <fix_nve_spin>`
* :doc:`fix langevin/spin <fix_langevin_spin>`
* :doc:`fix precession/spin <fix_precession_spin>`
* :doc:`compute spin <compute_spin>`
* :doc:`neb/spin <neb_spin>`
@ -1416,8 +1455,8 @@ oscillators as a model of polarization. See the :doc:`Howto drude <Howto_drude>
for an overview of how to use the package. There are auxiliary tools
for using this package in tools/drude.
**Authors:** Alain Dequidt (U Blaise Pascal Clermont-Ferrand), Julien
Devemy (CNRS), and Agilio Padua (U Blaise Pascal).
**Authors:** Alain Dequidt (U Clermont Auvergne), Julien
Devemy (CNRS), and Agilio Padua (ENS de Lyon).
**Supporting info:**
@ -1484,7 +1523,7 @@ methods for performing FEP simulations by using a :doc:`fix adapt/fep <fix_adapt
which have a "soft" in their style name. There are auxiliary tools
for using this package in tools/fep; see its README file.
**Author:** Agilio Padua (Universite Blaise Pascal Clermont-Ferrand)
**Author:** Agilio Padua (ENS de Lyon)
**Supporting info:**
@ -2440,6 +2479,6 @@ which discuss the `QuickFF <quickff_>`_ methodology.
* :doc:`bond_style mm3 <bond_mm3>`
* :doc:`improper_style distharm <improper_distharm>`
* :doc:`improper_style sqdistharm <improper_sqdistharm>`
* :doc:`pair_style mm3/switch3/coulgauss/long <pair_mm3_switch3_coulgauss_long>`
* :doc:`pair_style mm3/switch3/coulgauss/long <pair_lj_switch3_coulgauss_long>`
* :doc:`pair_style lj/switch3/coulgauss/long <pair_lj_switch3_coulgauss_long>`
* examples/USER/yaff

View File

@ -71,6 +71,8 @@ package:
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
| :ref:`PERI <PKG-PERI>` | Peridynamics models | :doc:`pair_style peri <pair_peri>` | peri | no |
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
| :ref:`PLUGIN <PKG-PLUGIN>` | Plugin loader command | :doc:`plugin <plugin>` | plugins | no |
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
| :ref:`POEMS <PKG-POEMS>` | coupled rigid body motion | :doc:`fix poems <fix_poems>` | rigid | int |
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
| :ref:`PYTHON <PKG-PYTHON>` | embed Python code in an input script | :doc:`python <python>` | python | sys |

View File

@ -50,7 +50,7 @@ against invalid accesses.
**Numpy Methods**:
* :py:meth:`numpy.extract_atom() <lammps.numpy_wrapper.extract_atom()>`: extract a per-atom quantity as numpy array
* :py:meth:`numpy.extract_atom() <lammps.numpy_wrapper.numpy_wrapper.extract_atom()>`: extract a per-atom quantity as numpy array
.. tab:: PyLammps/IPyLammps API

View File

@ -39,7 +39,9 @@ about compile time settings and included packages and styles.
* :py:attr:`lammps.has_jpeg_support <lammps.lammps.has_jpeg_support>`
* :py:attr:`lammps.has_ffmpeg_support <lammps.lammps.has_ffmpeg_support>`
* :py:attr:`lammps.installed_packages <lammps.lammps.installed_pages>`
* :py:attr:`lammps.installed_packages <lammps.lammps.installed_packages>`
* :py:meth:`lammps.get_accelerator_config <lammps.lammps.accelerator_config>`
* :py:meth:`lammps.has_style() <lammps.lammps.has_style()>`
* :py:meth:`lammps.available_styles() <lammps.lammps.available_styles()>`

View File

@ -9,7 +9,7 @@ This means you can extend the Python wrapper by following these steps:
* Add a new interface function to ``src/library.cpp`` and
``src/library.h``.
* Rebuild LAMMPS as a shared library.
* Add a wrapper method to ``python/lammps.py`` for this interface
* Add a wrapper method to ``python/lammps/core.py`` for this interface
function.
* Define the corresponding ``argtypes`` list and ``restype``
in the ``lammps.__init__()`` function.

View File

@ -0,0 +1,11 @@
Output Readers
==============
.. py:module:: lammps.formats
The Python package contains the :py:mod:`lammps.formats` module, which
provides classes to post-process some of the output files generated by LAMMPS.
.. automodule:: lammps.formats
:members:
:noindex:

View File

@ -13,6 +13,7 @@ together.
Python_module
Python_ext
Python_call
Python_formats
Python_examples
Python_error
Python_trouble

View File

@ -8,9 +8,9 @@ module. Because of the dynamic loading, it is required that LAMMPS is
compiled in :ref:`"shared" mode <exe>`. It is also recommended to
compile LAMMPS with :ref:`C++ exceptions <exceptions>` enabled.
Two files are necessary for Python to be able to invoke LAMMPS code:
Two components are necessary for Python to be able to invoke LAMMPS code:
* The LAMMPS Python Module (``lammps.py``) from the ``python`` folder
* The LAMMPS Python Package (``lammps``) from the ``python`` folder
* The LAMMPS Shared Library (``liblammps.so``, ``liblammps.dylib`` or
``liblammps.dll``) from the folder where you compiled LAMMPS.
@ -25,10 +25,10 @@ Installing the LAMMPS Python Module and Shared Library
======================================================
Making LAMMPS usable within Python and vice versa requires putting the
LAMMPS Python module file (``lammps.py``) into a location where the
LAMMPS Python package (``lammps``) into a location where the
Python interpreter can find it and installing the LAMMPS shared library
into a folder that the dynamic loader searches or into the same folder
where the ``lammps.py`` file is. There are multiple ways to achieve
into a folder that the dynamic loader searches or inside of the installed
``lammps`` package folder. There are multiple ways to achieve
this.
#. Do a full LAMMPS installation of libraries, executables, selected
@ -36,13 +36,13 @@ this.
available via CMake), which can also be either system-wide or into
user specific folders.
#. Install both files into a Python ``site-packages`` folder, either
#. Install both components into a Python ``site-packages`` folder, either
system-wide or in the corresponding user-specific folder. This way no
additional environment variables need to be set, but the shared
library is otherwise not accessible.
#. Do an installation into a virtual environment. This can either be
an installation of the python module only or a full installation.
#. Do an installation into a virtual environment. This can either be an
installation of the Python package only or a full installation of LAMMPS.
#. Leave the files where they are in the source/development tree and
adjust some environment variables.
@ -69,7 +69,7 @@ this.
cd build
# configure LAMMPS compilation
cmake -C cmake/presets/minimal.cmake -D BUILD_SHARED_LIBS=on \
cmake -C ../cmake/presets/minimal.cmake -D BUILD_SHARED_LIBS=on \
-D LAMMPS_EXCEPTIONS=on -D PKG_PYTHON=on ../cmake
# compile LAMMPS
@ -81,40 +81,42 @@ this.
This leads to an installation to the following locations:
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
| File | Location | Notes |
+========================+===========================================================+=============================================================+
| LAMMPS Python Module | * ``$HOME/.local/lib/pythonX.Y/site-packages/`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``$HOME/.local/lib64/pythonX.Y/site-packages/`` (64bit) | |
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS shared library | * ``$HOME/.local/lib/`` (32bit) | |
| | * ``$HOME/.local/lib64/`` (64bit) | |
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS executable | * ``$HOME/.local/bin/`` | |
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS potential files | * ``$HOME/.local/share/lammps/potentials/`` | Set ``LAMMPS_POTENTIALS`` environment variable to this path |
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
| File | Location | Notes |
+========================+=================================================================+=============================================================+
| LAMMPS Python package | * ``$HOME/.local/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``$HOME/.local/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS shared library | * ``$HOME/.local/lib/`` (32bit) | Set shared loader environment variable to this path |
| | * ``$HOME/.local/lib64/`` (64bit) | (see below for more info on this) |
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS executable | * ``$HOME/.local/bin/`` | |
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS potential files | * ``$HOME/.local/share/lammps/potentials/`` | Set ``LAMMPS_POTENTIALS`` environment variable to this path |
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
For a system-wide installation you need to set
``CMAKE_INSTALL_PREFIX`` to a system folder like ``/usr`` (or
``/usr/local``). The installation step (**not** the
``/usr/local``); the default is ``${HOME}/.local``. The
installation step for a system folder installation (**not** the
configuration/compilation) needs to be done with superuser
privilege, e.g. by using ``sudo cmake --install .``. The
installation folders will then by changed to:
installation folders will then be changed to (assuming ``/usr`` as
prefix):
+------------------------+---------------------------------------------------+-------------------------------------------------------------+
| File | Location | Notes |
+========================+===================================================+=============================================================+
| LAMMPS Python Module | * ``/usr/lib/pythonX.Y/site-packages/`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``/usr/lib64/pythonX.Y/site-packages/`` (64bit) | |
+------------------------+---------------------------------------------------+-------------------------------------------------------------+
| LAMMPS shared library | * ``/usr/lib/`` (32bit) | |
| | * ``/usr/lib64/`` (64bit) | |
+------------------------+---------------------------------------------------+-------------------------------------------------------------+
| LAMMPS executable | * ``/usr/bin/`` | |
+------------------------+---------------------------------------------------+-------------------------------------------------------------+
| LAMMPS potential files | * ``/usr/share/lammps/potentials/`` | |
+------------------------+---------------------------------------------------+-------------------------------------------------------------+
+------------------------+---------------------------------------------------------+-------------------------------------------------------------+
| File | Location | Notes |
+========================+=========================================================+=============================================================+
| LAMMPS Python package | * ``/usr/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``/usr/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
+------------------------+---------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS shared library | * ``/usr/lib/`` (32bit) | |
| | * ``/usr/lib64/`` (64bit) | |
+------------------------+---------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS executable | * ``/usr/bin/`` | |
+------------------------+---------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS potential files | * ``/usr/share/lammps/potentials/`` | |
+------------------------+---------------------------------------------------------+-------------------------------------------------------------+
To be able to use the "user" installation you have to ensure that
the folder containing the LAMMPS shared library is either included
@ -146,7 +148,7 @@ this.
necessary due to files installed in system folders that are loaded
automatically when a login shell is started.
.. tab:: Python module only
.. tab:: Python package only
Compile LAMMPS with either :doc:`CMake <Build_cmake>` or the
:doc:`traditional make <Build_make>` procedure in :ref:`shared
@ -157,37 +159,37 @@ this.
make install-python
This will try to install (only) the shared library and the python
module into a system folder and if that fails (due to missing
This will try to install (only) the shared library and the Python
package into a system folder and if that fails (due to missing
write permissions) will instead do the installation to a user
folder under ``$HOME/.local``. For a system-wide installation you
would have to gain superuser privilege, e.g. though ``sudo``
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
| File | Location | Notes |
+========================+===========================================================+=============================================================+
| LAMMPS Python Module | * ``$HOME/.local/lib/pythonX.Y/site-packages/`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``$HOME/.local/lib64/pythonX.Y/site-packages/`` (64bit) | |
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS shared library | * ``$HOME/.local/lib/pythonX.Y/site-packages/`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``$HOME/.local/lib64/pythonX.Y/site-packages/`` (64bit) | |
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
| File | Location | Notes |
+========================+=================================================================+=============================================================+
| LAMMPS Python package | * ``$HOME/.local/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``$HOME/.local/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS shared library | * ``$HOME/.local/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``$HOME/.local/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
For a system-wide installation those folders would then become.
+------------------------+---------------------------------------------------+-------------------------------------------------------------+
| File | Location | Notes |
+========================+===================================================+=============================================================+
| LAMMPS Python Module | * ``/usr/lib/pythonX.Y/site-packages/`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``/usr/lib64/pythonX.Y/site-packages/`` (64bit) | |
+------------------------+---------------------------------------------------+-------------------------------------------------------------+
| LAMMPS shared library | * ``/usr/lib/pythonX.Y/site-packages/`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``/usr/lib64/pythonX.Y/site-packages/`` (64bit) | |
+------------------------+---------------------------------------------------+-------------------------------------------------------------+
+------------------------+---------------------------------------------------------+-------------------------------------------------------------+
| File | Location | Notes |
+========================+=========================================================+=============================================================+
| LAMMPS Python package | * ``/usr/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``/usr/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
+------------------------+---------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS shared library | * ``/usr/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``/usr/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
+------------------------+---------------------------------------------------------+-------------------------------------------------------------+
No environment variables need to be set for those, as those
folders are searched by default by Python or the LAMMPS Python
module.
package.
For the traditional make process you can override the python
version to version x.y when calling ``make`` with
@ -199,9 +201,9 @@ this.
.. code-block:: bash
$ python install.py -m <python module> -l <shared library> -v <version.h file> [-d <pydir>]
$ python install.py -p <python package> -l <shared library> -v <version.h file> [-d <pydir>]
* The ``-m`` flag points to the ``lammps.py`` python module file to be installed,
* The ``-p`` flag points to the ``lammps`` Python package folder to be installed,
* the ``-l`` flag points to the LAMMPS shared library file to be installed,
* the ``-v`` flag points to the ``version.h`` file in the LAMMPS source
* and the optional ``-d`` flag to a custom (legacy) installation folder
@ -249,38 +251,38 @@ this.
When using CMake to build LAMMPS, you need to set
``CMAKE_INSTALL_PREFIX`` to the value of the ``$VIRTUAL_ENV``
environment variable during the configuration step. For the
traditional make procedure, not additional steps are needed.
After compiling LAMMPS you can do a "Python module only"
traditional make procedure, no additional steps are needed.
After compiling LAMMPS you can do a "Python package only"
installation with ``make install-python`` and the LAMMPS Python
module and the shared library file are installed into the
package and the shared library file are installed into the
following locations:
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
| File | Location | Notes |
+========================+===========================================================+=============================================================+
| LAMMPS Python Module | * ``$VIRTUAL_ENV/lib/pythonX.Y/site-packages/`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``$VIRTUAL_ENV/lib64/pythonX.Y/site-packages/`` (64bit) | |
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS shared library | * ``$VIRTUAL_ENV/lib/pythonX.Y/site-packages/`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``$VIRTUAL_ENV/lib64/pythonX.Y/site-packages/`` (64bit) | |
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
| File | Location | Notes |
+========================+=================================================================+=============================================================+
| LAMMPS Python Module | * ``$VIRTUAL_ENV/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``$VIRTUAL_ENV/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS shared library | * ``$VIRTUAL_ENV/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``$VIRTUAL_ENV/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
If you do a full installation (CMake only) with "install", this
leads to the following installation locations:
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
| File | Location | Notes |
+========================+===========================================================+=============================================================+
| LAMMPS Python Module | * ``$VIRTUAL_ENV/lib/pythonX.Y/site-packages/`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``$VIRTUAL_ENV/lib64/pythonX.Y/site-packages/`` (64bit) | |
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS shared library | * ``$VIRTUAL_ENV/lib/`` (32bit) | |
| | * ``$VIRTUAL_ENV/lib64/`` (64bit) | |
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS executable | * ``$VIRTUAL_ENV/bin/`` | |
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS potential files | * ``$VIRTUAL_ENV/share/lammps/potentials/`` | |
+------------------------+-----------------------------------------------------------+-------------------------------------------------------------+
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
| File | Location | Notes |
+========================+=================================================================+=============================================================+
| LAMMPS Python Module | * ``$VIRTUAL_ENV/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
| | * ``$VIRTUAL_ENV/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS shared library | * ``$VIRTUAL_ENV/lib/`` (32bit) | Set shared loader environment variable to this path |
| | * ``$VIRTUAL_ENV/lib64/`` (64bit) | (see below for more info on this) |
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS executable | * ``$VIRTUAL_ENV/bin/`` | |
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
| LAMMPS potential files | * ``$VIRTUAL_ENV/share/lammps/potentials/`` | Set ``LAMMPS_POTENTIALS`` environment variable to this path |
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
In that case you need to modify the ``$HOME/myenv/bin/activate``
script in a similar fashion you need to update your
@ -296,15 +298,15 @@ this.
echo 'export LD_LIBRARY_PATH=$VIRTUAL_ENV/lib:$LD_LIBRARY_PATH' >> $HOME/myenv/bin/activate
# MacOS
echo 'export DYLD_LIBRARY_PATH=$VIRTUAL_ENV/lib:$LD_LIBRARY_PATH' >> $HOME/myenv/bin/activate
echo 'export DYLD_LIBRARY_PATH=$VIRTUAL_ENV/lib:$DYLD_LIBRARY_PATH' >> $HOME/myenv/bin/activate
.. tab:: In place usage
You can also :doc:`compile LAMMPS <Build>` as usual in
:ref:`"shared" mode <exe>` leave the shared library and Python
module files inside the source/compilation folders. Instead of
package inside the source/compilation folders. Instead of
copying the files where they can be found, you need to set the environment
variables ``PYTHONPATH`` (for the Python module) and
variables ``PYTHONPATH`` (for the Python package) and
``LD_LIBRARY_PATH`` (or ``DYLD_LIBRARY_PATH`` on MacOS
For Bourne shells (bash, ksh and similar) the commands are:
@ -325,6 +327,10 @@ this.
You can make those changes permanent by editing your ``$HOME/.bashrc``
or ``$HOME/.login`` files, respectively.
.. note::
The ``PYTHONPATH`` needs to point to the parent folder that contains the ``lammps`` package!
To verify if LAMMPS can be successfully started from Python, start the
Python interpreter, load the ``lammps`` Python module and create a
@ -346,7 +352,7 @@ output similar to the following:
.. note::
Unless you opted for "In place use", you will have to rerun the installation
any time you recompile LAMMPS to ensure the latest Python module and shared
any time you recompile LAMMPS to ensure the latest Python package and shared
library are installed and used.
.. note::

View File

@ -3,12 +3,12 @@ The ``lammps`` Python module
.. py:module:: lammps
The LAMMPS Python interface is implemented as a module called
:py:mod:`lammps` in the ``lammps.py`` file in the ``python`` folder of
the LAMMPS source code distribution. After compilation of LAMMPS, the
module can be installed into a Python system folder or a user folder
with ``make install-python``. Components of the module can then loaded
into a Python session with the ``import`` command.
The LAMMPS Python interface is implemented as a module called :py:mod:`lammps`
which is defined in the ``lammps`` package in the ``python`` folder of the
LAMMPS source code distribution. After compilation of LAMMPS, the module can
be installed into a Python system folder or a user folder with ``make
install-python``. Components of the module can then loaded into a Python
session with the ``import`` command.
There are multiple Python interface classes in the :py:mod:`lammps` module:
@ -26,6 +26,23 @@ There are multiple Python interface classes in the :py:mod:`lammps` module:
.. _mpi4py_url: https://mpi4py.readthedocs.io
.. admonition:: Version check
:class: note
The :py:mod:`lammps` module stores the version number of the LAMMPS
version it is installed from. When initializing the
:py:class:`lammps <lammps.lammps>` class, this version is checked to
be the same as the result from :py:func:`lammps.version`, the version
of the LAMMPS shared library that the module interfaces to. If the
they are not the same an AttributeError exception is raised since a
mismatch of versions (e.g. due to incorrect use of the
``LD_LIBRARY_PATH`` or ``PYTHONPATH`` environment variables can lead
to crashes or data corruption and otherwise incorrect behavior.
.. automodule:: lammps
:members:
:noindex:
----------
The ``lammps`` class API
@ -44,7 +61,7 @@ functions. Below is a detailed documentation of the API.
.. autoclass:: lammps.lammps
:members:
.. autoclass:: lammps.numpy_wrapper
.. autoclass:: lammps.numpy_wrapper::numpy_wrapper
:members:
----------
@ -117,23 +134,23 @@ Style Constants
to request from computes or fixes. See :cpp:enum:`_LMP_STYLE_CONST`
for the equivalent constants in the C library interface. Used in
:py:func:`lammps.extract_compute`, :py:func:`lammps.extract_fix`, and their NumPy variants
:py:func:`lammps.numpy.extract_compute() <numpy_wrapper.extract_compute>` and
:py:func:`lammps.numpy.extract_fix() <numpy_wrapper.extract_fix>`.
:py:func:`lammps.numpy.extract_compute() <lammps.numpy_wrapper.numpy_wrapper.extract_compute>` and
:py:func:`lammps.numpy.extract_fix() <lammps.numpy_wrapper.numpy_wrapper.extract_fix>`.
.. _py_type_constants:
Type Constants
--------------
.. py:data:: LMP_TYPE_SCALAR, LMP_TYLE_VECTOR, LMP_TYPE_ARRAY, LMP_SIZE_VECTOR, LMP_SIZE_ROWS, LMP_SIZE_COLS
.. py:data:: LMP_TYPE_SCALAR, LMP_TYPE_VECTOR, LMP_TYPE_ARRAY, LMP_SIZE_VECTOR, LMP_SIZE_ROWS, LMP_SIZE_COLS
:type: int
Constants in the :py:mod:`lammps` module to select what type of data
to request from computes or fixes. See :cpp:enum:`_LMP_TYPE_CONST`
for the equivalent constants in the C library interface. Used in
:py:func:`lammps.extract_compute`, :py:func:`lammps.extract_fix`, and their NumPy variants
:py:func:`lammps.numpy.extract_compute() <numpy_wrapper.extract_compute>` and
:py:func:`lammps.numpy.extract_fix() <numpy_wrapper.extract_fix>`.
:py:func:`lammps.numpy.extract_compute() <lammps.numpy_wrapper.numpy_wrapper.extract_compute>` and
:py:func:`lammps.numpy.extract_fix() <lammps.numpy_wrapper.numpy_wrapper.extract_fix>`.
.. _py_vartype_constants:
@ -153,6 +170,6 @@ Classes representing internal objects
:members:
:no-undoc-members:
.. autoclass:: lammps.NumPyNeighList
.. autoclass:: lammps.numpy_wrapper::NumPyNeighList
:members:
:no-undoc-members:

View File

@ -1,6 +1,43 @@
Neighbor list access
====================
Access to neighbor lists is handled through a couple of wrapper classes
that allows to treat it like either a python list or a NumPy array. The
access procedure is similar to that of the C-library interface: use one
of the "find" functions to look up the index of the neighbor list in the
global table of neighbor lists and then get access to the neighbor list
data. The code sample below demonstrates reading the neighbor list data
using the NumPy access method.
.. code-block:: python
from lammps import lammps
import numpy as np
lmp = lammps()
lmp.commands_string("""
region box block -2 2 -2 2 -2 2
lattice fcc 1.0
create_box 1 box
create_atoms 1 box
mass 1 1.0
pair_style lj/cut 2.5
pair_coeff 1 1 1.0 1.0
run 0 post no""")
# look up the neighbor list
nlidx = lmp.find_pair_neighlist('lj/cut')
nl = lmp.numpy.get_neighlist(nlidx)
tags = lmp.extract_atom('id')
print("half neighbor list with {} entries".format(nl.size))
# print neighbor list contents
for i in range(0,nl.size):
idx, nlist = nl.get(i)
print("\natom {} with ID {} has {} neighbors:".format(idx,tags[idx],nlist.size))
if nlist.size > 0:
for n in np.nditer(nlist):
print(" atom {} with ID {}".format(n,tags[n]))
**Methods:**
* :py:meth:`lammps.get_neighlist() <lammps.lammps.get_neighlist()>`: Get neighbor list for given index
@ -14,5 +51,5 @@ Neighbor list access
**NumPy Methods:**
* :py:meth:`lammps.numpy.get_neighlist() <lammps.numpy_wrapper.get_neighlist()>`: Get neighbor list for given index, which uses NumPy arrays for its element neighbor arrays
* :py:meth:`lammps.numpy.get_neighlist_element_neighbors() <lammps.numpy_wrapper.get_neighlist_element_neighbors()>`: Get element in neighbor list and its neighbors (as numpy array)
* :py:meth:`lammps.numpy.get_neighlist() <lammps.numpy_wrapper.numpy_wrapper.get_neighlist()>`: Get neighbor list for given index, which uses NumPy arrays for its element neighbor arrays
* :py:meth:`lammps.numpy.get_neighlist_element_neighbors() <lammps.numpy_wrapper.numpy_wrapper.get_neighlist_element_neighbors()>`: Get element in neighbor list and its neighbors (as numpy array)

View File

@ -36,9 +36,9 @@ computes, fixes, or variables in LAMMPS using the :py:mod:`lammps` module.
Python subscripting. The values will be zero for atoms not in the
specified group.
:py:meth:`lammps.numpy.extract_compute() <lammps.numpy_wrapper.extract_compute()>`,
:py:meth:`lammps.numpy.extract_fix() <lammps.numpy_wrapper.extract_fix()>`, and
:py:meth:`lammps.numpy.extract_variable() <lammps.numpy_wrapper.extract_variable()>` are
:py:meth:`lammps.numpy.extract_compute() <lammps.numpy_wrapper.numpy_wrapper.extract_compute()>`,
:py:meth:`lammps.numpy.extract_fix() <lammps.numpy_wrapper.numpy_wrapper.extract_fix()>`, and
:py:meth:`lammps.numpy.extract_variable() <lammps.numpy_wrapper.numpy_wrapper.extract_variable()>` are
equivalent NumPy implementations that return NumPy arrays instead of ``ctypes`` pointers.
The :py:meth:`lammps.set_variable() <lammps.lammps.set_variable()>` method sets an
@ -54,9 +54,9 @@ computes, fixes, or variables in LAMMPS using the :py:mod:`lammps` module.
**NumPy Methods**:
* :py:meth:`lammps.numpy.extract_compute() <lammps.numpy_wrapper.extract_compute()>`: extract value(s) from a compute, return arrays as numpy arrays
* :py:meth:`lammps.numpy.extract_fix() <lammps.numpy_wrapper.extract_fix()>`: extract value(s) from a fix, return arrays as numpy arrays
* :py:meth:`lammps.numpy.extract_variable() <lammps.numpy_wrapper.extract_variable()>`: extract value(s) from a variable, return arrays as numpy arrays
* :py:meth:`lammps.numpy.extract_compute() <lammps.numpy_wrapper.numpy_wrapper.extract_compute()>`: extract value(s) from a compute, return arrays as numpy arrays
* :py:meth:`lammps.numpy.extract_fix() <lammps.numpy_wrapper.numpy_wrapper.extract_fix()>`: extract value(s) from a fix, return arrays as numpy arrays
* :py:meth:`lammps.numpy.extract_variable() <lammps.numpy_wrapper.numpy_wrapper.extract_variable()>`: extract value(s) from a variable, return arrays as numpy arrays
.. tab:: PyLammps/IPyLammps API

View File

@ -2,9 +2,9 @@ Overview
========
The LAMMPS distribution includes a ``python`` directory with the Python
code needed to run LAMMPS from Python. The ``python/lammps.py``
contains :doc:`the "lammps" Python <Python_module>` that wraps the
LAMMPS C-library interface. This file makes it is possible to do the
code needed to run LAMMPS from Python. The ``python/lammps`` package
contains :doc:`the "lammps" Python module <Python_module>` that wraps the
LAMMPS C-library interface. This module makes it is possible to do the
following either from a Python script, or interactively from a Python
prompt:
@ -20,8 +20,8 @@ have a version of Python that extends Python to enable multiple
instances of Python to read what you type.
To do all of this, you must build LAMMPS in :ref:`"shared" mode <exe>`
and make certain that your Python interpreter can find the ``lammps.py``
file and the LAMMPS shared library file.
and make certain that your Python interpreter can find the ``lammps``
Python package and the LAMMPS shared library file.
.. _ctypes: https://docs.python.org/3/library/ctypes.html

View File

@ -33,7 +33,7 @@ the constructor call as follows (see :ref:`python_create_lammps` for more detail
>>> lmp = lammps(name='mpi')
You can also test the load directly in Python as follows, without
first importing from the lammps.py file:
first importing from the ``lammps`` module:
.. code-block:: python

View File

@ -11,6 +11,7 @@ letter abbreviation can be used:
* :ref:`-k or -kokkos <run-kokkos>`
* :ref:`-l or -log <log>`
* :ref:`-m or -mpicolor <mpicolor>`
* :ref:`-c or -cite <cite>`
* :ref:`-nc or -nocite <nocite>`
* :ref:`-pk or -package <package>`
* :ref:`-p or -partition <partition>`
@ -62,15 +63,18 @@ used.
**-in file**
Specify a file to use as an input script. This is an optional switch
when running LAMMPS in one-partition mode. If it is not specified,
LAMMPS reads its script from standard input, typically from a script
via I/O redirection; e.g. lmp_linux < in.run. I/O redirection should
also work in parallel, but if it does not (in the unlikely case that
an MPI implementation does not support it), then use the -in flag.
Specify a file to use as an input script. This is an optional but
recommended switch when running LAMMPS in one-partition mode. If it
is not specified, LAMMPS reads its script from standard input, typically
from a script via I/O redirection; e.g. lmp_linux < in.run.
With many MPI implementations I/O redirection also works in parallel,
but using the -in flag will always work.
Note that this is a required switch when running LAMMPS in
multi-partition mode, since multiple processors cannot all read from
stdin.
stdin concurrently. The file name may be "none" for starting
multi-partition calculations without reading an initial input file
from the library interface.
----------
@ -217,14 +221,31 @@ links with from the lib/message directory. See the
----------
.. _cite:
**-cite style or file name**
Select how and where to output a reminder about citing contributions
to the LAMMPS code that were used during the run. Available styles are
"both", "none", "screen", or "log". Any flag will be considered a file
name to write the detailed citation info to. Default is the "log" style
where there is a short summary in the screen output and detailed citations
in BibTeX format in the logfile. The option "both" selects the detailed
output for both, "none", the short output for both, and "screen" will
write the detailed info to the screen and the short version to the log
file. If a dedicated citation info file is requested, the screen and
log file output will be in the short format (same as with "none").
See the :doc:`citation page <Intro_citing>` for more details on
how to correctly reference and cite LAMMPS.
----------
.. _nocite:
**-nocite**
Disable writing the log.cite file which is normally written to list
references for specific cite-able features used during a LAMMPS run.
See the `citation page <https://lammps.sandia.gov/cite.html>`_ for more
details.
Disable generating a citation reminder (see above) at all.
----------
@ -296,7 +317,7 @@ command-line option.
**-pscreen file**
Specify the base name for the partition screen file, so partition N
writes screen information to file.N. If file is none, then no
writes screen information to file.N. If file is "none", then no
partition screen files are created. This overrides the filename
specified in the -screen command-line option. This option is useful
when working with large numbers of partitions, allowing the partition

View File

@ -1,11 +1,14 @@
GPU package
===========
The GPU package was developed by Mike Brown while at SNL and ORNL
and his collaborators, particularly Trung Nguyen (now at Northwestern).
It provides GPU versions of many pair styles and for parts of the
:doc:`kspace_style pppm <kspace_style>` for long-range Coulombics.
It has the following general features:
The GPU package was developed by Mike Brown while at SNL and ORNL (now
at Intel Corp.) and his collaborators, particularly Trung Nguyen (now at
Northwestern). Support for AMD GPUs via HIP was added by Vsevolod Nikolskiy
and coworkers at HSE University.
The GPU package provides GPU versions of many pair styles and for
parts of the :doc:`kspace_style pppm <kspace_style>` for long-range
Coulombics. It has the following general features:
* It is designed to exploit common GPU hardware configurations where one
or more GPUs are coupled to many cores of one or more multi-core CPUs,
@ -24,8 +27,9 @@ It has the following general features:
force vectors.
* LAMMPS-specific code is in the GPU package. It makes calls to a
generic GPU library in the lib/gpu directory. This library provides
NVIDIA support as well as more general OpenCL support, so that the
same functionality is supported on a variety of hardware.
either Nvidia support, AMD support, or more general OpenCL support
(for Nvidia GPUs, AMD GPUs, Intel GPUs, and multi-core CPUs).
so that the same functionality is supported on a variety of hardware.
**Required hardware/software:**
@ -45,12 +49,23 @@ to have the OpenCL headers and the (vendor neutral) OpenCL library installed.
In OpenCL mode, the acceleration depends on having an `OpenCL Installable Client Driver (ICD) <https://www.khronos.org/news/permalink/opencl-installable-client-driver-icd-loader>`_
installed. There can be multiple of them for the same or different hardware
(GPUs, CPUs, Accelerators) installed at the same time. OpenCL refers to those
as 'platforms'. The GPU library will select the **first** suitable platform,
but this can be overridden using the device option of the :doc:`package <package>`
as 'platforms'. The GPU library will try to auto-select the best suitable platform,
but this can be overridden using the platform option of the :doc:`package <package>`
command. run lammps/lib/gpu/ocl_get_devices to get a list of available
platforms and devices with a suitable ICD available.
To compute and use this package in HIP mode, you have to have the AMD ROCm
To compile and use this package for Intel GPUs, OpenCL or the Intel oneAPI
HPC Toolkit can be installed using linux package managers. The latter also
provides optimized C++, MPI, and many other libraries and tools. See:
* https://software.intel.com/content/www/us/en/develop/tools/oneapi/hpc-toolkit/download.html
If you do not have a discrete GPU card installed, this package can still provide
significant speedups on some CPUs that include integrated GPUs. Additionally, for
many macs, OpenCL is already included with the OS and Makefiles are available
in the lib/gpu directory.
To compile and use this package in HIP mode, you have to have the AMD ROCm
software installed. Versions of ROCm older than 3.5 are currently deprecated
by AMD.
@ -75,10 +90,20 @@ automatically if you create more MPI tasks/node than there are
GPUs/mode. E.g. with 8 MPI tasks/node and 2 GPUs, each GPU will be
shared by 4 MPI tasks.
The GPU package also has limited support for OpenMP for both
multi-threading and vectorization of routines that are run on the CPUs.
This requires that the GPU library and LAMMPS are built with flags to
enable OpenMP support (e.g. -fopenmp). Some styles for time integration
are also available in the GPU package. These run completely on the CPUs
in full double precision, but exploit multi-threading and vectorization
for faster performance.
Use the "-sf gpu" :doc:`command-line switch <Run_options>`, which will
automatically append "gpu" to styles that support it. Use the "-pk
gpu Ng" :doc:`command-line switch <Run_options>` to set Ng = # of
GPUs/node to use.
GPUs/node to use. If Ng is 0, the number is selected automatically as
the number of matching GPUs that have the highest number of compute
cores.
.. code-block:: bash
@ -87,8 +112,8 @@ GPUs/node to use.
mpirun -np 48 -ppn 12 lmp_machine -sf gpu -pk gpu 2 -in in.script # ditto on 4 16-core nodes
Note that if the "-sf gpu" switch is used, it also issues a default
:doc:`package gpu 1 <package>` command, which sets the number of
GPUs/node to 1.
:doc:`package gpu 0 <package>` command, which will result in
automatic selection of the number of GPUs to use.
Using the "-pk" switch explicitly allows for setting of the number of
GPUs/node to use and additional options. Its syntax is the same as
@ -138,6 +163,13 @@ Likewise, you should experiment with the precision setting for the GPU
library to see if single or mixed precision will give accurate
results, since they will typically be faster.
MPI parallelism typically outperforms OpenMP parallelism, but in some
cases using fewer MPI tasks and multiple OpenMP threads with the GPU
package can give better performance. 3-body potentials can often perform
better with multiple OMP threads because the inter-process communication
is higher for these styles with the GPU package in order to allow
deterministic results.
**Guidelines for best performance:**
* Using multiple MPI tasks per GPU will often give the best performance,
@ -161,6 +193,12 @@ results, since they will typically be faster.
:doc:`angle <angle_style>`, :doc:`dihedral <dihedral_style>`,
:doc:`improper <improper_style>`, and :doc:`long-range <kspace_style>`
calculations will not be included in the "Pair" time.
* Since only part of the pppm kspace style is GPU accelerated, it
may be faster to only use GPU acceleration for Pair styles with
long-range electrostatics. See the "pair/only" keyword of the
package command for a shortcut to do that. The work between kspace
on the CPU and non-bonded interactions on the GPU can be balanced
through adjusting the coulomb cutoff without loss of accuracy.
* When the *mode* setting for the package gpu command is force/neigh,
the time for neighbor list calculations on the GPU will be added into
the "Pair" time, not the "Neigh" time. An additional breakdown of the

View File

@ -26,6 +26,15 @@ task). These are Serial (MPI-only for CPUs and Intel Phi), OpenMP
GPUs) and HIP (for AMD GPUs). You choose the mode at build time to
produce an executable compatible with a specific hardware.
.. admonition:: C++14 support
:class: note
Kokkos requires using a compiler that supports the c++14 standard. For
some compilers, it may be necessary to add a flag to enable c++14 support.
For example, the GNU compiler uses the -std=c++14 flag. For a list of
compilers that have been tested with the Kokkos library, see the Kokkos
`README <https://github.com/kokkos/kokkos/blob/master/README.md>`_.
.. admonition:: NVIDIA CUDA support
:class: note
@ -38,14 +47,14 @@ produce an executable compatible with a specific hardware.
:class: note
Kokkos with CUDA currently implicitly assumes that the MPI library is
CUDA-aware. This is not always the case, especially when using
GPU-aware. This is not always the case, especially when using
pre-compiled MPI libraries provided by a Linux distribution. This is
not a problem when using only a single GPU with a single MPI
rank. When running with multiple MPI ranks, you may see segmentation
faults without CUDA-aware MPI support. These can be avoided by adding
the flags :doc:`-pk kokkos cuda/aware off <Run_options>` to the
faults without GPU-aware MPI support. These can be avoided by adding
the flags :doc:`-pk kokkos gpu/aware off <Run_options>` to the
LAMMPS command line or by using the command :doc:`package kokkos
cuda/aware off <package>` in the input file.
gpu/aware off <package>` in the input file.
.. admonition:: AMD GPU support
:class: note
@ -242,8 +251,8 @@ case, also packing/unpacking communication buffers on the host may give
speedup (see the KOKKOS :doc:`package <package>` command). Using CUDA MPS
is recommended in this scenario.
Using a CUDA-aware MPI library is highly recommended. CUDA-aware MPI use can be
avoided by using :doc:`-pk kokkos cuda/aware no <package>`. As above for
Using a GPU-aware MPI library is highly recommended. GPU-aware MPI use can be
avoided by using :doc:`-pk kokkos gpu/aware off <package>`. As above for
multi-core CPUs (and no GPU), if N is the number of physical cores/node,
then the number of MPI tasks/node should not exceed N.

View File

@ -16,7 +16,7 @@ These are the accelerator packages currently in LAMMPS, either as
standard or user packages:
+-----------------------------------------+-------------------------------------------------------+
| :doc:`GPU Package <Speed_gpu>` | for NVIDIA GPUs as well as OpenCL support |
| :doc:`GPU Package <Speed_gpu>` | for GPUs via CUDA, OpenCL, or ROCm HIP |
+-----------------------------------------+-------------------------------------------------------+
| :doc:`USER-INTEL Package <Speed_intel>` | for Intel CPUs and Intel Xeon Phi |
+-----------------------------------------+-------------------------------------------------------+
@ -43,7 +43,7 @@ three kinds of hardware, via the listed packages:
+-----------------+-----------------------------------------------------------------------------------------------------------------------------+
| Many-core CPUs | :doc:`USER-INTEL <Speed_intel>`, :doc:`KOKKOS <Speed_kokkos>`, :doc:`USER-OMP <Speed_omp>`, :doc:`OPT <Speed_opt>` packages |
+-----------------+-----------------------------------------------------------------------------------------------------------------------------+
| NVIDIA/AMD GPUs | :doc:`GPU <Speed_gpu>`, :doc:`KOKKOS <Speed_kokkos>` packages |
| GPUs | :doc:`GPU <Speed_gpu>`, :doc:`KOKKOS <Speed_kokkos>` packages |
+-----------------+-----------------------------------------------------------------------------------------------------------------------------+
| Intel Phi/AVX | :doc:`USER-INTEL <Speed_intel>`, :doc:`KOKKOS <Speed_kokkos>` packages |
+-----------------+-----------------------------------------------------------------------------------------------------------------------------+
@ -154,8 +154,8 @@ Here is a brief summary of what the various packages provide. Details
are in the individual accelerator sections.
* Styles with a "gpu" suffix are part of the GPU package and can be run
on NVIDIA or AMD GPUs. The speed-up on a GPU depends on a variety of
factors, discussed in the accelerator sections.
on Intel, NVIDIA, or AMD GPUs. The speed-up on a GPU depends on a
variety of factors, discussed in the accelerator sections.
* Styles with an "intel" suffix are part of the USER-INTEL
package. These styles support vectorized single and mixed precision
calculations, in addition to full double precision. In extreme cases,

View File

@ -93,6 +93,7 @@ Miscellaneous tools
* :ref:`i-pi <ipi>`
* :ref:`kate <kate>`
* :ref:`LAMMPS shell <lammps_shell>`
* :ref:`LAMMPS magic patterns for file(1) <magic>`
* :ref:`singularity <singularity_tool>`
* :ref:`SWIG interface <swig>`
* :ref:`vim <vim>`
@ -267,7 +268,7 @@ data file in the required format.
See the header of the polarizer.py file for details.
The tool is authored by Agilio Padua and Alain Dequidt: agilio.padua
at univ-bpclermont.fr, alain.dequidt at univ-bpclermont.fr
at ens-lyon.fr, alain.dequidt at uca.fr
----------
@ -341,8 +342,7 @@ The tools/fep directory contains Python scripts useful for
post-processing results from performing free-energy perturbation
simulations using the USER-FEP package.
The scripts were contributed by Agilio Padua (Universite Blaise
Pascal Clermont-Ferrand), agilio.padua at univ-bpclermont.fr.
The scripts were contributed by Agilio Padua (ENS de Lyon), agilio.padua at ens-lyon.fr.
See README file in the tools/fep directory.
@ -642,6 +642,39 @@ This tool was written by Ara Kooser at Sandia (askoose at sandia.gov).
----------
.. _magic:
Magic patterns for the "file" command
-------------------------------------
.. versionadded:: 10Mar2021
The file ``magic`` contains patterns that are used by the
`file program <https://en.wikipedia.org/wiki/File_(command)>`_
available on most Unix-like operating systems which enables it
to detect various LAMMPS files and print some useful information
about them. To enable these patterns, append or copy the contents
of the file to either the file ``.magic`` in your home directory
or (as administrator) to ``/etc/magic`` (for a system-wide
installation). Afterwards the ``file`` command should be able to
detect most LAMMPS restarts, dump, data and log files. Examples:
.. code-block:: bash
$ file *.*
dihedral-quadratic.restart: LAMMPS binary restart file (rev 2), Version 10 Mar 2021, Little Endian
mol-pair-wf_cut.restart: LAMMPS binary restart file (rev 2), Version 24 Dec 2020, Little Endian
atom.bin: LAMMPS atom style binary dump (rev 2), Little Endian, First time step: 445570
custom.bin: LAMMPS custom style binary dump (rev 2), Little Endian, First time step: 100
bn1.lammpstrj: LAMMPS text mode dump, First time step: 5000
data.fourmol: LAMMPS data file written by LAMMPS
pnc.data: LAMMPS data file written by msi2lmp
data.spce: LAMMPS data file written by TopoTools
B.data: LAMMPS data file written by OVITO
log.lammps: LAMMPS log file written by version 10 Feb 2021
----------
.. _matlab:
matlab tool

View File

@ -24,20 +24,17 @@ Examples
Description
"""""""""""
The *cosine/periodic* angle style uses the following potential, which
is commonly used in the :doc:`DREIDING <Howto_bioFF>` force field,
particularly for organometallic systems where :math:`n` = 4 might be used
The *cosine/periodic* angle style uses the following potential, which may be
particularly used for organometallic systems where :math:`n` = 4 might be used
for an octahedral complex and :math:`n` = 3 might be used for a trigonal
center:
.. math::
E = C \left[ 1 - B(-1)^n\cos\left( n\theta\right) \right]
E = \frac{2.0}{n^2} * C \left[ 1 - B(-1)^n\cos\left( n\theta\right) \right]
where :math:`C`, :math:`B` and :math:`n` are coefficients defined for each angle type.
See :ref:`(Mayo) <cosine-Mayo>` for a description of the DREIDING force field
The following coefficients must be defined for each angle type via the
:doc:`angle_coeff <angle_coeff>` command as in the example above, or in
the data file or restart files read by the :doc:`read_data <read_data>`
@ -47,10 +44,9 @@ or :doc:`read_restart <read_restart>` commands:
* :math:`B` = 1 or -1
* :math:`n` = 1, 2, 3, 4, 5 or 6 for periodicity
Note that the prefactor :math:`C` is specified and not the overall force
constant :math:`K = \frac{C}{n^2}`. When :math:`B = 1`, it leads to a minimum for the
linear geometry. When :math:`B = -1`, it leads to a maximum for the linear
geometry.
Note that the prefactor :math:`C` is specified as coefficient and not the overall force
constant :math:`K = \frac{2 C}{n^2}`. When :math:`B = 1`, it leads to a minimum for the
linear geometry. When :math:`B = -1`, it leads to a maximum for the linear geometry.
----------
@ -75,9 +71,3 @@ Default
none
----------
.. _cosine-Mayo:
**(Mayo)** Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
(1990).

View File

@ -30,8 +30,11 @@ The *cosine/squared* angle style uses the potential
E = K [\cos(\theta) - \cos(\theta_0)]^2
where :math:`\theta_0` is the equilibrium value of the angle, and :math:`K` is a
prefactor. Note that the usual 1/2 factor is included in :math:`K`.
, which is commonly used in the :doc:`DREIDING <Howto_bioFF>` force field,
where :math:`\theta_0` is the equilibrium value of the angle, and :math:`K`
is a prefactor. Note that the usual 1/2 factor is included in :math:`K`.
See :ref:`(Mayo) <cosine-Mayo>` for a description of the DREIDING force field.
The following coefficients must be defined for each angle type via the
:doc:`angle_coeff <angle_coeff>` command as in the example above, or in
@ -66,3 +69,10 @@ Default
"""""""
none
----------
.. _cosine-Mayo:
**(Mayo)** Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
(1990).

View File

@ -0,0 +1,69 @@
.. index:: angle_style gaussian
angle_style gaussian command
================================
Syntax
""""""
.. code-block:: LAMMPS
angle_style gaussian
Examples
""""""""
.. code-block:: LAMMPS
angle_style gaussian
angle_coeff 1 300.0 2 0.0128 0.375 80.0 0.0730 0.148 123.0
Description
"""""""""""
The *gaussian* angle style uses the potential:
.. math::
E = -k_B T ln\left(\sum_{i=1}^{n} \frac{A_i}{w_i \sqrt{\pi/2}} exp\left( \frac{-(\theta-\theta_{i})^2}{w_i^2})\right) \right)
This analytical form is a suitable potential for obtaining
mesoscale effective force fields which can reproduce target atomistic distributions :ref:`(Milano) <Milano1>`
The following coefficients must be defined for each angle type via the
:doc:`angle_coeff <angle_coeff>` command as in the example above, or in
the data file or restart files read by the :doc:`read_data <read_data>`
or :doc:`read_restart <read_restart>` commands:
* T temperature at which the potential was derived
* :math:`n` (integer >=1)
* :math:`A_1` (-)
* :math:`w_1` (-)
* :math:`\theta_1` (degrees)
* ...
* :math:`A_n` (-)
* :math:`w_n` (-)
* :math:`\theta_n` (degrees)
Restrictions
""""""""""""
This angle style can only be used if LAMMPS was built with the
USER-MISC package. See the :doc:`Build package <Build_package>` doc
page for more info.
Related commands
""""""""""""""""
:doc:`angle_coeff <angle_coeff>`
Default
"""""""
none
----------
.. _Milano1:
**(Milano)** G. Milano, S. Goudeau, F. Mueller-Plathe, J. Polym. Sci. B Polym. Phys. 43, 871 (2005).

View File

@ -87,6 +87,7 @@ of (g,i,k,o,t) to indicate which accelerated styles exist.
* :doc:`dipole <angle_dipole>` - angle that controls orientation of a point dipole
* :doc:`fourier <angle_fourier>` - angle with multiple cosine terms
* :doc:`fourier/simple <angle_fourier_simple>` - angle with a single cosine term
* :doc:`gaussian <angle_gaussian>` - multicentered Gaussian-based angle potential
* :doc:`harmonic <angle_harmonic>` - harmonic angle
* :doc:`mm3 <angle_mm3>` - anharmonic angle
* :doc:`quartic <angle_quartic>` - angle with cubic and quartic terms

View File

@ -14,7 +14,7 @@ Syntax
* AtC fixID = ID of :doc:`fix atc <fix_atc>` instance
* *output* or *output index* = name of the AtC sub-command
* filename_prefix = prefix for data files (for *output*)
* frequency = frequency of output in time-steps (for *output*)
* frequency = frequency of output in timesteps (for *output*)
* optional keywords for *output*:
- text = creates text output of index, step and nodal variable values for unique nodes

View File

@ -42,6 +42,7 @@ Examples
atom_style hybrid charge body nparticle 2 5
atom_style spin
atom_style template myMols
atom_style hybrid template twomols charge
atom_style tdpd 2
Description
@ -239,6 +240,8 @@ can save memory for systems comprised of a large number of small
molecules, all of a single type (or small number of types). See the
paper by Grime and Voth, in :ref:`(Grime) <Grime>`, for examples of how this
can be advantageous for large-scale coarse-grained systems.
The ``examples/template`` directory has a few demo inputs and examples
showing the use of the *template* atom style versus *molecular*.
.. note::

View File

@ -78,14 +78,16 @@ or particles and thus indirectly the computational cost (load) more
evenly across processors. The load balancing is "static" in the sense
that this command performs the balancing once, before or between
simulations. The processor sub-domains will then remain static during
the subsequent run. To perform "dynamic" balancing, see the :doc:`fix balance <fix_balance>` command, which can adjust processor
sub-domain sizes and shapes on-the-fly during a :doc:`run <run>`.
the subsequent run. To perform "dynamic" balancing, see the :doc:`fix
balance <fix_balance>` command, which can adjust processor sub-domain
sizes and shapes on-the-fly during a :doc:`run <run>`.
Load-balancing is typically most useful if the particles in the
simulation box have a spatially-varying density distribution or when
the computational cost varies significantly between different
particles. E.g. a model of a vapor/liquid interface, or a solid with
an irregular-shaped geometry containing void regions, or :doc:`hybrid pair style simulations <pair_hybrid>` which combine pair styles with
an irregular-shaped geometry containing void regions, or :doc:`hybrid
pair style simulations <pair_hybrid>` which combine pair styles with
different computational cost. In these cases, the LAMMPS default of
dividing the simulation box volume into a regular-spaced grid of 3d
bricks, with one equal-volume sub-domain per processor, may assign
@ -101,13 +103,14 @@ which typically induces a different number of atoms assigned to each
processor. Details on the various weighting options and examples for
how they can be used are :ref:`given below <weighted_balance>`.
Note that the :doc:`processors <processors>` command allows some control
over how the box volume is split across processors. Specifically, for
a Px by Py by Pz grid of processors, it allows choice of Px, Py, and
Pz, subject to the constraint that Px \* Py \* Pz = P, the total number
of processors. This is sufficient to achieve good load-balance for
some problems on some processor counts. However, all the processor
sub-domains will still have the same shape and same volume.
Note that the :doc:`processors <processors>` command allows some
control over how the box volume is split across processors.
Specifically, for a Px by Py by Pz grid of processors, it allows
choice of Px, Py, and Pz, subject to the constraint that Px \* Py \*
Pz = P, the total number of processors. This is sufficient to achieve
good load-balance for some problems on some processor counts.
However, all the processor sub-domains will still have the same shape
and same volume.
The requested load-balancing operation is only performed if the
current "imbalance factor" in particles owned by each processor
@ -170,12 +173,12 @@ The method used to perform a load balance is specified by one of the
listed styles (or more in the case of *x*\ ,\ *y*\ ,\ *z*\ ), which are
described in detail below. There are 2 kinds of styles.
The *x*\ , *y*\ , *z*\ , and *shift* styles are "grid" methods which produce
a logical 3d grid of processors. They operate by changing the cutting
planes (or lines) between processors in 3d (or 2d), to adjust the
volume (area in 2d) assigned to each processor, as in the following 2d
diagram where processor sub-domains are shown and particles are
colored by the processor that owns them.
The *x*\ , *y*\ , *z*\ , and *shift* styles are "grid" methods which
produce a logical 3d grid of processors. They operate by changing the
cutting planes (or lines) between processors in 3d (or 2d), to adjust
the volume (area in 2d) assigned to each processor, as in the
following 2d diagram where processor sub-domains are shown and
particles are colored by the processor that owns them.
.. |balance1| image:: img/balance_uniform.jpg
:width: 32%
@ -190,20 +193,20 @@ colored by the processor that owns them.
The leftmost diagram is the default partitioning of the simulation box
across processors (one sub-box for each of 16 processors); the middle
diagram is after a "grid" method has been applied. The *rcb* style is a
"tiling" method which does not produce a logical 3d grid of processors.
Rather it tiles the simulation domain with rectangular sub-boxes of
varying size and shape in an irregular fashion so as to have equal
numbers of particles (or weight) in each sub-box, as in the rightmost
diagram above.
diagram is after a "grid" method has been applied. The *rcb* style is
a "tiling" method which does not produce a logical 3d grid of
processors. Rather it tiles the simulation domain with rectangular
sub-boxes of varying size and shape in an irregular fashion so as to
have equal numbers of particles (or weight) in each sub-box, as in the
rightmost diagram above.
The "grid" methods can be used with either of the
:doc:`comm_style <comm_style>` command options, *brick* or *tiled*\ . The
"tiling" methods can only be used with :doc:`comm_style tiled <comm_style>`. Note that it can be useful to use a "grid"
method with :doc:`comm_style tiled <comm_style>` to return the domain
partitioning to a logical 3d grid of processors so that "comm_style
brick" can afterwords be specified for subsequent :doc:`run <run>`
commands.
The "grid" methods can be used with either of the :doc:`comm_style
<comm_style>` command options, *brick* or *tiled*\ . The "tiling"
methods can only be used with :doc:`comm_style tiled <comm_style>`.
Note that it can be useful to use a "grid" method with
:doc:`comm_style tiled <comm_style>` to return the domain partitioning
to a logical 3d grid of processors so that "comm_style brick" can
afterwords be specified for subsequent :doc:`run <run>` commands.
When a "grid" method is specified, the current domain partitioning can
be either a logical 3d grid or a tiled partitioning. In the former
@ -280,6 +283,14 @@ information, so that they become closer together over time. Thus as
the recursion progresses, the count of particles on either side of the
plane gets closer to the target value.
After the balanced plane positions are determined, if any pair of
adjacent planes are closer together than the neighbor skin distance
(as specified by the :doc`neigh_modify <neigh_modify>` command), then
the plane positions are shifted to separate them by at least this
amount. This is to prevent particles being lost when dynamics are run
with processor sub-domains that are too narrow in one or more
dimensions.
Once the re-balancing is complete and final processor sub-domains
assigned, particles are migrated to their new owning processor, and
the balance procedure ends.
@ -293,7 +304,7 @@ the balance procedure ends.
*Niter* is specified as 10, the cutting plane will typically be
positioned to 1 part in 1000 accuracy (relative to the perfect target
position). For *Niter* = 20, it will be accurate to 1 part in a
million. Thus there is no need ot set *Niter* to a large value.
million. Thus there is no need to set *Niter* to a large value.
LAMMPS will check if the threshold accuracy is reached (in a
dimension) is less iterations than *Niter* and exit early. However,
*Niter* should also not be set too small, since it will take roughly
@ -416,7 +427,8 @@ The *time* weight style uses :doc:`timer data <timer>` to estimate
weights. It assigns the same weight to each particle owned by a
processor based on the total computational time spent by that
processor. See details below on what time window is used. It uses
the same timing information as is used for the :doc:`MPI task timing breakdown <Run_output>`, namely, for sections *Pair*\ , *Bond*\ ,
the same timing information as is used for the :doc:`MPI task timing
breakdown <Run_output>`, namely, for sections *Pair*\ , *Bond*\ ,
*Kspace*\ , and *Neigh*\ . The time spent in those portions of the
timestep are measured for each MPI rank, summed, then divided by the
number of particles owned by that processor. I.e. the weight is an

70
doc/src/bond_gaussian.rst Normal file
View File

@ -0,0 +1,70 @@
.. index:: bond_style gaussian
bond_style gaussian command
================================
Syntax
""""""
.. code-block:: LAMMPS
bond_style gaussian
Examples
""""""""
.. code-block:: LAMMPS
bond_style gaussian
bond_coeff 1 300.0 2 0.0128 0.375 3.37 0.0730 0.148 3.63
Description
"""""""""""
The *gaussian* bond style uses the potential:
.. math::
E = -k_B T ln\left(\sum_{i=1}^{n} \frac{A_i}{w_i \sqrt{\pi/2}} exp\left( \frac{-(r-r_{i})^2}{w_i^2})\right) \right)
This analytical form is a suitable potential for obtaining
mesoscale effective force fields which can reproduce target atomistic distributions :ref:`(Milano) <Milano0>`
The following coefficients must be defined for each bond type via the
:doc:`bond_coeff <bond_coeff>` command as in the example above, or in
the data file or restart files read by the :doc:`read_data <read_data>`
or :doc:`read_restart <read_restart>` commands:
* T temperature at which the potential was derived
* :math:`n` (integer >=1)
* :math:`A_1` (-)
* :math:`w_1` (-)
* :math:`r_1` (length)
* ...
* :math:`A_n` (-)
* :math:`w_n` (-)
* :math:`r_n` (length)
Restrictions
""""""""""""
This bond style can only be used if LAMMPS was built with the
USER-MISC package. See the :doc:`Build package <Build_package>` doc
page for more info.
Related commands
""""""""""""""""
:doc:`bond_coeff <bond_coeff>`
Default
"""""""
none
----------
.. _Milano0:
**(Milano)** G. Milano, S. Goudeau, F. Mueller-Plathe, J. Polym. Sci. B Polym. Phys. 43, 871 (2005).

View File

@ -87,6 +87,7 @@ accelerated styles exist.
* :doc:`class2 <bond_class2>` - COMPASS (class 2) bond
* :doc:`fene <bond_fene>` - FENE (finite-extensible non-linear elastic) bond
* :doc:`fene/expand <bond_fene_expand>` - FENE bonds with variable size particles
* :doc:`gaussian <bond_gaussian>` - multicentered Gaussian-based bond potential
* :doc:`gromos <bond_gromos>` - GROMOS force field bond
* :doc:`harmonic <bond_harmonic>` - harmonic bond
* :doc:`harmonic/shift <bond_harmonic_shift>` - shifted harmonic bond

View File

@ -301,9 +301,13 @@ command.
.. note::
Changing a periodic boundary to a non-periodic one will also
cause the image flag for that dimension to be reset to 0 for
all atoms. LAMMPS will print a warning message, if that happens.
Changing a periodic boundary to a non-periodic one will also cause
the image flag for that dimension of all atoms to be reset to 0.
LAMMPS will print a warning message, if that happens.
Please note that this reset can lead to undesired changes when
atoms are involved in bonded interactions that straddle periodic
boundaries and thus the values of the image flag differs for those
atoms.
----------

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