Compare commits

...

1396 Commits

Author SHA1 Message Date
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
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
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
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
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
59eaa46f8d Tweaked README.md and changed permissions on source 2021-03-01 17:41:02 -07: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
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
22a804e634 Fix memory issue 2020-10-27 12:25:27 -06:00
91d558310a Fix atomic issue 2020-10-27 11:23:05 -06: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
f2b575d3ec Fix GPU memory issues 2020-10-26 12:42:26 -06: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
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
6c020f4cfa Update bond_gaussian.cpp
removing "this->" construct  from source file
2020-10-23 09:20:59 +02:00
3d6119a574 Merge branch 'master' of https://github.com/lammps/lammps into eam_tweaks 2020-10-22 13:15:26 -06: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
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
7054c82b67 added BS function to pair/spin/biquadractic 2020-08-24 09:23:31 -06: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
2988 changed files with 224352 additions and 874303 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

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

@ -0,0 +1,34 @@
# 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/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

@ -25,15 +25,22 @@ set(LAMMPS_POTENTIALS_DIR ${LAMMPS_DIR}/potentials)
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()
@ -107,13 +114,15 @@ 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)
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 +163,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 +228,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 +381,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})
@ -579,7 +588,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 +658,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 +668,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 +700,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 +745,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 +784,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,9 +50,9 @@ 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
)
# download mathjax distribution and unpack to folder "mathjax"

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

@ -20,10 +20,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 +39,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})

View File

@ -1,7 +1,7 @@
# Download and configure custom MPICH files for Windows
message(STATUS "Downloading and configuring MPICH-1.4.1 for Windows")
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

View File

@ -0,0 +1,48 @@
message(STATUS "Downloading and building OpenCL loader library")
include(ExternalProject)
set(OPENCL_LOADER_URL "https://download.lammps.org/thirdparty/opencl-loader-2020.12.18.tar.gz" CACHE STRING "URL for OpenCL loader tarball")
mark_as_advanced(OPENCL_LOADER_URL)
ExternalProject_Add(opencl_loader
URL ${OPENCL_LOADER_URL}
URL_MD5 011cdcbd41030be94f3fced6d763a52a
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)
@ -35,6 +38,9 @@ if(GPU_API STREQUAL "CUDA")
option(CUDPP_OPT "Enable CUDPP_OPT" ON)
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()
@ -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})
@ -389,13 +386,10 @@ elseif(GPU_API STREQUAL "HIP")
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)
@ -34,8 +36,8 @@ if(DOWNLOAD_KIM)
enable_language(C)
enable_language(Fortran)
ExternalProject_Add(kim_build
URL https://s3.openkim.org/kim-api/kim-api-2.1.3.txz
URL_MD5 6ee829a1bbba5f8b9874c88c4c4ebff8
URL https://s3.openkim.org/kim-api/kim-api-2.2.1.txz
URL_MD5 ae1ddda2ef7017ea07934e519d023dca
BINARY_DIR build
CMAKE_ARGS ${CMAKE_REQUEST_PIC}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
@ -53,11 +55,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")
@ -35,8 +38,8 @@ if(DOWNLOAD_KOKKOS)
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}")
include(ExternalProject)
ExternalProject_Add(kokkos_build
URL https://github.com/kokkos/kokkos/archive/3.2.00.tar.gz
URL_MD5 81569170fe232e5e64ab074f7cca5e50
URL https://github.com/kokkos/kokkos/archive/3.3.01.tar.gz
URL_MD5 08201d1c7cf5bc458ce0f5b44a629d5a
CMAKE_ARGS ${KOKKOS_LIB_BUILD_ARGS}
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libkokkoscore.a
)
@ -50,7 +53,7 @@ if(DOWNLOAD_KOKKOS)
target_link_libraries(lammps 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)
else()
set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos)

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

@ -55,8 +55,8 @@ if(DOWNLOAD_PLUMED)
endif()
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 https://github.com/plumed/plumed2/releases/download/v2.7.0/plumed-src-2.7.0.tgz
URL_MD5 95f29dd0c067577f11972ff90dfc7d12
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
${CONFIGURE_REQUEST_PIC}

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

@ -0,0 +1,32 @@
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")
mark_as_advanced(YAML_URL)
ExternalProject_Add(libyaml
URL ${YAML_URL}
URL_MD5 bb15429d8fb787e7d3f1c83ae129a999
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)

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

