Compare commits

...

359 Commits

Author SHA1 Message Date
267782d689 Merge pull request #1459 from akohlmey/next-patch-release
Step version string for next patch release
2019-05-14 21:30:28 -04:00
f2b293d93b Merge pull request #1460 from akohlmey/collected-small-changes
Some more small changes
2019-05-14 17:55:36 -04:00
6e842ba84a fix typo 2019-05-14 17:36:26 -04:00
30dc7f70b5 correct repeated words in docs 2019-05-14 17:13:46 -04:00
98702cc0b9 Merge pull request #1461 from lammps/doc-tweak-hyper
add missing formatting info
2019-05-14 17:10:23 -04:00
67532684f9 add missing formatting info 2019-05-14 14:02:54 -06:00
2c51511325 update logfiles for SPIN package with cubic anisotropy 2019-05-14 15:49:41 -04:00
1d5ada136a should set one_coeff flag to 1 in potentials requiring 'pair_coeff * *' 2019-05-14 15:24:37 -04:00
4a4dcef7b7 whitespace cleanup in pair style e3b 2019-05-14 15:24:37 -04:00
4dc90b367e Merge pull request #1458 from wmbrownIntel/user-intel-bigbig
USER-INTEL: Changes to support LAMMPS_BIGBIG in USER-INTEL + fixed check for per-atom virials + fixed check for exclusion with offload.
2019-05-14 15:09:06 -04:00
091dbfa265 Merge pull request #1457 from julient31/fix_cubic_aniso
Adding a cubic anisotropy in the SPIN package, documentation corrections
2019-05-14 15:08:21 -04:00
a26dc1b356 allow using -DLAMMPS_BIGBIG also with CMake 2019-05-14 14:35:41 -04:00
d8fb17e2cb Step version string for next patch release 2019-05-14 10:01:43 -04:00
322c244bec Merge pull request #1456 from akohlmey/fix-mapping-for-KC-etc
Fix element mapping and a few other issues for interlayer potentials
2019-05-13 21:12:58 -04:00
60f6c3f3dc Merge pull request #1428 from sstrong99/e3b
add E3B water model to USER-MISC package
2019-05-13 21:12:26 -04:00
c911a44298 Merge pull request #1450 from akohlmey/cmake-latte-pass-cmake-settings
Pass more cmake settings to LATTE downloaded library build
2019-05-13 21:11:24 -04:00
52e3aeab33 revert incorrect changes in commands_list.txt 2019-05-13 21:05:26 -04:00
3a8b3a119f Merge pull request #1451 from rbberger/atom_vec_bond_kokkos_fix
Add missing molecule_flag=1 in atom_vec_bond_kokkos
2019-05-13 20:59:51 -04:00
8e18f2bf7e Commit2 JT 051319
- corrected doc issues
2019-05-13 17:32:44 -06:00
11f223416c Commit JT 051319
- added a cubic anisotropy in fix_precession_spin
- added associated doc and examples
- corrected neb/spin commands in doc/src/
- added tools/spin/ description
2019-05-13 16:59:39 -06:00
d3d4b420ba USER-INTEL: Changes to support LAMMPS_BIGBIG in USER-INTEL + fixed check for per-atom virials + fixed check for exclusion with offload. 2019-05-13 05:02:46 -07:00
805cc18b2d Merge branch 'master' into e3b 2019-05-12 22:22:31 -05:00
e228555aed more consistency changes for interlayer potentials 2019-05-11 17:05:27 -04:00
8eeb92b82b restore original coeff() code with one modification. now setflag is only set for pairs of types that both are mapped to elements (and thus not NULL) 2019-05-11 17:04:57 -04:00
c581e9349a update interlayer potential examples for now requiring CH.rebo potential file with rebo pair style 2019-05-11 16:46:21 -04:00
b2942cbafa correctly handle coeff statement for ilp/graphene/hbn 2019-05-10 21:07:54 -04:00
c86359966c error out when offset flag is unset via "pair_modify shift no" 2019-05-10 21:07:05 -04:00
a7c9560dc1 Merge pull request #1453 from mjwen/pair_drip
add pair style drip
2019-05-10 20:44:28 -04:00
03505a6c48 Merge pull request #1455 from lammps/doc-tweak
mis-labeling of some rigid fixes
2019-05-10 20:42:39 -04:00
238382e0ca fix handline of setflag and coeffs to correctly work with system, that have extra atom types. 2019-05-10 10:26:33 -04:00
2bc089db27 mis-labeling of some rigid fixes 2019-05-10 07:42:11 -06:00
799f4061f4 Merge pull request #3 from akohlmey/pair_drip
Update to master with refactored REBO pair style and adjusted examples
2019-05-09 12:18:11 -05:00
2f580380a4 adjust drip potential example for new requirements for pair style rebo. recreate log files 2019-05-09 12:29:38 -04:00
47cf17e5c8 Merge branch 'master' into pair_drip 2019-05-09 12:19:41 -04:00
928600a878 Merge pull request #1452 from akohlmey/github-rebo-bugfix
Resubmission of REBO bugfix for easier review
2019-05-09 12:18:05 -04:00
7b2d526f86 Merge pull request #1448 from akohlmey/collected-small-changes
Collected small changes and bugfixes
2019-05-09 12:17:19 -04:00
0034473e66 update legacy pdf manual input config 2019-05-08 10:19:21 -04:00
da75fc3eaa incorporate compute_pe_e3b into compute_pair 2019-05-08 09:05:09 -05:00
711cd4122f corrections to documentation and implementation of pair styles lj/mdf, buck/mdf, and lennard/mdf 2019-05-07 19:52:00 -04:00
45e6ed018e correct formula for lennard/mdf potential 2019-05-07 19:45:13 -04:00
8c193b8c42 add support for write_data/write_coeff to pair style lj/mdf 2019-05-07 19:28:19 -04:00
12f8834b80 correction of the incomplete implementation warning in write_coeff 2019-05-07 19:26:57 -04:00
6c3cae8823 remove unused vars 2019-05-07 15:37:45 -05:00
1d1611ce44 init del3 to silence valgrind errors 2019-05-07 15:35:37 -05:00
a87d8e124f Merge pull request #1449 from akohlmey/fix-print-w-variable-step
Support using a variable instead of a constant interval for fix print
2019-05-06 12:10:42 -04:00
cc30688137 Merge pull request #1364 from stanmoore1/kk_binsize
Change defaults for KOKKOS package
2019-05-06 12:10:08 -04:00
b3f4e2055e Merge pull request #1438 from giacomofiorin/colvars-update
Update Colvars library to version 2019-04-26
2019-05-06 12:08:50 -04:00
8212dca609 Merge pull request #1447 from ohenrich/user-cgdna
Homogenised label of relative hbond and stk strength to conform with oxDNA literature
2019-05-06 12:07:41 -04:00
319ed5dd48 Merge pull request #2 from akohlmey/pair_drip
Silence warnings about unused variables and parameters, minor tweaks
2019-05-05 09:29:00 -05:00
bac8b267df make sure fix deform related variables are always initialized to avoid issues with the DomainOMP class. 2019-05-05 10:26:27 -04:00
da6e576ffd silence warnings about unused variables and parameters, minor tweaks 2019-05-05 10:17:45 -04:00
f163d7dc9b typo fix 2019-05-05 08:56:15 -05:00
a354b52e3c Merge pull request #1 from akohlmey/pair_drip
Pair drip updates required for merging into LAMMPS upstream
2019-05-05 08:41:51 -05:00
0a4b0cf019 add pair style drip to .gitignore 2019-05-05 09:20:10 -04:00
4d4219ca3e integrate drip pair style more closely into manual 2019-05-05 08:59:03 -04:00
d86a7b95de fix spelling issues 2019-05-05 08:48:27 -04:00
db54b03751 Force line length to 80 2019-05-04 22:55:22 -05:00
24e41bc085 Update doc and examples due to the change of parameters 2019-05-04 22:24:05 -05:00
c28cf9f742 set variant flag in USER-INTEL (AI)REBO(-M) styles 2019-05-04 20:53:43 -04:00
fd3eade6d2 update reference date and examples for changes in REBO 2019-05-04 20:42:36 -04:00
1214e6ea79 align USER-INTEL versions of REBO/AIREBO with MANYBODY implementation 2019-05-04 20:08:34 -04:00
c2b2be5d6f Merge branch 'master' into github-rebo-bugfix 2019-05-04 19:09:52 -04:00
81d3fa77bb Add missing molecule_flag=1 in atom_vec_bond_kokkos 2019-05-04 17:42:21 -04:00
a7226bd93d remove unused variables 2019-05-04 15:12:31 -04:00
66f7f2a5ef pass more cmake settings to LATTE downloaded library build 2019-05-04 15:11:53 -04:00
a70f9c4f95 support using a variable instead of a constant interval for fix print 2019-05-04 13:47:57 -04:00
3baf15ed6f apply bugfix from PR #1446 to allow switching from variable thermo output back to evenly spaced 2019-05-04 11:35:18 -04:00
d7dd78126c Homogenised label of relative hbond and stk strength to conform with oxDNA literature 2019-05-02 16:48:41 +01:00
97ce76e759 Merge pull request #1444 from akohlmey/fix-intel-lrt-bug
CMake update for verlet/lrt/intel
2019-05-01 16:19:37 -04:00
d7da1db745 teach CMake that verlet/lrt/intel depends on KSPACE 2019-05-01 08:20:24 -04:00
4f3c87f8c4 Merge pull request #1423 from akohlmey/next-patch-release
Step version string for next patch release
2019-04-30 19:52:35 -04:00
02d5f17a18 Merge pull request #1437 from lammps/gpu_cmake_bugfix
Fix GenerateOpenCLHeader CMake utilitiy to avoid uncompilable CL code
2019-04-30 19:05:59 -04:00
7e00acce53 Update Colvars library to version 2019-04-26
The following is list of relevant issues fixed and improvements:

Fix forces and missing output of runtime histogram for histogramRestraint
https://github.com/Colvars/colvars/pull/246

Use fix_modify to add configuration to Colvars:
https://github.com/Colvars/colvars/pull/216

Fix componentCoeff and name not working with orientationAngle components:
https://github.com/Colvars/colvars/issues/213

Fix 1-timestep offset with extendedLagrangian:
https://github.com/Colvars/colvars/pull/210

Changes to improve compiler support:
https://github.com/Colvars/colvars/pull/203

Fix ignored anisotropic cutoff3 for groupCoordNum:
https://github.com/Colvars/colvars/pull/202

New dipoleMagnitude variable:
https://github.com/Colvars/colvars/pull/198

Parser improvements:
https://github.com/Colvars/colvars/pull/196
2019-04-30 13:46:37 -04:00
7fbd409f5b Fix GenerateOpenCLHeader CMake utilitiy to avoid uncompilable CL code 2019-04-30 12:59:27 -04:00
faa0da9976 Merge pull request #1434 from ellio167/reaxc-multi-instance-fix
Reaxc multi instance fix
2019-04-30 12:03:43 -04:00
e08080cae5 Merge pull request #1436 from rbberger/gpu_opencl_bugfixes
GPU package bugfixes
2019-04-30 12:02:52 -04:00
7b7f405d2c Merge remote-tracking branch 'origin/master' into gpu_opencl_bugfixes 2019-04-30 01:39:19 -04:00
66d94572e0 Add missing includes to OpenCL CMake builds of re_squared and tersoff kernels 2019-04-30 01:37:27 -04:00
8145c5028d Fix OpenCL compilation errors due to bad comments in macros 2019-04-30 00:44:12 -04:00
0005ee3e93 Merge pull request #1435 from akohlmey/collected-small-changes
Collected small changes for next patch release
2019-04-29 20:19:50 -04:00
8d9697dbf6 Merge pull request #1420 from dsbolin/gran_mods
Updates and bugfixes to GRANULAR package
2019-04-29 14:16:25 -04:00
f052509015 Merge pull request #1421 from julient31/gneb_spin
Adding a GNEB implementation in the SPIN package
2019-04-29 14:14:58 -04:00
97baee4931 Commit2 JT 042919
- modified energy/torque tolerance for faster convergence in
examples/SPIN/gneb/skyrmion/in.gneb.skyrmion
2019-04-29 08:23:57 -06:00
96e51d11ad equilibrium angle must be converted to radians in angle style table 2019-04-29 10:09:33 -04:00
0bb2e004ab Commit JT 042919
- corrections Axel 1
2019-04-29 08:08:56 -06:00
98daf8f825 optimize granular examples and include logs 2019-04-29 09:48:57 -04:00
af8a71b1ad while space and source formatting cleanup 2019-04-29 09:17:29 -04:00
0fac0e18d1 no need for libm or GSL to compile the interpolate code 2019-04-27 17:50:12 -04:00
8102fdcf24 make sure r3inv is initialized when lj and coul cutoff are different 2019-04-27 14:51:37 -04:00
5d9e85d840 make sure r6inv is initialized and not computed multiple times 2019-04-27 14:43:13 -04:00
d190b76075 remove unused custom constructor 2019-04-27 13:22:14 -04:00
930748f6f2 change neb/spin class names to better match the conventions used in the rest of LAMMPS 2019-04-27 13:16:37 -04:00
6fc2bda01c some whitespace cleanup 2019-04-27 07:52:25 -04:00
8c6e1e2448 fix python package issue updating the time stamp on the wrong file 2019-04-26 15:52:56 -04:00
809bd3d1bb update .gitignore for recent additions 2019-04-26 15:52:16 -04:00
d9fc4a152b simplify handling of fix id for fix reaxc. remove shadowed variable. 2019-04-26 14:25:57 -04:00
d3327ffd16 add new optional styles to .gitignore 2019-04-25 19:03:00 -04:00
795cdf456f simplify example and skip the system generation step, so it gives consistent results in serial and parallel 2019-04-25 19:02:35 -04:00
e481c5f35b Merge branch 'e3b' of github.com:sstrong99/lammps into e3b 2019-04-25 17:49:50 -05:00
5df8a42e24 dont set manybody_flag 2019-04-25 17:49:38 -05:00
21d0a16b6f minor tweak 2019-04-25 18:06:09 -04:00
a9388e86e3 add one more false positive 2019-04-25 18:00:27 -04:00
80af0281d1 replace non-ASCII characters 2019-04-25 17:54:27 -04:00
0e7d647aeb Switch to sprintf() instead of std::string etc. 2019-04-25 16:50:17 -05:00
8882436078 add e3b styles to legacy documentation build 2019-04-25 17:49:35 -04:00
ceff147fc0 Merge pull request #1427 from e-kwsm/fix-typo
Fix typo [skip ci]
2019-04-25 17:01:17 -04:00
8d9a44a837 set april 30th for next patch release 2019-04-25 16:55:46 -04:00
e3d7b52b80 Merge pull request #1431 from Adrian-Diaz/print-error-messages
flushing screen and logfile stdio buffers to see more error messages for error->one calls
2019-04-25 16:51:37 -04:00
c55174ac1d Merge pull request #1424 from julient31/setforce_spin
Adding a fix setforce/spin to the SPIN package
2019-04-25 16:37:41 -04:00
b93d9e6f7f reaxc: Fixes to allow multiple object instances
Move LR into system structure
Make fix_reaxc have unique id for each instance

