Compare commits
670 Commits
patch_8Feb
...
patch_30Ap
| Author | SHA1 | Date | |
|---|---|---|---|
| 4f3c87f8c4 | |||
| 02d5f17a18 | |||
| 7fbd409f5b | |||
| faa0da9976 | |||
| e08080cae5 | |||
| 7b7f405d2c | |||
| 66d94572e0 | |||
| 8145c5028d | |||
| 0005ee3e93 | |||
| 8d9697dbf6 | |||
| f052509015 | |||
| 97baee4931 | |||
| 96e51d11ad | |||
| 0bb2e004ab | |||
| 98daf8f825 | |||
| af8a71b1ad | |||
| 0fac0e18d1 | |||
| 8102fdcf24 | |||
| 5d9e85d840 | |||
| d190b76075 | |||
| 930748f6f2 | |||
| 6fc2bda01c | |||
| 8c6e1e2448 | |||
| 809bd3d1bb | |||
| d9fc4a152b | |||
| 0e7d647aeb | |||
| ceff147fc0 | |||
| 8d9a44a837 | |||
| e3d7b52b80 | |||
| c55174ac1d | |||
| b93d9e6f7f | |||
| 16fd5904ed | |||
| 7c3f619e13 | |||
| 6088f2a6a2 | |||
| 0673f6f2b9 | |||
| 37d84de09c | |||
| ebee2b588c | |||
| 4b2388339e | |||
| 1d4372c24d | |||
| 0b24a3d830 | |||
| 2e9404acdf | |||
| d0826f2838 | |||
| d33a30806a | |||
| 14d3d09de3 | |||
| 5e3929de56 | |||
| 70c816aa02 | |||
| 3d7b387786 | |||
| 4af22a723d | |||
| 915c3a6001 | |||
| 8ec231a8e5 | |||
| b8ae466999 | |||
| 814b9b9378 | |||
| 1501e9ba8a | |||
| 57247142d2 | |||
| 1e07ef6f87 | |||
| 898860328b | |||
| fcb4b75589 | |||
| cb559659f8 | |||
| 5c5b57be5a | |||
| 8c4a497af4 | |||
| e57c4c60bd | |||
| 13cf357f66 | |||
| 6f7b3643ef | |||
| e57e4a730b | |||
| b40c4d1641 | |||
| 1dd21e6e0c | |||
| a6c9a782a4 | |||
| 3b43fc3ea7 | |||
| 0d8d8dc0da | |||
| ce1040a103 | |||
| b25657c67b | |||
| 494e76da7d | |||
| cb398bd026 | |||
| 72b69783de | |||
| 8c02ce7302 | |||
| f98aed419c | |||
| 86f4080b71 | |||
| 59a4d42231 | |||
| e8289b0024 | |||
| 3070a11041 | |||
| 47b7437976 | |||
| 6643a4ec92 | |||
| cb27d03c79 | |||
| 8683e1ebf8 | |||
| d6a12f6c3e | |||
| efa8c8d58b | |||
| bcb6e1be4f | |||
| bca7364ba3 | |||
| 9334c72c04 | |||
| e629733d0b | |||
| f10534a721 | |||
| de0938da39 | |||
| f8018a8bba | |||
| 3d7a4fb945 | |||
| d17553d8d2 | |||
| e56d69a267 | |||
| 67f8c83661 | |||
| 542d8aaf07 | |||
| 6e6d350572 | |||
| 4f459a59a1 | |||
| ac7312caf1 | |||
| ed90596849 | |||
| 7f040a3676 | |||
| da16a7e50b | |||
| 815ad4dab2 | |||
| 05993a79b8 | |||
| 175f3ee648 | |||
| 2e1da2958d | |||
| 2757e4e6e6 | |||
| 85a0461a48 | |||
| 20cbe1edff | |||
| cb272159ba | |||
| 73b2e1f47c | |||
| 5d3801cb12 | |||
| 383e206cc2 | |||
| 8b2a8ad08b | |||
| 42e8a7613e | |||
| 4f026b9b38 | |||
| 76dfcc1dfd | |||
| 9543335613 | |||
| f4159ff592 | |||
| e359e80118 | |||
| dbbf198edb | |||
| df94e80bb1 | |||
| 4003387fb1 | |||
| ab5c3b0386 | |||
| 78bab6ee39 | |||
| c52a330a79 | |||
| 265ad4512d | |||
| 605524ab66 | |||
| 968ac3d8d7 | |||
| 81dd96f970 | |||
| 50427ce05d | |||
| a9c376f20d | |||
| 88d160f86e | |||
| 8c03f51020 | |||
| 2aa7a150b4 | |||
| 6679469220 | |||
| da77dde04d | |||
| 6ff1fee6d6 | |||
| 619c2322e5 | |||
| 0d78c7b43d | |||
| 8820467a8b | |||
| d4a495151e | |||
| e45e92b1cb | |||
| 501558743b | |||
| d7a5bf4e16 | |||
| 1a105253c1 | |||
| f2f49e60bf | |||
| f73ccc3025 | |||
| 1696432e82 | |||
| 7372e8fde1 | |||
| f17aff6331 | |||
| 537704fdaa | |||
| 52a13f31b3 | |||
| f02b364e6e | |||
| 40f1662c93 | |||
| 6cb120d691 | |||
| a149fdb420 | |||
| b1070f4703 | |||
| 778537e734 | |||
| 921d3dadf8 | |||
| bd923d8bd4 | |||
| 6411ff8359 | |||
| 4a003644fe | |||
| 365166fef0 | |||
| 34b023456b | |||
| 978b52ee8c | |||
| 98bd720c68 | |||
| 4824992a1e | |||
| 5a75125426 | |||
| cb5c3f900e | |||
| 74ce164457 | |||
| 3eab343821 | |||
| fd7c680654 | |||
| 764fb2522b | |||
| ef184c9b1b | |||
| 0ab65c0343 | |||
| 800f3a81b1 | |||
| 91f3a94851 | |||
| d1cb8970d5 | |||
| d3ea115436 | |||
| c044eeb482 | |||
| 2fc7395c14 | |||
| 719a74a02f | |||
| b1badb6555 | |||
| 0b8332cedf | |||
| 200aa2d06f | |||
| 3a0b108f91 | |||
| 677974573a | |||
| 76b848bb0a | |||
| a0e5d14990 | |||
| 35129c0881 | |||
| 70ae5f41e3 | |||
| a7bb772db7 | |||
| 8d8f0af7a6 | |||
| d5aa60dbfe | |||
| b7aecc0d59 | |||
| 799c16a8b2 | |||
| adbc64b45e | |||
| 2e7316a9e3 | |||
| a8e5af3cb4 | |||
| 053bdea234 | |||
| 7688ead60f | |||
| 61d4b7a47f | |||
| 3bf4cd9c01 | |||
| 4d3c1785c6 | |||
| fa407c05a1 | |||
| 971bce7428 | |||
| 5065350081 | |||
| 74489621c4 | |||
| 585403d650 | |||
| a28ae7c2c0 | |||
| 560ccb2719 | |||
| dd22b80a9d | |||
| ff7f129a5d | |||
| 17cd650622 | |||
| 4eafb624b7 | |||
| 677753731f | |||
| 30929d95e2 | |||
| 75382cf265 | |||
| ff819be807 | |||
| 13255d6338 | |||
| 6a60dad2c3 | |||
| 1bf5047c7a | |||
| 747ddf2642 | |||
| 9d0e518cc5 | |||
| 088a672196 | |||
| 30bca9f91e | |||
| 93f531441a | |||
| d71d12d2de | |||
| 74bfd78b06 | |||
| 4aff7191e7 | |||
| eab939af23 | |||
| 16f66dc561 | |||
| 61483da58b | |||
| ab12a7c95b | |||
| 196b8c6eab | |||
| b9bddd7ba6 | |||
| 2fa6e913ef | |||
| 3cc740b9d3 | |||
| 03ee03c043 | |||
| 5d7c52e114 | |||
| 5210c4c3a4 | |||
| 6b09f6d490 | |||
| 28a6dcd1c3 | |||
| 2ad9355140 | |||
| 44fe8330b9 | |||
| e63d2cee87 | |||
| b685a0a7b8 | |||
| c4fd658e9d | |||
| 8a384df5c3 | |||
| 8ba1d76055 | |||
| af8f06141f | |||
| 03e86c4d17 | |||
| 9d22f82ba7 | |||
| 3867972ae8 | |||
| 77e323d28c | |||
| 1926c95625 | |||
| b6b0d0b30e | |||
| dbd458e9e3 | |||
| 5a6a8a9e57 | |||
| 07a6749ddc | |||
| 3cabfd13cd | |||
| 26b90727b3 | |||
| cf349633f7 | |||
| b8747ce8fb | |||
| efad31f474 | |||
| e2e4fe2cf7 | |||
| 89bc79f657 | |||
| fff28a8666 | |||
| 1266b866e0 | |||
| 1ca0c78a2e | |||
| 0bf6b91576 | |||
| 62045a9c52 | |||
| bbe6c9bb63 | |||
| fc002e30d3 | |||
| 981f12ebeb | |||
| b370a61b60 | |||
| a3a16acead | |||
| 17817fc290 | |||
| 3f9d59294e | |||
| 9912c44413 | |||
| 676370ade7 | |||
| 8c99752cec | |||
| d7a2949d1a | |||
| 6e7f13e6f9 | |||
| 4e74ccbbbe | |||
| b0a07f189c | |||
| 19d25203ad | |||
| 82d646cede | |||
| 7b3f952990 | |||
| 36b645d238 | |||
| b8c4e09b27 | |||
| 81a4d293db | |||
| cb92bccdff | |||
| 0edb82eb5e | |||
| b0a741fc58 | |||
| 30be5e94d9 | |||
| 7a00997a14 | |||
| a726362888 | |||
| 3e8c1c801b | |||
| 2f20581b29 | |||
| 5d54e888d5 | |||
| 1bd47f0318 | |||
| b055837f49 | |||
| 34d1ed9b54 | |||
| eedc88eb9b | |||
| 88755aefca | |||
| ab748ffe48 | |||
| a20d58312d | |||
| e04ab51970 | |||
| 5554deda39 | |||
| de99dc8974 | |||
| e9384b6b17 | |||
| a89a2de9d4 | |||
| b2a7205abe | |||
| 881cc71a44 | |||
| 83e458af0b | |||
| 99acb4ac54 | |||
| f557b12e03 | |||
| 111ff4475e | |||
| 414f9b25d1 | |||
| d5074b39a0 | |||
| 3464464ea9 | |||
| 22be3bd37e | |||
| f69173f410 | |||
| 52f9e4a960 | |||
| c23ace9c97 | |||
| e50c269a6b | |||
| 04f999fdd6 | |||
| 817a851a30 | |||
| 0f030acc59 | |||
| cd6b23d104 | |||
| 75d63df4e0 | |||
| 8916aeb36d | |||
| b975d59d9f | |||
| 8f90d6c6d0 | |||
| 1e8ccb1774 | |||
| 76b9c0049d | |||
| 2cbf56846a | |||
| 86810c2d7c | |||
| a508f1de6c | |||
| 2dbc2c5916 | |||
| 1c3e3ce548 | |||
| fed48427be | |||
| 38c373a0e4 | |||
| 741a7fe630 | |||
| 7a8bb5baaf | |||
| 02b800a3bb | |||
| a626efbca0 | |||
| 487671c46b | |||
| e87e215bcc | |||
| c0c61268ee | |||
| cf8bee9b46 | |||
| 0d4dbb8d73 | |||
| 194e11c329 | |||
| ac20d1ab41 | |||
| 2bac365081 | |||
| a7a1fd4ee5 | |||
| 4cd0ea61f2 | |||
| 05a5ecd4d4 | |||
| 27510f313c | |||
| d278cfe230 | |||
| b6459b3f74 | |||
| 28607f156e | |||
| c26068a57a | |||
| 8845a1a0ae | |||
| 3f0f2383b4 | |||
| 3abfce01ca | |||
| 2558509b70 | |||
| d66b07dabe | |||
| a3c936d283 | |||
| 033a5c2721 | |||
| 5608f87c15 | |||
| 5556567e91 | |||
| 8c50c3d7c8 | |||
| aca8ce1f53 | |||
| 985fc86aa3 | |||
| ff2d8e55c9 | |||
| fbd600592b | |||
| 6e6f903818 | |||
| c7af948dfc | |||
| 17c81295c2 | |||
| 06a57dd659 | |||
| 7fe1cceb76 | |||
| e8efa01006 | |||
| bb8398b22b | |||
| d30e69e871 | |||
| adcd46da55 | |||
| 3b234c167f | |||
| 2cc35ee777 | |||
| f6fb8b220d | |||
| 75ddde438c | |||
| 3a4bb6f980 | |||
| cc2b5fbb80 | |||
| e0c935b52d | |||
| 5fff18932d | |||
| 14a00662e6 | |||
| c3acb3e4ef | |||
| 4e2ebf7feb | |||
| 2077df5465 | |||
| e62746ef27 | |||
| a5c93e75a5 | |||
| 3bc815efe8 | |||
| 9cb2a56194 | |||
| 0edc588458 | |||
| f0e48931e4 | |||
| 9408dd6e92 | |||
| 4e632d1b79 | |||
| 2918dae87e | |||
| fe56cf04bc | |||
| 436e02aa6e | |||
| 4ee98d18da | |||
| 9a6dc2ff11 | |||
| c0ce8591e7 | |||
| b628e3b1b6 | |||
| 4a17cb3467 | |||
| c5a3b034ce | |||
| bfa950a7e9 | |||
| 390fc873bc | |||
| 6b8a768f6c | |||
| 146e2f283a | |||
| 1c7d191988 | |||
| 1e573bd557 | |||
| bc4a80d9e8 | |||
| fa7b5ecfa3 | |||
| 6ed8fbbd51 | |||
| 0d1524526a | |||
| ab0c35be93 | |||
| 849e52040a | |||
| edd4b0cf25 | |||
| f0ec2e3279 | |||
| 5ecbb8bd01 | |||
| 30ee2f3d78 | |||
| 0f0a65bb48 | |||
| d8845b6817 | |||
| 87a243203b | |||
| 5486896876 | |||
| 47b0c77dd9 | |||
| fbc9cf8354 | |||
| c555f7e2ed | |||
| 14e6c126a8 | |||
| 50fef541c2 | |||
| 5fd033c0a2 | |||
| 1d2eab5e1b | |||
| 7062bc862e | |||
| 9298fe7868 | |||
| 16946d8c6d | |||
| 286112ffbc | |||
| 326a97624e | |||
| 80392224cd | |||
| b60f0f754c | |||
| 6bd56c2a85 | |||
| a4e580879c | |||
| 54e5c76333 | |||
| 6bf9c06a5a | |||
| 9cc7bea05d | |||
| 099b9baf0d | |||
| 28f1ad9145 | |||
| f178cc0a73 | |||
| 9185f28a12 | |||
| 229ded45ee | |||
| ba320967a5 | |||
| 73401d02c0 | |||
| eb39866e87 | |||
| 0efc3765f8 | |||
| 05774ed894 | |||
| c4d081b507 | |||
| 9bec93faa9 | |||
| 9178b9446a | |||
| eea30c5b76 | |||
| 36b8271e04 | |||
| de29763d1a | |||
| 394fd751d1 | |||
| d76569c033 | |||
| e6df92e65a | |||
| e6a7c8b03b | |||
| b38033bc59 | |||
| 3ad268739b | |||
| a5f20305d4 | |||
| 2de01cef45 | |||
| 1179beb543 | |||
| 75fe967876 | |||
| 9c52a37546 | |||
| a4b9542ba9 | |||
| 410d79d8b7 | |||
| 200fed9d4c | |||
| 24234d3a0b | |||
| 8db88b1c02 | |||
| 4e26ca29f7 | |||
| ff795e761a | |||
| 12bec9cbad | |||
| d8e8a0d2d2 | |||
| 9207b8814e | |||
| f0a410aa96 | |||
| f25b06fab0 | |||
| a0450fbd2b | |||
| 7b47c82452 | |||
| 07c1942b13 | |||
| 7d0c0bc984 | |||
| d890848412 | |||
| 09de4fb953 | |||
| 318dd34737 | |||
| d5fd423496 | |||
| 3a34c6f17a | |||
| 9168df575a | |||
| 6724ebbdc1 | |||
| 551e7a5943 | |||
| bae2e61fa0 | |||
| 8a28046b4c | |||
| 35d2de298f | |||
| 978b716f18 | |||
| c2725f5a49 | |||
| afa50ab61a | |||
| c193a9aee9 | |||
| a8cee136fe | |||
| e8d56d3ea6 | |||
| e95cf4e917 | |||
| 333154633b | |||
| c8f113f4a6 | |||
| 14667749c6 | |||
| d0ed6f2bf5 | |||
| 8020f5b965 | |||
| b3a7a534a9 | |||
| 0108855930 | |||
| d08979737c | |||
| 13f1c7d2d7 | |||
| b7ee3606db | |||
| 88b62fa6bd | |||
| 34d4209197 | |||
| 528e6632ed | |||
| eaf2ca9c84 | |||
| a645278d6b | |||
| 9ac908f05f | |||
| 581b7d3543 | |||
| 8bed429ab7 | |||
| 393948f363 | |||
| cf86334f43 | |||
| 76533b1572 | |||
| 38b003261d | |||
| 24ff914e5a | |||
| d6200fde93 | |||
| 82187eaac3 | |||
| 36ad48b259 | |||
| eb8a6512e2 | |||
| 6ff1557af8 | |||
| ac7d74f2a5 | |||
| a0b7bf0f5c | |||
| e582c0d4e5 | |||
| f5e3c53880 | |||
| e7c1ca1fca | |||
| b7413226e0 | |||
| 4b8621e7ef | |||
| d2093fe8c2 | |||
| 39b6e0b7c8 | |||
| 277f8356b1 | |||
| 0fade44b43 | |||
| 622eb47902 | |||
| 6068a719ff | |||
| 927dc262b2 | |||
| 7c1fb847f4 | |||
| 4fe6528ed4 | |||
| 490f67d332 | |||
| e96878a70e | |||
| 4226522e20 | |||
| 8ec9b6fb64 | |||
| d7c2ecadad | |||
| 0eef5ebaa3 | |||
| c42b269803 | |||
| e00757e108 | |||
| 9fcd69921f | |||
| 9915a6725f | |||
| b9d8b5f501 | |||
| d677335b23 | |||
| a9b0fb9e9d | |||
| 5c3e3f381b | |||
| 7c2a61ad4c | |||
| a8aeba78f3 | |||
| 562bc4e584 | |||
| adebe90315 | |||
| 682b456aae | |||
| 989496d26c | |||
| a401998ede | |||
| 0fe5b6c34c | |||
| a0699027f7 | |||
| 37821f4fa4 | |||
| bb36e6e3c8 | |||
| 7fcc76f071 | |||
| e195d6faee | |||
| 08b1728a96 | |||
| a278df586d | |||
| 4ce68cf5fd | |||
| 9de0262155 | |||
| 23ce00f366 | |||
| 26eb17aa50 | |||
| 6e4e244e65 | |||
| ef803be08e | |||
| 29dcdec875 | |||
| 18f8f68e67 | |||
| faa716e348 | |||
| dced4c1fca | |||
| 7b4d0092b0 | |||
| 71ed60ced3 | |||
| 009d8c8ebf | |||
| 7861de03a2 | |||
| fd8130859b | |||
| 67782d71a8 | |||
| 7cdb4675ee | |||
| 6c0b100a53 | |||
| 540026ca00 | |||
| e538fd5c6d | |||
| b068690e13 | |||
| 7c3d6dc051 | |||
| ece1aff7e9 | |||
| 3021189cc9 | |||
| 2e0d69b005 | |||
| ab1c3f6498 | |||
| 03b1129abd | |||
| 81e79ec884 | |||
| 4a4147e0e4 | |||
| 29ae88e309 | |||
| dd61ded311 | |||
| 9ed6f2fc43 | |||
| b0938b70d5 | |||
| 8dd3bce7c5 | |||
| 762a4b97ac | |||
| 1b98c0e40d | |||
| 52cb8cf51b | |||
| b9d12f0aa0 | |||
| f61f43a56b | |||
| 634ed487a5 | |||
| 796b6b2d9c | |||
| dd2a1e4787 | |||
| d0667d21cc | |||
| 7aa7002347 | |||
| 9962f941e6 | |||
| dde0974a1a | |||
| 6ab93b52bc | |||
| c0a7cabcba | |||
| 62c8ba7824 | |||
| e37e9cfa2f | |||
| 286a284c5a | |||
| 67e6afaab2 | |||
| 3e73418601 | |||
| 81e33f5f78 | |||
| af42251142 | |||
| fcec1498e3 | |||
| 90a9b7ccd1 | |||
| 7eeb96f1af | |||
| 0264e044e2 | |||
| 0fbc6bebf5 | |||
| 5bdc295331 | |||
| 68ec8822ee | |||
| 955fe583d8 | |||
| cb21051eb8 | |||
| 199a017148 | |||
| a7e3ccd8c4 | |||
| f1f140dd5f | |||
| cb07782935 | |||
| 5958b24edc | |||
| 8a8b968d55 | |||
| da9441471a | |||
| 906a12353c | |||
| 8bbba22867 | |||
| 2fa9a986de | |||
| 5dafd03d1f | |||
| 158c7531fe | |||
| f94c5b7637 | |||
| 85e934681d |
21
.github/ISSUE_TEMPLATE/generic.md
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
---
|
||||
name: Generic Issue
|
||||
about: For issues that do not fit any of the other categories
|
||||
title: "_Replace With a Descriptive Title_"
|
||||
labels:
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Summary**
|
||||
|
||||
_Please provide a clear and concise description of what this issue report is about._
|
||||
|
||||
**LAMMPS Version and Platform**
|
||||
|
||||
_Please specify precisely which LAMMPS version this issue was detected with (the first line of the output) and what platform (operating system and its version, hardware) you are running on. If possible, test with the most recent LAMMPS patch version_
|
||||
|
||||
**Details**
|
||||
|
||||
_Please explain the issue in detail here_
|
||||
|
||||
15
.github/ISSUE_TEMPLATE/help_request.md
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
name: Request for Help
|
||||
about: "Don't post help requests here, email the lammps-users mailing list"
|
||||
title: ""
|
||||
labels: invalid
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Please **do not** post requests for help (e.g. with installing or using LAMMPS) here.
|
||||
Instead send an e-mail to the lammps-users mailing list.
|
||||
|
||||
This issue tracker is for tracking LAMMPS development related issues only.
|
||||
|
||||
Thanks for your cooperation.
|
||||
13
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -4,22 +4,19 @@ _Briefly describe the new feature(s), enhancement(s), or bugfix(es) included in
|
||||
|
||||
**Related Issues**
|
||||
|
||||
__If this addresses an open GitHub Issue, mention the issue number here. Use the phrases `fixes #221` or `closes #135`, when you want those issues to be automatically closed when the pull request is merged_
|
||||
_If this addresses an open GitHub issue for this project, please mention the issue number here, and describe the relation. Use the phrases `fixes #221` or `closes #135`, when you want an issue to be automatically closed when the pull request is merged_
|
||||
|
||||
**Author(s)**
|
||||
|
||||
_Please state name and affiliation of the author or authors that should be credited with the changes in this pull request. If this pull request adds new files to the distribution, please also provide a suitable "long-lived" e-mail address (e.g. from gmail, yahoo, outlook, etc.) for the *corresponding* author, i.e. the person the LAMMPS developers can contact directly with questions and requests related to maintenance and support of this code. now and in the future_
|
||||
_Please state name and affiliation of the author or authors that should be credited with the changes in this pull request. If this pull request adds new files to the distribution, please also provide a suitable "long-lived" e-mail address (ideally something that can outlive your institution's e-mail, in case you change jobs) for the *corresponding* author, i.e. the person the LAMMPS developers can contact directly with questions and requests related to maintenance and support of this contributed code._
|
||||
|
||||
**Licensing**
|
||||
|
||||
By submitting this pull request, I agree, that my contribution will be included in LAMMPS and redistributed under the GNU General Public License version 2.
|
||||
|
||||
_Please complete the following statement by adding "yes" or "no":_
|
||||
My contribution may be re-licensed as LGPL (for use of LAMMPS as a library linked to proprietary software):
|
||||
By submitting this pull request, I agree, that my contribution will be included in LAMMPS and redistributed under either the GNU General Public License version 2 (GPL v2) or the GNU Lesser General Public License version 2.1 (LGPL v2.1).
|
||||
|
||||
**Backward Compatibility**
|
||||
|
||||
_Please state whether any changes in the pull request break backward compatibility for inputs, and - if yes - explain what has been changed and why_
|
||||
_Please state whether any changes in the pull request will break backward compatibility for inputs, and - if yes - explain what has been changed and why_
|
||||
|
||||
**Implementation Notes**
|
||||
|
||||
@ -27,7 +24,7 @@ _Provide any relevant details about how the changes are implemented, how correct
|
||||
|
||||
**Post Submission Checklist**
|
||||
|
||||
_Please check the fields below as they are completed **after** the pull request has been submitted_
|
||||
_Please check the fields below as they are completed **after** the pull request has been submitted. Delete lines that don't apply_
|
||||
|
||||
- [ ] The feature or features in this pull request is complete
|
||||
- [ ] Licensing information is complete
|
||||
|
||||
@ -11,6 +11,8 @@ get_filename_component(LAMMPS_LIB_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../lib
|
||||
get_filename_component(LAMMPS_LIB_BINARY_DIR ${CMAKE_BINARY_DIR}/lib ABSOLUTE)
|
||||
get_filename_component(LAMMPS_DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../doc ABSOLUTE)
|
||||
|
||||
find_package(Git)
|
||||
|
||||
# by default, install into $HOME/.local (not /usr/local), so that no root access (and sudo!!) is needed
|
||||
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "default install path" FORCE )
|
||||
@ -85,7 +87,7 @@ string(TOUPPER "${CMAKE_BUILD_TYPE}" BTYPE)
|
||||
# this is fast, so check for it all the time
|
||||
message(STATUS "Running check for auto-generated files from make-based build system")
|
||||
file(GLOB SRC_AUTOGEN_FILES ${LAMMPS_SOURCE_DIR}/style_*.h)
|
||||
list(APPEND SRC_AUTOGEN_FILES ${LAMMPS_SOURCE_DIR}/lmpinstalledpkgs.h)
|
||||
list(APPEND SRC_AUTOGEN_FILES ${LAMMPS_SOURCE_DIR}/lmpinstalledpkgs.h ${LAMMPS_SOURCE_DIR}/lmpgitversion.h)
|
||||
foreach(_SRC ${SRC_AUTOGEN_FILES})
|
||||
get_filename_component(FILENAME "${_SRC}" NAME)
|
||||
if(EXISTS ${LAMMPS_SOURCE_DIR}/${FILENAME})
|
||||
@ -178,7 +180,7 @@ set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE GRANULAR
|
||||
USER-MEAMC USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF
|
||||
USER-PHONON USER-PLUMED USER-PTM USER-QTB USER-REAXC USER-SCAFACOS
|
||||
USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK
|
||||
USER-QUIP USER-QMMM USER-YAFF)
|
||||
USER-QUIP USER-QMMM USER-YAFF USER-ADIOS)
|
||||
set(ACCEL_PACKAGES USER-OMP KOKKOS OPT USER-INTEL GPU)
|
||||
set(OTHER_PACKAGES CORESHELL QEQ)
|
||||
foreach(PKG ${DEFAULT_PACKAGES})
|
||||
@ -201,6 +203,17 @@ endif()
|
||||
|
||||
include_directories(${LAMMPS_SOURCE_DIR})
|
||||
|
||||
|
||||
if(PKG_USER-ADIOS)
|
||||
# The search for ADIOS2 must come before MPI because
|
||||
# it includes its own MPI search with the latest FindMPI.cmake
|
||||
# script that defines the MPI::MPI_C target
|
||||
enable_language(C)
|
||||
find_package(ADIOS2 REQUIRED)
|
||||
list(APPEND LAMMPS_LINK_LIBS adios2::adios2)
|
||||
endif()
|
||||
|
||||
|
||||
# do MPI detection after language activation, if MPI for these language is required
|
||||
find_package(MPI QUIET)
|
||||
option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
|
||||
@ -307,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()
|
||||
@ -354,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)
|
||||
@ -368,19 +386,10 @@ if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE)
|
||||
endif()
|
||||
|
||||
if(PKG_PYTHON)
|
||||
find_package(PythonInterp REQUIRED)
|
||||
find_package(PythonLibs REQUIRED)
|
||||
add_definitions(-DLMP_PYTHON)
|
||||
include_directories(${PYTHON_INCLUDE_DIR})
|
||||
list(APPEND LAMMPS_LINK_LIBS ${PYTHON_LIBRARY})
|
||||
if(BUILD_LIB AND BUILD_SHARED_LIBS)
|
||||
if(NOT PYTHON_INSTDIR)
|
||||
execute_process(COMMAND ${PYTHON_EXECUTABLE}
|
||||
-c "import distutils.sysconfig as cg; print(cg.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}'))"
|
||||
OUTPUT_VARIABLE PYTHON_INSTDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
endif()
|
||||
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../python/lammps.py DESTINATION ${PYTHON_INSTDIR})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(JPEG QUIET)
|
||||
@ -439,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)
|
||||
@ -453,7 +468,7 @@ if(PKG_VORONOI)
|
||||
set(VORO_BUILD_OPTIONS CXX=${CMAKE_CXX_COMPILER} CFLAGS=${VORO_BUILD_CFLAGS})
|
||||
|
||||
ExternalProject_Add(voro_build
|
||||
URL http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz
|
||||
URL https://download.lammps.org/thirdparty/voro++-0.4.6.tar.gz
|
||||
URL_MD5 2338b824c3b7b25590e18e8df5d68af9
|
||||
CONFIGURE_COMMAND "" BUILD_COMMAND make ${VORO_BUILD_OPTIONS} BUILD_IN_SOURCE 1 INSTALL_COMMAND ""
|
||||
)
|
||||
@ -472,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")
|
||||
@ -483,7 +504,7 @@ if(PKG_LATTE)
|
||||
URL https://github.com/lanl/LATTE/archive/v1.2.1.tar.gz
|
||||
URL_MD5 85ac414fdada2d04619c8f936344df14
|
||||
SOURCE_SUBDIR cmake
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> ${CMAKE_REQUEST_PIC}
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> ${CMAKE_REQUEST_PIC} -DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES}
|
||||
)
|
||||
ExternalProject_get_property(latte_build INSTALL_DIR)
|
||||
set(LATTE_LIBRARIES ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/liblatte.a)
|
||||
@ -499,7 +520,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)
|
||||
@ -539,8 +568,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})
|
||||
@ -554,29 +583,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})
|
||||
@ -584,7 +637,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)
|
||||
@ -600,9 +653,13 @@ if(PKG_USER-PLUMED)
|
||||
endif()
|
||||
|
||||
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 ${LAMMPS_LIB_SOURCE_DIR}/molfile)
|
||||
target_link_libraries(molfile INTERFACE ${CMAKE_DL_LIBS})
|
||||
target_include_directories(molfile INTERFACE ${MOLFILE_INCLUDE_DIRS})
|
||||
# no need to link with -ldl on windows
|
||||
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
target_link_libraries(molfile INTERFACE ${CMAKE_DL_LIBS})
|
||||
endif()
|
||||
list(APPEND LAMMPS_LINK_LIBS molfile)
|
||||
endif()
|
||||
|
||||
@ -614,7 +671,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)
|
||||
@ -656,28 +719,43 @@ if(PKG_USER-VTK)
|
||||
endif()
|
||||
|
||||
if(PKG_KIM)
|
||||
option(DOWNLOAD_KIM "Download KIM-API v1 from OpenKIM instead of using an already installed one)" OFF)
|
||||
find_package(CURL)
|
||||
if(CURL_FOUND)
|
||||
include_directories(${CURL_INCLUDE_DIRS})
|
||||
list(APPEND LAMMPS_LINK_LIBS ${CURL_LIBRARIES})
|
||||
add_definitions(-DLMP_KIM_CURL)
|
||||
endif()
|
||||
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 v1 download requested - we will build our own")
|
||||
message(STATUS "KIM-API download requested - we will build our own")
|
||||
enable_language(C)
|
||||
enable_language(Fortran)
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(kim_build
|
||||
URL https://github.com/openkim/kim-api/archive/v1.9.5.tar.gz
|
||||
URL_MD5 9f66efc128da33039e30659f36fc6d00
|
||||
BUILD_IN_SOURCE 1
|
||||
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
|
||||
URL https://s3.openkim.org/kim-api/kim-api-2.0.2.txz
|
||||
URL_MD5 537d9c0abd30f85b875ebb584f9143fa
|
||||
BINARY_DIR build
|
||||
CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||
)
|
||||
ExternalProject_get_property(kim_build INSTALL_DIR)
|
||||
set(KIM_INCLUDE_DIRS ${INSTALL_DIR}/include/kim-api-v1)
|
||||
set(KIM_LIBRARIES ${INSTALL_DIR}/lib/libkim-api-v1.so)
|
||||
set(KIM-API_INCLUDE_DIRS ${INSTALL_DIR}/include/kim-api)
|
||||
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)
|
||||
if(NOT KIM_FOUND)
|
||||
message(FATAL_ERROR "KIM-API v1 not found, help CMake to find it by setting KIM_LIBRARY and KIM_INCLUDE_DIR, or set DOWNLOAD_KIM=ON to download it")
|
||||
endif()
|
||||
find_package(KIM-API REQUIRED)
|
||||
endif()
|
||||
list(APPEND LAMMPS_LINK_LIBS ${KIM_LIBRARIES})
|
||||
include_directories(${KIM_INCLUDE_DIRS})
|
||||
list(APPEND LAMMPS_LINK_LIBS "${KIM-API_LDFLAGS}")
|
||||
include_directories(${KIM-API_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
if(PKG_MESSAGE)
|
||||
@ -692,6 +770,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()
|
||||
|
||||
@ -711,7 +790,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")
|
||||
@ -760,7 +845,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})
|
||||
@ -927,7 +1011,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)
|
||||
|
||||
@ -1040,37 +1124,79 @@ if(PKG_OPT)
|
||||
endif()
|
||||
|
||||
if(PKG_USER-INTEL)
|
||||
find_package(TBB REQUIRED)
|
||||
find_package(MKL REQUIRED)
|
||||
if(LAMMPS_SIZES STREQUAL BIGBIG)
|
||||
message(FATAL_ERROR "The USER-INTEL Package is not compatible with -DLAMMPS_BIGBIG")
|
||||
endif()
|
||||
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()
|
||||
@ -1083,33 +1209,33 @@ 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
|
||||
${USER-INTEL_SOURCES_DIR}/verlet_lrt_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)
|
||||
RegisterIntegrateStyle(${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.h)
|
||||
|
||||
set_property(GLOBAL PROPERTY "USER-INTEL_SOURCES" "${USER-INTEL_SOURCES}")
|
||||
get_property(USER-INTEL_SOURCES GLOBAL PROPERTY USER-INTEL_SOURCES)
|
||||
|
||||
# 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)
|
||||
@ -1151,6 +1277,10 @@ if(PKG_GPU)
|
||||
message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.")
|
||||
endif()
|
||||
option(CUDPP_OPT "Enable CUDPP_OPT" ON)
|
||||
option(CUDA_MPS_SUPPORT "Enable tweaks to support CUDA Multi-process service (MPS)" OFF)
|
||||
if(CUDA_MPS_SUPPORT)
|
||||
set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY")
|
||||
endif()
|
||||
|
||||
set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)")
|
||||
|
||||
@ -1214,7 +1344,7 @@ if(PKG_GPU)
|
||||
add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS})
|
||||
target_link_libraries(gpu ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
|
||||
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS})
|
||||
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT)
|
||||
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS})
|
||||
if(CUDPP_OPT)
|
||||
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini)
|
||||
target_compile_definitions(gpu PRIVATE -DUSE_CUDPP)
|
||||
@ -1240,7 +1370,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)
|
||||
@ -1251,7 +1389,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})
|
||||
@ -1308,6 +1460,18 @@ message(STATUS "Generating lmpinstalledpkgs.h...")
|
||||
file(WRITE "${LAMMPS_STYLE_HEADERS_DIR}/lmpinstalledpkgs.h.tmp" "${temp}" )
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HEADERS_DIR}/lmpinstalledpkgs.h.tmp" "${LAMMPS_STYLE_HEADERS_DIR}/lmpinstalledpkgs.h")
|
||||
|
||||
######################################
|
||||
# Generate lmpgitversion.h
|
||||
######################################
|
||||
add_custom_target(gitversion COMMAND ${CMAKE_COMMAND}
|
||||
-DCMAKE_CURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
-DGIT_EXECUTABLE="${GIT_EXECUTABLE}"
|
||||
-DGIT_FOUND="${GIT_FOUND}"
|
||||
-DLAMMPS_STYLE_HEADERS_DIR="${LAMMPS_STYLE_HEADERS_DIR}"
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/Modules/generate_lmpgitversion.cmake)
|
||||
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${LAMMPS_STYLE_HEADERS_DIR}/gitversion.h)
|
||||
list(APPEND LAMMPS_DEPS gitversion)
|
||||
|
||||
###########################################
|
||||
# Actually add executable and lib to build
|
||||
############################################
|
||||
@ -1352,8 +1516,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
|
||||
###############################################################################
|
||||
@ -1415,11 +1590,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(
|
||||
@ -1428,6 +1606,49 @@ install(
|
||||
DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/profile.d
|
||||
)
|
||||
|
||||
###############################################################################
|
||||
# Install LAMMPS lib and python module into site-packages folder with
|
||||
# "install-python" target. Behaves exactly like "make install-python" for
|
||||
# conventional build. Only available, if a shared library is built.
|
||||
# This is primarily for people that only want to use the Python wrapper.
|
||||
###############################################################################
|
||||
if(BUILD_LIB AND BUILD_SHARED_LIBS)
|
||||
find_package(PythonInterp)
|
||||
if (PYTHONINTERP_FOUND)
|
||||
add_custom_target(
|
||||
install-python
|
||||
${PYTHON_EXECUTABLE} install.py -v ${LAMMPS_SOURCE_DIR}/version.h
|
||||
-m ${CMAKE_CURRENT_SOURCE_DIR}/../python/lammps.py
|
||||
-l ${CMAKE_BINARY_DIR}/liblammps${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../python
|
||||
COMMENT "Installing LAMMPS Python module")
|
||||
else()
|
||||
add_custom_target(
|
||||
install-python
|
||||
${CMAKE_COMMAND} -E echo "Must have Python installed to install the LAMMPS Python module")
|
||||
endif()
|
||||
else()
|
||||
add_custom_target(
|
||||
install-python
|
||||
${CMAKE_COMMAND} -E echo "Must build LAMMPS as a shared library to use the Python module")
|
||||
endif()
|
||||
|
||||
###############################################################################
|
||||
# Add LAMMPS python module to "install" target. This is taylored for building
|
||||
# LAMMPS for package managers and with different prefix settings.
|
||||
# This requires either a shared library or that the PYTHON package is included.
|
||||
###############################################################################
|
||||
if((BUILD_LIB AND BUILD_SHARED_LIBS) OR (PKG_PYTHON))
|
||||
find_package(PythonInterp)
|
||||
if (PYTHONINTERP_FOUND)
|
||||
execute_process(COMMAND ${PYTHON_EXECUTABLE}
|
||||
-c "import distutils.sysconfig as cg; print(cg.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}'))"
|
||||
OUTPUT_VARIABLE PYTHON_DEFAULT_INSTDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
set(PYTHON_INSTDIR ${PYTHON_DEFAULT_INSTDIR} CACHE PATH "Installation folder for LAMMPS Python module")
|
||||
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../python/lammps.py DESTINATION ${PYTHON_INSTDIR})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
###############################################################################
|
||||
# Testing
|
||||
#
|
||||
|
||||
59
cmake/Modules/FindKIM-API.cmake
Normal file
@ -0,0 +1,59 @@
|
||||
#
|
||||
# CDDL HEADER START
|
||||
#
|
||||
# The contents of this file are subject to the terms of the Common Development
|
||||
# and Distribution License Version 1.0 (the "License").
|
||||
#
|
||||
# You can obtain a copy of the license at
|
||||
# http://www.opensource.org/licenses/CDDL-1.0. See the License for the
|
||||
# specific language governing permissions and limitations under the License.
|
||||
#
|
||||
# When distributing Covered Code, include this CDDL HEADER in each file and
|
||||
# include the License file in a prominent location with the name LICENSE.CDDL.
|
||||
# If applicable, add the following below this CDDL HEADER, with the fields
|
||||
# enclosed by brackets "[]" replaced with your own identifying information:
|
||||
#
|
||||
# Portions Copyright (c) [yyyy] [name of copyright owner]. All rights reserved.
|
||||
#
|
||||
# CDDL HEADER END
|
||||
#
|
||||
|
||||
#
|
||||
# Copyright (c) 2013--2019, Regents of the University of Minnesota.
|
||||
# All rights reserved.
|
||||
#
|
||||
# Contributors:
|
||||
# Richard Berger
|
||||
# Christoph Junghans
|
||||
# Ryan S. Elliott
|
||||
#
|
||||
|
||||
# - Find KIM-API
|
||||
#
|
||||
# sets standard pkg_check_modules variables plus:
|
||||
#
|
||||
# KIM-API-CMAKE_C_COMPILER
|
||||
# KIM-API-CMAKE_CXX_COMPILER
|
||||
# KIM-API-CMAKE_Fortran_COMPILER
|
||||
#
|
||||
|
||||
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 ${REQ_OR_QUI} libkim-api>=2.0)
|
||||
|
||||
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
|
||||
find_package_handle_standard_args(KIM-API REQUIRED_VARS KIM-API_LIBRARIES)
|
||||
@ -1,22 +0,0 @@
|
||||
# - Find kim
|
||||
# Find the native KIM headers and libraries.
|
||||
#
|
||||
# KIM_INCLUDE_DIRS - where to find kim.h, etc.
|
||||
# KIM_LIBRARIES - List of libraries when using kim.
|
||||
# KIM_FOUND - True if kim found.
|
||||
#
|
||||
|
||||
find_path(KIM_INCLUDE_DIR KIM_API.h PATH_SUFFIXES kim-api-v1)
|
||||
|
||||
find_library(KIM_LIBRARY NAMES kim-api-v1)
|
||||
|
||||
set(KIM_LIBRARIES ${KIM_LIBRARY})
|
||||
set(KIM_INCLUDE_DIRS ${KIM_INCLUDE_DIR})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
# handle the QUIETLY and REQUIRED arguments and set KIM_FOUND to TRUE
|
||||
# if all listed variables are TRUE
|
||||
|
||||
find_package_handle_standard_args(KIM DEFAULT_MSG KIM_LIBRARY KIM_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(KIM_INCLUDE_DIR KIM_LIBRARY )
|
||||
@ -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}")
|
||||
|
||||
@ -50,6 +50,7 @@ function(CreateStyleHeader path filename)
|
||||
list(REMOVE_AT ARGV 0 1)
|
||||
set(header_list)
|
||||
foreach(FNAME ${ARGV})
|
||||
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${FNAME}")
|
||||
get_filename_component(FNAME ${FNAME} NAME)
|
||||
list(APPEND header_list ${FNAME})
|
||||
endforeach()
|
||||
@ -61,6 +62,7 @@ function(CreateStyleHeader path filename)
|
||||
message(STATUS "Generating ${filename}...")
|
||||
file(WRITE "${path}/${filename}.tmp" "${temp}" )
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${path}/${filename}.tmp" "${path}/${filename}")
|
||||
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${path}/${filename}")
|
||||
endfunction(CreateStyleHeader)
|
||||
|
||||
function(GenerateStyleHeader path property style)
|
||||
@ -89,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
|
||||
|
||||
30
cmake/Modules/generate_lmpgitversion.cmake
Normal file
@ -0,0 +1,30 @@
|
||||
set(temp "#ifndef LMP_GIT_VERSION_H\n#define LMP_GIT_VERSION_H\n")
|
||||
set(temp_git_commit "(unknown)")
|
||||
set(temp_git_branch "(unknown)")
|
||||
set(temp_git_describe "(unknown)")
|
||||
set(temp_git_info "false")
|
||||
if(GIT_FOUND AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.git)
|
||||
set(temp_git_info "true")
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. rev-parse HEAD
|
||||
OUTPUT_VARIABLE temp_git_commit
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. rev-parse --abbrev-ref HEAD
|
||||
OUTPUT_VARIABLE temp_git_branch
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}/.. describe --dirty=-modified
|
||||
OUTPUT_VARIABLE temp_git_describe
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
endif()
|
||||
|
||||
set(temp "${temp}const bool LAMMPS_NS::LAMMPS::has_git_info = ${temp_git_info};\n")
|
||||
set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_commit[] = \"${temp_git_commit}\";\n")
|
||||
set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_branch[] = \"${temp_git_branch}\";\n")
|
||||
set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_descriptor[] = \"${temp_git_describe}\";\n")
|
||||
set(temp "${temp}#endif\n\n")
|
||||
|
||||
message(STATUS "Generating lmpgitversion.h...")
|
||||
file(WRITE "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${temp}" )
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h")
|
||||
@ -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>
|
||||
|
||||
@ -1503,6 +1516,16 @@ target API.
|
||||
</dl>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>CUDA_MPS_SUPPORT</code> (CUDA only)</td>
|
||||
<td>Enable tweaks for running with Nvidia CUDA Multi-process services daemon</td>
|
||||
<td>
|
||||
<dl>
|
||||
<dt><code>on</code></dt>
|
||||
<dt><code>off</code> (default)</dt>
|
||||
</dl>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>BIN2C</code> (CUDA only)</td>
|
||||
<td>Path to bin2c executable, will automatically pick up the first one in your $PATH.</td>
|
||||
|
||||
@ -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@
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
@ -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)
|
||||
|
||||
@ -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)
|
||||
17
cmake/presets/mingw-cross.cmake
Normal 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)
|
||||
8
cmake/presets/minimal.cmake
Normal 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
@ -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()
|
||||
@ -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)
|
||||
|
||||
@ -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()
|
||||
@ -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()
|
||||
@ -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()
|
||||
1
doc/.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
/old
|
||||
/html
|
||||
/latex
|
||||
/spelling
|
||||
|
||||
59
doc/Makefile
@ -39,7 +39,7 @@ help:
|
||||
@echo "Please use \`make <target>' where <target> is one of"
|
||||
@echo " html create HTML doc pages in html dir"
|
||||
@echo " pdf create Developer.pdf and Manual.pdf in this dir"
|
||||
@echo " old create old-style HTML doc pages in old dir"
|
||||
@echo " old create old-style HTML doc pages and Manual.pdf in old dir"
|
||||
@echo " fetch fetch HTML and PDF files from LAMMPS web site"
|
||||
@echo " epub create ePUB format manual for e-book readers"
|
||||
@echo " mobi convert ePUB to MOBI format manual for e-book readers (e.g. Kindle)"
|
||||
@ -56,7 +56,7 @@ clean-all: clean
|
||||
rm -rf $(BUILDDIR)/* utils/txt2html/txt2html.exe
|
||||
|
||||
clean:
|
||||
rm -rf $(RSTDIR) html old epub
|
||||
rm -rf $(RSTDIR) html old epub latex
|
||||
rm -rf spelling
|
||||
|
||||
clean-spelling:
|
||||
@ -115,21 +115,44 @@ mobi: epub
|
||||
@ebook-convert LAMMPS.epub LAMMPS.mobi
|
||||
@echo "Conversion finished. The MOBI manual file is created."
|
||||
|
||||
pdf: utils/txt2html/txt2html.exe
|
||||
pdf: $(OBJECTS) $(ANCHORCHECK)
|
||||
@(\
|
||||
set -e; \
|
||||
cd src/Developer; \
|
||||
pdflatex developer; \
|
||||
pdflatex developer; \
|
||||
mv developer.pdf ../../Developer.pdf; \
|
||||
cd ..; \
|
||||
../utils/txt2html/txt2html.exe -b *.txt; \
|
||||
htmldoc --batch lammps.book; \
|
||||
for s in `echo *.txt | sed -e 's/ \(pairs\|bonds\|angles\|dihedrals\|impropers\|commands_list\|fixes\|computes\).txt/ /g' | sed -e 's,\.txt,\.html,g'` ; \
|
||||
do grep -q ^$$s lammps.book || \
|
||||
echo WARNING: doc file $$s missing in src/lammps.book; done; \
|
||||
rm *.html; \
|
||||
cd ../../; \
|
||||
)
|
||||
@(\
|
||||
. $(VENV)/bin/activate ;\
|
||||
cp -r src/* $(RSTDIR)/ ;\
|
||||
sphinx-build $(SPHINXEXTRA) -b latex -c utils/sphinx-config -d $(BUILDDIR)/doctrees $(RSTDIR) latex ;\
|
||||
echo "############################################" ;\
|
||||
doc_anchor_check src/*.txt ;\
|
||||
echo "############################################" ;\
|
||||
deactivate ;\
|
||||
)
|
||||
@cd latex && \
|
||||
sed 's/latexmk -pdf -dvi- -ps-/pdflatex/g' Makefile > temp && \
|
||||
mv temp Makefile && \
|
||||
sed 's/\\begin{equation}//g' LAMMPS.tex > tmp.tex && \
|
||||
mv tmp.tex LAMMPS.tex && \
|
||||
sed 's/\\end{equation}//g' LAMMPS.tex > tmp.tex && \
|
||||
mv tmp.tex LAMMPS.tex && \
|
||||
make && \
|
||||
make && \
|
||||
mv LAMMPS.pdf ../Manual.pdf && \
|
||||
cd ../;
|
||||
@rm -rf latex/_sources
|
||||
@rm -rf latex/PDF
|
||||
@rm -rf latex/USER
|
||||
@cp -r src/PDF latex/PDF
|
||||
@cp -r src/USER latex/USER
|
||||
@rm -rf latex/PDF/.[sg]*
|
||||
@rm -rf latex/USER/.[sg]*
|
||||
@rm -rf latex/USER/*/.[sg]*
|
||||
@rm -rf latex/USER/*/*.[sg]*
|
||||
@echo "Build finished. Manual.pdf and Developer.pdf are in this directory."
|
||||
|
||||
old: utils/txt2html/txt2html.exe
|
||||
@rm -rf old
|
||||
@ -139,6 +162,18 @@ old: utils/txt2html/txt2html.exe
|
||||
cp Eqs/*.jpg ../old/Eqs; \
|
||||
cp JPG/* ../old/JPG; \
|
||||
cp PDF/* ../old/PDF;
|
||||
@( set -e;\
|
||||
cd src/Developer; \
|
||||
pdflatex developer; \
|
||||
pdflatex developer; \
|
||||
mv developer.pdf ../../old/Developer.pdf; \
|
||||
cd ../../old; \
|
||||
for s in `echo ../src/*.txt | sed -e 's,\.\./src/,,g' -e 's/ \(pairs\|bonds\|angles\|dihedrals\|impropers\|commands_list\|fixes\|computes\).txt/ /g' | sed -e 's,\.txt,\.html,g'` ; \
|
||||
do grep -q ^$$s ../src/lammps.book || \
|
||||
echo WARNING: doc file $$s missing in src/lammps.book; done; \
|
||||
htmldoc --batch ../src/lammps.book; \
|
||||
)
|
||||
|
||||
|
||||
fetch:
|
||||
@rm -rf html_www Manual_www.pdf Developer_www.pdf
|
||||
@ -176,7 +211,7 @@ $(VENV):
|
||||
@( \
|
||||
$(VIRTUALENV) -p $(PYTHON) $(VENV); \
|
||||
. $(VENV)/bin/activate; \
|
||||
pip install Sphinx; \
|
||||
pip install Sphinx==1.7.6; \
|
||||
deactivate;\
|
||||
)
|
||||
|
||||
|
||||
259
doc/lammps.1
@ -1,40 +1,259 @@
|
||||
.TH LAMMPS "2018-08-22"
|
||||
.TH LAMMPS "30 April 2019" "2019-04-30"
|
||||
.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
@ -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.
|
||||
|
||||
@ -116,6 +116,18 @@ enables OpenMP. For GNU compilers it is -fopenmp. For (recent) Intel
|
||||
compilers it is -qopenmp. If you are using a different compiler,
|
||||
please refer to its documentation.
|
||||
|
||||
[OpenMP Compiler compatibility info]: :link(default-none-issues)
|
||||
|
||||
Some compilers do not fully support the 'default(none)' directive
|
||||
and others (e.g. GCC version 9 and beyond) may implement OpenMP 4.0
|
||||
semantics, which are incompatible with the OpenMP 3.1 directives used
|
||||
in LAMMPS (for maximal compatibility with compiler versions in use).
|
||||
In those case, all 'default(none)' directives (which aid in detecting
|
||||
incorrect and unwanted sharing) can be replaced with 'default(shared)'
|
||||
while dropping all 'shared()' directives. The script
|
||||
'src/USER-OMP/hack_openmp_for_pgi_gcc9.sh' can be used to automate
|
||||
this conversion.
|
||||
|
||||
:line
|
||||
|
||||
Choice of compiler and compile/link options :h4,link(compile)
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -37,6 +37,7 @@ This is the list of packages that may require additional steps.
|
||||
"POEMS"_#poems,
|
||||
"PYTHON"_#python,
|
||||
"VORONOI"_#voronoi,
|
||||
"USER-ADIOS"_#user-adios,
|
||||
"USER-ATC"_#user-atc,
|
||||
"USER-AWPMD"_#user-awpmd,
|
||||
"USER-COLVARS"_#user-colvars,
|
||||
@ -81,17 +82,19 @@ which GPU hardware to build for.
|
||||
|
||||
[CMake build]:
|
||||
|
||||
-D GPU_API=value # value = opencl (default) or cuda
|
||||
-D GPU_PREC=value # precision setting
|
||||
# value = double or mixed (default) or single
|
||||
-D OCL_TUNE=value # hardware choice for GPU_API=opencl
|
||||
# generic (default) or intel (Intel CPU) or fermi, kepler, cypress (NVIDIA)
|
||||
-D GPU_ARCH=value # primary GPU hardware choice for GPU_API=cuda
|
||||
# value = sm_XX, see below
|
||||
# default is Cuda-compiler dependent, but typically sm_20
|
||||
-D CUDPP_OPT=value # optimization setting for GPU_API=cuda
|
||||
# enables CUDA Performance Primitives Optimizations
|
||||
# yes (default) or no :pre
|
||||
-D GPU_API=value # value = opencl (default) or cuda
|
||||
-D GPU_PREC=value # precision setting
|
||||
# value = double or mixed (default) or single
|
||||
-D OCL_TUNE=value # hardware choice for GPU_API=opencl
|
||||
# generic (default) or intel (Intel CPU) or fermi, kepler, cypress (NVIDIA)
|
||||
-D GPU_ARCH=value # primary GPU hardware choice for GPU_API=cuda
|
||||
# value = sm_XX, see below
|
||||
# default is Cuda-compiler dependent, but typically sm_20
|
||||
-D CUDPP_OPT=value # optimization setting for GPU_API=cuda
|
||||
# enables CUDA Performance Primitives Optimizations
|
||||
# value = yes (default) or no
|
||||
-D CUDA_MPS_SUPPORT=value # enables some tweaks required to run with active nvidia-cuda-mps daemon
|
||||
# value = yes or no (default) :pre
|
||||
|
||||
GPU_ARCH settings for different GPU hardware is as follows:
|
||||
|
||||
@ -168,39 +171,33 @@ used to build the GPU library.
|
||||
|
||||
KIM package :h4,link(kim)
|
||||
|
||||
To build with this package, the KIM library must be downloaded and
|
||||
built on your system. It must include the KIM models that you want to
|
||||
use with LAMMPS.
|
||||
To build with this package, the KIM library with API v2 must be downloaded
|
||||
and built on your system. It must include the KIM models that you want to
|
||||
use with LAMMPS. If you want to use the "kim_query"_kim_query.html
|
||||
command, you also need to have libcurl installed with the matching
|
||||
development headers and the curl-config tool.
|
||||
|
||||
Note that in LAMMPS lingo, a KIM model driver is a pair style
|
||||
(e.g. EAM or Tersoff). A KIM model is a pair style for a particular
|
||||
element or alloy and set of parameters, e.g. EAM for Cu with a
|
||||
specific EAM potential file. Also note that installing the KIM API
|
||||
library with all its models, may take around 30 min to build. Of
|
||||
course you only need to do that once.
|
||||
specific EAM potential file. Also note that downloading and installing
|
||||
the KIM API library with all its models, may take a long time (10s of
|
||||
minutes to hours) to build. Of course you only need to do that once.
|
||||
|
||||
See the list of KIM model drivers here:
|
||||
https://openkim.org/kim-items/model-drivers/alphabetical
|
||||
https://openkim.org/browse/model-drivers/alphabetical
|
||||
|
||||
See the list of all KIM models here:
|
||||
https://openkim.org/kim-items/models/by-model-drivers
|
||||
|
||||
See the list of example KIM models included by default here:
|
||||
https://openkim.org/kim-api on the "What is in the KIM API source
|
||||
package?" page.
|
||||
https://openkim.org/browse/models/by-model-drivers
|
||||
|
||||
[CMake build]:
|
||||
|
||||
-D DOWNLOAD_KIM=value # download OpenKIM API v1 for build, value = no (default) or yes
|
||||
-D KIM_LIBRARY=path # KIM library file (only needed if a custom location)
|
||||
-D KIM_INCLUDE_DIR=path # KIM include directory (only needed if a custom location) :pre
|
||||
-D DOWNLOAD_KIM=value # download OpenKIM API v2 for build, value = no (default) or yes :pre
|
||||
|
||||
If DOWNLOAD_KIM is set, the KIM library will be downloaded and built
|
||||
inside the CMake build directory. If the KIM library is already on
|
||||
your system (in a location CMake cannot find it), KIM_LIBRARY is the
|
||||
filename (plus path) of the KIM library file, not the directory the
|
||||
library file is in. KIM_INCLUDE_DIR is the directory the KIM include
|
||||
file is in.
|
||||
your system (in a location CMake cannot find it), set the PKG_CONFIG_PATH
|
||||
environment variable so that libkim-api can be found.
|
||||
|
||||
[Traditional make]:
|
||||
|
||||
@ -214,8 +211,8 @@ make lib-kim args="-b " # (re-)install KIM API lib with only example models
|
||||
make lib-kim args="-b -a Glue_Ercolessi_Adams_Al__MO_324507536345_001" # ditto plus one model
|
||||
make lib-kim args="-b -a everything" # install KIM API lib with all models
|
||||
make lib-kim args="-n -a EAM_Dynamo_Ackland_W__MO_141627196590_002" # add one model or model driver
|
||||
make lib-kim args="-p /usr/local/kim-api" # use an existing KIM API installation at the provided location
|
||||
make lib-kim args="-p /usr/local/kim-api -a EAM_Dynamo_Ackland_W__MO_141627196590_002" # ditto but add one model or driver :pre
|
||||
make lib-kim args="-p /usr/local" # use an existing KIM API installation at the provided location
|
||||
make lib-kim args="-p /usr/local -a EAM_Dynamo_Ackland_W__MO_141627196590_002" # ditto but add one model or driver :pre
|
||||
|
||||
:line
|
||||
|
||||
@ -576,6 +573,32 @@ the lib/voronoi/Makefile.lammps file.
|
||||
|
||||
:line
|
||||
|
||||
USER-ADIOS package :h4,link(user-adios)
|
||||
|
||||
The USER-ADIOS package requires the "ADIOS I/O library"_https://github.com/ornladios/ADIOS2,
|
||||
version 2.3.1 or newer. Make sure that you have ADIOS built either with or
|
||||
without MPI to match if you build LAMMPS with or without MPI.
|
||||
ADIOS compilation settings for LAMMPS are automatically detected, if the PATH
|
||||
and LD_LIBRARY_PATH environment variables have been updated for the local ADIOS
|
||||
installation and the instructions below are followed for the respective build systems.
|
||||
|
||||
[CMake build]:
|
||||
|
||||
-D ADIOS2_DIR=path # path is where ADIOS 2.x is installed
|
||||
-D PKG_USER-ADIOS=yes :pre
|
||||
|
||||
[Traditional make]:
|
||||
|
||||
Turn on the USER-ADIOS package before building LAMMPS. If the ADIOS 2.x software is installed in PATH, there is nothing else to do:
|
||||
|
||||
make yes-user-adios :pre
|
||||
|
||||
otherwise, set ADIOS2_DIR environment variable when turning on the package:
|
||||
|
||||
ADIOS2_DIR=path make yes-user-adios # path is where ADIOS 2.x is installed :pre
|
||||
|
||||
:line
|
||||
|
||||
USER-ATC package :h4,link(user-atc)
|
||||
|
||||
The USER-ATC package requires the MANYBODY package also be installed.
|
||||
@ -836,23 +859,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:
|
||||
|
||||
@ -874,7 +908,17 @@ USER-MOLFILE package :h4,link(user-molfile)
|
||||
|
||||
[CMake build]:
|
||||
|
||||
No additional settings are needed besides "-D PKG_USER-MOLFILE=yes".
|
||||
-D MOLFILE_INCLUDE_DIRS=path # (optional) path where VMD molfile plugin headers are installed
|
||||
-D PKG_USER-MOLFILE=yes :pre
|
||||
|
||||
|
||||
Using "-D PKG_USER-MOLFILE=yes" enables the package, and setting
|
||||
"-D MOLFILE_INCLUDE DIRS" allows to provide a custom location for
|
||||
the molfile plugin header files. These should match the ABI of the
|
||||
plugin files used, and thus one typically sets them to include
|
||||
folder of the local VMD installation in use. LAMMPS ships with a
|
||||
couple of default header files that correspond to a popular VMD
|
||||
version, usually the latest release.
|
||||
|
||||
[Traditional make]:
|
||||
|
||||
@ -883,7 +927,11 @@ loading library libdl.a that is typically present on all systems. It
|
||||
is required for LAMMPS to link with this package. If the setting is
|
||||
not valid for your system, you will need to edit the Makefile.lammps
|
||||
file. See lib/molfile/README and lib/molfile/Makefile.lammps for
|
||||
details.
|
||||
details. It is also possible to configure a different folder with
|
||||
the VMD molfile plugin header files. LAMMPS ships with a couple of
|
||||
default headers, but these are not compatible with all VMD versions,
|
||||
so it is often best to change this setting to the location of the
|
||||
same include files of the local VMD installation in use.
|
||||
|
||||
:line
|
||||
|
||||
@ -932,7 +980,9 @@ LINKFLAGS: -fopenmp # for GNU Compilers
|
||||
LINKFLAGS: -qopenmp # for Intel compilers on Linux :pre
|
||||
|
||||
For other platforms and compilers, please consult the documentation
|
||||
about OpenMP support for your compiler.
|
||||
about OpenMP support for your compiler. Please see the note about
|
||||
how to address compatibility "issues with the 'default(none)'
|
||||
directive"_Build_basics.html#default-none-issues of some compilers.
|
||||
|
||||
:line
|
||||
|
||||
|
||||
@ -48,6 +48,7 @@ packages:
|
||||
"POEMS"_Build_extras.html#poems,
|
||||
"PYTHON"_Build_extras.html#python,
|
||||
"VORONOI"_Build_extras.html#voronoi,
|
||||
"USER-ADIOS"_Build_extras.html#user-adios,
|
||||
"USER-ATC"_Build_extras.html#user-atc,
|
||||
"USER-AWPMD"_Build_extras.html#user-awpmd,
|
||||
"USER-COLVARS"_Build_extras.html#user-colvars,
|
||||
@ -148,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]:
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -48,12 +48,14 @@ An alphabetic list of all general LAMMPS commands.
|
||||
"dimension"_dimension.html,
|
||||
"displace_atoms"_displace_atoms.html,
|
||||
"dump"_dump.html,
|
||||
"dump adios"_dump_adios.html,
|
||||
"dump image"_dump_image.html,
|
||||
"dump_modify"_dump_modify.html,
|
||||
"dump movie"_dump_image.html,
|
||||
"dump netcdf"_dump_netcdf.html,
|
||||
"dump netcdf/mpiio"_dump_netcdf.html,
|
||||
"dump vtk"_dump_vtk.html,
|
||||
"dynamical_matrix"_dynamical_matrix.html,
|
||||
"echo"_echo.html,
|
||||
"fix"_fix.html,
|
||||
"fix_modify"_fix_modify.html,
|
||||
@ -66,6 +68,7 @@ An alphabetic list of all general LAMMPS commands.
|
||||
"improper_style"_improper_style.html,
|
||||
"include"_include.html,
|
||||
"jump"_jump.html,
|
||||
"kim_query"_kim_query.html,
|
||||
"kspace_modify"_kspace_modify.html,
|
||||
"kspace_style"_kspace_style.html,
|
||||
"label"_label.html,
|
||||
@ -76,9 +79,11 @@ An alphabetic list of all general LAMMPS commands.
|
||||
"minimize"_minimize.html,
|
||||
"min_modify"_min_modify.html,
|
||||
"min_style"_min_style.html,
|
||||
"min_style spin"_min_spin.html,
|
||||
"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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
@ -224,7 +226,7 @@ OPT.
|
||||
"wall/body/polyhedron"_fix_wall_body_polyhedron.html,
|
||||
"wall/colloid"_fix_wall.html,
|
||||
"wall/ees"_fix_wall_ees.html,
|
||||
"wall/gran (o)"_fix_wall_gran.html,
|
||||
"wall/gran"_fix_wall_gran.html,
|
||||
"wall/gran/region"_fix_wall_gran_region.html,
|
||||
"wall/harmonic"_fix_wall.html,
|
||||
"wall/lj1043"_fix_wall.html,
|
||||
|
||||
@ -98,6 +98,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/min_spin_damping.jpg
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
13
doc/src/Eqs/min_spin_damping.tex
Normal file
@ -0,0 +1,13 @@
|
||||
\documentclass[preview]{standalone}
|
||||
\usepackage{varwidth}
|
||||
\usepackage[utf8x]{inputenc}
|
||||
\usepackage{amsmath, amssymb, graphics, setspace}
|
||||
|
||||
\begin{document}
|
||||
\begin{varwidth}{50in}
|
||||
\begin{equation}
|
||||
\frac{d \vec{s}_{i}}{dt} = \lambda\, \vec{s}_{i} \times\left( \vec{\omega}_{i} \times\vec{s}_{i} \right)
|
||||
\nonumber
|
||||
\end{equation}
|
||||
\end{varwidth}
|
||||
\end{document}
|
||||
BIN
doc/src/Eqs/min_spin_timestep.jpg
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
14
doc/src/Eqs/min_spin_timestep.tex
Normal file
@ -0,0 +1,14 @@
|
||||
\documentclass[preview]{standalone}
|
||||
\usepackage{varwidth}
|
||||
\usepackage[utf8x]{inputenc}
|
||||
\usepackage{amsmath, amssymb, graphics, setspace}
|
||||
|
||||
\begin{document}
|
||||
\begin{varwidth}{50in}
|
||||
\begin{equation}
|
||||
{\Delta t}_{\rm max} = \frac{2\pi}{\kappa
|
||||
\left|\vec{\omega}_{\rm max} \right|}
|
||||
\nonumber
|
||||
\end{equation}
|
||||
\end{varwidth}
|
||||
\end{document}
|
||||
BIN
doc/src/Eqs/neb_spin_angle.jpg
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
15
doc/src/Eqs/neb_spin_angle.tex
Normal 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
|
After Width: | Height: | Size: 8.2 KiB |
16
doc/src/Eqs/neb_spin_k.tex
Normal 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}
|
||||
BIN
doc/src/Eqs/neb_spin_rodrigues_formula.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
16
doc/src/Eqs/neb_spin_rodrigues_formula.tex
Normal 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}
|
||||
@ -6988,12 +6988,6 @@ The atom style defined does not have this attribute. :dd
|
||||
|
||||
The atom style defined does not have these attributes. :dd
|
||||
|
||||
{KIM neighbor iterator exceeded range} :dt
|
||||
|
||||
This should not happen. It likely indicates a bug
|
||||
in the KIM implementation of the interatomic potential
|
||||
where it is requesting neighbors incorrectly. :dd
|
||||
|
||||
{KOKKOS package does not yet support comm_style tiled} :dt
|
||||
|
||||
Self-explanatory. :dd
|
||||
@ -10185,10 +10179,6 @@ valid. :dd
|
||||
|
||||
Self-explanatory. :dd
|
||||
|
||||
{Unrecognized virial argument in pair_style command} :dt
|
||||
|
||||
Only two options are supported: LAMMPSvirial and KIMvirial :dd
|
||||
|
||||
{Unsupported mixing rule in kspace_style ewald/disp} :dt
|
||||
|
||||
Only geometric mixing is supported. :dd
|
||||
|
||||
@ -178,12 +178,6 @@ When using fixes like box/relax, the potential energy used by the minimizer
|
||||
is augmented by an additional energy provided by the fix. Thus the printed
|
||||
converged energy may be different from the total potential energy. :dd
|
||||
|
||||
{Energy tally does not account for 'zero yes'} :dt
|
||||
|
||||
The energy removed by using the 'zero yes' flag is not accounted
|
||||
for in the energy tally and thus energy conservation cannot be
|
||||
monitored in this case. :dd
|
||||
|
||||
{Estimated error in splitting of dispersion coeffs is %g} :dt
|
||||
|
||||
Error is greater than 0.0001 percent. :dd
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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).
|
||||
|
||||
@ -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
|
||||
|
||||
@ -57,6 +57,17 @@ library is then loaded by the Python interface. In this example we enable the
|
||||
MOLECULE package and compile LAMMPS with C++ exceptions, PNG, JPEG and FFMPEG
|
||||
output support enabled.
|
||||
|
||||
Step 1a: For the CMake based build system, the steps are:
|
||||
|
||||
mkdir $LAMMPS_DIR/build-shared
|
||||
cd $LAMMPS_DIR/build-shared :pre
|
||||
|
||||
# MPI, PNG, Jpeg, FFMPEG are auto-detected
|
||||
cmake ../cmake -DPKG_MOLECULE=yes -DLAMMPS_EXCEPTIONS=yes -DBUILD_LIB=yes -DBUILD_SHARED_LIBS=yes
|
||||
make :pre
|
||||
|
||||
Step 1b: For the legacy, make based build system, the steps are:
|
||||
|
||||
cd $LAMMPS_DIR/src :pre
|
||||
|
||||
# add packages if necessary
|
||||
@ -68,10 +79,9 @@ make mpi mode=shlib LMP_INC="-DLAMMPS_PNG -DLAMMPS_JPEG -DLAMMPS_FFMPEG -DLAMMPS
|
||||
Step 2: Installing the LAMMPS Python package :h6
|
||||
|
||||
PyLammps is part of the lammps Python package. To install it simply install
|
||||
that package into your current Python installation.
|
||||
that package into your current Python installation with:
|
||||
|
||||
cd $LAMMPS_DIR/python
|
||||
python install.py :pre
|
||||
make install-python :pre
|
||||
|
||||
NOTE: Recompiling the shared library requires re-installing the Python package
|
||||
|
||||
@ -94,14 +104,21 @@ apt-get install python-virtualenv :pre
|
||||
|
||||
Creating a virtualenv with lammps installed :h6
|
||||
|
||||
# create virtualenv name 'testing' :pre
|
||||
# create virtualenv named 'testing'
|
||||
virtualenv $HOME/python/testing :pre
|
||||
|
||||
# activate 'testing' environment
|
||||
source testing/bin/activate :pre
|
||||
source $HOME/python/testing/bin/activate :pre
|
||||
|
||||
Now configure and compile the LAMMPS shared library as outlined above.
|
||||
When using CMake and the shared library has already been build, you
|
||||
need to re-run CMake to update the location of the python executable
|
||||
to the location in the virtual environment with:
|
||||
|
||||
cmake . -DPYTHON_EXECUTABLE=$(which python) :pre
|
||||
|
||||
# install LAMMPS package in virtualenv
|
||||
(testing) cd $LAMMPS_DIR/python
|
||||
(testing) python install.py :pre
|
||||
(testing) make install-python :pre
|
||||
|
||||
# install other useful packages
|
||||
(testing) pip install matplotlib jupyter mpi4py :pre
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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).
|
||||
|
||||
@ -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).
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 37 KiB |
@ -1,7 +1,7 @@
|
||||
<!-- HTML_ONLY -->
|
||||
<HEAD>
|
||||
<TITLE>LAMMPS Users Manual</TITLE>
|
||||
<META NAME="docnumber" CONTENT="8 Feb 2019 version">
|
||||
<META NAME="docnumber" CONTENT="30 Apr 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
|
||||
8 Feb 2019 version :c,h2
|
||||
30 Apr 2019 version :c,h2
|
||||
|
||||
"What is a LAMMPS version?"_Manual_version.html
|
||||
|
||||
|
||||
@ -63,6 +63,7 @@ as contained in the file name.
|
||||
"SRD"_#PKG-SRD,
|
||||
"VORONOI"_#PKG-VORONOI :tb(c=6,ea=c)
|
||||
|
||||
"USER-ADIOS"_#PKG-USER-ADIOS,
|
||||
"USER-ATC"_#PKG-USER-ATC,
|
||||
"USER-AWPMD"_#PKG-USER-AWPMD,
|
||||
"USER-BOCS"_#PKG-USER-BOCS,
|
||||
@ -340,18 +341,19 @@ KIM package :link(PKG-KIM),h4
|
||||
A "pair_style kim"_pair_kim.html command which is a wrapper on the
|
||||
Knowledge Base for Interatomic Models (KIM) repository of interatomic
|
||||
potentials, enabling any of them to be used in LAMMPS simulations.
|
||||
Also a "kim_query"_kim_query.html command, which allows to query
|
||||
the OpenKIM database for stored properties.
|
||||
|
||||
To use this package you must have the KIM library available on your
|
||||
system.
|
||||
|
||||
Information about the KIM project can be found at its website:
|
||||
https://openkim.org. The KIM project is led by Ellad Tadmor and Ryan
|
||||
Elliott (U Minnesota) and James Sethna (Cornell U).
|
||||
Elliott (U Minnesota).
|
||||
|
||||
[Authors:] Ryan Elliott (U Minnesota) is the main developer for the KIM
|
||||
API which the "pair_style kim"_pair_kim.html command uses. He
|
||||
developed the pair style in collaboration with Valeriu Smirichinski (U
|
||||
Minnesota).
|
||||
developed the pair style.
|
||||
|
||||
[Install:]
|
||||
|
||||
@ -916,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
|
||||
@ -975,6 +978,31 @@ examples/voronoi :ul
|
||||
|
||||
:line
|
||||
|
||||
USER-ADIOS package :link(PKG-USER-ADIOS),h4
|
||||
|
||||
[Contents:]
|
||||
|
||||
ADIOS is a high-performance I/O library. This package implements the
|
||||
dump "atom/adios" and dump "custom/adios" commands to write data using
|
||||
the ADIOS library.
|
||||
|
||||
[Authors:] Norbert Podhorszki (ORNL) from the ADIOS developer team.
|
||||
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#user-adios on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
|
||||
src/USER-ADIOS: filenames -> commands
|
||||
src/USER-ADIOS/README
|
||||
examples/USER/adios
|
||||
https://github.com/ornladios/ADIOS2 :ul
|
||||
|
||||
:line
|
||||
|
||||
USER-ATC package :link(PKG-USER-ATC),h4
|
||||
|
||||
[Contents:]
|
||||
@ -1700,14 +1728,19 @@ USER-PHONON package :link(PKG-USER-PHONON),h4
|
||||
A "fix phonon"_fix_phonon.html command that calculates dynamical
|
||||
matrices, which can then be used to compute phonon dispersion
|
||||
relations, directly from molecular dynamics simulations.
|
||||
And a "dynamical_matrix" command to compute the dynamical matrix
|
||||
from finite differences.
|
||||
|
||||
[Authors:] Ling-Ti Kong (Shanghai Jiao Tong University) for "fix phonon"
|
||||
and Charlie Sievers (UC Davis) for "dynamical_matrix"
|
||||
|
||||
[Author:] Ling-Ti Kong (Shanghai Jiao Tong University).
|
||||
|
||||
[Supporting info:]
|
||||
|
||||
src/USER-PHONON: filenames -> commands
|
||||
src/USER-PHONON/README
|
||||
"fix phonon"_fix_phonon.html
|
||||
"dynamical_matrix"_dynamical_matrix.html
|
||||
examples/USER/phonon :ul
|
||||
|
||||
:line
|
||||
@ -2102,5 +2135,3 @@ src/USER-YAFF/README
|
||||
"pair_style mm3/switch3/coulgauss/long"_pair_mm3_switch3_coulgauss.html
|
||||
"pair_style lj/switch3/coulgauss/long"_pair_lj_switch3_coulgauss.html
|
||||
examples/USER/yaff :ul
|
||||
|
||||
|
||||
|
||||
@ -38,6 +38,7 @@ int = internal library: provided with LAMMPS, but you may need to build it
|
||||
ext = external library: you will need to download and install it on your machine :ul
|
||||
|
||||
Package, Description, Doc page, Example, Library
|
||||
"USER-ADIOS"_Packages_details.html#PKG-USER-ADIOS, dump output via ADIOS, "dump adios"_dump_adios.html, USER/adios, ext
|
||||
"USER-ATC"_Packages_details.html#PKG-USER-ATC, Atom-to-Continuum coupling, "fix atc"_fix_atc.html, USER/atc, int
|
||||
"USER-AWPMD"_Packages_details.html#PKG-USER-AWPMD, wave packet MD, "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, int
|
||||
"USER-BOCS"_Packages_details.html#PKG-USER-BOCS, BOCS bottom up coarse graining, "fix bocs"_fix_bocs.html, USER/bocs, no
|
||||
|
||||
@ -12,16 +12,23 @@ Installing LAMMPS in Python :h3
|
||||
For Python to invoke LAMMPS, there are 2 files it needs to know about:
|
||||
|
||||
python/lammps.py
|
||||
src/liblammps.so :ul
|
||||
liblammps.so or liblammps.dylib :ul
|
||||
|
||||
Lammps.py is the Python wrapper on the LAMMPS library interface.
|
||||
Liblammps.so is the shared LAMMPS library that Python loads, as
|
||||
described above.
|
||||
The python source code in lammps.py is the Python wrapper on the
|
||||
LAMMPS library interface. The liblammps.so or liblammps.dylib file
|
||||
is the shared LAMMPS library that Python loads dynamically.
|
||||
|
||||
You can insure Python can find these files in one of two ways:
|
||||
You can achieve that Python can find these files in one of two ways:
|
||||
|
||||
set two environment variables
|
||||
run the python/install.py script :ul
|
||||
set two environment variables pointing to the location in the source tree
|
||||
run "make install-python" or run the python/install.py script explicitly :ul
|
||||
|
||||
When calling "make install-python" LAMMPS will try to install the
|
||||
python module and the shared library into the python site-packages folders;
|
||||
either the system-wide ones, or the local users ones (in case of insufficient
|
||||
permissions for the global install). Python will then find the module
|
||||
and shared library file automatically. The exact location of these folders
|
||||
depends on your python version and your operating system.
|
||||
|
||||
If you set the paths to these files as environment variables, you only
|
||||
have to do it once. For the csh or tcsh shells, add something like
|
||||
@ -30,42 +37,28 @@ this to your ~/.cshrc file, one line for each of the two files:
|
||||
setenv PYTHONPATH $\{PYTHONPATH\}:/home/sjplimp/lammps/python
|
||||
setenv LD_LIBRARY_PATH $\{LD_LIBRARY_PATH\}:/home/sjplimp/lammps/src :pre
|
||||
|
||||
If you use the python/install.py script, you need to invoke it every
|
||||
time you rebuild LAMMPS (as a shared library) or make changes to the
|
||||
python/lammps.py file.
|
||||
On MacOSX you may also need to set DYLD_LIBRARY_PATH accordingly.
|
||||
For Bourne/Korn shells accordingly into the corresponding files using
|
||||
the "export" shell builtin.
|
||||
|
||||
You can invoke install.py from the python directory as
|
||||
If you use "make install-python" or the python/install.py script, you need
|
||||
to invoke it every time you rebuild LAMMPS (as a shared library) or
|
||||
make changes to the python/lammps.py file, so that the site-packages
|
||||
files are updated with the new version.
|
||||
|
||||
% python install.py \[libdir\] \[pydir\] :pre
|
||||
If the default settings of "make install-python" are not what you want,
|
||||
you can invoke install.py from the python directory manually as
|
||||
|
||||
The optional libdir is where to copy the LAMMPS shared library to; the
|
||||
default is /usr/local/lib. The optional pydir is where to copy the
|
||||
lammps.py file to; the default is the site-packages directory of the
|
||||
version of Python that is running the install script.
|
||||
% python install.py -m \<python module\> -l <shared library> -v <version.h file> \[-d \<pydir\>\] :pre
|
||||
|
||||
Note that libdir must be a location that is in your default
|
||||
LD_LIBRARY_PATH, like /usr/local/lib or /usr/lib. And pydir must be a
|
||||
location that Python looks in by default for imported modules, like
|
||||
its site-packages dir. If you want to copy these files to
|
||||
non-standard locations, such as within your own user space, you will
|
||||
need to set your PYTHONPATH and LD_LIBRARY_PATH environment variables
|
||||
accordingly, as above.
|
||||
The -m flag points to the lammps.py python module file to be installed,
|
||||
the -l flag points to the LAMMPS shared library file to be installed,
|
||||
the -v flag points to the version.h file in the LAMMPS source
|
||||
and the optional -d flag to a custom (legacy) installation folder :ul
|
||||
|
||||
If the install.py script does not allow you to copy files into system
|
||||
directories, prefix the python command with "sudo". If you do this,
|
||||
make sure that the Python that root runs is the same as the Python you
|
||||
run. E.g. you may need to do something like
|
||||
|
||||
% sudo /usr/local/bin/python install.py \[libdir\] \[pydir\] :pre
|
||||
|
||||
You can also invoke install.py from the make command in the src
|
||||
directory as
|
||||
|
||||
% make install-python :pre
|
||||
|
||||
In this mode you cannot append optional arguments. Again, you may
|
||||
need to prefix this with "sudo". In this mode you cannot control
|
||||
which Python is invoked by root.
|
||||
If you use a legacy installation folder, you will need to set your
|
||||
PYTHONPATH and LD_LIBRARY_PATH (and/or DYLD_LIBRARY_PATH) environment
|
||||
variables accordingly, as described above.
|
||||
|
||||
Note that if you want Python to be able to load different versions of
|
||||
the LAMMPS shared library (see "this section"_Python_shlib.html), you will
|
||||
|
||||
@ -13,11 +13,11 @@ Overview of Python and LAMMPS :h3
|
||||
LAMMPS can work together with Python in three ways. First, Python can
|
||||
wrap LAMMPS through the its "library interface"_Howto_library.html, so
|
||||
that a Python script can create one or more instances of LAMMPS and
|
||||
launch one or more simulations. In Python lingo, this is "extending"
|
||||
Python with LAMMPS.
|
||||
launch one or more simulations. In Python lingo, this is called
|
||||
"extending" Python with a LAMMPS module.
|
||||
|
||||
Second, a lower-level Python interface can be used indirectly through
|
||||
provided PyLammps and IPyLammps wrapper classes, written in Python.
|
||||
the provided PyLammps and IPyLammps wrapper classes, written in Python.
|
||||
These wrappers try to simplify the usage of LAMMPS in Python by
|
||||
providing an object-based interface to common LAMMPS functionality.
|
||||
They also reduces the amount of code necessary to parameterize LAMMPS
|
||||
@ -25,11 +25,12 @@ scripts through Python and make variables and computes directly
|
||||
accessible.
|
||||
|
||||
Third, LAMMPS can use the Python interpreter, so that a LAMMPS
|
||||
input script can invoke Python code directly, and pass information
|
||||
back-and-forth between the input script and Python functions you
|
||||
write. This Python code can also callback to LAMMPS to query or change
|
||||
its attributes. In Python lingo, this is "embedding" Python in
|
||||
LAMMPS. When used in this mode, Python can perform operations that
|
||||
the simple LAMMPS input script syntax cannot.
|
||||
input script or styles can invoke Python code directly, and pass
|
||||
information back-and-forth between the input script and Python
|
||||
functions you write. This Python code can also callback to LAMMPS
|
||||
to query or change its attributes through the LAMMPS Python module
|
||||
mentioned above. In Python lingo, this is "embedding" Python in
|
||||
LAMMPS. When used in this mode, Python can perform script operations
|
||||
that the simple LAMMPS input script syntax can not.
|
||||
|
||||
|
||||
|
||||
@ -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.
|
||||
@ -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"
|
||||
|
||||
@ -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,
|
||||
@ -34,6 +34,10 @@ rebo, sw, tersoff :l
|
||||
K-Space Styles: pppm, pppm/disp :l
|
||||
:ule
|
||||
|
||||
IMPORTANT NOTE: None of the styles in the USER-INTEL package currently
|
||||
support computing per-atom stress. If any compute or fix in your
|
||||
input requires it, LAMMPS will abort with an error message.
|
||||
|
||||
[Speed-ups to expect:]
|
||||
|
||||
The speedups will depend on your simulation, the hardware, which
|
||||
|
||||
@ -32,6 +32,7 @@ Commands :h1
|
||||
dimension
|
||||
displace_atoms
|
||||
dump
|
||||
dump_adios
|
||||
dump_cfg_uef
|
||||
dump_h5md
|
||||
dump_image
|
||||
@ -39,6 +40,7 @@ Commands :h1
|
||||
dump_molfile
|
||||
dump_netcdf
|
||||
dump_vtk
|
||||
dynamical_matrix
|
||||
echo
|
||||
fix
|
||||
fix_modify
|
||||
@ -51,6 +53,7 @@ Commands :h1
|
||||
include
|
||||
info
|
||||
jump
|
||||
kim_query
|
||||
kspace_modify
|
||||
kspace_style
|
||||
label
|
||||
@ -59,10 +62,12 @@ Commands :h1
|
||||
mass
|
||||
message
|
||||
min_modify
|
||||
min_spin
|
||||
min_style
|
||||
minimize
|
||||
molecule
|
||||
neb
|
||||
neb_spin
|
||||
neigh_modify
|
||||
neighbor
|
||||
newton
|
||||
|
||||
@ -54,9 +54,10 @@ local quantities have the word "local" in their style,
|
||||
e.g. {bond/local}. Styles with neither "atom" or "local" in their
|
||||
style produce global quantities.
|
||||
|
||||
Note that a single compute produces either global or per-atom or local
|
||||
quantities, but never more than one of these (with only a few
|
||||
exceptions, as documented by individual compute commands).
|
||||
Note that a single compute can produce either global or per-atom or
|
||||
local quantities, but not both global and per-atom. It can produce
|
||||
local quantities in tandem with global or per-atom quantities. The
|
||||
compute doc page will explain.
|
||||
|
||||
Global, per-atom, and local quantities each come in three kinds: a
|
||||
single scalar value, a vector of values, or a 2d array of values. The
|
||||
|
||||
@ -137,11 +137,12 @@ Not all pair styles can be evaluated in a pairwise mode as required by
|
||||
this compute. For example, 3-body and other many-body potentials,
|
||||
such as "Tersoff"_pair_tersoff.html and
|
||||
"Stillinger-Weber"_pair_sw.html cannot be used. "EAM"_pair_eam.html
|
||||
potentials only include the pair potential portion of the EAM
|
||||
interaction when used by this compute, not the embedding term.
|
||||
potentials will re-use previously computed embedding term contributions,
|
||||
so the computed pairwise forces and energies are based on the whole
|
||||
system and not valid if particles have been moved since.
|
||||
|
||||
Not all Kspace styles support calculation of group/group interactions.
|
||||
The {ewald} and {pppm} styles do.
|
||||
Not all "Kspace styles"_kspace_style.html support the calculation of
|
||||
group/group interactions. The regular {ewald} and {pppm} styles do.
|
||||
|
||||
[Related commands:] none
|
||||
|
||||
|
||||
@ -38,20 +38,20 @@ ico (icosahedral) = 4
|
||||
sc (simple cubic) = 5
|
||||
dcub (diamond cubic) = 6
|
||||
dhex (diamond hexagonal) = 7
|
||||
other = 8 :ul
|
||||
graphene = 8 :ul
|
||||
|
||||
The value of the PTM structure will be 0 for atoms not in the specified
|
||||
The value of the PTM structure will be 0 for unknown types and -1 for atoms not in the specified
|
||||
compute group. The choice of structures to search for can be specified using the "structures"
|
||||
argument, which is a hyphen-separated list of structure keywords.
|
||||
Two convenient pre-set options are provided:
|
||||
|
||||
default: fcc-hcp-bcc-ico
|
||||
all: fcc-hcp-bcc-ico-sc-dcub-dhex :ul
|
||||
all: fcc-hcp-bcc-ico-sc-dcub-dhex-graphene :ul
|
||||
|
||||
The 'default' setting detects the same structures as the Common Neighbor Analysis method.
|
||||
The 'all' setting searches for all structure types. A small performance penalty is
|
||||
incurred for the diamond structures, so it is not recommended to use this option if
|
||||
it is known that the simulation does not contain diamond structures.
|
||||
The 'all' setting searches for all structure types. A performance penalty is
|
||||
incurred for the diamond and graphene structures, so it is not recommended to use this option if
|
||||
it is known that the simulation does not contain these structures.
|
||||
|
||||
|
||||
PTM identifies structures using two steps. First, a graph isomorphism test is used
|
||||
@ -93,9 +93,9 @@ interatomic distance
|
||||
qw
|
||||
qx
|
||||
qy
|
||||
qw :ul
|
||||
qz :ul
|
||||
|
||||
The type is a number from 0 to 8. The rmsd is a positive real number.
|
||||
The type is a number from -1 to 8. The rmsd is a positive real number.
|
||||
The interatomic distance is computed from the scale factor in the RMSD equation.
|
||||
The (qw,qx,qy,qz) parameters represent the orientation of the local structure
|
||||
in quaternion form. The reference coordinates for each template (from which the
|
||||
|
||||
@ -13,6 +13,7 @@ dump command :h3
|
||||
"dump netcdf"_dump_netcdf.html command :h3
|
||||
"dump image"_dump_image.html command :h3
|
||||
"dump movie"_dump_image.html command :h3
|
||||
"dump adios"_dump_adios.html command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
@ -27,10 +28,12 @@ args = list of arguments for a particular style :l
|
||||
{atom} args = none
|
||||
{atom/gz} args = none
|
||||
{atom/mpiio} args = none
|
||||
{atom/adios} args = none, discussed on "dump adios"_dump_adios.html doc page
|
||||
{cfg} args = same as {custom} args, see below
|
||||
{cfg/gz} args = same as {custom} args, see below
|
||||
{cfg/mpiio} args = same as {custom} args, see below
|
||||
{custom}, {custom/gz}, {custom/mpiio} args = see below
|
||||
{custom/adios} args = same as {custom} args, discussed on "dump adios"_dump_adios.html doc page
|
||||
{dcd} args = none
|
||||
{h5md} args = discussed on "dump h5md"_dump_h5md.html doc page
|
||||
{image} args = discussed on "dump image"_dump_image.html doc page
|
||||
@ -653,7 +656,7 @@ package"_Build_package.html doc page for more info.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"dump h5md"_dump_h5md.html, "dump image"_dump_image.html,
|
||||
"dump adios"_dump_adios.html "dump h5md"_dump_h5md.html, "dump image"_dump_image.html,
|
||||
"dump molfile"_dump_molfile.html, "dump_modify"_dump_modify.html,
|
||||
"undump"_undump.html
|
||||
|
||||
|
||||
73
doc/src/dump_adios.txt
Normal file
@ -0,0 +1,73 @@
|
||||
"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
|
||||
|
||||
dump atoms/adios command :h3
|
||||
dump custom/adios command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
dump ID group-ID atoms/adios N file.bp :pre
|
||||
dump ID group-ID custom/adios N file.bp args :pre
|
||||
|
||||
ID = user-assigned name for the dump :ulb,l
|
||||
group-ID = ID of the group of atoms to be imaged :l
|
||||
adios = style of dump command (other styles {atom} or {cfg} or {dcd} or {xtc} or {xyz} or {local} or {custom} are discussed on the "dump"_dump.html doc page) :l
|
||||
N = dump every this many timesteps :l
|
||||
file.bp = name of file/stream to write to :l
|
||||
args = same options as in "{dump custom}"_dump.html command :l
|
||||
:ule
|
||||
|
||||
|
||||
[Examples:]
|
||||
|
||||
dump adios1 all atom/adios 100 atoms.bp
|
||||
dump 4a all custom/adios 100 dump_adios.bp id v_p x y z
|
||||
dump 2 subgroup custom/adios 100 dump_adios.bp mass type xs ys zs vx vy vz :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
Dump a snapshot of atom coordinates every N timesteps in the
|
||||
"ADIOS"_adios based "BP" file format, or using different I/O solutions in ADIOS,
|
||||
to a stream that can be read on-line by another program.
|
||||
ADIOS-BP files are binary, portable and self-describing.
|
||||
|
||||
:link(adios,https://github.com/ornladios/ADIOS2)
|
||||
|
||||
|
||||
[Use from write_dump:]
|
||||
|
||||
It is possible to use these dump styles with the
|
||||
"write_dump"_write_dump.html command. In this case, the sub-intervals
|
||||
must not be set at all. The write_dump command can be used to
|
||||
create a new file at each individual dump.
|
||||
|
||||
dump 4 all atom/adios 100 dump.bp
|
||||
write_dump all atom/adios singledump.bp :pre
|
||||
|
||||
:line
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
The number of atoms per snapshot CAN change with the adios style.
|
||||
When using the ADIOS tool 'bpls' to list the content of a .bp file,
|
||||
bpls will print {__} for the size of the output table indicating that
|
||||
its size is changing every step.
|
||||
|
||||
The {atom/adios} and {custom/adios} dump styles are part of the USER-ADIOS
|
||||
package. They are only enabled if LAMMPS was built with that package.
|
||||
See the "Build package"_Build_package.html doc page for more info.
|
||||
|
||||
|
||||
:line
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"dump"_dump.html, "dump_modify"_dump_modify.html, "undump"_undump.html
|
||||
|
||||
:line
|
||||
|
||||
52
doc/src/dynamical_matrix.txt
Normal file
@ -0,0 +1,52 @@
|
||||
"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
|
||||
|
||||
dynamical_matrix command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
dynamical_matrix group-ID style gamma args keyword value ... :pre
|
||||
|
||||
group-ID = ID of group of atoms to displace :ulb,l
|
||||
style = {regular} or {eskm} :l
|
||||
gamma = finite different displacement length (distance units) :l
|
||||
one or more keyword/arg pairs may be appended :l
|
||||
keyword = {file} or {binary}
|
||||
{file} name = name of output file for the dynamical matrix
|
||||
{binary} arg = {yes} or {no} or {gzip} :pre
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
dynamical_matrix 1 regular 0.000001
|
||||
dynamical_matrix 1 eskm 0.000001
|
||||
dynamical_matrix 3 regular 0.00004 file dynmat.dat
|
||||
dynamical_matrix 5 eskm 0.00000001 file dynamical.dat binary yes :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
Calculate the dynamical matrix of the selected group.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
The command collects the entire dynamical matrix a single MPI rank,
|
||||
so the memory requirements can be very significant for large systems.
|
||||
|
||||
This command assumes a periodic system.
|
||||
|
||||
This command is part of the USER-PHONON package. It is only enabled if
|
||||
LAMMPS was built with that package. See the "Build
|
||||
package"_Build_package.html doc page for more info.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"fix phonon"_fix_phonon.html
|
||||
|
||||
[Default:]
|
||||
|
||||
The default settings are file = "dynmat.dyn", binary = no
|
||||
@ -83,8 +83,10 @@ not in the specified fix group. Local quantities are calculated by
|
||||
each processor based on the atoms it owns, but there may be zero or
|
||||
more per atoms.
|
||||
|
||||
Note that a single fix may produces either global or per-atom or local
|
||||
quantities (or none at all), but never more than one of these.
|
||||
Note that a single fix can produce either global or per-atom or local
|
||||
quantities (or none at all), but not both global and per-atom. It can
|
||||
produce local quantities in tandem with global or per-atom quantities.
|
||||
The fix doc page will explain.
|
||||
|
||||
Global, per-atom, and local quantities each come in three kinds: a
|
||||
single scalar value, a vector of values, or a 2d array of values. The
|
||||
@ -199,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 -
|
||||
|
||||
@ -158,12 +158,6 @@ the pair_*.cpp file associated with the potential.
|
||||
|
||||
Some parameters are global settings for the pair style, e.g. the
|
||||
viscosity setting "mu" for "pair_style lubricate"_pair_lubricate.html.
|
||||
For "pair_kim"_pair_kim.html, all free parameters supported by the
|
||||
KIM Model are available (e.g., PARAM_FREE_sigmas provided by the
|
||||
LennardJones612_Universal__MO_826355984548_001 Model). If the free
|
||||
parameter corresponds to an array, then the particular array element
|
||||
to be adapted must be specified (e.g., "PARAM_FREE_sigmas:10", to
|
||||
adapt the tenth entry of the sigmas array).
|
||||
Other parameters apply to atom type pairs within the pair style,
|
||||
e.g. the prefactor "a" for "pair_style soft"_pair_soft.html.
|
||||
|
||||
|
||||
@ -35,6 +35,7 @@ keyword = {mode} or {file} or {ave} or {start} or {beyond} or {overwrite} or {ti
|
||||
{mode} arg = {scalar} or {vector}
|
||||
scalar = all input values are scalars
|
||||
vector = all input values are vectors
|
||||
{kind} arg = {global} or {peratom} or {local}
|
||||
{file} arg = filename
|
||||
filename = name of file to output histogram(s) to
|
||||
{ave} args = {one} or {running} or {window}
|
||||
@ -92,7 +93,8 @@ either all global, all per-atom, or all local quantities. Inputs of
|
||||
different kinds (e.g. global and per-atom) cannot be mixed. Atom
|
||||
attributes are per-atom vector values. See the doc page for
|
||||
individual "compute" and "fix" commands to see what kinds of
|
||||
quantities they generate.
|
||||
quantities they generate. See the optional {kind} keyword below for
|
||||
how to force the fix ave/histo command to disambiguate if necessary.
|
||||
|
||||
Note that the output of this command is a single histogram for all
|
||||
input values combined together, not one histogram per input value.
|
||||
@ -231,6 +233,14 @@ keyword is set to {vector}, then all input values must be global or
|
||||
per-atom or local vectors, or columns of global or per-atom or local
|
||||
arrays.
|
||||
|
||||
The {kind} keyword only needs to be set if a compute or fix produces
|
||||
more than one kind of output (global, per-atom, local). If this is
|
||||
not the case, then LAMMPS will determine what kind of input is
|
||||
provided and whether all the input arguments are consistent. If a
|
||||
compute or fix produces more than one kind of output, the {kind}
|
||||
keyword should be used to specify which output will be used. The
|
||||
remaining input arguments must still be consistent.
|
||||
|
||||
The {beyond} keyword determines how input values that fall outside the
|
||||
{lo} to {hi} bounds are treated. Values such that {lo} <= value <=
|
||||
{hi} are assigned to one bin. Values on a bin boundary are assigned
|
||||
@ -240,7 +250,7 @@ If {beyond} is set to {end} then values < {lo} are counted in the
|
||||
first bin and values > {hi} are counted in the last bin. If {beyond}
|
||||
is set to {extend} then two extra bins are created, so that there are
|
||||
Nbins+2 total bins. Values < {lo} are counted in the first bin and
|
||||
values > {hi} are counted in the last bin (Nbins+1). Values between
|
||||
values > {hi} are counted in the last bin (Nbins+2). Values between
|
||||
{lo} and {hi} (inclusive) are counted in bins 2 through Nbins+1. The
|
||||
"coordinate" stored and printed for these two extra bins is {lo} and
|
||||
{hi}.
|
||||
@ -354,5 +364,6 @@ ave/chunk"_fix_ave_chunk.html, "fix ave/time"_fix_ave_time.html,
|
||||
|
||||
[Default:] none
|
||||
|
||||
The option defaults are mode = scalar, ave = one, start = 0, no file
|
||||
output, beyond = ignore, and title 1,2,3 = strings as described above.
|
||||
The option defaults are mode = scalar, kind = figured out from input
|
||||
arguments, ave = one, start = 0, no file output, beyond = ignore, and
|
||||
title 1,2,3 = strings as described above.
|
||||
|
||||
@ -146,18 +146,18 @@ A bonding atom pair will be identified if several conditions are met.
|
||||
First, a pair of atoms I,J within the specified react-group-ID of type
|
||||
itype and jtype must be separated by a distance between {Rmin} and
|
||||
{Rmax}. It is possible that multiple bonding atom pairs are
|
||||
identified: if the bonding atoms in the pre-reacted template are not
|
||||
1-2, 1-3, or 1-4 neighbors, the closest bonding atom partner is set as
|
||||
its bonding partner; otherwise, the farthest potential partner is
|
||||
chosen. Then, if both an atom I and atom J have each other as their
|
||||
nearest bonding partners, these two atoms are identified as the
|
||||
bonding atom pair of the reaction site. Once this unique bonding atom
|
||||
pair is identified for each reaction, there could two or more
|
||||
reactions that involve a given atom on the same timestep. If this is
|
||||
the case, only one such reaction is permitted to occur. This reaction
|
||||
is chosen randomly from all potential reactions. This capability
|
||||
allows e.g. for different reaction pathways to proceed from identical
|
||||
reaction sites with user-specified probabilities.
|
||||
identified: if the bonding atoms in the pre-reacted template are 1-2
|
||||
neighbors, i.e. directly bonded, the farthest bonding atom partner is
|
||||
set as its bonding partner; otherwise, the closest potential partner
|
||||
is chosen. Then, if both an atom I and atom J have each other as their
|
||||
bonding partners, these two atoms are identified as the bonding atom
|
||||
pair of the reaction site. Once this unique bonding atom pair is
|
||||
identified for each reaction, there could two or more reactions that
|
||||
involve a given atom on the same timestep. If this is the case, only
|
||||
one such reaction is permitted to occur. This reaction is chosen
|
||||
randomly from all potential reactions. This capability allows e.g. for
|
||||
different reaction pathways to proceed from identical reaction sites
|
||||
with user-specified probabilities.
|
||||
|
||||
The pre-reacted molecule template is specified by a molecule command.
|
||||
This molecule template file contains a sample reaction site and its
|
||||
@ -385,6 +385,10 @@ No parameter of this fix can be used with the {start/stop} keywords of
|
||||
the "run"_run.html command. This fix is not invoked during "energy
|
||||
minimization"_minimize.html.
|
||||
|
||||
When fix bond/react is 'unfixed,' all internally-created groups are
|
||||
deleted. Therefore, fix bond/react can only be unfixed after unfixing
|
||||
all other fixes that use any group created by fix bond/react.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This fix is part of the USER-MISC package. It is only enabled if
|
||||
|
||||
165
doc/src/fix_electron_stopping.txt
Normal 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
|
||||
@ -102,7 +102,7 @@ Bi = exp(beta * Vij(max)) :pre
|
||||
where beta = 1/kTequil, and {Tequil} is the temperature of the system
|
||||
and an argument to this fix. Note that Bi >= 1 at every step.
|
||||
|
||||
NOTE: To run GHD, the input script must also use the "fix
|
||||
NOTE: To run a GHD simulation, the input script must also use the "fix
|
||||
langevin"_fix_langevin.html command to thermostat the atoms at the
|
||||
same {Tequil} as specified by this fix, so that the system is running
|
||||
constant-temperature (NVT) dynamics. LAMMPS does not check that this
|
||||
@ -166,9 +166,9 @@ correctly. There will just be fewer events because the hyper time
|
||||
|
||||
NOTE: If you have no physical intuition as to the smallest barrier
|
||||
height in your system, a reasonable strategy to determine the largest
|
||||
{Vmax} you can use for an LHD model, is to run a sequence of
|
||||
{Vmax} you can use for a GHD model, is to run a sequence of
|
||||
simulations with smaller and smaller {Vmax} values, until the event
|
||||
rate does not change.
|
||||
rate does not change (as a function of hyper time).
|
||||
|
||||
The {Tequil} argument is the temperature at which the system is
|
||||
simulated; see the comment above about the "fix
|
||||
@ -177,7 +177,8 @@ beta term in the exponential factor that determines how much boost is
|
||||
achieved as a function of the bias potential.
|
||||
|
||||
In general, the lower the value of {Tequil} and the higher the value
|
||||
of {Vmax}, the more boost will be achievable by the GHD algorithm.
|
||||
of {Vmax}, the more time boost will be achievable by the GHD
|
||||
algorithm.
|
||||
|
||||
:line
|
||||
|
||||
@ -190,41 +191,43 @@ 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
|
||||
potential energy as part of "thermodynamic output"_thermo_style.html.
|
||||
|
||||
This fix computes a global scalar and global vector of length 11, which
|
||||
This fix computes a global scalar and global vector of length 12, which
|
||||
can be accessed by various "output commands"_Howto_output.html. The
|
||||
scalar is the magnitude of the bias potential (energy units) applied on
|
||||
the current timestep. The vector stores the following quantities:
|
||||
|
||||
1 = boost factor on this step (unitless)
|
||||
2 = max strain Eij of any bond on this step (unitless)
|
||||
2 = max strain Eij of any bond on this step (absolute value, unitless)
|
||||
3 = ID of first atom in the max-strain bond
|
||||
4 = ID of second atom in the max-strain bond
|
||||
5 = average # of bonds/atom on this step :ul
|
||||
|
||||
6 = fraction of timesteps with bias = 0.0 during this run
|
||||
7 = max drift distance of any atom during this run (distance units)
|
||||
8 = max bond length during this run (distance units) :ul
|
||||
6 = fraction of timesteps where the biased bond has bias = 0.0 during this run
|
||||
7 = fraction of timesteps where the biased bond has negative strain during this run
|
||||
8 = max drift distance of any atom during this run (distance units)
|
||||
9 = max bond length during this run (distance units) :ul
|
||||
|
||||
9 = cumulative hyper time since fix was defined (time units)
|
||||
10 = cumulative count of event timesteps since fix was defined
|
||||
11 = cumulative count of atoms in events since fix was defined :ul
|
||||
10 = cumulative hyper time since fix was defined (time units)
|
||||
11 = cumulative count of event timesteps since fix was defined
|
||||
12 = cumulative count of atoms in events since fix was defined :ul
|
||||
|
||||
The first 5 quantities are for the current timestep. Quantities 6-8
|
||||
are for the current hyper run. Quantities 9-11 are cumulative across
|
||||
multiple runs (since the fix was defined in the input script).
|
||||
The first 5 quantities are for the current timestep. Quantities 6-9
|
||||
are for the current hyper run. They are reset each time a new hyper
|
||||
run is performed. Quantities 19-12 are cumulative across multiple
|
||||
runs (since the point in the input script the fix was defined).
|
||||
|
||||
For value 7, drift is the distance an atom moves between timesteps
|
||||
when the bond list is reset, i.e. between events. Atoms involved in
|
||||
an event will typically move the greatest distance since others are
|
||||
typically oscillating around their lattice site.
|
||||
For value 8, drift is the distance an atom moves between two quenched
|
||||
states when the second quench determines an event has occurred. Atoms
|
||||
involved in an event will typically move the greatest distance since
|
||||
others typically remain near their original quenched position.
|
||||
|
||||
For value 10, events are checked for by the "hyper"_hyper.html command
|
||||
For value 11, events are checked for by the "hyper"_hyper.html command
|
||||
once every {Nevent} timesteps. This value is the count of those
|
||||
timesteps on which one (or more) events was detected. It is NOT the
|
||||
number of distinct events, since more than one event may occur in the
|
||||
same {Nevent} time window.
|
||||
|
||||
For value 11, each time the "hyper"_hyper.html command checks for an
|
||||
For value 12, each time the "hyper"_hyper.html command checks for an
|
||||
event, it invokes a compute to flag zero or more atoms as
|
||||
participating in one or more events. E.g. atoms that have displaced
|
||||
more than some distance from the previous quench state. Value 11 is
|
||||
|
||||
@ -22,10 +22,9 @@ Dcut = minimum distance between boosted bonds (distance units) :l
|
||||
alpha = boostostat relaxation time (time units) :l
|
||||
Btarget = desired time boost factor (unitless) :l
|
||||
zero or more keyword/value pairs may be appended :l
|
||||
keyword = {lost} or {check/bias} or {check/coeff}
|
||||
{lostbond} value = error/warn/ignore
|
||||
{check/bias} values = Nevery error/warn/ignore
|
||||
{check/coeff} values = Nevery error/warn/ignore :pre
|
||||
keyword = {check/ghost} or {check/bias} :l
|
||||
{check/ghost} values = none
|
||||
{check/bias} values = Nevery error/warn/ignore :pre
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
@ -65,8 +64,8 @@ To understand this description, you should first read the description
|
||||
of the GHD algorithm on the "fix hyper/global"_fix_hyper_global.html
|
||||
doc page. This description of LHD builds on the GHD description.
|
||||
|
||||
The definition of bonds, Eij, and Emax are the same for GHD and LHD.
|
||||
The formulas for Vij(max) and Fij(max) are also the same except for a
|
||||
The definition of bonds and Eij are the same for GHD and LHD. The
|
||||
formulas for Vij(max) and Fij(max) are also the same except for a
|
||||
pre-factor Cij, explained below.
|
||||
|
||||
The bias energy Vij applied to a bond IJ with maximum strain is
|
||||
@ -117,11 +116,11 @@ where Vkl(max) is the bias energy of the maxstrain bond KL within bond
|
||||
IJ's neighborhood, beta = 1/kTequil, and {Tequil} is the temperature
|
||||
of the system and an argument to this fix.
|
||||
|
||||
NOTE: To run LHD, the input script must also use the "fix
|
||||
langevin"_fix_langevin.html command to thermostat the atoms at the
|
||||
same {Tequil} as specified by this fix, so that the system is running
|
||||
constant-temperature (NVT) dynamics. LAMMPS does not check that this
|
||||
is done.
|
||||
NOTE: To run an LHD simulation, the input script must also use the
|
||||
"fix langevin"_fix_langevin.html command to thermostat the atoms at
|
||||
the same {Tequil} as specified by this fix, so that the system is
|
||||
running constant-temperature (NVT) dynamics. LAMMPS does not check
|
||||
that this is done.
|
||||
|
||||
Note that if IJ = KL, then bond IJ is a biased bond on that timestep,
|
||||
otherwise it is not. But regardless, the boost factor Bij can be
|
||||
@ -216,20 +215,20 @@ each pair. E.g. something like 2x the cutoff of the interatomic
|
||||
potential. In practice a {Dcut} value of ~10 Angstroms seems to work
|
||||
well for many solid-state systems.
|
||||
|
||||
NOTE: You must also insure that ghost atom communication is performed
|
||||
for a distance of at least {Dcut} + {cutevent} where {cutevent} = the
|
||||
distance one or more atoms move (between quenched states) to be
|
||||
considered an "event". It is an argument to the "compute
|
||||
event/displace" command used to detect events. By default the ghost
|
||||
communication distance is set by the pair_style cutoff, which will
|
||||
typically be < {Dcut}. The "comm_modify cutoff"_comm_modify.html
|
||||
command can be used to set the ghost cutoff explicitly, e.g.
|
||||
NOTE: You should insure that ghost atom communication is performed for
|
||||
a distance of at least {Dcut} + {cutevent} = the distance one or more
|
||||
atoms move (between quenched states) to be considered an "event". It
|
||||
is an argument to the "compute event/displace" command used to detect
|
||||
events. By default the ghost communication distance is set by the
|
||||
pair_style cutoff, which will typically be < {Dcut}. The "comm_modify
|
||||
cutoff"_comm_modify.html command should be used to override the ghost
|
||||
cutoff explicitly, e.g.
|
||||
|
||||
comm_modify cutoff 12.0 :pre
|
||||
|
||||
This fix does not know the {cutevent} parameter, but uses half the
|
||||
bond length as an estimate to warn if the ghost cutoff is not long
|
||||
enough.
|
||||
Note that this fix does not know the {cutevent} parameter, but uses
|
||||
half the {cutbond} parameter as an estimate to warn if the ghost
|
||||
cutoff is not long enough.
|
||||
|
||||
As described above the {alpha} argument is a pre-factor in the
|
||||
boostostat update equation for each bond's Cij prefactor. {Alpha} is
|
||||
@ -269,7 +268,30 @@ NOTE: If you have no physical intuition as to the smallest barrier
|
||||
height in your system, a reasonable strategy to determine the largest
|
||||
{Btarget} you can use for an LHD model, is to run a sequence of
|
||||
simulations with smaller and smaller {Btarget} values, until the event
|
||||
rate does not change.
|
||||
rate does not change (as a function of hyper time).
|
||||
|
||||
:line
|
||||
|
||||
Here is additional information on the optional keywords for this fix.
|
||||
|
||||
The {check/ghost} keyword turns on extra computation each timestep to
|
||||
compute statistics about ghost atoms used to determine which bonds to
|
||||
bias. The output of these stats are the vector values 14 and 15,
|
||||
described below. If this keyword is not enabled, the output
|
||||
of the stats will be zero.
|
||||
|
||||
The {check/bias} keyword turns on extra computation and communication
|
||||
to check if any biased bonds are closer than {Dcut} to each other,
|
||||
which should not be the case if LHD is operating correctly. Thus it
|
||||
is a debugging check. The {Nevery} setting determines how often the
|
||||
check is made. The {error}, {warn}, or {ignore} setting determines
|
||||
what is done if the count of too-close bonds is not zero. Either the
|
||||
code will exit, or issue a warning, or silently tally the count. The
|
||||
count can be output as vector value 17, as described below. If this
|
||||
keyword is not enabled, the output of that statistic will be 0.
|
||||
|
||||
Note that both of these computations are costly, hence they are only
|
||||
enabled by these keywords.
|
||||
|
||||
:line
|
||||
|
||||
@ -282,95 +304,120 @@ 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
|
||||
potential energy as part of "thermodynamic output"_thermo_style.html.
|
||||
|
||||
This fix computes a global scalar and global vector of length 23,
|
||||
which can be accessed by various "output
|
||||
commands"_Howto_output.html. The scalar is the magnitude of
|
||||
the bias potential (energy units) applied on the current timestep,
|
||||
summed over all biased bonds. The vector stores the following
|
||||
quantities:
|
||||
This fix computes a global scalar and global vector of length 21,
|
||||
which can be accessed by various "output commands"_Howto_output.html.
|
||||
The scalar is the magnitude of the bias potential (energy units)
|
||||
applied on the current timestep, summed over all biased bonds. The
|
||||
vector stores the following quantities:
|
||||
|
||||
1 = # of biased bonds on this step
|
||||
2 = max strain Eij of any bond on this step (unitless)
|
||||
3 = average bias potential for all biased bonds on this step (energy units)
|
||||
2 = max strain Eij of any bond on this step (absolute value, unitless)
|
||||
3 = average bias coeff for all bonds on this step (unitless)
|
||||
4 = average # of bonds/atom on this step
|
||||
5 = average neighbor bonds/bond on this step within {Dcut} :ul
|
||||
|
||||
6 = fraction of steps and bonds with no bias during this run
|
||||
7 = max drift distance of any atom during this run (distance units)
|
||||
8 = max bond length during this run (distance units)
|
||||
9 = average # of biased bonds/step during this run
|
||||
10 = average bias potential for all biased bonds during this run (energy units)
|
||||
11 = max bias potential for any biased bond during this run (energy units)
|
||||
12 = min bias potential for any biased bond during this run (energy units)
|
||||
13 = max distance from my sub-box of any ghost atom with maxstrain < qfactor during this run (distance units)
|
||||
14 = max distance outside my box of any ghost atom with any maxstrain during this run (distance units)
|
||||
15 = count of ghost neighbor atoms not found on reneighbor steps during this run
|
||||
16 = count of lost bond partners during this run
|
||||
17 = average bias coeff for lost bond partners during this run
|
||||
18 = count of bias overlaps found during this run
|
||||
19 = count of non-matching bias coefficients found during this run :ul
|
||||
6 = max bond length during this run (distance units)
|
||||
7 = average # of biased bonds/step during this run
|
||||
8 = fraction of biased bonds with no bias during this run
|
||||
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)
|
||||
|
||||
20 = cumulative hyper time since fix created (time units)
|
||||
21 = cumulative count of event timesteps since fix created
|
||||
22 = cumulative count of atoms in events since fix created
|
||||
23 = cumulative # of new bonds since fix created :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
|
||||
|
||||
18 = cumulative hyper time since fix created (time units)
|
||||
19 = cumulative count of event timesteps since fix created
|
||||
20 = cumulative count of atoms in events since fix created
|
||||
21 = cumulative # of new bonds formed since fix created :ul
|
||||
|
||||
The first quantities (1-5) are for the current timestep. Quantities
|
||||
6-19 are for the current hyper run. They are reset each time a new
|
||||
hyper run is performed. Quantities 20-23 are cumulative across
|
||||
multiple runs (since the fix was defined in the input script).
|
||||
6-17 are for the current hyper run. They are reset each time a new
|
||||
hyper run is performed. Quantities 18-21 are cumulative across
|
||||
multiple runs (since the point in the input script the fix was
|
||||
defined).
|
||||
|
||||
For value 6, the numerator is a count of all biased bonds on every
|
||||
For value 8, the numerator is a count of all biased bonds on each
|
||||
timestep whose bias energy = 0.0 due to Eij >= {qfactor}. The
|
||||
denominator is the count of all biased bonds on all timesteps.
|
||||
|
||||
For value 7, drift is the distance an atom moves between timesteps
|
||||
when the bond list is reset, i.e. between events. Atoms involved in
|
||||
an event will typically move the greatest distance since others are
|
||||
typically oscillating around their lattice site.
|
||||
For value 9, the numerator is a count of all biased bonds on each
|
||||
timestep with negative strain. The denominator is the count of all
|
||||
biased bonds on all timesteps.
|
||||
|
||||
For values 13 and 14, the maxstrain of a ghost atom is the maxstrain
|
||||
of any bond it is part of, and it is checked for ghost atoms within
|
||||
the bond neighbor cutoff.
|
||||
Values 13-17 are mostly useful for debugging and diagnostic purposes.
|
||||
|
||||
Values 15-19 are mostly useful for debugging and diagnostic purposes.
|
||||
For value 13, drift is the distance an atom moves between two quenched
|
||||
states when the second quench determines an event has occurred. Atoms
|
||||
involved in an event will typically move the greatest distance since
|
||||
others typically remain near their original quenched position.
|
||||
|
||||
For values 15-17, it is possible that a ghost atom owned by another
|
||||
processor will move far enough (e.g. as part of an event-in-progress)
|
||||
that it will no longer be within the communication cutoff distance for
|
||||
acquiring ghost atoms. Likewise it may be a ghost atom bond partner
|
||||
that cannot be found because it has moved too far. These values count
|
||||
those occurrences. Because they typically involve atoms that are part
|
||||
of events, they do not usually indicate bad dynamics. Value 16 is the
|
||||
average bias coefficient for bonds where a partner atom was lost.
|
||||
For values 14-16, neighbor atoms in the full neighbor list with cutoff
|
||||
{Dcut} may be ghost atoms outside a processor's sub-box. Before the
|
||||
next event occurs they may move further than {Dcut} away from the
|
||||
sub-box boundary. Value 14 is the furthest (from the sub-box) any
|
||||
ghost atom in the neighbor list with maxstrain < {qfactor} was
|
||||
accessed during the run. Value 15 is the same except that the ghost
|
||||
atom's maxstrain may be >= {qfactor}, which may mean it is about to
|
||||
participate in an event. Value 16 is a count of how many ghost atoms
|
||||
could not be found on reneighbor steps, presumably because they moved
|
||||
too far away due to their participation in an event (which will likely
|
||||
be detected at the next quench).
|
||||
|
||||
For value 18, no two bonds should be biased if they are within a
|
||||
Typical values for 14 and 15 should be slightly larger than {Dcut},
|
||||
which accounts for ghost atoms initially at a {Dcut} distance moving
|
||||
thermally before the next event takes place.
|
||||
|
||||
Note that for values 14 and 15 to be computed, the optional keyword
|
||||
{check/ghost} must be specified. Otherwise these values will be zero.
|
||||
This is because computing them incurs overhead, so the values are only
|
||||
computed if requested.
|
||||
|
||||
Value 16 should be zero or small. As explained above a small count
|
||||
likely means some ghost atoms were participating in their own events
|
||||
and moved a longer distance. If the value is large, it likely means
|
||||
the communication cutoff for ghosts is too close to {Dcut} leading to
|
||||
many not-found ghost atoms before the next event. This may lead to a
|
||||
reduced number of bonds being selected for biasing, since the code
|
||||
assumes those atoms are part of highly strained bonds. As explained
|
||||
above, the "comm_modify cutoff"_comm_modify.html command can be used
|
||||
to set a longer cutoff.
|
||||
|
||||
For value 17, no two bonds should be biased if they are within a
|
||||
{Dcut} distance of each other. This value should be zero, indicating
|
||||
that no pair of bonds "overlap", meaning they are closer than {Dcut}
|
||||
from each other.
|
||||
that no pair of biased bonds are closer than {Dcut} from each other.
|
||||
|
||||
For value 19, the same bias coefficient is stored by both atoms in an
|
||||
IJ bond. This value should be zero, indicating that for all bonds,
|
||||
each atom in the bond stores the a bias coefficient with the same
|
||||
value.
|
||||
Note that for values 17 to be computed, the optional keyword
|
||||
{check/bias} must be specified and it determines how often this check
|
||||
is performed. This is because performing the check incurs overhead,
|
||||
so if only computed as often as requested.
|
||||
|
||||
Value 20 is simply the specified {boost} factor times the number of
|
||||
timestep times the timestep size.
|
||||
The result at the end of the run is the cumulative total from every
|
||||
timestep the check was made. Note that the value is a count of atoms
|
||||
in bonds which found other atoms in bonds too close, so it is almost
|
||||
always an over-count of the number of too-close bonds.
|
||||
|
||||
For value 21, events are checked for by the "hyper"_hyper.html command
|
||||
Value 18 is simply the specified {boost} factor times the number of
|
||||
timesteps times the timestep size.
|
||||
|
||||
For value 19, events are checked for by the "hyper"_hyper.html command
|
||||
once every {Nevent} timesteps. This value is the count of those
|
||||
timesteps on which one (or more) events was detected. It is NOT the
|
||||
number of distinct events, since more than one event may occur in the
|
||||
same {Nevent} time window.
|
||||
|
||||
For value 22, each time the "hyper"_hyper.html command checks for an
|
||||
For value 20, each time the "hyper"_hyper.html command checks for an
|
||||
event, it invokes a compute to flag zero or more atoms as
|
||||
participating in one or more events. E.g. atoms that have displaced
|
||||
more than some distance from the previous quench state. Value 22 is
|
||||
more than some distance from the previous quench state. Value 20 is
|
||||
the cumulative count of the number of atoms participating in any of
|
||||
the events that were found.
|
||||
|
||||
Value 23 tallies the number of new bonds created by the bond reset
|
||||
Value 21 tallies the number of new bonds created by the bond reset
|
||||
operation. Bonds between a specific I,J pair of atoms may persist for
|
||||
the entire hyperdynamics simulation if neither I or J are involved in
|
||||
an event.
|
||||
@ -378,6 +425,16 @@ an event.
|
||||
The scalar and vector values calculated by this fix are all
|
||||
"intensive".
|
||||
|
||||
This fix also computes a local vector of length the number of bonds
|
||||
currently in the system. The value for each bond is its Cij prefactor
|
||||
(bias coefficient). These values can be can be accessed by various
|
||||
"output commands"_Howto_output.html. A particularly useful one is the
|
||||
"fix ave/histo"_fix_ave_histo.html command which can be used to
|
||||
histogram the Cij values to see if they are distributed reasonably
|
||||
close to 1.0, which indicates a good choice of {Vmax}.
|
||||
|
||||
The local values calculated by this fix are unitless.
|
||||
|
||||
No parameter of this fix can be used with the {start/stop} keywords of
|
||||
the "run"_run.html command. This fix is not invoked during "energy
|
||||
minimization"_minimize.html.
|
||||
@ -392,7 +449,9 @@ doc page for more info.
|
||||
|
||||
"hyper"_hyper.html, "fix hyper/global"_fix_hyper_global.html
|
||||
|
||||
[Default:] None
|
||||
[Default:]
|
||||
|
||||
The check/ghost and check/bias keywords are not enabled by default.
|
||||
|
||||
:line
|
||||
|
||||
|
||||
@ -217,10 +217,6 @@ the particles. As described below, this energy can then be printed
|
||||
out or added to the potential energy of the system to monitor energy
|
||||
conservation.
|
||||
|
||||
NOTE: this accumulated energy does NOT include kinetic energy removed
|
||||
by the {zero} flag. LAMMPS will print a warning when both options are
|
||||
active.
|
||||
|
||||
The keyword {zero} can be used to eliminate drift due to the
|
||||
thermostat. Because the random forces on different atoms are
|
||||
independent, they do not sum exactly to zero. As a result, this fix
|
||||
|
||||
@ -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).
|
||||
|
||||
@ -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
@ -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).
|
||||
@ -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).
|
||||
|
||||
@ -179,7 +179,8 @@ settings"_Build_settings.html doc page for details.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"compute msd"_compute_msd.html
|
||||
"compute msd"_compute_msd.html,
|
||||
"dynamical_matrix"_dynamical_matrix.html
|
||||
|
||||
[Default:]
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ fix 1 all precession/spin zeeman 0.1 0.0 0.0 1.0 anisotropy 0.001 0.0 0.0 1.0 :p
|
||||
|
||||
[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
|
||||
|
||||
@ -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:]
|
||||
|
||||
|
||||
@ -7,22 +7,24 @@
|
||||
:line
|
||||
|
||||
fix wall/gran command :h3
|
||||
fix wall/gran/omp command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
fix ID group-ID wall/gran fstyle Kn Kt gamma_n gamma_t xmu dampflag wallstyle args keyword values ... :pre
|
||||
fix ID group-ID wall/gran fstyle fstyle_params wallstyle args keyword values ... :pre
|
||||
|
||||
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
||||
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 :pre
|
||||
Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below) :l
|
||||
Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below) :l
|
||||
gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below) :l
|
||||
gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below) :l
|
||||
xmu = static yield criterion (unitless value between 0.0 and 1.0e4) :l
|
||||
dampflag = 0 or 1 if tangential damping force is excluded or included :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 {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
|
||||
{xplane} or {yplane} or {zplane} args = lo hi
|
||||
@ -44,7 +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 :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:]
|
||||
|
||||
@ -54,31 +59,40 @@ close enough to touch it.
|
||||
|
||||
The nature of the wall/particle interactions are determined by the
|
||||
{fstyle} setting. It can be any of the styles defined by the
|
||||
"pair_style granular"_pair_gran.html commands. Currently this is
|
||||
{hooke}, {hooke/history}, or {hertz/history}. The equation for the
|
||||
force between the wall and particles touching it is the same as the
|
||||
corresponding equation on the "pair_style granular"_pair_gran.html doc
|
||||
page, in the limit of one of the two particles going to infinite
|
||||
radius and mass (flat wall). Specifically, delta = radius - r =
|
||||
overlap of particle with wall, m_eff = mass of particle, and the
|
||||
effective radius of contact = RiRj/Ri+Rj is just the radius of the
|
||||
particle.
|
||||
"pair_style gran/*"_pair_gran.html or the more general "pair_style
|
||||
granular"_pair_granular.html" commands. Currently the options are
|
||||
{hooke}, {hooke/history}, or {hertz/history} for the former, and
|
||||
{granular} with all the possible options of the associated
|
||||
{pair_coeff} command for the latter. The equation for the force
|
||||
between the wall and particles touching it is the same as the
|
||||
corresponding equation on the "pair_style gran/*"_pair_gran.html and
|
||||
"pair_style_granular"_pair_granular.html doc pages, in the limit of
|
||||
one of the two particles going to infinite radius and mass (flat
|
||||
wall). Specifically, delta = radius - r = overlap of particle with
|
||||
wall, m_eff = mass of particle, and the effective radius of contact =
|
||||
RiRj/Ri+Rj is set to the radius of the particle.
|
||||
|
||||
The parameters {Kn}, {Kt}, {gamma_n}, {gamma_t}, {xmu} and {dampflag}
|
||||
have the same meaning and units as those specified with the
|
||||
"pair_style granular"_pair_gran.html commands. This means a NULL can
|
||||
be used for either {Kt} or {gamma_t} as described on that page. If a
|
||||
"pair_style gran/*"_pair_gran.html commands. This means a NULL can be
|
||||
used for either {Kt} or {gamma_t} as described on that page. If a
|
||||
NULL is used for {Kt}, then a default value is used where {Kt} = 2/7
|
||||
{Kn}. If a NULL is used for {gamma_t}, then a default value is used
|
||||
where {gamma_t} = 1/2 {gamma_n}.
|
||||
|
||||
All the model choices for cohesion, tangential friction, rolling
|
||||
friction and twisting friction supported by the "pair_style
|
||||
granular"_pair_granular.html through its {pair_coeff} command are also
|
||||
supported for walls. These are discussed in greater detail on the doc
|
||||
page for "pair_style granular"_pair_granular.html.
|
||||
|
||||
Note that you can choose a different force styles and/or different
|
||||
values for the 6 wall/particle coefficients than for particle/particle
|
||||
values for the wall/particle coefficients than for particle/particle
|
||||
interactions. E.g. if you wish to model the wall as a different
|
||||
material.
|
||||
|
||||
NOTE: As discussed on the doc page for "pair_style
|
||||
granular"_pair_gran.html, versions of LAMMPS before 9Jan09 used a
|
||||
gran/*"_pair_gran.html, versions of LAMMPS before 9Jan09 used a
|
||||
different equation for Hertzian interactions. This means Hertizian
|
||||
wall/particle interactions have also changed. They now include a
|
||||
sqrt(radius) term which was not present before. Also the previous
|
||||
@ -108,14 +122,14 @@ Optionally, the wall can be moving, if the {wiggle} or {shear}
|
||||
keywords are appended. Both keywords cannot be used together.
|
||||
|
||||
For the {wiggle} keyword, the wall oscillates sinusoidally, similar to
|
||||
the oscillations of particles which can be specified by the
|
||||
"fix move"_fix_move.html command. This is useful in packing
|
||||
simulations of granular particles. The arguments to the {wiggle}
|
||||
keyword specify a dimension for the motion, as well as it's
|
||||
{amplitude} and {period}. Note that if the dimension is in the plane
|
||||
of the wall, this is effectively a shearing motion. If the dimension
|
||||
is perpendicular to the wall, it is more of a shaking motion. A
|
||||
{zcylinder} wall can only be wiggled in the z dimension.
|
||||
the oscillations of particles which can be specified by the "fix
|
||||
move"_fix_move.html command. This is useful in packing simulations of
|
||||
granular particles. The arguments to the {wiggle} keyword specify a
|
||||
dimension for the motion, as well as it's {amplitude} and {period}.
|
||||
Note that if the dimension is in the plane of the wall, this is
|
||||
effectively a shearing motion. If the dimension is perpendicular to
|
||||
the wall, it is more of a shaking motion. A {zcylinder} wall can only
|
||||
be wiggled in the z dimension.
|
||||
|
||||
Each timestep, the position of a wiggled wall in the appropriate {dim}
|
||||
is set according to this equation:
|
||||
@ -137,28 +151,6 @@ the clockwise direction for {vshear} > 0 or counter-clockwise for
|
||||
{vshear} < 0. In this case, {vshear} is the tangential velocity of
|
||||
the wall at whatever {radius} has been defined.
|
||||
|
||||
: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
|
||||
hardware, as discussed on the "Speed packages"_Speed_packages.html doc
|
||||
page. The accelerated styles take the same arguments and should
|
||||
produce the same results, except for round-off and precision issues.
|
||||
|
||||
These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
|
||||
USER-OMP and OPT packages, respectively. They are only enabled if
|
||||
LAMMPS was built with those packages. See the "Build
|
||||
package"_Build_package.html doc page for more info.
|
||||
|
||||
You can specify the accelerated styles explicitly in your input script
|
||||
by including their suffix, or you can use the "-suffix command-line
|
||||
switch"_Run_options.html when you invoke LAMMPS, or you can use the
|
||||
"suffix"_suffix.html command in your input script.
|
||||
|
||||
See the "Speed packages"_Speed_packages.html doc page for more
|
||||
instructions on how to use the accelerated styles effectively.
|
||||
|
||||
[Restart, fix_modify, output, run start/stop, minimize info:]
|
||||
|
||||
This fix writes the shear friction state of atoms interacting with the
|
||||
@ -188,6 +180,7 @@ Any dimension (xyz) that has a granular wall must be non-periodic.
|
||||
|
||||
"fix move"_fix_move.html,
|
||||
"fix wall/gran/region"_fix_wall_gran_region.html,
|
||||
"pair_style granular"_pair_gran.html
|
||||
"pair_style gran/*"_pair_gran.html
|
||||
"pair_style granular"_pair_granular.html
|
||||
|
||||
[Default:] none
|
||||
|
||||
@ -10,24 +10,30 @@ fix wall/gran/region command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
fix ID group-ID wall/gran/region fstyle Kn Kt gamma_n gamma_t xmu dampflag wallstyle regionID :pre
|
||||
fix ID group-ID wall/gran/region fstyle fstyle_params wallstyle regionID :pre
|
||||
|
||||
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
||||
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 :pre
|
||||
Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below) :l
|
||||
Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below) :l
|
||||
gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below) :l
|
||||
gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below) :l
|
||||
xmu = static yield criterion (unitless value between 0.0 and 1.0e4) :l
|
||||
dampflag = 0 or 1 if tangential damping force is excluded or included :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 {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 :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:]
|
||||
|
||||
@ -42,8 +48,8 @@ Here are snapshots of example models using this command.
|
||||
Corresponding input scripts can be found in examples/granregion.
|
||||
Click on the images to see a bigger picture. Movies of these
|
||||
simulations are "here on the Movies
|
||||
page"_http://lammps.sandia.gov/movies.html#granregion of the
|
||||
LAMMPS web site.
|
||||
page"_http://lammps.sandia.gov/movies.html#granregion of the LAMMPS
|
||||
web site.
|
||||
|
||||
:image(JPG/gran_funnel_small.jpg,JPG/gran_funnel.png)
|
||||
:image(JPG/gran_mixer_small.jpg,JPG/gran_mixer.png)
|
||||
@ -71,12 +77,13 @@ exterior surfaces of regions.
|
||||
Regions can either be primitive shapes (block, sphere, cylinder, etc)
|
||||
or combinations of primitive shapes specified via the {union} or
|
||||
{intersect} region styles. These latter styles can be used to
|
||||
construct particle containers with complex shapes. Regions can also
|
||||
move dynamically via the "region"_region.html command keywords (move)
|
||||
and {rotate}, or change their shape by use of variables as inputs to
|
||||
the "region"_region.html command. If such a region is used with this
|
||||
fix, then the region surface will move in time in the corresponding
|
||||
manner.
|
||||
construct particle containers with complex shapes.
|
||||
|
||||
Regions can also move dynamically via the "region"_region.html command
|
||||
keywords (move) and {rotate}, or change their shape by use of variables
|
||||
as inputs to the "region"_region.html command. If such a region is used
|
||||
with this fix, then the region surface will move in time in the
|
||||
corresponding manner.
|
||||
|
||||
NOTE: As discussed on the "region"_region.html command doc page,
|
||||
regions in LAMMPS do not get wrapped across periodic boundaries. It
|
||||
@ -122,12 +129,16 @@ to make the two faces differ by epsilon in their position.
|
||||
|
||||
The nature of the wall/particle interactions are determined by the
|
||||
{fstyle} setting. It can be any of the styles defined by the
|
||||
"pair_style granular"_pair_gran.html commands. Currently this is
|
||||
{hooke}, {hooke/history}, or {hertz/history}. The equation for the
|
||||
force between the wall and particles touching it is the same as the
|
||||
corresponding equation on the "pair_style granular"_pair_gran.html doc
|
||||
page, but the effective radius is calculated using the radius of the
|
||||
particle and the radius of curvature of the wall at the contact point.
|
||||
"pair_style gran/*"_pair_gran.html or the more general "pair_style
|
||||
granular"_pair_granular.html" commands. Currently the options are
|
||||
{hooke}, {hooke/history}, or {hertz/history} for the former, and
|
||||
{granular} with all the possible options of the associated
|
||||
{pair_coeff} command for the latter. The equation for the force
|
||||
between the wall and particles touching it is the same as the
|
||||
corresponding equation on the "pair_style gran/*"_pair_gran.html and
|
||||
"pair_style_granular"_pair_granular.html doc pages, but the effective
|
||||
radius is calculated using the radius of the particle and the radius
|
||||
of curvature of the wall at the contact point.
|
||||
|
||||
Specifically, delta = radius - r = overlap of particle with wall,
|
||||
m_eff = mass of particle, and RiRj/Ri+Rj is the effective radius, with
|
||||
@ -140,12 +151,18 @@ particle.
|
||||
|
||||
The parameters {Kn}, {Kt}, {gamma_n}, {gamma_t}, {xmu} and {dampflag}
|
||||
have the same meaning and units as those specified with the
|
||||
"pair_style granular"_pair_gran.html commands. This means a NULL can
|
||||
be used for either {Kt} or {gamma_t} as described on that page. If a
|
||||
"pair_style gran/*"_pair_gran.html commands. This means a NULL can be
|
||||
used for either {Kt} or {gamma_t} as described on that page. If a
|
||||
NULL is used for {Kt}, then a default value is used where {Kt} = 2/7
|
||||
{Kn}. If a NULL is used for {gamma_t}, then a default value is used
|
||||
where {gamma_t} = 1/2 {gamma_n}.
|
||||
|
||||
All the model choices for cohesion, tangential friction, rolling
|
||||
friction and twisting friction supported by the "pair_style
|
||||
granular"_pair_granular.html through its {pair_coeff} command are also
|
||||
supported for walls. These are discussed in greater detail on the doc
|
||||
page for "pair_style granular"_pair_granular.html.
|
||||
|
||||
Note that you can choose a different force styles and/or different
|
||||
values for the 6 wall/particle coefficients than for particle/particle
|
||||
interactions. E.g. if you wish to model the wall as a different
|
||||
@ -153,9 +170,9 @@ material.
|
||||
|
||||
[Restart, fix_modify, output, run start/stop, minimize info:]
|
||||
|
||||
Similar to "fix wall/gran"_fix_wall_gran.html command, this fix
|
||||
writes the shear friction state of atoms interacting with the wall to
|
||||
"binary restart files"_restart.html, so that a simulation can continue
|
||||
Similar to "fix wall/gran"_fix_wall_gran.html command, this fix writes
|
||||
the shear friction state of atoms interacting with the wall to "binary
|
||||
restart files"_restart.html, so that a simulation can continue
|
||||
correctly if granular potentials with shear "history" effects are
|
||||
being used. This fix also includes info about a moving region in the
|
||||
restart file. See the "read_restart"_read_restart.html command for
|
||||
@ -169,14 +186,14 @@ So you must re-define your region and if it is a moving region, define
|
||||
its motion attributes in a way that is consistent with the simulation
|
||||
that wrote the restart file. In particular, if you want to change the
|
||||
region motion attributes (e.g. its velocity), then you should ensure
|
||||
the position/orientation of the region at the initial restart
|
||||
timestep is the same as it was on the timestep the restart file was
|
||||
written. If this is not possible, you may need to ignore info in the
|
||||
restart file by defining a new fix wall/gran/region command in your
|
||||
restart script, e.g. with a different fix ID. Or if you want to keep
|
||||
the shear history info but discard the region motion information, you
|
||||
can use the same fix ID for fix wall/gran/region, but assign it a
|
||||
region with a different region ID.
|
||||
the position/orientation of the region at the initial restart timestep
|
||||
is the same as it was on the timestep the restart file was written.
|
||||
If this is not possible, you may need to ignore info in the restart
|
||||
file by defining a new fix wall/gran/region command in your restart
|
||||
script, e.g. with a different fix ID. Or if you want to keep the
|
||||
shear history info but discard the region motion information, you can
|
||||
use the same fix ID for fix wall/gran/region, but assign it a region
|
||||
with a different region ID.
|
||||
|
||||
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
|
||||
|
||||
@ -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
|
||||
|
||||
46
doc/src/kim_query.txt
Normal file
@ -0,0 +1,46 @@
|
||||
"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
|
||||
|
||||
kim_query command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
kim_query variable query_function web_query_flags :pre
|
||||
|
||||
variable = name of a (string style) variable where the result of the query is stored
|
||||
query_function = name of the OpenKIM web API query function to be used
|
||||
web_query_flags = a series of keyword=value pairs that represent the web query; supported keywords depend on query function :ul
|
||||
|
||||
[Examples:]
|
||||
|
||||
kim_query latconst get_test_result test=TE_156715955670 model=MO_800509458712 &
|
||||
prop=structure-cubic-crystal-npt species=\["Al"\] keys=\["a"\] units=\["angstrom"\] :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
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
|
||||
arguments are parameters handed over to the web query in the format
|
||||
{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:]
|
||||
|
||||
This command is part of the KIM package. It is only enabled if
|
||||
LAMMPS was built with that package. Furthermore, its correct
|
||||
functioning depends on compiling LAMMPS with libcurl support.
|
||||
See the "Build package"_Build_package.html doc page for more info.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"pair_style kim"_pair_kim.html, "variable"_variable.html
|
||||
@ -1,5 +1,5 @@
|
||||
#HTMLDOC 1.8.28
|
||||
-t pdf14 -f "../Manual.pdf" --book --toclevels 4 --no-numbered --toctitle "Table of Contents" --title --textcolor #000000 --linkcolor #0000ff --linkstyle plain --bodycolor #ffffff --size Universal --left 1.00in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --header1 ... --footer ..1 --nup 1 --tocheader .t. --tocfooter ..i --portrait --color --no-pscommands --no-xrxcomments --compression=9 --jpeg=0 --fontsize 11.0 --fontspacing 1.2 --headingfont Sans --bodyfont Serif --headfootsize 11.0 --headfootfont Sans-Bold --charset iso-8859-15 --links --embedfonts --pagemode document --pagelayout single --firstpage c1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all --owner-password "" --user-password "" --browserwidth 680 --no-strict --no-overflow
|
||||
-t pdf14 -f "Manual.pdf" --book --toclevels 4 --no-numbered --toctitle "Table of Contents" --title --textcolor #000000 --linkcolor #0000ff --linkstyle plain --bodycolor #ffffff --size Universal --left 1.00in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --header1 ... --footer ..1 --nup 1 --tocheader .t. --tocfooter ..i --portrait --color --no-pscommands --no-xrxcomments --compression=9 --jpeg=0 --fontsize 11.0 --fontspacing 1.2 --headingfont Sans --bodyfont Serif --headfootsize 11.0 --headfootfont Sans-Bold --charset iso-8859-15 --links --embedfonts --pagemode document --pagelayout single --firstpage c1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all --owner-password "" --user-password "" --browserwidth 680 --no-strict --no-overflow
|
||||
Manual.html
|
||||
Intro.html
|
||||
Intro_overview.html
|
||||
@ -150,6 +150,7 @@ dielectric.html
|
||||
dimension.html
|
||||
displace_atoms.html
|
||||
dump.html
|
||||
dump_adios.html
|
||||
dump_h5md.html
|
||||
dump_image.html
|
||||
dump_modify.html
|
||||
@ -157,6 +158,7 @@ dump_molfile.html
|
||||
dump_netcdf.html
|
||||
dump_vtk.html
|
||||
dump_cfg_uef.html
|
||||
dynamical_matrix.html
|
||||
echo.html
|
||||
group.html
|
||||
group2ndx.html
|
||||
@ -165,6 +167,7 @@ if.html
|
||||
include.html
|
||||
info.html
|
||||
jump.html
|
||||
kim_query.html
|
||||
label.html
|
||||
lattice.html
|
||||
log.html
|
||||
@ -172,9 +175,11 @@ mass.html
|
||||
message.html
|
||||
min_modify.html
|
||||
min_style.html
|
||||
min_spin.html
|
||||
minimize.html
|
||||
molecule.html
|
||||
neb.html
|
||||
neb_spin.html
|
||||
neigh_modify.html
|
||||
neighbor.html
|
||||
newton.html
|
||||
@ -261,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
|
||||
@ -304,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
|
||||
@ -576,6 +583,7 @@ pair_extep.html
|
||||
pair_gauss.html
|
||||
pair_gayberne.html
|
||||
pair_gran.html
|
||||
pair_granular.html
|
||||
pair_gromacs.html
|
||||
pair_gw.html
|
||||
pair_ilp_graphene_hbn.html
|
||||
|
||||
@ -13,11 +13,15 @@ min_modify command :h3
|
||||
min_modify keyword values ... :pre
|
||||
|
||||
one or more keyword/value pairs may be listed :ulb,l
|
||||
keyword = {dmax} or {line}
|
||||
keyword = {dmax} or {line} or {alpha_damp} or {discrete_factor}
|
||||
{dmax} value = max
|
||||
max = maximum distance for line search to move (distance units)
|
||||
{line} value = {backtrack} or {quadratic} or {forcezero}
|
||||
backtrack,quadratic,forcezero = style of linesearch to use :pre
|
||||
backtrack,quadratic,forcezero = style of linesearch to use
|
||||
{alpha_damp} value = damping
|
||||
damping = fictitious Gilbert damping for spin minimization (adim)
|
||||
{discrete_factor} value = factor
|
||||
factor = discretization factor for adaptive spin timestep (adim) :pre
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
@ -65,6 +69,17 @@ difference of two large values (energy before and energy after) and
|
||||
that difference may be smaller than machine epsilon even if atoms
|
||||
could move in the gradient direction to reduce forces further.
|
||||
|
||||
Keywords {alpha_damp} and {discrete_factor} only make sense when
|
||||
a "min_spin"_min_spin.html command is declared.
|
||||
Keyword {alpha_damp} defines an analog of a magnetic Gilbert
|
||||
damping. It defines a relaxation rate toward an equilibrium for
|
||||
a given magnetic system.
|
||||
Keyword {discrete_factor} defines a discretization factor for the
|
||||
adaptive timestep used in the {spin} minimization.
|
||||
See "min_spin"_min_spin.html for more information about those
|
||||
quantities.
|
||||
Default values are {alpha_damp} = 1.0 and {discrete_factor} = 10.0.
|
||||
|
||||
[Restrictions:] none
|
||||
|
||||
[Related commands:]
|
||||
|
||||
65
doc/src/min_spin.txt
Normal file
@ -0,0 +1,65 @@
|
||||
"LAMMPS WWW Page"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Commands_all.html)
|
||||
:line
|
||||
|
||||
min_style spin command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
min_style spin :pre
|
||||
|
||||
[Examples:]
|
||||
|
||||
min_style spin :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
Apply a minimization algorithm to use when a "minimize"_minimize.html
|
||||
command is performed.
|
||||
|
||||
Style {spin} defines a damped spin dynamics with an adaptive
|
||||
timestep, according to:
|
||||
|
||||
:c,image(Eqs/min_spin_damping.jpg)
|
||||
|
||||
with lambda a damping coefficient (similar to a Gilbert
|
||||
damping).
|
||||
Lambda can be defined by setting the {alpha_damp} keyword with the
|
||||
"min_modify"_min_modify.html command.
|
||||
|
||||
The minimization procedure solves this equation using an
|
||||
adaptive timestep. The value of this timestep is defined
|
||||
by the largest precession frequency that has to be solved in the
|
||||
system:
|
||||
|
||||
:c,image(Eqs/min_spin_timestep.jpg)
|
||||
|
||||
with {|omega|_{max}} the norm of the largest precession frequency
|
||||
in the system (across all processes, and across all replicas if a
|
||||
spin/neb calculation is performed).
|
||||
|
||||
Kappa defines a discretization factor {discrete_factor} for the
|
||||
definition of this timestep.
|
||||
{discrete_factor} can be defined with the "min_modify"_min_modify.html
|
||||
command.
|
||||
|
||||
NOTE: The {spin} style replaces the force tolerance by a torque
|
||||
tolerance. See "minimize"_minimize.html for more explanation.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This minimization procedure is only applied to spin degrees of
|
||||
freedom for a frozen lattice configuration.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"min_style"_min_style.html, "minimize"_minimize.html,
|
||||
"min_modify"_min_modify.html
|
||||
|
||||
[Default:]
|
||||
|
||||
The option defaults are {alpha_damp} = 1.0 and {discrete_factor} =
|
||||
10.0.
|
||||
@ -11,11 +11,12 @@ min_style command :h3
|
||||
|
||||
min_style style :pre
|
||||
|
||||
style = {cg} or {hftn} or {sd} or {quickmin} or {fire} :ul
|
||||
style = {cg} or {hftn} or {sd} or {quickmin} or {fire} or {spin} :ul
|
||||
|
||||
[Examples:]
|
||||
|
||||
min_style cg
|
||||
min_style spin
|
||||
min_style fire :pre
|
||||
|
||||
[Description:]
|
||||
@ -61,6 +62,10 @@ the velocity non-parallel to the current force vector. The velocity
|
||||
of each atom is initialized to 0.0 by this style, at the beginning of
|
||||
a minimization.
|
||||
|
||||
Style {spin} is a damped spin dynamics with an adaptive
|
||||
timestep.
|
||||
See the "min/spin"_min_spin.html doc page for more information.
|
||||
|
||||
Either the {quickmin} and {fire} styles are useful in the context of
|
||||
nudged elastic band (NEB) calculations via the "neb"_neb.html command.
|
||||
|
||||
|
||||
@ -103,6 +103,13 @@ the line search fails because the step distance backtracks to 0.0
|
||||
the number of outer iterations or timesteps exceeds {maxiter}
|
||||
the number of total force evaluations exceeds {maxeval} :ul
|
||||
|
||||
NOTE: the "minimization style"_min_style.html {spin} replaces
|
||||
the force tolerance {ftol} by a torque tolerance.
|
||||
The minimization procedure stops if the 2-norm (length) of the
|
||||
global torque vector (defined as the cross product between the
|
||||
spins and their precession vectors omega) is less than {ftol},
|
||||
or if any of the other criteria are met.
|
||||
|
||||
NOTE: You can also use the "fix halt"_fix_halt.html command to specify
|
||||
a general criterion for exiting a minimization, that is a calculation
|
||||
performed on the state of the current system, as defined by an
|
||||
|
||||
375
doc/src/neb_spin.txt
Normal 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 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).
|
||||
793
doc/src/pair_granular.txt
Normal file
@ -0,0 +1,793 @@
|
||||
<script type="text/javascript"
|
||||
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
|
||||
</script>
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({ TeX: { equationNumbers: {autoNumber: "AMS"} } });
|
||||
</script>
|
||||
|
||||
"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 granular command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
pair_style granular cutoff :pre
|
||||
|
||||
cutoff = global cutoff (optional). See discussion below. :ul
|
||||
|
||||
[Examples:]
|
||||
|
||||
pair_style granular
|
||||
pair_coeff * * hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 damping mass_velocity :pre
|
||||
|
||||
pair_style granular
|
||||
pair_coeff * * hooke 1000.0 50.0 tangential linear_history 500.0 1.0 0.4 damping mass_velocity :pre
|
||||
|
||||
pair_style granular
|
||||
pair_coeff * * hertz 1000.0 50.0 tangential mindlin 1000.0 1.0 0.4 :pre
|
||||
|
||||
pair_style granular
|
||||
pair_coeff * * hertz/material 1e8 0.3 0.3 tangential mindlin_rescale NULL 1.0 0.4 damping tsuji :pre
|
||||
|
||||
pair_style granular
|
||||
pair_coeff 1 * jkr 1000.0 500.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
||||
pair_coeff 2 2 hertz 200.0 100.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall :pre
|
||||
|
||||
pair_style granular
|
||||
pair_coeff 1 1 dmt 1000.0 50.0 0.3 0.0 tangential mindlin NULL 0.5 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
||||
pair_coeff 2 2 dmt 1000.0 50.0 0.3 10.0 tangential mindlin NULL 0.5 0.1 rolling sds 500.0 200.0 0.1 twisting marshall :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
The {granular} styles support a variety of options for the normal,
|
||||
tangential, rolling and twisting forces resulting from contact between
|
||||
two granular particles. This expands on the options offered by the
|
||||
"pair gran/*"_pair_gran.html pair styles. The total computed forces
|
||||
and torques are the sum of various models selected for the normal,
|
||||
tangential, rolling and twisting modes of motion.
|
||||
|
||||
All model choices and parameters are entered in the
|
||||
"pair_coeff"_pair_coeff.html command, as described below. Unlike
|
||||
e.g. "pair gran/hooke"_pair_gran.html, coefficient values are not
|
||||
global, but can be set to different values for different combinations
|
||||
of particle types, as determined by the "pair_coeff"_pair_coeff.html
|
||||
command. If the contact model choice is the same for two particle
|
||||
types, the mixing for the cross-coefficients can be carried out
|
||||
automatically. This is shown in the last example, where model
|
||||
choices are the same for type 1 - type 1 as for type 2 - type2
|
||||
interactions, but coefficients are different. In this case, the
|
||||
mixed coefficients for type 1 - type 2 interactions can be determined from
|
||||
mixing rules discussed below. For additional flexibility,
|
||||
coefficients as well as model forms can vary between particle types,
|
||||
as shown in the fourth example: type 1 - type 1 interactions are based
|
||||
on a Johnson-Kendall-Roberts normal contact model and 2-2 interactions
|
||||
are based on a DMT cohesive model (see below). In that example, 1-1
|
||||
and 2-2 interactions have different model forms, in which case mixing of
|
||||
coefficients cannot be determined, so 1-2 interactions must be
|
||||
explicitly defined via the {pair_coeff 1 *} command, otherwise an
|
||||
error would result.
|
||||
|
||||
:line
|
||||
|
||||
The first required keyword for the {pair_coeff} command is the normal
|
||||
contact model. Currently supported options for normal contact models
|
||||
and their required arguments are:
|
||||
|
||||
{hooke} : \(k_n\), \(\eta_\{n0\}\) (or \(e\))
|
||||
{hertz} : \(k_n\), \(\eta_\{n0\}\) (or \(e\))
|
||||
{hertz/material} : E, \(\eta_\{n0\}\) (or \(e\)), \(\nu\)
|
||||
{dmt} : E, \(\eta_\{n0\}\) (or \(e\)), \(\nu\), \(\gamma\)
|
||||
{jkr} : E, \(\eta_\{n0\}\) (or \(e\)), \(\nu\), \(\gamma\) :ol
|
||||
|
||||
Here, \(k_n\) is spring stiffness (with units that depend on model
|
||||
choice, see below); \(\eta_\{n0\}\) is a damping prefactor (or, in its
|
||||
place a coefficient of restitution \(e\), depending on the choice of
|
||||
damping mode, see below); E is Young's modulus in units of
|
||||
{force}/{length}^2, i.e. {pressure}; \(\nu\) is Poisson's ratio and
|
||||
\(\gamma\) is a surface energy density, in units of
|
||||
{energy}/{length}^2.
|
||||
|
||||
For the {hooke} model, the normal, elastic component of force acting
|
||||
on particle {i} due to contact with particle {j} is given by:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{F\}_\{ne, Hooke\} = k_N \delta_\{ij\} \mathbf\{n\}
|
||||
\end\{equation\}
|
||||
|
||||
Where \(\delta = R_i + R_j - \|\mathbf\{r\}_\{ij\}\|\) is the particle
|
||||
overlap, \(R_i, R_j\) are the particle radii, \(\mathbf\{r\}_\{ij\} =
|
||||
\mathbf\{r\}_i - \mathbf\{r\}_j\) is the vector separating the two
|
||||
particle centers (note the i-j ordering so that \(F_\{ne\}\) is
|
||||
positive for repulsion), and \(\mathbf\{n\} =
|
||||
\frac\{\mathbf\{r\}_\{ij\}\}\{\|\mathbf\{r\}_\{ij\}\|\}\). Therefore,
|
||||
for {hooke}, the units of the spring constant \(k_n\) are
|
||||
{force}/{distance}, or equivalently {mass}/{time^2}.
|
||||
|
||||
For the {hertz} model, the normal component of force is given by:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{F\}_\{ne, Hertz\} = k_N R_\{eff\}^\{1/2\}\delta_\{ij\}^\{3/2\} \mathbf\{n\}
|
||||
\end\{equation\}
|
||||
|
||||
Here, \(R_\{eff\} = \frac\{R_i R_j\}\{R_i + R_j\}\) is the effective
|
||||
radius, denoted for simplicity as {R} from here on. For {hertz}, the
|
||||
units of the spring constant \(k_n\) are {force}/{length}^2, or
|
||||
equivalently {pressure}.
|
||||
|
||||
For the {hertz/material} model, the force is given by:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{F\}_\{ne, Hertz/material\} = \frac\{4\}\{3\} E_\{eff\} R_\{eff\}^\{1/2\}\delta_\{ij\}^\{3/2\} \mathbf\{n\}
|
||||
\end\{equation\}
|
||||
|
||||
Here, \(E_\{eff\} = E = \left(\frac\{1-\nu_i^2\}\{E_i\} +
|
||||
\frac\{1-\nu_j^2\}\{E_j\}\right)^\{-1\}\) is the effective Young's
|
||||
modulus, with \(\nu_i, \nu_j \) the Poisson ratios of the particles of
|
||||
types {i} and {j}. Note that if the elastic modulus and the shear
|
||||
modulus of the two particles are the same, the {hertz/material} model
|
||||
is equivalent to the {hertz} model with \(k_N = 4/3 E_\{eff\}\)
|
||||
|
||||
The {dmt} model corresponds to the
|
||||
"(Derjaguin-Muller-Toporov)"_#DMT1975 cohesive model, where the force
|
||||
is simply Hertz with an additional attractive cohesion term:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{F\}_\{ne, dmt\} = \left(\frac\{4\}\{3\} E R^\{1/2\}\delta_\{ij\}^\{3/2\} - 4\pi\gamma R\right)\mathbf\{n\}
|
||||
\end\{equation\}
|
||||
|
||||
The {jkr} model is the "(Johnson-Kendall-Roberts)"_#JKR1971 model,
|
||||
where the force is computed as:
|
||||
|
||||
\begin\{equation\}
|
||||
\label\{eq:force_jkr\}
|
||||
\mathbf\{F\}_\{ne, jkr\} = \left(\frac\{4Ea^3\}\{3R\} - 2\pi a^2\sqrt\{\frac\{4\gamma E\}\{\pi a\}\}\right)\mathbf\{n\}
|
||||
\end\{equation\}
|
||||
|
||||
Here, {a} is the radius of the contact zone, related to the overlap
|
||||
\(\delta\) according to:
|
||||
|
||||
\begin\{equation\}
|
||||
\delta = a^2/R - 2\sqrt\{\pi \gamma a/E\}
|
||||
\end\{equation\}
|
||||
|
||||
LAMMPS internally inverts the equation above to solve for {a} in terms
|
||||
of \(\delta\), then solves for the force in the previous
|
||||
equation. Additionally, note that the JKR model allows for a tensile
|
||||
force beyond contact (i.e. for \(\delta < 0\)), up to a maximum of
|
||||
\(3\pi\gamma R\) (also known as the 'pull-off' force). Note that this
|
||||
is a hysteretic effect, where particles that are not contacting
|
||||
initially will not experience force until they come into contact
|
||||
\(\delta \geq 0\); as they move apart and (\(\delta < 0\)), they
|
||||
experience a tensile force up to \(3\pi\gamma R\), at which point they
|
||||
lose contact.
|
||||
|
||||
:line
|
||||
|
||||
In addition, the normal force is augmented by a damping term of the
|
||||
following general form:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{F\}_\{n,damp\} = -\eta_n \mathbf\{v\}_\{n,rel\}
|
||||
\end\{equation\}
|
||||
|
||||
Here, \(\mathbf\{v\}_\{n,rel\} = (\mathbf\{v\}_j - \mathbf\{v\}_i)
|
||||
\cdot \mathbf\{n\}\) is the component of relative velocity along
|
||||
\(\mathbf\{n\}\).
|
||||
|
||||
The optional {damping} keyword to the {pair_coeff} command followed by
|
||||
a keyword determines the model form of the damping factor \(\eta_n\),
|
||||
and the interpretation of the \(\eta_\{n0\}\) or \(e\) coefficients
|
||||
specified as part of the normal contact model settings. The {damping}
|
||||
keyword and corresponding model form selection may be appended
|
||||
anywhere in the {pair coeff} command. Note that the choice of damping
|
||||
model affects both the normal and tangential damping (and depending on
|
||||
other settings, potentially also the twisting damping). The options
|
||||
for the damping model currently supported are:
|
||||
|
||||
{velocity}
|
||||
{mass_velocity}
|
||||
{viscoelastic}
|
||||
{tsuji} :ol
|
||||
|
||||
If the {damping} keyword is not specified, the {viscoelastic} model is
|
||||
used by default.
|
||||
|
||||
For {damping velocity}, the normal damping is simply equal to the
|
||||
user-specified damping coefficient in the {normal} model:
|
||||
|
||||
\begin\{equation\}
|
||||
\eta_n = \eta_\{n0\}
|
||||
\end\{equation\}
|
||||
|
||||
Here, \(\eta_\{n0\}\) is the damping coefficient specified for the normal
|
||||
contact model, in units of {mass}/{time}.
|
||||
|
||||
For {damping mass_velocity}, the normal damping is given by:
|
||||
|
||||
\begin\{equation\}
|
||||
\eta_n = \eta_\{n0\} m_\{eff\}
|
||||
\end\{equation\}
|
||||
|
||||
Here, \(\eta_\{n0\}\) is the damping coefficient specified for the normal
|
||||
contact model, in units of {mass}/{time} and
|
||||
\(m_\{eff\} = m_i m_j/(m_i + m_j)\) is the effective mass.
|
||||
Use {damping mass_velocity} to reproduce the damping behavior of
|
||||
{pair gran/hooke/*}.
|
||||
|
||||
The {damping viscoelastic} model is based on the viscoelastic
|
||||
treatment of "(Brilliantov et al)"_#Brill1996, where the normal
|
||||
damping is given by:
|
||||
|
||||
\begin\{equation\}
|
||||
\eta_n = \eta_\{n0\}\ a m_\{eff\}
|
||||
\end\{equation\}
|
||||
|
||||
Here, {a} is the contact radius, given by \(a =\sqrt\{R\delta\}\)
|
||||
for all models except {jkr}, for which it is given implicitly according
|
||||
to \(\delta = a^2/R - 2\sqrt\{\pi \gamma a/E\}\). For {damping viscoelastic},
|
||||
\(\eta_\{n0\}\) is in units of 1/({time}*{distance}).
|
||||
|
||||
The {tsuji} model is based on the work of "(Tsuji et
|
||||
al)"_#Tsuji1992. Here, the damping coefficient specified as part of
|
||||
the normal model is interpreted as a restitution coefficient
|
||||
\(e\). The damping constant \(\eta_n\) is given by:
|
||||
|
||||
\begin\{equation\}
|
||||
\eta_n = \alpha (m_\{eff\}k_n)^\{1/2\}
|
||||
\end\{equation\}
|
||||
|
||||
For normal contact models based on material parameters, \(k_n =
|
||||
4/3Ea\). The parameter \(\alpha\) is related to the restitution
|
||||
coefficient {e} according to:
|
||||
|
||||
\begin\{equation\}
|
||||
\alpha = 1.2728-4.2783e+11.087e^2-22.348e^3+27.467e^4-18.022e^5+4.8218e^6
|
||||
\end\{equation\}
|
||||
|
||||
The dimensionless coefficient of restitution \(e\) specified as part
|
||||
of the normal contact model parameters should be between 0 and 1, but
|
||||
no error check is performed on this.
|
||||
|
||||
The total normal force is computed as the sum of the elastic and
|
||||
damping components:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{F\}_n = \mathbf\{F\}_\{ne\} + \mathbf\{F\}_\{n,damp\}
|
||||
\end\{equation\}
|
||||
|
||||
:line
|
||||
|
||||
The {pair_coeff} command also requires specification of the tangential
|
||||
contact model. The required keyword {tangential} is expected, followed
|
||||
by the model choice and associated parameters. Currently supported
|
||||
tangential model choices and their expected parameters are as follows:
|
||||
|
||||
{linear_nohistory} : \(x_\{\gamma,t\}\), \(\mu_s\)
|
||||
{linear_history} : \(k_t\), \(x_\{\gamma,t\}\), \(\mu_s\)
|
||||
{mindlin} : \(k_t\) or NULL, \(x_\{\gamma,t\}\), \(\mu_s\)
|
||||
{mindlin_rescale} : \(k_t\) or NULL, \(x_\{\gamma,t\}\), \(\mu_s\) :ol
|
||||
|
||||
Here, \(x_\{\gamma,t\}\) is a dimensionless multiplier for the normal
|
||||
damping \(\eta_n\) that determines the magnitude of the tangential
|
||||
damping, \(\mu_t\) is the tangential (or sliding) friction
|
||||
coefficient, and \(k_t\) is the tangential stiffness coefficient.
|
||||
|
||||
For {tangential linear_nohistory}, a simple velocity-dependent Coulomb
|
||||
friction criterion is used, which mimics the behavior of the {pair
|
||||
gran/hooke} style. The tangential force (\mathbf\{F\}_t\) is given by:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{F\}_t = -min(\mu_t F_\{n0\}, \|\mathbf\{F\}_\mathrm\{t,damp\}\|) \mathbf\{t\}
|
||||
\end\{equation\}
|
||||
|
||||
The tangential damping force \(\mathbf\{F\}_\mathrm\{t,damp\}\) is given by:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{F\}_\mathrm\{t,damp\} = -\eta_t \mathbf\{v\}_\{t,rel\}
|
||||
\end\{equation\}
|
||||
|
||||
The tangential damping prefactor \(\eta_t\) is calculated by scaling
|
||||
the normal damping \(\eta_n\) (see above):
|
||||
|
||||
\begin\{equation\}
|
||||
\eta_t = -x_\{\gamma,t\} \eta_n
|
||||
\end\{equation\}
|
||||
|
||||
The normal damping prefactor \(\eta_n\) is determined by the choice of
|
||||
the {damping} keyword, as discussed above. Thus, the {damping}
|
||||
keyword also affects the tangential damping. The parameter
|
||||
\(x_\{\gamma,t\}\) is a scaling coefficient. Several works in the
|
||||
literature use \(x_\{\gamma,t\} = 1\) ("Marshall"_#Marshall2009,
|
||||
"Tsuji et al"_#Tsuji1992, "Silbert et al"_#Silbert2001). The relative
|
||||
tangential velocity at the point of contact is given by
|
||||
\(\mathbf\{v\}_\{t, rel\} = \mathbf\{v\}_\{t\} - (R_i\Omega_i +
|
||||
R_j\Omega_j) \times \mathbf\{n\}\), where \(\mathbf\{v\}_\{t\} =
|
||||
\mathbf\{v\}_r - \mathbf\{v\}_r\cdot\mathbf\{n\}\), \(\mathbf\{v\}_r =
|
||||
\mathbf\{v\}_j - \mathbf\{v\}_i\). The direction of the applied force
|
||||
is \(\mathbf\{t\} =
|
||||
\mathbf\{v_\{t,rel\}\}/\|\mathbf\{v_\{t,rel\}\}\|\).
|
||||
|
||||
The normal force value \(F_\{n0\}\) used to compute the critical force
|
||||
depends on the form of the contact model. For non-cohesive models
|
||||
({hertz}, {hertz/material}, {hooke}), it is given by the magnitude of
|
||||
the normal force:
|
||||
|
||||
\begin\{equation\}
|
||||
F_\{n0\} = \|\mathbf\{F\}_n\|
|
||||
\end\{equation\}
|
||||
|
||||
For cohesive models such as {jkr} and {dmt}, the critical force is
|
||||
adjusted so that the critical tangential force approaches \(\mu_t
|
||||
F_\{pulloff\}\), see "Marshall"_#Marshall2009, equation 43, and
|
||||
"Thornton"_#Thornton1991. For both models, \(F_\{n0\}\) takes the
|
||||
form:
|
||||
|
||||
\begin\{equation\}
|
||||
F_\{n0\} = \|\mathbf\{F\}_ne + 2 F_\{pulloff\}\|
|
||||
\end\{equation\}
|
||||
|
||||
Where \(F_\{pulloff\} = 3\pi \gamma R \) for {jkr}, and
|
||||
\(F_\{pulloff\} = 4\pi \gamma R \) for {dmt}.
|
||||
|
||||
The remaining tangential options all use accumulated tangential
|
||||
displacement (i.e. contact history). This is discussed below in the
|
||||
context of the {linear_history} option, but the same treatment of the
|
||||
accumulated displacement applies to the other options as well.
|
||||
|
||||
For {tangential linear_history}, the tangential force is given by:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{F\}_t = -min(\mu_t F_\{n0\}, \|-k_t\mathbf\{\xi\} + \mathbf\{F\}_\mathrm\{t,damp\}\|) \mathbf\{t\}
|
||||
\end\{equation\}
|
||||
|
||||
Here, \(\mathbf\{\xi\}\) is the tangential displacement accumulated
|
||||
during the entire duration of the contact:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{\xi\} = \int_\{t0\}^t \mathbf\{v\}_\{t,rel\}(\tau) \mathrm\{d\}\tau
|
||||
\end\{equation\}
|
||||
|
||||
This accumulated tangential displacement must be adjusted to account
|
||||
for changes in the frame of reference of the contacting pair of
|
||||
particles during contact. This occurs due to the overall motion of the
|
||||
contacting particles in a rigid-body-like fashion during the duration
|
||||
of the contact. There are two modes of motion that are relevant: the
|
||||
'tumbling' rotation of the contacting pair, which changes the
|
||||
orientation of the plane in which tangential displacement occurs; and
|
||||
'spinning' rotation of the contacting pair about the vector connecting
|
||||
their centers of mass (\(\mathbf\{n\}\)). Corrections due to the
|
||||
former mode of motion are made by rotating the accumulated
|
||||
displacement into the plane that is tangential to the contact vector
|
||||
at each step, or equivalently removing any component of the tangential
|
||||
displacement that lies along \(\mathbf\{n\}\), and rescaling to
|
||||
preserve the magnitude. This follows the discussion in
|
||||
"Luding"_#Luding2008, see equation 17 and relevant discussion in that
|
||||
work:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{\xi\} = \left(\mathbf\{\xi'\} - (\mathbf\{n\} \cdot \mathbf\{\xi'\})\mathbf\{n\}\right) \frac\{\|\mathbf\{\xi'\}\|\}\{\|\mathbf\{\xi'\}\| - \mathbf\{n\}\cdot\mathbf\{\xi'\}\}
|
||||
\label\{eq:rotate_displacements\}
|
||||
\end\{equation\}
|
||||
|
||||
Here, \(\mathbf\{\xi'\}\) is the accumulated displacement prior to the
|
||||
current time step and \(\mathbf\{\xi\}\) is the corrected
|
||||
displacement. Corrections to the displacement due to the second mode
|
||||
of motion described above (rotations about \(\mathbf\{n\}\)) are not
|
||||
currently implemented, but are expected to be minor for most
|
||||
simulations.
|
||||
|
||||
Furthermore, when the tangential force exceeds the critical force, the
|
||||
tangential displacement is re-scaled to match the value for the
|
||||
critical force (see "Luding"_#Luding2008, equation 20 and related
|
||||
discussion):
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{\xi\} = -\frac\{1\}\{k_t\}\left(\mu_t F_\{n0\}\mathbf\{t\} + \mathbf\{F\}_\{t,damp\}\right)
|
||||
\end\{equation\}
|
||||
|
||||
The tangential force is added to the total normal force (elastic plus
|
||||
damping) to produce the total force on the particle. The tangential
|
||||
force also acts at the contact point (defined as the center of the
|
||||
overlap region) to induce a torque on each particle according to:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{\tau\}_i = -(R_i - 0.5 \delta) \mathbf\{n\} \times \mathbf\{F\}_t
|
||||
\end\{equation\}
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{\tau\}_j = -(R_j - 0.5 \delta) \mathbf\{n\} \times \mathbf\{F\}_t
|
||||
\end\{equation\}
|
||||
|
||||
For {tangential mindlin}, the "Mindlin"_#Mindlin1949 no-slip solution is used, which differs from the {linear_history}
|
||||
option by an additional factor of {a}, the radius of the contact region. The tangential force is given by:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{F\}_t = -min(\mu_t F_\{n0\}, \|-k_t a \mathbf\{\xi\} + \mathbf\{F\}_\mathrm\{t,damp\}\|) \mathbf\{t\}
|
||||
\end\{equation\}
|
||||
|
||||
Here, {a} is the radius of the contact region, given by \(a = \delta
|
||||
R\) for all normal contact models, except for {jkr}, where it is given
|
||||
implicitly by \(\delta = a^2/R - 2\sqrt\{\pi \gamma a/E\}\), see
|
||||
discussion above. To match the Mindlin solution, one should set \(k_t
|
||||
= 8G\), where \(G\) is the shear modulus, related to Young's modulus
|
||||
\(E\) by \(G = E/(2(1+\nu))\), where \(\nu\) is Poisson's ratio. This
|
||||
can also be achieved by specifying {NULL} for \(k_t\), in which case a
|
||||
normal contact model that specifies material parameters \(E\) and
|
||||
\(\nu\) is required (e.g. {hertz/material}, {dmt} or {jkr}). In this
|
||||
case, mixing of the shear modulus for different particle types {i} and
|
||||
{j} is done according to:
|
||||
|
||||
\begin\{equation\}
|
||||
1/G = 2(2-\nu_i)(1+\nu_i)/E_i + 2(2-\nu_j)(1+\nu_j)/E_j
|
||||
\end\{equation\}
|
||||
|
||||
The {mindlin_rescale} option uses the same form as {mindlin}, but the
|
||||
magnitude of the tangential displacement is re-scaled as the contact
|
||||
unloads, i.e. if \(a < a_\{t_\{n-1\}\}\):
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{\xi\} = \mathbf\{\xi_\{t_\{n-1\}\}\} \frac\{a\}\{a_\{t_\{n-1\}\}\}
|
||||
\end\{equation\}
|
||||
|
||||
Here, \(t_\{n-1\}\) indicates the value at the previous time
|
||||
step. This rescaling accounts for the fact that a decrease in the
|
||||
contact area upon unloading leads to the contact being unable to
|
||||
support the previous tangential loading, and spurious energy is
|
||||
created without the rescaling above ("Walton"_#WaltonPC ). See also
|
||||
discussion in "Thornton et al, 2013"_#Thornton2013 , particularly
|
||||
equation 18(b) of that work and associated discussion.
|
||||
|
||||
:line
|
||||
|
||||
The optional {rolling} keyword enables rolling friction, which resists
|
||||
pure rolling motion of particles. The options currently supported are:
|
||||
|
||||
{none}
|
||||
{sds} : \(k_\{roll\}\), \(\gamma_\{roll\}\), \(\mu_\{roll\}\) :ol
|
||||
|
||||
If the {rolling} keyword is not specified, the model defaults to {none}.
|
||||
|
||||
For {rolling sds}, rolling friction is computed via a
|
||||
spring-dashpot-slider, using a 'pseudo-force' formulation, as detailed
|
||||
by "Luding"_#Luding2008. Unlike the formulation in
|
||||
"Marshall"_#Marshall2009, this allows for the required adjustment of
|
||||
rolling displacement due to changes in the frame of reference of the
|
||||
contacting pair. The rolling pseudo-force is computed analogously to
|
||||
the tangential force:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{F\}_\{roll,0\} = k_\{roll\} \mathbf\{\xi\}_\{roll\} - \gamma_\{roll\} \mathbf\{v\}_\{roll\}
|
||||
\end\{equation\}
|
||||
|
||||
Here, \(\mathbf\{v\}_\{roll\} = -R(\mathbf\{\Omega\}_i -
|
||||
\mathbf\{\Omega\}_j) \times \mathbf\{n\}\) is the relative rolling
|
||||
velocity, as given in "Wang et al"_#Wang2015 and
|
||||
"Luding"_#Luding2008. This differs from the expressions given by "Kuhn
|
||||
and Bagi"_#Kuhn2004 and used in "Marshall"_#Marshall2009; see "Wang et
|
||||
al"_#Wang2015 for details. The rolling displacement is given by:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{\xi\}_\{roll\} = \int_\{t_0\}^t \mathbf\{v\}_\{roll\} (\tau) \mathrm\{d\} \tau
|
||||
\end\{equation\}
|
||||
|
||||
A Coulomb friction criterion truncates the rolling pseudo-force if it
|
||||
exceeds a critical value:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{F\}_\{roll\} = min(\mu_\{roll\} F_\{n,0\}, \|\mathbf\{F\}_\{roll,0\}\|)\mathbf\{k\}
|
||||
\end\{equation\}
|
||||
|
||||
Here, \(\mathbf\{k\} =
|
||||
\mathbf\{v\}_\{roll\}/\|\mathbf\{v\}_\{roll\}\|\) is the direction of
|
||||
the pseudo-force. As with tangential displacement, the rolling
|
||||
displacement is rescaled when the critical force is exceeded, so that
|
||||
the spring length corresponds the critical force. Additionally, the
|
||||
displacement is adjusted to account for rotations of the frame of
|
||||
reference of the two contacting particles in a manner analogous to the
|
||||
tangential displacement.
|
||||
|
||||
The rolling pseudo-force does not contribute to the total force on
|
||||
either particle (hence 'pseudo'), but acts only to induce an equal and
|
||||
opposite torque on each particle, according to:
|
||||
|
||||
\begin\{equation\}
|
||||
\tau_\{roll,i\} = R_\{eff\} \mathbf\{n\} \times \mathbf\{F\}_\{roll\}
|
||||
\end\{equation\}
|
||||
|
||||
\begin\{equation\}
|
||||
\tau_\{roll,j\} = -\tau_\{roll,i\}
|
||||
\end\{equation\}
|
||||
|
||||
:line
|
||||
|
||||
The optional {twisting} keyword enables twisting friction, which
|
||||
resists rotation of two contacting particles about the vector
|
||||
\(\mathbf\{n\}\) that connects their centers. The options currently
|
||||
supported are:
|
||||
|
||||
{none}
|
||||
{sds} : \(k_\{twist\}\), \(\gamma_\{twist\}\), \(\mu_\{twist\}\)
|
||||
{marshall} :ol
|
||||
|
||||
If the {twisting} keyword is not specified, the model defaults to {none}.
|
||||
|
||||
For both {twisting sds} and {twisting marshall}, a history-dependent
|
||||
spring-dashpot-slider is used to compute the twisting torque. Because
|
||||
twisting displacement is a scalar, there is no need to adjust for
|
||||
changes in the frame of reference due to rotations of the particle
|
||||
pair. The formulation in "Marshall"_#Marshall2009 therefore provides
|
||||
the most straightforward treatment:
|
||||
|
||||
\begin\{equation\}
|
||||
\tau_\{twist,0\} = -k_\{twist\}\xi_\{twist\} - \gamma_\{twist\}\Omega_\{twist\}
|
||||
\end\{equation\}
|
||||
|
||||
Here \(\xi_\{twist\} = \int_\{t_0\}^t \Omega_\{twist\} (\tau)
|
||||
\mathrm\{d\}\tau\) is the twisting angular displacement, and
|
||||
\(\Omega_\{twist\} = (\mathbf\{\Omega\}_i - \mathbf\{\Omega\}_j) \cdot
|
||||
\mathbf\{n\}\) is the relative twisting angular velocity. The torque
|
||||
is then truncated according to:
|
||||
|
||||
\begin\{equation\}
|
||||
\tau_\{twist\} = min(\mu_\{twist\} F_\{n,0\}, \tau_\{twist,0\})
|
||||
\end\{equation\}
|
||||
|
||||
Similar to the sliding and rolling displacement, the angular
|
||||
displacement is rescaled so that it corresponds to the critical value
|
||||
if the twisting torque exceeds this critical value:
|
||||
|
||||
\begin\{equation\}
|
||||
\xi_\{twist\} = \frac\{1\}\{k_\{twist\}\} (\mu_\{twist\} F_\{n,0\}sgn(\Omega_\{twist\}) - \gamma_\{twist\}\Omega_\{twist\})
|
||||
\end\{equation\}
|
||||
|
||||
For {twisting sds}, the coefficients \(k_\{twist\}, \gamma_\{twist\}\)
|
||||
and \(\mu_\{twist\}\) are simply the user input parameters that follow
|
||||
the {twisting sds} keywords in the {pair_coeff} command.
|
||||
|
||||
For {twisting_marshall}, the coefficients are expressed in terms of
|
||||
sliding friction coefficients, as discussed in
|
||||
"Marshall"_#Marshall2009 (see equations 32 and 33 of that work):
|
||||
|
||||
\begin\{equation\}
|
||||
k_\{twist\} = 0.5k_ta^2
|
||||
\end\{equation\}
|
||||
|
||||
\begin\{equation\}
|
||||
\eta_\{twist\} = 0.5\eta_ta^2
|
||||
\end\{equation\}
|
||||
|
||||
\begin\{equation\}
|
||||
\mu_\{twist\} = \frac\{2\}\{3\}a\mu_t
|
||||
\end\{equation\}
|
||||
|
||||
Finally, the twisting torque on each particle is given by:
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{\tau\}_\{twist,i\} = \tau_\{twist\}\mathbf\{n\}
|
||||
\end\{equation\}
|
||||
|
||||
\begin\{equation\}
|
||||
\mathbf\{\tau\}_\{twist,j\} = -\mathbf\{\tau\}_\{twist,i\}
|
||||
\end\{equation\}
|
||||
|
||||
:line
|
||||
|
||||
The {granular} pair style can reproduce the behavior of the
|
||||
{pair gran/*} styles with the appropriate settings (some very
|
||||
minor differences can be expected due to corrections in
|
||||
displacement history frame-of-reference, and the application
|
||||
of the torque at the center of the contact rather than
|
||||
at each particle). The first example above
|
||||
is equivalent to {pair gran/hooke 1000.0 NULL 50.0 50.0 0.4 1}.
|
||||
The second example is equivalent to
|
||||
{pair gran/hooke/history 1000.0 500.0 50.0 50.0 0.4 1}.
|
||||
The third example is equivalent to
|
||||
{pair gran/hertz/history 1000.0 500.0 50.0 50.0 0.4 1}.
|
||||
|
||||
:line
|
||||
|
||||
LAMMPS automatically sets pairwise cutoff values for {pair_style
|
||||
granular} based on particle radii (and in the case of {jkr} pull-off
|
||||
distances). In the vast majority of situations, this is adequate.
|
||||
However, a cutoff value can optionally be appended to the {pair_style
|
||||
granular} command to specify a global cutoff (i.e. a cutoff for all
|
||||
atom types). Additionally, the optional {cutoff} keyword can be passed
|
||||
to the {pair_coeff} command, followed by a cutoff value. This will
|
||||
set a pairwise cutoff for the atom types in the {pair_coeff} command.
|
||||
These options may be useful in some rare cases where the automatic
|
||||
cutoff determination is not sufficient, e.g. if particle diameters
|
||||
are being modified via the {fix adapt} command. In that case, the
|
||||
global cutoff specified as part of the {pair_style granular} command
|
||||
is applied to all atom types, unless it is overridden for a given atom
|
||||
type combination by the {cutoff} value specified in the {pair coeff}
|
||||
command. If {cutoff} is only specified in the {pair coeff} command
|
||||
and no global cutoff is appended to the {pair_style granular} command,
|
||||
then LAMMPS will use that cutoff for the specified atom type
|
||||
combination, and automatically set pairwise cutoffs for the remaining
|
||||
atom types.
|
||||
|
||||
: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
|
||||
hardware, as discussed on the "Speed packages"_Speed_packages.html doc
|
||||
page. The accelerated styles take the same arguments and should
|
||||
produce the same results, except for round-off and precision issues.
|
||||
|
||||
These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
|
||||
USER-OMP and OPT packages, respectively. They are only enabled if
|
||||
LAMMPS was built with those packages. See the "Build
|
||||
package"_Build_package.html doc page for more info.
|
||||
|
||||
You can specify the accelerated styles explicitly in your input script
|
||||
by including their suffix, or you can use the "-suffix command-line
|
||||
switch"_Run_options.html when you invoke LAMMPS, or you can use the
|
||||
"suffix"_suffix.html command in your input script.
|
||||
|
||||
See the "Speed packages"_Speed_packages.html doc page for more
|
||||
instructions on how to use the accelerated styles effectively.
|
||||
|
||||
:line
|
||||
|
||||
[Mixing, shift, table, tail correction, restart, rRESPA info]:
|
||||
|
||||
The "pair_modify"_pair_modify.html mix, shift, table, and tail options
|
||||
are not relevant for granular pair styles.
|
||||
|
||||
Mixing of coefficients is carried out using geometric averaging for
|
||||
most quantities, e.g. if friction coefficient for type 1-type 1
|
||||
interactions is set to \(\mu_1\), and friction coefficient for type
|
||||
2-type 2 interactions is set to \(\mu_2\), the friction coefficient
|
||||
for type1-type2 interactions is computed as \(\sqrt\{\mu_1\mu_2\}\)
|
||||
(unless explicitly specified to a different value by a {pair_coeff 1 2
|
||||
...} command). The exception to this is elastic modulus, only
|
||||
applicable to {hertz/material}, {dmt} and {jkr} normal contact
|
||||
models. In that case, the effective elastic modulus is computed as:
|
||||
|
||||
\begin\{equation\}
|
||||
E_\{eff,ij\} = \left(\frac\{1-\nu_i^2\}\{E_i\} + \frac\{1-\nu_j^2\}\{E_j\}\right)^\{-1\}
|
||||
\end\{equation\}
|
||||
|
||||
If the {i-j} coefficients \(E_\{ij\}\) and \(\nu_\{ij\}\) are
|
||||
explicitly specified, the effective modulus is computed as:
|
||||
|
||||
\begin\{equation\}
|
||||
E_\{eff,ij\} = \left(\frac\{1-\nu_\{ij\}^2\}\{E_\{ij\}\} + \frac\{1-\nu_\{ij\}^2\}\{E_\{ij\}\}\right)^\{-1\}
|
||||
\end\{equation\}
|
||||
|
||||
or
|
||||
|
||||
\begin\{equation\}
|
||||
E_\{eff,ij\} = \frac\{E_\{ij\}\}\{2(1-\nu_\{ij\})\}
|
||||
\end\{equation\}
|
||||
|
||||
These pair styles write their information to "binary restart
|
||||
files"_restart.html, so a pair_style command does not need to be
|
||||
specified in an input script that reads a restart file.
|
||||
|
||||
These pair styles can only be used via the {pair} keyword of the
|
||||
"run_style respa"_run_style.html command. They do not support the
|
||||
{inner}, {middle}, {outer} keywords.
|
||||
|
||||
The single() function of these pair styles returns 0.0 for the energy
|
||||
of a pairwise interaction, since energy is not conserved in these
|
||||
dissipative potentials. It also returns only the normal component of
|
||||
the pairwise interaction force. However, the single() function also
|
||||
calculates 10 extra pairwise quantities. The first 3 are the
|
||||
components of the tangential force between particles I and J, acting
|
||||
on particle I. The 4th is the magnitude of this tangential force.
|
||||
The next 3 (5-7) are the components of the rolling torque acting on
|
||||
particle I. The next entry (8) is the magnitude of the rolling torque.
|
||||
The next entry (9) is the magnitude of the twisting torque acting
|
||||
about the vector connecting the two particle centers.
|
||||
The last 3 (10-12) are the components of the vector connecting
|
||||
the centers of the two particles (x_I - x_J).
|
||||
|
||||
These extra quantities can be accessed by the "compute
|
||||
pair/local"_compute_pair_local.html command, as {p1}, {p2}, ...,
|
||||
{p12}.
|
||||
|
||||
:line
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
All the granular pair styles are part of the GRANULAR package. It is
|
||||
only enabled if LAMMPS was built with that package. See the "Build
|
||||
package"_Build_package.html doc page for more info.
|
||||
|
||||
These pair styles require that atoms store torque and angular velocity
|
||||
(omega) as defined by the "atom_style"_atom_style.html. They also
|
||||
require a per-particle radius is stored. The {sphere} atom style does
|
||||
all of this.
|
||||
|
||||
This pair style requires you to use the "comm_modify vel
|
||||
yes"_comm_modify.html command so that velocities are stored by ghost
|
||||
atoms.
|
||||
|
||||
These pair styles will not restart exactly when using the
|
||||
"read_restart"_read_restart.html command, though they should provide
|
||||
statistically similar results. This is because the forces they
|
||||
compute depend on atom velocities. See the
|
||||
"read_restart"_read_restart.html command for more details.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"pair_coeff"_pair_coeff.html
|
||||
"pair gran/*"_pair_gran.html
|
||||
|
||||
[Default:]
|
||||
|
||||
For the {pair_coeff} settings: {damping viscoelastic}, {rolling none},
|
||||
{twisting none}.
|
||||
|
||||
[References:]
|
||||
|
||||
:link(Brill1996)
|
||||
[(Brilliantov et al, 1996)] Brilliantov, N. V., Spahn, F., Hertzsch,
|
||||
J. M., & Poschel, T. (1996). Model for collisions in granular
|
||||
gases. Physical review E, 53(5), 5382.
|
||||
|
||||
:link(Tsuji1992)
|
||||
[(Tsuji et al, 1992)] Tsuji, Y., Tanaka, T., & Ishida,
|
||||
T. (1992). Lagrangian numerical simulation of plug flow of
|
||||
cohesionless particles in a horizontal pipe. Powder technology, 71(3),
|
||||
239-250.
|
||||
|
||||
:link(JKR1971)
|
||||
[(Johnson et al, 1971)] Johnson, K. L., Kendall, K., & Roberts,
|
||||
A. D. (1971). Surface energy and the contact of elastic
|
||||
solids. Proc. R. Soc. Lond. A, 324(1558), 301-313.
|
||||
|
||||
:link(DMT1975)
|
||||
[Derjaguin et al, 1975)] Derjaguin, B. V., Muller, V. M., & Toporov,
|
||||
Y. P. (1975). Effect of contact deformations on the adhesion of
|
||||
particles. Journal of Colloid and interface science, 53(2), 314-326.
|
||||
|
||||
:link(Luding2008)
|
||||
[(Luding, 2008)] Luding, S. (2008). Cohesive, frictional powders:
|
||||
contact models for tension. Granular matter, 10(4), 235.
|
||||
|
||||
:link(Marshall2009)
|
||||
[(Marshall, 2009)] Marshall, J. S. (2009). Discrete-element modeling
|
||||
of particulate aerosol flows. Journal of Computational Physics,
|
||||
228(5), 1541-1561.
|
||||
|
||||
:link(Silbert2001)
|
||||
[(Silbert, 2001)] Silbert, L. E., Ertas, D., Grest, G. S., Halsey,
|
||||
T. C., Levine, D., & Plimpton, S. J. (2001). Granular flow down an
|
||||
inclined plane: Bagnold scaling and rheology. Physical Review E,
|
||||
64(5), 051302.
|
||||
|
||||
:link(Kuhn2004)
|
||||
[(Kuhn and Bagi, 2005)] Kuhn, M. R., & Bagi, K. (2004). Contact
|
||||
rolling and deformation in granular media. International journal of
|
||||
solids and structures, 41(21), 5793-5820.
|
||||
|
||||
:link(Wang2015)
|
||||
[(Wang et al, 2015)] Wang, Y., Alonso-Marroquin, F., & Guo,
|
||||
W. W. (2015). Rolling and sliding in 3-D discrete element
|
||||
models. Particuology, 23, 49-55.
|
||||
|
||||
:link(Thornton1991)
|
||||
[(Thornton, 1991)] Thornton, C. (1991). Interparticle sliding in the
|
||||
presence of adhesion. J. Phys. D: Appl. Phys. 24 1942
|
||||
|
||||
:link(Mindlin1949)
|
||||
[(Mindlin, 1949)] Mindlin, R. D. (1949). Compliance of elastic bodies
|
||||
in contact. J. Appl. Mech., ASME 16, 259-268.
|
||||
|
||||
:link(Thornton2013)
|
||||
[(Thornton et al, 2013)] Thornton, C., Cummins, S. J., & Cleary,
|
||||
P. W. (2013). An investigation of the comparative behaviour of
|
||||
alternative contact force models during inelastic collisions. Powder
|
||||
Technology, 233, 30-46.
|
||||
|
||||
:link(WaltonPC)
|
||||
[(Otis R. Walton)] Walton, O.R., Personal Communication
|
||||
@ -47,11 +47,16 @@ equation can be found in "(Leven1)"_#Leven1 and "(Maaravi)"_#Maaravi2.
|
||||
It is important to include all the pairs to build the neighbor list for
|
||||
calculating the normals.
|
||||
|
||||
NOTE: This potential is intended for interactions between two different
|
||||
layers of graphene or hexagonal boron nitride. Therefore, to avoid
|
||||
interaction within the same layers, each layer should have a separate
|
||||
molecule id and is recommended to use "full" atom style in the data
|
||||
file.
|
||||
NOTE: This potential (ILP) is intended for interlayer interactions between two
|
||||
different layers of graphene, hexagonal boron nitride (h-BN) and their hetero-junction.
|
||||
To perform a realistic simulation, this potential must be used in combination with
|
||||
intra-layer potential, such as "AIREBO"_pair_airebo.html or "Tersoff"_pair_tersoff.html potential.
|
||||
To keep the intra-layer properties unaffected, the interlayer interaction
|
||||
within the same layers should be avoided. Hence, each atom has to have a layer
|
||||
identifier such that atoms residing on the same layer interact via the
|
||||
appropriate intra-layer potential and atoms residing on different layers
|
||||
interact via the ILP. Here, the molecule id is chosen as the layer identifier,
|
||||
thus a data file with the "full" atom style is required to use this potential.
|
||||
|
||||
The parameter file (e.g. BNCH.ILP), is intended for use with {metal}
|
||||
"units"_units.html, with energies in meV. Two additional parameters,
|
||||
@ -62,6 +67,10 @@ list for calculating the normals for each atom pair.
|
||||
NOTE: The parameters presented in the parameter file (e.g. BNCH.ILP),
|
||||
are fitted with taper function by setting the cutoff equal to 16.0
|
||||
Angstrom. Using different cutoff or taper function should be careful.
|
||||
The parameters for atoms pairs between Boron and Nitrogen are fitted with
|
||||
a screened Coulomb interaction "coul/shield"_pair_coul_shield.html. Therefore,
|
||||
to simulated the properties of h-BN correctly, this potential must be used in
|
||||
combination with the pair style "coul/shield"_pair_coul_shield.html.
|
||||
|
||||
NOTE: Two new sets of parameters of ILP for two-dimensional hexagonal
|
||||
Materials are presented in "(Ouyang)"_#Ouyang. These parameters provide
|
||||
|
||||