@ -47,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")
@ -94,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)
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
@(\
@ -118,7 +120,7 @@ html: xmlgen $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
@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= \
@ -228,13 +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 $@
@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 "29 October 2020" "2020-10-29"
.TH LAMMPS "10 March 2021" "2021-03-10"
.SH NAME
.B LAMMPS
\- Molecular Dynamics Simulator.

View File

@ -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
@ -236,12 +236,15 @@ LAMMPS.
cmake ../cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DCMAKE_Fortran_COMPILER=ifort
# 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 Intel compilers and `-C ../cmake/presets/pgi.cmake`
should 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 +526,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,8 +120,6 @@ 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
@ -130,10 +129,12 @@ CMake build
-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
# enables CUDA Performance Primitives Optimizations, must be "no" for CUDA_MPS_SUPPORT=yes
# value = yes (default) or no
-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,6 +161,12 @@ 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`
@ -218,11 +225,19 @@ 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 include CUDA performance primitives set the Makefile variable
``CUDPP_OPT = -DUSE_CUDPP -Icudpp_mini``.
To support the CUDA multiprocessor server you can set the define
``-DCUDA_PROXY``. Please note that in this case you should **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 +264,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 +297,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 +306,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 +335,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 +359,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 +536,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 +789,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

@ -74,7 +74,11 @@ 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/>`_ JavaScript
engine needs to be downloaded.
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>`

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>`

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>`
@ -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,7 @@ of time and requests from the LAMMPS user community.
Developer_org
Developer_flow
Developer_write
Developer_notes
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,523 @@
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 very 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_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);
if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("reset_timestep 10");
if (!verbose) ::testing::internal::GetCapturedStdout();
ASSERT_EQ(lmp->update->ntimestep, 10);
if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("reset_timestep 0");
if (!verbose) ::testing::internal::GetCapturedStdout();
ASSERT_EQ(lmp->update->ntimestep, 0);
}
Please note the use of the (global) verbose variable to control whether
the LAMMPS command will be silent by capturing the output or not. In
the default case, verbose == false, the test output will be compact and
not mixed with LAMMPS output. However setting the verbose flag (via
setting the ``TEST_ARGS`` environment variable, ``TEST_ARGS=-v``) can be
helpful 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_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
@ -95,6 +104,9 @@ and parsing files or arguments.
.. doxygenfunction:: strmatch
:project: progguide
.. doxygenfunction:: strfind
:project: progguide
.. doxygenfunction:: is_integer
:project: progguide
@ -286,6 +298,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

@ -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``

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

@ -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

@ -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

@ -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

@ -367,17 +367,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 +388,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 +406,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 +416,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 +664,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.
----------
@ -1036,9 +1050,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 +1432,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 +1500,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:**

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,8 +134,8 @@ 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:
@ -132,8 +149,8 @@ Type Constants
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

@ -14,5 +14,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

@ -267,7 +267,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 +341,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.

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

@ -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.
----------

View File

@ -84,13 +84,15 @@ information is available, then also a heuristic based on that bond length
is computed. It is used as communication cutoff, if there is no pair
style present and no *comm_modify cutoff* command used. Otherwise a
warning is printed, if this bond based estimate is larger than the
communication cutoff used. A
communication cutoff used.
The *cutoff/multi* option is equivalent to *cutoff*\ , but applies to
communication mode *multi* instead. Since in this case the communication
cutoffs are determined per atom type, a type specifier is needed and
cutoff for one or multiple types can be extended. Also ranges of types
using the usual asterisk notation can be given.
using the usual asterisk notation can be given. For granular pair styles,
the default cutoff is set to the sum of the current maximum atomic radii
for each type.
These are simulation scenarios in which it may be useful or even
necessary to set a ghost cutoff > neighbor cutoff:

View File

@ -46,11 +46,12 @@ the compute command was issued. The value of the displacement will be
.. note::
Initial coordinates are stored in "unwrapped" form, by using the
image flags associated with each atom. See the :doc:`dump custom <dump>` command for a discussion of "unwrapped" coordinates.
See the Atoms section of the :doc:`read_data <read_data>` command for a
discussion of image flags and how they are set for each atom. You can
reset the image flags (e.g. to 0) before invoking this compute by
using the :doc:`set image <set>` command.
image flags associated with each atom. See the :doc:`dump custom
<dump>` command for a discussion of "unwrapped" coordinates. See
the Atoms section of the :doc:`read_data <read_data>` command for a
discussion of image flags and how they are set for each atom. You
can reset the image flags (e.g. to 0) before invoking this compute
by using the :doc:`set image <set>` command.
.. note::

View File

@ -163,7 +163,7 @@ the meaning of these parameters:
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`born <pair_born>` | a,b,c | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`buck <pair_buck>` | a,c | type pairs |
| :doc:`buck, buck/coul/cut, buck/coul/long, buck/coul/msm <pair_buck>` | a,c | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`buck/mdf <pair_mdf>` | a,c | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+

View File

@ -18,7 +18,7 @@ Syntax
.. parsed-literal::
*model* values = style
style = *linear* or *quadratic*
style = *linear* or *quadratic* or *mliappy*
*descriptor* values = style filename
style = *sna*
filename = name of file containing descriptor definitions
@ -56,13 +56,15 @@ and it is also straightforward to add new descriptor styles.
The compute *mliap* command must be followed by two keywords
*model* and *descriptor* in either order.
The *model* keyword is followed by a model style, currently limited to
either *linear* or *quadratic*.
The *model* keyword is followed by the model style (*linear*, *quadratic* or *mliappy*).
The *mliappy* model is only available
if lammps is built with MLIAPPY package.
The *descriptor* keyword is followed by a descriptor style, and additional arguments.
Currently the only descriptor style is *sna*, indicating the bispectrum component
descriptors used by the Spectral Neighbor Analysis Potential (SNAP) potentials of
:doc:`pair_style snap <pair_snap>`.
The compute currently supports just one descriptor style, but it is
is straightforward to add new descriptor styles.
The SNAP descriptor style *sna* is the same as that used by :doc:`pair_style snap <pair_snap>`,
including the linear, quadratic, and chem variants.
A single additional argument specifies the descriptor filename
containing the parameters and setting used by the SNAP descriptor.
The descriptor filename usually ends in the *.mliap.descriptor* extension.
@ -162,9 +164,10 @@ potentials, see the examples in `FitSNAP <https://github.com/FitSNAP/FitSNAP>`_.
Restrictions
""""""""""""
This compute is part of the MLIAP package. It is only enabled if
LAMMPS was built with that package. In addition, building LAMMPS with the MLIAP package
This compute is part of the MLIAP package. It is only enabled if LAMMPS
was built with that package. In addition, building LAMMPS with the MLIAP package
requires building LAMMPS with the SNAP package.
The *mliappy* model requires building LAMMPS with the PYTHON package.
See the :doc:`Build package <Build_package>` doc page for more info.
Related commands

View File

@ -115,8 +115,8 @@ The optional keyword *chunksize* is only applicable when using the
the KOKKOS package and is ignored otherwise. This keyword controls
the number of atoms in each pass used to compute the bond-orientational
order parameters and is used to avoid running out of memory. For example
if there are 4000 atoms in the simulation and the *chunksize*
is set to 2000, the parameter calculation will be broken up
if there are 32768 atoms in the simulation and the *chunksize*
is set to 16384, the parameter calculation will be broken up
into two passes.
The value of :math:`Q_l` is set to zero for atoms not in the
@ -193,7 +193,7 @@ Default
The option defaults are *cutoff* = pair style cutoff, *nnn* = 12,
*degrees* = 5 4 6 8 10 12 i.e. :math:`Q_4`, :math:`Q_6`, :math:`Q_8`, :math:`Q_{10}`, and :math:`Q_{12}`,
*wl* = no, *wl/hat* = no, *components* off, and *chunksize* = 2000
*wl* = no, *wl/hat* = no, *components* off, and *chunksize* = 16384
----------

View File

@ -122,8 +122,11 @@ Output info
This compute calculates a global scalar (the pressure) and a global
vector of length 6 (pressure tensor), which can be accessed by indices
1-6. These values can be used by any command that uses global scalar
or vector values from a compute as input. See the :doc:`Howto output <Howto_output>` doc page for an overview of LAMMPS output
options.
or vector values from a compute as input. See the :doc:`Howto output
<Howto_output>` doc page for an overview of LAMMPS output options.
The ordering of values in the symmetric pressure tensor is as follows:
pxx, pyy, pzz, pxy, pxz, pyz.
The scalar and vector values calculated by this compute are
"intensive". The scalar and vector values will be in pressure

View File

@ -30,7 +30,7 @@ Examples
.. code-block:: LAMMPS
compute 1 all reduce/chunk/atom mychunk min c_cluster
compute 1 all reduce/chunk mychunk min c_cluster
Description
"""""""""""
@ -38,7 +38,7 @@ Description
Define a calculation that reduces one or more per-atom vectors into
per-chunk values. This can be useful for diagnostic output. Or when
used in conjunction with the :doc:`compute chunk/spread/atom <compute_chunk_spread_atom>` command it can be
used ot create per-atom values that induce a new set of chunks with a
used to create per-atom values that induce a new set of chunks with a
second :doc:`compute chunk/atom <compute_chunk_atom>` command. An
example is given below.

View File

@ -33,32 +33,31 @@ Examples
Description
"""""""""""
Define a computation that computes per-atom stress
tensor for each atom in a group. In case of compute *stress/atom*,
the tensor for each atom is symmetric with 6
components and is stored as a 6-element vector in the following order:
:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`.
In case of compute *centroid/stress/atom*,
the tensor for each atom is asymmetric with 9 components
and is stored as a 9-element vector in the following order:
:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`,
:math:`yx`, :math:`zx`, :math:`zy`.
See the :doc:`compute pressure <compute_pressure>` command if you want the stress tensor
Define a computation that computes per-atom stress tensor for each
atom in a group. In case of compute *stress/atom*, the tensor for
each atom is symmetric with 6 components and is stored as a 6-element
vector in the following order: :math:`xx`, :math:`yy`, :math:`zz`,
:math:`xy`, :math:`xz`, :math:`yz`. In case of compute
*centroid/stress/atom*, the tensor for each atom is asymmetric with 9
components and is stored as a 9-element vector in the following order:
:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`,
:math:`yz`, :math:`yx`, :math:`zx`, :math:`zy`. See the :doc:`compute
pressure <compute_pressure>` command if you want the stress tensor
(pressure) of the entire system.
The stress tensor for atom :math:`I` is given by the following formula,
where :math:`a` and :math:`b` take on values :math:`x`, :math:`y`, :math:`z`
to generate the components of the tensor:
The stress tensor for atom :math:`I` is given by the following
formula, where :math:`a` and :math:`b` take on values :math:`x`,
:math:`y`, :math:`z` to generate the components of the tensor:
.. math::
S_{ab} = - m v_a v_b - W_{ab}
The first term is a kinetic energy contribution for atom :math:`I`. See
details below on how the specified *temp-ID* can affect the velocities
used in this calculation. The second term is the virial
contribution due to intra and intermolecular interactions,
where the exact computation details are determined by the compute style.
The first term is a kinetic energy contribution for atom :math:`I`.
See details below on how the specified *temp-ID* can affect the
velocities used in this calculation. The second term is the virial
contribution due to intra and intermolecular interactions, where the
exact computation details are determined by the compute style.
In case of compute *stress/atom*, the virial contribution is:
@ -68,29 +67,26 @@ In case of compute *stress/atom*, the virial contribution is:
& + \frac{1}{3} \sum_{n = 1}^{N_a} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b} + r_{3_a} F_{3_b}) + \frac{1}{4} \sum_{n = 1}^{N_d} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b} + r_{3_a} F_{3_b} + r_{4_a} F_{4_b}) \\
& + \frac{1}{4} \sum_{n = 1}^{N_i} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b} + r_{3_a} F_{3_b} + r_{4_a} F_{4_b}) + {\rm Kspace}(r_{i_a},F_{i_b}) + \sum_{n = 1}^{N_f} r_{i_a} F_{i_b}
The first term is a pairwise energy
contribution where :math:`n` loops over the :math:`N_p`
neighbors of atom :math:`I`, :math:`\mathbf{r}_1` and :math:`\mathbf{r}_2`
are the positions of the 2 atoms in the pairwise interaction,
and :math:`\mathbf{F}_1` and :math:`\mathbf{F}_2` are the forces
on the 2 atoms resulting from the pairwise interaction.
The second term is a bond contribution of
similar form for the :math:`N_b` bonds which atom :math:`I` is part of.
There are similar terms for the :math:`N_a` angle, :math:`N_d` dihedral,
and :math:`N_i` improper interactions atom :math:`I` is part of.
There is also a term for the KSpace
contribution from long-range Coulombic interactions, if defined.
Finally, there is a term for the :math:`N_f` :doc:`fixes <fix>` that apply
internal constraint forces to atom :math:`I`. Currently, only the
:doc:`fix shake <fix_shake>` and :doc:`fix rigid <fix_rigid>` commands
contribute to this term.
As the coefficients in the formula imply, a virial contribution
produced by a small set of atoms (e.g. 4 atoms in a dihedral or 3
atoms in a Tersoff 3-body interaction) is assigned in equal portions
to each atom in the set. E.g. 1/4 of the dihedral virial to each of
the 4 atoms, or 1/3 of the fix virial due to SHAKE constraints applied
to atoms in a water molecule via the :doc:`fix shake <fix_shake>`
command.
The first term is a pairwise energy contribution where :math:`n` loops
over the :math:`N_p` neighbors of atom :math:`I`, :math:`\mathbf{r}_1`
and :math:`\mathbf{r}_2` are the positions of the 2 atoms in the
pairwise interaction, and :math:`\mathbf{F}_1` and
:math:`\mathbf{F}_2` are the forces on the 2 atoms resulting from the
pairwise interaction. The second term is a bond contribution of
similar form for the :math:`N_b` bonds which atom :math:`I` is part
of. There are similar terms for the :math:`N_a` angle, :math:`N_d`
dihedral, and :math:`N_i` improper interactions atom :math:`I` is part
of. There is also a term for the KSpace contribution from long-range
Coulombic interactions, if defined. Finally, there is a term for the
:math:`N_f` :doc:`fixes <fix>` that apply internal constraint forces
to atom :math:`I`. Currently, only the :doc:`fix shake <fix_shake>`
and :doc:`fix rigid <fix_rigid>` commands contribute to this term. As
the coefficients in the formula imply, a virial contribution produced
by a small set of atoms (e.g. 4 atoms in a dihedral or 3 atoms in a
Tersoff 3-body interaction) is assigned in equal portions to each atom
in the set. E.g. 1/4 of the dihedral virial to each of the 4 atoms,
or 1/3 of the fix virial due to SHAKE constraints applied to atoms in
a water molecule via the :doc:`fix shake <fix_shake>` command.
In case of compute *centroid/stress/atom*, the virial contribution is:
@ -99,71 +95,69 @@ In case of compute *centroid/stress/atom*, the virial contribution is:
W_{ab} & = \sum_{n = 1}^{N_p} r_{I0_a} F_{I_b} + \sum_{n = 1}^{N_b} r_{I0_a} F_{I_b} + \sum_{n = 1}^{N_a} r_{I0_a} F_{I_b} + \sum_{n = 1}^{N_d} r_{I0_a} F_{I_b} + \sum_{n = 1}^{N_i} r_{I0_a} F_{I_b} \\
& + {\rm Kspace}(r_{i_a},F_{i_b}) + \sum_{n = 1}^{N_f} r_{i_a} F_{i_b}
As with compute *stress/atom*, the first, second, third, fourth and fifth terms
are pairwise, bond, angle, dihedral and improper contributions,
but instead of assigning the virial contribution equally to each atom,
only the force :math:`\mathbf{F}_I` acting on atom :math:`I`
due to the interaction and the relative
position :math:`\mathbf{r}_{I0}` of the atom :math:`I` to the geometric center
of the interacting atoms, i.e. centroid, is used.
As the geometric center is different
for each interaction, the :math:`\mathbf{r}_{I0}` also differs.
The sixth and seventh terms, Kspace and :doc:`fix <fix>` contribution
respectively, are computed identical to compute *stress/atom*.
Although the total system virial is the same as compute *stress/atom*,
compute *centroid/stress/atom* is know to result in more consistent
heat flux values for angle, dihedrals and improper contributions
when computed via :doc:`compute heat/flux <compute_heat_flux>`.
As with compute *stress/atom*, the first, second, third, fourth and
fifth terms are pairwise, bond, angle, dihedral and improper
contributions, but instead of assigning the virial contribution
equally to each atom, only the force :math:`\mathbf{F}_I` acting on
atom :math:`I` due to the interaction and the relative position
:math:`\mathbf{r}_{I0}` of the atom :math:`I` to the geometric center
of the interacting atoms, i.e. centroid, is used. As the geometric
center is different for each interaction, the :math:`\mathbf{r}_{I0}`
also differs. The sixth and seventh terms, Kspace and :doc:`fix
<fix>` contribution respectively, are computed identical to compute
*stress/atom*. Although the total system virial is the same as
compute *stress/atom*, compute *centroid/stress/atom* is know to
result in more consistent heat flux values for angle, dihedrals and
improper contributions when computed via :doc:`compute heat/flux
<compute_heat_flux>`.
If no extra keywords are listed, the kinetic contribution
all of the virial contribution terms are
included in the per-atom stress tensor. If any extra keywords are
listed, only those terms are summed to compute the tensor. The
*virial* keyword means include all terms except the kinetic energy
*ke*\ .
If no extra keywords are listed, the kinetic contribution all of the
virial contribution terms are included in the per-atom stress tensor.
If any extra keywords are listed, only those terms are summed to
compute the tensor. The *virial* keyword means include all terms
except the kinetic energy *ke*\ .
Note that the stress for each atom is due to its interaction with all
other atoms in the simulation, not just with other atoms in the group.
Details of how compute *stress/atom* obtains the virial for individual atoms for
either pairwise or many-body potentials, and including the effects of
periodic boundary conditions is discussed in :ref:`(Thompson) <Thompson2>`.
The basic idea for many-body potentials is to treat each component of
the force computation between a small cluster of atoms in the same
manner as in the formula above for bond, angle, dihedral, etc
interactions. Namely the quantity :math:`\mathbf{r} \cdot \mathbf{F}`
is summed over the atoms in
the interaction, with the :math:`r` vectors unwrapped by periodic boundaries
so that the cluster of atoms is close together. The total
Details of how compute *stress/atom* obtains the virial for individual
atoms for either pairwise or many-body potentials, and including the
effects of periodic boundary conditions is discussed in
:ref:`(Thompson) <Thompson2>`. The basic idea for many-body
potentials is to treat each component of the force computation between
a small cluster of atoms in the same manner as in the formula above
for bond, angle, dihedral, etc interactions. Namely the quantity
:math:`\mathbf{r} \cdot \mathbf{F}` is summed over the atoms in the
interaction, with the :math:`r` vectors unwrapped by periodic
boundaries so that the cluster of atoms is close together. The total
contribution for the cluster interaction is divided evenly among those
atoms. Details of how compute *centroid/stress/atom* obtains
the virial for individual atoms
is given in :ref:`(Surblys) <Surblys1>`,
where the idea is that the virial of the atom :math:`I`
is the result of only the force :math:`\mathbf{F}_I` on the atom due
to the interaction
and its positional vector :math:`\mathbf{r}_{I0}`,
relative to the geometric center of the
interacting atoms, regardless of the number of participating atoms.
The periodic boundary treatment is identical to
atoms.
Details of how compute *centroid/stress/atom* obtains the virial for
individual atoms is given in :ref:`(Surblys) <Surblys1>`, where the
idea is that the virial of the atom :math:`I` is the result of only
the force :math:`\mathbf{F}_I` on the atom due to the interaction and
its positional vector :math:`\mathbf{r}_{I0}`, relative to the
geometric center of the interacting atoms, regardless of the number of
participating atoms. The periodic boundary treatment is identical to
that of compute *stress/atom*, and both of them reduce to identical
expressions for two-body interactions,
i.e. computed values for contributions from bonds and two-body pair styles,
such as :doc:`Lennard-Jones <pair_lj>`, will be the same,
while contributions from angles, dihedrals and impropers will be different.
expressions for two-body interactions, i.e. computed values for
contributions from bonds and two-body pair styles, such as
:doc:`Lennard-Jones <pair_lj>`, will be the same, while contributions
from angles, dihedrals and impropers will be different.
The :doc:`dihedral_style charmm <dihedral_charmm>` style calculates
pairwise interactions between 1-4 atoms. The virial contribution of
these terms is included in the pair virial, not the dihedral virial.
The KSpace contribution is calculated using the method in
:ref:`(Heyes) <Heyes2>` for the Ewald method and by the methodology described
in :ref:`(Sirk) <Sirk1>` for PPPM. The choice of KSpace solver is specified
by the :doc:`kspace_style pppm <kspace_style>` command. Note that for
PPPM, the calculation requires 6 extra FFTs each timestep that
per-atom stress is calculated. Thus it can significantly increase the
cost of the PPPM calculation if it is needed on a large fraction of
the simulation timesteps.
:ref:`(Heyes) <Heyes2>` for the Ewald method and by the methodology
described in :ref:`(Sirk) <Sirk1>` for PPPM. The choice of KSpace
solver is specified by the :doc:`kspace_style pppm <kspace_style>`
command. Note that for PPPM, the calculation requires 6 extra FFTs
each timestep that per-atom stress is calculated. Thus it can
significantly increase the cost of the PPPM calculation if it is
needed on a large fraction of the simulation timesteps.
The *temp-ID* argument can be used to affect the per-atom velocities
used in the kinetic energy contribution to the total stress. If the
@ -189,10 +183,10 @@ See the :doc:`compute voronoi/atom <compute_voronoi_atom>` command for
one possible way to estimate a per-atom volume.
Thus, if the diagonal components of the per-atom stress tensor are
summed for all atoms in the system and the sum is divided by :math:`dV`, where
:math:`d` = dimension and :math:`V` is the volume of the system,
the result should be :math:`-P`, where :math:`P`
is the total pressure of the system.
summed for all atoms in the system and the sum is divided by
:math:`dV`, where :math:`d` = dimension and :math:`V` is the volume of
the system, the result should be :math:`-P`, where :math:`P` is the
total pressure of the system.
These lines in an input script for a 3d system should yield that
result. I.e. the last 2 columns of thermo output will be the same:
@ -207,33 +201,48 @@ result. I.e. the last 2 columns of thermo output will be the same:
.. note::
The per-atom stress does not include any Lennard-Jones tail
corrections to the pressure added by the :doc:`pair_modify tail yes <pair_modify>` command, since those are contributions to the
global system pressure.
corrections to the pressure added by the :doc:`pair_modify tail yes
<pair_modify>` command, since those are contributions to the global
system pressure.
Output info
"""""""""""
This compute *stress/atom* calculates a per-atom array with 6 columns, which can be
accessed by indices 1-6 by any command that uses per-atom values from
a compute as input.
The compute *centroid/stress/atom* produces a per-atom array with 9 columns,
but otherwise can be used in an identical manner to compute *stress/atom*.
See the :doc:`Howto output <Howto_output>` doc page
for an overview of LAMMPS output options.
Compute *stress/atom* calculates a per-atom array with 6 columns,
which can be accessed by indices 1-6 by any command that uses per-atom
values from a compute as input. Compute *centroid/stress/atom*
produces a per-atom array with 9 columns, but otherwise can be used in
an identical manner to compute *stress/atom*. See the :doc:`Howto
output <Howto_output>` doc page for an overview of LAMMPS output
options.
The per-atom array values will be in pressure\*volume
:doc:`units <units>` as discussed above.
The ordering of the 6 columns for *stress/atom* is as follows: xx, yy,
zz, xy, xz, yz. The ordering of the 9 columns for
*centroid/stress/atom* is as follows: xx, yy, zz, xy, xz, yz, yx, zx,
zy.
The per-atom array values will be in pressure\*volume :doc:`units
<units>` as discussed above.
Restrictions
""""""""""""
Currently (Spring 2020), compute *centroid/stress/atom* does not support
pair styles with many-body interactions, such as :doc:`Tersoff
<pair_tersoff>`, or pair styles with long-range Coulomb interactions.
LAMMPS will generate an error in such cases. In principal, equivalent
formulation to that of angle, dihedral and improper contributions in the
virial :math:`W_{ab}` formula can also be applied to the many-body pair
styles, and is planned in the future.
Currently, compute *centroid/stress/atom* does not support pair styles
with many-body interactions (:doc:`EAM <pair_eam>` is an exception,
since its computations are performed pairwise), nor granular pair
styles with pairwise forces which are not aligned with the vector
between the pair of particles. All bond styles are supported. All
angle, dihedral, improper styles are supported with the exception of
USER-INTEL and KOKKOS variants of specific styles. It also does not
support models with long-range Coulombic or dispersion forces,
i.e. the kspace_style command in LAMMPS. It also does not support the
following fixes which add rigid-body constraints: :doc:`fix shake
<fix_shake>`, :doc:`fix rattle <fix_shake>`, :doc:`fix rigid
<fix_rigid>`, :doc:`fix rigid/small <fix_rigid>`.
LAMMPS will generate an error if one of these options is included in
your model. Extension of centroid stress calculations to these force
and fix styles is planned for the future.
Related commands
""""""""""""""""

View File

@ -153,7 +153,7 @@ temp/chunk calculation to a file is to use the :doc:`fix ave/time <fix_ave_time>
compute cc1 all chunk/atom molecule
compute myChunk all temp/chunk cc1 temp
fix 1 all ave/time 100 1 100 c_myChunk file tmp.out mode vector
fix 1 all ave/time 100 1 100 c_myChunk[1] file tmp.out mode vector
----------

View File

@ -125,6 +125,16 @@ cannot appear in the neighbor list, to avoid creation of duplicate
bonds. The neighbor list for all atom type pairs must also extend to
a distance that encompasses the *rmax* for new bonds to create.
.. note::
If you want to create bonds between pairs of 1-3 or 1-4 atoms in
the current bond topology, then you need to use :doc:`special_bonds
lj 0 1 1 <special_bonds>` to insure those pairs appear in the
neighbor list. They will not appear with the default special_bonds
settings which are zero for 1-2, 1-3, and 1-4 atoms. 1-3 or 1-4
atoms are those which are 2 hops or 3 hops apart in the bond
topology.
An additional requirement for this style is that your system must be
ready to perform a simulation. This means, for example, that all
:doc:`pair_style <pair_style>` coefficients be set via the

View File

@ -13,7 +13,7 @@ Syntax
* N = # of atom types to use in this simulation
* region-ID = ID of region to use as simulation domain
* zero or more keyword/value pairs may be appended
* keyword = *bond/types* or *angle/types* or *dihedral/types* or *improper/types* or *extra/bond/per/atom* or *extra/angle/per/atom* or *extra/dihedral/per/atom* or *extra/improper/per/atom*
* keyword = *bond/types* or *angle/types* or *dihedral/types* or *improper/types* or *extra/bond/per/atom* or *extra/angle/per/atom* or *extra/dihedral/per/atom* or *extra/improper/per/atom* or *extra/special/per/atom*
.. parsed-literal::

View File

@ -205,6 +205,7 @@ accelerated styles exist.
* :doc:`efield <fix_efield>` - impose electric field on system
* :doc:`ehex <fix_ehex>` - enhanced heat exchange algorithm
* :doc:`electron/stopping <fix_electron_stopping>` - electronic stopping power as a friction force
* :doc:`electron/stopping/fit <fix_electron_stopping>` - electronic stopping power as a friction force
* :doc:`enforce2d <fix_enforce2d>` - zero out z-dimension velocity and force
* :doc:`eos/cv <fix_eos_cv>` -
* :doc:`eos/table <fix_eos_table>` -
@ -363,6 +364,8 @@ accelerated styles exist.
* :doc:`temp/rescale <fix_temp_rescale>` - temperature control by velocity rescaling
* :doc:`temp/rescale/eff <fix_temp_rescale_eff>` - temperature control by velocity rescaling in the electron force field model
* :doc:`tfmc <fix_tfmc>` - perform force-bias Monte Carlo with time-stamped method
* :doc:`tgnvt/drude <fix_tgnh_drude>` - NVT time integration for Drude polarizable model via temperature-grouped Nose-Hoover
* :doc:`tgnpt/drude <fix_tgnh_drude>` - NPT time integration for Drude polarizable model via temperature-grouped Nose-Hoover
* :doc:`thermal/conductivity <fix_thermal_conductivity>` - Muller-Plathe kinetic energy exchange for thermal conductivity calculation
* :doc:`ti/spring <fix_ti_spring>` -
* :doc:`tmd <fix_tmd>` - guide a group of atoms to a new configuration

View File

@ -128,9 +128,9 @@ formulas for the meaning of these parameters:
+------------------------------------------------------------------------------+--------------------------------------------------+-------------+
| :doc:`born/coul/long, born/coul/msm <pair_born>` | coulombic_cutoff | type global |
+------------------------------------------------------------------------------+--------------------------------------------------+-------------+
| :doc:`buck <pair_buck>` | a,c | type pairs |
| :doc:`buck, buck/coul/cut <pair_buck>` | a,c | type pairs |
+------------------------------------------------------------------------------+--------------------------------------------------+-------------+
| :doc:`buck/coul/long, buck/coul/msm <pair_buck>` | coulombic_cutoff | type global |
| :doc:`buck/coul/long, buck/coul/msm <pair_buck>` | a,c,coulombic_cutoff | type pairs |
+------------------------------------------------------------------------------+--------------------------------------------------+-------------+
| :doc:`buck/mdf <pair_mdf>` | a,c | type pairs |
+------------------------------------------------------------------------------+--------------------------------------------------+-------------+

View File

@ -120,7 +120,7 @@ styles and their energy formulas for the meaning of these parameters:
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`born <pair_born>` | a,b,c | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`buck <pair_buck>` | a,c | type pairs |
| :doc:`buck, buck/coul/cut, buck/coul/long, buck/coul/msm <pair_buck>` | a,c | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+
| :doc:`buck/mdf <pair_mdf>` | a,c | type pairs |
+------------------------------------------------------------------------------+-------------------------+------------+

View File

@ -118,32 +118,38 @@ converge properly.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`.
No information about this fix is written to :doc:`binary restart files
<restart>`.
The :doc:`fix_modify <fix_modify>` *energy* option is supported by this
fix to add the potential "energy" inferred by the added force to the
system's potential energy as part of :doc:`thermodynamic output <thermo_style>`. This is a fictitious quantity but is
needed so that the :doc:`minimize <minimize>` command can include the
forces added by this fix in a consistent manner. I.e. there is a
decrease in potential energy when atoms move in the direction of the
added force.
The :doc:`fix_modify <fix_modify>` *energy* option is supported by
this fix to add the potential energy inferred by the added force to
the global potential energy of the system as part of
:doc:`thermodynamic output <thermo_style>`. The default setting for
this fix is :doc:`fix_modify energy no <fix_modify>`. Note that this
energy is a fictitious quantity but is needed so that the
:doc:`minimize <minimize>` command can include the forces added by
this fix in a consistent manner. I.e. there is a decrease in
potential energy when atoms move in the direction of the added force.
The :doc:`fix_modify <fix_modify>` *virial* option is supported by this
fix to add the contribution due to the added forces on atoms to the
system's virial as part of :doc:`thermodynamic output <thermo_style>`.
The default is *virial no*
The :doc:`fix_modify <fix_modify>` *virial* option is supported by
this fix to add the contribution due to the added forces on atoms to
both the global pressure and per-atom stress of the system via the
:doc:`compute pressure <compute_pressure>` and :doc:`compute
stress/atom <compute_stress_atom>` commands. The former can be
accessed by :doc:`thermodynamic output <thermo_style>`. The default
setting for this fix is :doc:`fix_modify virial no <fix_modify>`.
The :doc:`fix_modify <fix_modify>` *respa* option is supported by this
fix. This allows to set at which level of the :doc:`r-RESPA <run_style>`
integrator the fix is adding its forces. Default is the outermost
level.
fix. This allows to set at which level of the :doc:`r-RESPA
<run_style>` integrator the fix is adding its forces. Default is the
outermost level.
This fix computes a global scalar and a global 3-vector of forces,
which can be accessed by various :doc:`output commands <Howto_output>`.
The scalar is the potential energy discussed above. The vector is the
total force on the group of atoms before the forces on individual
atoms are changed by the fix. The scalar and vector values calculated
by this fix are "extensive".
which can be accessed by various :doc:`output commands
<Howto_output>`. The scalar is the potential energy discussed above.
The vector is the total force on the group of atoms before the forces
on individual atoms are changed by the fix. The scalar and vector
values calculated by this fix are "extensive".
No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command.

View File

@ -55,13 +55,15 @@ Restart, fix_modify, output, run start/stop, minimize info
No information about this fix is written to :doc:`binary restart files <restart>`.
The :doc:`fix_modify <fix_modify>` *energy* option is supported by this
fix to add the potential "energy" inferred by the added forces to the
system's potential energy as part of :doc:`thermodynamic output <thermo_style>`. This is a fictitious quantity but is
needed so that the :doc:`minimize <minimize>` command can include the
forces added by this fix in a consistent manner. I.e. there is a
decrease in potential energy when atoms move in the direction of the
added forces.
The :doc:`fix_modify <fix_modify>` *energy* option is supported by
this fix to add the potential "energy" inferred by the added torques
to the global potential energy of the system as part of
:doc:`thermodynamic output <thermo_style>`. The default setting for
this fix is :doc:`fix_modify energy no <fix_modify>`. Note that this
is a fictitious quantity but is needed so that the :doc:`minimize
<minimize>` command can include the forces added by this fix in a
consistent manner. I.e. there is a decrease in potential energy when
atoms move in the direction of the added forces.
The :doc:`fix_modify <fix_modify>` *respa* option is supported by
this fix. This allows to set at which level of the :doc:`r-RESPA <run_style>`
@ -78,16 +80,28 @@ No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command.
The forces due to this fix are imposed during an energy minimization,
invoked by the :doc:`minimize <minimize>` command. You should not
specify force components with a variable that has time-dependence for
use with a minimizer, since the minimizer increments the timestep as
the iteration count during the minimization.
invoked by the :doc:`minimize <minimize>` command.
.. note::
If you want the fictitious potential energy associated with the
added forces to be included in the total potential energy of the
system (the quantity being minimized), you MUST enable the
:doc:`fix_modify <fix_modify>` *energy* option for this fix.
.. note::
You should not specify force components with a variable that has
time-dependence for use with a minimizer, since the minimizer
increments the timestep as the iteration count during the
minimization.
Restrictions
""""""""""""
This fix is part of the USER-MISC package. It is only enabled if
LAMMPS was built with that package. See the :doc:`Build package <Build_package>` doc page for more info.
LAMMPS was built with that package. See the :doc:`Build package
<Build_package>` doc page for more info.
Related commands
""""""""""""""""

View File

@ -122,10 +122,22 @@ Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files
<restart>`. The :doc:`fix_modify <fix_modify>` options relevant to this
fix are listed below. No global scalar or vector or per-atom quantities
are stored by this fix for access by various :doc:`output commands
<Howto_output>`. No parameter of this fix can be used with the
<restart>`.
The :doc:`fix_modify <fix_modify>` *energy* option is not supported by
this fix, but this fix does add the kinetic energy imparted to atoms
by the momentum coupling mode of the AtC package to the global
potential energy of the system as part of :doc:`thermodynamic output
<thermo_style>`.
Additional :doc:`fix_modify <fix_modify>` options relevant to this
fix are listed below.
This fix computes a global scalar which can be accessed by various
:doc:`output commands <Howto_output>`. The scalar is the energy
discussed in the previous paragraph. The scalar value is "extensive".
No parameter of this fix can be used with the
*start/stop* keywords of the :doc:`run <run>` command. This fix is not
invoked during :doc:`energy minimization <minimize>`.
@ -145,10 +157,10 @@ one, e.g. nve, nvt, etc. In addition, currently:
Related commands
""""""""""""""""
After specifying this fix in your input script, several other
:doc:`fix_modify <fix_modify>` commands are used to setup the problem,
e.g. define the finite element mesh and prescribe initial and boundary
conditions.
After specifying this fix in your input script, several
:doc:`fix_modify AtC <fix_modify>` commands are used to setup the
problem, e.g. define the finite element mesh and prescribe initial and
boundary conditions. Each of these options has its own doc page.
*fix_modify* commands for setup:
@ -240,7 +252,8 @@ miscellaneous *fix_modify* commands:
* :doc:`fix_modify AtC remove_species <atc_remove_species>`
* :doc:`fix_modify AtC remove_molecule <atc_remove_molecule>`
Note: a set of example input files with the attendant material files are included in the ``examples/USER/atc`` folders.
Note: a set of example input files with the attendant material files
are included in the ``examples/USER/atc`` folders.
Default
"""""""
@ -252,30 +265,52 @@ For detailed exposition of the theory and algorithms please see:
.. _Wagner:
**(Wagner)** Wagner, GJ; Jones, RE; Templeton, JA; Parks, MA, "An atomistic-to-continuum coupling method for heat transfer in solids." Special Issue of Computer Methods and Applied Mechanics (2008) 197:3351.
**(Wagner)** Wagner, GJ; Jones, RE; Templeton, JA; Parks, MA, "An
atomistic-to-continuum coupling method for heat transfer in solids."
Special Issue of Computer Methods and Applied Mechanics (2008)
197:3351.
.. _Zimmeman2004:
**(Zimmerman2004)** Zimmerman, JA; Webb, EB; Hoyt, JJ;. Jones, RE; Klein, PA; Bammann, DJ, "Calculation of stress in atomistic simulation." Special Issue of Modelling and Simulation in Materials Science and Engineering (2004), 12:S319.
**(Zimmerman2004)** Zimmerman, JA; Webb, EB; Hoyt, JJ;. Jones, RE;
Klein, PA; Bammann, DJ, "Calculation of stress in atomistic
simulation." Special Issue of Modelling and Simulation in Materials
Science and Engineering (2004), 12:S319.
.. _Zimmerman2010:
**(Zimmerman2010)** Zimmerman, JA; Jones, RE; Templeton, JA, "A material frame approach for evaluating continuum variables in atomistic simulations." Journal of Computational Physics (2010), 229:2364.
**(Zimmerman2010)** Zimmerman, JA; Jones, RE; Templeton, JA, "A
material frame approach for evaluating continuum variables in
atomistic simulations." Journal of Computational Physics (2010),
229:2364.
.. _Templeton2010:
**(Templeton2010)** Templeton, JA; Jones, RE; Wagner, GJ, "Application of a field-based method to spatially varying thermal transport problems in molecular dynamics." Modelling and Simulation in Materials Science and Engineering (2010), 18:085007.
**(Templeton2010)** Templeton, JA; Jones, RE; Wagner, GJ, "Application
of a field-based method to spatially varying thermal transport
problems in molecular dynamics." Modelling and Simulation in
Materials Science and Engineering (2010), 18:085007.
.. _Jones:
**(Jones)** Jones, RE; Templeton, JA; Wagner, GJ; Olmsted, D; Modine, JA, "Electron transport enhanced molecular dynamics for metals and semi-metals." International Journal for Numerical Methods in Engineering (2010), 83:940.
**(Jones)** Jones, RE; Templeton, JA; Wagner, GJ; Olmsted, D; Modine,
JA, "Electron transport enhanced molecular dynamics for metals and
semi-metals." International Journal for Numerical Methods in
Engineering (2010), 83:940.
.. _Templeton2011:
**(Templeton2011)** Templeton, JA; Jones, RE; Lee, JW; Zimmerman, JA; Wong, BM, "A long-range electric field solver for molecular dynamics based on atomistic-to-continuum modeling." Journal of Chemical Theory and Computation (2011), 7:1736.
**(Templeton2011)** Templeton, JA; Jones, RE; Lee, JW; Zimmerman, JA;
Wong, BM, "A long-range electric field solver for molecular dynamics
based on atomistic-to-continuum modeling." Journal of Chemical Theory
and Computation (2011), 7:1736.
.. _Mandadapu:
**(Mandadapu)** Mandadapu, KK; Templeton, JA; Lee, JW, "Polarization as a field variable from molecular dynamics simulations." Journal of Chemical Physics (2013), 139:054115.
**(Mandadapu)** Mandadapu, KK; Templeton, JA; Lee, JW, "Polarization
as a field variable from molecular dynamics simulations." Journal of
Chemical Physics (2013), 139:054115.
Please refer to the standard finite element (FE) texts, e.g. T.J.R Hughes " The finite element method ", Dover 2003, for the basics of FE simulation.
Please refer to the standard finite element (FE) texts, e.g. T.J.R
Hughes " The finite element method ", Dover 2003, for the basics of FE
simulation.

View File

@ -93,7 +93,7 @@ from a compute, fix, or variable, then see the :doc:`fix ave/chunk <fix_ave_chun
:doc:`fix ave/histo <fix_ave_histo>` commands. If you wish to convert a
per-atom quantity into a single global value, see the :doc:`compute reduce <compute_reduce>` command.
The input values must either be all scalars. What kinds of
The input values must be all scalars. What kinds of
correlations between input values are calculated is determined by the
*type* keyword as discussed below.

View File

@ -75,6 +75,39 @@ Note that *V_avg* and *Coeff_i* should all be in the proper units, e.g. if you
are using *units real*\ , *V_avg* should be in cubic angstroms, and the
coefficients should all be in atmospheres \* cubic angstroms.
----------
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
This fix writes the cumulative global energy change to :doc:`binary
restart files <restart>`. See the :doc:`read_restart <read_restart>`
command for info on how to re-specify a fix in an input script that
reads a restart file, so that the fix continues in an uninterrupted
fashion.
The :doc:`fix_modify <fix_modify>` *temp* option is supported by this
fix. You can use it to assign a temperature :doc:`compute <compute>`
you have defined to this fix which will be used in its thermostatting
procedure, as described above. For consistency, the group used by
this fix and by the compute should be the same.
The cumulative energy change in the system imposed by this fix is
included in the :doc:`thermodynamic output <thermo_style>` keywords
*ecouple* and *econserve*. See the :doc:`thermo_style <thermo_style>`
doc page for details.
This fix computes a global scalar which can be accessed by various
:doc:`output commands <Howto_output>`. The scalar is the same
cumulative energy change due to this fix described in the previous
paragraph. The scalar value calculated by this fix is "extensive".
This fix can ramp its target temperature over multiple runs, using the
*start* and *stop* keywords of the :doc:`run <run>` command. See the
:doc:`run <run>` command for details of how to do this.
This fix is not invoked during :doc:`energy minimization <minimize>`.
Restrictions
""""""""""""

View File

@ -35,13 +35,13 @@ Syntax
* react-ID = user-assigned name for the reaction
* react-group-ID = only atoms in this group are considered for the reaction
* Nevery = attempt reaction every this many steps
* Rmin = bonding pair atoms must be separated by more than Rmin to initiate reaction (distance units)
* Rmax = bonding pair atoms must be separated by less than Rmax to initiate reaction (distance units)
* Rmin = initiator atoms must be separated by more than Rmin to initiate reaction (distance units)
* Rmax = initiator atoms must be separated by less than Rmax to initiate reaction (distance units)
* template-ID(pre-reacted) = ID of a molecule template containing pre-reaction topology
* template-ID(post-reacted) = ID of a molecule template containing post-reaction topology
* map_file = name of file specifying corresponding atom-IDs in the pre- and post-reacted templates
* zero or more individual keyword/value pairs may be appended to each react argument
* individual_keyword = *prob* or *max_rxn* or *stabilize_steps* or *custom_charges*
* individual_keyword = *prob* or *max_rxn* or *stabilize_steps* or *custom_charges* or *molecule* or *modify_create*
.. parsed-literal::
@ -55,6 +55,16 @@ Syntax
*custom_charges* value = *no* or *fragmentID*
no = update all atomic charges (default)
fragmentID = ID of molecule fragment whose charges are updated
*molecule* value = *off* or *inter* or *intra*
off = allow both inter- and intramolecular reactions (default)
inter = search for reactions between molecules with different IDs
intra = search for reactions within the same molecule
*modify_create* keyword values
*fit* value = *all* or *fragmentID*
all = use all eligible atoms for create-atoms fit (default)
fragmentID = ID of molecule fragment used for create-atoms fit
*overlap* value = R
R = only insert atom/molecule if further than R from existing particles (distance units)
Examples
""""""""
@ -85,7 +95,9 @@ documentation. Topology changes are defined in pre- and post-reaction
molecule templates and can include creation and deletion of bonds,
angles, dihedrals, impropers, bond types, angle types, dihedral types,
atom types, or atomic charges. In addition, reaction by-products or
other molecules can be identified and deleted.
other molecules can be identified and deleted. Finally, atoms can be
created and inserted at specific positions relative to the reaction
site.
Fix bond/react does not use quantum mechanical (eg. fix qmmm) or
pairwise bond-order potential (eg. Tersoff or AIREBO) methods to
@ -172,8 +184,8 @@ timesteps. *Nevery* can be specified with an equal-style
integer.
Three physical conditions must be met for a reaction to occur. First,
a bonding atom pair must be identified within the reaction distance
cutoffs. Second, the topology surrounding the bonding atom pair must
an initiator atom pair must be identified within the reaction distance
cutoffs. Second, the topology surrounding the initiator atom pair must
match the topology of the pre-reaction template. Only atom types and
bond connectivity are used to identify a valid reaction site (not bond
types, etc.). Finally, any reaction constraints listed in the map file
@ -181,10 +193,10 @@ types, etc.). Finally, any reaction constraints listed in the map file
reaction site is eligible to be modified to match the post-reaction
template.
A bonding atom pair will be identified if several conditions are met.
First, a pair of atoms I,J within the specified react-group-ID of type
itype and jtype must be separated by a distance between *Rmin* and
*Rmax*\ . *Rmin* and *Rmax* can be specified with equal-style
An initiator atom pair will be identified if several conditions are
met. First, a pair of atoms I,J within the specified react-group-ID of
type itype and jtype must be separated by a distance between *Rmin*
and *Rmax*\ . *Rmin* and *Rmax* can be specified with equal-style
:doc:`variables <variable>`. For example, these reaction cutoffs can
be a function of the reaction conversion using the following commands:
@ -194,20 +206,20 @@ be a function of the reaction conversion using the following commands:
fix myrxn all bond/react react myrxn1 all 1 0 v_rmax mol1 mol2 map_file.txt
variable rmax equal 3+f_myrxn[1]/100 # arbitrary function of reaction count
The following criteria are used if multiple candidate bonding atom
pairs are identified within the cutoff distance: 1) If the bonding
The following criteria are used if multiple candidate initiator atom
pairs are identified within the cutoff distance: 1) If the initiator
atoms in the pre-reaction template are not 1-2 neighbors (i.e. not
directly bonded) the closest potential partner is chosen. 2)
Otherwise, if the bonding atoms in the pre-reaction template are 1-2
Otherwise, if the initiator atoms in the pre-reaction template are 1-2
neighbors (i.e. directly bonded) the farthest potential partner is
chosen. 3) Then, if both an atom I and atom J have each other as their
bonding partners, these two atoms are identified as the bonding atom
pair of the reaction site. Note that it can be helpful to select
unique atom types for the bonding atoms: if a bonding atom pair is
identified, as described in the previous steps, but does not
initiator partners, these two atoms are identified as the initiator
atom pair of the reaction site. Note that it can be helpful to select
unique atom types for the initiator atoms: if an initiator atom pair
is identified, as described in the previous steps, but does not
correspond to the same pair specified in the pre-reaction template, an
otherwise eligible reaction could be prevented from occurring. Once
this unique bonding atom pair is identified for each reaction, there
this unique initiator atom pair is identified for each reaction, there
could be two or more reactions that involve the same atom on the same
timestep. If this is the case, only one such reaction is permitted to
occur. This reaction is chosen randomly from all potential reactions
@ -217,7 +229,7 @@ with user-specified probabilities.
The pre-reacted molecule template is specified by a molecule command.
This molecule template file contains a sample reaction site and its
surrounding topology. As described below, the bonding atom pairs of
surrounding topology. As described below, the initiator atom pairs of
the pre-reacted template are specified by atom ID in the map file. The
pre-reacted molecule template should contain as few atoms as possible
while still completely describing the topology of all atoms affected
@ -231,18 +243,18 @@ missing topology with respect to the simulation. For example, the
pre-reacted template may contain an atom that, in the simulation, is
currently connected to the rest of a long polymer chain. These are
referred to as edge atoms, and are also specified in the map file. All
pre-reaction template atoms should be linked to a bonding atom, via at
least one path that does not involve edge atoms. When the pre-reaction
template contains edge atoms, not all atoms, bonds, charges, etc.
specified in the reaction templates will be updated. Specifically,
topology that involves only atoms that are 'too near' to template
edges will not be updated. The definition of 'too near the edge'
depends on which interactions are defined in the simulation. If the
simulation has defined dihedrals, atoms within two bonds of edge atoms
are considered 'too near the edge.' If the simulation defines angles,
but not dihedrals, atoms within one bond of edge atoms are considered
'too near the edge.' If just bonds are defined, only edge atoms are
considered 'too near the edge.'
pre-reaction template atoms should be linked to an initiator atom, via
at least one path that does not involve edge atoms. When the
pre-reaction template contains edge atoms, not all atoms, bonds,
charges, etc. specified in the reaction templates will be updated.
Specifically, topology that involves only atoms that are 'too near' to
template edges will not be updated. The definition of 'too near the
edge' depends on which interactions are defined in the simulation. If
the simulation has defined dihedrals, atoms within two bonds of edge
atoms are considered 'too near the edge.' If the simulation defines
angles, but not dihedrals, atoms within one bond of edge atoms are
considered 'too near the edge.' If just bonds are defined, only edge
atoms are considered 'too near the edge.'
.. note::
@ -258,14 +270,14 @@ command page.
The post-reacted molecule template contains a sample of the reaction
site and its surrounding topology after the reaction has occurred. It
must contain the same number of atoms as the pre-reacted template. A
one-to-one correspondence between the atom IDs in the pre- and
post-reacted templates is specified in the map file as described
below. Note that during a reaction, an atom, bond, etc. type may
change to one that was previously not present in the simulation. These
new types must also be defined during the setup of a given simulation.
A discussion of correctly handling this is also provided on the
:doc:`molecule <molecule>` command page.
must contain the same number of atoms as the pre-reacted template
(unless there are created atoms). A one-to-one correspondence between
the atom IDs in the pre- and post-reacted templates is specified in
the map file as described below. Note that during a reaction, an atom,
bond, etc. type may change to one that was previously not present in
the simulation. These new types must also be defined during the setup
of a given simulation. A discussion of correctly handling this is also
provided on the :doc:`molecule <molecule>` command page.
.. note::
@ -279,7 +291,7 @@ A discussion of correctly handling this is also provided on the
The map file is a text document with the following format:
A map file has a header and a body. The header of map file the
contains one mandatory keyword and four optional keywords. The
contains one mandatory keyword and five optional keywords. The
mandatory keyword is 'equivalences':
.. parsed-literal::
@ -292,29 +304,32 @@ The optional keywords are 'edgeIDs', 'deleteIDs', 'chiralIDs' and
.. parsed-literal::
N *edgeIDs* = # of edge atoms N in the pre-reacted molecule template
N *deleteIDs* = # of atoms N that are specified for deletion
N *chiralIDs* = # of specified chiral centers N
N *constraints* = # of specified reaction constraints N
N *deleteIDs* = # of atoms N that are deleted
N *createIDs* = # of atoms N that are created
N *chiralIDs* = # of chiral centers N
N *constraints* = # of reaction constraints N
The body of the map file contains two mandatory sections and four
The body of the map file contains two mandatory sections and five
optional sections. The first mandatory section begins with the keyword
'BondingIDs' and lists the atom IDs of the bonding atom pair in the
pre-reacted molecule template. The second mandatory section begins
with the keyword 'Equivalences' and lists a one-to-one correspondence
between atom IDs of the pre- and post-reacted templates. The first
column is an atom ID of the pre-reacted molecule template, and the
second column is the corresponding atom ID of the post-reacted
molecule template. The first optional section begins with the keyword
'EdgeIDs' and lists the atom IDs of edge atoms in the pre-reacted
molecule template. The second optional section begins with the keyword
'DeleteIDs' and lists the atom IDs of pre-reaction template atoms to
delete. The third optional section begins with the keyword 'ChiralIDs'
lists the atom IDs of chiral atoms whose handedness should be
enforced. The fourth optional section begins with the keyword
'Constraints' and lists additional criteria that must be satisfied in
order for the reaction to occur. Currently, there are five types of
constraints available, as discussed below: 'distance', 'angle',
'dihedral', 'arrhenius', and 'rmsd'.
'InitiatorIDs' and lists the two atom IDs of the initiator atom pair
in the pre-reacted molecule template. The second mandatory section
begins with the keyword 'Equivalences' and lists a one-to-one
correspondence between atom IDs of the pre- and post-reacted
templates. The first column is an atom ID of the pre-reacted molecule
template, and the second column is the corresponding atom ID of the
post-reacted molecule template. The first optional section begins with
the keyword 'EdgeIDs' and lists the atom IDs of edge atoms in the
pre-reacted molecule template. The second optional section begins with
the keyword 'DeleteIDs' and lists the atom IDs of pre-reaction
template atoms to delete. The third optional section begins with the
keyword 'CreateIDs' and lists the atom IDs of the post-reaction
template atoms to create. The fourth optional section begins with the
keyword 'ChiralIDs' lists the atom IDs of chiral atoms whose
handedness should be enforced. The fifth optional section begins with
the keyword 'Constraints' and lists additional criteria that must be
satisfied in order for the reaction to occur. Currently, there are
five types of constraints available, as discussed below: 'distance',
'angle', 'dihedral', 'arrhenius', and 'rmsd'.
A sample map file is given below:
@ -327,7 +342,7 @@ A sample map file is given below:
7 equivalences
2 edgeIDs
BondingIDs
InitiatorIDs
3
5
@ -349,6 +364,38 @@ A sample map file is given below:
----------
A user-specified set of atoms can be deleted by listing their
pre-reaction template IDs in the DeleteIDs section. A deleted atom
must still be included in the post-reaction molecule template, in
which it cannot be bonded to an atom that is not deleted. In addition
to deleting unwanted reaction by-products, this feature can be used to
remove specific topologies, such as small rings, that may be otherwise
indistinguishable.
Atoms can be created by listing their post-reaction template IDs in
the CreateIDs section. A created atom should not be included in the
pre-reaction template. The inserted positions of created atoms are
determined by the coordinates of the post-reaction template, after
optimal translation and rotation of the post-reaction template to the
reaction site (using a fit with atoms that are neither created nor
deleted). The *modify_create* keyword can be used to modify the
default behavior when creating atoms. The *modify_create* keyword has
two sub-keywords, *fit* and *overlap*. One or more of the sub-keywords
may be used after the *modify_create* keyword. The *fit* sub-keyword
can be used to specify which post-reaction atoms are used for the
optimal translation and rotation of the post-reaction template. The
*fragmentID* value of the *fit* sub-keyword must be the name of a
molecule fragment defined in the post-reaction :doc:`molecule
<molecule>` template, and only atoms in this fragment are used for the
fit. Atoms are created only if no current atom in the simulation is
within a distance R of any created atom, including the effect of
periodic boundary conditions if applicable. R is defined by the
*overlap* sub-keyword. Note that the default value for R is 0.0, which
will allow atoms to strongly overlap if you are inserting where other
atoms are present. The velocity of each created atom is initialized in
a random direction with a magnitude calculated from the instantaneous
temperature of the reaction site.
The handedness of atoms that are chiral centers can be enforced by
listing their IDs in the ChiralIDs section. A chiral atom must be
bonded to four atoms with mutually different atom types. This feature
@ -453,6 +500,23 @@ example, the molecule fragment could consist of only the backbone
atoms of a polymer chain. This constraint can be used to enforce a
specific relative position and orientation between reacting molecules.
By default, all constraints must be satisfied for the reaction to
occur. In other words, constraints are evaluated as a series of
logical values using the logical AND operator "&&". More complex logic
can be achieved by explicitly adding the logical AND operator "&&" or
the logical OR operator "||" after a given constraint command. If a
logical operator is specified after a constraint, it must be placed
after all constraint parameters, on the same line as the constraint
(one per line). Similarly, parentheses can be used to group
constraints. The expression that results from concatenating all
constraints should be a valid logical expression that can be read by
the :doc:`variable <variable>` command after converting each
constraint to a logical value. Because exactly one constraint is
allowed per line, having a valid logical expression implies that left
parentheses "(" should only appear before a constraint, and right
parentheses ")" should only appear after a constraint and before any
logical operator.
Once a reaction site has been successfully identified, data structures
within LAMMPS that store bond topology are updated to reflect the
post-reacted molecule template. All force fields with fixed bonds,
@ -462,7 +526,7 @@ A few capabilities to note: 1) You may specify as many *react*
arguments as desired. For example, you could break down a complicated
reaction mechanism into several reaction steps, each defined by its
own *react* argument. 2) While typically a bond is formed or removed
between the bonding atom pairs specified in the pre-reacted molecule
between the initiator atoms specified in the pre-reacted molecule
template, this is not required. 3) By reversing the order of the pre-
and post- reacted molecule templates in another *react* argument, you
can allow for the possibility of one or more reverse reactions.
@ -491,22 +555,21 @@ situations, decreasing rather than increasing this parameter will
result in an increase in stability.
The *custom_charges* keyword can be used to specify which atoms'
atomic charges are updated. When the value is set to 'no,' all atomic
atomic charges are updated. When the value is set to 'no', all atomic
charges are updated to those specified by the post-reaction template
(default). Otherwise, the value should be the name of a molecule
fragment defined in the pre-reaction molecule template. In this case,
only the atomic charges of atoms in the molecule fragment are updated.
A few other considerations:
The *molecule* keyword can be used to force the reaction to be
intermolecular, intramolecular or either. When the value is set to
'off', molecule IDs are not considered when searching for reactions
(default). When the value is set to 'inter', the initiator atoms must
have different molecule IDs in order to be considered for the
reaction. When the value is set to 'intra', only initiator atoms with
the same molecule ID are considered for the reaction.
Many reactions result in one or more atoms that are considered
unwanted by-products. Therefore, bond/react provides the option to
delete a user-specified set of atoms. These pre-reaction atoms are
identified in the map file. A deleted atom must still be included in
the post-reaction molecule template, in which it cannot be bonded to
an atom that is not deleted. In addition to deleting unwanted reaction
by-products, this feature can be used to remove specific topologies,
such as small rings, that may be otherwise indistinguishable.
A few other considerations:
Optionally, you can enforce additional behaviors on reacting atoms.
For example, it may be beneficial to force reacting atoms to remain at
@ -558,7 +621,7 @@ These is 1 quantity for each react argument:
No parameter of this fix can be used with the *start/stop* keywords
of the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
When fix bond/react is 'unfixed,' all internally-created groups are
When fix bond/react is 'unfixed', all internally-created groups are
deleted. Therefore, fix bond/react can only be unfixed after unfixing
all other fixes that use any group created by fix bond/react.
@ -581,10 +644,14 @@ Default
"""""""
The option defaults are stabilization = no, prob = 1.0, stabilize_steps = 60,
reset_mol_ids = yes, custom_charges = no
reset_mol_ids = yes, custom_charges = no, molecule = off, modify_create = no
----------
.. _Gissinger:
**(Gissinger)** Gissinger, Jensen and Wise, Polymer, 128, 211 (2017).
**(Gissinger2017)** Gissinger, Jensen and Wise, Polymer, 128, 211-217 (2017).
.. _Gissinger2020:
**(Gissinger2020)** Gissinger, Jensen and Wise, Macromolecules, 53, 22, 9953-9961 (2020).