closes #1432
2019-04-25 10:44:08 -05:00
16fd5904ed Commit2 JT 042519
- slight correction in doc/src/command_list.txt
2019-04-25 09:31:57 -06:00
7c3f619e13 Commit JT 042519
- moved examples/SPIN/gneb/interpolate/ toward
tools/spin/interpolate/gneb
- added gneb in the command files in doc/src
- modified the error messages in neb_spin.h/cpp
2019-04-25 09:18:33 -06:00
47d4aa6803 add new false positives 2019-04-24 17:35:17 -05:00
f548e2717e add new false positives 2019-04-24 17:31:44 -05:00
6088f2a6a2 One more bug in pair_granular.cpp, where JKR cutoff was incorrectly computed. Thanks to Ishan Srivastava for finding this one 2019-04-23 22:58:42 -06:00
0673f6f2b9 Fixes a bug in pair granular that caused JKR cutoffs to be set incorrectly when multiple types with multiple cohesion values are used 2019-04-23 15:52:32 -06:00
4c19eab64c Bugfix no 3 nearest neighbors for ghost atoms near boundary 2019-04-23 14:39:47 -05:00
c6d0f7ca87 Update equations 2019-04-19 14:27:03 -05:00
ba7882c1ff Add parameter file and example 2019-04-19 14:17:57 -05:00
d3c5d7e423 Add documentation 2019-04-19 13:56:26 -05:00
dec1ad19b5 added e3b.jpg 2019-04-19 10:33:51 -05:00
37d84de09c flushing buffer to see more messages for error->one calls 2019-04-18 15:55:21 -06:00
941281e9e9 fixed isnan error 2019-04-18 10:11:00 -05:00
e700ccd4df Update header 2019-04-17 22:11:24 -05:00
4621af4b9d Modify to accept NULL for pair_coeff 2019-04-17 21:34:55 -05:00
f27ed871f9 Uncrustify code 2019-04-17 18:11:31 -05:00
16bb8a1439 Clean up comments 2019-04-17 16:58:18 -05:00
d6f3a95599 Remove unused variables and methods 2019-04-17 10:53:45 -05:00
cb30414820 Add contribution to virial and atom virial 2019-04-17 10:05:05 -05:00
ebee2b588c Merge branch 'gran_mods' of github.com:dsbolin/lammps into gran_mods 2019-04-16 17:00:10 -06:00
4b2388339e Fixes bug in calculation of relative tangential velocity for granular wall particle interactions.
Thanks to Andrew Santos for providing a test case that reveals this.
2019-04-16 16:59:21 -06:00
1d4372c24d Fixes bug in calculation of relative tangential velocity for granular wall particle interactions 2019-04-16 16:40:41 -06:00
82a87322ed Get the same forces as KIM implementation 2019-04-16 16:54:17 -05:00
5fb164d586 Get total energy correct 2019-04-16 15:04:16 -05:00
4c565db9af update contrib authors 2019-04-16 11:50:33 -05:00
0eebb31903 update contact info 2019-04-16 11:48:45 -05:00
69e7a2a237 add e3b water model 2019-04-16 11:32:47 -05:00
835fce7a5e Copy all function from KIM implementation to PairDRIP 2019-04-16 10:51:20 -05:00
fdaa3f48e9 Modify all methods other than compute 2019-04-15 22:38:51 -05:00
2bdd9b7544 Remove single 2019-04-15 20:14:10 -05:00
100f17077c Create pair_drip by copying KC files 2019-04-15 19:27:41 -05:00
0b24a3d830 Added a 'mass_velocity' damping option to the new granular pair styles and granular wall interaction.
This is to more closely match the old style pair gran/hooke/* damping behavior.
Updated doc page accordingly, as well as adding some examples on how to match old pair gran/* styles.
2019-04-15 16:14:02 -06:00
2e9404acdf Fix typo [skip ci] 2019-04-15 16:06:36 +09:00
d0826f2838 Added granular example input scripts 2019-04-13 23:52:30 -06:00
d33a30806a Minor code clean up in pair_granular.cpp 2019-04-13 23:37:46 -06:00
14d3d09de3 Fixed several errors in granular doc pages, particularly coefficients in examples 2019-04-13 23:36:40 -06:00
5e3929de56 Commit2 JT 041019
- correct spelling in Howto_spin.txt
2019-04-10 13:35:58 -06:00
70c816aa02 Commit JT 041019
- corrected setforce/spin
- added an example
- added the documentation (in setforce)
- updated the Howto_spin documentation
2019-04-10 13:18:33 -06:00
3d7b387786 Commit JT 040919
- first working version of setforce
- modified fix nve/spin to account for it
2019-04-09 16:57:27 -06:00
4af22a723d Fixes several bugs in fix wall/gran, wall/gran/region:
1. Radius of curvature for curved regions was incorrectly used to compute wall-particle overlaps
2. Uninitialized values of rolling and twisting history could produce crashes in
cases that don't initialize these to 0 by default. These are now initialized to 0.
3. Fixed a bug with the use of 'NULL' for specification of the tangential stiffness for
wall/gran and wall/gran/region
2019-04-09 16:40:49 -06:00
915c3a6001 step version number for next patch release 2019-04-09 03:06:04 -04:00
8ec231a8e5 Commit JT 040819
- corrected bug in fix nve/spin (init tables with grow)
- start work for fix setforce/spin
2019-04-08 16:54:25 -06:00
c11b1edc1f Avoid spell checker error 2019-04-08 16:35:36 -06:00
b8ae466999 Commit4 JT 040819
- added unknown names/acronyms in doc/utils/sphinx-config/false_positives.txt
2019-04-08 14:00:49 -06:00
fbda72891c Fix spelling error 2019-04-08 13:41:33 -06:00
ece46dbfa5 Small tweak to Kokkos docs 2019-04-08 13:12:21 -06:00
2bb69773d3 Update Kokkos docs 2019-04-08 13:07:29 -06:00
77d80c84c9 Change defaults for KOKKOS package 2019-04-08 12:37:49 -06:00
aa336c2bb4 Merge branch 'master' into kk_binsize 2019-04-08 12:07:58 -06:00
814b9b9378 Merge branch 'clean-master2' of github.com:julient31/lammps into gneb_spin 2019-04-08 11:26:48 -06:00
1501e9ba8a Commit3 JT 040819
- README and interpolate.c for in examples/SPIN/gneb/interpolate/
2019-04-08 11:22:02 -06:00
57247142d2 Commit2 JT 040819
- finished doc (compiled and spell check)
- compiled with -Wall -Wextra, unused var. removed
2019-04-08 11:08:06 -06:00
1e07ef6f87 Added example for pouring of particles on flat wall with new granular pair style 2019-04-08 09:13:22 -06:00
898860328b Merge pull request #1416 from akohlmey/collected-small-changes
More collected small changes and bug fixes for next patch release
2019-04-08 10:42:10 -04:00
fcb4b75589 Commit JT 040819
- improved documentation neb/spin
2019-04-08 07:24:18 -06:00
cb559659f8 write a full-fledged LAMMPS manpage. 2019-04-07 10:35:00 -04:00
5c5b57be5a minor tweaks 2019-04-07 10:34:25 -04:00
8c4a497af4 set default to automatically download scafacos lib if not found 2019-04-07 06:10:39 -04:00
e57c4c60bd fix spelling issue 2019-04-07 05:59:28 -04:00
13cf357f66 document in README, that msi2lmp is now build alongside LAMMPS 2019-04-07 00:47:10 -04:00
6f7b3643ef document clang/clang++ preset with settings for MPI and OpenMP 2019-04-07 00:46:43 -04:00
e57e4a730b more packages with default-to-download-if-lib-not-found 2019-04-07 00:45:57 -04:00
b40c4d1641 update version number and some reformatting of the LAMMPS manpage 2019-04-06 23:45:01 -04:00
1dd21e6e0c make downloaded LATTE library use the same BLAS/LAPACK as LAMMPS 2019-04-06 23:44:27 -04:00
a6c9a782a4 add manpage for msi2lmp 2019-04-06 23:41:48 -04:00
3b43fc3ea7 install msi2lmp force field files and set environment variable, so they can be found automatically 2019-04-06 20:41:00 -04:00
0d8d8dc0da Merge branch 'master' into collected-small-changes 2019-04-06 19:52:39 -04:00
ce1040a103 Merge pull request #1414 from oywg11/github-tutorial-update
fix two bugs in potential #839
2019-04-06 19:44:11 -04:00
b25657c67b trigger download by default if not found for LATTE package/library 2019-04-06 17:49:56 -04:00
494e76da7d add false positive 2019-04-06 17:29:04 -04:00
cb398bd026 silence some more compiler warnings 2019-04-06 17:23:37 -04:00
72b69783de add download-default-if-not-found logic to voro++ library for VORONOI package 2019-04-06 17:17:17 -04:00
8c02ce7302 silence some compiler warnings 2019-04-06 17:03:40 -04:00
f98aed419c document the 'maxelt' define in pair style meam/c and how to change it 2019-04-06 17:03:24 -04:00
86f4080b71 some dead code removal in pair style kim. 2019-04-06 16:48:29 -04:00
59a4d42231 make default CMake setting for DOWNLOAD_KIM depend on whether the KIM API is found or not 2019-04-06 16:47:48 -04:00
e8289b0024 Merge branch 'find-kim-fix' of https://github.com/ellio167/lammps into collected-small-changes 2019-04-06 16:28:48 -04:00
3070a11041 guard against extracting too many elements from the MEAM library into the statically sized arrays
this will abort with a meaningful error message and people can fix up their LAMMPS binary as needed.
2019-04-06 16:23:10 -04:00
47b7437976 Have FindKIM-API.cmake work in QUIET mode 2019-04-06 15:08:15 -05:00
6643a4ec92 Fixup FindKIM-API.cmake and clean up some v2 remnants 2019-04-06 14:20:21 -05:00
cb27d03c79 stop with error message when computing per-atom stress for reax/c/omp 2019-04-06 11:27:04 -04:00
8683e1ebf8 revert ineffective changes 2019-04-06 11:24:59 -04:00
d6a12f6c3e roll back ineffective changes and add zeroing of allocated storage 2019-04-06 11:22:22 -04:00
efa8c8d58b sanitize file pointer access handling 2019-04-06 11:21:43 -04:00
bcb6e1be4f disable fdotr for virial also for regular pair style reax/c 2019-04-06 09:45:19 -04:00
bca7364ba3 disallow using fdotr for computing virial contributions with reax/c/omp 2019-04-06 09:21:50 -04:00
9334c72c04 clang can be installed supporting OpenMP without having omp.h installed: add check 2019-04-06 08:59:06 -04:00
e629733d0b change error-all to error-one 2019-04-06 10:26:56 +03:00
f10534a721 add code to build msi2lmp with CMake 2019-04-05 23:56:23 -04:00
de0938da39 avoid segfault when catching command line flag errors with EXCEPTIONS enabled 2019-04-05 23:24:43 -04:00
f8018a8bba Commit2 JT 040519
- added angle in doc
- improved doc neb/spin
2019-04-05 16:44:23 -06:00
3d7a4fb945 silence compiler warnings, remove dead code 2019-04-05 17:04:07 -04:00
d17553d8d2 add preset to make it easier to use clang with OpenMP and MPI 2019-04-05 16:52:28 -04:00
e56d69a267 silence compiler warnings 2019-04-05 16:52:03 -04:00
67f8c83661 Merge pull request #1415 from stanmoore1/kk_nh
Fix bug in fix_nh_kokkos
2019-04-05 16:50:08 -04:00
542d8aaf07 Fix bug in fix_nh_kokkos 2019-04-05 14:16:25 -06:00
6e6d350572 correct the spelling 2019-04-05 23:01:28 +03:00
4f459a59a1 correct the spelling 2019-04-05 22:55:40 +03:00
ac7312caf1 Merge pull request #1409 from akohlmey/collected-small-changes
Collected small changes and bugfixes for the next patch release
2019-04-05 15:39:16 -04:00
ed90596849 Merge pull request #1399 from rtoijala/fix-elstop
Add fix electron/stopping to USER-MISC
2019-04-05 15:34:41 -04:00
7f040a3676 Merge pull request #1404 from akohlmey/compute-local-bugfix
Fix bug reported in Issue #1401
2019-04-05 15:34:10 -04:00
da16a7e50b Commit JT 040519
- initial rotation with Rodrigues' formula + exception
- worked on neb_spin documentation
- removed pair/spin warning for neb/spin
2019-04-05 13:22:46 -06:00
815ad4dab2 fix a bug in ILP 2019-04-05 22:04:45 +03:00
05993a79b8 Merge branch 'pair_kim_fix' of https://github.com/ellio167/lammps into collected-small-changes 2019-04-05 11:39:19 -04:00
175f3ee648 Fix pointer assignment in pair_kim
Bug only affects cases where neighbor list needs to be stripped.
Thanks to Mingjian Wen (@mjwen) for finding and reporting this.
2019-04-05 10:14:45 -05:00
2e1da2958d resolve toctree and paper anchor issues 2019-04-05 11:04:11 -04:00
2757e4e6e6 two more false positives 2019-04-05 10:53:41 -04:00
85a0461a48 reword and reformat text in Howto_bioFF.txt a little bit. add warnings about msi2lmp's age and lack of maintenance 2019-04-05 10:53:23 -04:00
20cbe1edff Merge branch 'patch-1' of https://github.com/evoyiatzis/lammps into collected-small-changes 2019-04-05 10:36:53 -04:00
cb272159ba Merge branch 'master' of github.com:lammps/lammps into gran_mods 2019-04-05 07:53:51 -06:00
73b2e1f47c Merge conflict in doc page (newline issue) 2019-04-05 07:53:32 -06:00
5d3801cb12 Include info for COMPASS in the Howto section 2019-04-05 15:50:58 +02:00
383e206cc2 the GCC folks did it again. :-( 2019-04-05 08:00:04 -04:00
8b2a8ad08b fix stupid typo 2019-04-05 06:32:59 -04:00
42e8a7613e stop with error or print a warning when the system or atom ids get to large for reax/c pair styles 2019-04-05 06:29:38 -04:00
4f026b9b38 remove trailing whitespace 2019-04-05 06:14:10 -04:00
76dfcc1dfd Merge branch 'mc-bigbig-fix' of https://github.com/rtoijala/lammps into collected-small-changes 2019-04-05 06:07:54 -04:00
9543335613 Merge branch 'master' into collected-small-changes 2019-04-05 06:05:22 -04:00
f4159ff592 implement different -DLAMMPS_BIGBIG workaround without breaking format 2019-04-05 05:53:19 -04:00
e359e80118 fix bug reported in issue #1410 2019-04-04 22:39:58 -04:00
dbbf198edb more accurate matching of styles using utils::strmatch() 2019-04-04 17:10:27 -04:00
df94e80bb1 silence compiler warnings 2019-04-04 16:52:08 -04:00
4003387fb1 dead code removal 2019-04-04 16:51:59 -04:00
ab5c3b0386 protect against possible buffer overflow 2019-04-04 16:51:37 -04:00
78bab6ee39 make format macros in USER-REAXC compatible with -DLAMMPS_BIGBIG 2019-04-04 16:36:57 -04:00
c52a330a79 update USER-PLUMED support for version 2.5.1 and fix bug in Install.py script 2019-04-04 14:19:53 -04:00
265ad4512d add sanity check on plumed pre-installed path location 2019-04-04 13:18:27 -04:00
605524ab66 Merge pull request #1406 from akohlmey/fix-some-64-bit-integer-issues
Fix some 64 bit integer issues
2019-04-04 12:47:34 -04:00
968ac3d8d7 Merge pull request #1367 from mkanski/reax_better_errors
Removing calls to MPI_Abort from reax/c + a fix for a memory leak
2019-04-04 12:47:02 -04:00
81dd96f970 print more meaningful error message when trying to access individual data from a local array produced by a compute */local 2019-04-04 12:42:54 -04:00
50427ce05d flag intended fallthrough cases for GNU compilers 2019-04-04 09:38:53 -04:00
a9c376f20d use tagint instead of int when communicating atom ids 2019-04-04 09:38:28 -04:00
88d160f86e avoid segfault in Special::angle_trim() if only angles or only dihedrals are defined 2019-04-04 09:13:18 -04:00
8c03f51020 fix 32-bit/64-bit overflow issue in expression 2019-04-04 09:01:39 -04:00
2aa7a150b4 USER-SMD: Use TAGINT_FORMAT where appropriate 2019-04-04 15:53:00 +03:00
6679469220 USER-MANIFOLD: Use TAGINT_FORMAT where appropriate 2019-04-04 15:52:57 +03:00
da77dde04d MC/fix_bond_break: Use TAGINT_FORMAT where appropriate 2019-04-04 14:51:40 +03:00
6ff1fee6d6 more simplifications 2019-04-04 09:54:39 +02:00
619c2322e5 Merge remote-tracking branch 'upstream/master' into fix-elstop 2019-04-04 10:03:36 +03:00
0d78c7b43d fix elstop: Rename to fix electron/stopping 2019-04-04 09:57:15 +03:00
8820467a8b fix wrong column size assignment bug when using optional arguments in some local computes 2019-04-03 15:15:40 -04:00
d4a495151e Simplify access to error in reax/c/omp 2019-04-03 19:40:40 +02:00
e45e92b1cb Commit JT 040319
- improved examples
- start rework gneb init. (Rodrigues' formula)
2019-04-03 11:24:37 -06:00
501558743b Merge with current master 2019-04-03 19:17:15 +02:00
d7a5bf4e16 Repair last commit 2019-04-03 18:52:14 +02:00
1a105253c1 Check the MPI rank differently 2019-04-03 18:24:38 +02:00
f2f49e60bf Make some errors more elaborate + change some error->all to error->one 2019-04-03 18:12:12 +02:00
f73ccc3025 Merge pull request #1402 from akohlmey/collected-small-changes
Collected changes for improving CI testing, CMake, and coding convention compliance
2019-04-03 10:51:40 -04:00
1696432e82 resolve conflict between src/STUBS/mpi.h and lib/message/cslib/src/STUBS_MPI/mpi.h 2019-04-03 01:00:53 -04:00
7372e8fde1 must add STUBS_MPI to cslib includes when compiling without MPI 2019-04-03 00:41:03 -04:00
f17aff6331 add some missing entries to src/USER-MISC/README 2019-04-03 00:24:36 -04:00
537704fdaa eliminate the use of the "using" keyword in headers of the KOKKOS package 2019-04-03 00:13:52 -04:00
52a13f31b3 remove "using namespace" from header 2019-04-03 00:04:12 -04:00
f02b364e6e remove "using namespace" from header and include required header 2019-04-03 00:03:34 -04:00
40f1662c93 reduce compiler warnings 2019-04-02 23:44:00 -04:00
6cb120d691 get rid of "using" in USER-REAXC header 2019-04-02 23:20:53 -04:00
a149fdb420 forgot MESSAGE package in all_on/off.cmake preset 2019-04-02 23:19:37 -04:00
b1070f4703 must add USER-SCAFACOS to nolib.cmake preset, as it requires GSL 2019-04-02 23:10:59 -04:00
778537e734 update micelle example for improved reproducibility 2019-04-02 22:32:15 -04:00
921d3dadf8 Merge pull request #1400 from akohlmey/collected-small-changes
Refactor USER-INTEL support in CMake and support Linux-2-Windows cross-compiling with CMake
2019-04-02 17:48:21 -04:00
bd923d8bd4 fix second typo in the same word. i need a break... :-( 2019-04-02 17:33:35 -04:00
6411ff8359 transfer MPI/OpenMP selection from LAMMPS to downloaded Plumed library configuration 2019-04-02 17:25:26 -04:00
4a003644fe fix typo 2019-04-02 16:41:02 -04:00
365166fef0 print warning messages about calls to self only once 2019-04-02 16:01:42 -04:00
34b023456b add message about -DLAMMPS_BIGBIG incompatibility of scatter/gather functions 2019-04-02 15:28:48 -04:00
978b52ee8c add warning/status messages about skipping TBB malloc and MKL RNG 2019-04-02 15:06:56 -04:00
98bd720c68 improved formatting of cmake settings and presets related docs 2019-04-02 14:56:51 -04:00
4824992a1e update documentation for recent changes to CMake presets 2019-04-02 14:31:13 -04:00
5a75125426 add some popular packages requiring libraries to most.cmake preset 2019-04-02 14:30:34 -04:00
cb5c3f900e add minimal.cmake and most.cmake presets 2019-04-02 12:41:12 -04:00
74ce164457 restore lost edit to all_on.cmake and all_off.cmake that syncs the list of packages 2019-04-02 12:06:51 -04:00
3eab343821 give access to LAMMPS object and wrap in macros for optional exception handling 2019-04-02 11:49:08 -04:00
fd7c680654 the lammps_gather_atom*() and lammps_scatter_atom() library functions are not compatible with -DLAMMPS_BIGBIG. divert to dummy functions resulting in error exists. 2019-04-02 11:39:46 -04:00
764fb2522b abort already in cmake when including USER-INTEL with -DLAMMPS_BIGBIG 2019-04-02 11:21:25 -04:00
ef184c9b1b remove presets, that try to mimic settings from the conventional build, but make little sense with cmake 2019-04-02 09:34:03 -04:00
0ab65c0343 update docs for building LAMMPS for windows 2019-04-02 07:12:55 -04:00
800f3a81b1 update documentation for changes in USER-INTEL support in CMake 2019-04-02 06:59:19 -04:00
91f3a94851 fix typo in docs 2019-04-02 05:49:25 -04:00
d1cb8970d5 fix elstop: Remove unused includes 2019-04-02 09:29:27 +03:00
d3ea115436 Tweaks to doc page 2019-04-01 22:13:49 -06:00
c044eeb482 update nolib.cmake and change it so it disables all packages requiring some external library or equivalent 2019-04-01 22:23:36 -04:00
2fc7395c14 add some comments to updated all-on / all-off presets 2019-04-01 22:22:31 -04:00
719a74a02f must include omp.h header when using OpenMP API functions 2019-04-01 22:10:55 -04:00
b1badb6555 update all-on and all-off presets for recently added and removed packages 2019-04-01 22:09:58 -04:00
0b8332cedf Commit2 JT 040119
- improved verbose output
- work on examples
2019-04-01 17:52:59 -06:00
200aa2d06f missed a few packages in cross-compiler preset 2019-04-01 18:50:53 -04:00
3a0b108f91 reformat 2019-04-01 18:22:06 -04:00
677974573a Merge branch 'clean-master2' of github.com:julient31/lammps into gneb_spin 2019-04-01 16:12:11 -06:00
76b848bb0a include USER-INTEL, but need to disable support for LRT mode 2019-04-01 17:58:19 -04:00
a0e5d14990 Commit JT 040119
- corrected tangent vector projection
- output verbose (Gradidottan)
2019-04-01 15:53:36 -06:00
35129c0881 posix_memalign() does not exist on windows, so we have to workaround using it with USER-INTEL 2019-04-01 17:51:53 -04:00
70ae5f41e3 tweaks for compiling USER-INTEL in cpu mode on Windows with GCC 2019-04-01 17:46:25 -04:00
a7bb772db7 Merge branch 'refactor-user-intel-cmake' into collected-small-changes 2019-04-01 17:39:43 -04:00
8d8f0af7a6 add download flags to mingw preset 2019-04-01 17:38:53 -04:00
d5aa60dbfe skip inline function optimizations for windows when compiling with mingw 2019-04-01 17:23:27 -04:00
b7aecc0d59 avoid linking with -ldl on windows, as it is not needed or supported 2019-04-01 17:22:53 -04:00
799c16a8b2 restore a removed check + print some warnings only once 2019-04-01 17:04:09 +02:00
adbc64b45e Cleaning includes + changing error->all to error->one 2019-04-01 16:34:34 +02:00
2e7316a9e3 fix another windows portability issue in USER-PTM by adding missing header include 2019-04-01 08:11:22 -04:00
a8e5af3cb4 fix elstop: Inline kinetic energy computation 2019-04-01 12:59:25 +03:00
053bdea234 fix elstop: Use inline LaTeX for equation 2019-04-01 12:27:50 +03:00
7688ead60f add pair style granular to pair style overview page in manual 2019-04-01 04:42:56 -04:00
61d4b7a47f Add Kai as spelling false positive 2019-04-01 09:14:47 +03:00
3bf4cd9c01 major refactor of USER-INTEL support in CMake
- decouple from USER-OMP
- decouple from OpenMP support
- make MKL and TBB optional
- support compilers other than Intel (but print warning about bad performance)
- expose Long-range thread support selection to CMake
- fix bugs and typos and add missing code, so that it actually compiles and includes all styles
2019-03-31 17:17:07 -04:00
4d3c1785c6 add utility function to add custom integrate style 2019-03-31 17:12:11 -04:00
fa407c05a1 neither KOKKOS nor USER-INTEL require OpenMP; they can be built without 2019-03-31 15:00:53 -04:00
971bce7428 address formatting issue in pair granular docs 2019-03-30 23:33:54 -04:00
5065350081 improve kim-query documentation 2019-03-30 23:19:31 -04:00
74489621c4 correct misleading indentation to follow syntax 2019-03-30 22:35:41 -04:00
585403d650 Merge pull request #1397 from ellio167/kim-api-fix-1396
Rename FindKIM-API.cmake.in to FindKIM-API.cmake
2019-03-30 22:00:17 -04:00
a28ae7c2c0 Rename FindKIM-API.cmake.in to FindKIM-API.cmake
Fixes: #1396
2019-03-30 13:56:02 -05:00
44fe8330b9 Commit JT 032719
- commit before wok output
2019-03-27 14:59:12 -06:00
3cabfd13cd Commit JT 032619
- finish merge of min_spin.cpp
- test output
2019-03-26 12:51:51 -06:00
b8747ce8fb Merge branch 'clean-master2' of github.com:julient31/lammps into gneb_spin
Conflicts:
	doc/src/min_modify.txt
	doc/src/min_spin.txt
	examples/SPIN/spinmin/in.spinmin.bfo
	examples/SPIN/spinmin/in.spinmin.iron
	src/SPIN/fix_precession_spin.cpp
	src/SPIN/min_spin.cpp
	src/SPIN/min_spin.h
	src/SPIN/pair_spin_dmi.cpp
	src/SPIN/pair_spin_exchange.cpp
2019-03-26 10:59:21 -06:00
676370ade7 Commit JT 032619
- added citeme in neb/spin
- started work on distance output
2019-03-26 07:21:16 -06:00
8c99752cec Add fix elstop to USER-MISC
Implements inelastic energy loss for fast particles in solids.
2019-03-26 10:08:20 +02:00
eedc88eb9b MPI_Abort removed from reax/c/kk + fixed some declarations 2019-03-25 18:01:31 +01:00
88755aefca Added support for reax/c/omp 2019-03-25 17:44:52 +01:00
a89a2de9d4 Removed unnecessary MPI_comm 2019-03-25 16:45:59 +01:00
83e458af0b Cleaning changes 2 2019-03-25 15:22:20 +01:00
99acb4ac54 Cleaning changes 1 2019-03-25 15:00:52 +01:00
f557b12e03 Merge branch 'clean-master2' of github.com:julient31/lammps into gneb_spin 2019-03-25 07:34:38 -06:00
111ff4475e Pointer moved to reax lists 2019-03-25 14:18:55 +01:00
c23ace9c97 Commit JT 032219
- fixed bug 1: precession_spin had no min_setup
- fixed bug 2: incorrect init of spins in neb/spin
- improved doc min_spin.txt (added eqs, and connected to related
files).
2019-03-22 11:52:09 -06:00
2cbf56846a Commit JT 032019
- moved gneb files from src/REPLICA to src/SPIN
- changed name of min/spin
- implemented read_param in min.cpp and min_spin.cpp
- set sp_flag tests in min_spin.cpp and neb_spin.cpp
2019-03-20 10:41:36 -06:00
0d4dbb8d73 Merge branch 'clean-master2' of github.com:julient31/lammps into gneb_spin 2019-03-19 09:01:27 -06:00
194e11c329 Commit JT 031919
- bug with sk sim
- commit/push before pull up-to-date SPIN from master
2019-03-19 08:12:49 -06:00
d66b07dabe Commit2 JT 031419
- commit before solo tests
2019-03-14 15:39:45 -06:00
033a5c2721 Commit JT 031419
- cleaned fix_neb_spin
- first working version
2019-03-14 11:07:24 -06:00
8c50c3d7c8 Commit JT 031319
- improved gneb functions
- correct name in fix_neb (Weinan)
2019-03-13 17:02:40 -06:00
f6fb8b220d Commit 2 JT 031219
- modified examples (gneb and spinmin now distinct)
- started documention for spinmin
2019-03-12 16:59:13 -06:00
0d73fe99fd Update Kokkos docs 2019-03-12 15:34:12 -06:00
b51d06b3ea Change default binsize for Kokkos if running on GPUs 2019-03-12 15:33:28 -06:00
75ddde438c Commit JT 031219
- correct errors in fix_prec_spin
- clean version of spinmin
2019-03-12 14:38:49 -06:00
3a4bb6f980 All errors and warning are now printed through LAMMPS 2019-03-12 20:19:56 +01:00
cc2b5fbb80 Commit JT 031119
- add min_post_force in precession
2019-03-11 17:37:44 -06:00
5fff18932d Commit 2 JT 031119
- new input files gneb and spinmin
2019-03-11 13:23:55 -06:00
14a00662e6 Commit JT 031119
- first working version of spinmin
2019-03-11 13:04:03 -06:00
146e2f283a Better error handling in reaxc_forces 2019-03-05 19:11:33 +01:00
edd4b0cf25 Commit JT 030419
- added minspin
- modifs before co
2019-03-04 07:35:02 -07:00
e96878a70e Commit JT 020619
- correction gneb/spin
- run but do not converge yet
- check forces
2019-02-06 11:35:33 -07:00
9fcd69921f Commit JT 020419
- neb/spin implemneted
- rotational initial states to be implemented
- climbing image to be implemented
2019-02-04 11:27:00 -07:00
08b1728a96 Commit JT 012919
- commit tuesday evening, second day imp.
- dev. fix_neb_spin
2019-01-29 13:05:03 -07:00
41ccf832bf update log files 2018-12-30 04:30:58 -05:00
6d5ab3dac1 Merge branch 'github-rebo-bugfix' of https://github.com/CF17/lammps into test-rebo
# Conflicts:
#	examples/airebo/log.23Jun17.airebo-m.g++.1
#	examples/airebo/log.23Jun17.airebo-m.g++.4
#	examples/airebo/log.23Jun17.airebo.g++.1
#	examples/airebo/log.23Jun17.airebo.g++.4
#	examples/airebo/log.27Nov18.airebo-m.g++.1
#	examples/airebo/log.27Nov18.airebo-m.g++.4
#	examples/airebo/log.27Nov18.airebo.g++.1
#	examples/airebo/log.27Nov18.airebo.g++.4
#	examples/airebo/log.29Jun18.airebo-m.g++.1
#	examples/airebo/log.29Jun18.airebo-m.g++.4
#	examples/airebo/log.29Jun18.airebo.g++.1
#	examples/airebo/log.29Jun18.airebo.g++.4
2018-12-30 03:44:38 -05:00
e51720a2de add code to detect inconistent use of AIREBO/REBO potential files 2018-11-20 13:59:14 -05:00
dcffeb546f update AIREBO/REBO examples and provide references for rebo and airebo with LJ and TORSION turned off 2018-11-20 13:56:46 -05:00
1235e77199 implemented recommended change to remove global class member 2018-11-20 13:56:46 -05:00
c59b3439c6 changes the values of some parameters in REBO in accordance to the original Brenner paper 2018-11-20 13:56:46 -05:00
417 changed files with 62765 additions and 7284 deletions

View File

@ -320,10 +320,15 @@ pkg_depends(USER-LB MPI)
pkg_depends(USER-PHONON KSPACE)
pkg_depends(USER-SCAFACOS MPI)
include(CheckIncludeFileCXX)
find_package(OpenMP QUIET)
option(BUILD_OMP "Build with OpenMP support" ${OpenMP_FOUND})
if(BUILD_OMP OR PKG_KOKKOS OR PKG_USER-INTEL)
if(BUILD_OMP)
find_package(OpenMP REQUIRED)
check_include_file_cxx(omp.h HAVE_OMP_H_INCLUDE)
if(NOT HAVE_OMP_H_INCLUDE)
message(FATAL_ERROR "Cannot find required 'omp.h' header file")
endif()
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()
@ -367,7 +372,7 @@ if(PKG_KSPACE)
endif()
endif()
if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE)
if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-PLUMED OR PKG_USER-QUIP OR PKG_LATTE)
find_package(LAPACK)
find_package(BLAS)
if(NOT LAPACK_FOUND OR NOT BLAS_FOUND)
@ -443,7 +448,13 @@ endif()
if(PKG_VORONOI)
option(DOWNLOAD_VORO "Download and compile the Voro++ library instead of using an already installed one" OFF)
find_package(VORO)
if(VORO_FOUND)
set(DOWNLOAD_VORO_DEFAULT OFF)
else()
set(DOWNLOAD_VORO_DEFAULT ON)
endif()
option(DOWNLOAD_VORO "Download and compile the Voro++ library instead of using an already installed one" ${DOWNLOAD_VORO_DEFAULT})
if(DOWNLOAD_VORO)
message(STATUS "Voro++ download requested - we will build our own")
include(ExternalProject)
@ -476,7 +487,13 @@ if(PKG_VORONOI)
endif()
if(PKG_LATTE)
option(DOWNLOAD_LATTE "Download the LATTE library instead of using an already installed one" OFF)
find_package(LATTE)
if(LATTE_FOUND)
set(DOWNLOAD_LATTE_DEFAULT OFF)
else()
set(DOWNLOAD_LATTE_DEFAULT ON)
endif()
option(DOWNLOAD_LATTE "Download the LATTE library instead of using an already installed one" ${DOWNLOAD_LATTE_DEFAULT})
if(DOWNLOAD_LATTE)
if (CMAKE_VERSION VERSION_LESS "3.7") # due to SOURCE_SUBDIR
message(FATAL_ERROR "For downlading LATTE you need at least cmake-3.7")
@ -488,6 +505,9 @@ if(PKG_LATTE)
URL_MD5 85ac414fdada2d04619c8f936344df14
SOURCE_SUBDIR cmake
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> ${CMAKE_REQUEST_PIC}
-DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES}
-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DCMAKE_Fortran_FLAGS=${CMAKE_Fortran_FLAGS}
-DCMAKE_Fortran_FLAGS_${BTYPE}=${CMAKE_Fortran_FLAGS_${BTYPE}} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
)
ExternalProject_get_property(latte_build INSTALL_DIR)
set(LATTE_LIBRARIES ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/liblatte.a)
@ -503,7 +523,15 @@ endif()
if(PKG_USER-SCAFACOS)
find_package(GSL REQUIRED)
option(DOWNLOAD_SCAFACOS "Download ScaFaCoS library instead of using an already installed one" OFF)
find_package(PkgConfig QUIET)
set(DOWNLOAD_SCAFACOS_DEFAULT ON)
if(PKG_CONFIG_FOUND)
pkg_check_modules(SCAFACOS QUIET scafacos)
if(SCAFACOS_FOUND)
set(DOWNLOAD_SCAFACOS_DEFAULT OFF)
endif()
endif()
option(DOWNLOAD_SCAFACOS "Download ScaFaCoS library instead of using an already installed one" ${DOWNLOAD_SCAFACOS_DEFAULT})
if(DOWNLOAD_SCAFACOS)
message(STATUS "ScaFaCoS download requested - we will build our own")
include(ExternalProject)
@ -543,8 +571,8 @@ if(PKG_USER-SCAFACOS)
list(APPEND LAMMPS_LINK_LIBS ${MPI_Fortran_LIBRARIES})
list(APPEND LAMMPS_LINK_LIBS ${MPI_C_LIBRARIES})
else()
FIND_PACKAGE(PkgConfig REQUIRED)
PKG_CHECK_MODULES(SCAFACOS scafacos REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(SCAFACOS REQUIRED scafacos)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_LDFLAGS})
endif()
include_directories(${SCAFACOS_INCLUDE_DIRS})
@ -558,29 +586,53 @@ if(PKG_USER-PLUMED)
validate_option(PLUMED_MODE PLUMED_MODE_VALUES)
string(TOUPPER ${PLUMED_MODE} PLUMED_MODE)
option(DOWNLOAD_PLUMED "Download Plumed package instead of using an already installed one" OFF)
find_package(PkgConfig QUIET)
set(DOWNLOAD_PLUMED_DEFAULT ON)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PLUMED QUIET plumed)
if(PLUMED_FOUND)
set(DOWNLOAD_PLUMED_DEFAULT OFF)
endif()
endif()
option(DOWNLOAD_PLUMED "Download Plumed package instead of using an already installed one" ${DOWNLOAD_PLUMED_DEFAULT})
if(DOWNLOAD_PLUMED)
if(BUILD_MPI)
set(PLUMED_CONFIG_MPI "--enable-mpi")
set(PLUMED_CONFIG_CC ${CMAKE_MPI_C_COMPILER})
set(PLUMED_CONFIG_CXX ${CMAKE_MPI_CXX_COMPILER})
else()
set(PLUMED_CONFIG_MPI "--disable-mpi")
set(PLUMED_CONFIG_CC ${CMAKE_C_COMPILER})
set(PLUMED_CONFIG_CXX ${CMAKE_CXX_COMPILER})
endif()
if(BUILD_OMP)
set(PLUMED_CONFIG_OMP "--enable-openmp")
else()
set(PLUMED_CONFIG_OMP "--disable-openmp")
endif()
message(STATUS "PLUMED download requested - we will build our own")
include(ExternalProject)
ExternalProject_Add(plumed_build
URL https://github.com/plumed/plumed2/releases/download/v2.4.4/plumed-src-2.4.4.tgz
URL_MD5 71ed465bdc7c2059e282dbda8d564e71
URL https://github.com/plumed/plumed2/releases/download/v2.5.1/plumed-src-2.5.1.tgz
URL_MD5 c2a7b519e32197a120cdf47e0f194f81
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
${CONFIGURE_REQUEST_PIC}
--enable-modules=all
CXX=${CMAKE_MPI_CXX_COMPILER}
CC=${CMAKE_MPI_C_COMPILER}
--enable-modules=all
${PLUMED_CONFIG_MPI}
${PLUMED_CONFIG_OMP}
CXX=${PLUMED_CONFIG_CXX}
CC=${PLUMED_CONFIG_CC}
)
ExternalProject_get_property(plumed_build INSTALL_DIR)
set(PLUMED_INSTALL_DIR ${INSTALL_DIR})
list(APPEND LAMMPS_DEPS plumed_build)
if(PLUMED_MODE STREQUAL "STATIC")
add_definitions(-D__PLUMED_WRAPPER_CXX=1)
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/plumed/obj/kernel.o
"${PLUMED_INSTALL_DIR}/lib/plumed/obj/PlumedStatic.o" ${GSL_LIBRARIES} ${CMAKE_DL_LIBS})
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.a ${GSL_LIBRARIES} ${LAPACK_LIBRARIES} ${CMAKE_DL_LIBS})
elseif(PLUMED_MODE STREQUAL "SHARED")
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.so ${CMAKE_DL_LIBS})
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.so ${PLUMED_INSTALL_DIR}/lib/libplumedKernel.so ${CMAKE_DL_LIBS})
elseif(PLUMED_MODE STREQUAL "RUNTIME")
add_definitions(-D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_INSTALL_DIR}/lib/libplumedKernel.so)
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumedWrapper.a -rdynamic ${CMAKE_DL_LIBS})
@ -588,7 +640,7 @@ if(PKG_USER-PLUMED)
set(PLUMED_INCLUDE_DIRS "${PLUMED_INSTALL_DIR}/include")
else()
find_package(PkgConfig REQUIRED)
pkg_check_modules(PLUMED plumed REQUIRED)
pkg_check_modules(PLUMED REQUIRED plumed)
if(PLUMED_MODE STREQUAL "STATIC")
add_definitions(-D__PLUMED_WRAPPER_CXX=1)
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.static)
@ -607,7 +659,10 @@ if(PKG_USER-MOLFILE)
set(MOLFILE_INCLUDE_DIRS "${LAMMPS_LIB_SOURCE_DIR}/molfile" CACHE STRING "Path to VMD molfile plugin headers")
add_library(molfile INTERFACE)
target_include_directories(molfile INTERFACE ${MOLFILE_INCLUDE_DIRS})
target_link_libraries(molfile INTERFACE ${CMAKE_DL_LIBS})
# no need to link with -ldl on windows
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
target_link_libraries(molfile INTERFACE ${CMAKE_DL_LIBS})
endif()
list(APPEND LAMMPS_LINK_LIBS molfile)
endif()
@ -619,7 +674,13 @@ if(PKG_USER-NETCDF)
endif()
if(PKG_USER-SMD)
option(DOWNLOAD_EIGEN3 "Download Eigen3 instead of using an already installed one)" OFF)
find_package(Eigen3 NO_MODULE)
if(EIGEN3_FOUND)
set(DOWNLOAD_EIGEN3_DEFAULT OFF)
else()
set(DOWNLOAD_EIGEN3_DEFAULT ON)
endif()
option(DOWNLOAD_EIGEN3 "Download Eigen3 instead of using an already installed one)" ${DOWNLOAD_EIGEN3_DEFAULT})
if(DOWNLOAD_EIGEN3)
message(STATUS "Eigen3 download requested - we will build our own")
include(ExternalProject)
@ -667,7 +728,13 @@ if(PKG_KIM)
list(APPEND LAMMPS_LINK_LIBS ${CURL_LIBRARIES})
add_definitions(-DLMP_KIM_CURL)
endif()
option(DOWNLOAD_KIM "Download KIM-API from OpenKIM instead of using an already installed one" OFF)
find_package(KIM-API QUIET)
if(KIM-API_FOUND)
set(DOWNLOAD_KIM_DEFAULT OFF)
else()
set(DOWNLOAD_KIM_DEFAULT ON)
endif()
option(DOWNLOAD_KIM "Download KIM-API from OpenKIM instead of using an already installed one" ${DOWNLOAD_KIM_DEFAULT})
if(DOWNLOAD_KIM)
message(STATUS "KIM-API download requested - we will build our own")
enable_language(C)
@ -688,10 +755,7 @@ if(PKG_KIM)
set(KIM-API_LDFLAGS ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX})
list(APPEND LAMMPS_DEPS kim_build)
else()
find_package(KIM-API)
if(NOT KIM-API_FOUND)
message(FATAL_ERROR "KIM-API not found, help CMake to find it by setting PKG_CONFIG_PATH, or set DOWNLOAD_KIM=ON to download it")
endif()
find_package(KIM-API REQUIRED)
endif()
list(APPEND LAMMPS_LINK_LIBS "${KIM-API_LDFLAGS}")
include_directories(${KIM-API_INCLUDE_DIRS})
@ -709,6 +773,7 @@ if(PKG_MESSAGE)
set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi")
else()
target_compile_definitions(cslib PRIVATE -DMPI_NO)
target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_MPI)
set_target_properties(cslib PROPERTIES OUTPUT_NAME "csnompi")
endif()
@ -728,7 +793,13 @@ endif()
if(PKG_MSCG)
find_package(GSL REQUIRED)
option(DOWNLOAD_MSCG "Download MSCG library instead of using an already installed one)" OFF)
find_package(MSCG QUIET)
if(MSGC_FOUND)
set(DOWNLOAD_MSCG_DEFAULT OFF)
else()
set(DOWNLOAD_MSCG_DEFAULT ON)
endif()
option(DOWNLOAD_MSCG "Download MSCG library instead of using an already installed one)" ${DOWNLOAD_MSCG_DEFAULT})
if(DOWNLOAD_MSCG)
if (CMAKE_VERSION VERSION_LESS "3.7") # due to SOURCE_SUBDIR
message(FATAL_ERROR "For downlading MSCG you need at least cmake-3.7")
@ -777,7 +848,6 @@ endif()
########################################################################
# Basic system tests (standard libraries, headers, functions, types) #
########################################################################
include(CheckIncludeFileCXX)
foreach(HEADER cmath)
check_include_file_cxx(${HEADER} FOUND_${HEADER})
if(NOT FOUND_${HEADER})
@ -944,7 +1014,7 @@ if(PKG_USER-OMP)
# detects styles which have USER-OMP version
RegisterStylesExt(${USER-OMP_SOURCES_DIR} omp OMP_SOURCES)
RegisterFixStyle("${USER-OMP_SOURCES_DIR}/fix_omp.h")
RegisterFixStyle(${USER-OMP_SOURCES_DIR}/fix_omp.h)
get_property(USER-OMP_SOURCES GLOBAL PROPERTY OMP_SOURCES)
@ -1057,37 +1127,76 @@ if(PKG_OPT)
endif()
if(PKG_USER-INTEL)
find_package(TBB REQUIRED)
find_package(MKL REQUIRED)
add_definitions(-DLMP_USER_INTEL)
if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
message(FATAL_ERROR "USER-INTEL is only useful together with intel compiler")
endif()
set(INTEL_ARCH "cpu" CACHE STRING "Architectures used by USER-INTEL (cpu or knl)")
set(INTEL_ARCH_VALUES cpu knl)
set_property(CACHE INTEL_ARCH PROPERTY STRINGS ${INTEL_ARCH_VALUES})
validate_option(INTEL_ARCH INTEL_ARCH_VALUES)
string(TOUPPER ${INTEL_ARCH} INTEL_ARCH)
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
message(FATAL_ERROR "USER-INTEL needs at least a 2016 intel compiler, found ${CMAKE_CXX_COMPILER_VERSION}")
endif()
if(NOT BUILD_OMP)
message(FATAL_ERROR "USER-INTEL requires OpenMP")
endif()
if(NOT ${LAMMPS_MEMALIGN} STREQUAL "64")
message(FATAL_ERROR "USER-INTEL is only useful with LAMMPS_MEMALIGN=64")
endif()
set(INTEL_ARCH "cpu" CACHE STRING "Architectures used by USER-INTEL (cpu or knl)")
set(INTEL_ARCH_VALUES cpu knl)
set_property(CACHE INTEL_ARCH PROPERTY STRINGS ${INTEL_ARCH_VALUES})
validate_option(INTEL_ARCH INTEL_ARCH_VALUES)
string(TOUPPER ${INTEL_ARCH} INTEL_ARCH)
if(INTEL_ARCH STREQUAL "KNL")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload")
set(MIC_OPTIONS "-qoffload-option,mic,compiler,\"-fp-model fast=2 -mGLOB_default_function_attrs=\\\"gather_scatter_loop_unroll=4\\\"\"")
add_compile_options(-xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS})
add_definitions(-DLMP_INTEL_OFFLOAD)
find_package(Threads QUIET)
if(Threads_FOUND)
set(INTEL_LRT_MODE "threads" CACHE STRING "Long-range threads mode (none, threads, or c++11)")
else()
set(INTEL_LRT_MODE "none" CACHE STRING "Long-range threads mode (none, threads, or c++11)")
endif()
set(INTEL_LRT_VALUES none threads c++11)
set_property(CACHE INTEL_LRT_MODE PROPERTY STRINGS ${INTEL_LRT_VALUES})
validate_option(INTEL_LRT_MODE INTEL_LRT_VALUES)
string(TOUPPER ${INTEL_LRT_MODE} INTEL_LRT_MODE)
if(INTEL_LRT_MODE STREQUAL "THREADS")
if(Threads_FOUND)
add_definitions(-DLMP_INTEL_USELRT)
list(APPEND LAMMPS_LINK_LIBS ${CMAKE_THREAD_LIBS_INIT})
else()
message(FATAL_ERROR "Must have working threads library for Long-range thread support")
endif()
endif()
if(INTEL_LRT_MODE STREQUAL "C++11")
add_definitions(-DLMP_INTEL_USERLRT -DLMP_INTEL_LRT11)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
message(FATAL_ERROR "USER-INTEL needs at least a 2016 Intel compiler, found ${CMAKE_CXX_COMPILER_VERSION}")
endif()
else()
message(WARNING "USER-INTEL gives best performance with Intel compilers")
endif()
find_package(TBB QUIET)
if(TBB_FOUND)
list(APPEND LAMMPS_LINK_LIBS ${TBB_MALLOC_LIBRARIES})
else()
add_definitions(-DLMP_INTEL_NO_TBB)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
message(WARNING "USER-INTEL with Intel compilers should use TBB malloc libraries")
endif()
endif()
find_package(MKL QUIET)
if(MKL_FOUND)
add_definitions(-DLMP_USE_MKL_RNG)
list(APPEND LAMMPS_LINK_LIBS ${MKL_LIBRARIES})
else()
message(STATUS "Pair style dpd/intel will be faster with MKL libraries")
endif()
if((NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "64") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "128") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "256"))
message(FATAL_ERROR "USER-INTEL only supports memory alignment of 64, 128 or 256 on this platform")
endif()
if(INTEL_ARCH STREQUAL "KNL")
if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
message(FATAL_ERROR "Must use Intel compiler with USER-INTEL for KNL architecture")
endif()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload")
set(MIC_OPTIONS "-qoffload-option,mic,compiler,\"-fp-model fast=2 -mGLOB_default_function_attrs=\\\"gather_scatter_loop_unroll=4\\\"\"")
add_compile_options(-xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS})
add_definitions(-DLMP_INTEL_OFFLOAD)
else()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xCOMMON-AVX512")
else()
@ -1100,33 +1209,35 @@ if(PKG_USER-INTEL)
add_compile_options(${_FLAG})
endif()
endforeach()
else()
add_compile_options(-O3 -ffast-math)
endif()
endif()
add_definitions(-DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG)
# collect sources
set(USER-INTEL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-INTEL)
set(USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/fix_intel.cpp
${USER-INTEL_SOURCES_DIR}/fix_nh_intel.cpp
${USER-INTEL_SOURCES_DIR}/intel_buffers.cpp
${USER-INTEL_SOURCES_DIR}/nbin_intel.cpp
${USER-INTEL_SOURCES_DIR}/npair_intel.cpp)
list(APPEND LAMMPS_LINK_LIBS ${TBB_MALLOC_LIBRARIES} ${MKL_LIBRARIES})
set_property(GLOBAL PROPERTY "USER-INTEL_SOURCES" "${USER-INTEL_SOURCES}")
set(USER-INTEL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-INTEL)
set(USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/intel_preprocess.h
${USER-INTEL_SOURCES_DIR}/intel_buffers.h
${USER-INTEL_SOURCES_DIR}/intel_buffers.cpp
${USER-INTEL_SOURCES_DIR}/math_extra_intel.h
${USER-INTEL_SOURCES_DIR}/nbin_intel.h
${USER-INTEL_SOURCES_DIR}/nbin_intel.cpp
${USER-INTEL_SOURCES_DIR}/npair_intel.h
${USER-INTEL_SOURCES_DIR}/npair_intel.cpp
${USER-INTEL_SOURCES_DIR}/intel_simd.h
${USER-INTEL_SOURCES_DIR}/intel_intrinsics.h)
# detect styles which have a USER-INTEL version
RegisterStylesExt(${USER-INTEL_SOURCES_DIR} intel USER-INTEL_SOURCES)
RegisterNBinStyle(${USER-INTEL_SOURCES_DIR}/nbin_intel.h)
RegisterNPairStyle(${USER-INTEL_SOURCES_DIR}/npair_intel.h)
RegisterFixStyle(${USER-INTEL_SOURCES_DIR}/fix_intel.h)
set_property(GLOBAL PROPERTY "USER-INTEL_SOURCES" "${USER-INTEL_SOURCES}")
get_property(USER-INTEL_SOURCES GLOBAL PROPERTY USER-INTEL_SOURCES)
if(PKG_KSPACE)
list(APPEND USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.cpp)
RegisterIntegrateStyle(${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.h)
endif()
# detects styles which have USER-INTEL version
RegisterStylesExt(${USER-INTEL_SOURCES_DIR} opt USER-INTEL_SOURCES)
get_property(USER-INTEL_SOURCES GLOBAL PROPERTY USER-INTEL_SOURCES)
list(APPEND LIB_SOURCES ${USER-INTEL_SOURCES})
include_directories(${USER-INTEL_SOURCES_DIR})
list(APPEND LIB_SOURCES ${USER-INTEL_SOURCES})
include_directories(${USER-INTEL_SOURCES_DIR})
endif()
if(PKG_GPU)
@ -1261,7 +1372,15 @@ if(PKG_GPU)
set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h)
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu)
list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu)
list(REMOVE_ITEM GPU_LIB_CU
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu
)
foreach(GPU_KERNEL ${GPU_LIB_CU})
get_filename_component(basename ${GPU_KERNEL} NAME_WE)
@ -1272,7 +1391,21 @@ if(PKG_GPU)
GenerateOpenCLHeader(gayberne ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu)
GenerateOpenCLHeader(gayberne_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu)
list(APPEND GPU_LIB_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h)
GenerateOpenCLHeader(re_squared ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu)
GenerateOpenCLHeader(re_squared_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu)
GenerateOpenCLHeader(tersoff ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu)
GenerateOpenCLHeader(tersoff_zbl ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu)
GenerateOpenCLHeader(tersoff_mod ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu)
list(APPEND GPU_LIB_SOURCES
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h
)
add_library(gpu STATIC ${GPU_LIB_SOURCES})
target_link_libraries(gpu ${OpenCL_LIBRARIES})
@ -1385,9 +1518,19 @@ if(BUILD_EXE)
if(ENABLE_TESTING)
add_test(ShowHelp ${LAMMPS_BINARY} -help)
endif()
enable_language(C)
get_filename_component(MSI2LMP_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../tools/msi2lmp/src ABSOLUTE)
file(GLOB MSI2LMP_SOURCES ${MSI2LMP_SOURCE_DIR}/[^.]*.c)
add_executable(msi2lmp ${MSI2LMP_SOURCES})
target_link_libraries(msi2lmp m)
install(TARGETS msi2lmp DESTINATION ${CMAKE_INSTALL_BINDIR})
install(FILES ${LAMMPS_DOC_DIR}/msi2lmp.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
endif()
###############################################################################
# Build documentation
###############################################################################
@ -1449,11 +1592,14 @@ if(BUILD_DOC)
endif()
###############################################################################
# Install potential files in data directory
# Install potential and force field files in data directory
###############################################################################
set(LAMMPS_POTENTIALS_DIR ${CMAKE_INSTALL_FULL_DATADIR}/lammps/potentials)
install(DIRECTORY ${LAMMPS_SOURCE_DIR}/../potentials/ DESTINATION ${LAMMPS_POTENTIALS_DIR})
set(LAMMPS_FRC_FILES_DIR ${CMAKE_INSTALL_FULL_DATADIR}/lammps/frc_files)
install(DIRECTORY ${LAMMPS_SOURCE_DIR}/../tools/msi2lmp/frc_files/ DESTINATION ${LAMMPS_FRC_FILES_DIR})
configure_file(etc/profile.d/lammps.sh.in ${CMAKE_BINARY_DIR}/etc/profile.d/lammps.sh @ONLY)
configure_file(etc/profile.d/lammps.csh.in ${CMAKE_BINARY_DIR}/etc/profile.d/lammps.csh @ONLY)
install(

View File

@ -36,14 +36,23 @@
# KIM-API-CMAKE_CXX_COMPILER
# KIM-API-CMAKE_Fortran_COMPILER
#
find_package(PkgConfig REQUIRED)
if(KIM-API_FIND_QUIETLY)
set(REQ_OR_QUI "QUIET")
else()
set(REQ_OR_QUI "REQUIRED")
endif()
find_package(PkgConfig ${REQ_OR_QUI})
include(FindPackageHandleStandardArgs)
pkg_check_modules(KIM-API REQUIRED libkim-api>=2.0)
pkg_check_modules(KIM-API ${REQ_OR_QUI} libkim-api>=2.0)
pkg_get_variable(KIM-API-V2-CMAKE_C_COMPILER libkim-api CMAKE_C_COMPILER)
pkg_get_variable(KIM-API-V2-CMAKE_CXX_COMPILER libkim-api CMAKE_CXX_COMPILER)
pkg_get_variable(KIM-API-V2_CMAKE_Fortran_COMPILER libkim-api CMAKE_Fortran_COMPILER)
if(KIM-API_FOUND)
pkg_get_variable(KIM-API-CMAKE_C_COMPILER libkim-api CMAKE_C_COMPILER)
pkg_get_variable(KIM-API-CMAKE_CXX_COMPILER libkim-api CMAKE_CXX_COMPILER)
pkg_get_variable(KIM-API_CMAKE_Fortran_COMPILER libkim-api CMAKE_Fortran_COMPILER)
endif()
# handle the QUIETLY and REQUIRED arguments and set KIM-API_FOUND to TRUE
# if all listed variables are TRUE

View File

@ -6,7 +6,7 @@ function(GenerateOpenCLHeader varname outfile files)
foreach(IDX RANGE 2 ${ARG_END})
list(GET ARGV ${IDX} filename)
file(READ ${filename} content)
string(REGEX REPLACE "\\s*//[^\n]*\n" "" content "${content}")
string(REGEX REPLACE "\\s*//[^\n]*\n" "\n" content "${content}")
string(REGEX REPLACE "\\\\" "\\\\\\\\" content "${content}")
string(REGEX REPLACE "\"" "\\\\\"" content "${content}")
string(REGEX REPLACE "([^\n]+)\n" "\"\\1\\\\n\"\n" content "${content}")

View File

@ -91,6 +91,10 @@ function(RegisterFixStyle path)
AddStyleHeader(${path} FIX)
endfunction(RegisterFixStyle)
function(RegisterIntegrateStyle path)
AddStyleHeader(${path} INTEGRATE)
endfunction(RegisterIntegrateStyle)
function(RegisterStyles search_path)
FindStyleHeaders(${search_path} ANGLE_CLASS angle_ ANGLE ) # angle ) # force
FindStyleHeaders(${search_path} ATOM_CLASS atom_vec_ ATOM_VEC ) # atom ) # atom atom_vec_hybrid

View File

@ -155,11 +155,13 @@ make
The CMake build exposes a lot of different options. In the old build system
some of the package selections were possible by using special make target like
`make yes-std` or `make no-lib`. Achieving the same result with cmake requires
`make yes-std` or `make no-lib`. Achieving a similar result with cmake requires
specifying all options manually. This can quickly become a very long command
line that is hard to handle. While these could be stored in a simple script
file, there is another way of defining "presets" to compile LAMMPS in a certain
way.
way. Since the cmake build process - contrary to the conventional build system -
includes the compilation of the bundled libraries into the standard build process,
the grouping of those presets is somewhat different.
A preset is a regular CMake script file that can use constructs such as
variables, lists and for-loops to manipulate configuration options and create
@ -171,10 +173,10 @@ Such a file can then be passed to cmake via the `-C` flag. Several examples of
presets can be found in the `cmake/presets` folder.
```bash
# build LAMMPS with all "standard" packages which don't use libraries and enable GPU package
# build LAMMPS with all packages enabled which don't use external libraries and enable GPU package
mkdir build
cd build
cmake -C ../cmake/presets/std_nolib.cmake -D PKG_GPU=on ../cmake
cmake -C ../cmake/presets/all_on.cmake -C ../cmake/presets/nolib.cmake -D PKG_GPU=on ../cmake
```
# Reference
@ -209,7 +211,7 @@ cmake -C ../cmake/presets/std_nolib.cmake -D PKG_GPU=on ../cmake
</td>
</tr>
<tr>
<td><code><CMAKE_VERBOSE_MAKEFILE/code></td>
<td><code>CMAKE_VERBOSE_MAKEFILE</code></td>
<td>Enable verbose output from Makefile builds (useful for debugging), the same can be achived by adding `VERBOSE=1` to the `make` call.</td>
<td>
<dl>
@ -1429,6 +1431,17 @@ TODO
</dl>
</td>
</tr>
<tr>
<td><code>INTEL_LRT_MODE</code></td>
<td>How to support Long-range thread mode in Verlet integration</td>
<td>
<dl>
<dt><code>threads</code> (default, if pthreads available)</dt>
<dt><code>none</code> (default, if pthreads not available)</dt>
<dt><code>c++11</code></dt>
</dl>
</td>
</tr>
</tbody>
</table>

View File

@ -1,2 +1,4 @@
# set environment for LAMMPS executables to find potential files
# set environment for LAMMPS and msi2lmp executables
# to find potential and force field files
if ( "$?LAMMPS_POTENTIALS" == 0 ) setenv LAMMPS_POTENTIALS @LAMMPS_POTENTIALS_DIR@
if ( "$?MSI2LMP_LIBRARY" == 0 ) setenv MSI2LMP_LIBRARY @LAMMPS_FRC_FILES_DIR@

View File

@ -1,2 +1,5 @@
# set environment for LAMMPS executables to find potential files
export LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS-@LAMMPS_POTENTIALS_DIR@}
# set environment for LAMMPS and msi2lmp executables
# to find potential and force field files
LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS-@LAMMPS_POTENTIALS_DIR@}
MSI2LMP_LIBRARY=${MSI2LMP_LIBRARY-@LAMMPS_FRC_FILES_DIR@}
export LAMMPS_POTENTIALS MSI2LMP_LIBRARY