View File

@ -47,14 +47,15 @@ for running *ab initio* MD with quantum forces.
The group associated with this fix is ignored.
The protocol and :doc:`units <units>` for message format and content
that LAMMPS exchanges with the server code is defined on the :doc:`server md <server_md>` doc page.
that LAMMPS exchanges with the server code is defined on the
:doc:`server md <server_md>` doc page.
Note that when using LAMMPS as an MD client, your LAMMPS input script
should not normally contain force field commands, like a
:doc:`pair_style <pair_style>`, :doc:`bond_style <bond_style>`, or
:doc:`kspace_style <kspace_style>` command. However it is possible for
a server code to only compute a portion of the full force-field, while
LAMMPS computes the remaining part. Your LAMMPS script can also
:doc:`kspace_style <kspace_style>` command. However it is possible
for a server code to only compute a portion of the full force-field,
while LAMMPS computes the remaining part. Your LAMMPS script can also
specify boundary conditions or force constraints in the usual way,
which will be added to the per-atom forces returned by the server
code.
@ -69,16 +70,21 @@ LAMMPS and another code in tandem to perform a coupled simulation.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`.
No information about this fix is written to :doc:`binary restart files
<restart>`.
The :doc:`fix_modify <fix_modify>` *energy* option is supported by this
fix to add the potential energy computed by the server application to
the system's potential energy as part of :doc:`thermodynamic output <thermo_style>`.
The :doc:`fix_modify <fix_modify>` *energy* option is supported by
this fix to add the potential energy set by the server application to
the global potential energy of the system as part of
:doc:`thermodynamic output <thermo_style>`. The default setting for
this fix is :doc:`fix_modify energy yes <fix_modify>`.
The :doc:`fix_modify <fix_modify>` *virial* option is supported by this
fix to add the server application's contribution to the system's
virial as part of :doc:`thermodynamic output <thermo_style>`. The
default is *virial yes*
The :doc:`fix_modify <fix_modify>` *virial* option is supported by
this fix to add the contribution computed by the server application to
the global pressure of the system via the :doc:`compute pressure
<compute_pressure>` command. This can be accessed by
:doc:`thermodynamic output <thermo_style>`. The default setting for
this fix is :doc:`fix_modify virial yes <fix_modify>`.
This fix computes a global scalar which can be accessed by various
:doc:`output commands <Howto_output>`. The scalar is the potential
@ -86,13 +92,16 @@ energy discussed above. The scalar value calculated by this fix is
"extensive".
No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
the :doc:`run <run>` command.
This fix is not invoked during :doc:`energy minimization <minimize>`.
Restrictions
""""""""""""
This fix is part of the MESSAGE package. It is only enabled if LAMMPS
was built with that package. See the :doc:`Build package <Build_package>` doc page for more info.
was built with that package. See the :doc:`Build package
<Build_package>` doc page for more info.
A script that uses this command must also use the
:doc:`message <message>` command to setup and shut down the messaging

View File

@ -29,11 +29,12 @@ Description
This command enables CMAP cross-terms to be added to simulations which
use the CHARMM force field. These are relevant for any CHARMM model
of a peptide or protein sequences that is 3 or more amino-acid
residues long; see :ref:`(Buck) <Buck>` and :ref:`(Brooks) <Brooks2>` for details,
including the analytic energy expressions for CMAP interactions. The
CMAP cross-terms add additional potential energy contributions to pairs
of overlapping phi-psi dihedrals of amino-acids, which are important
to properly represent their conformational behavior.
residues long; see :ref:`(Buck) <Buck>` and :ref:`(Brooks) <Brooks2>`
for details, including the analytic energy expressions for CMAP
interactions. The CMAP cross-terms add additional potential energy
contributions to pairs of overlapping phi-psi dihedrals of
amino-acids, which are important to properly represent their
conformational behavior.
The examples/cmap directory has a sample input script and data file
for a small peptide, that illustrates use of the fix cmap command.
@ -93,19 +94,27 @@ the note below about how to include the CMAP energy when performing an
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
This fix writes the list of CMAP cross-terms to :doc:`binary restart files <restart>`. See the :doc:`read_restart <read_restart>` command
This fix writes the list of CMAP cross-terms to :doc:`binary restart
files <restart>`. See the :doc:`read_restart <read_restart>` command
for info on how to re-specify a fix in an input script that reads a
restart file, so that the operation of the fix continues in an
uninterrupted fashion.
The :doc:`fix_modify <fix_modify>` *energy* option is supported by this
fix to add the potential "energy" of the CMAP interactions system's
potential energy as part of :doc:`thermodynamic output <thermo_style>`.
The :doc:`fix_modify <fix_modify>` *energy* option is supported by
this fix to add the potential energy of the CMAP interactions to both
the global potential energy and peratom potential energies of the
system as part of :doc:`thermodynamic output <thermo_style>` or
output by the :doc:`compute pe/atom <compute_pe_atom>` command. The
default setting for this fix is :doc:`fix_modify energy yes
<fix_modify>`.
The :doc:`fix_modify <fix_modify>` *virial* option is supported by this
fix to add the contribution due to the interaction between atoms to
the system's virial as part of :doc:`thermodynamic output <thermo_style>`.
The default is *virial yes*
The :doc:`fix_modify <fix_modify>` *virial* option is supported by
this fix to add the contribution due to the CMAP interactions to both
the global pressure and per-atom stress of the system via the
:doc:`compute pressure <compute_pressure>` and :doc:`compute
stress/atom <compute_stress_atom>` commands. The former can be
accessed by :doc:`thermodynamic output <thermo_style>`. The default
setting for this fix is :doc:`fix_modify virial yes <fix_modify>`.
This fix computes a global scalar which can be accessed by various
:doc:`output commands <Howto_output>`. The scalar is the potential
@ -121,8 +130,8 @@ invoked by the :doc:`minimize <minimize>` command.
.. note::
If you want the potential energy associated with the CMAP terms
forces to be included in the total potential energy of the system (the
quantity being minimized), you MUST enable the
forces to be included in the total potential energy of the system
(the quantity being minimized), you MUST not disable the
:doc:`fix_modify <fix_modify>` *energy* option for this fix.
Restrictions

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