View File

@ -1,21 +1,17 @@
set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MEAM MISC
MOLECULE MPIIO MSCG OPT PERI POEMS
PYTHON QEQ REAX REPLICA RIGID SHOCK SNAP SRD VORONOI)
# preset that turns on all existing packages off. can be used to reset
# an existing package selection without losing any other settings
set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVARS
USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESO
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE
USER-NETCDF USER-OMP USER-PHONON USER-QMMM USER-QTB
USER-QUIP USER-REAXC USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY
USER-UEF USER-VTK)
set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM MPIIO MSCG POEMS PYTHON REAX VORONOI
USER-ATC USER-AWPMD USER-COLVARS USER-H5MD USER-LB USER-MOLFILE
USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP USER-SMD USER-VTK)
set(ALL_PACKAGES ${STANDARD_PACKAGES} ${USER_PACKAGES})
set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MISC MESSAGE MOLECULE
MPIIO MSCG OPT PERI POEMS PYTHON QEQ REPLICA RIGID SHOCK SNAP SPIN
SRD VORONOI
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP
USER-H5MD USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESO
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP
USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH
USER-TALLY USER-UEF USER-VTK USER-YAFF)
foreach(PKG ${ALL_PACKAGES})
set(PKG_${PKG} OFF CACHE BOOL "" FORCE)

View File

@ -1,21 +1,19 @@
set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MEAM MISC
MOLECULE MPIIO MSCG OPT PERI POEMS
PYTHON QEQ REAX REPLICA RIGID SHOCK SNAP SRD VORONOI)
# preset that turns on all existing packages. using the combination
# this preset followed by the nolib.cmake preset should configure a
# LAMMPS binary, with as many packages included, that can be compiled
# with just a working C++ compiler and an MPI library.
set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVARS
USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESO
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE
USER-NETCDF USER-OMP USER-PHONON USER-QMMM USER-QTB
USER-QUIP USER-REAXC USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY
USER-UEF USER-VTK)
set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM MPIIO MSCG POEMS PYTHON REAX VORONOI
USER-ATC USER-AWPMD USER-COLVARS USER-H5MD USER-LB USER-MOLFILE
USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP USER-SMD USER-VTK)
set(ALL_PACKAGES ${STANDARD_PACKAGES} ${USER_PACKAGES})
set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MISC MESSAGE MOLECULE
MPIIO MSCG OPT PERI POEMS PYTHON QEQ REPLICA RIGID SHOCK SNAP SPIN
SRD VORONOI
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP
USER-H5MD USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESO
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP
USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH
USER-TALLY USER-UEF USER-VTK USER-YAFF)
foreach(PKG ${ALL_PACKAGES})
set(PKG_${PKG} ON CACHE BOOL "" FORCE)

17
cmake/presets/clang.cmake Normal file
View File

@ -0,0 +1,17 @@
# preset that will enable clang/clang++ with support for MPI and OpenMP (on Linux boxes)
set(CMAKE_CXX_COMPILER "clang++" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "clang" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS "-Wall -Wextra -g -O2 -DNDEBG" CACHE STRING "" FORCE)
set(MPI_CXX "clang++" CACHE STRING "" FORCE)
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
unset(HAVE_OMP_H_INCLUDE CACHE)
set(OpenMP_C "clang" CACHE STRING "" FORCE)
set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "" FORCE)
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_CXX "clang++" CACHE STRING "" FORCE)
set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE)
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_omp_LIBRARY "/usr/lib64/libomp.so" CACHE PATH "" FORCE)

View File

@ -1,71 +0,0 @@
set(PKG_ASPHERE OFF CACHE BOOL "" FORCE)
set(PKG_BODY OFF CACHE BOOL "" FORCE)
set(PKG_CLASS2 OFF CACHE BOOL "" FORCE)
set(PKG_COLLOID OFF CACHE BOOL "" FORCE)
set(PKG_COMPRESS OFF CACHE BOOL "" FORCE)
set(PKG_CORESHELL OFF CACHE BOOL "" FORCE)
set(PKG_DIPOLE OFF CACHE BOOL "" FORCE)
set(PKG_GPU OFF CACHE BOOL "" FORCE)
set(PKG_GRANULAR OFF CACHE BOOL "" FORCE)
set(PKG_KIM OFF CACHE BOOL "" FORCE)
set(PKG_KOKKOS OFF CACHE BOOL "" FORCE)
set(PKG_KSPACE OFF CACHE BOOL "" FORCE)
set(PKG_LATTE OFF CACHE BOOL "" FORCE)
set(PKG_LIB OFF CACHE BOOL "" FORCE)
set(PKG_MANYBODY OFF CACHE BOOL "" FORCE)
set(PKG_MC OFF CACHE BOOL "" FORCE)
set(PKG_MEAM OFF CACHE BOOL "" FORCE)
set(PKG_MISC OFF CACHE BOOL "" FORCE)
set(PKG_MOLECULE OFF CACHE BOOL "" FORCE)
set(PKG_MPIIO OFF CACHE BOOL "" FORCE)
set(PKG_MSCG OFF CACHE BOOL "" FORCE)
set(PKG_OPT OFF CACHE BOOL "" FORCE)
set(PKG_PERI OFF CACHE BOOL "" FORCE)
set(PKG_POEMS OFF CACHE BOOL "" FORCE)
set(PKG_PYTHOFF OFF CACHE BOOL "" FORCE)
set(PKG_QEQ OFF CACHE BOOL "" FORCE)
set(PKG_REAX OFF CACHE BOOL "" FORCE)
set(PKG_REPLICA OFF CACHE BOOL "" FORCE)
set(PKG_RIGID OFF CACHE BOOL "" FORCE)
set(PKG_SHOCK OFF CACHE BOOL "" FORCE)
set(PKG_SNAP OFF CACHE BOOL "" FORCE)
set(PKG_SRD OFF CACHE BOOL "" FORCE)
set(PKG_VOROFFOI OFF CACHE BOOL "" FORCE)
set(PKG_USER OFF CACHE BOOL "" FORCE)
set(PKG_USER-ATC OFF CACHE BOOL "" FORCE)
set(PKG_USER-AWPMD OFF CACHE BOOL "" FORCE)
set(PKG_USER-BOCS OFF CACHE BOOL "" FORCE)
set(PKG_USER-CGDNA OFF CACHE BOOL "" FORCE)
set(PKG_USER-CGSDK OFF CACHE BOOL "" FORCE)
set(PKG_USER-COLVARS OFF CACHE BOOL "" FORCE)
set(PKG_USER-DIFFRACTIOFF OFF CACHE BOOL "" FORCE)
set(PKG_USER-DPD OFF CACHE BOOL "" FORCE)
set(PKG_USER-DRUDE OFF CACHE BOOL "" FORCE)
set(PKG_USER-EFF OFF CACHE BOOL "" FORCE)
set(PKG_USER-FEP OFF CACHE BOOL "" FORCE)
set(PKG_USER-H5MD OFF CACHE BOOL "" FORCE)
set(PKG_USER-INTEL OFF CACHE BOOL "" FORCE)
set(PKG_USER-LB OFF CACHE BOOL "" FORCE)
set(PKG_USER-MANIFOLD OFF CACHE BOOL "" FORCE)
set(PKG_USER-MEAMC OFF CACHE BOOL "" FORCE)
set(PKG_USER-MESO OFF CACHE BOOL "" FORCE)
set(PKG_USER-MGPT OFF CACHE BOOL "" FORCE)
set(PKG_USER-MISC OFF CACHE BOOL "" FORCE)
set(PKG_USER-MOFFF OFF CACHE BOOL "" FORCE)
set(PKG_USER-MOLFILE OFF CACHE BOOL "" FORCE)
set(PKG_USER-NETCDF OFF CACHE BOOL "" FORCE)
set(PKG_USER-OMP OFF CACHE BOOL "" FORCE)
set(PKG_USER-PHONON OFF CACHE BOOL "" FORCE)
set(PKG_USER-PLUMED OFF CACHE BOOL "" FORCE)
set(PKG_USER-QMMM OFF CACHE BOOL "" FORCE)
set(PKG_USER-QTB OFF CACHE BOOL "" FORCE)
set(PKG_USER-QUIP OFF CACHE BOOL "" FORCE)
set(PKG_USER-REAXC OFF CACHE BOOL "" FORCE)
set(PKG_USER-SDPD OFF CACHE BOOL "" FORCE)
set(PKG_USER-SMD OFF CACHE BOOL "" FORCE)
set(PKG_USER-SMTBQ OFF CACHE BOOL "" FORCE)
set(PKG_USER-SPH OFF CACHE BOOL "" FORCE)
set(PKG_USER-TALLY OFF CACHE BOOL "" FORCE)
set(PKG_USER-UEF OFF CACHE BOOL "" FORCE)
set(PKG_USER-VTK OFF CACHE BOOL "" FORCE)

View File

@ -0,0 +1,17 @@
set(WIN_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
GRANULAR KSPACE MANYBODY MC MISC MOLECULE OPT PERI POEMS QEQ
REPLICA RIGID SHOCK SNAP SPIN SRD VORONOI USER-ATC USER-AWPMD
USER-BOCS USER-CGDNA USER-CGSDK USER-COLVARS USER-DIFFRACTION
USER-DPD USER-DRUDE USER-EFF USER-FEP USER-INTEL USER-MANIFOLD
USER-MEAMC USER-MESO USER-MISC USER-MOFFF USER-MOLFILE USER-OMP
USER-PHONON USER-PTM USER-QTB USER-REAXC USER-SDPD USER-SMD
USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-YAFF)
foreach(PKG ${WIN_PACKAGES})
set(PKG_${PKG} ON CACHE BOOL "" FORCE)
endforeach()
set(DOWNLOAD_VORO ON CACHE BOOL "" FORCE)
set(DOWNLOAD_EIGEN3 ON CACHE BOOL "" FORCE)
set(LAMMPS_MEMALIGN "0" CACHE STRING "" FORCE)
set(INTEL_LRT_MODE "none" CACHE STRING "" FORCE)

View File

@ -0,0 +1,8 @@
# preset that turns on just a few, frequently used packages
# this will be compiled quickly and handle a lot of common inputs.
set(ALL_PACKAGES KSPACE MANYBODY MOLECULE RIGID)
foreach(PKG ${ALL_PACKAGES})
set(PKG_${PKG} ON CACHE BOOL "" FORCE)
endforeach()

15
cmake/presets/most.cmake Normal file
View File

@ -0,0 +1,15 @@
# preset that turns on a wide range of packages, some of which require
# external libraries. Compared to all_on.cmake some more unusual packages
# are removed. The resulting binary should be able to run most inputs.
set(ALL_PACKAGES ASPHERE CLASS2 COLLOID CORESHELL DIPOLE
GRANULAR KSPACE MANYBODY MC MISC MOLECULE OPT PERI
PYTHON QEQ REPLICA RIGID SHOCK SRD VORONOI
USER-CGDNA USER-CGSDK USER-COLVARS USER-DIFFRACTION USER-DPD
USER-DRUDE USER-FEP USER-MEAMC USER-MESO
USER-MISC USER-MOFFF USER-OMP USER-PLUMED USER-PHONON USER-REAXC
USER-SPH USER-SMD USER-UEF USER-YAFF)
foreach(PKG ${ALL_PACKAGES})
set(PKG_${PKG} ON CACHE BOOL "" FORCE)
endforeach()

View File

@ -1,21 +1,10 @@
set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MEAM MISC
MOLECULE MPIIO MSCG OPT PERI POEMS
PYTHON QEQ REAX REPLICA RIGID SHOCK SNAP SRD VORONOI)
# preset that turns off all packages that require some form of external
# library or special compiler (fortran or cuda) or equivalent.
set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVARS
USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESO
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE
USER-NETCDF USER-OMP USER-PHONON USER-QMMM USER-QTB
USER-QUIP USER-REAXC USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY
USER-UEF USER-VTK)
set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM MPIIO MSCG POEMS PYTHON REAX VORONOI
USER-ATC USER-AWPMD USER-COLVARS USER-H5MD USER-LB USER-MOLFILE
USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP USER-SMD USER-VTK)
set(ALL_PACKAGES ${STANDARD_PACKAGES} ${USER_PACKAGES})
set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MPIIO MSCG PYTHON
VORONOI USER-ADIOS USER-ATC USER-AWPMD USER-H5MD USER-LB
USER-MOLFILE USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP
USER-SCAFACOS USER-SMD USER-VTK)
foreach(PKG ${PACKAGES_WITH_LIB})
set(PKG_${PKG} OFF CACHE BOOL "" FORCE)

View File

@ -1,22 +0,0 @@
set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MEAM MISC
MOLECULE MPIIO MSCG OPT PERI POEMS
PYTHON QEQ REAX REPLICA RIGID SHOCK SNAP SRD VORONOI)
set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVARS
USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESO
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE
USER-NETCDF USER-OMP USER-PHONON USER-QMMM USER-QTB
USER-QUIP USER-REAXC USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY
USER-UEF USER-VTK)
set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM MPIIO MSCG POEMS PYTHON REAX VORONOI
USER-ATC USER-AWPMD USER-COLVARS USER-H5MD USER-LB USER-MOLFILE
USER-NETCDF USER-QMMM USER-QUIP USER-SMD USER-VTK)
set(ALL_PACKAGES ${STANDARD_PACKAGES} ${USER_PACKAGES})
foreach(PKG ${STANDARD_PACKAGES})
set(PKG_${PKG} ON CACHE BOOL "" FORCE)
endforeach()

View File

@ -1,26 +0,0 @@
set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MEAM MISC
MOLECULE MPIIO MSCG OPT PERI POEMS
PYTHON QEQ REAX REPLICA RIGID SHOCK SNAP SRD VORONOI)
set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVARS
USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESO
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE
USER-NETCDF USER-OMP USER-PHONON USER-QMMM USER-QTB
USER-QUIP USER-REAXC USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY
USER-UEF USER-VTK)
set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM MPIIO MSCG POEMS PYTHON REAX VORONOI
USER-ATC USER-AWPMD USER-COLVARS USER-H5MD USER-LB USER-MOLFILE
USER-NETCDF USER-QMMM USER-QUIP USER-SMD USER-VTK)
set(ALL_PACKAGES ${STANDARD_PACKAGES} ${USER_PACKAGES})
foreach(PKG ${STANDARD_PACKAGES})
set(PKG_${PKG} ON CACHE BOOL "" FORCE)
endforeach()
foreach(PKG ${PACKAGES_WITH_LIB})
set(PKG_${PKG} OFF CACHE BOOL "" FORCE)
endforeach()

View File

@ -1,22 +0,0 @@
set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MEAM MISC
MOLECULE MPIIO MSCG OPT PERI POEMS
PYTHON QEQ REAX REPLICA RIGID SHOCK SNAP SRD VORONOI)
set(USER_PACKAGES USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVARS
USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESO
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE
USER-NETCDF USER-OMP USER-PHONON USER-QMMM USER-QTB
USER-QUIP USER-REAXC USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY
USER-UEF USER-VTK)
set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MEAM MPIIO MSCG POEMS PYTHON REAX VORONOI
USER-ATC USER-AWPMD USER-COLVARS USER-H5MD USER-LB USER-MOLFILE
USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP USER-SMD USER-VTK)
set(ALL_PACKAGES ${STANDARD_PACKAGES} ${USER_PACKAGES})
foreach(PKG ${USER_PACKAGES})
set(PKG_${PKG} ON CACHE BOOL "" FORCE)
endforeach()

View File

@ -1,40 +1,259 @@
.TH LAMMPS "2018-08-22"
.TH LAMMPS "15 May 2019" "2019-05-15"
.SH NAME
.B LAMMPS
\- Molecular Dynamics Simulator.
.SH SYNOPSIS
.B lmp
-in in.file
.B lmp
\-in <input file> [OPTIONS] ...
or
mpirun \-np 2
.B lmp
-in in.file
mpirun \-np 2
.B lmp
<input file> [OPTIONS] ...
or
.B lmp
\-r2data file.restart file.data
.SH DESCRIPTION
.B LAMMPS
LAMMPS is a classical molecular dynamics code, and an acronym for Large-scale
Atomic/Molecular Massively Parallel Simulator. LAMMPS has potentials for soft
materials (biomolecules, polymers) and solid-state materials (metals,
semiconductors) and coarse-grained or mesoscopic systems. It can be used to
model atoms or, more generically, as a parallel particle simulator at the
.B LAMMPS
is a classical molecular dynamics code, and an acronym for \fBL\fRarge-scale
\fBA\fRtomic/\fBM\fRolecular \fBM\fRassively \fBP\fRarallel \fBS\fRimulator.
.B LAMMPS
has potentials for soft
materials (bio-molecules, polymers) and solid-state materials (metals,
semiconductors) and coarse-grained or mesoscopic systems. It can be used to
model atoms or, more generically, as a parallel particle simulator at the
atomic, meso, or continuum scale.
See http://lammps.sandia.gov/ for documentation.
See https://lammps.sandia.gov/ for more information and documentation.
.SH EXECUTABLE NAME
The
.B LAMMPS
executable can have different names depending on how it was configured,
compiled and installed. It will be either
.B lmp
or
.B lmp_<machine name>.
The <machine name> suffix corresponds to the (machine specific) makefile
used to compile
.B LAMMPS
when using the conventional build process. When building
.B LAMMPS
using
.B CMake
this <machine name> parameter can be chosen arbitrarily at configuration
time, but more common is to just use
.B lmp
without a suffix. In this manpage we will use
.B lmp
to represent any of those names.
.SH OPTIONS
See https://lammps.sandia.gov/doc/Run_options.html for details on
command-line options.
.SH COPYRIGHT
© 2003--2018 Sandia Corporation
.TP
\fB\-h\fR or \fB\-help\fR
Print a brief help summary and a list of settings and options compiled
into this executable. It also explicitly lists all LAMMPS styles
(atom_style, fix, compute, pair_style, bond_style, etc) available in
the specific executable. This can tell you if the command you want to
use was included via the appropriate package at compile time.
LAMMPS will print the info and immediately exit if this switch is used.
.TP
\fB\-e\fR or \fB\-echo\fR
Set the style of command echoing. The style can be
.B none
or
.B screen
or
.B log
or
.B both.
Depending on the style, each command read from the input script will
be echoed to the screen and/or logfile. This can be useful to figure
out which line of your script is causing an input error.
The default value is
.B log.
.TP
\fB\-i <input file>\fR or \fB\-in <input file>\fR
Specify a file to use as an input script. If it is not specified,
LAMMPS reads its script from standard input. This is a required
switch when running LAMMPS in multi-partition mode.
.TP
\fB\-k on/off [keyword value]\fR or \fB\-kokkos on/off [keyword value]\fR
Enable or disable general KOKKOS support, as provided by the KOKKOS
package. Even if LAMMPS is built with this package, this switch must
be set to \fBon\fR to enable running with KOKKOS-enabled styles. More
details on this switch and its optional keyword value pairs are discussed
at: https://lammps.sandia.gov/doc/Run_options.html
.TP
\fB\-l <log file>\fR or \fB\-log <log file>\fR
Specify a log file for LAMMPS to write status information to.
The default value is "log.lammps". If the file name "none" is used,
\fBLAMMPS\fR will not write a log file. In multi-partition mode only
some high-level all-partition information is written to the "<log file>"
file, the remainder is written in a per-partition file "<log file>.N"
with "N" being the respective partition number, unless overridden
by the \-plog flag (see below).
.TP
\fB\-m <number>\fR or \fB\-mpicolor <number>\fR
If used, this must be the first command-line argument after the
.B LAMMPS
executable name. It is only used when
.B LAMMPS
is launched by an mpirun command which also launches one or more
other executable(s) at the same time.
.B LAMMPS
and the other executable(s) perform an MPI_Comm_split(), each with
their own different colors, to split the MPI_COMM_WORLD communicator
for each executable to the subset of processors they are supposed to
be actually running on. Currently, this is only used in
.B LAMMPS
to perform client/server messaging with another application.
.B LAMMPS
can act as either a client or server (or both).
.TP
\fB\-nc\fR or \fB\-nocite\fR
Disable writing the "log.cite" file which is normally written to
list references for specific cite-able features used during a
.B LAMMPS
run.
.TP
\fB\-pk <style> [options]\fR or \fB\-package <style> [options]\fR
Invoke the \fBpackage\R command with <style> and optional arguments.
The syntax is the same as if the command appeared in an input script.
For example "-pk gpu 2" is the same as "package gpu 2" in the input
script. The possible styles and options are discussed in the
.B LAMMPS
manual for the "package" command. This switch can be used multiple
times, e.g. to set options for the USER-INTEL and USER-OMP packages
when used together. Along with the "-sf" or "-suffix" switch, this
is a convenient mechanism for invoking accelerator packages and their
options without having to edit an input script.
.TP
\fB\-p\fR or \fB\-partition\fR
Invoke
.B LAMMPS
in multi-partition mode. Without this,
.B LAMMPS
uses all P processors allocated via MPI to run a single simulation.
If this switch is used, the P processors are split into separate
partitions and each partition runs its own simulation. The arguments
to the switch specify the number of processors in each partition.
Arguments of the form "MxN" mean M partitions, each with N processors.
Arguments of the form "N" mean a single partition with N processors.
The sum of processors in all partitions must be equal P. Thus the
command “-partition 8x2 4 5” has 10 partitions and runs on a total
of 25 processors. Running with multiple partitions is required for
multi-replica simulations, where each replica runs on on one or more
few processors.
.TP
\fB\-pl <basename>\fR or \fB\-plog <basename>\fR
Specify the base name for the per-partition log files in multi-partition
runs, where partition N writes log information to <basename>.N.
If basename is set to "none", then no per-partition log files are created.
This overrides the name specified in the \-log command-line option.
.TP
\fB\-ps <basename>\fR or \fB\-pscreen <basename>\fR
Specify the base name for the per-partition screen files in multi-partition
runs, where partition N writes screen output to <basename>.N.
If basename is set to "none", then no per-partition screen files are created.
The default value is "screen" or whatever is set by the \-screen flag.
.TP
\fB\-r2data <restart file> [remap] <data file>\fR or
\fB\-restart2data <restart file> [remap] <data file>\fR
Convert <restart file> previously written by
.B LAMMPS
into a data file and immediately exit. This option has replaced the
external restart2data executable. Following <restart file>
argument, the optional word "remap" may be used. This has the
same effect like adding it to a "read_restart" command.
The syntax following the <data file> name is identical to the
arguments of the "write_data" command. See the
.B LAMMPS
manual for details on either of the two commands.
.TP
\fB\-r2dump <restart file> [remap] <dump file>\fR or
\fB\-restart2dump <restart file> [remap] <dump file>\fR
Convert <restart file> previously written by
.B LAMMPS
into a dump file and immediately exit. Following <restart file>
argument, the optional word "remap" may be used. This has the
same effect like adding it to a "read_restart" command.
The syntax following the <dump file> name is identical to the
arguments of the "dump" command. See the
.B LAMMPS
manual for details on either of the two commands.
.TP
\fB\-sc <file name>\fR or \fB\-screen <file name>\fR
Specify a file for
.B LAMMPS
to write its screen information to. By default, this will be
the standard output. If <file name> is "none", (most) screen
output will be suppressed. In multi-partition mode only
some high-level all-partition information is written to the
screen or "<file name>" file, the remainder is written in a
per-partition file "screen.N" or "<file name>.N"
with "N" being the respective partition number, and unless
overridden by the \-pscreen flag (see above).
.TP
\fB\-sf <suffix>\fR or \fB\-suffix <suffix>\fR
Use variants of various styles in the input, if they exist. This is
achieved by transparently trying to convert a style named <my/style>
into <my/style/suffix> if that latter style exists, but otherwise
fall back to the former. The most useful suffixes are "gpu",
"intel", "kk", "omp", "opt", or "hybrid". These refer to styles from
optional packages that LAMMPS can be built with. The hybrid suffix is
special, as it enables, having two suffixes tried (e.g. first "intel"
and then "omp") and thus requires two arguments. Along with the
"-package" command-line switch, this is a convenient mechanism for
invoking styles from accelerator packages and setting their options
without having to edit an input script.
See https://lammps.sandia.gov/doc/Run_options.html for additional
details and discussions on command-line options.
.SH LAMMPS BASICS
LAMMPS executes by reading commands from a input script (text file),
one line at a time. When the input script ends, LAMMPS exits. Each
command causes LAMMPS to take some action. It may set or change an
internal, read and parse a file, or run a simulation. Most commands
have default settings, which means you only need to use the command
if you wish to change the default.
The ordering of commands in an input script is usually not very important
unless a command like "run" is encountered, which starts some calculation
using the current internal state. Also, if a "pair_style" or "bond_style"
other similar style command is issued that has a different name from what
was previously active, it will replace the previous style and wipe out
all corresponding "pair_coeff" or "bond_coeff" or equivalent settings.
Some commands are only valid when they follow other commands. For
example you cannot set the temperature of a group of atoms until atoms
have been defined and a group command is used to define which atoms
belong to the group of a given name. Sometimes command B will use values
that can be set by command A. This means command A must precede command
B in the input to have the desired effect. Some commands must be issued
.B before
the simulation box is defined and others can only be issued
.B after.
Many input script errors are detected by
.B LAMMPS
and an ERROR or WARNING message is printed. The documentation for
each command lists restrictions on how the command can be used, and
the chapter on errors in the
.B LAMMPS
manual gives some additional information about error messages, if possible.
.SH COPYRIGHT
© 2003--2019 Sandia Corporation
This package 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 package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of

111
doc/msi2lmp.1 Normal file
View File

@ -0,0 +1,111 @@
.TH MSI2LMP "v3.9.9" "2018-11-05"
.SH NAME
.B MSI2LMP
\- Converter for Materials Studio files to LAMMPS
.SH SYNOPSIS
.B msi2lmp
<ROOTNAME> [-class <I|1|II|2|O|0>] [-frc <path to frc file>] [-print #] [-ignore] [-nocenter] [-oldstyle] [-shift <x> <y> <z>]
.SH DESCRIPTION
.PP
.B MSI2LMP
is a tool bundled with LAMMPS to aide in the conversion of simulation
inputs from Biovia's Materials Studio software for use with LAMMPS.
It is a standalone program that generates a LAMMPS data file based on
the information in an MS .car file (atom coordinates), an .mdf file
(molecular topology and atom types) and an .frc (forcefield parameters)
file. The .car and .mdf files are specific to a molecular system while
the .frc file is specific to a forcefield (variant). The only coherency
needed between .frc and .car/.mdf files are the atom types.
.PP
.SH OPTIONS
.TP
\fB\<ROOTNAME>\fR
This has to be the first argument and is a
.B mandatory
argument. It defines the root of the file names; i.e. for a
.B <ROOTNAME>
of benzene, you have to provide the files 'benzene.car' and 'benzene.mdf'
in the current working directory.
.B msi2lmp
will then read and process those files according to its remaining settings.
All other settins are optional and have defaults as listed.
.TP
\fB\-c <I,1,II,2,O,0>\fR, \fB\-class <I,1,II,2,O,0>\fR
The \-c or \-class option selects the force field class, i.e which pair
styles and bond styles and so on are required in the LAMMPS input file.
Class I or class 1 uses similar combination of functional forms as Amber
and Charmm force field and support the force fields
.B cvff
and
.B clayff.
Class II or class 2 corresponds to the more complex force fields
.B COMPASS
and
.B pcff.
Class O or class 0 finally is an experimental and incomplete extension
and supports generating output for
.B OPLS-AA
.TP
\fB\-f <ffname>\fR, \fB\-frc <ffname>\fR
The \-c or \-frc option allows the selection of the force field parameter
file
.B<ffname>.frc.
Valid names for <ffname> with this distribution are: cvff, clayff, cvff_aug,
pcff, compass_published, cff91, and oplsaa. If the argument is a pathname,
i.e. it starts with a '.' or a '/', then this absolute path is used to read
the force field, otherwise
.B msi2lmp
will look in the folder pointed to by the environment variable
$MSI2LMP_LIBRARY. If the variable is not set, then it will look in the current
directory. The extension '.frc' is appended, if missing.
Default is to look for the cvff.frc force field file.
.TP
\fB\-p <loglevel>\fR, \fB\-print <loglevel>\fR,
Selects the amount of information messages about the progress of the
conversion printed to the screen.
.B <loglevel>
can be a number from 0 (silent except for errors) to 3 (very detailed).
.TP
\fB\-i\fR, \fB\-ignore\fR,
Ignore errors about missing parameters and use 0.0 for the respective
force constants making these no-ops. Is correct to be used for a few
molecules and settings, but often an indication, that either the atom
type assignment have errors, or the force field file is missing entries.
.TP
\fB\-n\fR, \fB\-nocenter\fR,
Do not center the box around the (geometrical) center of the atoms,
but around the origin. Default is to recenter.
.TP
\fB\-o\fR, \fB\-oldstyle\fR,
Write out a data file without style hint comments to be compatible
with old LAMMPS versions. Default is to write out those comments.
.TP
\fB-s <x> <y> <z>\fR, \fB-shift <x> <y> <z>\fR,
Shift the entire system (box and coordinates) by a vector
(default: 0.0 0.0 0.0).
.TP
.SH EXAMPLES
msi2lmp benzene -c 2 -p 1 -f ../frc_files/pcff.frc
msi2lmp benzene-class1 -c I
msi2lmp decane -c 0 -f oplsaa
.SH COPYRIGHT
© 2003--2019 Sandia Corporation
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

View File

@ -28,7 +28,7 @@ Makefile(s). Example:
cd lammps # change to the LAMMPS distribution directory
mkdir build; cd build # create a new directory (folder) for build
cmake ../cmake \[options ...\] # configuration with (command-line) cmake
cmake \[options ...\] ../cmake # configuration with (command-line) cmake
make # compilation :pre
The cmake command will detect available features, enable selected
@ -41,7 +41,8 @@ If your machine has multiple CPU cores (most do these days), using a
command like "make -jN" (with N being the number of available local
CPU cores) can be much faster. If you plan to do development on
LAMMPS or need to re-compile LAMMPS repeatedly, installation of the
ccache (= Compiler Cache) software may speed up compilation even more.
ccache (= Compiler Cache) software may speed up repeated compilation
even more.
After compilation, you can optionally copy the LAMMPS executable and
library into your system folders (by default under $HOME/.local) with:
@ -108,7 +109,8 @@ command-line options. Several useful ones are:
-D CMAKE_BUILD_TYPE=type # type = Release or Debug
-G output # style of output CMake generates
-DVARIABLE=value # setting for a LAMMPS feature to enable
-D VARIABLE=value # ditto, but cannot come after CMakeLists.txt dir :pre
-D VARIABLE=value # ditto, but cannot come after CMakeLists.txt dir
-C path/to/preset/file # load some CMake settings before configuring :pre
All the LAMMPS-specific -D variables that a LAMMPS build supports are
described on the pages linked to from the "Build"_Build.html doc page.

View File

@ -247,7 +247,10 @@ Maxwell50 = NVIDIA Maxwell generation CC 5.0
Maxwell52 = NVIDIA Maxwell generation CC 5.2
Maxwell53 = NVIDIA Maxwell generation CC 5.3
Pascal60 = NVIDIA Pascal generation CC 6.0
Pascal61 = NVIDIA Pascal generation CC 6.1 :ul
Pascal61 = NVIDIA Pascal generation CC 6.1
Volta70 = NVIDIA Volta generation CC 7.0
Volta72 = NVIDIA Volta generation CC 7.2
Turing75 = NVIDIA Turing generation CC 7.5 :ul
[CMake build]:
@ -859,23 +862,34 @@ file.
USER-INTEL package :h4,link(user-intel)
To build with this package, you must choose which hardware you want to
build for, either Intel CPUs or Intel KNLs. You should also typically
"install the USER-OMP package"_#user-omp, as it can be used in tandem
with the USER-INTEL package to good effect, as explained on the "Speed
intel"_Speed_intel.html doc page.
build for, either x86 CPUs or Intel KNLs in offload mode. You should
also typically "install the USER-OMP package"_#user-omp, as it can be
used in tandem with the USER-INTEL package to good effect, as explained
on the "Speed intel"_Speed_intel.html doc page.
[CMake build]:
-D INTEL_ARCH=value # value = cpu (default) or knl
-D BUILD_OMP=yes # also required to build with the USER-INTEl package :pre
-D INTEL_LRT_MODE=value # value = threads, none, or c++11 :pre
Requires an Intel compiler as well as the Intel TBB and MKL libraries.
In Long-range thread mode (LRT) a modified verlet style is used, that
operates the Kspace calculation in a separate thread concurrently to
other calculations. This has to be enabled in the "package intel"_package.html
command at runtime. With the setting "threads" it used the pthreads
library, while c++11 will use the built-in thread support of C++11
compilers. The option "none" skips compilation of this feature. The
default is to use "threads" if pthreads is available and otherwise "none".
Best performance is achieved with Intel hardware, Intel compilers, as well as
the Intel TBB and MKL libraries. However, the code also compiles, links, and
runs with other compilers and without TBB and MKL.
[Traditional make]:
Choose which hardware to compile for in Makefile.machine via the
following settings. See src/MAKE/OPTIONS/Makefile.intel_cpu* and
Makefile.knl files for examples.
Makefile.knl files for examples. and src/USER-INTEL/README for
additional information.
For CPUs:

View File

@ -149,26 +149,41 @@ system. Using these files you can enable/disable portions of the
available packages in LAMMPS. If you need a custom preset you can take
one of them as a starting point and customize it to your needs.
cmake -C ../cmake/presets/all_on.cmake \[OPTIONS\] ../cmake | enable all packages
cmake -C ../cmake/presets/all_off.cmake \[OPTIONS\] ../cmake | disable all packages
cmake -C ../cmake/presets/std.cmake \[OPTIONS\] ../cmake | enable standard packages
cmake -C ../cmake/presets/user.cmake \[OPTIONS\] ../cmake | enable user packages
cmake -C ../cmake/presets/std_nolib.cmake \[OPTIONS\] ../cmake | enable standard packages that do not require extra libraries
cmake -C ../cmake/presets/nolib.cmake \[OPTIONS\] ../cmake | disable all packages that do not require extra libraries
cmake -C ../cmake/presets/manual_selection.cmake \[OPTIONS\] ../cmake | example of how to create a manual selection of packages :tb(s=|,a=l)
cmake -C ../cmake/presets/all_on.cmake \[OPTIONS\] ../cmake |
enable all packages |
cmake -C ../cmake/presets/all_off.cmake \[OPTIONS\] ../cmake |
disable all packages |
cmake -C ../cmake/presets/minimal.cmake \[OPTIONS\] ../cmake |
enable just a few core packages |
cmake -C ../cmake/presets/most.cmake \[OPTIONS\] ../cmake |
enable most common packages |
cmake -C ../cmake/presets/nolib.cmake \[OPTIONS\] ../cmake |
disable packages that do require extra libraries or tools |
cmake -C ../cmake/presets/clang.cmake \[OPTIONS\] ../cmake |
change settings to use the Clang compilers by default |
cmake -C ../cmake/presets/mingw.cmake \[OPTIONS\] ../cmake |
enable all packages compatible with MinGW compilers :tb(c=2,s=|,a=l)
NOTE: Running cmake this way manipulates the variable cache in your
current build directory. You can combine presets and options with
multiple cmake runs.
current build directory. You can combine multiple presets and options
in a single cmake run, or change settings incrementally by running
cmake with new flags.
[Example:]
# build LAMMPS with all "standard" packages which don't
# use libraries and enable GPU package
# build LAMMPS with most commonly used packages, but then remove
# those requiring additional library or tools, but still enable
# GPU package and configure it for using CUDA. You can run.
mkdir build
cd build
cmake -C ../cmake/presets/std_nolib.cmake -D PKG_GPU=on ../cmake :pre
cmake -C ../cmake/presets/most.cmake -C ../cmake/presets/nolib.cmake -D PKG_GPU=on -D GPU_API=cuda ../cmake :pre
# to add another package, say BODY to the previous configuration you can run:
cmake -D PKG_BODY=on . :pre
# to reset the package selection from above to the default of no packages
# but leaving all other settings untouched. You can run:
cmake -C ../cmake/presets/no_all.cmake . :pre
:line
[Make shortcuts for installing many packages]:

View File

@ -57,10 +57,10 @@ FFT_INC = -DFFT_SINGLE # do not specify for double precision
FFT_INC = -DFFT_PACK_ARRAY # or -DFFT_PACK_POINTER or -DFFT_PACK_MEMCPY :pre
# default is FFT_PACK_ARRAY if not specified
FFT_INC = -I/usr/local/include
FFT_INC = -I/usr/local/include
FFT_PATH = -L/usr/local/lib
FFT_LIB = -lfftw3 # FFTW3 double precision
FFT_LIB = -lfftw3 -lfftw3f # FFTW3 single precision
FFT_LIB = -lfftw3 # FFTW3 double precision
FFT_LIB = -lfftw3 -lfftw3f # FFTW3 single precision
FFT_LIB = -lmkl_intel_lp64 -lmkl_sequential -lmkl_core # MKL with Intel compiler
FFT_LIB = -lmkl_gf_lp64 -lmkl_sequential -lmkl_core # MKL with GNU compier :pre
@ -179,8 +179,11 @@ e.g. from 511 to -512, which can cause diagnostics like the
mean-squared displacement, as calculated by the "compute
msd"_compute_msd.html command, to be faulty.
Note that the USER-ATC package is not currently compatible with the
"bigbig" setting.
Note that the USER-ATC package and the USER-INTEL package are currently
not compatible with the "bigbig" setting. Also, there are limitations
when using the library interface. Some functions with known issues
have been replaced by dummy calls printing a corresponding error rather
than crashing randomly or corrupting data.
Also note that the GPU package requires its lib/gpu library to be
compiled with the same size setting, or the link will fail. A CMake

View File

@ -51,11 +51,10 @@ provides a unix/linux interface to low-level Windows functions, so LAMMPS
can be compiled on Windows. The necessary (minor) modifications to LAMMPS
are included, but may not always up-to-date for recently added functionality
and the corresponding new code. A machine makefile for using cygwin for
the old build system is provided. The CMake build system is untested
for this; you will have to request that makefiles are generated and
manually set the compiler.
the old build system is provided. Using CMake for this mode of compilation
is untested and not likely to work.
When compiling for Windows [not] set the -DLAMMPS_MEMALIGN define
When compiling for Windows do [not] set the -DLAMMPS_MEMALIGN define
in the LMP_INC makefile variable and add -lwsock32 -lpsapi to the linker
flags in LIB makefile variable. Try adding -static-libgcc or -static or
both to the linker flags when your resulting LAMMPS Windows executable
@ -79,7 +78,13 @@ probably the currently best tested and supported way to build LAMMPS
executables for Windows. There are makefiles provided for the
traditional build system, but CMake has also been successfully tested
using the mingw32-cmake and mingw64-cmake wrappers that are bundled
with the cross-compiler environment on Fedora machines.
with the cross-compiler environment on Fedora machines. A CMake preset
selecting all packages compatible with this cross-compilation build
is provided. You likely need to disable the GPU package unless you
download and install the contents of the pre-compiled "OpenCL ICD loader
library"_https://download.lammps.org/thirdparty/opencl-win-devel.tar.gz
into your MinGW64 cross-compiler environment. The cross-compilation
currently will only produce non-MPI serial binaries.
Please keep in mind, though, that this only applies to compiling LAMMPS.
Whether the resulting binaries do work correctly is no tested by the

View File

@ -83,6 +83,7 @@ An alphabetic list of all general LAMMPS commands.
"molecule"_molecule.html,
"ndx2group"_group2ndx.html,
"neb"_neb.html,
"neb/spin"_neb_spin.html,
"neigh_modify"_neigh_modify.html,
"neighbor"_neighbor.html,
"newton"_newton.html,

View File

@ -116,6 +116,7 @@ Actions:
"minimize"_minimize.html,
"neb"_neb.html,
"neb_spin"_neb_spin.html,
"prd"_prd.html,
"rerun"_rerun.html,
"run"_run.html,

View File

@ -61,6 +61,7 @@ OPT.
"edpd/source"_fix_dpd_source.html,
"efield"_fix_efield.html,
"ehex"_fix_ehex.html,
"electron/stopping"_fix_electron_stopping.html,
"enforce2d (k)"_fix_enforce2d.html,
"eos/cv"_fix_eos_cv.html,
"eos/table"_fix_eos_table.html,
@ -106,6 +107,7 @@ OPT.
"mvv/edpd"_fix_mvv_dpd.html,
"mvv/tdpd"_fix_mvv_dpd.html,
"neb"_fix_neb.html,
"neb_spin"_fix_neb_spin.html,
"nph (ko)"_fix_nh.html,
"nph/asphere (o)"_fix_nph_asphere.html,
"nph/body"_fix_nph_body.html,

View File

@ -80,6 +80,8 @@ OPT.
"dpd/fdt/energy (k)"_pair_dpd_fdt.html,
"dpd/tstat (go)"_pair_dpd.html,
"dsmc"_pair_dsmc.html,
"e3b"_pair_e3b.html,
"drip"_pair_drip.html,
"eam (gikot)"_pair_eam.html,
"eam/alloy (gikot)"_pair_eam.html,
"eam/cd (o)"_pair_eam.html,
@ -98,6 +100,7 @@ OPT.
"gran/hertz/history (o)"_pair_gran.html,
"gran/hooke (o)"_pair_gran.html,
"gran/hooke/history (ko)"_pair_gran.html,
"granular"_pair_granular.html,
"gw"_pair_gw.html,
"gw/zbl"_pair_gw.html,
"hbond/dreiding/lj (o)"_pair_hbond_dreiding.html,

BIN
doc/src/Eqs/e3b.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

15
doc/src/Eqs/e3b.tex Normal file
View File

@ -0,0 +1,15 @@
\documentclass[12pt]{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
E =& E_2 \sum_{i,j}e^{-k_2 r_{ij}} + E_A \sum_{\substack{i,j,k,\ell \\\in \textrm{type A}}} f(r_{ij})f(r_{k\ell}) + E_B \sum_{\substack{i,j,k,\ell \\\in \textrm{type B}}} f(r_{ij})f(r_{k\ell}) + E_C \sum_{\substack{i,j,k,\ell \\\in \textrm{type C}}} f(r_{ij})f(r_{k\ell}) \\
f(r) =& e^{-k_3 r}s(r) \\
s(r) =& \begin{cases}
1 & r<R_s \\
\displaystyle\frac{(R_f-r)^2(R_f-3R_s+2r)}{(R_f-R_s)^3} & R_s\leq r\leq R_f \\
0 & r>R_f\\
\end{cases}
\end{align*}
\end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,21 @@
\documentclass[preview]{standalone}
\usepackage{varwidth}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath,amssymb,amsthm,bm}
\begin{document}
\begin{varwidth}{50in}
\begin{equation}
\bm{H}_{cubic} = -\sum_{{ i}=1}^{N} K_{1}
\Big[
\left(\vec{s}_{i} \cdot \vec{n1} \right)^2
\left(\vec{s}_{i} \cdot \vec{n2} \right)^2 +
\left(\vec{s}_{i} \cdot \vec{n2} \right)^2
\left(\vec{s}_{i} \cdot \vec{n3} \right)^2 +
\left(\vec{s}_{i} \cdot \vec{n1} \right)^2
\left(\vec{s}_{i} \cdot \vec{n3} \right)^2 \Big]
+K_{2}^{(c)} \left(\vec{s}_{i} \cdot \vec{n1} \right)^2
\left(\vec{s}_{i} \cdot \vec{n2} \right)^2
\left(\vec{s}_{i} \cdot \vec{n3} \right)^2 \nonumber
\end{equation}
\end{varwidth}
\end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@ -0,0 +1,15 @@
\documentclass[preview]{standalone}
\usepackage{varwidth}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath, amssymb, graphics, setspace}
\begin{document}
\begin{varwidth}{50in}
\begin{equation}
\omega_i^{\nu} =
(\nu - 1) \Delta \omega_i
{\rm ~~and~~} \Delta \omega_i = \frac{\omega_i}{Q-1}
, \nonumber
\end{equation}
\end{varwidth}
\end{document}

BIN
doc/src/Eqs/neb_spin_k.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@ -0,0 +1,16 @@
\documentclass[preview]{standalone}
\usepackage{varwidth}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath, amssymb, graphics, setspace}
\begin{document}
\begin{varwidth}{50in}
\begin{equation}
\vec{k}_i =
\frac{\vec{m}_i^I \times \vec{m}_i^F}{\left|\vec{m}_i^I
\times \vec{m}_i^F\right|}
%&{\rm ~if~}& \vec{m}_i^I \times \vec{m}_i^F
, \nonumber
\end{equation}
\end{varwidth}
\end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,16 @@
\documentclass[preview]{standalone}
\usepackage{varwidth}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath, amssymb, graphics, setspace}
\begin{document}
\begin{varwidth}{50in}
\begin{equation}
\vec{m}_i^{\nu} = \vec{m}_i^{I} \cos(\omega_i^{\nu})
+ (\vec{k}_i \times \vec{m}_i^{I}) \sin(\omega_i^{\nu})
+ (1.0-\cos(\omega_i^{\nu})) \vec{k}_i (\vec{k}_i\cdot
\vec{m}_i^{I})
, \nonumber
\end{equation}
\end{varwidth}
\end{document}

BIN
doc/src/Eqs/pair_drip.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

14
doc/src/Eqs/pair_drip.tex Normal file
View File

@ -0,0 +1,14 @@
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{bm}
\begin{document}
\begin{eqnarray*}
E &=& \frac{1}{2} \sum_{i} \sum_{j\notin\text{layer}\,i} \phi_{ij} \\\phi_{ij} &=& f_\text{c}(x_r) \left[ e^{-\lambda(r_{ij} - z_0 )} \left[C+f(\rho_{ij})+ g(\rho_{ij}, \{\alpha_{ij}^{(m)}\}) \right]- A\left (\frac{z_0}{r_{ij}} \right)^6 \right] \\
\end{eqnarray*}
\end{document}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -1,9 +1,9 @@
\documentclass[12pt]{article}
\pagestyle{empty}
\begin{document}
$$
E(r) = \frac{A}{r^{12}} - \frac{A}{r^{6}}
E(r) = \frac{A}{r^{12}} - \frac{B}{r^{6}}
$$
\end{document}

View File

@ -11,7 +11,7 @@ Section"_Tools.html :c
Example scripts :h3
The LAMMPS distribution includes an examples sub-directory with many
sample problems. Many are 2d models that run quickly are are
sample problems. Many are 2d models that run quickly and are
straightforward to visualize, requiring at most a couple of minutes to
run on a desktop machine. Each problem has an input script (in.*) and
produces a log file (log.*) when it runs. Some use a data file

View File

@ -148,7 +148,7 @@ END_RST -->
<!-- HTML_ONLY -->
"CHARMM, AMBER, and DREIDING force fields"_Howto_bioFF.html
"CHARMM, AMBER, COMPASS, and DREIDING force fields"_Howto_bioFF.html
"TIP3P water model"_Howto_tip3p.html
"TIP4P water model"_Howto_tip4p.html
"SPC water model"_Howto_spc.html :all(b)

View File

@ -7,29 +7,31 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
:line
CHARMM, AMBER, and DREIDING force fields :h3
CHARMM, AMBER, COMPASS, and DREIDING force fields :h3
A force field has 2 parts: the formulas that define it and the
coefficients used for a particular system. Here we only discuss
formulas implemented in LAMMPS that correspond to formulas commonly
used in the CHARMM, AMBER, and DREIDING force fields. Setting
coefficients is done in the input data file via the
"read_data"_read_data.html command or in the input script with
used in the CHARMM, AMBER, COMPASS, and DREIDING force fields. Setting
coefficients is done either from special sections in an input data file
via the "read_data"_read_data.html command or in the input script with
commands like "pair_coeff"_pair_coeff.html or
"bond_coeff"_bond_coeff.html. See the "Tools"_Tools.html doc page for
additional tools that can use CHARMM or AMBER to assign force field
coefficients and convert their output into LAMMPS input.
"bond_coeff"_bond_coeff.html and so on. See the "Tools"_Tools.html doc
page for additional tools that can use CHARMM, AMBER, or Materials
Studio generated files to assign force field coefficients and convert
their output into LAMMPS input.
See "(MacKerell)"_#howto-MacKerell for a description of the CHARMM force
field. See "(Cornell)"_#howto-Cornell for a description of the AMBER force
field.
field. See "(Cornell)"_#howto-Cornell for a description of the AMBER
force field. See "(Sun)"_#howto-Sun for a description of the COMPASS
force field.
:link(charmm,http://www.scripps.edu/brooks)
:link(amber,http://amber.scripps.edu)
These style choices compute force field formulas that are consistent
with common options in CHARMM or AMBER. See each command's
documentation for the formula it computes.
The interaction styles listed below compute force field formulas that
are consistent with common options in CHARMM or AMBER. See each
command's documentation for the formula it computes.
"bond_style"_bond_harmonic.html harmonic
"angle_style"_angle_charmm.html charmm
@ -44,28 +46,54 @@ documentation for the formula it computes.
"special_bonds"_special_bonds.html charmm
"special_bonds"_special_bonds.html amber :ul
NOTE: For CHARMM, newer {charmmfsw} or {charmmfsh} styles were
released in March 2017. We recommend they be used instead of the
older {charmm} styles. See discussion of the differences on the "pair
charmm"_pair_charmm.html and "dihedral charmm"_dihedral_charmm.html
doc pages.
NOTE: For CHARMM, newer {charmmfsw} or {charmmfsh} styles were released
in March 2017. We recommend they be used instead of the older {charmm}
styles. See discussion of the differences on the "pair
charmm"_pair_charmm.html and "dihedral charmm"_dihedral_charmm.html doc
pages.
COMPASS is a general force field for atomistic simulation of common
organic molecules, inorganic small molecules, and polymers which was
developed using ab initio and empirical parameterization techniques.
See the "Tools"_Tools.html doc page for the msi2lmp tool for creating
LAMMPS template input and data files from BIOVIA's Materials Studio
files. Please note that the msi2lmp tool is very old and largely
unmaintained, so it does not support all features of Materials Studio
provided force field files, especially additions during the last decade.
You should watch the output carefully and compare results, where
possible. See "(Sun)"_#howto-Sun for a description of the COMPASS force
field.
These interaction styles listed below compute force field formulas that
are consistent with the COMPASS force field. See each command's
documentation for the formula it computes.
"bond_style"_bond_class2.html class2
"angle_style"_angle_class2.html class2
"dihedral_style"_dihedral_class2.html class2
"improper_style"_improper_class2.html class2 :ul
"pair_style"_pair_class2.html lj/class2
"pair_style"_pair_class2.html lj/class2/coul/cut
"pair_style"_pair_class2.html lj/class2/coul/long :ul
"special_bonds"_special_bonds.html lj/coul 0 0 1 :ul
DREIDING is a generic force field developed by the "Goddard
group"_http://www.wag.caltech.edu at Caltech and is useful for
predicting structures and dynamics of organic, biological and
main-group inorganic molecules. The philosophy in DREIDING is to use
general force constants and geometry parameters based on simple
hybridization considerations, rather than individual force constants
and geometric parameters that depend on the particular combinations of
atoms involved in the bond, angle, or torsion terms. DREIDING has an
"explicit hydrogen bond term"_pair_hbond_dreiding.html to describe
interactions involving a hydrogen atom on very electronegative atoms
(N, O, F).
predicting structures and dynamics of organic, biological and main-group
inorganic molecules. The philosophy in DREIDING is to use general force
constants and geometry parameters based on simple hybridization
considerations, rather than individual force constants and geometric
parameters that depend on the particular combinations of atoms involved
in the bond, angle, or torsion terms. DREIDING has an "explicit hydrogen
bond term"_pair_hbond_dreiding.html to describe interactions involving a
hydrogen atom on very electronegative atoms (N, O, F).
See "(Mayo)"_#howto-Mayo for a description of the DREIDING force field
These style choices compute force field formulas that are consistent
with the DREIDING force field. See each command's
The interaction styles listed below compute force field formulas that
are consistent with the DREIDING force field. See each command's
documentation for the formula it computes.
"bond_style"_bond_harmonic.html harmonic
@ -100,6 +128,9 @@ Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
[(Cornell)] Cornell, Cieplak, Bayly, Gould, Merz, Ferguson,
Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).
:link(howto-Sun)
[(Sun)] Sun, J. Phys. Chem. B, 102, 7338-7364 (1998).
:link(howto-Mayo)
[(Mayo)] Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
(1990).

View File

@ -29,3 +29,5 @@ diffusion coefficient. The instantaneous VACF values can be
accumulated in a vector via the "fix vector"_fix_vector.html command,
and time integrated via the "variable trap"_variable.html function,
and thus extract D.
:line

View File

@ -274,7 +274,7 @@ crash. Even without reaching this extreme case, the correlation
between nearby dipoles on the same molecule may be exaggerated. Often,
special bond relations prevent bonded neighboring atoms to see the
charge of each other's DP, so that the problem does not always appear.
It is possible to use screened dipole dipole interactions by using the
It is possible to use screened dipole-dipole interactions by using the
"{pair_style thole}"_pair_thole.html. This is implemented as a
correction to the Coulomb pair_styles, which dampens at short distance
the interactions between the charges representing the induced dipoles.

View File

@ -166,9 +166,6 @@ void lammps_gather_atoms_subset(void *, char *, int, int, int, int *, void *)
void lammps_scatter_atoms(void *, char *, int, int, void *)
void lammps_scatter_atoms_subset(void *, char *, int, int, int, int *, void *) :pre
void lammps_create_atoms(void *, int, tagint *, int *, double *, double *,
imageint *, int) :pre
The gather functions collect peratom info of the requested type (atom
coords, atom types, forces, etc) from all processors, and returns the
same vector of values to each calling processor. The scatter
@ -176,6 +173,11 @@ functions do the inverse. They distribute a vector of peratom values,
passed by all calling processors, to individual atoms, which may be
owned by different processors.
IMPORTANT NOTE: These functions are not compatible with the
-DLAMMPS_BIGBIG setting when compiling LAMMPS. Dummy functions
that result in an error message and abort will be substituted
instead of resulting in random crashes and memory corruption.
The lammps_gather_atoms() function does this for all N atoms in the
system, ordered by atom ID, from 1 to N. The
lammps_gather_atoms_concat() function does it for all N atoms, but
@ -196,6 +198,9 @@ those values to each atom in the system. The
lammps_scatter_atoms_subset() function takes a subset of IDs as an
argument and only scatters those values to the owning atoms.
void lammps_create_atoms(void *, int, tagint *, int *, double *, double *,
imageint *, int) :pre
The lammps_create_atoms() function takes a list of N atoms as input
with atom types and coords (required), an optionally atom IDs and
velocities and image flags. It uses the coords of each atom to assign

View File

@ -17,6 +17,7 @@ periodically.
These are the relevant commands:
"neb"_neb.html for nudged elastic band calculations
"neb_spin"_neb_spin.html for magnetic nudged elastic band calculations
"prd"_prd.html for parallel replica dynamics
"tad"_tad.html for temperature accelerated dynamics
"temper"_temper.html for parallel tempering

View File

@ -10,7 +10,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
Magnetic spins :h3
The magnetic spin simulations are enabled by the SPIN package, whose
implementation is detailed in "Tranchida"_#Tranchida7.
implementation is detailed in "Tranchida"_#Tranchida.
The model represents the simulation of atomic magnetic spins coupled
to lattice vibrations. The dynamics of those magnetic spins can be used
@ -36,13 +36,28 @@ A Langevin thermostat can be applied to those magnetic spins using
"fix langevin/spin"_fix_langevin_spin.html. Typically, this thermostat
can be coupled to another Langevin thermostat applied to the atoms
using "fix langevin"_fix_langevin.html in order to simulate
thermostatted spin-lattice system.
thermostatted spin-lattice systems.
The magnetic Gilbert damping can also be applied using "fix
langevin/spin"_fix_langevin_spin.html. It allows to either dissipate
the thermal energy of the Langevin thermostat, or to perform a
relaxation of the magnetic configuration toward an equilibrium state.
The command "fix setforce/spin"_fix_setforce.html allows to set the
components of the magnetic precession vectors (while erasing and
replacing the previously computed magnetic precession vectors on
the atom).
This command can be used to freeze the magnetic moment of certain
atoms in the simulation by zeroing their precession vector.
The command "fix nve/spin"_fix_nve_spin.html can be used to
perform a symplectic integration of the combined dynamics of spins
and atomic motions.
The minimization style "min/spin"_min_spin.html can be applied
to the spins to perform a minimization of the spin configuration.
All the computed magnetic properties can be output by two main
commands. The first one is "compute spin"_compute_spin.html, that
enables to evaluate magnetic averaged quantities, such as the total
@ -54,6 +69,6 @@ magnetic spin, or the magnetic force acting on this spin.
:line
:link(Tranchida7)
:link(Tranchida)
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
arXiv preprint arXiv:1801.10233, (2018).
Journal of Computational Physics, 372, 406-425, (2018).

View File

@ -10,7 +10,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
TIP3P water model :h3
The TIP3P water model as implemented in CHARMM
"(MacKerell)"_#howto-MacKerell specifies a 3-site rigid water molecule with
"(MacKerell)"_#howto-tip3p specifies a 3-site rigid water molecule with
charges and Lennard-Jones parameters assigned to each of the 3 atoms.
In LAMMPS the "fix shake"_fix_shake.html command can be used to hold
the two O-H bonds and the H-O-H angle rigid. A bond style of
@ -60,6 +60,10 @@ models"_http://en.wikipedia.org/wiki/Water_model.
:line
:link(howto-tip3p)
[(MacKerell)] MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
:link(Jorgensen1)
[(Jorgensen)] Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem
Phys, 79, 926 (1983).

View File

@ -52,7 +52,7 @@ as if you unpacked a current LAMMPS tarball, with the exception, that
the HTML documentation files are not included. They can be fetched
from the LAMMPS website by typing "make fetch" in the doc directory.
Or they can be generated from the content provided in doc/src by
typing "make html" from the the doc directory.
typing "make html" from the doc directory.
After initial cloning, as bug fixes and new features are added to
LAMMPS, as listed on "this page"_Errors_bugs.html, you can stay

View File

@ -40,7 +40,7 @@ as if you unpacked a current LAMMPS tarball, with the exception, that
the HTML documentation files are not included. They can be fetched
from the LAMMPS website by typing "make fetch" in the doc directory.
Or they can be generated from the content provided in doc/src by
typing "make html" from the the doc directory.
typing "make html" from the doc directory.
After initial checkout, as bug fixes and new features are added to
LAMMPS, as listed on "this page"_Errors_bugs.html, you can stay

View File

@ -1,7 +1,7 @@
<!-- HTML_ONLY -->
<HEAD>
<TITLE>LAMMPS Users Manual</TITLE>
<META NAME="docnumber" CONTENT="29 Mar 2019 version">
<META NAME="docnumber" CONTENT="15 May 2019 version">
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
</HEAD>
@ -21,7 +21,7 @@
:line
LAMMPS Documentation :c,h1
29 Mar 2019 version :c,h2
15 May 2019 version :c,h2
"What is a LAMMPS version?"_Manual_version.html

View File

@ -706,7 +706,7 @@ PERI package :link(PKG-PERI),h4
An atom style, several pair styles which implement different
Peridynamics materials models, and several computes which calculate
diagnostics. Peridynamics is a a particle-based meshless continuum
diagnostics. Peridynamics is a particle-based meshless continuum
model.
[Authors:] The original package was created by Mike Parks (Sandia).
@ -905,7 +905,7 @@ SPIN package :link(PKG-SPIN),h4
Model atomic magnetic spins classically, coupled to atoms moving in
the usual manner via MD. Various pair, fix, and compute styles.
[Author:] Julian Tranchida (Sandia).
[Author:] Julien Tranchida (Sandia).
[Supporting info:]
@ -918,6 +918,7 @@ src/SPIN: filenames -> commands
"fix nve/spin"_fix_nve_spin.html
"fix precession/spin"_fix_precession_spin.html
"compute spin"_compute_spin.html
"neb/spin"_neb_spin.html
examples/SPIN :ul
:line
@ -1228,7 +1229,7 @@ isothermal, isoenergetic, isobaric and isenthalpic conditions are
included. These enable long timesteps via the Shardlow splitting
algorithm.
[Authors:] Jim Larentzos (ARL), Tim Mattox (Engility Corp), and and John
[Authors:] Jim Larentzos (ARL), Tim Mattox (Engility Corp), and John
Brennan (ARL).
[Supporting info:]
@ -1536,7 +1537,7 @@ USER-MESO package :link(PKG-USER-MESO),h4
[Contents:]
Several extensions of the the dissipative particle dynamics (DPD)
Several extensions of the dissipative particle dynamics (DPD)
method. Specifically, energy-conserving DPD (eDPD) that can model
non-isothermal processes, many-body DPD (mDPD) for simulating
vapor-liquid coexistence, and transport DPD (tDPD) for modeling

View File

@ -180,7 +180,7 @@ doubles is returned, one value per atom, which you can use via normal
Python subscripting. The values will be zero for atoms not in the
specified group.
The get_thermo() method returns returns the current value of a thermo
The get_thermo() method returns the current value of a thermo
keyword as a float.
The get_natoms() method returns the total number of atoms in the

View File

@ -79,7 +79,7 @@ stdin.
Explicitly enable or disable KOKKOS support, as provided by the KOKKOS
package. Even if LAMMPS is built with this package, as described
in "Speed kokkos"_Speed_kokkos.html, this switch must be set to enable
running with the KOKKOS-enabled styles the package provides. If the
running with KOKKOS-enabled styles the package provides. If the
switch is not set (the default), LAMMPS will operate as if the KOKKOS
package were not installed; i.e. you can run standard LAMMPS or with
the GPU or USER-OMP packages, for testing or benchmarking purposes.
@ -242,7 +242,7 @@ processors.
Running with multiple partitions can be useful for running
"multi-replica simulations"_Howto_replica.html, where each replica
runs on on one or a few processors. Note that with MPI installed on a
runs on one or a few processors. Note that with MPI installed on a
machine (e.g. your desktop), you can run on more (virtual) processors
than you have physical processors.
@ -448,7 +448,7 @@ partition screen files file.N.
[-suffix style args] :link(suffix)
Use variants of various styles if they exist. The specified style can
be {cuda}, {gpu}, {intel}, {kk}, {omp}, {opt}, or {hybrid}. These
be {gpu}, {intel}, {kk}, {omp}, {opt}, or {hybrid}. These
refer to optional packages that LAMMPS can be built with, as described
in "Accelerate performance"_Speed.html. The "gpu" style corresponds to the
GPU package, the "intel" style to the USER-INTEL package, the "kk"

View File

@ -93,7 +93,7 @@ monitor thread utilization and load balance is provided. A new {Thread
timings} section is also added, which lists the time spent in reducing
the per-thread data elements to the storage for non-threaded
computation. These thread timings are measured for the first MPI rank
only and and thus, because the breakdown for MPI tasks can change from
only and thus, because the breakdown for MPI tasks can change from
MPI rank to MPI rank, this breakdown can be very different for
individual ranks. Here is an example output for this section:

View File

@ -24,7 +24,7 @@ LAMMPS to run on the CPU cores and co-processor cores simultaneously.
Angle Styles: charmm, harmonic :ulb,l
Bond Styles: fene, fourier, harmonic :l
Dihedral Styles: charmm, harmonic, opls :l
Dihedral Styles: charmm, fourier, harmonic, opls :l
Fixes: nve, npt, nvt, nvt/sllod, nve/asphere :l
Improper Styles: cvff, harmonic :l
Pair Styles: airebo, airebo/morse, buck/coul/cut, buck/coul/long,

View File

@ -111,16 +111,10 @@ Makefile.kokkos_mpi_only) will give better performance than the OpenMP
back end (i.e. Makefile.kokkos_omp) because some of the overhead to make
the code thread-safe is removed.
NOTE: The default for the "package kokkos"_package.html command is to
use "full" neighbor lists and set the Newton flag to "off" for both
pairwise and bonded interactions. However, when running on CPUs, it
will typically be faster to use "half" neighbor lists and set the
Newton flag to "on", just as is the case for non-accelerated pair
styles. It can also be faster to use non-threaded communication. Use
the "-pk kokkos" "command-line switch"_Run_options.html to change the
default "package kokkos"_package.html options. See its doc page for
details and default settings. Experimenting with its options can
provide a speed-up for specific calculations. For example:
NOTE: Use the "-pk kokkos" "command-line switch"_Run_options.html to
change the default "package kokkos"_package.html options. See its doc
page for details and default settings. Experimenting with its options
can provide a speed-up for specific calculations. For example:
mpirun -np 16 lmp_kokkos_mpi_only -k on -sf kk -pk kokkos newton on neigh half comm no -in in.lj # Newton on, Half neighbor list, non-threaded comm :pre
@ -190,19 +184,18 @@ tasks/node. The "-k on t Nt" command-line switch sets the number of
threads/task as Nt. The product of these two values should be N, i.e.
256 or 264.
NOTE: The default for the "package kokkos"_package.html command is to
use "full" neighbor lists and set the Newton flag to "off" for both
pairwise and bonded interactions. When running on KNL, this will
typically be best for pair-wise potentials. For many-body potentials,
using "half" neighbor lists and setting the Newton flag to "on" may be
faster. It can also be faster to use non-threaded communication. Use
the "-pk kokkos" "command-line switch"_Run_options.html to change the
default "package kokkos"_package.html options. See its doc page for
details and default settings. Experimenting with its options can
provide a speed-up for specific calculations. For example:
NOTE: The default for the "package kokkos"_package.html command when
running on KNL is to use "half" neighbor lists and set the Newton flag
to "on" for both pairwise and bonded interactions. This will typically
be best for many-body potentials. For simpler pair-wise potentials, it
may be faster to use a "full" neighbor list with Newton flag to "off".
Use the "-pk kokkos" "command-line switch"_Run_options.html to change
the default "package kokkos"_package.html options. See its doc page for
details and default settings. Experimenting with its options can provide
a speed-up for specific calculations. For example:
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos comm no -in in.lj # Newton off, full neighbor list, non-threaded comm
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos newton on neigh half comm no -in in.reax # Newton on, half neighbor list, non-threaded comm :pre
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos comm host -in in.reax # Newton on, half neighbor list, threaded comm
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos newton off neigh full comm no -in in.lj # Newton off, full neighbor list, non-threaded comm :pre
NOTE: MPI tasks and threads should be bound to cores as described
above for CPUs.
@ -236,19 +229,19 @@ one or more nodes, each with two GPUs:
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 1 node, 2 MPI tasks/node, 2 GPUs/node
mpirun -np 32 -ppn 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 16 nodes, 2 MPI tasks/node, 2 GPUs/node (32 GPUs total) :pre
NOTE: The default for the "package kokkos"_package.html command is to
use "full" neighbor lists and set the Newton flag to "off" for both
pairwise and bonded interactions, along with threaded communication.
When running on Maxwell or Kepler GPUs, this will typically be
best. For Pascal GPUs, using "half" neighbor lists and setting the
Newton flag to "on" may be faster. For many pair styles, setting the
neighbor binsize equal to the ghost atom cutoff will give speedup.
Use the "-pk kokkos" "command-line switch"_Run_options.html to change
the default "package kokkos"_package.html options. See its doc page
for details and default settings. Experimenting with its options can
provide a speed-up for specific calculations. For example:
NOTE: The default for the "package kokkos"_package.html command when
running on GPUs is to use "full" neighbor lists and set the Newton flag
to "off" for both pairwise and bonded interactions, along with threaded
communication. When running on Maxwell or Kepler GPUs, this will
typically be best. For Pascal GPUs, using "half" neighbor lists and
setting the Newton flag to "on" may be faster. For many pair styles,
setting the neighbor binsize equal to twice the CPU default value will
give speedup, which is the default when running on GPUs. Use the "-pk
kokkos" "command-line switch"_Run_options.html to change the default
"package kokkos"_package.html options. See its doc page for details and
default settings. Experimenting with its options can provide a speed-up
for specific calculations. For example:
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos binsize 2.8 -in in.lj # Set binsize = neighbor ghost cutoff
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos newton on neigh half binsize 2.8 -in in.lj # Newton on, half neighbor list, set binsize = neighbor ghost cutoff :pre
NOTE: For good performance of the KOKKOS package on GPUs, you must

View File

@ -77,6 +77,7 @@ Post-processing tools :h3
"python"_#pythontools,
"reax"_#reax_tool,
"smd"_#smd,
"spin"_#spin,
"xmgrace"_#xmgrace :tb(c=6,ea=c,a=l)
Miscellaneous tools :h3
@ -511,6 +512,20 @@ Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de).
:line
spin tool :h4,link(spin)
The spin sub-directory contains a C file interpolate.c which can
be compiled and used to perform a cubic polynomial interpolation of
the MEP following a GNEB calculation.
See the README file in tools/spin/interpolate_gneb for more details.
This tool was written by the SPIN package author, Julien
Tranchida at Sandia National Labs (jtranch at sandia.gov, and by Aleksei
Ivanov, at University of Iceland (ali5 at hi.is).
:line
vim tool :h4,link(vim)
The files in the tools/vim directory are add-ons to the VIM editor

View File

@ -67,6 +67,7 @@ Commands :h1
minimize
molecule
neb
neb_spin
neigh_modify
neighbor
newton

View File

@ -468,7 +468,7 @@ property/chunk"_compute_property_chunk.html command.
NOTE: The compression operation requires global communication across
all processors to share their chunk ID values. It can require large
memory on every processor to store them, even after they are
compressed, if there are are a large number of unique chunk IDs with
compressed, if there are a large number of unique chunk IDs with
atoms assigned to them. It uses a STL map to find unique chunk IDs
and store them in sorted order. Each time an atom is assigned a
compressed chunk ID, it must access the STL map. All of this means

View File

@ -49,7 +49,7 @@ For inputs that are computes, they must be a compute that calculates
per-chunk values. These are computes whose style names end in
"/chunk".
For inputs that are fixes, they should be a a fix that calculates
For inputs that are fixes, they should be a fix that calculates
per-chunk values. For example, "fix ave/chunk"_fix_ave_chunk.html or
"fix ave/time"_fix_ave_time.html (assuming it is time-averaging
per-chunk data).

View File

@ -96,7 +96,7 @@ group. The argument {maxedge} of the this keyword is the largest number
of edges on a single Voronoi cell face expected to occur in the
sample. This keyword adds the generation of a global vector with
{maxedge}+1 entries. The last entry in the vector contains the number of
faces with with more than {maxedge} edges. Since the polygon with the
faces with more than {maxedge} edges. Since the polygon with the
smallest amount of edges is a triangle, entries 1 and 2 of the vector
will always be zero.

View File

@ -47,7 +47,7 @@ division by sin(74.4)*sin(48.1) (the minima positions for theta1 and theta2).
The following coefficients must be defined for each dihedral type via the
"dihedral_coeff"_dihedral_coeff.html command as in the example above, or in
the Dihedral Coeffs section of a data file file read by the
the Dihedral Coeffs section of a data file read by the
"read_data"_read_data.html command:
n (integer >= 1)

View File

@ -174,7 +174,7 @@ radians instead of degrees. (Note: This changes the way the forces
are scaled in the 4th column of the data file.)
The optional "CHECKU" keyword is followed by a filename. This allows
the user to save all of the the {Ntable} different entries in the
the user to save all of the {Ntable} different entries in the
interpolated energy table to a file to make sure that the interpolated
function agrees with the user's expectations. (Note: You can
temporarily increase the {Ntable} parameter to a high value for this

View File

@ -21,7 +21,7 @@ dump ID group-ID style N file args :pre
ID = user-assigned name for the dump :ulb,l
group-ID = ID of the group of atoms to be dumped :l
style = {atom} or {atom/gz} or {atom/mpiio} or {cfg} or {cfg/gz} or {cfg/mpiio} or {custom} or {custom/gz} or {custom/mpiio} or {dcd} or {h5md} or {image} or or {local} or {molfile} or {movie} or {netcdf} or {netcdf/mpiio} or {vtk} or {xtc} or {xyz} or {xyz/gz} or {xyz/mpiio} :l
style = {atom} or {atom/gz} or {atom/mpiio} or {cfg} or {cfg/gz} or {cfg/mpiio} or {custom} or {custom/gz} or {custom/mpiio} or {dcd} or {h5md} or {image} or {local} or {molfile} or {movie} or {netcdf} or {netcdf/mpiio} or {vtk} or {xtc} or {xyz} or {xyz/gz} or {xyz/mpiio} :l
N = dump every this many timesteps :l
file = name of file to write dump info to :l
args = list of arguments for a particular style :l
@ -196,7 +196,7 @@ For post-processing purposes the {atom}, {local}, and {custom} text
files are self-describing in the following sense.
The dimensions of the simulation box are included in each snapshot.
For an orthogonal simulation box this information is is formatted as:
For an orthogonal simulation box this information is formatted as:
ITEM: BOX BOUNDS xx yy zz
xlo xhi
@ -619,7 +619,7 @@ should be replaced by the actual name of the variable that has been
defined previously in the input script. Only an atom-style variable
can be referenced, since it is the only style that generates per-atom
values. Variables of style {atom} can reference individual atom
attributes, per-atom atom attributes, thermodynamic keywords, or
attributes, per-atom attributes, thermodynamic keywords, or
invoke other computes, fixes, or variables when they are evaluated, so
this is a very general means of creating quantities to output to a
dump file.

View File

@ -310,7 +310,7 @@ NOTE: Atom and molecule IDs are stored internally as 4-byte or 8-byte
signed integers, depending on how LAMMPS was compiled. When
specifying the {format int} option you can use a "%d"-style format
identifier in the format string and LAMMPS will convert this to the
corresponding 8-byte form it it is needed when outputting those
corresponding 8-byte form if it is needed when outputting those
values. However, when specifying the {line} option or {format M
string} option for those values, you should specify a format string
appropriate for an 8-byte signed integer, e.g. one with "%ld", if

View File

@ -201,6 +201,7 @@ accelerated styles exist.
"edpd/source"_fix_dpd_source.html -
"efield"_fix_efield.html - impose electric field on system
"ehex"_fix_ehex.html - enhanced heat exchange algorithm
"electron/stopping"_fix_electron_stopping.html - electronic stopping power as a friction force
"enforce2d"_fix_enforce2d.html - zero out z-dimension velocity and force
"eos/cv"_fix_eos_cv.html -
"eos/table"_fix_eos_table.html -
@ -320,20 +321,16 @@ accelerated styles exist.
"restrain"_fix_restrain.html - constrain a bond, angle, dihedral
"rhok"_fix_rhok.html -
"rigid"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NVE integration
"rigid/nph"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NPH integration
"rigid/nph/small"_fix_rigid.html -
"rigid/npt"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NPT integration
"rigid/npt/small"_fix_rigid.html -
"rigid/nve"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with alternate NVE integration
"rigid/nve/small"_fix_rigid.html -
"rigid/nvt"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NVT integration
"rigid/nvt/small"_fix_rigid.html -
"rigid/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NVE integration
"rigid/small/nph"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NPH integration
"rigid/small/npt"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NPT integration
"rigid/small/nve"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with alternate NVE integration
"rigid/small/nvt"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NVT integration
"rigid/meso"_fix_rigid_meso.html - constrain clusters of mesoscopic SPH/SDPD particles to move as a rigid body
"rigid/nph"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NPH integration
"rigid/nph/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NPH integration
"rigid/npt"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NPT integration
"rigid/npt/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NPT integration
"rigid/nve"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with alternate NVE integration
"rigid/nve/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with alternate NVE integration
"rigid/nvt"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NVT integration
"rigid/nvt/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NVT integration
"rigid/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NVE integration
"rx"_fix_rx.html -
"saed/vtk"_fix_saed_vtk.html -
"setforce"_fix_setforce.html - set the force on each atom

View File

@ -361,7 +361,7 @@ computes that calculate a temperature to see which ones implement a
bias.
The {adof} and {cdof} keywords define the values used in the degree of
freedom (DOF) formula described above for for temperature calculation
freedom (DOF) formula described above for temperature calculation
for each chunk. They are only used when the {temp} value is
calculated. They can be used to calculate a more appropriate
temperature for some kinds of chunks. Here are 3 examples:

View File

@ -98,6 +98,16 @@ fix to add the energy change from the biasing force added by the fix
to the system's potential energy as part of "thermodynamic
output"_thermo_style.html.
The {fix_modify configfile <config file>} option allows to add settings
from an additional config file to the colvars module. This option can
only be used, after the system has been initialized with a "run"_run.html
command.
The {fix_modify config <quoted string>} option allows to add settings
from inline strings. Those have to fit on a single line when enclosed
in a pair of double quotes ("), or can span multiple lines when bracketed
by a pair of triple double quotes (""", like python embedded documentation).
This fix computes a global scalar which can be accessed by various
"output commands"_Howto_output.html. The scalar is the cumulative
energy change due to this fix. The scalar value calculated by this

View File

@ -0,0 +1,165 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Commands_all.html)
:line
fix electron/stopping command :h3
[Syntax:]
fix ID group-ID electron/stopping Ecut file keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
electron/stopping = style name of this fix command :l
Ecut = minimum kinetic energy for electronic stopping (energy units) :l
file = name of the file containing the electronic stopping power table :l
zero or more keyword/value pairs may be appended to args :l
keyword = {region} or {minneigh} :l
{region} value = region-ID
region-ID = region, whose atoms will be affected by this fix
{minneigh} value = minneigh
minneigh = minimum number of neighbors an atom to have stopping applied :pre
:ule
[Examples:]
fix el all electron/stopping 10.0 elstop-table.txt
fix el all electron/stopping 10.0 elstop-table.txt minneigh 3
fix el mygroup electron/stopping 1.0 elstop-table.txt region bulk :pre
[Description:]
This fix implements inelastic energy loss for fast projectiles in solids. It
applies a friction force to fast moving atoms to slow them down due to
"electronic stopping"_#elstopping (energy lost via electronic collisions per
unit of distance). This fix should be used for simulation of irradiation
damage or ion implantation, where the ions can lose noticeable amounts of
energy from electron excitations. If the electronic stopping power is not
considered, the simulated range of the ions can be severely overestimated
("Nordlund98"_#Nordlund98, "Nordlund95"_#Nordlund95).
The electronic stopping is implemented by applying a friction force
to each atom as:
\begin\{equation\}
\vec\{F\}_i = \vec\{F\}^0_i - \frac\{\vec\{v\}_i\}\{\|\vec\{v\}_i\|\} \cdot S_e
\end\{equation\}
where \(\vec\{F\}_i\) is the resulting total force on the atom.
\(\vec\{F\}^0_i\) is the original force applied to the atom, \(\vec\{v\}_i\) is
its velocity and \(S_e\) is the stopping power of the ion.
NOTE: In addition to electronic stopping, atomic cascades and irradiation
simulations require the use of an adaptive timestep (see
"fix dt/reset"_fix_dt_reset.html) and the repulsive ZBL potential (see
"ZBL"_pair_zbl.html potential) or similar. Without these settings the
interaction between the ion and the target atoms will be faulty. It is also
common to use in such simulations a thermostat ("fix_nvt"_fix_nh.html) in
the borders of the simulation cell.
NOTE: This fix removes energy from fast projectiles without depositing it as a
heat to the simulation cell. Such implementation might lead to the unphysical
results when the amount of energy deposited to the electronic system is large,
e.g. simulations of Swift Heavy Ions (energy per nucleon of 100 keV/amu or
higher) or multiple projectiles. You could compensate energy loss by coupling
bulk atoms with some thermostat or control heat transfer between electronic and
atomic subsystems with the two-temperature model ("fix_ttm"_fix_ttm.html).
At low velocities the electronic stopping is negligible. The electronic
friction is not applied to atoms whose kinetic energy is smaller than {Ecut},
or smaller than the lowest energy value given in the table in {file}.
Electronic stopping should be applied only when a projectile reaches bulk
material. This fix scans neighbor list and excludes atoms with fewer than
{minneigh} neighbors (by default one). If the pair potential cutoff is large,
minneigh should be increased, though not above the number of nearest neighbors
in bulk material. An alternative is to disable the check for neighbors by
setting {minneigh} to zero and using the {region} keyword. This is necessary
when running simulations of cluster bombardment.
If the {region} keyword is used, the atom must also be in the specified
geometric "region"_region.html in order to have electronic stopping applied to
it. This is useful if the position of the bulk material is fixed. By default
the electronic stopping is applied everywhere in the simulation cell.
:line
The energy ranges and stopping powers are read from the file {file}.
Lines starting with {#} and empty lines are ignored. Otherwise each
line must contain exactly [N+1] numbers, where [N] is the number of atom
types in the simulation.
The first column is the energy for which the stopping powers on that
line apply. The energies must be sorted from the smallest to the largest.
The other columns are the stopping powers \(S_e\) for each atom type,
in ascending order, in force "units"_units.html. The stopping powers for
intermediate energy values are calculated with linear interpolation between
2 nearest points.
For example:
# This is a comment
# atom-1 atom-2
# eV eV/Ang eV/Ang # units metal
10 0 0
250 60 80
750 100 150 :pre
If an atom which would have electronic stopping applied to it has a
kinetic energy higher than the largest energy given in {file}, LAMMPS
will exit with an error message.
The stopping power depends on the energy of the ion and the target
material. The electronic stopping table can be obtained from
scientific publications, experimental databases or by using
"SRIM"_#SRIM software. Other programs such as "CasP"_#CasP or
"PASS"_#PASS can calculate the energy deposited as a function
of the impact parameter of the ion; these results can be used
to derive the stopping power.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html options are not supported.
This fix computes a global scalar, which can be accessed by various
"output commands"_Howto_output.html. The scalar is the total energy
loss from electronic stopping applied by this fix since the start of
the latest run. It is considered "intensive".
The {start/stop} keywords of the "run"_run.html command have no effect
on this fix.
[Restrictions:]
This pair style is part of the USER-MISC package. It is only enabled if
LAMMPS was built with that package. See the "Build package"_Build_package.html
doc page for more info.
[Default:]
The default is no limitation by region, and minneigh = 1.
:line
:link(elstopping)
[(electronic stopping)] Wikipedia - Electronic Stopping Power: https://en.wikipedia.org/wiki/Stopping_power_%28particle_radiation%29
:link(Nordlund98)
[(Nordlund98)] Nordlund, Kai, et al. Physical Review B 57.13 (1998): 7556.
:link(Nordlund95)
[(Nordlund95)] Nordlund, Kai. Computational materials science 3.4 (1995): 448-456.
:link(SRIM)
[(SRIM)] SRIM webpage: http://www.srim.org/
:link(CasP)
[(CasP)] CasP webpage: https://www.helmholtz-berlin.de/people/gregor-schiwietz/casp_en.html
:link(PASS)
[(PASS)] PASS webpage: https://www.sdu.dk/en/DPASS

View File

@ -113,12 +113,11 @@ state of the system, e.g. via a "write_dump"_write_dump.html or
"write_restart"_write_restart.html command.
If its value is {continue}, the behavior is the same as for {soft},
except subsequent subsequent "run"_run.html or
"minimize"_minimize.html commands are executed. This allows your
script to remedy the condition that triggered the halt, if necessary.
Note that you may wish use the "unfix"_unfix.html command on the fix
halt ID, so that the same condition is not immediately triggered in a
subsequent run.
except subsequent "run"_run.html or "minimize"_minimize.html commands
are executed. This allows your script to remedy the condition that
triggered the halt, if necessary. Note that you may wish use the
"unfix"_unfix.html command on the fix halt ID, so that the same
condition is not immediately triggered in a subsequent run.
The optional {message} keyword determines whether a message is printed
to the screen and logfile when the halt condition is triggered. If

View File

@ -188,7 +188,7 @@ No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy of the bias potential to the the system's
fix to add the energy of the bias potential to the system's
potential energy as part of "thermodynamic output"_thermo_style.html.
This fix computes a global scalar and global vector of length 12, which

View File

@ -301,7 +301,7 @@ No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy of the bias potential to the the system's
fix to add the energy of the bias potential to the system's
potential energy as part of "thermodynamic output"_thermo_style.html.
This fix computes a global scalar and global vector of length 21,
@ -322,13 +322,13 @@ vector stores the following quantities:
9 = fraction of biased bonds with negative strain during this run
10 = average bias coeff for all bonds during this run (unitless)
11 = min bias coeff for any bond during this run (unitless)
12 = max bias coeff for any bond during this run (unitless)
12 = max bias coeff for any bond during this run (unitless) :ul
13 = max drift distance of any bond atom during this run (distance units)
14 = max distance from proc subbox of any ghost atom with maxstrain < qfactor during this run (distance units)
15 = max distance outside my box of any ghost atom with any maxstrain during this run (distance units)
16 = count of ghost atoms that could not be found on reneighbor steps during this run
17 = count of bias overlaps (< Dcut) found during this run
17 = count of bias overlaps (< Dcut) found during this run :ul
18 = cumulative hyper time since fix created (time units)
19 = cumulative count of event timesteps since fix created

View File

@ -99,4 +99,4 @@ integration fix (e.g. {fix nve/spin}).
:link(Tranchida2)
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
Journal of Computational Physics, (2018).
Journal of Computational Physics, 372, 406-425, (2018).

View File

@ -97,7 +97,7 @@ Note that in this case the specified {Kspring} is in force/distance
units.
With a value of {ideal}, the spring force is computed as suggested in
"(WeinenE)"_#WeinenE :
"(WeinanE)"_#WeinanE :
Fnudge_parallel = -{Kspring} * (RD-RDideal) / (2 * meanDist) :pre
@ -224,8 +224,8 @@ specified (no inter-replica force on the end replicas).
[(Henkelman2)] Henkelman, Uberuaga, Jonsson, J Chem Phys, 113,
9901-9904 (2000).
:link(WeinenE)
[(WeinenE)] E, Ren, Vanden-Eijnden, Phys Rev B, 66, 052301 (2002).
:link(WeinanE)
[(WeinanE)] E, Ren, Vanden-Eijnden, Phys Rev B, 66, 052301 (2002).
:link(Jonsson)
[(Jonsson)] Jonsson, Mills and Jacobsen, in Classical and Quantum

76
doc/src/fix_neb_spin.txt Normal file
View File

@ -0,0 +1,76 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Commands_all.html)
:line
fix neb/spin command :h3
[Syntax:]
fix ID group-ID neb/spin Kspring :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
neb/spin = style name of this fix command :l
Kspring = spring constant for parallel nudging force
(force/distance units or force units, see parallel keyword) :pre,ule
[Examples:]
fix 1 active neb/spin 1.0
[Description:]
Add nudging forces to spins in the group for a multi-replica
simulation run via the "neb/spin"_neb_spin.html command to perform a
geodesic nudged elastic band (GNEB) calculation for finding the
transition state.
Hi-level explanations of GNEB are given with the
"neb/spin"_neb_spin.html command and on the
"Howto replica"_Howto_replica.html doc page.
The fix neb/spin command must be used with the "neb/spin" command and
defines how inter-replica nudging forces are computed. A GNEB
calculation is divided in two stages. In the first stage n replicas
are relaxed toward a MEP until convergence. In the second stage, the
climbing image scheme is enabled, so that the replica having the highest
energy relaxes toward the saddle point (i.e. the point of highest energy
along the MEP), and a second relaxation is performed.
The nudging forces are calculated as explained in
"(BessarabB)"_#BessarabB).
See this reference for more explanation about their expression.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output commands"_Howto_output.html.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
as invoked by the "minimize"_minimize.html command via the
"neb/spin"_neb_spin.html command.
[Restrictions:]
This command can only be used if LAMMPS was built with the SPIN
package. See the "Build package"_Build_package.html doc
page for more info.
[Related commands:]
"neb_spin"_neb_spin.html
[Default:]
none
:line
:link(BessarabB)
[(BessarabB)] Bessarab, Uzdin, Jonsson, Comp Phys Comm, 196,
335-347 (2015).

View File

@ -73,4 +73,4 @@ instead of "array" is also valid.
:link(Tranchida1)
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
Journal of Computational Physics, (2018).
Journal of Computational Physics, 372, 406-425, (2018).

View File

@ -14,24 +14,28 @@ fix ID group precession/spin style args :pre
ID, group are documented in "fix"_fix.html command :ulb,l
precession/spin = style name of this fix command :l
style = {zeeman} or {anisotropy} :l
style = {zeeman} or {anisotropy} or {cubic} :l
{zeeman} args = H x y z
H = intensity of the magnetic field (in Tesla)
x y z = vector direction of the field
{anisotropy} args = K x y z
K = intensity of the magnetic anisotropy (in eV)
x y z = vector direction of the anisotropy :pre
{cubic} args = K1 K2c n1x n1y n1x n2x n2y n2z n3x n3y n3z
K1 and K2c = intensity of the magnetic anisotropy (in eV)
n1x to n3z = three direction vectors of the cubic anisotropy :pre
:ule
[Examples:]
fix 1 all precession/spin zeeman 0.1 0.0 0.0 1.0
fix 1 all precession/spin anisotropy 0.001 0.0 0.0 1.0
fix 1 3 precession/spin anisotropy 0.001 0.0 0.0 1.0
fix 1 iron precession/spin cubic 0.001 0.0005 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0
fix 1 all precession/spin zeeman 0.1 0.0 0.0 1.0 anisotropy 0.001 0.0 0.0 1.0 :pre
[Description:]
Impose a force torque to each magnetic spin in the group.
This fix applies a precession torque to each magnetic spin in the group.
Style {zeeman} is used for the simulation of the interaction
between the magnetic spins in the defined group and an external
@ -50,10 +54,29 @@ for the magnetic spins in the defined group:
with n defining the direction of the anisotropy, and K (in eV) its intensity.
If K>0, an easy axis is defined, and if K<0, an easy plane is defined.
In both cases, the choice of (x y z) imposes the vector direction for the force.
Only the direction of the vector is important; it's length is ignored.
Style {cubic} is used to simulate a cubic anisotropy, with three
possible easy axis for the magnetic spins in the defined group:
Both styles can be combined within one single command line.
:c,image(Eqs/fix_spin_cubic.jpg)
with K1 and K2c (in eV) the intensity coefficients and
n1, n2 and n3 defining the three anisotropic directions
defined by the command (from n1x to n3z).
For n1 = (100), n2 = (010), and n3 = (001), K1 < 0 defines an
iron type anisotropy (easy axis along the (001)-type cube
edges), and K1 > 0 defines a nickel type anisotropy (easy axis
along the (111)-type cube diagonals).
K2^c > 0 also defines easy axis along the (111)-type cube
diagonals.
See chapter 2 of "(Skomski)"_#Skomski1 for more details on cubic
anisotropies.
In all cases, the choice of (x y z) only imposes the vector
directions for the forces. Only the direction of the vector is
important; it's length is ignored (the entered vectors are
normalized).
Those styles can be combined within one single command line.
:line
@ -85,3 +108,9 @@ package"_Build_package.html doc page for more info.
"atom_style spin"_atom_style.html
[Default:] none
:line
:link(Skomski1)
[(Skomski)] Skomski, R. (2008). Simple models of magnetism.
Oxford University Press.

View File

@ -14,7 +14,7 @@ fix ID group-ID print N string keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
print = style name of this fix command :l
N = print every N steps :l
N = print every N steps; N can be a variable (see below) :l
string = text string to print with optional variable names :l
zero or more keyword/value pairs may be appended :l
keyword = {file} or {append} or {screen} or {title} :l
@ -40,6 +40,21 @@ If it contains variables it must be enclosed in double quotes to
insure they are not evaluated when the input script line is read, but
will instead be evaluated each time the string is printed.
Instead of a numeric value, N can be specified as an "equal-style
variable"_variable.html, which should be specified as v_name, where
name is the variable name. In this case, the variable is evaluated at
the beginning of a run to determine the [next] timestep at which the
string will be written out. On that timestep, the variable will be
evaluated again to determine the next timestep, etc.
Thus the variable should return timestep values. See the stagger()
and logfreq() and stride() math functions for "equal-style
variables"_variable.html, as examples of useful functions to use in
this context. For example, the following commands will print output at
timesteps 10,20,30,100,200,300,1000,2000,etc:
variable s equal logfreq(10,3,10)
fix extra all print v_s "Coords of marker atom = $x $y $z" :pre
The specified group-ID is ignored by this fix.
See the "variable"_variable.html command for a description of {equal}

View File

@ -8,6 +8,7 @@
fix setforce command :h3
fix setforce/kk command :h3
fix setforce/spin command :h3
[Syntax:]
@ -27,6 +28,7 @@ keyword = {region} :l
fix freeze indenter setforce 0.0 0.0 0.0
fix 2 edge setforce NULL 0.0 0.0
fix 1 edge setforce/spin 0.0 0.0 0.0
fix 2 edge setforce NULL 0.0 v_oscillate :pre
[Description:]
@ -65,6 +67,19 @@ to it.
:line
Style {spin} suffix sets the components of the magnetic precession
vectors instead of the mechanical forces. This also erases all
previously computed magnetic precession vectors on the atom, though
additional magnetic fixes could add new forces.
This command can be used to freeze the magnetic moment of certain
atoms in the simulation by zeroing their precession vector.
All options defined above remain valid, they just apply to the magnetic
precession vectors instead of the forces.
:line
Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
functionally the same as the corresponding style without the suffix.
They have been optimized to run faster, depending on your available
@ -117,7 +132,10 @@ forces to any value besides zero when performing a minimization. Use
the "fix addforce"_fix_addforce.html command if you want to apply a
non-zero force to atoms during a minimization.
[Restrictions:] none
[Restrictions:]
The fix {setforce/spin} only makes sense when LAMMPS was built with the
SPIN package.
[Related commands:]

View File

@ -17,13 +17,13 @@ wall/gran = style name of this fix command :l
fstyle = style of force interactions between particles and wall :l
possible choices: hooke, hooke/history, hertz/history, granular :pre
fstyle_params = parameters associated with force interaction style :l
For {hooke}, {hooke/history}, and {hertz/history}, {fstyle_params} are:
Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below)
Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below)
gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below)
gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below)
xmu = static yield criterion (unitless value between 0.0 and 1.0e4)
dampflag = 0 or 1 if tangential damping force is excluded or included :pre
For {hooke}, {hooke/history}, and {hertz/history}, {fstyle_params} are:
Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below)
Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below)
gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below)
gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below)
xmu = static yield criterion (unitless value between 0.0 and 1.0e4)
dampflag = 0 or 1 if tangential damping force is excluded or included :pre
For {granular}, {fstyle_params} are set using the same syntax as for the {pair_coeff} command of "pair_style granular"_pair_granular.html :pre
wallstyle = {xplane} or {yplane} or {zplane} or {zcylinder} :l
args = list of arguments for a particular style :l
@ -46,10 +46,10 @@ keyword = {wiggle} or {shear} :l
fix 1 all wall/gran hooke 200000.0 NULL 50.0 NULL 0.5 0 xplane -10.0 10.0
fix 1 all wall/gran hooke/history 200000.0 NULL 50.0 NULL 0.5 0 zplane 0.0 NULL
fix 2 all wall/gran hooke 100000.0 20000.0 50.0 30.0 0.5 1 zcylinder 15.0 wiggle z 3.0 2.0
fix 3 all wall/gran granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 zplane 0.0 NULL
fix 4 all wall/gran granular jkr 1000.0 50.0 0.3 5.0 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall zcylinder 15.0 wiggle z 3.0 2.0
fix 5 all wall/gran granular dmt 1000.0 50.0 0.3 10.0 tangential mindlin 800.0 0.5 0.1 roll sds 500.0 200.0 0.1 twisting marshall zplane 0.0 NULL :pre
fix 2 all wall/gran hooke 100000.0 20000.0 50.0 30.0 0.5 1 zcylinder 15.0 wiggle z 3.0 2.0
fix 3 all wall/gran/region granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 damping velocity region myBox
fix 4 all wall/gran/region granular jkr 1e5 1500.0 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall region myCone
fix 5 all wall/gran/region granular dmt 1e5 0.2 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall damping tsuji region myCone :pre
[Description:]

View File

@ -17,23 +17,23 @@ wall/region = style name of this fix command :l
fstyle = style of force interactions between particles and wall :l
possible choices: hooke, hooke/history, hertz/history, granular :pre
fstyle_params = parameters associated with force interaction style :l
For {hooke}, {hooke/history}, and {hertz/history}, {fstyle_params} are:
Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below)
Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below)
gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below)
gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below)
xmu = static yield criterion (unitless value between 0.0 and 1.0e4)
dampflag = 0 or 1 if tangential damping force is excluded or included :pre
For {hooke}, {hooke/history}, and {hertz/history}, {fstyle_params} are:
Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below)
Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below)
gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below)
gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below)
xmu = static yield criterion (unitless value between 0.0 and 1.0e4)
dampflag = 0 or 1 if tangential damping force is excluded or included :pre
For {granular}, {fstyle_params} are set using the same syntax as for the {pair_coeff} command of "pair_style granular"_pair_granular.html :pre
wallstyle = region (see "fix wall/gran"_fix_wall_gran.html for options for other kinds of walls) :l
region-ID = region whose boundary will act as wall :l,ule
[Examples:]
fix wall all wall/gran/region hooke/history 1000.0 200.0 200.0 100.0 0.5 1 region myCone
fix 3 all wall/gran/region granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 region myBox
fix 4 all wall/gran/region granular jkr 1000.0 50.0 tangential linear_history 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall region myCone
fix 5 all wall/gran/region granular dmt 1000.0 50.0 0.3 10.0 tangential linear_history 800.0 0.5 0.1 roll sds 500.0 200.0 0.1 twisting marshall region myCone :pre
fix wall all wall/gran/region hooke/history 1000.0 200.0 200.0 100.0 0.5 1 region myCone
fix 3 all wall/gran/region granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 damping velocity region myBox
fix 4 all wall/gran/region granular jkr 1e5 1500.0 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall region myCone
fix 5 all wall/gran/region granular dmt 1e5 0.2 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall damping tsuji region myCone :pre
[Description:]

View File

@ -40,6 +40,7 @@ Fixes :h1
fix_dt_reset
fix_efield
fix_ehex
fix_electron_stopping
fix_enforce2d
fix_eos_cv
fix_eos_table
@ -83,6 +84,7 @@ Fixes :h1
fix_msst
fix_mvv_dpd
fix_neb
fix_neb_spin
fix_nh
fix_nh_eff
fix_nh_uef

View File

@ -26,12 +26,13 @@ kim_query latconst get_test_result test=TE_156715955670 model=MO_800509458712 &
The kim_query command allows to retrieve properties from the OpenKIM
through a web query. The result is stored in a string style
"variable"_variable.html, the name of which must be given as the first
argument of the kim_query command. The second required argument is the
name of the actual query function (e.g. {get_test_result}). All following
argument of the kim_query command. The second required argument is the
name of the actual query function (e.g. {get_test_result}). All following
arguments are parameters handed over to the web query in the format
{keyword=value}. This list of supported keywords and the type of how
the value has to be encoded depends on the query function used.
For more details on this, please refer to the OpenKIM homepage.
{keyword=value}. The list of supported keywords and the type of how
the value has to be encoded depends on the query function used. This
mirrors the functionality available on the OpenKIM webpage at
"https://query.openkim.org"_https://query.openkim.org/
[Restrictions:]

View File

@ -179,6 +179,7 @@ min_spin.html
minimize.html
molecule.html
neb.html
neb_spin.html
neigh_modify.html
neighbor.html
newton.html
@ -265,6 +266,7 @@ fix_drude_transform.html
fix_dt_reset.html
fix_efield.html
fix_ehex.html
fix_electron_stopping.html
fix_enforce2d.html
fix_eos_cv.html
fix_eos_table.html
@ -308,6 +310,7 @@ fix_mscg.html
fix_msst.html
fix_mvv_dpd.html
fix_neb.html
fix_neb_spin.html
fix_nh.html
fix_nh_eff.html
fix_nph_asphere.html
@ -571,6 +574,8 @@ pair_dipole.html
pair_dpd.html
pair_dpd_fdt.html
pair_dsmc.html
pair_e3b.html
pair_drip.html
pair_eam.html
pair_edip.html
pair_eff.html

View File

@ -124,7 +124,7 @@ so that they describe a tilted parallelepiped. Via the {basis}
keyword you add atoms, one at a time, to the unit cell. Its arguments
are fractional coordinates (0.0 <= x,y,z < 1.0). The position vector
x of a basis atom within the unit cell is thus a linear combination of
the the unit cell's 3 edge vectors, i.e. x = bx a1 + by a2 + bz a3,
the unit cell's 3 edge vectors, i.e. x = bx a1 + by a2 + bz a3,
where bx,by,bz are the 3 values specified for the {basis} keyword.
:line

View File

@ -396,7 +396,7 @@ If flag = 0, no a,b,c,d values are listed on the line, just the
If flag = 1, a,b,c are listed, where a = ID of central atom in the
angle, and b,c the other two atoms in the angle.
If flag = 2, a,b are listed, where a = ID of atom in bond with the the
If flag = 2, a,b are listed, where a = ID of atom in bond with the
lowest ID, and b = ID of atom in bond with the highest ID.
If flag = 3, a,b,c are listed, where a = ID of central atom,

375
doc/src/neb_spin.txt Normal file
View File

@ -0,0 +1,375 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Commands_all.html)
:line
neb/spin command :h3
[Syntax:]
neb/spin etol ttol N1 N2 Nevery file-style arg keyword :pre
etol = stopping tolerance for energy (energy units) :ulb,l
ttol = stopping tolerance for torque ( units) :l
N1 = max # of iterations (timesteps) to run initial NEB :l
N2 = max # of iterations (timesteps) to run barrier-climbing NEB :l
Nevery = print replica energies and reaction coordinates every this many timesteps :l
file-style = {final} or {each} or {none} :l
{final} arg = filename
filename = file with initial coords for final replica
coords for intermediate replicas are linearly interpolated
between first and last replica
{each} arg = filename
filename = unique filename for each replica (except first)
with its initial coords
{none} arg = no argument all replicas assumed to already have
their initial coords :pre
keyword = {verbose}
:ule
[Examples:]
neb/spin 0.1 0.0 1000 500 50 final coords.final
neb/spin 0.0 0.001 1000 500 50 each coords.initial.$i
neb/spin 0.0 0.001 1000 500 50 none verbose :pre
[Description:]
Perform a geodesic nudged elastic band (GNEB) calculation using multiple
replicas of a system. Two or more replicas must be used; the first
and last are the end points of the transition path.
GNEB is a method for finding both the spin configurations and height
of the energy barrier associated with a transition state, e.g.
spins to perform a collective rotation from one energy basin to
another.
The implementation in LAMMPS follows the discussion in the
following paper: "(BessarabA)"_#BessarabA.
Each replica runs on a partition of one or more processors. Processor
partitions are defined at run-time using the "-partition command-line
switch"_Run_options.html. Note that if you have MPI installed, you
can run a multi-replica simulation with more replicas (partitions)
than you have physical processors, e.g you can run a 10-replica
simulation on just one or two processors. You will simply not get the
performance speed-up you would see with one or more physical
processors per replica. See the "Howto replica"_Howto_replica.html
doc page for further discussion.
NOTE: As explained below, a GNEB calculation performs a damped dynamics
minimization across all the replicas. The "spin"_min_spin.html
style minimizer has to be defined in your input script.
When a GNEB calculation is performed, it is assumed that each replica
is running the same system, though LAMMPS does not check for this.
I.e. the simulation domain, the number of magnetic atoms, the
interaction potentials, and the starting configuration when the neb
command is issued should be the same for every replica.
In a GNEB calculation each replica is connected to other replicas by
inter-replica nudging forces. These forces are imposed by the "fix
neb/spin"_fix_neb_spin.html command, which must be used in conjunction
with the neb command.
The group used to define the fix neb/spin command defines the
GNEB magnetic atoms which are the only ones that inter-replica springs
are applied to.
If the group does not include all magnetic atoms, then non-GNEB
magnetic atoms have no inter-replica springs and the torques they feel
and their precession motion is computed in the usual way due only
to other magnetic atoms within their replica.
Conceptually, the non-GNEB atoms provide a background force field for
the GNEB atoms.
Their magnetic spins can be allowed to evolve during the GNEB
minimization procedure.
The initial spin configuration for each of the replicas can be
specified in different manners via the {file-style} setting, as
discussed below. Only atomic spins whose initial coordinates should
differ from the current configuration need to be specified.
Conceptually, the initial and final configurations for the first
replica should be states on either side of an energy barrier.
As explained below, the initial configurations of intermediate
replicas can be spin coordinates interpolated in a linear fashion
between the first and last replicas. This is often adequate for
simple transitions. For more complex transitions, it may lead to slow
convergence or even bad results if the minimum energy path (MEP, see
below) of states over the barrier cannot be correctly converged to
from such an initial path. In this case, you will want to generate
initial states for the intermediate replicas that are geometrically
closer to the MEP and read them in.
:line
For a {file-style} setting of {final}, a filename is specified which
contains atomic and spin coordinates for zero or more atoms, in the
format described below.
For each atom that appears in the file, the new coordinates are
assigned to that atom in the final replica. Each intermediate replica
also assigns a new spin to that atom in an interpolated manner.
This is done by using the current direction of the spin at the starting
point and the read-in direction as the final point.
The "angular distance" between them is calculated, and the new direction
is assigned to be a fraction of the angular distance.
NOTE: The "angular distance" between the starting and final point is
evaluated in the geodesic sense, as described in
"(BessarabA)"_#BessarabA.
NOTE: The angular interpolation between the starting and final point
is achieved using Rodrigues formula:
:c,image(Eqs/neb_spin_rodrigues_formula.jpg)
where m_i^I is the initial spin configuration for the spin i,
omega_i^nu is a rotation angle defined as:
:c,image(Eqs/neb_spin_angle.jpg)
with nu the image number, Q the total number of images, and
omega_i the total rotation between the initial and final spins.
k_i defines a rotation axis such as:
:c,image(Eqs/neb_spin_k.jpg)
if the initial and final spins are not aligned.
If the initial and final spins are aligned, then their cross
product is null, and the expression above does not apply.
If they point toward the same direction, the intermediate images
conserve the same orientation.
If the initial and final spins are aligned, but point toward
opposite directions, an arbitrary rotation vector belonging to
the plane perpendicular to initial and final spins is chosen.
In this case, a warning message is displayed.
For a {file-style} setting of {each}, a filename is specified which is
assumed to be unique to each replica.
See the "neb"_neb.html documentation page for more information about this
option.
For a {file-style} setting of {none}, no filename is specified. Each
replica is assumed to already be in its initial configuration at the
time the neb command is issued. This allows each replica to define
its own configuration by reading a replica-specific data or restart or
dump file, via the "read_data"_read_data.html,
"read_restart"_read_restart.html, or "read_dump"_read_dump.html
commands. The replica-specific names of these files can be specified
as in the discussion above for the {each} file-style. Also see the
section below for how a NEB calculation can produce restart files, so
that a long calculation can be restarted if needed.
NOTE: None of the {file-style} settings change the initial
configuration of any atom in the first replica. The first replica
must thus be in the correct initial configuration at the time the neb
command is issued.
:line
A NEB calculation proceeds in two stages, each of which is a
minimization procedure, performed via damped dynamics. To enable
this, you must first define a damped spin dynamics
"min_style"_min_style.html, using the {spin} style (see
"min_spin"_min_spin.html for more information).
The other styles cannot be used, since they relax the lattice
degrees of freedom instead of the spins.
The minimizer tolerances for energy and force are set by {etol} and
{ttol}, the same as for the "minimize"_minimize.html command.
A non-zero {etol} means that the GNEB calculation will terminate if the
energy criterion is met by every replica. The energies being compared
to {etol} do not include any contribution from the inter-replica
nudging forces, since these are non-conservative. A non-zero {ttol}
means that the GNEB calculation will terminate if the torque criterion
is met by every replica. The torques being compared to {ttol} include
the inter-replica nudging forces.
The maximum number of iterations in each stage is set by {N1} and
{N2}. These are effectively timestep counts since each iteration of
damped dynamics is like a single timestep in a dynamics
"run"_run.html. During both stages, the potential energy of each
replica and its normalized distance along the reaction path (reaction
coordinate RD) will be printed to the screen and log file every
{Nevery} timesteps. The RD is 0 and 1 for the first and last replica.
For intermediate replicas, it is the cumulative angular distance
(normalized by the total cumulative angular distance) between adjacent
replicas, where "distance" is defined as the length of the 3N-vector of
the geodesic distances in spin coordinates, with N the number of
GNEB spins involved (see equation (13) in "(BessarabA)"_#BessarabA).
These outputs allow you to monitor NEB's progress in
finding a good energy barrier. {N1} and {N2} must both be multiples
of {Nevery}.
In the first stage of GNEB, the set of replicas should converge toward
a minimum energy path (MEP) of conformational states that transition
over a barrier. The MEP for a transition is defined as a sequence of
3N-dimensional spin states, each of which has a potential energy
gradient parallel to the MEP itself.
The configuration of highest energy along a MEP corresponds to a saddle
point. The replica states will also be roughly equally spaced along
the MEP due to the inter-replica nudging force added by the
"fix neb"_fix_neb.html command.
In the second stage of GNEB, the replica with the highest energy is
selected and the inter-replica forces on it are converted to a force
that drives its spin coordinates to the top or saddle point of the
barrier, via the barrier-climbing calculation described in
"(BessarabA)"_#BessarabA. As before, the other replicas rearrange
themselves along the MEP so as to be roughly equally spaced.
When both stages are complete, if the GNEB calculation was successful,
the configurations of the replicas should be along (close to) the MEP
and the replica with the highest energy should be a spin
configuration at (close to) the saddle point of the transition. The
potential energies for the set of replicas represents the energy
profile of the transition along the MEP.
:line
An atom map must be defined which it is not by default for "atom_style
atomic"_atom_style.html problems. The "atom_modify
map"_atom_modify.html command can be used to do this.
An initial value can be defined for the timestep. Although, the {spin}
minimization algorithm is an adaptive timestep methodology, so that
this timestep is likely to evolve during the calculation.
The minimizers in LAMMPS operate on all spins in your system, even
non-GNEB atoms, as defined above.
:line
Each file read by the neb/spin command containing spin coordinates used
to initialize one or more replicas must be formatted as follows.
The file can be ASCII text or a gzipped text file (detected by a .gz
suffix). The file can contain initial blank lines or comment lines
starting with "#" which are ignored. The first non-blank, non-comment
line should list N = the number of lines to follow. The N successive
lines contain the following information:
ID1 g1 x1 y1 z1 sx1 sy1 sz1
ID2 g2 x2 y2 z2 sx2 sy2 sz2
...
IDN gN yN zN sxN syN szN :pre
The fields are the atom ID, the norm of the associated magnetic spin,
followed by the {x,y,z} coordinates and the {sx,sy,sz} spin coordinates.
The lines can be listed in any order. Additional trailing information on
the line is OK, such as a comment.
Note that for a typical GNEB calculation you do not need to specify
initial spin coordinates for very many atoms to produce differing starting
and final replicas whose intermediate replicas will converge to the
energy barrier. Typically only new spin coordinates for atoms
geometrically near the barrier need be specified.
Also note there is no requirement that the atoms in the file
correspond to the GNEB atoms in the group defined by the "fix
neb"_fix_neb.html command. Not every GNEB atom need be in the file,
and non-GNEB atoms can be listed in the file.
:line
Four kinds of output can be generated during a GNEB calculation: energy
barrier statistics, thermodynamic output by each replica, dump files,
and restart files.
When running with multiple partitions (each of which is a replica in
this case), the print-out to the screen and master log.lammps file
contains a line of output, printed once every {Nevery} timesteps. It
contains the timestep, the maximum torque per replica, the maximum
torque per atom (in any replica), potential gradients in the initial,
final, and climbing replicas, the forward and backward energy
barriers, the total reaction coordinate (RDT), and the normalized
reaction coordinate and potential energy of each replica.
The "maximum torque per replica" is the two-norm of the
3N-length vector given by the cross product of a spin by its
precession vector omega, in each replica, maximized across replicas,
which is what the {ttol} setting is checking against. In this case, N is
all the atoms in each replica. The "maximum torque per atom" is the
maximum torque component of any atom in any replica. The potential
gradients are the two-norm of the 3N-length magnetic precession vector
solely due to the interaction potential i.e. without adding in
inter-replica forces, and projected along the path tangent (as detailed
in Appendix D of "(BessarabA)"_#BessarabA).
The "reaction coordinate" (RD) for each replica is the two-norm of the
3N-length vector of geodesic distances between its spins and the preceding
replica's spins (see equation (13) of "(BessarabA)"_#BessarabA), added to
the RD of the preceding replica. The RD of the first replica RD1 = 0.0;
the RD of the final replica RDN = RDT, the total reaction coordinate.
The normalized RDs are divided by RDT, so that they form a monotonically
increasing sequence from zero to one. When computing RD, N only includes
the spins being operated on by the fix neb/spin command.
The forward (reverse) energy barrier is the potential energy of the
highest replica minus the energy of the first (last) replica.
Supplementary information for all replicas can be printed out to the
screen and master log.lammps file by adding the verbose keyword. This
information include the following.
The "GradVidottan" are the projections of the potential gradient for
the replica i on its tangent vector (as detailed in Appendix D of
"(BessarabA)"_#BessarabA).
The "DNi" are the non normalized geodesic distances (see equation (13)
of "(BessarabA)"_#BessarabA), between a replica i and the next replica
i+1. For the last replica, this distance is not defined and a "NAN"
value is the corresponding output.
When a NEB calculation does not converge properly, the supplementary
information can help understanding what is going wrong.
When running on multiple partitions, LAMMPS produces additional log
files for each partition, e.g. log.lammps.0, log.lammps.1, etc. For a
GNEB calculation, these contain the thermodynamic output for each
replica.
If "dump"_dump.html commands in the input script define a filename
that includes a {universe} or {uloop} style "variable"_variable.html,
then one dump file (per dump command) will be created for each
replica. At the end of the GNEB calculation, the final snapshot in
each file will contain the sequence of snapshots that transition the
system over the energy barrier. Earlier snapshots will show the
convergence of the replicas to the MEP.
Likewise, "restart"_restart.html filenames can be specified with a
{universe} or {uloop} style "variable"_variable.html, to generate
restart files for each replica. These may be useful if the GNEB
calculation fails to converge properly to the MEP, and you wish to
restart the calculation from an intermediate point with altered
parameters.
A c file script in provided in the tool/spin/interpolate_gneb
directory, that interpolates the MEP given the information provided
by the verbose output option (as detailed in Appendix D of
"(BessarabA)"_#BessarabA).
:line
[Restrictions:]
This command can only be used if LAMMPS was built with the SPIN
package. See the "Build package"_Build_package.html doc
page for more info.
:line
[Related commands:]
"min/spin"_min_spin.html, "fix neb/spin"_fix_neb_spin.html
[Default:]
none
:line
:link(BessarabA)
[(BessarabA)] Bessarab, Uzdin, Jonsson, Comp Phys Comm, 196,
335-347 (2015).

View File

@ -187,9 +187,9 @@ used in neighbor list construction to sort and find neighboring atoms.
By default, for "neighbor style bin"_neighbor.html, LAMMPS uses bins
that are 1/2 the size of the maximum pair cutoff. For "neighbor style
multi"_neighbor.html, the bins are 1/2 the size of the minimum pair
cutoff. Typically these are good values values for minimizing the
time for neighbor list construction. This setting overrides the
default. If you make it too big, there is little overhead due to
cutoff. Typically these are good values for minimizing the time for
neighbor list construction. This setting overrides the default.
If you make it too big, there is little overhead due to
looping over bins, but more atoms are checked. If you make it too
small, the optimal number of atoms is checked, but bin overhead goes
up. If you set the binsize to 0.0, LAMMPS will use the default

View File

@ -56,7 +56,7 @@ bin size is set to 1/2 of the shortest cutoff distance and multiple
sets of bins are defined to search over for different atom types.
This imposes some extra setup overhead, but the searches themselves
may be much faster for the short-cutoff cases. See the "comm_modify
mode multi"_comm_modify.html command for a communication option option
mode multi"_comm_modify.html command for a communication option
that may also be beneficial for simulations of this kind.
The "neigh_modify"_neigh_modify.html command has additional options

View File

@ -64,7 +64,7 @@ args = arguments specific to the style :l
{no_affinity} values = none
{kokkos} args = keyword value ...
zero or more keyword/value pairs may be appended
keywords = {neigh} or {neigh/qeq} or {newton} or {binsize} or {comm} or {comm/exchange} or {comm/forward} or {comm/reverse}
keywords = {neigh} or {neigh/qeq} or {newton} or {binsize} or {comm} or {comm/exchange} or {comm/forward} or {comm/reverse} or {gpu/direct}
{neigh} value = {full} or {half}
full = full neighbor list
half = half neighbor list built in thread-safe manner
@ -72,7 +72,7 @@ args = arguments specific to the style :l
full = full neighbor list
half = half neighbor list built in thread-safe manner
{newton} = {off} or {on}
off = set Newton pairwise and bonded flags off (default)
off = set Newton pairwise and bonded flags off
on = set Newton pairwise and bonded flags on
{binsize} value = size
size = bin size for neighbor list construction (distance units)
@ -422,101 +422,103 @@ processes/threads used for LAMMPS.
:line
The {kokkos} style invokes settings associated with the use of the
KOKKOS package.
The {kokkos} style invokes settings associated with the use of the
KOKKOS package.
All of the settings are optional keyword/value pairs. Each has a
default value as listed below.
All of the settings are optional keyword/value pairs. Each has a default
value as listed below.
The {neigh} keyword determines how neighbor lists are built. A value
of {half} uses a thread-safe variant of half-neighbor lists,
the same as used by most pair styles in LAMMPS.
The {neigh} keyword determines how neighbor lists are built. A value of
{half} uses a thread-safe variant of half-neighbor lists, the same as
used by most pair styles in LAMMPS, which is the default when running on
CPUs (i.e. the Kokkos CUDA back end is not enabled).
A value of {full} uses a full neighbor lists and is the default. This
performs twice as much computation as the {half} option, however that
is often a win because it is thread-safe and doesn't require atomic
operations in the calculation of pair forces. For that reason, {full}
is the default setting. However, when running in MPI-only mode with 1
thread per MPI task, {half} neighbor lists will typically be faster,
just as it is for non-accelerated pair styles. Similarly, the {neigh/qeq}
keyword determines how neighbor lists are built for "fix qeq/reax/kk"_fix_qeq_reax.html.
If not explicitly set, the value of {neigh/qeq} will match {neigh}.
A value of {full} uses a full neighbor lists and is the default when
running on GPUs. This performs twice as much computation as the {half}
option, however that is often a win because it is thread-safe and
doesn't require atomic operations in the calculation of pair forces. For
that reason, {full} is the default setting for GPUs. However, when
running on CPUs, a {half} neighbor list is the default because it are
often faster, just as it is for non-accelerated pair styles. Similarly,
the {neigh/qeq} keyword determines how neighbor lists are built for "fix
qeq/reax/kk"_fix_qeq_reax.html. If not explicitly set, the value of
{neigh/qeq} will match {neigh}.
The {newton} keyword sets the Newton flags for pairwise and bonded
interactions to {off} or {on}, the same as the "newton"_newton.html
command allows. The default is {off} because this will almost always
give better performance for the KOKKOS package. This means more
computation is done, but less communication. However, when running in
MPI-only mode with 1 thread per MPI task, a value of {on} will
typically be faster, just as it is for non-accelerated pair styles.
The {newton} keyword sets the Newton flags for pairwise and bonded
interactions to {off} or {on}, the same as the "newton"_newton.html
command allows. The default for GPUs is {off} because this will almost
always give better performance for the KOKKOS package. This means more
computation is done, but less communication. However, when running on
CPUs a value of {on} is the default since it can often be faster, just
as it is for non-accelerated pair styles
The {binsize} keyword sets the size of bins used to bin atoms in
neighbor list builds. The same value can be set by the "neigh_modify
binsize"_neigh_modify.html command. Making it an option in the
package kokkos command allows it to be set from the command line. The
default value is 0.0, which means the LAMMPS default will be used,
which is bins = 1/2 the size of the pairwise cutoff + neighbor skin
distance. This is fine when neighbor lists are built on the CPU. For
GPU builds, a 2x larger binsize equal to the pairwise cutoff +
neighbor skin, is often faster, which can be set by this keyword.
Note that if you use a longer-than-usual pairwise cutoff, e.g. to
allow for a smaller fraction of KSpace work with a "long-range
Coulombic solver"_kspace_style.html because the GPU is faster at
performing pairwise interactions, then this rule of thumb may give too
large a binsize.
The {binsize} keyword sets the size of bins used to bin atoms in
neighbor list builds. The same value can be set by the "neigh_modify
binsize"_neigh_modify.html command. Making it an option in the package
kokkos command allows it to be set from the command line. The default
value for CPUs is 0.0, which means the LAMMPS default will be used,
which is bins = 1/2 the size of the pairwise cutoff + neighbor skin
distance. This is fine when neighbor lists are built on the CPU. For GPU
builds, a 2x larger binsize equal to the pairwise cutoff + neighbor skin
is often faster, which is the default. Note that if you use a
longer-than-usual pairwise cutoff, e.g. to allow for a smaller fraction
of KSpace work with a "long-range Coulombic solver"_kspace_style.html
because the GPU is faster at performing pairwise interactions, then this
rule of thumb may give too large a binsize and the default should be
overridden with a smaller value.
The {comm} and {comm/exchange} and {comm/forward} and {comm/reverse} keywords determine
whether the host or device performs the packing and unpacking of data
when communicating per-atom data between processors. "Exchange"
communication happens only on timesteps that neighbor lists are
rebuilt. The data is only for atoms that migrate to new processors.
"Forward" communication happens every timestep. "Reverse" communication
happens every timestep if the {newton} option is on. The data is for atom
coordinates and any other atom properties that needs to be updated for
ghost atoms owned by each processor.
The {comm} and {comm/exchange} and {comm/forward} and {comm/reverse}
keywords determine whether the host or device performs the packing and
unpacking of data when communicating per-atom data between processors.
"Exchange" communication happens only on timesteps that neighbor lists
are rebuilt. The data is only for atoms that migrate to new processors.
"Forward" communication happens every timestep. "Reverse" communication
happens every timestep if the {newton} option is on. The data is for
atom coordinates and any other atom properties that needs to be updated
for ghost atoms owned by each processor.
The {comm} keyword is simply a short-cut to set the same value
for both the {comm/exchange} and {comm/forward} and {comm/reverse} keywords.
The {comm} keyword is simply a short-cut to set the same value for both
the {comm/exchange} and {comm/forward} and {comm/reverse} keywords.
The value options for all 3 keywords are {no} or {host} or {device}.
A value of {no} means to use the standard non-KOKKOS method of
packing/unpacking data for the communication. A value of {host} means
to use the host, typically a multi-core CPU, and perform the
packing/unpacking in parallel with threads. A value of {device}
means to use the device, typically a GPU, to perform the
packing/unpacking operation.
The value options for all 3 keywords are {no} or {host} or {device}. A
value of {no} means to use the standard non-KOKKOS method of
packing/unpacking data for the communication. A value of {host} means to
use the host, typically a multi-core CPU, and perform the
packing/unpacking in parallel with threads. A value of {device} means to
use the device, typically a GPU, to perform the packing/unpacking
operation.
The optimal choice for these keywords depends on the input script and
the hardware used. The {no} value is useful for verifying that the
Kokkos-based {host} and {device} values are working correctly.
It may also be the fastest choice when using Kokkos styles in
MPI-only mode (i.e. with a thread count of 1).
The optimal choice for these keywords depends on the input script and
the hardware used. The {no} value is useful for verifying that the
Kokkos-based {host} and {device} values are working correctly. It is the
default when running on CPUs since it is usually the fastest.
When running on CPUs or Xeon Phi, the {host} and {device} values work
identically. When using GPUs, the {device} value will typically be
optimal if all of your styles used in your input script are supported
by the KOKKOS package. In this case data can stay on the GPU for many
timesteps without being moved between the host and GPU, if you use the
{device} value. This requires that your MPI is able to access GPU
memory directly. Currently that is true for OpenMPI 1.8 (or later
versions), Mvapich2 1.9 (or later), and CrayMPI. If your script uses
styles (e.g. fixes) which are not yet supported by the KOKKOS package,
then data has to be move between the host and device anyway, so it is
typically faster to let the host handle communication, by using the
{host} value. Using {host} instead of {no} will enable use of
multiple threads to pack/unpack communicated data.
When running on CPUs or Xeon Phi, the {host} and {device} values work
identically. When using GPUs, the {device} value is the default since it
will typically be optimal if all of your styles used in your input
script are supported by the KOKKOS package. In this case data can stay
on the GPU for many timesteps without being moved between the host and
GPU, if you use the {device} value. This requires that your MPI is able
to access GPU memory directly. Currently that is true for OpenMPI 1.8
(or later versions), Mvapich2 1.9 (or later), and CrayMPI. If your
script uses styles (e.g. fixes) which are not yet supported by the
KOKKOS package, then data has to be move between the host and device
anyway, so it is typically faster to let the host handle communication,
by using the {host} value. Using {host} instead of {no} will enable use
of multiple threads to pack/unpack communicated data.
The {gpu/direct} keyword chooses whether GPU-direct will be used. When
this keyword is set to {on}, buffers in GPU memory are passed directly
through MPI send/receive calls. This reduces overhead of first copying
the data to the host CPU. However GPU-direct is not supported on all
systems, which can lead to segmentation faults and would require
using a value of {off}. If LAMMPS can safely detect that GPU-direct is
not available (currently only possible with OpenMPI v2.0.0 or later),
then the {gpu/direct} keyword is automatically set to {off} by default.
When the {gpu/direct} keyword is set to {off} while any of the {comm}
keywords are set to {device}, the value for these {comm} keywords will
be automatically changed to {host}.
The {gpu/direct} keyword chooses whether GPU-direct will be used. When
this keyword is set to {on}, buffers in GPU memory are passed directly
through MPI send/receive calls. This reduces overhead of first copying
the data to the host CPU. However GPU-direct is not supported on all
systems, which can lead to segmentation faults and would require using a
value of {off}. If LAMMPS can safely detect that GPU-direct is not
available (currently only possible with OpenMPI v2.0.0 or later), then
the {gpu/direct} keyword is automatically set to {off} by default. When
the {gpu/direct} keyword is set to {off} while any of the {comm}
keywords are set to {device}, the value for these {comm} keywords will
be automatically changed to {host}. This setting has no effect if not
running on GPUs.
:line
@ -620,17 +622,19 @@ except "omp" and "mode", are ignored if LAMMPS was not built with Xeon
Phi co-processor support. These settings are made automatically if the
"-sf intel" "command-line switch"_Run_options.html is used. If it is
not used, you must invoke the package intel command in your input
script or or via the "-pk intel" "command-line
script or via the "-pk intel" "command-line
switch"_Run_options.html.
For the KOKKOS package, the option defaults neigh = full, neigh/qeq =
full, newton = off, binsize = 0.0, and comm = device, gpu/direct = on.
When LAMMPS can safely detect, that GPU-direct is not available, the
default value of gpu/direct becomes "off".
These settings are made automatically by the required "-k on"
"command-line switch"_Run_options.html. You can change them by
using the package kokkos command in your input script or via the
"-pk kokkos command-line switch"_Run_options.html.
For the KOKKOS package, the option defaults for GPUs are neigh = full,
neigh/qeq = full, newton = off, binsize for GPUs = 2x LAMMPS default
value, comm = device, gpu/direct = on. When LAMMPS can safely detect
that GPU-direct is not available, the default value of gpu/direct
becomes "off". For CPUs or Xeon Phis, the option defaults are neigh =
half, neigh/qeq = half, newton = on, binsize = 0.0, and comm = no. These
settings are made automatically by the required "-k on" "command-line
switch"_Run_options.html. You can change them by using the package
kokkos command in your input script or via the "-pk kokkos command-line
switch"_Run_options.html.
For the OMP package, the default is Nthreads = 0 and the option
defaults are neigh = yes. These settings are made automatically if

View File

@ -36,7 +36,7 @@ pair_style airebo/morse 3.0
pair_coeff * * ../potentials/CH.airebo-m H C :pre
pair_style rebo
pair_coeff * * ../potentials/CH.airebo H C :pre
pair_coeff * * ../potentials/CH.rebo H C :pre
[Description:]
@ -57,7 +57,8 @@ The {rebo} pair style computes the Reactive Empirical Bond Order (REBO)
Potential of "(Brenner)"_#Brenner. Note that this is the so-called
2nd generation REBO from 2002, not the original REBO from 1990.
As discussed below, 2nd generation REBO is closely related to the
initial AIREBO; it is just a subset of the potential energy terms.
initial AIREBO; it is just a subset of the potential energy terms
with a few slightly different parameters
The AIREBO potential consists of three terms:
@ -113,12 +114,12 @@ various dihedral angle preferences in hydrocarbon configurations.
:line
Only a single pair_coeff command is used with the {airebo}, {airebo}
or {rebo} style which specifies an AIREBO or AIREBO-M potential file
with parameters for C and H. Note that the {rebo} style in LAMMPS
uses the same AIREBO-formatted potential file. These are mapped to
LAMMPS atom types by specifying N additional arguments after the
filename in the pair_coeff command, where N is the number of LAMMPS
atom types:
or {rebo} style which specifies an AIREBO, REBO, or AIREBO-M potential
file with parameters for C and H. Note that as of LAMMPS version
15 May 2019 the {rebo} style in LAMMPS uses its own potential
file (CH.rebo). These are mapped to LAMMPS atom types by specifying
N additional arguments after the filename in the pair_coeff command,
where N is the number of LAMMPS atom types:
filename
N element names = mapping of AIREBO elements to atom types :ul

141
doc/src/pair_drip.txt Normal file
View File

@ -0,0 +1,141 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Commands_all.html)
:line
pair_style drip command :h3
[Syntax:]
pair_style hybrid/overlay drip \[styles ...\] :pre
styles = other styles to be overlayed with drip (optional) :ul
[Examples:]
pair_style hybrid/overlay drip
pair_coeff * * none
pair_coeff * * drip C.drip C :pre
pair_style hybrid/overlay drip rebo
pair_coeff * * drip C.drip C
pair_coeff * * rebo CH.airebo C :pre
pair_style hybrid/overlay drip rebo
pair_coeff * * drip C.drip C NULL
pair_coeff * * rebo CH.airebo C H :pre
[Description:]
Style {drip} computes the interlayer interactions of layered materials using
the dihedral-angle-corrected registry-dependent (DRIP) potential as described
in "(Wen)"_#Wen2018, which is based on the "(Kolmogorov)"_#Kolmogorov2005
potential and provides an improved prediction for forces.
The total potential energy of a system is
:c,image(Eqs/pair_drip.jpg)
where the {r^-6} term models the attractive London dispersion,
the exponential term is designed to capture the registry effect due to
overlapping {pi} bonds, and {fc} is a cutoff function.
This potential (DRIP) only provides the interlayer interactions between
graphene layers. So, to perform a realistic simulation, it should be used in
combination with an intralayer potential such as "REBO"_pair_airebo.html and
"Tersoff"_pair_tersoff.html.
To keep the intralayer interactions unaffected, we should avoid applying DRIP
to contribute energy to intralayer interactions. This can be achieved by
assigning different molecular IDs to atoms in different layers, and DRIP is
implemented such that only atoms with different molecular ID can interact with
each other. For this purpose, "atom style"_atom_style.html "molecular" or
"full" has to be used.
On the other way around, "REBO"_pair_airebo.html ("Tersoff"_pair_tersoff.html
or any other potential used to provide the intralayer interactions) should not
interfere with the interlayer interactions described by DRIP. This is typically
automatically achieved using the commands provided in the {Examples} section
above, since the cutoff distance for carbon-carbon interaction in the intralayer
potentials (e.g. 2 Angstrom for "REBO"_pair_airebo.html) is much smaller than
the equilibrium layer distance of graphene layers (about 3.4 Angstrom).
If you want, you can enforce this by assigning different atom types to atoms in
different layers, and apply an intralayer potential to one atom type.
See "pair_hybrid"_pair_hybrid.html for details.
:line
The "pair_coeff"_pair_coeff.html command for DRIP takes {4+N} arguments, where
{N} is the number of LAMMPS atom types. The fist three arguments must be fixed
to be {* * drip}, the fourth argument is the path to the DRIP parameter file,
and the remaining N arguments specifying the mapping between element in the
parameter file and atom types. For example, if your LAMMPS simulation has 3 atom
types and you want all of them to be C, you would use the following pair_coeff
command:
pair_coeff * * drip C.drip C C C :pre
If a mapping value is specified as NULL, the mapping is not performed. This
could be useful when DRIP is used to model part of the system where other
element exists. Suppose you have a hydrocarbon system, with C of atom type 1
and H of atom type 2, you can use the following command to inform DRIP not to
model H atoms:
pair_style hybrid/overlay drip rebo
pair_coeff * * drip C.drip C NULL
pair_coeff * * rebo CH.airebo C H :pre
NOTE: The potential parameters developed in "(Wen)"_#Wen2018 are provided with
LAMMPS (see the "potentials" directory). Besides those in "Wen"_#Wen2018, an
additional parameter "normal_cutoff", specific to the LAMMPS implementation, is
used to find the three nearest neighbors of an atom to construct the normal.
:line
[Mixing, shift, table, tail correction, and restart info]:
This pair style does not support the pair_modify mix, shift, table,
and tail options.
This pair style does not write their information to binary restart files, since
it is stored in potential files. Thus, you need to re-specify the pair_style and
pair_coeff commands in an input script that reads a restart file.
[Restrictions:]
This pair style is part of the USER-MISC package. It is only enabled if LAMMPS
was built with that package. See the "Build package"_Build_package.html doc
page for more info.
This pair potential requires the "newton"_newton.html setting to be "on" for
pair interactions.
The {C.drip} parameter file provided with LAMMPS (see the "potentials"
directory) is parameterized for metal "units"_units.html. You can use the DRIP
potential with any LAMMPS units, but you would need to create your own custom
parameter file with coefficients listed in the appropriate units, if your
simulation doesn't use "metal" units.
[Related commands:]
"pair_style lebedeva_z"_pair_lebedeva_z.html,
"pair_style kolmogorov/crespi/z"_pair_kolmogorov_crespi_z.html,
"pair_style kolmogorov/crespi/full"_pair_kolmogorov_crespi_full.html,
"pair_style ilp/graphene/hbn"_pair_ilp_graphene_hbn.html.
:line
:link(Wen2018)
[(Wen)] M. Wen, S. Carr, S. Fang, E. Kaxiras, and E. B. Tadmor, Phys. Rev. B,
98, 235404 (2018)
:link(Kolmogorov2005)
[(Kolmogorov)] A. N. Kolmogorov, V. H. Crespi, Phys. Rev. B 71, 235415 (2005)

140
doc/src/pair_e3b.txt Normal file
View File

@ -0,0 +1,140 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Commands_all.html)
:line
pair_style e3b command :h3
[Syntax:]
pair_style e3b Otype :pre
Otype = atom type for oxygen :l
pair_coeff * * keyword :pre
one or more keyword/value pairs must be appended. :l
keyword = {preset} or {Ea} or {Eb} or {Ec} or {E2} or {K3} or {K2} or {Rs} or {Rc3} or {Rc2} or {bondL} or {neigh} :l
If the {preset} keyword is given, no others are needed.
Otherwise, all are mandatory except for {neigh}.
The {neigh} keyword is always optional. :l
{preset} arg = {2011} or {2015} = which set of predefined parameters to use
2011 = use the potential parameters from "(Tainter 2011)"_#Tainter2011
2015 = use the potential parameters from "(Tainter 2015)"_#Tainter2015
{Ea} arg = three-body energy for type A hydrogen bonding interactions (energy units)
{Eb} arg = three-body energy for type B hydrogen bonding interactions (energy units)
{Ec} arg = three-body energy for type C hydrogen bonding interactions (energy units)
{E2} arg = two-body energy correction (energy units)
{K3} arg = three-body exponential constant (inverse distance units)
{K2} arg = two-body exponential constant (inverse distance units)
{Rc3} arg = three-body cutoff (distance units)
{Rc2} arg = two-body cutoff (distance units)
{Rs} arg = three-body switching function cutoff (distance units)
{bondL} arg = intramolecular OH bond length (distance units)
{neigh} arg = approximate integer number of molecules within Rc3 of an oxygen atom :pre
[Examples:]
pair_style e3b 1
pair_coeff * * Ea 35.85 Eb -240.2 Ec 449.3 E2 108269.9 K3 1.907 K2 4.872 Rc3 5.2 Rc2 5.2 Rs 5.0 bondL 0.9572 :pre
pair_style hybrid/overlay e3b 1 lj/cut/tip4p/long 1 2 1 1 0.15 8.5
pair_coeff * * e3b preset 2011 :pre
[Description:]
The {e3b} style computes an \"explicit three-body\" (E3B) potential for water "(Kumar 2008)"_#Kumar.
:c,image(Eqs/e3b.jpg)
This potential was developed as a water model that includes the three-body cooperativity of hydrogen bonding explicitly.
To use it in this way, it must be applied in conjunction with a conventional two-body water model, through {pair_style hybrid/overlay}.
The three body interactions are split into three types: A, B, and C.
Type A corresponds to anti-cooperative double hydrogen bond donor interactions.
Type B corresponds to the cooperative interaction of molecules that both donate and accept a hydrogen bond.
Type C corresponds to anti-cooperative double hydrogen bond acceptor interactions.
The three-body interactions are smoothly cutoff by the switching function s(r) between Rs and Rc3.
The two-body interactions are designed to correct for the effective many-body interactions implicitly included in the conventional two-body potential.
The two-body interactions are cut off sharply at Rc2, because K3 is typically significantly smaller than K2.
See "(Kumar 2008)"_#Kumar for more details.
Only a single {pair_coeff} command is used with the {e3b} style.
The 1st two arguments must be * *.
The oxygen atom type for the pair style is passed as the only argument to the {pair_style} command, not in the {pair_coeff} command.
The hydrogen atom type is inferred by the ordering of the atoms.
NOTE: Every atom of type Otype must be part of a water molecule.
Each water molecule must have consecutive IDs with the oxygen first.
This pair style does not test that this criteria is met.
The {pair_coeff} command must have at least one keyword/value pair, as described above.
The {preset} keyword sets the potential parameters to the values used in "(Tainter 2011)"_#Tainter2011 or "(Tainter 2015)"_#Tainter2015.
To use the water models defined in those references, the {e3b} style should always be used in conjunction with an {lj/cut/tip4p/long} style through {pair_style hybrid/overlay}, as demonstrated in the second example above.
The {preset 2011} option should be used with the "TIP4P water model"_Howto_tip4p.html.
The {preset 2015} option should be used with the "TIP4P/2005 water model"_Howto_tip4p.html.
If the {preset} keyword is used, no other keyword is needed.
Changes to the preset parameters can be made by specifying the {preset} keyword followed by the specific parameter to change, like {Ea}.
Note that the other keywords must come after {preset} in the pair_style command.
The {e3b} style can also be used to implement any three-body potential of the same form by specifying all the keywords except {neigh}: {Ea}, {Eb}, {Ec}, {E2}, {K3}, {K2}, {Rc3}, {Rc2}, {Rs}, and {bondL}.
The keyword {bondL} specifies the intramolecular OH bond length of the water model being used.
This is needed to include H atoms that are within the cutoff even when the attached oxygen atom is not.
This pair style allocates arrays sized according to the number of pairwise interactions within Rc3.
To do this it needs an estimate for the number of water molecules within Rc3 of an oxygen atom.
This estimate defaults to 10 and can be changed using the {neigh} keyword, which takes an integer as an argument.
If the neigh setting is too small, the simulation will fail with the error "neigh is too small".
If the neigh setting is too large, the pair style will use more memory than necessary.
This pair style tallies a breakdown of the total E3B potential energy into sub-categories, which can be accessed via the "compute pair"_compute_pair.html command as a vector of values of length 4.
The 4 values correspond to the terms in the first equation above: the E2 term, the Ea term, the Eb term, and the Ec term.
See the examples/USER/e3b directory for a complete example script.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
This pair style does not support the "pair_modify"_pair_modify.html
shift, table, and tail options.
This pair style does not write its information to "binary restart
files"_restart.html, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
This pair style is incompatible with "respa"_run_style.html.
:line
[Restrictions:]
This pair style is part of the USER-MISC package. It is only enabled
if LAMMPS was built with that package. See the "Build
package"_Build_package.html doc page for more info.
This pair style requires the "newton"_newton.html setting to be "on"
for pair interactions.
This pair style requires a fixed number of atoms in the simulation, so it is incompatible with fixes like "fix deposit"_fix_deposit.html.
If the number of atoms changes between runs, this pair style must be re-initialized by calling the {pair_style} and {pair_coeffs} commands.
This is not a fundamental limitation of the pair style, but the code currently does not support a variable number of atoms.
The {preset} keyword currently only works with real, metal, si, and cgs "units"_units.html.
[Related commands:]
"pair_coeff"_pair_coeff.html, "compute pair"_compute_pair.html
[Default:]
The option default for the {neigh} keyword is 10.
:line
:link(Kumar)
[(Kumar)] Kumar and Skinner, J. Phys. Chem. B, 112, 8311 (2008)
:link(Tainter2011)
[(Tainter 2011)] Tainter, Pieniazek, Lin, and Skinner, J. Chem. Phys., 134, 184501 (2011)
:link(Tainter2015)
[(Tainter 2015)] Tainter, Shi, and Skinner, 11, 2268 (2015)

View File

@ -201,7 +201,7 @@ model. The usage of the TIP4P pair style is documented in the
"pair_lj"_pair_lj.html styles. In the soft version the parameters n, alpha_LJ
and alpha_C are set in the "pair_style"_pair_style.html command, after the
specific parameters of the TIP4P water model and before the cutoffs. The
activation parameter lambda is supplied as an argument of the the
activation parameter lambda is supplied as an argument of the
"pair_coeff"_pair_coeff.html command, after epsilon and sigma and before the
optional cutoffs.
@ -210,7 +210,7 @@ Style {lj/charmm/coul/long/soft} implements a soft-core version of the modified
"pair_lj_charmm"_pair_charmm.html style. In the soft version the parameters n,
alpha_LJ and alpha_C are set in the "pair_style"_pair_style.html command, before
the global cutoffs. The activation parameter lambda is introduced as an argument
of the the "pair_coeff"_pair_coeff.html command, after epsilon and sigma and
of the "pair_coeff"_pair_coeff.html command, after epsilon and sigma and
before the optional eps14 and sigma14.
Style {lj/class2/soft} implements a soft-core version of the 9-6 potential in

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