Compare commits
795 Commits
patch_12Ju
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
| 2a068b248a | |||
| 58948b71a9 | |||
| f80b015e27 | |||
| d1d8a019f9 | |||
| ab6de4c384 | |||
| 13d3cfa2b6 | |||
| 3daa0c0726 | |||
| b37ebc6b33 | |||
| d542651d60 | |||
| a19cb93558 | |||
| 88cb95f2ad | |||
| 8c564460e6 | |||
| 351df5488f | |||
| 2584db928d | |||
| d555b88cb1 | |||
| a1f21f9ea5 | |||
| 41987dd20f | |||
| 7335aa7046 | |||
| 90e59e8484 | |||
| da148ac331 | |||
| f79dd13c9b | |||
| 4bc3edc94d | |||
| e6ca347b5c | |||
| 151b713a60 | |||
| 73eaa41af0 | |||
| 4995cd372d | |||
| 8d5c50db1f | |||
| 929bc35133 | |||
| af1d4b7bf9 | |||
| 65f8f8695f | |||
| dcdd57c130 | |||
| 625811cc11 | |||
| f8124ebe4c | |||
| 587be04ebc | |||
| a6653a2097 | |||
| e2a1e6459f | |||
| 51383ede3d | |||
| 1a7fdf0ab2 | |||
| 37253a21e3 | |||
| b0ae7f8112 | |||
| 4ff44d2a2f | |||
| 4112954399 | |||
| c6f788df01 | |||
| 58b367dcdd | |||
| 6296d5bab6 | |||
| 5382f9c645 | |||
| 919ef6d369 | |||
| 88b56e0668 | |||
| d863b4c55f | |||
| d34d6b79e3 | |||
| e58290ee08 | |||
| 906e3fd070 | |||
| 2a87321554 | |||
| 47a0fe90ec | |||
| 363ad54383 | |||
| 7a739d03f6 | |||
| 0e6991659f | |||
| 9d15c19387 | |||
| 6152906deb | |||
| 29dc28c615 | |||
| 6d335fb5a6 | |||
| 8d4615f96f | |||
| 4a1a932df6 | |||
| 9b42419446 | |||
| 1b3ebcc857 | |||
| 3efdf22850 | |||
| 1ff281dd3c | |||
| 491f5d96b8 | |||
| bc3c85b6a4 | |||
| efd0510873 | |||
| 5eb61491f0 | |||
| 192901f6d0 | |||
| 4ed5e585c1 | |||
| 72b5f21c57 | |||
| 57d4c472a0 | |||
| 3e8807bee0 | |||
| b751add30b | |||
| 5fc24a8ba3 | |||
| fd410779ac | |||
| 597346413e | |||
| dcd073f8bd | |||
| 440dae924d | |||
| 36e6469c9e | |||
| f211c9dae0 | |||
| acfe419de2 | |||
| 74fe512c67 | |||
| 3515c5c6be | |||
| 02e60884a3 | |||
| 6ced05927f | |||
| 8807f6aafc | |||
| 216d2b692f | |||
| 0b6444b9e5 | |||
| 8b4c6f7f98 | |||
| 3dba42f62e | |||
| 93efb0fcb7 | |||
| 4f7777cc10 | |||
| 445d10ae5a | |||
| cde0d3dcdc | |||
| 05c044a712 | |||
| ff58d0319e | |||
| 1aabe28858 | |||
| 90ad9e44f1 | |||
| fed5564520 | |||
| d5b137c4e3 | |||
| 1c8cf634db | |||
| 61c6d32861 | |||
| bd4c07772b | |||
| c70bda0cd2 | |||
| e517ee25d5 | |||
| cfae257f8f | |||
| 8a8a3228f3 | |||
| 23343d5e5c | |||
| 2a25ce9d6e | |||
| 31ede566e9 | |||
| 35fcf5775c | |||
| 054939bb23 | |||
| a2971c5e42 | |||
| ecfe7046e3 | |||
| 9f11057b47 | |||
| 1bb746aa87 | |||
| 7a98929a67 | |||
| a0b5e8ff73 | |||
| e09a87d121 | |||
| 0c8ac043e6 | |||
| 6fef2326d6 | |||
| dec1fd2b92 | |||
| 8f50f4fc96 | |||
| c5c409062c | |||
| a9c3eb5206 | |||
| cfe813c963 | |||
| 7ac03b6c9e | |||
| 0cd2dac112 | |||
| 711886034a | |||
| 6387689979 | |||
| b500c879f5 | |||
| 4d9861e6a2 | |||
| 8aaf77c271 | |||
| ace1b8026c | |||
| 2b8b84788b | |||
| 7a2c051b69 | |||
| 5ec4a6bd2e | |||
| 4b2a04aab8 | |||
| fd98ef2a59 | |||
| 892c969ee6 | |||
| fd86feae7f | |||
| a2439038c6 | |||
| 0502d421b0 | |||
| 1dc8c2d9a2 | |||
| 5a158d59b4 | |||
| 25556a1bc1 | |||
| adc202bd71 | |||
| e4f9874974 | |||
| adead22aef | |||
| 40b510c2c2 | |||
| ea939f6355 | |||
| 477c3524b9 | |||
| 806000c9ee | |||
| ddfc3f2d0b | |||
| 9f0551104a | |||
| a239e2b900 | |||
| 916655e382 | |||
| 8ba1b9b122 | |||
| eaa3159c7f | |||
| fbf8856978 | |||
| 8e75c387ec | |||
| 72d73c4c45 | |||
| cdded2d51c | |||
| 0d973d5a80 | |||
| 449c59cf49 | |||
| 1bf8f51664 | |||
| 50d15cded3 | |||
| 6722e55d5e | |||
| 44922cea16 | |||
| da8ce40ffd | |||
| 64080dce3e | |||
| 2d9f244c6c | |||
| 01aa952968 | |||
| 7a74cad978 | |||
| dd484cbde5 | |||
| 1d377a1f26 | |||
| 38d4c58115 | |||
| ddc10064a2 | |||
| e40d9c0eb2 | |||
| 7863df8a76 | |||
| 2d8f3aaede | |||
| b3eaf7e7f4 | |||
| 7505ae3628 | |||
| cbfedda573 | |||
| 8fbaf43319 | |||
| 1bf9fac5bb | |||
| 276a6dcaa3 | |||
| d20ef0d734 | |||
| a85906236c | |||
| 7ce7990bf9 | |||
| b11c549dbd | |||
| 3dc92f8cc4 | |||
| 80b41eea9d | |||
| 6795a2a066 | |||
| 70ba11e6bc | |||
| 5fa2b88011 | |||
| d34fc34e7b | |||
| 553f2e0507 | |||
| 3218ad7c2a | |||
| da0de5b81c | |||
| a96d1f6363 | |||
| 459bce40ad | |||
| 602dd3b81b | |||
| 479f7b9c1e | |||
| d01478b2b1 | |||
| d587e49403 | |||
| 3b6dbe6344 | |||
| ff3159cc76 | |||
| 0ac62fdb28 | |||
| 1462165b36 | |||
| 9b90b68e35 | |||
| fc6a643e53 | |||
| 437e19c968 | |||
| b0757e71ef | |||
| 03345a5999 | |||
| 9a7c08c7e9 | |||
| c6c7131088 | |||
| 0e03822d59 | |||
| 68c2085f7a | |||
| 281483bb25 | |||
| 86731f99f6 | |||
| fedf0949db | |||
| d93002af6c | |||
| 31f1438a04 | |||
| d5f15d9151 | |||
| eb2600e05d | |||
| 49bac65477 | |||
| 78809d8f16 | |||
| acb2cbaaee | |||
| c69d95fd31 | |||
| 4bf7191833 | |||
| 2cc7e0d1a4 | |||
| df20f1f3fd | |||
| 7ccaa18543 | |||
| 65f822ce72 | |||
| a4e536e584 | |||
| ac182284dd | |||
| 07567a6cc6 | |||
| 9fd39a0657 | |||
| 466ffd82a3 | |||
| 2c8c2bf278 | |||
| 04b5f042d2 | |||
| e999aaf4f3 | |||
| c5e153ae29 | |||
| c1f505f15f | |||
| 5118e38418 | |||
| 6c709043b2 | |||
| 5ccbedb3c9 | |||
| b45b6a74d1 | |||
| 436af21334 | |||
| b19e84541a | |||
| 4316267cc8 | |||
| 705fc2aaf7 | |||
| 98fd8e5f56 | |||
| a17aeca1ee | |||
| dfdac70dc6 | |||
| 9994608532 | |||
| 3334267265 | |||
| 875ac608a6 | |||
| 87a5898696 | |||
| 76d6117c6f | |||
| f0620006f0 | |||
| ba5d1b80d7 | |||
| 9741952ad5 | |||
| a49c747519 | |||
| 2f5d51e7cd | |||
| d9d5a4d8ec | |||
| e7a124206a | |||
| 3f92bad7f5 | |||
| a1261a54c3 | |||
| 74ed5134b3 | |||
| 004267c6ec | |||
| f7b911181e | |||
| acbdceb087 | |||
| 42e7b801d4 | |||
| a79b945128 | |||
| b972821896 | |||
| cb52abd965 | |||
| d4eb800739 | |||
| 60b9fdf897 | |||
| a2054657c7 | |||
| 3cf9b018a7 | |||
| f5c31f9df2 | |||
| 5143423e92 | |||
| 97653e2626 | |||
| 57fda06ecd | |||
| fff0b62aad | |||
| de41dd53b2 | |||
| de97c8acdd | |||
| f547ddd2e9 | |||
| e6673ca64d | |||
| 3e7f52ea91 | |||
| 792d0e4d84 | |||
| e5374ce8e5 | |||
| 58a911c6a0 | |||
| e74aeafbfb | |||
| 1d3030023f | |||
| f1215e904a | |||
| 85f1eebd73 | |||
| 0f5d18917c | |||
| 23f941e0bb | |||
| 22ec573638 | |||
| 7c35e8407c | |||
| 4680fa669c | |||
| 3ae21e0bfb | |||
| 63fcdb6e52 | |||
| cd44539429 | |||
| 47332f8e46 | |||
| fee96bc777 | |||
| b279ba9a40 | |||
| 087b9a3b6e | |||
| 5a468fc05c | |||
| 9b378fadf4 | |||
| ed712e053f | |||
| 0c68c4d493 | |||
| 3e12c3f773 | |||
| 7bc86899b3 | |||
| ac7013432b | |||
| 039fb94faa | |||
| 8c64b2090f | |||
| 77417e2223 | |||
| 2e4f29c900 | |||
| 8dae514e03 | |||
| 22a42446d3 | |||
| 2968bfa8d9 | |||
| 669f60b692 | |||
| 1bdf30103f | |||
| 4992caed95 | |||
| f425f2ab26 | |||
| 309e374867 | |||
| d5a344a5c8 | |||
| 481749dc35 | |||
| 14b1241db2 | |||
| 4d26bd5fd5 | |||
| 5fe4c9149f | |||
| a24aeb3fc6 | |||
| 0cd4ea4d04 | |||
| 8726deb9b6 | |||
| 46561f57bd | |||
| aacc30c4d7 | |||
| 2833b7adbd | |||
| 11c4a8b49c | |||
| c28869124b | |||
| bd98354691 | |||
| 109aec74ea | |||
| 588ed11e85 | |||
| be5602c44f | |||
| e78d85725b | |||
| 1b36451f6a | |||
| d168de00db | |||
| 0c6ce8f23c | |||
| 3ffe858a8b | |||
| c279d194dc | |||
| 6b58058bca | |||
| 0b73966a23 | |||
| 5cecfb5c4d | |||
| d2d613c8b4 | |||
| 8ddd474145 | |||
| a8fe7e9252 | |||
| 3dd0971aeb | |||
| 888543ce6d | |||
| 58e67e95f8 | |||
| e41fb67903 | |||
| a8d4666233 | |||
| 4397a62be9 | |||
| 575411c92c | |||
| e139d935ab | |||
| 786f113d3e | |||
| 6052744175 | |||
| d1ea7fa678 | |||
| bfb26e7ee0 | |||
| bfd027e806 | |||
| f1d19c96cb | |||
| afb427a94d | |||
| f090a63536 | |||
| 339c570b3e | |||
| 07eeb6c5f9 | |||
| a02eff6e40 | |||
| 77ea2b3af0 | |||
| 7d7327e706 | |||
| 2bf03dbcdf | |||
| 82c2bfe47c | |||
| 7b79382fa7 | |||
| a4121d44a2 | |||
| d5e938f949 | |||
| 8095b9eec0 | |||
| bf1ad04555 | |||
| 4a58be05fa | |||
| f763420c53 | |||
| fe7bdf5941 | |||
| ed279cb9f9 | |||
| 5ad24fc733 | |||
| 4309666fa2 | |||
| 3c13eebcb2 | |||
| e24b329e1b | |||
| 3e9560190c | |||
| 7597a227f4 | |||
| 2a3afae3ff | |||
| ad8d722c68 | |||
| 1906444a1d | |||
| de46b3b8bf | |||
| e9b5e55f18 | |||
| 96d1704b8e | |||
| 9cc2638c91 | |||
| b093094d5e | |||
| 7d86d7f89a | |||
| 202aeaf1a5 | |||
| fce4006fda | |||
| 6934a31878 | |||
| cb9b0cdaf2 | |||
| c1665cd378 | |||
| 03067d0059 | |||
| f6befb18ae | |||
| 5711acc9ef | |||
| dcd521e9c6 | |||
| 80758cef2d | |||
| 4bd0258bfd | |||
| 5d3a080db7 | |||
| b7be53f3fc | |||
| 7e3c61b831 | |||
| 4e28af6219 | |||
| dba24555d1 | |||
| fdc3f50298 | |||
| af81f944d7 | |||
| 5b10e2f653 | |||
| a03d2a66c9 | |||
| 9fbb49f401 | |||
| d4ba431117 | |||
| b0dd929b6d | |||
| 3b1f639ddf | |||
| a92fa56a3e | |||
| 8ca9aafff2 | |||
| e84c6743d9 | |||
| 8a04b9c498 | |||
| 7edf4e567f | |||
| 656ea3569e | |||
| b672c30428 | |||
| 337fca1305 | |||
| 29651c4bb1 | |||
| 54eed8af02 | |||
| 92ccbd13a5 | |||
| 766a07c5d4 | |||
| 278cc0a039 | |||
| 33cc2117c6 | |||
| 57ec008a66 | |||
| 230121c2c7 | |||
| f5d54a825f | |||
| 61bfc38961 | |||
| 0cd6c5c3ec | |||
| c242294227 | |||
| bf90e9b03e | |||
| af9a3d933b | |||
| 687e1ddb53 | |||
| 03611c95ae | |||
| db244166ca | |||
| 8dad9a0f68 | |||
| 08d81a5ac2 | |||
| 938f7fa0ef | |||
| 63c9987ec8 | |||
| d0c460e7f7 | |||
| e8780449d8 | |||
| df04fc943d | |||
| 264750e47c | |||
| b61410bde0 | |||
| 80fbdceff2 | |||
| 24b15f7e46 | |||
| e45299f620 | |||
| 179cce90bc | |||
| 8c12ab5db0 | |||
| f7f5a3e3e4 | |||
| 7e3d6026d4 | |||
| d5d8887eb9 | |||
| 56f839f2e1 | |||
| a7b7be26dc | |||
| 50ba0e577e | |||
| 727c0b251a | |||
| b94c41c05a | |||
| e9a578a212 | |||
| 750e663be8 | |||
| 8305c97b69 | |||
| 8cf24edc21 | |||
| 249c6d6de9 | |||
| bfa19f678d | |||
| 8401b6aee8 | |||
| 9d6758f269 | |||
| 70d36b1b4c | |||
| 4a9fa1ba87 | |||
| b3c403f464 | |||
| 12dcaa2d03 | |||
| 1e6eeda958 | |||
| c6478e245a | |||
| cfe87f928d | |||
| 469846e73c | |||
| 9b382dac41 | |||
| 679806206d | |||
| c118af34e0 | |||
| 46fc4b21a5 | |||
| 2b3af7b371 | |||
| aecc85e3d5 | |||
| e3b1d27e0a | |||
| 06d47f7279 | |||
| fc9efa1586 | |||
| 0310959053 | |||
| 9360038013 | |||
| 0caaca8a05 | |||
| 9d38652033 | |||
| c08ee92801 | |||
| 95fb6c75d2 | |||
| 67582ebf14 | |||
| 8dff25296b | |||
| b036c911e7 | |||
| 6f72a56b4c | |||
| fb088cdc57 | |||
| c98ebb669e | |||
| bb0bd289b7 | |||
| b909a782b6 | |||
| 6fff591c0d | |||
| c6057f3780 | |||
| 765b3ad487 | |||
| 9615cb466c | |||
| 500373d72b | |||
| 25fecf7b7d | |||
| 18455d07fe | |||
| c8ce2a0390 | |||
| 7601a217b7 | |||
| af3b1c5423 | |||
| fc3d971119 | |||
| b864116719 | |||
| d022f1cf48 | |||
| 4fa97ee0dd | |||
| 97d7e9e4a1 | |||
| 8c0894fa84 | |||
| 004816a4ba | |||
| 6934932383 | |||
| 3f6dfa27bd | |||
| 40d88e9bda | |||
| 210fdb8b98 | |||
| ad722310b1 | |||
| e01640c4f5 | |||
| 07c91f396e | |||
| c5628e5ccd | |||
| ec2ef5b14c | |||
| 03a418809d | |||
| 2f088749ad | |||
| 635719a2ec | |||
| 72ea12b0f9 | |||
| 632bc8f20d | |||
| 9a81c95104 | |||
| 624c7a5ab8 | |||
| eeaca93974 | |||
| 515ccac51c | |||
| 53fec5563c | |||
| 47fae6b786 | |||
| 0538518dbd | |||
| a5e4123606 | |||
| 0a1ade0bce | |||
| 8f31b62e15 | |||
| d640543185 | |||
| b5809aff67 | |||
| b3423e9b7a | |||
| d38f97e465 | |||
| bb1b854b47 | |||
| d95d97db28 | |||
| a6b30c35ac | |||
| 7fb930daed | |||
| 72538fbb84 | |||
| d775aa1566 | |||
| 1fc6d4d3b6 | |||
| 97d09c2ec4 | |||
| 4bc5bc3d18 | |||
| c5c1f47c20 | |||
| fdc199e7cc | |||
| 0ea4ba28bf | |||
| 6004a58ab4 | |||
| 90df96b16f | |||
| 7dc4e17e0c | |||
| 2d5f02a398 | |||
| faa1dbc19d | |||
| ea23af48d3 | |||
| e2cd2a1a17 | |||
| 88f5ad160a | |||
| 81bfcb80e7 | |||
| df1d70bf99 | |||
| ced0d350f0 | |||
| 4b32e58f90 | |||
| 1475111f7f | |||
| 848ef74459 | |||
| 5013b80434 | |||
| 08d2856558 | |||
| 2c9dac5505 | |||
| 4d6a085361 | |||
| 88f777226e | |||
| 22082854ad | |||
| ca6558fea4 | |||
| 1ba1b7111d | |||
| ee165e72de | |||
| 3a628ce4b1 | |||
| c5920eeb8d | |||
| 5b8c505c2d | |||
| c79a1a6bed | |||
| 4865235998 | |||
| dcf604875c | |||
| 3052bc7f4c | |||
| 6df845a8d8 | |||
| fa59b1c6f2 | |||
| f84bbf9326 | |||
| 00ffebc929 | |||
| d7cd2795c5 | |||
| 3ab3663659 | |||
| 91896bc444 | |||
| c309d6e99e | |||
| e9146a6467 | |||
| 8305e27835 | |||
| ccc078f036 | |||
| 9a65ab2c4d | |||
| 1e7dc5126e | |||
| 654cd0fe00 | |||
| e5f0e23a11 | |||
| 6c798f1847 | |||
| 20f123ddd1 | |||
| bc93311309 | |||
| 19a108bd21 | |||
| 4fcbdbe3a1 | |||
| 1086db672c | |||
| f34284fca0 | |||
| 94d39239b5 | |||
| dd4afb16ad | |||
| 1d5efd05bd | |||
| 964605f25a | |||
| 74e8ed7a49 | |||
| b6a57c2480 | |||
| 21d3f68939 | |||
| 78e538c9fc | |||
| e31f864620 | |||
| 3f1944cace | |||
| cf79cf8e72 | |||
| 4b56fd4cd2 | |||
| 8abd42ed2f | |||
| 467cbbc188 | |||
| 9d37f28a86 | |||
| 7bf5d5899f | |||
| 61f9cb66e2 | |||
| 99e8085cda | |||
| 41bd3437f6 | |||
| bd26d7a742 | |||
| d3f00eeff4 | |||
| 67d668cb62 | |||
| 9d4aad2588 | |||
| 4da7fad87e | |||
| cf7011bf64 | |||
| ae8542a020 | |||
| 446630e3ba | |||
| 8c314c7bda | |||
| 13500710ce | |||
| c787ce60a7 | |||
| 103c44e3c1 | |||
| c1fe6c9109 | |||
| c03e19d2dd | |||
| 24149fc793 | |||
| 011f05f9ff | |||
| 955d5da09c | |||
| b5cac76937 | |||
| 9f0c87cf81 | |||
| 9c8e03c4f4 | |||
| dc07a1471e | |||
| 7c30111fa0 | |||
| 597a841f40 | |||
| e62f45b2b5 | |||
| f7e53b06e4 | |||
| c74e7292c0 | |||
| 7c0fd42ab4 | |||
| 8c1aada9cb | |||
| 139ecd0e90 | |||
| 535d08895a | |||
| 60e1e52ec1 | |||
| cba09fc0f5 | |||
| be7d3a5f4b | |||
| 5436411178 | |||
| fbbeba5912 | |||
| d34a8a4807 | |||
| 2e57a2ee23 | |||
| 875ad66afc | |||
| 9a4361336d | |||
| 6cb46bc7f0 | |||
| b953dbd856 | |||
| ea664476d3 | |||
| e0253e1058 | |||
| ee50ee2a9b | |||
| 0d151b948f | |||
| 36d6f1f95c | |||
| 0aa4118e89 | |||
| a6ac272e7e | |||
| e374b073bc | |||
| 846e365e94 | |||
| 64fe4c171c | |||
| 33c52c2a4a | |||
| e83f0d3f26 | |||
| 2f692b9bff | |||
| 33bfc1d1ca | |||
| b0205dbe07 | |||
| 8968cbf49d | |||
| 08f78f8060 | |||
| 64dc621027 | |||
| acdc4244ec | |||
| c18de5dbd8 | |||
| c13455bfa3 | |||
| 19be6d5f94 | |||
| 66411317cb | |||
| b895b52fc1 | |||
| 17ddf26121 | |||
| a65e85a12e | |||
| 2da1800357 | |||
| d392b17ff1 | |||
| 623f2c4ea0 | |||
| 7761b6022b | |||
| 1b9e33a17f | |||
| f67b045f02 | |||
| e91c72a0d2 | |||
| dc17dc3f84 | |||
| 81a4da5da3 | |||
| 5506f42005 | |||
| 51b38c5b24 | |||
| 06a445fd4c | |||
| 4a7f543036 | |||
| f4e9523152 | |||
| c37ba54d27 | |||
| a307d5ca7e | |||
| e9ed0ec9cb | |||
| a8df05939c | |||
| 5bd14e1b0f | |||
| c8756f7f55 | |||
| 8f338f785e | |||
| 1033e727b8 | |||
| 063e966ec3 | |||
| 473ccd98dc | |||
| 52e14995fc | |||
| c9a14ad8fb | |||
| bd69063088 | |||
| c78e2a5dd3 | |||
| 8d252d75cf | |||
| dbf716edd0 | |||
| 19235f072f | |||
| 940778b2ec | |||
| 8115785673 | |||
| 129b63ac54 | |||
| c6417581bc | |||
| 31f753c7d0 | |||
| 95c6a9c25b | |||
| 0461caf23e | |||
| 57554c48b9 | |||
| 24e408b463 | |||
| 539385afff | |||
| 63d6f1a1e2 | |||
| 37ba666309 | |||
| 1fc6a0e6dd | |||
| be22c63659 | |||
| 3be9cc0a4f | |||
| 7d8ec9f8be | |||
| 31869a5d6b | |||
| 1a908b2edd | |||
| c3fe7d4b58 | |||
| f42f861328 | |||
| d4c0b24eac | |||
| d155ac70f1 | |||
| 83bbdd71f3 | |||
| cf68591184 | |||
| 8171741ccb | |||
| 5120af1aba | |||
| 1356cb54a9 | |||
| fa71278070 | |||
| 5a91f3d51a | |||
| b0550648bf | |||
| 8339cdc76a | |||
| 04a7c6e920 | |||
| e1c1cc34bb | |||
| d1290dc6cc | |||
| 966398d470 | |||
| 3588fddef2 | |||
| e7313515c1 | |||
| 040b23ab27 | |||
| 496802c908 | |||
| 920b49d5a8 | |||
| 7692824bcf | |||
| aab3773a90 | |||
| e5f4d60888 | |||
| d20b4c4c94 | |||
| ebe287555c | |||
| 645541bcc7 | |||
| e865df16a8 | |||
| 18583434b1 | |||
| 2413da64a4 |
2
.github/release_steps.md
vendored
@ -110,7 +110,7 @@ git clone -b release --depth 10 https://github.com/lammps/lammps.git lammps-rele
|
||||
cmake -S lammps-release/cmake -B build-release -G Ninja -D CMAKE_INSTALL_PREFIX=$PWD/lammps-static -D CMAKE_TOOLCHAIN_FILE=/usr/musl/share/cmake/linux-musl.cmake -C lammps-release/cmake/presets/most.cmake -C lammps-release/cmake/presets/kokkos-openmp.cmake -D DOWNLOAD_POTENTIALS=OFF -D BUILD_MPI=OFF -D BUILD_TESTING=OFF -D CMAKE_BUILD_TYPE=Release -D PKG_ATC=ON -D PKG_AWPMD=ON -D PKG_MANIFOLD=ON -D PKG_MESONT=ON -D PKG_MGPT=ON -D PKG_ML-PACE=ON -D PKG_ML-RANN=ON -D PKG_MOLFILE=ON -D PKG_PTM=ON -D PKG_QTB=ON -D PKG_SMTBQ=ON
|
||||
cmake --build build-release --target all
|
||||
cmake --build build-release --target install
|
||||
/usr/musl/bin/x86_64-linux-musl-strip lammps-static/bin/*
|
||||
/usr/musl/bin/x86_64-linux-musl-strip -g lammps-static/bin/*
|
||||
tar -czvvf ../lammps-linux-x86_64-4Feb2025.tar.gz lammps-static
|
||||
exit # fedora 41 container
|
||||
cd ..
|
||||
|
||||
4
.github/workflows/check-cpp23.yml
vendored
@ -55,8 +55,8 @@ jobs:
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ env.CCACHE_DIR }}
|
||||
key: linux-cpp23-ccache-${{ github.sha }}
|
||||
restore-keys: linux-cpp23-ccache-
|
||||
key: linux-cpp23-ccache-${{ matrix.idx }}-${{ github.sha }}
|
||||
restore-keys: linux-cpp23-ccache-${{ matrix.idx }}
|
||||
|
||||
- name: Building LAMMPS via CMake
|
||||
shell: bash
|
||||
|
||||
@ -3,9 +3,6 @@
|
||||
# CMake build system
|
||||
# This file is part of LAMMPS
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
if(CMAKE_VERSION VERSION_LESS 3.20)
|
||||
message(WARNING "LAMMPS is planning to require at least CMake version 3.20 by Summer 2025. Please upgrade!")
|
||||
endif()
|
||||
########################################
|
||||
# initialize version variables with project command
|
||||
if(POLICY CMP0048)
|
||||
@ -156,9 +153,6 @@ endif()
|
||||
if(CMAKE_CXX_STANDARD LESS 11)
|
||||
message(FATAL_ERROR "C++ standard must be set to at least 11")
|
||||
endif()
|
||||
if(CMAKE_CXX_STANDARD LESS 17)
|
||||
message(WARNING "Selecting C++17 standard is preferred over C++${CMAKE_CXX_STANDARD}")
|
||||
endif()
|
||||
if(PKG_KOKKOS AND (CMAKE_CXX_STANDARD LESS 17))
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
endif()
|
||||
@ -244,15 +238,6 @@ option(CMAKE_POSITION_INDEPENDENT_CODE "Create object compatible with shared lib
|
||||
option(BUILD_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF)
|
||||
option(BUILD_LAMMPS_GUI "Build and install the LAMMPS GUI" OFF)
|
||||
|
||||
# Support using clang-tidy for C++ files with selected options
|
||||
set(ENABLE_CLANG_TIDY OFF CACHE BOOL "Include clang-tidy processing when compiling")
|
||||
if(ENABLE_CLANG_TIDY)
|
||||
set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-checks=-*,performance-trivially-destructible,performance-unnecessary-copy-initialization,performance-unnecessary-value-param,readability-redundant-control-flow,readability-redundant-declaration,readability-redundant-function-ptr-dereference,readability-redundant-member-init,readability-redundant-string-cstr,readability-redundant-string-init,readability-simplify-boolean-expr,readability-static-accessed-through-instance,readability-static-definition-in-anonymous-namespace,readability-qualified-auto,misc-unused-parameters,modernize-deprecated-ios-base-aliases,modernize-loop-convert,modernize-shrink-to-fit,modernize-use-auto,modernize-use-using,modernize-use-override,modernize-use-bool-literals,modernize-use-emplace,modernize-return-braced-init-list,modernize-use-equals-default,modernize-use-equals-delete,modernize-replace-random-shuffle,modernize-deprecated-headers,modernize-use-nullptr,modernize-use-noexcept,modernize-redundant-void-arg;-fix;-header-filter=.*,header-filter=library.h,header-filter=fmt/*.h" CACHE STRING "clang-tidy settings")
|
||||
else()
|
||||
unset(CMAKE_CXX_CLANG_TIDY CACHE)
|
||||
endif()
|
||||
|
||||
|
||||
file(GLOB ALL_SOURCES CONFIGURE_DEPENDS ${LAMMPS_SOURCE_DIR}/[^.]*.cpp)
|
||||
file(GLOB MAIN_SOURCES CONFIGURE_DEPENDS ${LAMMPS_SOURCE_DIR}/main.cpp)
|
||||
list(REMOVE_ITEM ALL_SOURCES ${MAIN_SOURCES})
|
||||
@ -277,6 +262,7 @@ option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF)
|
||||
set(STANDARD_PACKAGES
|
||||
ADIOS
|
||||
AMOEBA
|
||||
APIP
|
||||
ASPHERE
|
||||
ATC
|
||||
AWPMD
|
||||
@ -369,17 +355,6 @@ foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES})
|
||||
option(PKG_${PKG} "Build ${PKG} Package" OFF)
|
||||
endforeach()
|
||||
|
||||
set(DEPRECATED_PACKAGES AWPMD ATC POEMS)
|
||||
foreach(PKG ${DEPRECATED_PACKAGES})
|
||||
if(PKG_${PKG})
|
||||
message(WARNING
|
||||
"The ${PKG} package will be removed from LAMMPS in Summer 2025 due to lack of "
|
||||
"maintenance and use of code constructs that conflict with modern C++ compilers "
|
||||
"and standards. Please contact developers@lammps.org if you have any concerns "
|
||||
"about this step.")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
######################################################
|
||||
# packages with special compiler needs or external libs
|
||||
######################################################
|
||||
@ -476,6 +451,7 @@ pkg_depends(ELECTRODE KSPACE)
|
||||
pkg_depends(EXTRA-MOLECULE MOLECULE)
|
||||
pkg_depends(MESONT MOLECULE)
|
||||
pkg_depends(RHEO BPM)
|
||||
pkg_depends(APIP ML-PACE)
|
||||
|
||||
# detect if we may enable OpenMP support by default
|
||||
set(BUILD_OMP_DEFAULT OFF)
|
||||
|
||||
@ -57,8 +57,8 @@ if(DOWNLOAD_KOKKOS)
|
||||
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}")
|
||||
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}")
|
||||
include(ExternalProject)
|
||||
set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/4.6.00.tar.gz" CACHE STRING "URL for KOKKOS tarball")
|
||||
set(KOKKOS_MD5 "61b2b69ae50d83eedcc7d47a3fa3d6cb" CACHE STRING "MD5 checksum of KOKKOS tarball")
|
||||
set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/4.6.02.tar.gz" CACHE STRING "URL for KOKKOS tarball")
|
||||
set(KOKKOS_MD5 "14c02fac07bfcec48a1654f88ddee9c6" CACHE STRING "MD5 checksum of KOKKOS tarball")
|
||||
mark_as_advanced(KOKKOS_URL)
|
||||
mark_as_advanced(KOKKOS_MD5)
|
||||
GetFallbackURL(KOKKOS_URL KOKKOS_FALLBACK)
|
||||
@ -83,7 +83,7 @@ if(DOWNLOAD_KOKKOS)
|
||||
add_dependencies(LAMMPS::KOKKOSCORE kokkos_build)
|
||||
add_dependencies(LAMMPS::KOKKOSCONTAINERS kokkos_build)
|
||||
elseif(EXTERNAL_KOKKOS)
|
||||
find_package(Kokkos 4.6.00 REQUIRED CONFIG)
|
||||
find_package(Kokkos 4.6.02 REQUIRED CONFIG)
|
||||
target_link_libraries(lammps PRIVATE Kokkos::kokkos)
|
||||
else()
|
||||
set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos)
|
||||
|
||||
@ -8,6 +8,16 @@ if(NOT PKG_MANYBODY)
|
||||
set_property(TARGET lammps PROPERTY SOURCES "${LAMMPS_SOURCES}")
|
||||
endif()
|
||||
|
||||
# fix hmc may only be installed if also fix rigid/small from RIGID is installed
|
||||
if(NOT PKG_RIGID)
|
||||
get_property(LAMMPS_FIX_HEADERS GLOBAL PROPERTY FIX)
|
||||
list(REMOVE_ITEM LAMMPS_FIX_HEADERS ${LAMMPS_SOURCE_DIR}/MC/fix_hmc.h)
|
||||
set_property(GLOBAL PROPERTY FIX "${LAMMPS_FIX_HEADERS}")
|
||||
get_target_property(LAMMPS_SOURCES lammps SOURCES)
|
||||
list(REMOVE_ITEM LAMMPS_SOURCES ${LAMMPS_SOURCE_DIR}/MC/fix_hmc.cpp)
|
||||
set_property(TARGET lammps PROPERTY SOURCES "${LAMMPS_SOURCES}")
|
||||
endif()
|
||||
|
||||
# fix neighbor/swap may only be installed if also the VORONOI package is installed
|
||||
if(NOT PKG_VORONOI)
|
||||
get_property(LAMMPS_FIX_HEADERS GLOBAL PROPERTY FIX)
|
||||
|
||||
@ -53,7 +53,13 @@ else()
|
||||
add_library(yaml-cpp::yaml-cpp ALIAS yaml-cpp)
|
||||
endif()
|
||||
|
||||
add_subdirectory(${lib-pace} build-pace)
|
||||
# fixup yaml-cpp/emitterutils.cpp for GCC 15+ until patch is applied
|
||||
file(READ ${lib-pace}/yaml-cpp/src/emitterutils.cpp yaml_emitterutils)
|
||||
string(REPLACE "#include <sstream>" "#include <sstream>\n#include <cinttypes>" yaml_tmp_emitterutils "${yaml_emitterutils}")
|
||||
string(REPLACE "#include <cinttypes>\n#include <cinttypes>" "#include <cinttypes>" yaml_emitterutils "${yaml_tmp_emitterutils}")
|
||||
file(WRITE ${lib-pace}/yaml-cpp/src/emitterutils.cpp "${yaml_emitterutils}")
|
||||
|
||||
add_subdirectory(${lib-pace} build-pace EXCLUDE_FROM_ALL)
|
||||
set_target_properties(pace PROPERTIES CXX_EXTENSIONS ON OUTPUT_NAME lammps_pace${LAMMPS_MACHINE})
|
||||
|
||||
if(CMAKE_PROJECT_NAME STREQUAL "lammps")
|
||||
|
||||
@ -7,6 +7,11 @@ export LC_ALL=C
|
||||
BASEDIR="$(dirname "$0")"
|
||||
EXENAME="$(basename "$0")"
|
||||
|
||||
# save old settings (for restoring them later)
|
||||
OLDPATH="${PATH}"
|
||||
OLDLDLIB="${LD_LIBRARY_PATH}"
|
||||
|
||||
# prepend path to find our custom executables
|
||||
PATH="${BASEDIR}/bin:${PATH}"
|
||||
|
||||
# append to LD_LIBRARY_PATH to prefer local (newer) libs
|
||||
@ -15,6 +20,8 @@ LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${BASEDIR}/lib"
|
||||
# set some environment variables for LAMMPS etc.
|
||||
LAMMPS_POTENTIALS="${BASEDIR}/share/lammps/potentials"
|
||||
MSI2LMP_LIBRARY="${BASEDIR}/share/lammps/frc_files"
|
||||
export LD_LIBRARY_PATH LAMMPS_POTENTIALS MSI2LMP_LIBRARY PATH
|
||||
|
||||
# export everything
|
||||
export LD_LIBRARY_PATH LAMMPS_POTENTIALS MSI2LMP_LIBRARY PATH OLDPATH OLDLDLIB
|
||||
|
||||
exec "${BASEDIR}/bin/${EXENAME}" "$@"
|
||||
|
||||
@ -33,6 +33,14 @@
|
||||
#
|
||||
#---------------------------------------------
|
||||
|
||||
# restore previously saved environment variables, if available
|
||||
if [ -n "${OLDPATH}" ]
|
||||
then
|
||||
PATH="${OLDPATH}"
|
||||
LD_LIBRARY_PATH="${OLDLDLIB}"
|
||||
export PATH LD_LIBRARY_PATH
|
||||
fi
|
||||
|
||||
NEW_LIBRARY_PATH="/usr/local/lib64"
|
||||
for s in $(echo $LD_LIBRARY_PATH | sed -e 's/:/ /g')
|
||||
do \
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
set(ALL_PACKAGES
|
||||
ADIOS
|
||||
AMOEBA
|
||||
APIP
|
||||
ASPHERE
|
||||
ATC
|
||||
AWPMD
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
set(ALL_PACKAGES
|
||||
ADIOS
|
||||
AMOEBA
|
||||
APIP
|
||||
ASPHERE
|
||||
ATC
|
||||
AWPMD
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
|
||||
set(PACKAGES_WITH_LIB
|
||||
ADIOS
|
||||
APIP
|
||||
ATC
|
||||
AWPMD
|
||||
COMPRESS
|
||||
|
||||
15
doc/Makefile
@ -99,8 +99,6 @@ html: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJ
|
||||
@(\
|
||||
. $(VENV)/bin/activate ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
||||
sphinx-build -E $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) html ;\
|
||||
touch $(RSTDIR)/Fortran.rst ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
||||
sphinx-build $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) html ;\
|
||||
ln -sf Manual.html html/index.html;\
|
||||
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
||||
echo "############################################" ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
||||
@ -162,8 +160,6 @@ epub: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
|
||||
@(\
|
||||
. $(VENV)/bin/activate ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
||||
sphinx-build -E $(SPHINXEXTRA) -b epub -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) epub ;\
|
||||
touch $(RSTDIR)/Fortran.rst ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
||||
sphinx-build $(SPHINXEXTRA) -b epub -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) epub ;\
|
||||
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
||||
deactivate ;\
|
||||
)
|
||||
@ -183,8 +179,6 @@ pdf: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
|
||||
@(\
|
||||
. $(VENV)/bin/activate ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
||||
sphinx-build -E $(SPHINXEXTRA) -b latex -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) latex ;\
|
||||
touch $(RSTDIR)/Fortran.rst ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
||||
sphinx-build $(SPHINXEXTRA) -b latex -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) latex ;\
|
||||
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
||||
echo "############################################" ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
||||
rst_anchor_check src/*.rst ;\
|
||||
@ -256,6 +250,15 @@ link_check : $(VENV) html
|
||||
deactivate ;\
|
||||
)
|
||||
|
||||
upgrade: $(VENV)
|
||||
@(\
|
||||
. $(VENV)/bin/activate; \
|
||||
pip $(PIP_OPTIONS) install --upgrade pip; \
|
||||
pip $(PIP_OPTIONS) install --upgrade wheel; \
|
||||
pip $(PIP_OPTIONS) install --upgrade -r $(BUILDDIR)/utils/requirements.txt; \
|
||||
deactivate;\
|
||||
)
|
||||
|
||||
xmlgen : doxygen/xml/index.xml
|
||||
|
||||
doxygen/Doxyfile: doxygen/Doxyfile.in
|
||||
|
||||
@ -28,28 +28,6 @@ variable VERBOSE set to 1:
|
||||
|
||||
----------
|
||||
|
||||
.. _clang-tidy:
|
||||
|
||||
Enable static code analysis with clang-tidy (CMake only)
|
||||
--------------------------------------------------------
|
||||
|
||||
The `clang-tidy tool <https://clang.llvm.org/extra/clang-tidy/>`_ is a
|
||||
static code analysis tool to diagnose (and potentially fix) typical
|
||||
programming errors or coding style violations. It has a modular framework
|
||||
of tests that can be adjusted to help identifying problems before they
|
||||
become bugs and also assist in modernizing large code bases (like LAMMPS).
|
||||
It can be enabled for all C++ code with the following CMake flag
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D ENABLE_CLANG_TIDY=value # value = no (default) or yes
|
||||
|
||||
With this flag enabled all source files will be processed twice, first to
|
||||
be compiled and then to be analyzed. Please note that the analysis can be
|
||||
significantly more time-consuming than the compilation itself.
|
||||
|
||||
----------
|
||||
|
||||
.. _iwyu_processing:
|
||||
|
||||
Report missing and unneeded '#include' statements (CMake only)
|
||||
@ -523,7 +501,7 @@ to do this to install it via pip:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install git+https://github.com/gcovr/gcovr.git
|
||||
python3 -m pip install gcovr
|
||||
|
||||
After post-processing with ``gen_coverage_html`` the results are in
|
||||
a folder ``coverage_html`` and can be viewed with a web browser.
|
||||
|
||||
@ -35,6 +35,7 @@ This is the list of packages that may require additional steps.
|
||||
:columns: 6
|
||||
|
||||
* :ref:`ADIOS <adios>`
|
||||
* :ref:`APIP <apip>`
|
||||
* :ref:`ATC <atc>`
|
||||
* :ref:`AWPMD <awpmd>`
|
||||
* :ref:`COLVARS <colvar>`
|
||||
@ -614,6 +615,9 @@ They must be specified in uppercase.
|
||||
* - ZEN4
|
||||
- HOST
|
||||
- AMD Zen4 architecture
|
||||
* - ZEN5
|
||||
- HOST
|
||||
- AMD Zen5 architecture
|
||||
* - RISCV_SG2042
|
||||
- HOST
|
||||
- SG2042 (RISC-V) CPUs
|
||||
@ -668,6 +672,12 @@ They must be specified in uppercase.
|
||||
* - HOPPER90
|
||||
- GPU
|
||||
- NVIDIA Hopper generation CC 9.0
|
||||
* - BLACKWELL100
|
||||
- GPU
|
||||
- NVIDIA Blackwell generation CC 10.0
|
||||
* - BLACKWELL120
|
||||
- GPU
|
||||
- NVIDIA Blackwell generation CC 12.0
|
||||
* - AMD_GFX906
|
||||
- GPU
|
||||
- AMD GPU MI50/60
|
||||
@ -716,8 +726,11 @@ They must be specified in uppercase.
|
||||
* - INTEL_PVC
|
||||
- GPU
|
||||
- Intel GPU Ponte Vecchio
|
||||
* - INTEL_DG2
|
||||
- GPU
|
||||
- Intel GPU DG2
|
||||
|
||||
This list was last updated for version 4.6.0 of the Kokkos library.
|
||||
This list was last updated for version 4.6.2 of the Kokkos library.
|
||||
|
||||
.. tabs::
|
||||
|
||||
@ -1272,6 +1285,34 @@ systems.
|
||||
|
||||
----------
|
||||
|
||||
.. _apip:
|
||||
|
||||
APIP package
|
||||
-----------------------------
|
||||
|
||||
The APIP package depends on the library of the
|
||||
:ref:`ML-PACE <ml-pace>` package.
|
||||
The code for the library can be found
|
||||
at: `https://github.com/ICAMS/lammps-user-pace/ <https://github.com/ICAMS/lammps-user-pace/>`_
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: CMake build
|
||||
|
||||
No additional settings are needed besides ``-D PKG_APIP=yes``
|
||||
and ``-D PKG_ML-PACE=yes``.
|
||||
One can use a local version of the ML-PACE library instead of
|
||||
automatically downloading the library as described :ref:`here <ml-pace>`.
|
||||
|
||||
|
||||
.. tab:: Traditional make
|
||||
|
||||
You need to install the ML-PACE package *first* and follow
|
||||
the instructions :ref:`here <ml-pace>` before installing
|
||||
the APIP package.
|
||||
|
||||
----------
|
||||
|
||||
.. _atc:
|
||||
|
||||
ATC package
|
||||
|
||||
@ -57,6 +57,8 @@ Python interpreter version 3.8 or later, the ``doxygen`` tools and
|
||||
internet access to download additional files and tools are required.
|
||||
This download is usually only required once or after the documentation
|
||||
folder is returned to a pristine state with ``make clean-all``.
|
||||
You can also upgrade those packages to their latest available versions
|
||||
with ``make upgrade``.
|
||||
|
||||
For the documentation build a python virtual environment is set up in
|
||||
the folder ``doc/docenv`` and various python packages are installed into
|
||||
@ -82,6 +84,7 @@ folder. The following ``make`` commands are available:
|
||||
|
||||
make clean # remove intermediate RST files created by HTML build
|
||||
make clean-all # remove entire build folder and any cached data
|
||||
make upgrade # upgrade the python packages in the virtual environment
|
||||
|
||||
make anchor_check # check for duplicate anchor labels
|
||||
make style_check # check for complete and consistent style lists
|
||||
|
||||
@ -22,6 +22,7 @@ OPT.
|
||||
* :doc:`append/atoms <fix_append_atoms>`
|
||||
* :doc:`atc <fix_atc>`
|
||||
* :doc:`atom/swap <fix_atom_swap>`
|
||||
* :doc:`atom_weight/apip <fix_atom_weight_apip>`
|
||||
* :doc:`ave/atom <fix_ave_atom>`
|
||||
* :doc:`ave/chunk <fix_ave_chunk>`
|
||||
* :doc:`ave/correlate <fix_ave_correlate>`
|
||||
@ -65,7 +66,7 @@ OPT.
|
||||
* :doc:`electrode/conp (i) <fix_electrode>`
|
||||
* :doc:`electrode/conq (i) <fix_electrode>`
|
||||
* :doc:`electrode/thermo (i) <fix_electrode>`
|
||||
* :doc:`electron/stopping <fix_electron_stopping>`
|
||||
* :doc:`electron/stopping (k) <fix_electron_stopping>`
|
||||
* :doc:`electron/stopping/fit <fix_electron_stopping>`
|
||||
* :doc:`enforce2d (k) <fix_enforce2d>`
|
||||
* :doc:`eos/cv <fix_eos_cv>`
|
||||
@ -86,11 +87,14 @@ OPT.
|
||||
* :doc:`halt <fix_halt>`
|
||||
* :doc:`heat <fix_heat>`
|
||||
* :doc:`heat/flow <fix_heat_flow>`
|
||||
* :doc:`hmc <fix_hmc>`
|
||||
* :doc:`hyper/global <fix_hyper_global>`
|
||||
* :doc:`hyper/local <fix_hyper_local>`
|
||||
* :doc:`imd <fix_imd>`
|
||||
* :doc:`indent <fix_indent>`
|
||||
* :doc:`ipi <fix_ipi>`
|
||||
* :doc:`lambda/apip <fix_lambda_apip>`
|
||||
* :doc:`lambda_thermostat/apip <fix_lambda_thermostat_apip>`
|
||||
* :doc:`langevin (k) <fix_langevin>`
|
||||
* :doc:`langevin/drude <fix_langevin_drude>`
|
||||
* :doc:`langevin/eff <fix_langevin_eff>`
|
||||
@ -113,6 +117,7 @@ OPT.
|
||||
* :doc:`mvv/tdpd <fix_mvv_dpd>`
|
||||
* :doc:`neb <fix_neb>`
|
||||
* :doc:`neb/spin <fix_neb_spin>`
|
||||
* :doc:`neighbor/swap <fix_neighbor_swap>`
|
||||
* :doc:`nonaffine/displacement <fix_nonaffine_displacement>`
|
||||
* :doc:`nph (ko) <fix_nh>`
|
||||
* :doc:`nph/asphere (o) <fix_nph_asphere>`
|
||||
|
||||
@ -96,7 +96,9 @@ OPT.
|
||||
* :doc:`eam/cd <pair_eam>`
|
||||
* :doc:`eam/cd/old <pair_eam>`
|
||||
* :doc:`eam/fs (gikot) <pair_eam>`
|
||||
* :doc:`eam/fs/apip <pair_eam_apip>`
|
||||
* :doc:`eam/he <pair_eam>`
|
||||
* :doc:`eam/apip <pair_eam_apip>`
|
||||
* :doc:`edip (o) <pair_edip>`
|
||||
* :doc:`edip/multi <pair_edip>`
|
||||
* :doc:`edpd (g) <pair_mesodpd>`
|
||||
@ -124,6 +126,9 @@ OPT.
|
||||
* :doc:`ilp/tmd (t) <pair_ilp_tmd>`
|
||||
* :doc:`kolmogorov/crespi/full <pair_kolmogorov_crespi_full>`
|
||||
* :doc:`kolmogorov/crespi/z <pair_kolmogorov_crespi_z>`
|
||||
* :doc:`lambda/input/apip <pair_lambda_input_apip>`
|
||||
* :doc:`lambda/input/csp/apip <pair_lambda_input_apip>`
|
||||
* :doc:`lambda/zone/apip <pair_lambda_zone_apip>`
|
||||
* :doc:`lcbop <pair_lcbop>`
|
||||
* :doc:`lebedeva/z <pair_lebedeva_z>`
|
||||
* :doc:`lennard/mdf <pair_mdf>`
|
||||
@ -237,6 +242,9 @@ OPT.
|
||||
* :doc:`oxrna2/coaxstk <pair_oxrna2>`
|
||||
* :doc:`pace (k) <pair_pace>`
|
||||
* :doc:`pace/extrapolation (k) <pair_pace>`
|
||||
* :doc:`pace/apip <pair_pace_apip>`
|
||||
* :doc:`pace/fast/apip <pair_pace_apip>`
|
||||
* :doc:`pace/precise/apip <pair_pace_apip>`
|
||||
* :doc:`pedone (o) <pair_pedone>`
|
||||
* :doc:`pod (k) <pair_pod>`
|
||||
* :doc:`peri/eps <pair_peri>`
|
||||
|
||||
@ -30,6 +30,7 @@ Available topics in mostly chronological order are:
|
||||
- `Use Output::get_dump_by_id() instead of Output::find_dump()`_
|
||||
- `Refactored grid communication using Grid3d/Grid2d classes instead of GridComm`_
|
||||
- `FLERR as first argument to minimum image functions in Domain class`_
|
||||
- `Use utils::logmesg() instead of error->warning()`_
|
||||
|
||||
----
|
||||
|
||||
@ -655,3 +656,27 @@ New:
|
||||
double r2 = sqrt(delx2 * delx2 + dely2 * dely2 + delz2 * delz2);
|
||||
|
||||
This change is **required** or else the code will not compile.
|
||||
|
||||
Use utils::logmesg() instead of error->warning()
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. versionchanged:: TBD
|
||||
|
||||
The ``Error::message()`` method has been removed since its functionality
|
||||
has been superseded by the :cpp:func:`utils::logmesg` function.
|
||||
|
||||
Old:
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
if (comm->me == 0) {
|
||||
error->message(FLERR, "INFO: About to read data file: {}", filename);
|
||||
}
|
||||
|
||||
New:
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
if (comm->me == 0) utils::logmesg(lmp, "INFO: About to read data file: {}\n", filename);
|
||||
|
||||
This change is **required** or else the code will not compile.
|
||||
|
||||
@ -1,124 +1,149 @@
|
||||
Common problems
|
||||
===============
|
||||
Common issues that are often regarded as bugs
|
||||
=============================================
|
||||
|
||||
If two LAMMPS runs do not produce the exact same answer on different
|
||||
machines or different numbers of processors, this is typically not a
|
||||
bug. In theory you should get identical answers on any number of
|
||||
processors and on any machine. In practice, numerical round-off can
|
||||
cause slight differences and eventual divergence of molecular dynamics
|
||||
phase space trajectories within a few 100s or few 1000s of timesteps.
|
||||
However, the statistical properties of the two runs (e.g. average
|
||||
energy or temperature) should still be the same.
|
||||
The list below are some random notes on behavior of LAMMPS that is
|
||||
sometimes unexpected or even considered a bug. Most of the time, these
|
||||
are just issues of understanding how LAMMPS is implemented and
|
||||
parallelized. Please also have a look at the :doc:`Error details
|
||||
discussions page <Errors_details>` that contains recommendations for
|
||||
tracking down issues and explanations for error messages that may
|
||||
sometimes be confusing or need additional explanations.
|
||||
|
||||
If the :doc:`velocity <velocity>` command is used to set initial atom
|
||||
velocities, a particular atom can be assigned a different velocity
|
||||
when the problem is run on a different number of processors or on
|
||||
different machines. If this happens, the phase space trajectories of
|
||||
the two simulations will rapidly diverge. See the discussion of the
|
||||
*loop* option in the :doc:`velocity <velocity>` command for details and
|
||||
options that avoid this issue.
|
||||
- A LAMMPS simulation typically has two stages, 1) issuing commands
|
||||
and 2) run or minimize. Most LAMMPS errors are detected in stage 1),
|
||||
others at the beginning of stage 2), and finally others like a bond
|
||||
stretching too far may or lost atoms or bonds may not occur until the
|
||||
middle of a run.
|
||||
|
||||
Similarly, the :doc:`create_atoms <create_atoms>` command generates a
|
||||
lattice of atoms. For the same physical system, the ordering and
|
||||
numbering of atoms by atom ID may be different depending on the number
|
||||
of processors.
|
||||
- If two LAMMPS runs do not produce the exact same answer on different
|
||||
machines or different numbers of processors, this is typically not a
|
||||
bug. In theory you should get identical answers on any number of
|
||||
processors and on any machine. In practice, numerical round-off can
|
||||
cause slight differences and eventual divergence of molecular dynamics
|
||||
phase space trajectories within a few 100s or few 1000s of timesteps.
|
||||
This can be triggered by different ordering of atoms due to different
|
||||
domain decompositions, but also through different CPU architectures,
|
||||
different operating systems, different compilers or compiler versions,
|
||||
different compiler optimization levels, different FFT libraries.
|
||||
However, the statistical properties of the two runs (e.g. average
|
||||
energy or temperature) should still be the same.
|
||||
|
||||
Some commands use random number generators which may be setup to
|
||||
produce different random number streams on each processor and hence
|
||||
will produce different effects when run on different numbers of
|
||||
processors. A commonly-used example is the :doc:`fix langevin <fix_langevin>` command for thermostatting.
|
||||
- If the :doc:`velocity <velocity>` command is used to set initial atom
|
||||
velocities, a particular atom can be assigned a different velocity
|
||||
when the problem is run on a different number of processors or on
|
||||
different machines. If this happens, the phase space trajectories of
|
||||
the two simulations will rapidly diverge. See the discussion of the
|
||||
*loop* option in the :doc:`velocity <velocity>` command for details
|
||||
and options that avoid this issue.
|
||||
|
||||
A LAMMPS simulation typically has two stages, setup and run. Most
|
||||
LAMMPS errors are detected at setup time; others like a bond
|
||||
stretching too far may not occur until the middle of a run.
|
||||
- Similarly, the :doc:`create_atoms <create_atoms>` command generates a
|
||||
lattice of atoms. For the same physical system, the ordering and
|
||||
numbering of atoms by atom ID may be different depending on the number
|
||||
of processors.
|
||||
|
||||
LAMMPS tries to flag errors and print informative error messages so
|
||||
you can fix the problem. For most errors it will also print the last
|
||||
input script command that it was processing. Of course, LAMMPS cannot
|
||||
figure out your physics or numerical mistakes, like choosing too big a
|
||||
timestep, specifying erroneous force field coefficients, or putting 2
|
||||
atoms on top of each other! If you run into errors that LAMMPS
|
||||
does not catch that you think it should flag, please send an email to
|
||||
the `developers <https://www.lammps.org/authors.html>`_ or create an new
|
||||
topic on the dedicated `MatSci forum section <https://matsci.org/lammps/>`_.
|
||||
- Some commands use random number generators which may be setup to
|
||||
produce different random number streams on each processor and hence
|
||||
will produce different effects when run on different numbers of
|
||||
processors. A commonly-used example is the :doc:`fix langevin
|
||||
<fix_langevin>` command for thermostatting.
|
||||
|
||||
If you get an error message about an invalid command in your input
|
||||
script, you can determine what command is causing the problem by
|
||||
looking in the log.lammps file or using the :doc:`echo command <echo>`
|
||||
to see it on the screen. If you get an error like "Invalid ...
|
||||
style", with ... being fix, compute, pair, etc, it means that you
|
||||
mistyped the style name or that the command is part of an optional
|
||||
package which was not compiled into your executable. The list of
|
||||
available styles in your executable can be listed by using
|
||||
:doc:`the -h command-line switch <Run_options>`. The installation and
|
||||
compilation of optional packages is explained on the
|
||||
:doc:`Build packages <Build_package>` doc page.
|
||||
- LAMMPS tries to flag errors and print informative error messages so
|
||||
you can fix the problem. For most errors it will also print the last
|
||||
input script command that it was processing or even point to the
|
||||
keyword that is causing troubles. Of course, LAMMPS cannot figure out
|
||||
your physics or numerical mistakes, like choosing too big a timestep,
|
||||
specifying erroneous force field coefficients, or putting 2 atoms on
|
||||
top of each other! Also, LAMMPS does not know what you *intend* to
|
||||
do, but very strictly applies the syntax as described in the
|
||||
documentation. If you run into errors that LAMMPS does not catch that
|
||||
you think it should flag, please send an email to the `developers
|
||||
<https://www.lammps.org/authors.html>`_ or create an new topic on the
|
||||
dedicated `MatSci forum section <https://matsci.org/lammps/>`_.
|
||||
|
||||
For a given command, LAMMPS expects certain arguments in a specified
|
||||
order. If you mess this up, LAMMPS will often flag the error, but it
|
||||
may also simply read a bogus argument and assign a value that is
|
||||
valid, but not what you wanted. E.g. trying to read the string "abc"
|
||||
as an integer value of 0. Careful reading of the associated doc page
|
||||
for the command should allow you to fix these problems. In most cases,
|
||||
where LAMMPS expects to read a number, either integer or floating point,
|
||||
it performs a stringent test on whether the provided input actually
|
||||
is an integer or floating-point number, respectively, and reject the
|
||||
input with an error message (for instance, when an integer is required,
|
||||
but a floating-point number 1.0 is provided):
|
||||
- If you get an error message about an invalid command in your input
|
||||
script, you can determine what command is causing the problem by
|
||||
looking in the log.lammps file or using the :doc:`echo command <echo>`
|
||||
to see it on the screen. If you get an error like "Invalid ...
|
||||
style", with ... being fix, compute, pair, etc, it means that you
|
||||
mistyped the style name or that the command is part of an optional
|
||||
package which was not compiled into your executable. The list of
|
||||
available styles in your executable can be listed by using
|
||||
:doc:`the -h command-line switch <Run_options>`. The installation and
|
||||
compilation of optional packages is explained on the :doc:`Build
|
||||
packages <Build_package>` doc page.
|
||||
|
||||
.. parsed-literal::
|
||||
- For a given command, LAMMPS expects certain arguments in a specified
|
||||
order. If you mess this up, LAMMPS will often flag the error, but it
|
||||
may also simply read a bogus argument and assign a value that is
|
||||
valid, but not what you wanted. E.g. trying to read the string "abc"
|
||||
as an integer value of 0. Careful reading of the associated doc page
|
||||
for the command should allow you to fix these problems. In most cases,
|
||||
where LAMMPS expects to read a number, either integer or floating
|
||||
point, it performs a stringent test on whether the provided input
|
||||
actually is an integer or floating-point number, respectively, and
|
||||
reject the input with an error message (for instance, when an integer
|
||||
is required, but a floating-point number 1.0 is provided):
|
||||
|
||||
ERROR: Expected integer parameter instead of '1.0' in input script or data file
|
||||
.. parsed-literal::
|
||||
|
||||
Some commands allow for using variable references in place of numeric
|
||||
constants so that the value can be evaluated and may change over the
|
||||
course of a run. This is typically done with the syntax *v_name* for a
|
||||
parameter, where name is the name of the variable. On the other hand,
|
||||
immediate variable expansion with the syntax ${name} is performed while
|
||||
reading the input and before parsing commands,
|
||||
ERROR: Expected integer parameter instead of '1.0' in input script or data file
|
||||
|
||||
.. note::
|
||||
- Some commands allow for using variable references in place of numeric
|
||||
constants so that the value can be evaluated and may change over the
|
||||
course of a run. This is typically done with the syntax *v_name* for
|
||||
a parameter, where name is the name of the variable. On the other
|
||||
hand, immediate variable expansion with the syntax ${name} is
|
||||
performed while reading the input and before parsing commands,
|
||||
|
||||
Using a variable reference (i.e. *v_name*) is only allowed if
|
||||
the documentation of the corresponding command explicitly says it is.
|
||||
Otherwise, you will receive an error message of this kind:
|
||||
.. note::
|
||||
|
||||
.. parsed-literal::
|
||||
Using a variable reference (i.e. *v_name*) is only allowed if
|
||||
the documentation of the corresponding command explicitly says it is.
|
||||
Otherwise, you will receive an error message of this kind:
|
||||
|
||||
ERROR: Expected floating point parameter instead of 'v_name' in input script or data file
|
||||
.. parsed-literal::
|
||||
|
||||
Generally, LAMMPS will print a message to the screen and logfile and
|
||||
exit gracefully when it encounters a fatal error. Sometimes it will
|
||||
print a WARNING to the screen and logfile and continue on; you can
|
||||
decide if the WARNING is important or not. A WARNING message that is
|
||||
generated in the middle of a run is only printed to the screen, not to
|
||||
the logfile, to avoid cluttering up thermodynamic output. If LAMMPS
|
||||
crashes or hangs without spitting out an error message first then it
|
||||
could be a bug (see :doc:`this section <Errors_bugs>`) or one of the following
|
||||
cases:
|
||||
ERROR: Expected floating point parameter instead of 'v_name' in input script or data file
|
||||
|
||||
LAMMPS runs in the available memory a processor allows to be
|
||||
allocated. Most reasonable MD runs are compute limited, not memory
|
||||
limited, so this should not be a bottleneck on most platforms. Almost
|
||||
all large memory allocations in the code are done via C-style malloc's
|
||||
which will generate an error message if you run out of memory.
|
||||
Smaller chunks of memory are allocated via C++ "new" statements. If
|
||||
you are unlucky you could run out of memory just when one of these
|
||||
small requests is made, in which case the code will crash or hang (in
|
||||
parallel), since LAMMPS does not trap on those errors.
|
||||
- Generally, LAMMPS will print a message to the screen and logfile and
|
||||
exit gracefully when it encounters a fatal error. When running in
|
||||
parallel this message may be stuck in an I/O buffer and LAMMPS will be
|
||||
terminated before that buffer is printed. In that case you can try
|
||||
adding the ``-nonblock`` or ``-nb`` command-line flag to turn off that
|
||||
buffering. Please note that this should not be used for production
|
||||
runs, since turning off buffering usually has a significant negative
|
||||
impact on performance (even worse than :doc:`thermo_modify flush yes
|
||||
<thermo_modify>`). Sometimes LAMMPS will print a WARNING to the
|
||||
screen and logfile and continue on; you can decide if the WARNING is
|
||||
important or not, but as a general rule do not ignore warnings that
|
||||
you not understand. A WARNING message that is generated in the middle
|
||||
of a run is only printed to the screen, not to the logfile, to avoid
|
||||
cluttering up thermodynamic output. If LAMMPS crashes or hangs
|
||||
without generating an error message first then it could be a bug
|
||||
(see :doc:`this section <Errors_bugs>`).
|
||||
|
||||
Illegal arithmetic can cause LAMMPS to run slow or crash. This is
|
||||
typically due to invalid physics and numerics that your simulation is
|
||||
computing. If you see wild thermodynamic values or NaN values in your
|
||||
LAMMPS output, something is wrong with your simulation. If you
|
||||
suspect this is happening, it is a good idea to print out
|
||||
thermodynamic info frequently (e.g. every timestep) via the
|
||||
:doc:`thermo <thermo>` so you can monitor what is happening.
|
||||
Visualizing the atom movement is also a good idea to ensure your model
|
||||
is behaving as you expect.
|
||||
- LAMMPS runs in the available memory a processor allows to be
|
||||
allocated. Most reasonable MD runs are compute limited, not memory
|
||||
limited, so this should not be a bottleneck on most platforms. Almost
|
||||
all large memory allocations in the code are done via C-style malloc's
|
||||
which will generate an error message if you run out of memory.
|
||||
Smaller chunks of memory are allocated via C++ "new" statements. If
|
||||
you are unlucky you could run out of memory just when one of these
|
||||
small requests is made, in which case the code will crash or hang (in
|
||||
parallel).
|
||||
|
||||
In parallel, one way LAMMPS can hang is due to how different MPI
|
||||
implementations handle buffering of messages. If the code hangs
|
||||
without an error message, it may be that you need to specify an MPI
|
||||
setting or two (usually via an environment variable) to enable
|
||||
buffering or boost the sizes of messages that can be buffered.
|
||||
- Illegal arithmetic can cause LAMMPS to run slow or crash. This is
|
||||
typically due to invalid physics and numerics that your simulation is
|
||||
computing. If you see wild thermodynamic values or NaN values in your
|
||||
LAMMPS output, something is wrong with your simulation. If you
|
||||
suspect this is happening, it is a good idea to print out
|
||||
thermodynamic info frequently (e.g. every timestep) via the
|
||||
:doc:`thermo <thermo>` so you can monitor what is happening.
|
||||
Visualizing the atom movement is also a good idea to ensure your model
|
||||
is behaving as you expect.
|
||||
|
||||
- When running in parallel with MPI, one way LAMMPS can hang is because
|
||||
LAMMPS has come across an error condition, but only on one or a few
|
||||
MPI processes and not all of them. LAMMPS has two different "stop
|
||||
with an error message" functions and the correct one has to be called
|
||||
or else it will hang.
|
||||
|
||||
@ -51,8 +51,11 @@ Parallel versus serial
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Issues where something is "lost" or "missing" often exhibit that issue
|
||||
only when running in parallel. That doesn't mean there is no problem,
|
||||
only the symptoms are not triggering an error quickly. Correspondingly,
|
||||
*only* when running in parallel. That doesn't mean there is no problem
|
||||
when running in serial, only the symptoms are not triggering an error.
|
||||
This may be because there is no domain decomposition with just one
|
||||
processor and thus all atoms are accessible, or it may be because the
|
||||
problem will manifest faster with smaller subdomains. Correspondingly,
|
||||
errors may be triggered faster with more processors and thus smaller
|
||||
sub-domains.
|
||||
|
||||
@ -244,6 +247,25 @@ equal style (or similar) variables can only be expanded before the box
|
||||
is defined if they do not reference anything that cannot be defined
|
||||
before the box (e.g. a compute or fix reference or a thermo keyword).
|
||||
|
||||
.. _hint13:
|
||||
|
||||
Illegal ... command
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
These are a catchall error messages that used to be used a lot in LAMMPS
|
||||
(also programmers are sometimes lazy). They usually include the name of
|
||||
the source file and the line where the error happened. This can be used
|
||||
to track down what caused the error (most often some form of syntax error)
|
||||
by looking at the source code. However, this has two disadvantages: 1. one
|
||||
has to check the source file from the exact same LAMMPS version, or else
|
||||
the line number would be different or the core may have been rewritten and
|
||||
that specific error does not exist anymore.
|
||||
|
||||
The LAMMPS developers are committed to replace these too generic error
|
||||
messages with more descriptive errors, e.g. listing *which* keyword was
|
||||
causing the error, so that it will be much simpler to look up the
|
||||
correct syntax in the manual (and without referring to the source code).
|
||||
|
||||
------
|
||||
|
||||
.. _err0001:
|
||||
@ -1029,13 +1051,15 @@ Even though the LAMMPS error message recommends to increase the "one"
|
||||
parameter, this may not always be the correct solution. The neighbor
|
||||
list overflow can also be a symptom for some other error that cannot be
|
||||
easily detected. For example, a frequent reason for an (unexpected)
|
||||
high density are incorrect box boundaries (since LAMMPS wraps atoms back
|
||||
high density are incorrect box dimensions (since LAMMPS wraps atoms back
|
||||
into the principal box with periodic boundaries) or coordinates provided
|
||||
as fractional coordinates. In both cases, LAMMPS cannot easily know
|
||||
whether the input geometry has such a high density (and thus requiring
|
||||
more neighbor list storage per atom) by intention. Rather than blindly
|
||||
increasing the "one" parameter, it is thus worth checking if this is
|
||||
justified by the combination of density and cutoff.
|
||||
as fractional coordinates (LAMMPS does not support this for data files).
|
||||
In both cases, LAMMPS cannot easily know whether the input geometry has
|
||||
such a high density (and thus requiring more neighbor list storage per
|
||||
atom) on purpose or by accident. Rather than blindly increasing the
|
||||
"one" parameter, it is thus worth checking if this is justified by the
|
||||
combination of density and cutoff. This is particularly recommended
|
||||
when using some tool(s) to convert input or data files.
|
||||
|
||||
When boosting (= increasing) the "one" parameter, it is recommended to
|
||||
also increase the value for the "page" parameter to maintain the ratio
|
||||
|
||||
@ -2099,7 +2099,7 @@ Procedures Bound to the :f:type:`lammps` Derived Type
|
||||
|
||||
--------
|
||||
|
||||
.. f:subroutine:: create_atoms([id,] type, x, [v,] [image,] [bexpand])
|
||||
.. f:function:: create_atoms([id,] type, x, [v,] [image,] [bexpand])
|
||||
|
||||
This method calls :cpp:func:`lammps_create_atoms` to create additional atoms
|
||||
from a given list of coordinates and a list of atom types. Additionally,
|
||||
@ -2128,6 +2128,8 @@ Procedures Bound to the :f:type:`lammps` Derived Type
|
||||
will be created, not dropped, and the box dimensions will be extended.
|
||||
Default is ``.FALSE.``
|
||||
:otype bexpand: logical,optional
|
||||
:r atoms: number of created atoms
|
||||
:rtype atoms: integer(c_int)
|
||||
:to: :cpp:func:`lammps_create_atoms`
|
||||
|
||||
.. note::
|
||||
@ -2152,6 +2154,18 @@ Procedures Bound to the :f:type:`lammps` Derived Type
|
||||
|
||||
--------
|
||||
|
||||
.. f:subroutine:: create_molecule(id, jsonstr)
|
||||
|
||||
Add molecule template from string with JSON data
|
||||
|
||||
.. versionadded:: TBD
|
||||
|
||||
:p character(len=\*) id: desired molecule-ID
|
||||
:p character(len=\*) jsonstr: string with JSON data defining the molecule template
|
||||
:to: :cpp:func:`lammps_create_molecule`
|
||||
|
||||
--------
|
||||
|
||||
.. f:function:: find_pair_neighlist(style[, exact][, nsub][, reqid])
|
||||
|
||||
Find index of a neighbor list requested by a pair style.
|
||||
|
||||
@ -93,6 +93,7 @@ Packages howto
|
||||
Howto_manifold
|
||||
Howto_rheo
|
||||
Howto_spins
|
||||
Howto_apip
|
||||
|
||||
Tutorials howto
|
||||
===============
|
||||
|
||||
225
doc/src/Howto_apip.rst
Normal file
@ -0,0 +1,225 @@
|
||||
Adaptive-precision interatomic potentials (APIP)
|
||||
================================================
|
||||
|
||||
The :ref:`PKG-APIP <PKG-APIP>` enables use of adaptive-precision potentials
|
||||
as described in :ref:`(Immel) <Immel2025_1>`.
|
||||
In the context of this package, precision refers to the accuracy of an interatomic
|
||||
potential.
|
||||
|
||||
Modern machine-learning (ML) potentials translate the accuracy of DFT
|
||||
simulations into MD simulations, i.e., ML potentials are more accurate
|
||||
compared to traditional empirical potentials.
|
||||
However, this accuracy comes at a cost: there is a considerable performance
|
||||
gap between the evaluation of classical and ML potentials, e.g., the force
|
||||
calculation of a classical EAM potential is 100-1000 times faster compared
|
||||
to the ML-based ACE method.
|
||||
The evaluation time difference results in a conflict between large time and
|
||||
length scales on the one hand and accuracy on the other.
|
||||
This conflict is resolved by an APIP model for simulations, in which the highest precision
|
||||
is required only locally but not globally.
|
||||
|
||||
An APIP model uses a precise but
|
||||
expensive ML potential only for a subset of atoms, while a fast
|
||||
potential is used for the remaining atoms.
|
||||
Whether the precise or the fast potential is used is determined
|
||||
by a continuous switching parameter :math:`\lambda_i` that can be defined for each
|
||||
atom :math:`i`.
|
||||
The switching parameter can be adjusted dynamically during a simulation or
|
||||
kept constant as explained below.
|
||||
|
||||
The potential energy :math:`E_i` of an atom :math:`i` described by an
|
||||
adaptive-precision
|
||||
interatomic potential is given by :ref:`(Immel) <Immel2025_1>`
|
||||
|
||||
.. math::
|
||||
|
||||
E_i = \lambda_i E_i^\text{(fast)} + (1-\lambda_i) E_i^\text{(precise)},
|
||||
|
||||
whereas :math:`E_i^\text{(fast)}` is the potential energy of atom :math:`i`
|
||||
according to a fast interatomic potential,
|
||||
:math:`E_i^\text{(precise)}` is the potential energy according to a precise
|
||||
interatomic potential and :math:`\lambda_i\in[0,1]` is the
|
||||
switching parameter that decides how the potential energies are weighted.
|
||||
|
||||
Adaptive-precision saves computation time when the computation of the
|
||||
precise potential is not required for many atoms, i.e., when
|
||||
:math:`\lambda_i=1` applies for many atoms.
|
||||
|
||||
The currently implemented potentials are:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Fast potential
|
||||
- Precise potential
|
||||
* - :doc:`ACE <pair_pace_apip>`
|
||||
- :doc:`ACE <pair_pace_apip>`
|
||||
* - :doc:`EAM <pair_eam_apip>`
|
||||
-
|
||||
|
||||
In theory, any short-range potential can be used for an adaptive-precision
|
||||
interatomic potential. How to implement a new (fast or precise)
|
||||
adaptive-precision
|
||||
potential is explained in :ref:`here <implementing_new_apip_styles>`.
|
||||
|
||||
The switching parameter :math:`\lambda_i` that combines the two potentials
|
||||
can be dynamically calculated during a
|
||||
simulation.
|
||||
Alternatively, one can set a constant switching parameter before the start
|
||||
of a simulation.
|
||||
To run a simulation with an adaptive-precision potential, one needs the
|
||||
following components:
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: dynamic switching parameter
|
||||
|
||||
#. :doc:`atom_style apip <atom_style>` so that the switching parameter :math:`\lambda_i` can be stored.
|
||||
#. A fast potential: :doc:`eam/apip <pair_eam_apip>` or :doc:`pace/fast/apip <pair_pace_apip>`.
|
||||
#. A precise potential: :doc:`pace/precise/apip <pair_pace_apip>`.
|
||||
#. :doc:`pair_style lambda/input/apip <pair_lambda_input_apip>` to calculate :math:`\lambda_i^\text{input}`, from which :math:`\lambda_i` is calculated.
|
||||
#. :doc:`fix lambda/apip <fix_lambda_apip>` to calculate the switching parameter :math:`\lambda_i`.
|
||||
#. :doc:`pair_style lambda/zone/apip <pair_lambda_zone_apip>` to calculate the spatial transition zone of the switching parameter.
|
||||
#. :doc:`pair_style hybrid/overlay <pair_hybrid>` to combine the previously mentioned pair_styles.
|
||||
#. :doc:`fix lambda_thermostat/apip <fix_lambda_thermostat_apip>` to conserve the energy when switching parameters change.
|
||||
#. :doc:`fix atom_weight/apip <fix_atom_weight_apip>` to approximate the load caused by every atom, as the computations of the pair_styles are only required for a subset of atoms.
|
||||
#. :doc:`fix balance <fix_balance>` to perform dynamic load balancing with the calculated load.
|
||||
|
||||
.. tab:: constant switching parameter
|
||||
|
||||
#. :doc:`atom_style apip <atom_style>` so that the switching parameter :math:`\lambda_i` can be stored.
|
||||
#. A fast potential: :doc:`eam/apip <pair_eam_apip>` or :doc:`pace/fast/apip <pair_pace_apip>`.
|
||||
#. A precise potential: :doc:`pace/precise/apip <pair_pace_apip>`.
|
||||
#. :doc:`set <set>` command to set the switching parameter :math:`\lambda_i`.
|
||||
#. :doc:`pair_style hybrid/overlay <pair_hybrid>` to combine the previously mentioned pair_styles.
|
||||
#. :doc:`fix atom_weight/apip <fix_atom_weight_apip>` to approximate the load caused by every atom, as the computations of the pair_styles are only required for a subset of atoms.
|
||||
#. :doc:`fix balance <fix_balance>` to perform dynamic load balancing with the calculated load.
|
||||
|
||||
----------
|
||||
|
||||
Example
|
||||
"""""""
|
||||
.. note::
|
||||
|
||||
How to select the values of the parameters of an adaptive-precision
|
||||
interatomic potential is discussed in detail in :ref:`(Immel) <Immel2025_1>`.
|
||||
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: dynamic switching parameter
|
||||
|
||||
Lines like these would appear in the input script:
|
||||
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
atom_style apip
|
||||
comm_style tiled
|
||||
|
||||
pair_style hybrid/overlay eam/fs/apip pace/precise/apip lambda/input/csp/apip fcc cutoff 5.0 lambda/zone/apip 12.0
|
||||
pair_coeff * * eam/fs/apip Cu.eam.fs Cu
|
||||
pair_coeff * * pace/precise/apip Cu.yace Cu
|
||||
pair_coeff * * lambda/input/csp/apip
|
||||
pair_coeff * * lambda/zone/apip
|
||||
|
||||
fix 2 all lambda/apip 2.5 3.0 time_averaged_zone 4.0 12.0 110 110 min_delta_lambda 0.01
|
||||
fix 3 all lambda_thermostat/apip N_rescaling 200
|
||||
fix 4 all atom_weight/apip 100 eam ace lambda/input lambda/zone all
|
||||
|
||||
variable myweight atom f_4
|
||||
|
||||
fix 5 all balance 100 1.1 rcb weight var myweight
|
||||
|
||||
First, the :doc:`atom_style apip <atom_style>` and the communication style are set.
|
||||
|
||||
.. note::
|
||||
Note, that :doc:`comm_style <comm_style>` *tiled* is required for the style *rcb* of
|
||||
:doc:`fix balance <fix_balance>`, but not for APIP.
|
||||
However, the flexibility offered by the balancing style *rcb*, compared to the
|
||||
balancing style *shift*, is advantageous for APIP.
|
||||
|
||||
An adaptive-precision EAM-ACE potential, for which the switching parameter
|
||||
:math:`\lambda` is calculated from the CSP, is defined via
|
||||
:doc:`pair_style hybrid/overlay <pair_hybrid>`.
|
||||
The fixes ensure that the switching parameter is calculated, the energy conserved,
|
||||
the weight for the load balancing calculated and the load-balancing itself is done.
|
||||
|
||||
.. tab:: constant switching parameter
|
||||
|
||||
Lines like these would appear in the input script:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
atom_style apip
|
||||
comm_style tiled
|
||||
|
||||
pair_style hybrid/overlay eam/fs/apip pace/precise/apip
|
||||
pair_coeff * * eam/fs/apip Cu.eam.fs Cu
|
||||
pair_coeff * * pace/precise/apip Cu.yace Cu
|
||||
|
||||
# calculate lambda somehow
|
||||
variable lambda atom ...
|
||||
set group all apip/lambda v_lambda
|
||||
|
||||
fix 4 all atom_weight/apip 100 eam ace lambda/input lambda/zone all
|
||||
|
||||
variable myweight atom f_4
|
||||
|
||||
fix 5 all balance 100 1.1 rcb weight var myweight
|
||||
|
||||
First, the :doc:`atom_style apip <atom_style>` and the communication style are set.
|
||||
|
||||
.. note::
|
||||
Note, that :doc:`comm_style <comm_style>` *tiled* is required for the style *rcb* of
|
||||
:doc:`fix balance <fix_balance>`, but not for APIP.
|
||||
However, the flexibility offered by the balancing style *rcb*, compared to the
|
||||
balancing style *shift*, is advantageous for APIP.
|
||||
|
||||
An adaptive-precision EAM-ACE potential is defined via
|
||||
:doc:`pair_style hybrid/overlay <pair_hybrid>`.
|
||||
The switching parameter :math:`\lambda_i` of the adaptive-precision
|
||||
EAM-ACE potential is set via the :doc:`set command <set>`.
|
||||
The parameter is not updated during the simulation.
|
||||
Therefore, the potential is conservative.
|
||||
The fixes ensure that the weight for the load balancing is calculated
|
||||
and the load-balancing itself is done.
|
||||
|
||||
----------
|
||||
|
||||
.. _implementing_new_apip_styles:
|
||||
|
||||
Implementing new APIP pair styles
|
||||
"""""""""""""""""""""""""""""""""
|
||||
|
||||
One can introduce adaptive-precision to an existing pair style by modifying
|
||||
the original pair style.
|
||||
One should calculate the force
|
||||
:math:`F_i = - \nabla_i \sum_j E_j^\text{original}` for a fast potential or
|
||||
:math:`F_i = - (1-\nabla_i) \sum_j E_j^\text{original}` for a precise
|
||||
potential from the original potential
|
||||
energy :math:`E_j^\text{original}` to see where the switching parameter
|
||||
:math:`\lambda_i` needs to be introduced in the force calculation.
|
||||
The switching parameter :math:`\lambda_i` is known for all atoms :math:`i`
|
||||
in force calculation routine.
|
||||
One needs to introduce an abortion criterion based on :math:`\lambda_i` to
|
||||
ensure that all not required calculations are skipped and compute time can
|
||||
be saved.
|
||||
Furthermore, one needs to provide the number of calculations and measure the
|
||||
computation time.
|
||||
Communication within the force calculation needs to be prevented to allow
|
||||
effective load-balancing.
|
||||
With communication, the load balancer cannot balance few calculations of the
|
||||
precise potential on one processor with many computations of the fast
|
||||
potential on another processor.
|
||||
|
||||
All changes in the pair_style pace/apip compared to the pair_style pace
|
||||
are annotated and commented.
|
||||
Thus, the pair_style pace/apip can serve as an example for the implementation
|
||||
of new adaptive-precision potentials.
|
||||
|
||||
----------
|
||||
|
||||
.. _Immel2025_1:
|
||||
|
||||
**(Immel)** Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025)
|
||||
@ -1,10 +1,15 @@
|
||||
Using LAMMPS-GUI
|
||||
================
|
||||
|
||||
.. image:: JPG/lammps-gui-banner.png
|
||||
:align: center
|
||||
:scale: 75%
|
||||
|
||||
LAMMPS-GUI is a graphical text editor programmed using the `Qt Framework
|
||||
<https://www.qt.io/>`_ and customized for editing LAMMPS input files. It
|
||||
is linked to the :ref:`LAMMPS library <lammps_c_api>` and thus can run
|
||||
LAMMPS directly using the contents of the editor's text buffer as input.
|
||||
<https://www.qt.io/>`_ and customized for editing and running LAMMPS
|
||||
input files. It is linked to the :ref:`LAMMPS library <lammps_c_api>`
|
||||
and thus can run LAMMPS directly using the contents of the editor's text
|
||||
buffer as input and without having to launch the LAMMPS executable.
|
||||
|
||||
It *differs* from other known interfaces to LAMMPS in that it can
|
||||
retrieve and display information from LAMMPS *while it is running*,
|
||||
@ -13,7 +18,7 @@ display visualizations created with the :doc:`dump image command
|
||||
LAMMPS commands and styles, and directly integrates with a collection
|
||||
of LAMMPS tutorials (:ref:`Gravelle1 <Gravelle1>`).
|
||||
|
||||
This document describes **LAMMPS-GUI version 1.6**.
|
||||
This document describes **LAMMPS-GUI version 1.7**.
|
||||
|
||||
-----
|
||||
|
||||
@ -21,17 +26,20 @@ This document describes **LAMMPS-GUI version 1.6**.
|
||||
|
||||
----
|
||||
|
||||
LAMMPS-GUI tries to provide an experience similar to what people
|
||||
traditionally would have running LAMMPS using a command-line window and
|
||||
the console LAMMPS executable but just rolled into a single executable:
|
||||
LAMMPS-GUI aims to provide the traditional experience of running LAMMPS
|
||||
using a text editor, a command-line window, and launching the LAMMPS
|
||||
text-mode executable printing output to the screen, but just integrated
|
||||
into a single application:
|
||||
|
||||
- writing & editing LAMMPS input files with a text editor
|
||||
- run LAMMPS on those input file with selected command-line flags
|
||||
- extract data from the created files and visualize it with and
|
||||
external software
|
||||
- Write and edit LAMMPS input files using the built-in text editor.
|
||||
- Run LAMMPS on those input file with command-line flags to enable a
|
||||
specific accelerator package (or none).
|
||||
- Extract data from the created files (like trajectory files, log files
|
||||
with thermodynamic data, or images) and visualize it using external
|
||||
software.
|
||||
|
||||
That procedure is quite effective for people proficient in using the
|
||||
command-line, as that allows them to use tools for the individual steps
|
||||
That traditional procedure is effective for people proficient in using the
|
||||
command-line, as it allows them to use the tools for the individual steps
|
||||
that they are most comfortable with. In fact, it is often *required* to
|
||||
adopt this workflow when running LAMMPS simulations on high-performance
|
||||
computing facilities.
|
||||
@ -42,35 +50,46 @@ window or using external programs, let alone writing scripts to extract
|
||||
data from the generated output. It also integrates well with graphical
|
||||
desktop environments where the `.lmp` filename extension can be
|
||||
registered with LAMMPS-GUI as the executable to launch when double
|
||||
clicking on such files. Also, LAMMPS-GUI has support for drag-n-drop,
|
||||
i.e. an input file can be selected and then moved and dropped on the
|
||||
LAMMPS-GUI executable, and LAMMPS-GUI will launch and read the file into
|
||||
its buffer. In many cases LAMMPS-GUI will be integrated into the
|
||||
graphical desktop environment and can be launched like other
|
||||
applications.
|
||||
clicking on such files using a file manager. LAMMPS-GUI also has
|
||||
support for 'drag and drop' for opening inputs: an input file can
|
||||
be selected and then moved and dropped on the LAMMPS-GUI executable;
|
||||
LAMMPS-GUI will launch and read the file into its buffer. Input files
|
||||
also can be dropped into the editor window of the running LAMMPS-GUI
|
||||
application, which will close the current file and open the new file.
|
||||
In many cases LAMMPS-GUI will be integrated into the graphical desktop
|
||||
environment and can be launched just like any other applications from
|
||||
the graphical interface.
|
||||
|
||||
LAMMPS-GUI thus makes it easier for beginners to get started running
|
||||
simple LAMMPS simulations. It is very suitable for tutorials on LAMMPS
|
||||
since you only need to learn how to use a single program for most tasks
|
||||
and thus time can be saved and people can focus on learning LAMMPS.
|
||||
The tutorials at https://lammpstutorials.github.io/ are specifically
|
||||
updated for use with LAMMPS-GUI and their tutorial materials can
|
||||
be downloaded and edited directly from the GUI.
|
||||
LAMMPS and is well-suited for LAMMPS tutorials, since you only need to
|
||||
work with a single, ready-to-use program for most of the tasks. Plus it
|
||||
is available for download as pre-compiled package for popular operating
|
||||
systems (Linux, macOS, Windows). This saves time and allows users to
|
||||
focus on learning LAMMPS itself, without the need to learn how to
|
||||
compile LAMMPS, learn how to use the command line, or learn how to use a
|
||||
separate text editor.
|
||||
|
||||
Another design goal is to keep the barrier low when replacing part of
|
||||
the functionality of LAMMPS-GUI with external tools. That said, LAMMPS-GUI
|
||||
has some unique functionality that is not found elsewhere:
|
||||
The tutorials at https://lammpstutorials.github.io/ are specifically
|
||||
updated for use with LAMMPS-GUI and their tutorial materials can be
|
||||
downloaded and edited directly from within the GUI while automatically
|
||||
loading the matching tutorial instructions into a webbrowser.
|
||||
|
||||
Yet the basic control flow remains similar to running LAMMPS from the
|
||||
command line, so the barrier for replacing parts of the functionality of
|
||||
LAMMPS-GUI with external tools is low. That said, LAMMPS-GUI offer some
|
||||
unique features that are not easily found elsewhere:
|
||||
|
||||
- auto-adapting to features available in the integrated LAMMPS library
|
||||
- auto-completion for LAMMPS commands and options
|
||||
- context-sensitive online help
|
||||
- auto-completion for available LAMMPS commands and options only
|
||||
- context-sensitive online help for known LAMMPS commands
|
||||
- start and stop of simulations via mouse or keyboard
|
||||
- monitoring of simulation progress
|
||||
- interactive visualization using the :doc:`dump image <dump_image>`
|
||||
- monitoring of simulation progress and CPU use
|
||||
- interactive visualization using the LAMMPS :doc:`dump image feature <dump_image>`
|
||||
command with the option to copy-paste the resulting settings
|
||||
- automatic slide show generation from dump image output at runtime
|
||||
- automatic plotting of thermodynamic data at runtime
|
||||
- inspection of binary restart files
|
||||
- integration will a set of LAMMPS tutorials
|
||||
|
||||
.. admonition:: Download LAMMPS-GUI for your platform
|
||||
:class: Hint
|
||||
@ -93,7 +112,7 @@ has some unique functionality that is not found elsewhere:
|
||||
|
||||
-----
|
||||
|
||||
The following text provides a detailed tour of the features and
|
||||
The following text provides a documentation of the features and
|
||||
functionality of LAMMPS-GUI. Suggestions for new features and
|
||||
reports of bugs are always welcome. You can use the :doc:`the same
|
||||
channels as for LAMMPS itself <Errors_bugs>` for that purpose.
|
||||
@ -230,8 +249,8 @@ editor buffer, which may contain multiple :doc:`run <run>` or
|
||||
|
||||
LAMMPS runs in a separate thread, so the GUI stays responsive and is
|
||||
able to interact with the running calculation and access data it
|
||||
produces. It is important to note that running LAMMPS this way is
|
||||
using the contents of the input buffer for the run (via the
|
||||
produces. It is important to note that running LAMMPS this way is using
|
||||
the contents of the input buffer for the run (via the
|
||||
:cpp:func:`lammps_commands_string()` function of the LAMMPS C-library
|
||||
interface), and **not** the original file it was read from. Thus, if
|
||||
there are unsaved changes in the buffer, they *will* be used. As an
|
||||
@ -240,28 +259,55 @@ of a file from the *Run LAMMPS from File* menu entry or with
|
||||
`Ctrl-Shift-Enter`. This option may be required in some rare cases
|
||||
where the input uses some functionality that is not compatible with
|
||||
running LAMMPS from a string buffer. For consistency, any unsaved
|
||||
changes in the buffer must be either saved to the file or undone
|
||||
before LAMMPS can be run from a file.
|
||||
changes in the buffer must be either saved to the file or undone before
|
||||
LAMMPS can be run from a file.
|
||||
|
||||
The line number of the currently executed command is highlighted in
|
||||
green in the line number display for the *Editor* Window.
|
||||
|
||||
.. image:: JPG/lammps-gui-running.png
|
||||
:align: center
|
||||
:scale: 75%
|
||||
|
||||
While LAMMPS is running, the contents of the status bar change. On
|
||||
the left side there is a text indicating that LAMMPS is running, which
|
||||
also indicates the number of active threads, when thread-parallel
|
||||
acceleration was selected in the *Preferences* dialog. On the right
|
||||
While LAMMPS is running, the contents of the status bar change. The
|
||||
text fields that normally show "Ready." and the current working
|
||||
directory, change into an area showing the CPU utilization in percent.
|
||||
Nest to it is a text indicating that LAMMPS is running, which also
|
||||
indicates the number of active threads (in case thread-parallel
|
||||
acceleration was selected in the *Preferences* dialog). On the right
|
||||
side, a progress bar is shown that displays the estimated progress for
|
||||
the current :doc:`run <run>` or :doc:`minimize <minimize>` command.
|
||||
|
||||
Also, the line number of the currently executed command is highlighted
|
||||
in green.
|
||||
.. admonition:: CPU Utilization
|
||||
:class: note
|
||||
|
||||
The CPU Utilization should ideally be close to 100% times the number
|
||||
of threads like in the screenshot image above. Since the GUI is
|
||||
running as a separate thread, the CPU utilization can be higher, for
|
||||
example when the GUI needs to work hard to keep up with the
|
||||
simulation. This can be caused by having frequent thermo output or
|
||||
running a simulation of a small system. In the *Preferences* dialog,
|
||||
the polling interval for updating the the *Output* and *Charts*
|
||||
windows can be set. The intervals may need to be lowered to not miss
|
||||
data between *Charts* data updates or to avoid stalling when the
|
||||
thermo output is not transferred to the *Output* window fast enough.
|
||||
It is also possible to reduce the amount of data by increasing the
|
||||
:doc:`thermo interval <thermo>`. LAMMPS-GUI detects, if the
|
||||
associated I/O buffer is by a significant percentage and will print a
|
||||
warning after the run with suggested adjustments. The utilization
|
||||
can also be lower, e.g. when the simulation is slowed down by the
|
||||
GUI or other processes also running on the host computer and
|
||||
competing with LAMMPS-GUI for GPU resources.
|
||||
|
||||
.. image:: JPG/lammps-gui-buffer-warn.png
|
||||
:align: center
|
||||
:scale: 75%
|
||||
|
||||
If an error occurs (in the example below the command :doc:`label
|
||||
<label>` was incorrectly capitalized as "Label"), an error message
|
||||
dialog is shown and the line of the input which triggered the error is
|
||||
highlighted. The state of LAMMPS in the status bar is set to "Failed."
|
||||
instead of "Ready."
|
||||
highlighted in red. The state of LAMMPS in the status bar is set to
|
||||
"Failed." instead of "Ready."
|
||||
|
||||
.. image:: JPG/lammps-gui-run-error.png
|
||||
:align: center
|
||||
@ -351,33 +397,29 @@ plot of thermodynamic output of the LAMMPS calculation as shown below.
|
||||
:align: center
|
||||
:scale: 33%
|
||||
|
||||
The drop down menu on the top right allows selection of different
|
||||
properties that are computed and written to thermo output. Only one
|
||||
property can be shown at a time. The plots are updated regularly with
|
||||
new data as the run progresses, so they can be used to visually monitor
|
||||
the evolution of available properties. The update interval can be set
|
||||
in the *Preferences* dialog. By default, the raw data for the selected
|
||||
property is plotted as a blue graph. As soon as there are a sufficient
|
||||
number of data points, there will be a second graph shown in red with a
|
||||
smoothed version of the data. From the drop down menu on the top left,
|
||||
you can select whether to plot only the raw data, only the smoothed
|
||||
data or both. The smoothing uses a `Savitzky-Golay convolution filter
|
||||
<https://en.wikipedia.org/wiki/Savitzky%E2%80%93Golay_filter>`_ The
|
||||
window width (left) and order (right) parameters can be set in the boxes
|
||||
next to the drop down menu. Default settings are 10 and 4 which means
|
||||
that the smoothing window includes 10 points each to the left and the
|
||||
right of the current data point for a total of 21 points and a fourth
|
||||
order polynomial is fitted to the data in the window.
|
||||
The "Data:" drop down menu on the top right allows selection of
|
||||
different properties that are computed and written as thermodynamic
|
||||
output to the output window. Only one property can be shown at a time.
|
||||
The plots are updated regularly with new data as the run progresses, so
|
||||
they can be used to visually monitor the evolution of available
|
||||
properties. The update interval can be set in the *Preferences* dialog.
|
||||
By default, the raw data for the selected property is plotted as a blue
|
||||
graph. From the "Plot:" drop menu on the second row and on the left,
|
||||
you can select whether to plot only raw data graph, only a smoothed data
|
||||
graph, or both graphs on top of each other. The smoothing process uses
|
||||
a `Savitzky-Golay convolution filter
|
||||
<https://en.wikipedia.org/wiki/Savitzky%E2%80%93Golay_filter>`_. The
|
||||
convolution window width (left) and order (right) parameters can be set
|
||||
in the boxes next to the drop down menu. Default settings are 10 and 4
|
||||
which means that the smoothing window includes 10 points each to the
|
||||
left and the right of the current data point for a total of 21 points
|
||||
and a fourth order polynomial is fitted to the data in the window.
|
||||
|
||||
The "Title:" and "Y:" input boxes allow to edit the text shown as the
|
||||
plot title and the y-axis label, respectively. The text entered in the
|
||||
"Title:" box is applied to *all* charts, while the "Y:" text changes
|
||||
only the y-axis label of the currently *selected* plot.
|
||||
|
||||
You can use the mouse to zoom into the graph (hold the left button and
|
||||
drag to mark an area) or zoom out (right click) and you can reset the
|
||||
view with a click to the "lens" button next to the data drop down menu.
|
||||
|
||||
The window title shows the current run number that this chart window
|
||||
corresponds to. Same as for the *Output* window, the chart window is
|
||||
replaced on each new run, but the behavior can be changed in the
|
||||
@ -409,6 +451,35 @@ multiple chart-related settings, like the default title, colors for the
|
||||
graphs, default choice of the raw / smooth graph selection, and the
|
||||
default chart graph size.
|
||||
|
||||
|
||||
|
||||
.. admonition:: Slowdown of Simulations from Charts Data Processing
|
||||
:class: warning
|
||||
|
||||
Using frequent thermo output during long simulations can result in a
|
||||
significant slowdown of that simulation since it is accumulating many
|
||||
data points for each of the thermo properties in the chart window to
|
||||
be redrawn with every update. The updates are consuming additional
|
||||
CPU time when smoothing enabled. This slowdown can be confirmed when
|
||||
an increasing percentage of the total run time is spent in the
|
||||
"Output" or "Other" sections of the :doc:`MPI task timing breakdown
|
||||
<Run_output>`. It is thus recommended to use a large enough value as
|
||||
argument `N` for the :doc:`thermo command <thermo>` and to select
|
||||
plotting only the "Raw" data in the *Charts Window* during such
|
||||
simulations. It is always possible to switch between the different
|
||||
display styles for charts during the simulation and after it has
|
||||
finished.
|
||||
|
||||
.. versionchanged:: 1.7
|
||||
|
||||
As of LAMMPS-GUI version 1.7 the chart data processing is
|
||||
significantly optimized compared to older versions of LAMMPS-GUI.
|
||||
The general problem of accumulating excessive amounts of data
|
||||
and the overhead of too frequently polling LAMMPS for new data
|
||||
cannot be optimized away, though. If necessary, the command
|
||||
line LAMMPS executable needs to be used and the output accumulated
|
||||
of a very fast disk (e.g. a high-performance SSD).
|
||||
|
||||
Image Slide Show
|
||||
----------------
|
||||
|
||||
@ -640,13 +711,27 @@ generated with a :doc:`write_data command <write_data>`. The third
|
||||
window is a :ref:`Snapshot Image Viewer <snapshot_viewer>` containing a
|
||||
visualization of the system in the restart.
|
||||
|
||||
If the restart file is larger than 250 MBytes, a dialog will ask
|
||||
for confirmation before continuing, since large restart files
|
||||
may require large amounts of RAM since the entire system must
|
||||
be read into RAM. Thus restart file for large simulations that
|
||||
have been run on an HPC cluster may overload a laptop or local
|
||||
workstation. The *Show Details...* button will display a rough
|
||||
estimate of the additional memory required.
|
||||
.. |inspect1| image:: JPG/lammps-gui-inspect-data.png
|
||||
:width: 32%
|
||||
|
||||
.. |inspect2| image:: JPG/lammps-gui-inspect-info.png
|
||||
:width: 32%
|
||||
|
||||
.. |inspect3| image:: JPG/lammps-gui-inspect-image.png
|
||||
:width: 32%
|
||||
|
||||
|inspect1| |inspect2| |inspect3|
|
||||
|
||||
.. admonition:: Large Restart Files
|
||||
:class: warning
|
||||
|
||||
If the restart file is larger than 250 MBytes, a dialog will ask for
|
||||
confirmation before continuing, since large restart files may require
|
||||
large amounts of RAM since the entire system must be read into RAM.
|
||||
Thus restart file for large simulations that have been run on an HPC
|
||||
cluster may overload a laptop or local workstation. The *Show
|
||||
Details...* button will display a rough estimate of the additional
|
||||
memory required.
|
||||
|
||||
Menu
|
||||
----
|
||||
@ -718,6 +803,12 @@ timestep. The *Stop LAMMPS* entry will do this by calling the
|
||||
:cpp:func:`lammps_force_timeout` library function, which is equivalent
|
||||
to a :doc:`timer timeout 0 <timer>` command.
|
||||
|
||||
The *Relaunch LAMMPS Instance* will destroy the current LAMMPS thread
|
||||
and free its data and then create a new thread with a new LAMMPS
|
||||
instance. This is usually not needed, since LAMMPS-GUI tries to detect
|
||||
when this is needed and does it automatically. This is available
|
||||
in case it missed something and LAMMPS behaves in unexpected ways.
|
||||
|
||||
The *Set Variables...* entry opens a dialog box where
|
||||
:doc:`index style variables <variable>` can be set. Those variables
|
||||
are passed to the LAMMPS instance when it is created and are thus
|
||||
@ -772,6 +863,10 @@ then start downloading the files requested (download progress is
|
||||
reported in the status line) and load the first input file for the
|
||||
selected session into LAMMPS-GUI.
|
||||
|
||||
.. image:: JPG/lammps-gui-tutorials.png
|
||||
:align: center
|
||||
:scale: 50%
|
||||
|
||||
About
|
||||
^^^^^
|
||||
|
||||
@ -878,13 +973,12 @@ General Settings:
|
||||
- *Replace image window on new render:* when checked, an existing
|
||||
chart window will be replaced when a new snapshot image is requested,
|
||||
otherwise each command will create a new image window.
|
||||
- *Path to LAMMPS Shared Library File:* this option is only visible
|
||||
when LAMMPS-GUI was compiled to load the LAMMPS library at run time
|
||||
instead of being linked to it directly. With the *Browse..* button
|
||||
or by changing the text, a different shared library file with a
|
||||
different compilation of LAMMPS with different settings or from a
|
||||
different version can be loaded. After this setting was changed,
|
||||
LAMMPS-GUI needs to be re-launched.
|
||||
- *Download tutorial solutions enabled* this controls whether the
|
||||
"Download solutions" option is enabled by default when setting up
|
||||
a tutorial.
|
||||
- *Open tutorial webpage enabled* this controls whether the "Open
|
||||
tutorial webpage in web browser" option is enabled by default when
|
||||
setting up a tutorial.
|
||||
- *Select Default Font:* Opens a font selection dialog where the type
|
||||
and size for the default font (used for everything but the editor and
|
||||
log) of the application can be set.
|
||||
@ -908,16 +1002,31 @@ General Settings:
|
||||
or for downloading tutorial files from the *Tutorials* menu. If the
|
||||
``https_proxy`` environment variable was set externally, its value is
|
||||
displayed but cannot be changed.
|
||||
- *Path to LAMMPS Shared Library File:* this option is only visible
|
||||
when LAMMPS-GUI was compiled to load the LAMMPS library at run time
|
||||
instead of being linked to it directly. With the *Browse..* button
|
||||
or by changing the text, a different shared library file with a
|
||||
different compilation of LAMMPS with different settings or from a
|
||||
different version can be loaded. After this setting was changed,
|
||||
LAMMPS-GUI needs to be re-launched.
|
||||
|
||||
Accelerators:
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
This tab enables selection of an accelerator package for LAMMPS to use
|
||||
and is equivalent to using the `-suffix` and `-package` flags on the
|
||||
command-line. Only settings supported by the LAMMPS library and local
|
||||
hardware are available. The `Number of threads` field allows setting
|
||||
the maximum number of threads for the accelerator packages that use
|
||||
threads.
|
||||
This tab enables selection of an accelerator package and modify some of
|
||||
its settings to use for running LAMMPS and is equivalent to using the
|
||||
:doc:`-sf <suffix>` and :doc:`-pk <package>` flags :doc:`on the
|
||||
command-line <Run_options>`. Only settings supported by the LAMMPS
|
||||
library and local hardware are available. The `Number of threads` field
|
||||
allows setting the number of threads for the accelerator packages that
|
||||
support using threads (OPENMP, INTEL, KOKKOS, and GPU). Furthermore,
|
||||
the choice of precision mode (double, mixed, or single) for the INTEL
|
||||
package can be selected and for the GPU package, whether the neighbor
|
||||
lists are built on the GPU or the host (required for :doc:`pair style
|
||||
hybrid <pair_hybrid>`) and whether only pair styles should be
|
||||
accelerated (i.e. run PPPM entirely on the CPU, which sometimes leads
|
||||
to better overall performance). Whether settings can be changed depends
|
||||
on which accelerator package is chosen (or "None").
|
||||
|
||||
Snapshot Image:
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
@ -8,6 +8,18 @@ the two O-H bonds and the H-O-H angle rigid. A bond style of
|
||||
*harmonic* and an angle style of *harmonic* or *charmm* should also be
|
||||
used.
|
||||
|
||||
One suitable pair style with cutoff Coulomb would for instance be:
|
||||
|
||||
* :doc:`pair_style lj/cut/coul/cut <pair_lj_cut_coul>`
|
||||
|
||||
These commands are examples for a long-range Coulomb model:
|
||||
|
||||
* :doc:`pair_style lj/cut/coul/long <pair_lj_cut_coul>`
|
||||
* :doc:`pair_style lj/cut/coul/long/soft <pair_fep_soft>`
|
||||
* :doc:`kspace_style pppm <kspace_style>`
|
||||
* :doc:`pair_style lj/long/coul/long <pair_lj_long>`
|
||||
* :doc:`kspace_style pppm/disp <kspace_style>`
|
||||
|
||||
These are the additional parameters (in real units) to set for O and H
|
||||
atoms and the water molecule to run a rigid SPC model.
|
||||
|
||||
@ -39,7 +51,9 @@ the SPC and SPC/E models.
|
||||
Below is the code for a LAMMPS input file and a molecule file
|
||||
(``spce.mol``) of SPC/E water for use with the :doc:`molecule command
|
||||
<molecule>` demonstrating how to set up a small bulk water system for
|
||||
SPC/E with rigid bonds.
|
||||
SPC/E with rigid bonds. For simplicity and speed the example uses a
|
||||
cutoff Coulomb. Most production simulations require long-range Coulomb
|
||||
instead.
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
|
||||
@ -5,17 +5,24 @@ The TIP3P water model as implemented in CHARMM :ref:`(MacKerell)
|
||||
<howto-tip3p>` specifies a 3-site rigid water molecule with charges and
|
||||
Lennard-Jones parameters assigned to each of the three atoms.
|
||||
|
||||
A suitable pair style with cutoff Coulomb would be:
|
||||
One suitable pair style with cutoff Coulomb would for instance be:
|
||||
|
||||
* :doc:`pair_style lj/cut/coul/cut <pair_lj_cut_coul>`
|
||||
|
||||
or these commands for a long-range Coulomb model:
|
||||
These commands are examples for a long-range Coulomb model:
|
||||
|
||||
* :doc:`pair_style lj/cut/coul/long <pair_lj_cut_coul>`
|
||||
* :doc:`pair_style lj/cut/coul/long/soft <pair_fep_soft>`
|
||||
* :doc:`kspace_style pppm <kspace_style>`
|
||||
* :doc:`pair_style lj/long/coul/long <pair_lj_long>`
|
||||
* :doc:`kspace_style pppm/disp <kspace_style>`
|
||||
|
||||
And these pair styles are compatible with the CHARMM force field:
|
||||
|
||||
* :doc:`pair_style lj/charmm/coul/charmm <pair_charmm>`
|
||||
* :doc:`pair_style lj/charmm/coul/long <pair_charmm>`
|
||||
* :doc:`pair_style lj/charmmfsw/coul/long <pair_charmm>`
|
||||
|
||||
In LAMMPS the :doc:`fix shake or fix rattle <fix_shake>` command can be
|
||||
used to hold the two O-H bonds and the H-O-H angle rigid. A bond style
|
||||
of :doc:`harmonic <bond_harmonic>` and an angle style of :doc:`harmonic
|
||||
@ -100,7 +107,9 @@ ignored.
|
||||
Below is the code for a LAMMPS input file and a molecule file
|
||||
(``tip3p.mol``) of TIP3P water for use with the :doc:`molecule command
|
||||
<molecule>` demonstrating how to set up a small bulk water system for
|
||||
TIP3P with rigid bonds.
|
||||
TIP3P with rigid bonds. For simplicity and speed the example uses a
|
||||
cutoff Coulomb. Most production simulations require long-range Coulomb
|
||||
instead.
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
|
||||
@ -167,7 +167,9 @@ cutoffs are set in the :doc:`pair_style lj/cut/tip4p/long
|
||||
Below is the code for a LAMMPS input file using the implicit method and
|
||||
the :ref:`TIP3P molecule file <tip3p_molecule>`. Because the TIP4P
|
||||
charges are different from TIP3P they need to be reset (or the molecule
|
||||
file changed):
|
||||
file changed). For simplicity and speed the example uses a cutoff
|
||||
Coulomb. Most production simulations require long-range Coulomb
|
||||
instead.
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
|
||||
@ -87,7 +87,9 @@ atom style full or use :doc:`fix property/atom mol <fix_property_atom>`
|
||||
so that fix rigid/small can identify rigid bodies by their molecule ID.
|
||||
Also a :doc:`neigh_modify exclude <neigh_modify>` command is added to
|
||||
exclude computing intramolecular non-bonded interactions, since those
|
||||
are removed by the rigid fix anyway:
|
||||
are removed by the rigid fix anyway. For simplicity and speed the
|
||||
example uses a cutoff Coulomb. Most production simulations require
|
||||
long-range Coulomb instead.
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
|
||||
BIN
doc/src/JPG/lammps-gui-banner.png
Normal file
|
After Width: | Height: | Size: 344 KiB |
BIN
doc/src/JPG/lammps-gui-buffer-warn.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 115 KiB |
BIN
doc/src/JPG/lammps-gui-inspect-data.png
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
doc/src/JPG/lammps-gui-inspect-image.png
Normal file
|
After Width: | Height: | Size: 703 KiB |
BIN
doc/src/JPG/lammps-gui-inspect-info.png
Normal file
|
After Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 22 KiB |
BIN
doc/src/JPG/lammps-gui-tutorials.png
Normal file
|
After Width: | Height: | Size: 227 KiB |
@ -93,14 +93,19 @@ run LAMMPS in serial mode.
|
||||
.. admonition:: Using the C library interface as a plugin
|
||||
:class: note
|
||||
|
||||
Rather than including the C library directly and link to the LAMMPS
|
||||
Rather than including the C library interface directly using the
|
||||
``library.h`` header file and link to the LAMMPS (static or shared)
|
||||
library at compile time, you can use the ``liblammpsplugin.h`` header
|
||||
file and the ``liblammpsplugin.c`` C code in the
|
||||
``examples/COUPLE/plugin`` folder for an interface to LAMMPS that is
|
||||
largely identical to the regular library interface, only that it will
|
||||
load a LAMMPS shared library file at runtime. This can be useful for
|
||||
applications where the interface to LAMMPS would be an optional
|
||||
feature.
|
||||
feature or where you would like to load different version of the
|
||||
LAMMPS library (e.g. an updated one) without replacing the executable.
|
||||
The :ref:`LAMMPS-GUI <lammps_gui>` is an example for such a program.
|
||||
It has its own wrapper that supports both modes and they can be
|
||||
changed at compile time.
|
||||
|
||||
.. warning::
|
||||
|
||||
|
||||
@ -27,6 +27,7 @@ It documents the following functions:
|
||||
- :cpp:func:`lammps_scatter`
|
||||
- :cpp:func:`lammps_scatter_subset`
|
||||
- :cpp:func:`lammps_create_atoms`
|
||||
- :cpp:func:`lammps_create_molecule`
|
||||
|
||||
-----------------------
|
||||
|
||||
@ -103,4 +104,8 @@ It documents the following functions:
|
||||
.. doxygenfunction:: lammps_create_atoms(void *handle, int n, const int *id, const int *type, const double *x, const double *v, const int *image, int bexpand)
|
||||
:project: progguide
|
||||
|
||||
-----------------------
|
||||
|
||||
.. doxygenfunction:: lammps_create_molecule
|
||||
:project: progguide
|
||||
|
||||
|
||||
@ -28,6 +28,7 @@ gives those details.
|
||||
|
||||
* :ref:`ADIOS <PKG-ADIOS>`
|
||||
* :ref:`AMOEBA <PKG-AMOEBA>`
|
||||
* :ref:`APIP <PKG-APIP>`
|
||||
* :ref:`ASPHERE <PKG-ASPHERE>`
|
||||
* :ref:`ATC <PKG-ATC>`
|
||||
* :ref:`AWPMD <PKG-AWPMD>`
|
||||
@ -186,6 +187,60 @@ provided by the Ponder group in their
|
||||
|
||||
----------
|
||||
|
||||
.. _PKG-APIP:
|
||||
|
||||
APIP package
|
||||
------------
|
||||
|
||||
**Contents:**
|
||||
|
||||
This package provides adaptive-precision interatomic potentials (APIP) as
|
||||
described in:
|
||||
|
||||
D. Immel, R. Drautz and G. Sutmann, "Adaptive-precision potentials for
|
||||
large-scale atomistic simulations", J. Chem. Phys. 162, 114119 (2025)
|
||||
`link <immel2025_doi_>`_
|
||||
|
||||
Adaptive-precision means, that a fast interatomic potential, such as EAM,
|
||||
is coupled to a precise interatomic potential, such as ACE.
|
||||
This package provides the required pair_styles and fixes to run an efficient,
|
||||
energy-conserving adaptive-precision simulation.
|
||||
|
||||
In the context of this package, precision refers to the accuracy of an interatomic
|
||||
potential.
|
||||
|
||||
.. _immel2025_doi: https://doi.org/10.1063/5.0245877
|
||||
|
||||
**Authors:**
|
||||
|
||||
This package was written by David Immel^1,
|
||||
Ralf Drautz^2 and Godehard Sutmann^1^2.
|
||||
|
||||
^1: Forschungszentrum Juelich, Juelich, Germany
|
||||
|
||||
^2: Ruhr-University Bochum, Bochum, Germany
|
||||
|
||||
**Install:**
|
||||
|
||||
The APIP package requires also the installation of ML-PACE, which has
|
||||
:ref:`specific installation instructions <ml-pace>` on the
|
||||
:doc:`Build extras <Build_extras>` page.
|
||||
|
||||
**Supporting info:**
|
||||
|
||||
* ``src/APIP``: filenames -> commands
|
||||
* :doc:`Howto APIP <Howto_apip>`
|
||||
* ``examples/PACKAGES/apip``
|
||||
* :doc:`fix atom_weight/apip <fix_atom_weight_apip>`
|
||||
* :doc:`fix lambda/apip <fix_lambda_apip>`
|
||||
* :doc:`fix lambda_thermostat/apip <fix_lambda_thermostat_apip>`
|
||||
* :doc:`pair_style eam/apip <pair_eam_apip>`
|
||||
* :doc:`pair_style lambda/zone/apip <pair_lambda_zone_apip>`
|
||||
* :doc:`pair_style lambda/input/apip <pair_lambda_input_apip>`
|
||||
* :doc:`pair_style pace/apip <pair_pace_apip>`
|
||||
|
||||
----------
|
||||
|
||||
.. _PKG-ASPHERE:
|
||||
|
||||
ASPHERE package
|
||||
|
||||
@ -38,6 +38,11 @@ whether an extra library is needed to build and use the package:
|
||||
- :doc:`AMOEBA and HIPPO howto <Howto_amoeba>`
|
||||
- amoeba
|
||||
- no
|
||||
* - :ref:`APIP <PKG-APIP>`
|
||||
- adaptive-precision interatomic potentials
|
||||
- :doc:`Howto APIP <Howto_apip>`
|
||||
- ``PACKAGES/apip``
|
||||
- ext
|
||||
* - :ref:`ASPHERE <PKG-ASPHERE>`
|
||||
- aspherical particle models
|
||||
- :doc:`Howto spherical <Howto_spherical>`
|
||||
|
||||
@ -106,20 +106,37 @@ folder that the dynamic loader searches or inside of the installed
|
||||
has to be made during the CMake configuration step.
|
||||
|
||||
If the default settings of ``make install-python`` are not what you want,
|
||||
you can invoke ``install.py`` from the python directory manually as
|
||||
you can invoke ``install.py`` from the ``python`` directory manually as
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
python install.py -p <python package> -l <shared library> -v <version.h file> [-n] [-f]
|
||||
python3 install.py -p <python package> -l <shared library> -v <version.h file> [-n] [-f]
|
||||
|
||||
* The ``-p`` flag argument is the full path to the
|
||||
``python/lammps`` folder to be installed,
|
||||
* the ``-l`` flag argument is the full path to the LAMMPS shared
|
||||
library file to be installed,
|
||||
* the ``-v`` flag argument is the full path to the ``src/version.h`` file
|
||||
* the optional ``-n`` flag instructs the script to only build a
|
||||
wheel file but not attempt to install it (default is to try installing),
|
||||
* the optional ``-w`` flag argument is the path to a folder where
|
||||
to store the resulting wheel file (default is the current folder)
|
||||
* and the optional ``-f`` argument instructs the script to force
|
||||
installation even if pip would otherwise refuse installation
|
||||
with an :ref:`error about externally managed environments
|
||||
<externally_managed>`. The Python developers recommend to not
|
||||
augment a Python installation with custom packages, both at the
|
||||
user and the system level, and advise to use virtual
|
||||
environments instead. Some recent Linux distributions enforce
|
||||
that recommendation by default.
|
||||
|
||||
Example command line for building only the wheel after building
|
||||
LAMMPS with ``cmake`` in the folder ``build``:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
python3 python/install.py -n -p python/lammps -l build/liblammps.so -v src/version.h -w build
|
||||
|
||||
* The ``-p`` flag points to the ``lammps`` Python package folder to be installed,
|
||||
* the ``-l`` flag points to the LAMMPS shared library file to be installed,
|
||||
* the ``-v`` flag points to the LAMMPS version header file to extract the version date,
|
||||
* the optional ``-n`` instructs the script to only build a wheel file but not attempt
|
||||
to install it,
|
||||
* and the optional ``-f`` argument instructs the script to force installation even if
|
||||
pip would otherwise refuse installation with an
|
||||
:ref:`error about externally managed environments <externally_managed>`.
|
||||
|
||||
.. tab:: Virtual environment
|
||||
|
||||
@ -335,4 +352,3 @@ that the order of the lines is not deterministic
|
||||
Proc 1 out of 4 procs
|
||||
Proc 2 out of 4 procs
|
||||
Proc 3 out of 4 procs
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ Syntax
|
||||
|
||||
atom_style style args
|
||||
|
||||
* style = *amoeba* or *angle* or *atomic* or *body* or *bond* or *charge* or *dielectric* or *dipole* or *dpd* or *edpd* or *electron* or *ellipsoid* or *full* or *line* or *mdpd* or *molecular* or *oxdna* or *peri* or *smd* or *sph* or *sphere* or *bpm/sphere* or *spin* or *tdpd* or *tri* or *template* or *wavepacket* or *hybrid*
|
||||
* style = *amoeba* or *angle* or *apip* or *atomic* or *body* or *bond* or *charge* or *dielectric* or *dipole* or *dpd* or *edpd* or *electron* or *ellipsoid* or *full* or *line* or *mdpd* or *molecular* or *oxdna* or *peri* or *smd* or *sph* or *sphere* or *bpm/sphere* or *spin* or *tdpd* or *tri* or *template* or *wavepacket* or *hybrid*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
@ -117,6 +117,10 @@ the Additional Information section below.
|
||||
- *bond* + "angle data"
|
||||
- :ref:`MOLECULE <PKG-MOLECULE>`
|
||||
- bead-spring polymers with stiffness
|
||||
* - *apip*
|
||||
- *atomic* + apip_lambda, apip_lambda_required, apip_lambda_input, apip_lambda_const, apip_lambda_input_ta, apip_e_fast, apip_e_precise, apip_f_const_lambda, apip_f_dyn_lambda
|
||||
- :ref:`APIP <PKG-APIP>`
|
||||
- adaptive-precision interatomic potentials(APIP), see :doc:`APIP howto <Howto_apip>`
|
||||
* - *atomic*
|
||||
- tag, type, x, v, f, image, mask
|
||||
-
|
||||
|
||||
@ -49,8 +49,6 @@ proportional to the diffusion coefficient of the diffusing atoms.
|
||||
The displacement of an atom is from its reference position. This is
|
||||
normally the original position at the time
|
||||
the compute command was issued, unless the *average* keyword is set to *yes*\ .
|
||||
The value of the displacement will be
|
||||
0.0 for atoms not in the specified compute group.
|
||||
|
||||
If the *com* option is set to *yes* then the effect of any drift in
|
||||
the center-of-mass of the group of atoms is subtracted out before the
|
||||
@ -111,7 +109,10 @@ distance\ :math:`^2` :doc:`units <units>`.
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
Compute *msd* cannot be used with a dynamic group.
|
||||
Compute *msd* cannot be used with a dynamic group and the number of
|
||||
atoms in the compute group must not be changed by some fixes like,
|
||||
for example, :doc:`fix deposit <fix_deposit>` or
|
||||
:doc:`fix evaporate <fix_evaporate>`.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
@ -34,6 +34,8 @@ Syntax
|
||||
i_name, d_name, i2_name[I], d2_name[I],
|
||||
vfrac, s0, espin, eradius, ervel, erforce,
|
||||
rho, drho, e, de, cv, buckling,
|
||||
apip_lambda, apip_lambda_input, apip_e_fast,
|
||||
apip_e_precise
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
@ -70,6 +72,13 @@ Syntax
|
||||
*i2_name[I]* = Ith column of custom integer array with name
|
||||
*d2_name[I]* = Ith column of custom floating-point array with name
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
APIP package per-atom properties:
|
||||
*apip_lambda* = switching parameter
|
||||
*apip_lambda_input* = input used to calculate the switching parameter
|
||||
*apip_e_fast,apip_e_precise* = potential energies mixed by the adaptive-precision potential
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
PERI package per-atom properties:
|
||||
@ -162,6 +171,22 @@ segment particles and define the end points of each line segment.
|
||||
*corner2z*, *corner3x*, *corner3y*, *corner3z*, are defined for
|
||||
triangular particles and define the corner points of each triangle.
|
||||
|
||||
The accessible quantities from the :doc:`APIP package <Howto_apip>` are
|
||||
explained in the doc pages of this package in detail.
|
||||
In short: *apip_lambda* is the switching parameter :math:`\lambda\in[0,1]`,
|
||||
that is calculated from *apip_lambda_input* and that mixes the energies
|
||||
of a fast (*apip_e_fast*) and a precise (*apip_e_precise*) potential
|
||||
into an adaptive-precision energy.
|
||||
|
||||
.. note::
|
||||
|
||||
The energy according to the fast and the precise potential are only
|
||||
computed for the subset of atoms, for which it is required, i.e.,
|
||||
for an atom :math:`i` with :math:`\lambda_i=1` one does not need
|
||||
:math:`E_i^\text{precise}` and with :math:`\lambda_i=0` one does
|
||||
not need :math:`E_i^\text{fast}`.
|
||||
|
||||
|
||||
In addition, the various per-atom quantities listed above for specific
|
||||
packages are only accessible by this command.
|
||||
|
||||
|
||||
@ -45,13 +45,13 @@ Examples
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Compute *stress/mop* and compute *stress/mop/profile* define
|
||||
computations that calculate components of the local stress tensor using
|
||||
the method of planes :ref:`(Todd) <mop-todd>`. Specifically in compute
|
||||
*stress/mop* calculates 3 components are computed in directions *dir*,\
|
||||
*x*\ ; *dir*,\ *y*\ ; and *dir*,\ *z*\ ; where *dir* is the direction
|
||||
normal to the plane, while in compute *stress/mop/profile* the profile
|
||||
of the stress is computed.
|
||||
Compute *stress/mop* and compute *stress/mop/profile*
|
||||
calculate components of the local stress tensor using
|
||||
the method of planes :ref:`(Todd) <mop-todd>`. Specifically, compute
|
||||
*stress/mop* calculates 3 components in directions :math:`ix`,
|
||||
:math:`iy`, and :math:`iz` where :math:`i` is the direction
|
||||
normal to the plane, while compute *stress/mop/profile* calculates the profile
|
||||
of the local stress along the :math:`i` direction.
|
||||
|
||||
Contrary to methods based on histograms of atomic stress (i.e., using
|
||||
:doc:`compute stress/atom <compute_stress_atom>`), the method of planes
|
||||
@ -103,14 +103,15 @@ Output info
|
||||
Compute *stress/mop* calculates a global vector (indices starting at 1),
|
||||
with 3 values for each declared keyword (in the order the keywords have
|
||||
been declared). For each keyword, the stress tensor components are
|
||||
ordered as follows: stress_dir,x, stress_dir,y, and stress_dir,z.
|
||||
ordered as follows: :math:`P_{ix}`, :math:`P_{iy}`, and :math:`P_{iz}`,
|
||||
where :math:`i` is the direction normal to the plane.
|
||||
|
||||
Compute *stress/mop/profile* instead calculates a global array, with 1
|
||||
column giving the position of the planes where the stress tensor was
|
||||
computed, and with 3 columns of values for each declared keyword (in the
|
||||
order the keywords have been declared). For each keyword, the profiles
|
||||
of stress tensor components are ordered as follows: stress_dir,x;
|
||||
stress_dir,y; and stress_dir,z.
|
||||
of stress tensor components are ordered as follows: :math:`P_{ix}`,
|
||||
:math:`P_{iy}`, and :math:`P_{iz}`.
|
||||
|
||||
The values are in pressure :doc:`units <units>`.
|
||||
|
||||
@ -129,15 +130,11 @@ package <Build_package>` doc page on for more info.
|
||||
The method is implemented for orthogonal simulation boxes whose
|
||||
size does not change in time, and axis-aligned planes.
|
||||
|
||||
Contributions from bonds, angles, and dihedrals are not compatible
|
||||
with MPI parallel runs.
|
||||
|
||||
The method only works with two-body pair interactions, because it
|
||||
requires the class method ``Pair::single()`` to be implemented, which is
|
||||
not possible for manybody potentials. In particular, compute
|
||||
*stress/mop/profile* and *stress/mop* do not work with more than two-body
|
||||
pair interactions, long range (kspace) interactions and
|
||||
improper intramolecular interactions.
|
||||
Compute *stress/mop* and *stress/mop/profile* do not work with manybody
|
||||
non-bonded interactions, long range (kspace) interactions and
|
||||
improper intramolecular interactions. The reason is that the current
|
||||
implementation requires the class method ``Pair::single()`` to be implemented,
|
||||
which is not possible for manybody potentials.
|
||||
|
||||
The impact of fixes that affect the stress (e.g. fix langevin) is
|
||||
also not included in the stress computed here.
|
||||
|
||||
@ -201,6 +201,7 @@ accelerated styles exist.
|
||||
* :doc:`append/atoms <fix_append_atoms>` - append atoms to a running simulation
|
||||
* :doc:`atc <fix_atc>` - initiates a coupled MD/FE simulation
|
||||
* :doc:`atom/swap <fix_atom_swap>` - Monte Carlo atom type swapping
|
||||
* :doc:`atom_weight/apip <fix_atom_weight_apip>` - compute atomic load of an :doc:`APIP potential <Howto_apip>` for load balancing
|
||||
* :doc:`ave/atom <fix_ave_atom>` - compute per-atom time-averaged quantities
|
||||
* :doc:`ave/chunk <fix_ave_chunk>` - compute per-chunk time-averaged quantities
|
||||
* :doc:`ave/correlate <fix_ave_correlate>` - compute/output time correlations
|
||||
@ -265,11 +266,13 @@ accelerated styles exist.
|
||||
* :doc:`halt <fix_halt>` - terminate a dynamics run or minimization
|
||||
* :doc:`heat <fix_heat>` - add/subtract momentum-conserving heat
|
||||
* :doc:`heat/flow <fix_heat_flow>` - plain time integration of heat flow with per-atom temperature updates
|
||||
* :doc:`hmc <fix_hmc>` - Hybrid/Hamiltonian Monte Carlo (HMC) particle propagation
|
||||
* :doc:`hyper/global <fix_hyper_global>` - global hyperdynamics
|
||||
* :doc:`hyper/local <fix_hyper_local>` - local hyperdynamics
|
||||
* :doc:`imd <fix_imd>` - implements the "Interactive MD" (IMD) protocol
|
||||
* :doc:`indent <fix_indent>` - impose force due to an indenter
|
||||
* :doc:`ipi <fix_ipi>` - enable LAMMPS to run as a client for i-PI path-integral simulations
|
||||
* :doc:`lambda/apip <fix_lambda_apip>` - compute switching parameter, that controls the precision of an :doc:`APIP potential <Howto_apip>`
|
||||
* :doc:`langevin <fix_langevin>` - Langevin temperature control
|
||||
* :doc:`langevin/drude <fix_langevin_drude>` - Langevin temperature control of Drude oscillators
|
||||
* :doc:`langevin/eff <fix_langevin_eff>` - Langevin temperature control for the electron force field model
|
||||
@ -278,6 +281,7 @@ accelerated styles exist.
|
||||
* :doc:`lb/momentum <fix_lb_momentum>` - :doc:`fix momentum <fix_momentum>` replacement for use with a lattice-Boltzmann fluid
|
||||
* :doc:`lb/viscous <fix_lb_viscous>` - :doc:`fix viscous <fix_viscous>` replacement for use with a lattice-Boltzmann fluid
|
||||
* :doc:`lineforce <fix_lineforce>` - constrain atoms to move in a line
|
||||
* :doc:`lambda_thermostat/apip <fix_lambda_thermostat_apip>` - apply energy conserving correction for an :doc:`APIP potential <Howto_apip>`
|
||||
* :doc:`manifoldforce <fix_manifoldforce>` - restrain atoms to a manifold during minimization
|
||||
* :doc:`mdi/qm <fix_mdi_qm>` - LAMMPS operates as a client for a quantum code via the MolSSI Driver Interface (MDI)
|
||||
* :doc:`mdi/qmmm <fix_mdi_qmmm>` - LAMMPS operates as client for QM/MM simulation with a quantum code via the MolSSI Driver Interface (MDI)
|
||||
@ -292,6 +296,7 @@ accelerated styles exist.
|
||||
* :doc:`mvv/tdpd <fix_mvv_dpd>` - constant temperature DPD using the modified velocity-Verlet algorithm
|
||||
* :doc:`neb <fix_neb>` - nudged elastic band (NEB) spring forces
|
||||
* :doc:`neb/spin <fix_neb_spin>` - nudged elastic band (NEB) spring forces for spins
|
||||
* :doc:`neighbor/swap <fix_neighbor_swap>` - kinetic Monte Carlo (kMC) atom swapping
|
||||
* :doc:`nonaffine/displacement <fix_nonaffine_displacement>` - calculate nonaffine displacement of atoms
|
||||
* :doc:`nph <fix_nh>` - constant NPH time integration via Nose/Hoover
|
||||
* :doc:`nph/asphere <fix_nph_asphere>` - NPH for aspherical particles
|
||||
|
||||
@ -116,7 +116,10 @@ charge would not be conserved. As a consequence, no checks on atomic
|
||||
charges are performed, and successful switches update the atom type but
|
||||
not the atom charge. While it is possible to use *semi-grand* with
|
||||
groups of atoms that have different charges, these charges will not be
|
||||
changed when the atom types change.
|
||||
changed when the atom types change. The same applies for systems
|
||||
with per-atom masses: non *semi-grand* will swap atom masses, but
|
||||
the masses have to be the same each for the atom types. When using
|
||||
*semi-grand* no per-atom masses are changed.
|
||||
|
||||
Since this fix computes total potential energies before and after
|
||||
proposed swaps, even complicated potential energy calculations are
|
||||
@ -184,11 +187,10 @@ When this fix is used with a :doc:`hybrid pair style <pair_hybrid>`
|
||||
system, only swaps between atom types of the same sub-style (or
|
||||
combination of sub-styles) are permitted.
|
||||
|
||||
This fix cannot be used with systems that do not have per-type masses
|
||||
(e.g. atom style sphere) since the implemented algorithm pre-computes
|
||||
velocity rescaling factors from per-type masses and ignores any per-atom
|
||||
masses, if present. In case both, per-type and per-atom masses are
|
||||
present, a warning is printed.
|
||||
This fix can be used with systems that have per-atom masses
|
||||
(e.g. atom style sphere) provided all atoms of the types handled
|
||||
by this fix have the same mass per type. The fix will check for that.
|
||||
In case both, per-type and per-atom masses are present, a warning is printed.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
143
doc/src/fix_atom_weight_apip.rst
Normal file
@ -0,0 +1,143 @@
|
||||
.. index:: fix atom_weight/apip
|
||||
|
||||
fix atom_weight/apip command
|
||||
============================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix ID group-ID atom_weight/apip nevery fast_potential precise_potential lambda_input lambda_zone group_lambda_input [no_rescale]
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* atom_weight/apip = style name of this fix command
|
||||
* nevery = perform load calculation every this many steps
|
||||
* fast_potential = *eam* or *ace* for time measurements of the corresponding pair_style or float for constant time
|
||||
* precise_potential = *ace* for a time measurement of the pair_style pace/apip or float for constant time
|
||||
* lambda_input = *lambda/input* for a time measurement of pair_style lambda/input/apip or float for constant time
|
||||
* lambda_zone = *lambda/zone* for a time measurement of pair_style lambda/zone/apip or float for constant time
|
||||
* group_lambda_input = group-ID of the group for which lambda_input is computed
|
||||
* no_rescale = do not rescale the work per processor to the measured total force-computation time
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix 2 all atom_weight/apip 50 eam ace lambda/input lambda/zone all
|
||||
fix 2 all atom_weight/apip 50 1e-05 0.0004 4e-06 4e-06 all
|
||||
fix 2 all atom_weight/apip 50 ace ace 4e-06 4e-06 all no_rescale
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
This command approximates the load every atom causes when an
|
||||
adaptive-precision interatomic potential (APIP) according to
|
||||
:ref:`(Immel) <Immel2025_2>` is used.
|
||||
This approximated load can be saved as atomic variable and
|
||||
used as input for the dynamic load balancing via the
|
||||
:doc:`fix balance <fix_balance>` command.
|
||||
|
||||
An adaptive-precision potential like :doc:`eam/apip <pair_eam_apip>`
|
||||
and :doc:`pace/apip <pair_pace_apip>` is calculated only
|
||||
for a subset of atoms.
|
||||
The switching parameter that determines per atom, which potential energy is
|
||||
used, can be also calculated by
|
||||
:doc:`pair_style lambda/input/apip <pair_lambda_input_apip>`.
|
||||
A spatial switching zone, that ensures a smooth transition between two
|
||||
different interatomic potentials, can be calculated by
|
||||
:doc:`pair_style lambda/zone/apip <pair_lambda_zone_apip>`.
|
||||
Thus, there are up to four force-subroutines, that are computed only for a
|
||||
subset of atoms and combined via the pair_style :doc:`hybrid/overlay <pair_hybrid>`.
|
||||
For all four force-subroutines, the average work per atom is be measured
|
||||
per processor by the corresponding pair_style.
|
||||
This fix extracts these measurements of the pair styles every *nevery*
|
||||
steps. The average compute times are used to calculates a per-atom vector with
|
||||
the approximated atomic weight, whereas the average compute time of the four
|
||||
subroutines contributes only to the load of atoms, for which the corresponding
|
||||
subroutine was calculated.
|
||||
If not disabled via *no_rescale*, the so calculated load is
|
||||
rescaled per processor so that the total atomic compute time matches the
|
||||
also measured total compute time of the whole pair_style.
|
||||
This atomic weight is intended to be used
|
||||
as input for :doc:`fix balance <fix_balance>`:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
variable nevery equal 10
|
||||
fix weight_atom all atom_weight/apip ${nevery} eam ace lambda/input lambda/zone all
|
||||
variable myweight atom f_weight_atom
|
||||
fix balance all balance ${nevery} 1.1 rcb weight var myweight
|
||||
|
||||
Furthermore, this fix provides the over the processors averaged compute time of the
|
||||
four pair_styles, which are used to approximate the atomic weight, as vector.
|
||||
|
||||
----------
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
No information about this fix is written to
|
||||
:doc:`binary restart files <restart>`. None of the
|
||||
:doc:`fix_modify <fix_modify>` options are relevant to this fix.
|
||||
|
||||
This fix produces a per-atom vector that contains the atomic
|
||||
weight of each atom.
|
||||
The per-atom vector can only be accessed on timesteps that are multiples
|
||||
of *nevery*.
|
||||
|
||||
Furthermore, this fix computes a global vector of length 4 with
|
||||
statistical information about the four different (possibly)
|
||||
measured compute times per force subroutine. The four
|
||||
values in the vector are as follows:
|
||||
|
||||
#. average compute time for one atom using the fast pair_style
|
||||
#. average compute time for one atom using the precise pair_style
|
||||
#. average compute time of lambda/input/apip for one atom
|
||||
#. average compute time of lambda/zone/apip for one atom
|
||||
|
||||
The compute times are computed as average of all processors that
|
||||
measured at least one computation of the corresponding style.
|
||||
The vector values calculated by this fix are "intensive" and
|
||||
updated whenever the per-atom vector is computed, i.e., in
|
||||
timesteps that are multiples of *nevery*.
|
||||
|
||||
The vector and the per-atom vector can be accessed by various
|
||||
:doc:`output commands <Howto_output>`.
|
||||
|
||||
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command. This fix is not invoked during
|
||||
:doc:`energy minimization <minimize>`.
|
||||
|
||||
----------
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This fix is part of the APIP package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix balance <fix_balance>`,
|
||||
:doc:`fix lambda/apip <fix_lambda_apip>`,
|
||||
:doc:`fix lambda_thermostat/apip <fix_lambda_thermostat_apip>`,
|
||||
:doc:`pair_style lambda/zone/apip <pair_lambda_zone_apip>`,
|
||||
:doc:`pair_style lambda/input/apip <pair_lambda_input_apip>`,
|
||||
:doc:`pair_style eam/apip <pair_eam_apip>`,
|
||||
:doc:`pair_style pace/apip <pair_pace_apip>`,
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
*no_rescale* is not used by default.
|
||||
|
||||
----------
|
||||
|
||||
.. _Immel2025_2:
|
||||
|
||||
**(Immel)** Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025)
|
||||
@ -21,7 +21,7 @@ Syntax
|
||||
* Rmin = two atoms separated by less than Rmin can bond (distance units)
|
||||
* bondtype = type of created bonds (integer or type label)
|
||||
* zero or more keyword/value pairs may be appended to args
|
||||
* keyword = *iparam* or *jparam* or *prob* or *atype* or *dtype* or *itype* or *aconstrain*
|
||||
* keyword = *iparam* or *jparam* or *prob* or *atype* or *dtype* or *itype* or *aconstrain* or *molecule*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
@ -43,6 +43,10 @@ Syntax
|
||||
*aconstrain* value = amin amax
|
||||
amin = minimal angle at which new bonds can be created
|
||||
amax = maximal angle at which new bonds can be created
|
||||
*molecule* value = *off* or *inter* or *intra*
|
||||
*off* = allow both inter- and intramolecular reactions (default)
|
||||
*inter* = search for reactions between molecules with different IDs
|
||||
*intra* = search for reactions within the same molecule
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
@ -52,6 +56,7 @@ Examples
|
||||
fix 5 all bond/create 10 1 2 0.8 1
|
||||
fix 5 all bond/create 1 3 3 0.8 1 prob 0.5 85784 iparam 2 3
|
||||
fix 5 all bond/create 1 3 3 0.8 1 prob 0.5 85784 iparam 2 3 atype 1 dtype 2
|
||||
fix 5 all bond/create 10 13 25 7 28 iparam 1 15 jparam 1 27 prob 0.2 91322 molecule inter
|
||||
fix 5 all bond/create/angle 10 1 2 1.122 1 aconstrain 120 180 prob 1 4928459 iparam 2 1 jparam 2 2
|
||||
|
||||
labelmap atom 1 c1 2 n2
|
||||
@ -123,6 +128,8 @@ actually created. The *fraction* setting must be a value between 0.0
|
||||
and 1.0. A uniform random number between 0.0 and 1.0 is generated and
|
||||
the eligible bond is only created if the random number is less than *fraction*.
|
||||
|
||||
The *molecule* keyword can be used to force the reaction to be intermolecular, intramolecular or either. When the value is set to *off*, molecule IDs are not considered when searching for reactions (default). When the value is set to *inter*, atoms must have different molecule IDs in order to be considered for the reaction. When the value is set to *intra*, only atoms with the same molecule ID are considered for the reaction.
|
||||
|
||||
The *aconstrain* keyword is only available with the fix
|
||||
bond/create/angle command. It allows one to specify minimum and maximum
|
||||
angles *amin* and *amax*, respectively, between the two prospective bonding
|
||||
|
||||
@ -298,7 +298,8 @@ Note that it should return the "change" in box length, not the
|
||||
absolute box length. This means it should evaluate to 0.0 when
|
||||
invoked on the initial timestep of the run following the definition of
|
||||
fix deform. It should evaluate to a value > 0.0 to dilate the box at
|
||||
future times, or a value < 0.0 to compress the box.
|
||||
future times, or a value < 0.0 to compress the box. The exception
|
||||
would be if the run command uses the *pre no* option.
|
||||
|
||||
The variable *name2* must also be an :doc:`equal-style variable
|
||||
<variable>` and should calculate the rate of box length change, in
|
||||
|
||||
@ -1,9 +1,12 @@
|
||||
.. index:: fix electron/stopping
|
||||
.. index:: fix electron/stopping/kk
|
||||
.. index:: fix electron/stopping/fit
|
||||
|
||||
fix electron/stopping command
|
||||
=============================
|
||||
|
||||
Accelerator Variants: *electron/stopping/kk*
|
||||
|
||||
fix electron/stopping/fit command
|
||||
=================================
|
||||
|
||||
@ -157,6 +160,18 @@ of the atom types. There is an examples/PACKAGES/electron_stopping/ directory,
|
||||
which illustrates uses of this command. Details of this implementation are
|
||||
further described in :ref:`Stewart2018 <Stewart2018>` and :ref:`Lee2020 <Lee2020>`.
|
||||
|
||||
----------
|
||||
|
||||
.. include:: accel_styles.rst
|
||||
|
||||
.. note::
|
||||
|
||||
The region keyword is supported by Kokkos, but a Kokkos-enabled
|
||||
region must be used. See the region :doc:`region <region>` command for
|
||||
more information.
|
||||
|
||||
----------
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
250
doc/src/fix_hmc.rst
Normal file
@ -0,0 +1,250 @@
|
||||
.. index:: fix hmc
|
||||
|
||||
fix hmc command
|
||||
===============
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix ID group-ID hmc N seed T keyword values ...
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* hmc = style name of this fix command
|
||||
* N = invoke a Monte Carlo step every N steps
|
||||
* seed = random # seed (positive integer)
|
||||
* T = temperature for assigning velocities and acceptance criterion
|
||||
* one or more keyword/value pairs may be appended
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
keyword = *rigid* or *resample* or *mom*
|
||||
*rigid* value = rigidID
|
||||
rigidID = ID of :doc:`fix rigid/small <fix_rigid>` command
|
||||
*resample* value = *yes* or *no*
|
||||
*mom* value = *yes* or *no*
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix 1 all hmc 10 123 500
|
||||
fix hmc_water all hmc 100 123 298.15 rigid 1
|
||||
fix 2 all hmc 10 12345 300 mom no resample yes
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
.. versionadded:: TBD
|
||||
|
||||
This fix implements the hybrid or Hamiltonian Monte Carlo (HMC)
|
||||
algorithm. The basic idea is to use molecular dynamics (MD) to
|
||||
generate trial MC "moves" which are then accepted or rejected via the
|
||||
Metropolis criterion. In this context, an MC "move" is the new
|
||||
configuration of particles after *N* MD steps, i.e. all the particles
|
||||
in the system have moved to new positions. HMC generates a canonical
|
||||
distribution in configuration space. More details on the theory behind
|
||||
HMC can be found in the references, :ref:`(Mehlig) <Mehlig1>` and
|
||||
:ref:`(Mehlig) <Mehlig2>`.
|
||||
|
||||
The details of the HMC algorithm for a repeating series of $N$ MD
|
||||
steps are as follows:
|
||||
|
||||
(1) The configuration of the system is stored along with its current
|
||||
total energy. This includes all particle positions and velocities and other
|
||||
per-atom properties (e.g. dipole orientation vector for particles with
|
||||
dipole moments).
|
||||
|
||||
(2) The system is time integrated in the NVE ensemble for the
|
||||
specified *N* MD steps and the new energy is calculated. The new
|
||||
configuration is the trial "move" to accept or reject.
|
||||
|
||||
(3) The energy change :math:`\Delta{H}` in the Hamiltonian of the
|
||||
system due to the "move" is calculated by the following equation:
|
||||
|
||||
.. math::
|
||||
|
||||
\Delta{H} = H(q',p') - H(q,p)
|
||||
|
||||
The new configuration is then accepted/rejected according to the
|
||||
Metropolis criterion with probability:
|
||||
|
||||
.. math::
|
||||
|
||||
p^{acc} = min(1,e^{\frac{-\Delta{H}}{k_B T}})
|
||||
|
||||
where *T* is the specified temperature.
|
||||
|
||||
The idea of HMC is to use a timestep large enough that total energy is
|
||||
*not* conserved. The change in total energy (the Hamiltonian) is what
|
||||
the Metropolis criterion is based on, not the change in potential
|
||||
energy.
|
||||
|
||||
(4) If accepted, the new configuration becomes the starting point for
|
||||
the next trial MC "move". If *resample* is *yes* then the velocities are
|
||||
resampled at this point as well.
|
||||
|
||||
(5) If rejected, the old configuration (from *N* steps ago) is
|
||||
restored and new momenta (velocities) are assigned to each particle
|
||||
in the fix group by randomly resampling from a normal distribution
|
||||
at the specified temperature $T$ using the following equation:
|
||||
|
||||
.. math::
|
||||
|
||||
p_{x,y,z} = \textbf{N}(0,1) \sqrt{\frac{k_B T}{2 m^2}}
|
||||
|
||||
The velocity-modified "old" configuration becomes the starting point
|
||||
for the next trial MC "move".
|
||||
|
||||
.. note::
|
||||
|
||||
HMC should be run with a larger timestep than would be used for
|
||||
traditional MD, which enables total energy fluctuations and
|
||||
generation of new conformations which MD would not normally generate
|
||||
as quickly. The timestep size may also affect the acceptance ratio
|
||||
as a larger timestep will lead to larger and more extreme MC moves
|
||||
which are less likely to be accepted. The timestep size must strike
|
||||
a balance between allowing the total energy to change and generating
|
||||
errors such as lost atoms due to atomic overlap. This means that
|
||||
during the MD portion of the algorithm, unphysical dynamics will take
|
||||
place, such as large temperature fluctuations and large forces
|
||||
between atoms. This is expected and is part of the HMC algorithm, as
|
||||
the MD step is not intended to produce a physically realistic
|
||||
trajectory, but rather to generate a new configuration of particles
|
||||
that can be accepted or rejected based on the Metropolis criterion.
|
||||
|
||||
.. note::
|
||||
|
||||
High acceptance ratios indicate that the MC algorithm is inefficient,
|
||||
as it is not generating new configurations of particles any faster
|
||||
than MD would on its own. In the limit of an acceptance ratio of 1.0,
|
||||
the algorithm is equivalent to MD (with momentum resampling every *N*
|
||||
timesteps if *resample* = *yes*), and no benefit is gained from MC.
|
||||
A good rule of thumb is to aim for an acceptance ratio of 0.5 to 0.8,
|
||||
which can be monitored via the output of this fix. This can be
|
||||
achieved by adjusting the *N* parameter and the timestep size.
|
||||
Increasing either of these values will increase the size of the total
|
||||
energy fluctuations, which can decrease acceptance ratio. Increasing
|
||||
*N* will also increase the computation time for each MC step, as more
|
||||
MD steps are performed before each acceptance/rejection decision. As
|
||||
noted above, increasing the timestep too much can lead to LAMMPS
|
||||
errors due to lost atoms or bonds, so both of these parameters should
|
||||
be chosen carefully.
|
||||
|
||||
.. note::
|
||||
|
||||
This fix is designed to be used only for constant NVE simulations.
|
||||
No thermostat or barostat should be used, though LAMMPS does not
|
||||
check for this. A :doc:`fix nve <fix_nve>` command must be defined
|
||||
to perform time integration for the MD portion of the algorithm. See
|
||||
the explanation of the *rigid* keyword below for an exception when
|
||||
rigid bodies are defined. Also note that only per-atom data is
|
||||
restored on MC move rejection, so anything which adds or remove
|
||||
particles, changes the box size, or has some external state not
|
||||
dependent on per-atom data will have undefined behavior.
|
||||
|
||||
----------
|
||||
|
||||
The keyword/value options are as follows:
|
||||
|
||||
The *rigid* keyword enables use of HMC for systems containing a
|
||||
collection of small rigid bodies, with or without solvent (atomic
|
||||
fluid or non-rigid molecular fluid).
|
||||
|
||||
The *rigidID* value should be the ID of a :doc:`fix rigid/small
|
||||
<fix_rigid>` or :doc:`fix rigid/nve/small <fix_rigid>` command which
|
||||
defines the rigid bodies. Its integrator will be used during the MD
|
||||
timesteps. If there are additional particles in the system,
|
||||
e.g. solvent, they should be time-integrated by a :doc:`fix nve
|
||||
<fix_nve>` command as explained above.
|
||||
|
||||
The *resample* keyword determines whether velocities are also
|
||||
resampled upon acceptance in step (4) above, in addition to step (5).
|
||||
If *resample* = *yes*, velocities are resampled upon acceptance. If
|
||||
*resample* = *no* (default), velocities are not resampled upon
|
||||
acceptance.
|
||||
|
||||
The *mom* keyword sets the linear momentum of the ensemble of
|
||||
particles each time velocities are reset in steps (4 or 5) above. If
|
||||
*mom* = *yes* (default), the linear momentum of the ensemble of
|
||||
velocities is zeroed. If *mom* = *no*, the linear momentum of the
|
||||
ensemble of velocities is not zeroed.
|
||||
|
||||
----------
|
||||
|
||||
This fix creates several additional computes for monitoring the energy
|
||||
and virial of the system and storing/restoring the system state. This
|
||||
is done internally, as if these commands had been issued, where ID is
|
||||
the ID of this fix:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
compute hmc_ke_ID all ke
|
||||
compute hmc_pe_ID all pe
|
||||
compute hmc_peatom_ID all pe/atom
|
||||
compute hmc_press_ID all pressure NULL virial
|
||||
compute hmc_pressatom_ID all stress/atom NULL virial
|
||||
|
||||
The output of these computes can be accessed by the input script,
|
||||
along with the other outputs described in the next section.
|
||||
|
||||
----------
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
No information about this fix is written to :doc:`binary restart files
|
||||
<restart>`. None of the :doc:`fix_modify <fix_modify>` options are
|
||||
relevant to this fix.
|
||||
|
||||
This fix calculates a global scalar and global vector of length 5,
|
||||
which can be accessed by various :doc:`output commands
|
||||
<Howto_output>`. The scalar is the fraction (0-1) of attempted MC
|
||||
moves which have been accepted. The vector stores the following
|
||||
quantities:
|
||||
|
||||
* 1 = cumulative number of accepted moves
|
||||
* 2 = cumulative number of rejected moves
|
||||
* 3 = change in potential energy for last trial move
|
||||
* 4 = change in kinetic energy for last trial move
|
||||
* 5 = change in total energy (kinetic + potential energy) for last trial move
|
||||
|
||||
These values are updated once every *N* timesteps. The scalar and
|
||||
cumulative counts are "intensive"; the three energies are "extensive"
|
||||
and are in energy :doc:`units <units>`.
|
||||
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command. This fix is not invoked during
|
||||
:doc:`energy minimization <minimize>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This fix is part of the MC package and requires the RIGID package to
|
||||
be installed. It is only enabled if LAMMPS was built with both
|
||||
packages. See the :doc:`Build package <Build_package>` doc page for
|
||||
more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix nvt <fix_nh>`, :doc:`fix gcmc <fix_gcmc>`,
|
||||
:doc:`fix tfmc <fix_tfmc>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
The option defaults are resample = no and mom = yes.
|
||||
|
||||
----------
|
||||
|
||||
.. _Mehlig1:
|
||||
|
||||
**(Mehlig1)** Mehlig, B., Heermann, D. W., & Forrest, B. M. (1992).
|
||||
Hybrid Monte Carlo method for condensed-matter systems. Physical Review B, 45(2), 679.
|
||||
|
||||
.. _Mehlig2:
|
||||
|
||||
**(Mehlig2)** Mehlig, B., Heermann, D. W., & Forrest, B. M. (1992).
|
||||
Exact langevin algorithms. Molecular Physics, 76(6), 1347-1357.
|
||||
262
doc/src/fix_lambda_apip.rst
Normal file
@ -0,0 +1,262 @@
|
||||
.. index:: fix lambda/apip
|
||||
|
||||
fix lambda/apip command
|
||||
=======================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix ID group-ID lambda/apip thr_lo thr_hi keyword args ...
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* lambda/apip = style name of this fix command
|
||||
* thr_lo = value below which :math:`\lambda_i^\text{input}` results in a switching parameter of 1
|
||||
* thr_hi = value above which :math:`\lambda_i^\text{input}` results in a switching parameter of 0
|
||||
* zero or one keyword/args pairs may be appended
|
||||
* keyword = *time_averaged_zone* or *min_delta_lambda* or *lambda_non_group* or *store_atomic_stats* or *dump_atomic_history* or *group_fast* or *group_precise* or *group_ignore_lambda_input*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*time_averaged_zone* args = cut_lo cut_hi history_len_lambda_input history_len_lambda
|
||||
cut_lo = distance at which the radial function decreases from 1
|
||||
cut_hi = distance from which on the radial function is 0
|
||||
history_len_lambda_input = number of time steps for which lambda_input is averaged
|
||||
history_len_lambda = number of time steps for which the switching parameter is averaged
|
||||
*min_delta_lambda* args = delta
|
||||
delta = value below which changes of the switching parameter are neglected (>= 0)
|
||||
*lambda_non_group* args = lambda_ng
|
||||
lambda_ng = *precise* or *fast* or float
|
||||
*precise* = assign a constant switching parameter of 0 to atoms, that are not in the group specified by group-ID
|
||||
*fast* = assign a constant switching parameter of 1 to atoms, that are not in the group specified by group-ID
|
||||
float = assign this constant switching parameter to atoms, that are not in the group specified by group-ID (0 <= float <= 1)
|
||||
*group_fast* args = group-ID-fast
|
||||
group-ID-fast = the switching parameter of 1 is used instead of the one computed by lambda_input for atoms in the group specified by group-ID-fast
|
||||
*group_precise* args = group-ID-precise
|
||||
group-ID-precise = the switching parameter of 0 is used instead of the one computed by lambda_input for atoms in the group specified by group-ID-precise
|
||||
*group_ignore_lambda_input* args = group-ID-ignore-lambda-input
|
||||
group-ID-ignore-lambda-input = the switching parameter of lambda_ng is used instead of the one computed by lambda_input for atoms in the group specified by group-ID-ignore-lambda-input
|
||||
*store_atomic_stats* args = none
|
||||
*dump_atomic_history* args = none
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix 2 all lambda/apip 3.0 3.5 time_averaged_zone 4.0 12.0 110 110 min_delta_lambda 0.01
|
||||
fix 2 mobile lambda/apip 3.0 3.5 time_averaged_zone 4.0 12.0 110 110 min_delta_lambda 0.01 group_ignore_lambda_input immobile lambda_non_group fast
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
The potential energy :math:`E_i` of an atom :math:`i` of an adaptive-precision
|
||||
potential according to :ref:`(Immel) <Immel2025_3>` is given by
|
||||
|
||||
.. math::
|
||||
|
||||
E_i = \lambda_i E_i^\text{(fast)} + (1-\lambda_i) E_i^\text{(precise)},
|
||||
|
||||
whereas :math:`E_i^\text{(fast)}` is the potential energy of atom :math:`i`
|
||||
according to a fast interatomic potential like EAM,
|
||||
:math:`E_i^\text{(precise)}` is the potential energy according to a precise
|
||||
interatomic potential such as ACE and :math:`\lambda_i\in[0,1]` is the
|
||||
switching parameter that decides which potential energy is used.
|
||||
This fix calculates the switching parameter :math:`\lambda_i` based on the
|
||||
input provided from :doc:`pair_style lambda/input/apip <pair_lambda_input_apip>`.
|
||||
|
||||
The calculation of the switching parameter is described in detail in
|
||||
:ref:`(Immel) <Immel2025_3>`.
|
||||
This fix calculates the switching parameter for all atoms in the
|
||||
:doc:`group <group>`
|
||||
described by group-ID, while the value of *lambda_non_group* is used
|
||||
as switching parameter for all other atoms.
|
||||
|
||||
First, this fix calculates per atom :math:`i` the time averaged input
|
||||
:math:`\lambda^\text{input}_{\text{avg},i}` from
|
||||
:math:`\lambda^\text{input}_{i}`, whereas the number of averaged timesteps
|
||||
can be set via *time_averaged_zone*.
|
||||
|
||||
.. note::
|
||||
|
||||
:math:`\lambda^\text{input}_{i}` is calculated by
|
||||
:doc:`pair_style lambda/input/apip <pair_lambda_input_apip>`, which needs to be included
|
||||
in the input script as well.
|
||||
|
||||
The time averaged input :math:`\lambda^\text{input}_{\text{avg},i}` is then
|
||||
used to calculate the switching parameter
|
||||
|
||||
.. math::
|
||||
|
||||
\lambda_{0,i}(t) = f^\text{(cut)} \left(\frac{\lambda_{\text{avg},i}^\text{input}(t) - \lambda_\text{lo}^\text{input}}{\lambda_\text{hi}^\text{input} - \lambda_\text{lo}^\text{input}} \right)\,,
|
||||
|
||||
whereas the thresholds :math:`\lambda_\text{hi}^\text{input}`
|
||||
and :math:`\lambda_\text{lo}^\text{input}` are set by the
|
||||
values provided as *thr_lo* and *thr_hi* and :math:`f^\text{(cut)}(x)` is a cutoff function
|
||||
that is 1 for :math:`x\leq 0`, decays from 1 to 0 for :math:`x\in[0,1]`, and
|
||||
is 0 for :math:`x\geq 1`.
|
||||
If the *group_precise* argument is used, :math:`\lambda_{0,i}=0` is used for all
|
||||
atoms :math:`i` assigned to the corresponding :doc:`group <group>`.
|
||||
If the *group_fast* argument is used, :math:`\lambda_{0,i}=1` is used for all
|
||||
atoms :math:`i` assigned to the corresponding :doc:`group <group>`.
|
||||
If an atom is in the groups *group_fast* and *group_precise*,
|
||||
:math:`\lambda_{0,i}=0` is used.
|
||||
If the *group_ignore_lambda_input* argument is used,
|
||||
:math:`\lambda_i^\text{input}` is not computed for all atoms :math:`i` assigned
|
||||
to the corresponding :doc:`group <group>`; instead, if the value is not already
|
||||
set by *group_fast* or *group_precise*, the value of *lambda_non_group* is
|
||||
used.
|
||||
|
||||
.. note::
|
||||
|
||||
The computation of :math:`\lambda_i^\text{input}` is not required for
|
||||
atoms that are in the groups *group_fast* and *group_precise*.
|
||||
Thus, one should use *group_ignore_lambda_input* and prevent the
|
||||
computation of :math:`\lambda_i^\text{input}` for all atoms, for
|
||||
which a constant input is used.
|
||||
|
||||
A spatial transition zone between the fast and the precise potential is
|
||||
introduced via
|
||||
|
||||
.. math::
|
||||
|
||||
\lambda_{\text{min},i}(t) = \text{min}\left(\left\{1 - (1 -\lambda_{0,j}(t)) f^\text{(cut)}\left(\frac{r_{ij}(t)-r_{\lambda,\text{lo}}}{r_{\lambda,\text{hi}} - r_{\lambda,\text{lo}}}\right) : j \in \Omega_{\lambda,i} \right\}\right)\,,
|
||||
|
||||
whereas the thresholds :math:`r_{\lambda,\text{lo}}` and
|
||||
:math:`r_{\lambda,\text{hi}}`
|
||||
of the cutoff function are set via *time_averaged_zone* and
|
||||
:math:`\Omega_{\lambda,i}` is the set of
|
||||
neighboring atoms of atom :math:`i`.
|
||||
|
||||
.. note::
|
||||
|
||||
:math:`\lambda_{\text{min},i}` is calculated by
|
||||
:doc:`pair_style lambda/zone/apip <pair_lambda_zone_apip>`, which needs to be included
|
||||
in the input script as well.
|
||||
|
||||
The switching parameter is smoothed by the calculation of the time average
|
||||
|
||||
.. math::
|
||||
|
||||
\lambda_{\text{avg},i}(t) = \frac{1}{N_{\lambda,\text{avg}}} \sum_{n=1}^{N_{\lambda,\text{avg}}} \lambda_{\text{min},i}(t - n \Delta t)\,,
|
||||
|
||||
whereas :math:`\Delta t` is the :doc:`timestep <timestep>` and
|
||||
:math:`N_{\lambda,\text{avg}}` is the number of averaged timesteps, that
|
||||
can be set via *time_averaged_zone*.
|
||||
|
||||
Finally, numerical fluctuations of the switching parameter are suppressed by the usage of
|
||||
|
||||
.. math::
|
||||
|
||||
\lambda_{i}(t) = \left\{
|
||||
\begin{array}{ll}
|
||||
\lambda_{\text{avg},i}(t) & \text{ for } \left|\lambda_{\text{avg},i}(t) - \lambda_{i}(t-\Delta t)\right|\geq \Delta\lambda_\text{min} \text{ or } \lambda_{\text{avg},i}(t)\in\{0,1\}, \\
|
||||
\lambda_{i}(t-\Delta t) & \text{ otherwise}\,,
|
||||
\end{array}
|
||||
\right.
|
||||
|
||||
whereas the minimum change :math:`\Delta\lambda_\text{min}` is set by the
|
||||
*min_delta_lambda* argument.
|
||||
|
||||
.. note::
|
||||
|
||||
*group_fast* affects only :math:`\lambda_{0,i}(t)`. The switching parameter
|
||||
of atoms in this :doc:`group <group>` may change due to the calculation of the
|
||||
spatial switching zone.
|
||||
A switching parameter of 1 can be enforced by excluding the corresponding
|
||||
atoms from the :doc:`group <group>` described by group-ID and using *lambda_non_group* 1
|
||||
as argument.
|
||||
|
||||
----------
|
||||
|
||||
A code example for the calculation of the switching parameter for an
|
||||
adaptive-precision potential is given in the following:
|
||||
The adaptive-precision potential is created
|
||||
by combining :doc:`pair_style eam/fs/apip <pair_eam_apip>`
|
||||
and :doc:`pair_style pace/precise/apip <pair_pace_apip>`.
|
||||
The input, from which the switching parameter is calculated, is provided
|
||||
by :doc:`pair lambda/input/csp/apip <pair_lambda_input_apip>`.
|
||||
The switching parameter is calculated by this fix, whereas the spatial
|
||||
transition zone of the switching parameter is calculated by
|
||||
:doc:`pair_style lambda/zone/apip <pair_lambda_zone_apip>`.
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style hybrid/overlay eam/fs/apip pace/precise/apip lambda/input/csp/apip fcc cutoff 5.0 lambda/zone/apip 12.0
|
||||
pair_coeff * * eam/fs/apip Cu.eam.fs Cu
|
||||
pair_coeff * * pace/precise/apip Cu_precise.yace Cu
|
||||
pair_coeff * * lambda/input/csp/apip
|
||||
pair_coeff * * lambda/zone/apip
|
||||
fix 2 all lambda/apip 3.0 3.5 time_averaged_zone 4.0 12.0 110 110 min_delta_lambda 0.01
|
||||
|
||||
|
||||
----------
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
The saved history of the switching parameter :math:`\lambda_i`
|
||||
and the saved history of
|
||||
:math:`\lambda_i^\text{input}` are written to
|
||||
:doc:`binary restart files <restart>` allow a smooth restart of a simulation.
|
||||
None of the :doc:`fix_modify <fix_modify>` options are relevant to this fix.
|
||||
|
||||
If the *store_atomic_stats* argument is used, basic statistics is provided as
|
||||
per-atom array:
|
||||
|
||||
#. :math:`\lambda_i^\text{input}(t)`
|
||||
#. :math:`\lambda_{\text{avg},i}^\text{input}(t)`
|
||||
#. :math:`\lambda_{0,i}(t)`
|
||||
#. :math:`\lambda_{\text{min},i}(t)`
|
||||
#. :math:`\lambda_{i}(t)`
|
||||
|
||||
If the *dump_atomic_history* argument is used, the whole saved history
|
||||
of :math:`\lambda_i^\text{input}(t)` is appended to the previously
|
||||
mentioned array per atom.
|
||||
|
||||
The per-atom vector can be accessed by various
|
||||
:doc:`output commands <Howto_output>`.
|
||||
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command. This fix is not invoked during
|
||||
:doc:`energy minimization <minimize>`.
|
||||
|
||||
----------
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This fix is part of the APIP package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`pair_style lambda/zone/apip <pair_lambda_zone_apip>`,
|
||||
:doc:`pair_style lambda/input/apip <pair_lambda_input_apip>`,
|
||||
:doc:`pair_style eam/apip <pair_eam_apip>`,
|
||||
:doc:`pair_style pace/apip <pair_pace_apip>`,
|
||||
:doc:`fix atom_weight/apip <fix_atom_weight_apip>`
|
||||
:doc:`fix lambda_thermostat/apip <fix_lambda_thermostat_apip>`,
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
*min_delta_lambda* = 0,
|
||||
*lambda_non_group* = 1,
|
||||
*cut_lo* = 4.0,
|
||||
*cut_hi* = 12.0,
|
||||
*history_len_lambda_input* = 100,
|
||||
*history_len_lambda* = 100,
|
||||
*store_atomic_stats* is not used,
|
||||
*dump_atomic_history* is not used,
|
||||
*group_fast* is not used,
|
||||
*group_precise* is not used,
|
||||
*group_ignore_lambda_input* is not used
|
||||
|
||||
----------
|
||||
|
||||
.. _Immel2025_3:
|
||||
|
||||
**(Immel)** Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025)
|
||||
176
doc/src/fix_lambda_thermostat_apip.rst
Normal file
@ -0,0 +1,176 @@
|
||||
.. index:: fix lambda_thermostat/apip
|
||||
|
||||
fix lambda_thermostat/apip command
|
||||
==================================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix ID group-ID lambda_thermostat/apip keyword values ...
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* lambda_thermostat/apip = style name of this fix command
|
||||
* zero or more keyword/value pairs may be appended
|
||||
* keyword = *seed* or *store_atomic_forces* or *N_rescaling*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*seed* value = integer
|
||||
integer = integer that is used as seed for the random number generator (> 0)
|
||||
*store_atomic_forces* value = nevery
|
||||
nevery = provide per-atom output every this many steps
|
||||
*N_rescaling* value = groupsize
|
||||
groupsize = rescale this many neighboring atoms (> 1)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix 2 all lambda_thermostat/apip
|
||||
fix 2 all lambda_thermostat/apip N_rescaling 100
|
||||
fix 2 all lambda_thermostat/apip seed 42
|
||||
fix 2 all lambda_thermostat/apip seed 42 store_atomic_forces 1000
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
This command applies the local thermostat described in
|
||||
:ref:`(Immel) <Immel2025_4>`
|
||||
to conserve the energy when the switching parameters of an
|
||||
:doc:`adaptive-precision interatomic potential <Howto_apip>` (APIP)
|
||||
are updated while the gradient
|
||||
of the switching parameter is neglected in the force calculation.
|
||||
|
||||
.. warning::
|
||||
|
||||
The temperature change caused by this fix is only the means to the end of
|
||||
conserving the energy. Thus, this fix is not a classical thermostat, that
|
||||
ensures a given temperature in the system.
|
||||
All available thermostats are listed :doc:`here <Howto_thermostat>`.
|
||||
|
||||
The potential energy :math:`E_i` of an atom :math:`i` is given by the formula from
|
||||
:ref:`(Immel) <Immel2025_4>`
|
||||
|
||||
.. math::
|
||||
|
||||
E_i = \lambda_i E_i^\text{(fast)} + (1-\lambda_i) E_i^\text{(precise)},
|
||||
|
||||
whereas :math:`E_i^\text{(fast)}` is the potential energy of atom :math:`i`
|
||||
according to a fast interatomic potential like EAM,
|
||||
:math:`E_i^\text{(precise)}` is the potential energy according to a precise
|
||||
interatomic potential such as ACE and :math:`\lambda_i\in[0,1]` is the
|
||||
switching parameter that decides which potential energy is used.
|
||||
This potential energy and the corresponding forces are conservative when
|
||||
the switching parameter :math:`\lambda_i` is constant in time for all atoms
|
||||
:math:`i`.
|
||||
|
||||
For a conservative force calculation and dynamic switching parameters,
|
||||
the atomic force on an atom is given by
|
||||
:math:`F_i = -\nabla_i \sum_j E_j` and includes the derivative of the switching
|
||||
parameter :math:`\lambda_i`.
|
||||
The force contribution of this gradient of the switching function can cause
|
||||
large forces which are not similar to the forces of the fast or the precise
|
||||
interatomic potential as discussed in :ref:`(Immel) <Immel2025_4>`.
|
||||
Thus, one can neglect the gradient of the switching parameter in the force
|
||||
calculation and compensate for the violation of energy conservation by
|
||||
the application of the local thermostat implemented in this fix.
|
||||
One can compute the violation of the energy conservation :math:`\Delta H_i`
|
||||
for all atoms :math:`i` as discussed in :ref:`(Immel) <Immel2025_4>`.
|
||||
To locally correct this energy violation :math:`\Delta H_i`, one
|
||||
can rescale the velocity of atom :math:`i` and of neighboring atoms.
|
||||
The rescaling is done relative to the center-of-mass velocity of the
|
||||
group and, thus, conserves the momentum.
|
||||
|
||||
.. note::
|
||||
|
||||
This local thermostat provides the NVE ensemble rather than the NVT
|
||||
ensemble as
|
||||
the energy :math:`\Delta H_i` determines the rescaling factor rather than
|
||||
a temperature.
|
||||
|
||||
Velocities :math:`v` are updated by the integrator according to
|
||||
:math:`\Delta v_i = (F_i/m_i)\Delta t`, whereas `m` denotes the mass of atom
|
||||
:math:`i` and :math:`\Delta t` is the time step.
|
||||
One can interpret the velocity difference :math:`\Delta v` caused by the
|
||||
rescaling as the application of an additional force which is given by
|
||||
:math:`F^\text{lt}_i = (v^\text{unscaled}_i - v^\text{rescaled}_i) m_i
|
||||
/ \Delta t` :ref:`(Immel) <Immel2025_4>`.
|
||||
This additional force is computed when the *store_atomic_forces* option
|
||||
is used.
|
||||
|
||||
The local thermostat is not appropriate for simulations at a temperature of 0K.
|
||||
|
||||
.. note::
|
||||
|
||||
The maximum decrease of the kinetic energy is achieved with a rescaling
|
||||
factor of 0, i.e., the relative velocity of the group of rescaled atoms
|
||||
is set to zero. One cannot decrease the energy further. Thus, the
|
||||
local thermostat can fail, which is, however, reported by the returned
|
||||
vector.
|
||||
|
||||
----------
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
No information about this fix is written to
|
||||
:doc:`binary restart files <restart>`. None of the
|
||||
:doc:`fix_modify <fix_modify>` options are relevant to this fix.
|
||||
|
||||
If the *store_atomic_forces* option is used, this fix produces every
|
||||
*nevery* time steps a per-atom array that contains the theoretical force
|
||||
applied by the local thermostat in all three spatial dimensions in the first
|
||||
three components. :math:`\Delta H_i` is the fourth component of the per-atom
|
||||
array.
|
||||
The per-atom array can only be accessed on timesteps that are multiples
|
||||
of *nevery*.
|
||||
|
||||
Furthermore, this fix computes a global vector of length 6 with
|
||||
information about the rescaling:
|
||||
|
||||
#. number of atoms whose energy changed due to the last :math:`\lambda` update
|
||||
#. contribution of the potential energy to the last computed :math:`\Delta H`
|
||||
#. contribution of the kinetic energy to the last computed :math:`\Delta H`
|
||||
#. sum over all atoms of the absolute energy change caused by the last rescaling step
|
||||
#. energy change that could not be compensated accumulated over all timesteps
|
||||
#. number of atoms whose energy change could not be compensated accumulated over all timesteps
|
||||
|
||||
The vector and the per-atom vector can be accessed by various
|
||||
:doc:`output commands <Howto_output>`.
|
||||
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command. This fix is not invoked during
|
||||
:doc:`energy minimization <minimize>`.
|
||||
|
||||
----------
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This fix is part of the APIP package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix lambda/apip <fix_lambda_apip>`,
|
||||
:doc:`pair_style lambda/zone/apip <pair_lambda_zone_apip>`,
|
||||
:doc:`pair_style lambda/input/apip <pair_lambda_input_apip>`,
|
||||
:doc:`pair_style eam/apip <pair_eam_apip>`,
|
||||
:doc:`pair_style pace/apip <pair_pace_apip>`,
|
||||
:doc:`fix atom_weight/apip <fix_atom_weight_apip>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
seed = 42, N_rescaling = 200, *store_atomic_forces* is not used
|
||||
|
||||
----------
|
||||
|
||||
.. _Immel2025_4:
|
||||
|
||||
**(Immel)** Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025)
|
||||
264
doc/src/fix_neighbor_swap.rst
Normal file
@ -0,0 +1,264 @@
|
||||
.. index:: fix neighbor/swap
|
||||
|
||||
fix neighbor/swap command
|
||||
=========================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix ID group-ID neighbor/swap N X seed T R0 voro-ID keyword values ...
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* neighbor/swap = style name of this fix command
|
||||
* N = invoke this fix every N steps
|
||||
* X = number of swaps to attempt every N steps
|
||||
* seed = random # seed (positive integer)
|
||||
* T = scaling temperature of the MC swaps (temperature units)
|
||||
* R0 = scaling swap probability of the MC swaps (distance units)
|
||||
* voro-ID = valid voronoi compute id (compute voronoi/atom)
|
||||
* one or more keyword/value pairs may be appended to args
|
||||
* keywords *types* and *diff* are mutually exclusive, but one must be specified
|
||||
* keyword = *types* or *diff* or *ke* or *region* or *rates*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*types* values = two or more atom types (Integers in range [1,Ntypes] or type labels)
|
||||
*diff* values = one atom type
|
||||
*ke* value = *yes* or *no*
|
||||
*yes* = kinetic energy is conserved after atom swaps
|
||||
*no* = no conservation of kinetic energy after atom swaps
|
||||
*region* value = region-ID
|
||||
region-ID = ID of region to use as an exchange/move volume
|
||||
*rates* values = V1 V2 . . . Vntypes values to conduct variable diffusion for different atom types (unitless)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
compute voroN all voronoi/atom neighbors yes
|
||||
fix mc all neighbor/swap 10 160 15238 1000.0 3.0 voroN diff 2
|
||||
fix myFix all neighbor/swap 100 1 12345 298.0 3.0 voroN region my_swap_region types 5 6
|
||||
fix kmc all neighbor/swap 1 100 345 1.0 3.0 voroN diff 3 rates 3 1 6
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
.. versionadded:: TBD
|
||||
|
||||
This fix performs Monte-Carlo (MC) evaluations to enable kinetic
|
||||
Monte Carlo (kMC)-type behavior during MD simulation by allowing
|
||||
neighboring atoms to swap their positions. In contrast to the :doc:`fix
|
||||
atom/swap <fix_atom_swap>` command which swaps pairs of atoms anywhere
|
||||
in the simulation domain, the restriction of the MC swapping to
|
||||
neighbors enables a hybrid MD/kMC-like simulation.
|
||||
|
||||
Neighboring atoms are defined by using a Voronoi tesselation performed
|
||||
by the :doc:`compute voronoi/atom <compute_voronoi_atom>` command.
|
||||
Two atoms are neighbors if their Voronoi cells share a common face
|
||||
(3d) or edge (2d).
|
||||
|
||||
The selection of a swap neighbor is made using a distance-based
|
||||
criterion for weighting the selection probability of each swap, in the
|
||||
same manner as kMC selects a next event using relative probabilities.
|
||||
The acceptance or rejection of each swap is determined via the
|
||||
Metropolis criterion after evaluating the change in system energy due
|
||||
to the swap.
|
||||
|
||||
A detailed explanation of the original implementation of this
|
||||
algorithm can be found in :ref:`(Tavenner 2023) <TavennerMDkMC>`
|
||||
where it was used to simulated accelerated diffusion in an MD context.
|
||||
|
||||
Simulating inherently kinetically-limited behaviors which rely on rare
|
||||
events (such as atomic diffusion in a solid) is challenging for
|
||||
traditional MD since its relatively short timescale will not naturally
|
||||
sample many events. This fix addresses this challenge by allowing rare
|
||||
neighbor hopping events to be sampled in a kMC-like fashion at a much
|
||||
faster rate (set by the specified *N* and *X* parameters). This enables
|
||||
the processes of atomic diffusion to be approximated during an MD
|
||||
simulation, effectively decoupling the MD atomic vibrational timescale
|
||||
and the atomic hopping (kMC event) timescale.
|
||||
|
||||
The algorithm implemented by this fix is as follows:
|
||||
|
||||
- The MD simulation is paused every *N* steps
|
||||
- A Voronoi tesselation is performed for the current atom configuration.
|
||||
- Then *X* atom swaps are attempted, one after the other.
|
||||
- For each swap, an atom *I* is selected randomly from the list of
|
||||
atom types specified by either the *types* or *diff* keywords.
|
||||
- One of *I*'s Voronoi neighbors *J* is selected using the
|
||||
distance-weighted probability for each neighbor detailed below.
|
||||
- The *I,J* atom IDs are communicated to all processors so that a
|
||||
global energy evaluation can be performed for the post-swap state
|
||||
of the system.
|
||||
- The swap is accepted or rejected based on the Metropolis criterion
|
||||
using the energy change of the system and the specified temperature
|
||||
*T*.
|
||||
|
||||
Here are a few comments on the computational cost of the swapping
|
||||
algorithm.
|
||||
|
||||
1. The cost of a global energy evaluation is similar to that of an MD
|
||||
timestep.
|
||||
|
||||
2. Similar to other MC algorithms in LAMMPS, improved parallel
|
||||
efficiency is achieved with a smaller number of atoms per
|
||||
processor than would typically be used in an standard MD
|
||||
simulation. This is because the per-energy evaluation cost
|
||||
increases relative to the balance of MD/MC steps as indicated by
|
||||
1., but the communication cost remains relatively constant for a
|
||||
given number of MD steps.
|
||||
|
||||
3. The MC portion of the simulation will run dramatically slower if
|
||||
the pair style uses different cutoffs for different atom types (or
|
||||
type pairs). This is because each atom swap then requires a
|
||||
rebuild of the neighbor list to ensure the post-swap global energy
|
||||
can be computed correctly.
|
||||
|
||||
Limitations are imposed on selection of *I,J* atom pairs to avoid
|
||||
swapping of atoms which are outside of a reasonable cutoff (e.g. due to
|
||||
a Voronoi tesselation near free surfaces) though the use of a
|
||||
distance-weighted probability scaling.
|
||||
|
||||
----------
|
||||
|
||||
This section gives more details on other arguments and keywords.
|
||||
|
||||
The random number generator (RNG) used by all the processors for MC
|
||||
operations is initialized with the specified *seed*.
|
||||
|
||||
The distance-based probability is weighted by the specified *R0* which
|
||||
sets the radius :math:`r_0` in this formula
|
||||
|
||||
.. math::
|
||||
|
||||
p_{ij} = e^{(\frac{r_{ij}}{r_0})^2}
|
||||
|
||||
where :math:`p_{ij}` is the probability of selecting atom :math:`j` to
|
||||
swap with atom :math:`i`. Typically, a value for *R0* around the
|
||||
average nearest-neighbor spacing is appropriate. Since this is simply a
|
||||
probability weighting, the swapping behavior is not very sensitive to
|
||||
the exact value of *R0*.
|
||||
|
||||
The required *voro-ID* value is the compute-ID of a
|
||||
:doc:`compute voronoi/atom <compute_voronoi_atom>` command like
|
||||
this:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
compute compute-ID group-ID voronoi/atom neighbors yes
|
||||
|
||||
It must return per-atom list of valid neighbor IDs as in the
|
||||
:doc:`compute voronoi/atom <compute_voronoi_atom>` command.
|
||||
|
||||
The keyword *types* takes two or more atom types as its values. Only
|
||||
atoms *I* of the first atom type will be selected. Only atoms *J* of the
|
||||
remaining atom types will be considered as potential swap partners.
|
||||
|
||||
The keyword *diff* take a single atom type as its value. Only atoms
|
||||
*I* of the that atom type will be selected. Atoms *J* of all
|
||||
remaining atom types will be considered as potential swap partners.
|
||||
This includes the atom type specified with the *diff* keyword to
|
||||
account for self-diffusive hops between two atoms of the same type.
|
||||
|
||||
Note that the *neighbors yes* option must be enabled for use with this
|
||||
fix. The group-ID should include all the atoms which this fix will
|
||||
potentially select. I.e. the group-ID used in the voronoi compute should
|
||||
include the same atoms as that indicated by the *types* keyword. If the
|
||||
*diff* keyword is used, the group-ID should include atoms of all types
|
||||
in the simulation.
|
||||
|
||||
The keyword *ke* takes *yes* (default) or *no* as its value. It two
|
||||
atoms are swapped with different masses, then a value of *yes* will
|
||||
rescale their respective velocities to conserve the kinetic energy of
|
||||
the system. A value of *no* will perform no rescaling, so that
|
||||
kinetic energy is not conserved. See the restriction on this keyword
|
||||
below.
|
||||
|
||||
The *region* keyword takes a *region-ID* as its value. If specified,
|
||||
then only atoms *I* and *J* within the geometric region will be
|
||||
considered as swap partners. See the :doc:`region <region>` command
|
||||
for details. This means the group-ID for the :doc:`compute
|
||||
voronoi/atom <compute_voronoi_atom>` command also need only contain
|
||||
atoms within the region.
|
||||
|
||||
The keyword *rates* can modify the swap rate based on the type of atom
|
||||
*J*. Ntype values must be specified, where Ntype = the number of atom
|
||||
types in the system. Each value is used to scale the probability
|
||||
weighting given by the equation above. In the third example command
|
||||
above, a simulation has 3 atoms types. Atom *I*s of type 1 are
|
||||
eligible for swapping. Swaps may occur with atom *J*s of all 3 types.
|
||||
Assuming all *J* atoms are equidistant from an atom *I*, *J* atoms of
|
||||
type 1 will be 3x more likely to be selected as a swap partner than
|
||||
atoms of type 2. And *J* atoms of type 3 will be 6.5x more likely to
|
||||
be selected than atoms of type 2. If the *rates* keyword is not used,
|
||||
all atom types will be treated with the same probability during selection
|
||||
of swap attempts.
|
||||
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
This fix writes the state of the fix to :doc:`binary restart files
|
||||
<restart>`. This includes information about the random number generator
|
||||
seed, the next timestep for MC exchanges, and the number of exchange
|
||||
attempts and successes. See the :doc:`read_restart <read_restart>`
|
||||
command for info on how to re-specify a fix in an input script that
|
||||
reads a restart file, so that the operation of the fix continues in an
|
||||
uninterrupted fashion.
|
||||
|
||||
None of the :doc:`fix_modify <fix_modify>` options are relevant to this
|
||||
fix.
|
||||
|
||||
This fix computes a global vector of length 2, which can be accessed
|
||||
by various :doc:`output commands <Howto_output>`. The vector values are
|
||||
the following global cumulative quantities:
|
||||
|
||||
#. swap attempts
|
||||
#. swap accepts
|
||||
|
||||
The vector values calculated by this fix are "intensive".
|
||||
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command. This fix is not invoked during
|
||||
:doc:`energy minimization <minimize>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This fix is part of the MC package. It is only enabled if LAMMPS was
|
||||
built with that package. See the :doc:`Build package <Build_package>`
|
||||
doc page for more info. Also this fix requires that the :ref:`VORONOI
|
||||
package <PKG-VORONOI>` is installed, otherwise the fix will not be
|
||||
compiled.
|
||||
|
||||
The :doc:`compute voronoi/atom <compute_voronoi_atom>` command
|
||||
referenced by the required voro-ID must return neighboring atoms as
|
||||
illustrated in the examples above.
|
||||
|
||||
If this fix is used with systems that do not have per-type masses
|
||||
(e.g. atom style sphere), the *ke* keyword must be set to *off* since
|
||||
the implemented algorithm will not be able to re-scale velocities
|
||||
properly.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix nvt <fix_nh>`, :doc:`compute voronoi/atom <compute_voronoi_atom>`
|
||||
:doc:`delete_atoms <delete_atoms>`, :doc:`fix gcmc <fix_gcmc>`,
|
||||
:doc:`fix atom/swap <fix_atom_swap>`, :doc:`fix mol/swap <fix_mol_swap>`,
|
||||
:doc:`fix sgcmc <fix_sgcmc>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
The option defaults are *ke* = yes and *rates* = 1 for all atom types.
|
||||
|
||||
----------
|
||||
|
||||
.. _TavennerMDkMC:
|
||||
|
||||
**(Tavenner 2023)** J Tavenner, M Mendelev, J Lawson, Computational
|
||||
Materials Science, 218, 111929 (2023).
|
||||
@ -35,9 +35,9 @@ consistent with the microcanonical ensemble (NVE) provided there
|
||||
are (full) periodic boundary conditions and no other "manipulations"
|
||||
of the system (e.g. fixes that modify forces or velocities).
|
||||
|
||||
This fix invokes the velocity form of the
|
||||
Stoermer-Verlet time integration algorithm (velocity-Verlet). Other
|
||||
time integration options can be invoked using the :doc:`run_style <run_style>` command.
|
||||
This fix invokes the velocity form of the Stoermer-Verlet time
|
||||
integration algorithm (velocity-Verlet). Other time integration
|
||||
options can be invoked using the :doc:`run_style <run_style>` command.
|
||||
|
||||
----------
|
||||
|
||||
@ -48,11 +48,13 @@ time integration options can be invoked using the :doc:`run_style <run_style>` c
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
|
||||
are relevant to this fix. No global or per-atom quantities are stored
|
||||
by this fix for access by various :doc:`output commands <Howto_output>`.
|
||||
No information about this fix is written to :doc:`binary restart files
|
||||
<restart>`. None of the :doc:`fix_modify <fix_modify>` options are
|
||||
relevant to this fix. No global or per-atom quantities are stored by
|
||||
this fix for access by various :doc:`output commands <Howto_output>`.
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
|
||||
the :doc:`run <run>` command. This fix is not invoked during
|
||||
:doc:`energy minimization <minimize>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
@ -64,6 +64,7 @@ Syntax
|
||||
mass = mass scale for reduced units (mass units)
|
||||
planck = Planck's constant for other unit style
|
||||
mvv2e = mass * velocity^2 to energy conversion factor for other unit style
|
||||
*esynch* value = *yes* or *no* (only in *pimd/langevin/bosonic*)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
@ -72,8 +73,10 @@ Examples
|
||||
|
||||
fix 1 all pimd/nvt method nmpimd fmass 1.0 sp 2.0 temp 300.0 nhc 4
|
||||
fix 1 all pimd/langevin ensemble npt integrator obabo temp 113.15 thermostat PILE_L 1234 tau 1.0 iso 1.0 barostat BZP taup 1.0
|
||||
fix 1 all pimd/nvt/bosonic method pimd fmass 1.0 sp 1.0 temp 2.0 nhc 4
|
||||
fix 1 all pimd/langevin/bosonic integrator obabo temp 113.15 thermostat PILE_L 1234 tau 1.0
|
||||
|
||||
Example input files are provided in the examples/PACKAGES/pimd directory.
|
||||
Example input files are provided in the examples/PACKAGES/pimd and examples/PACKAGES/pimd_bosonic directories.
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
@ -116,6 +119,24 @@ beads on the other ring-polymers with the same imaginary time index (the
|
||||
second term in the effective potential above). The quasi-beads also
|
||||
interact with the two neighboring quasi-beads through the spring
|
||||
potential in imaginary-time space (first term in effective potential).
|
||||
|
||||
For bosons, the method of Hirshberg et. al. :ref:`(Hirshberg1) <Hirshberg>` is employed, which replaces the spring part of :math:`V_{eff}` by the spring potential :math:`V^{[1,N]}` defined through recurrence relation:
|
||||
|
||||
.. math::
|
||||
|
||||
e ^ { -\beta V^{[1,N]} } = & \frac{1}{N} \sum_{k=1}^N e ^ { -\beta \left( V^{[1,N-k]} + E^{[N-K+1,N]} \right)} \\
|
||||
e ^ { -\beta V^{[1,0]}} = & 1
|
||||
|
||||
Here, :math:`E^{[N-K+1,N]}` is the spring energy of the ring polymer
|
||||
obtained by connecting the beads of particles :math:`N - k + 1, N - k +
|
||||
2, ..., N` in a cycle.
|
||||
The implementation of the potential and forces evaluation uses the algorithm developed by Feldman and Hirshberg, which scales like :math:`N^2+PN`
|
||||
:ref:`(Feldman) <Feldman>`.
|
||||
The minimum-image convention is employed on
|
||||
the springs to account for periodic boundary conditions; an elaborate
|
||||
discussion of the validity of the approximation is available in
|
||||
:ref:`(Higer) <HigerFeldman>`.
|
||||
|
||||
To sample the canonical ensemble, any thermostat can be applied.
|
||||
|
||||
Fix *pimd/nvt* applies a Nose-Hoover massive chain thermostat
|
||||
@ -182,6 +203,11 @@ If *method* is *pimd*, the Cartesian representation is used to integrate the
|
||||
equations of motion. The harmonic force is added to the total force of the
|
||||
system, and the numerical integrator is used to propagate the Hamiltonian.
|
||||
|
||||
Fix *pimd/nvt/bosonic* only supports the *pimd* and *nmpimd* methods. Fix
|
||||
*pimd/langevin/bosonic* only supports the *pimd* method, which is the default
|
||||
in this fix. These restrictions are related to the use of normal
|
||||
modes, which change in bosons.
|
||||
|
||||
The keyword *integrator* specifies the Trotter splitting method used by *fix
|
||||
pimd/langevin*. See :ref:`(Liu) <Liu>` for a discussion on the OBABO and BAOAB
|
||||
splitting schemes. Typically either of the two should work fine.
|
||||
@ -211,6 +237,9 @@ If *fmmode* is *normal*, then the fictitious mass is
|
||||
|
||||
where :math:`\lambda_i` is the eigenvalue of the :math:`i`-th normal mode.
|
||||
|
||||
In *pimd/langevin/bosonic*, *fmmode* should not be used, and would raise an error if set to
|
||||
a value other than *physical*, due to the lack of support for bosonic normal modes.
|
||||
|
||||
.. note::
|
||||
|
||||
Fictitious mass is only used in the momentum of the equation of motion
|
||||
@ -225,6 +254,7 @@ is appropriate for most situations.
|
||||
The keyword *ensemble* for fix style *pimd/langevin* determines which ensemble is it
|
||||
going to sample. The value can be *nve* (microcanonical), *nvt* (canonical), *nph* (isoenthalpic),
|
||||
and *npt* (isothermal-isobaric).
|
||||
Fix *pimd/langevin/bosonic* currently does not support *ensemble* other than *nve*, *nvt*.
|
||||
|
||||
The keyword *temp* specifies temperature parameter for fix styles *pimd/nvt* and *pimd/langevin*. It should read
|
||||
a positive floating-point number.
|
||||
@ -249,11 +279,12 @@ damping time of the non-centroid mode :math:`i` is :math:`\frac{P}{\beta\hbar}\s
|
||||
|
||||
The barostat parameters for fix style *pimd/langevin* with *npt* or *nph* ensemble is specified using one of *iso* and *aniso*
|
||||
keywords. A *pressure* value should be given with pressure unit. The keyword *iso* means couple all 3 diagonal components together when pressure is computed (hydrostatic pressure), and dilate/contract the dimensions together. The keyword *aniso* means x, y, and z dimensions are controlled independently using the Pxx, Pyy, and Pzz components of the stress tensor as the driving forces, and the specified scalar external pressure.
|
||||
These parameters are not supported in *pimd/langevin/bosonic*.
|
||||
|
||||
The keyword *barostat* reads *style* of barostat for fix style *pimd/langevin*. *style* can
|
||||
be *BZP* (Bussi-Zykova-Parrinello, as described in :ref:`Bussi <Bussi>`) or *MTTK* (Martyna-Tuckerman-Tobias-Klein, as described in :ref:`Martyna1 <Martyna3>` and :ref:`Martyna2 <Martyna4>`).
|
||||
|
||||
The keyword *taup* specifies the barostat damping time parameter for fix style *pimd/langevin*. It is in time unit.
|
||||
The keyword *taup* specifies the barostat damping time parameter for fix style *pimd/langevin*. It is in time unit. It is not supported in *pimd/langevin/bosonic*.
|
||||
|
||||
The keyword *fixcom* specifies whether the center-of-mass of the extended ring-polymer system is fixed during the pimd simulation.
|
||||
Once *fixcom* is set to be *yes*, the center-of-mass velocity will be distracted from the centroid-mode velocities in each step.
|
||||
@ -261,6 +292,8 @@ Once *fixcom* is set to be *yes*, the center-of-mass velocity will be distracted
|
||||
The keyword *lj* should be used if :doc:`lj units <units>` is used for *fix pimd/langevin*. Typically one may want to use
|
||||
reduced units to run the simulation, and then convert the results into some physical units (for example, :doc:`metal units <units>`). In this case, the 5 quantities in the physical mass units are needed: epsilon (energy scale), sigma (length scale), mass, Planck's constant, mvv2e (mass * velocity^2 to energy conversion factor). Planck's constant and mvv2e can be found in src/update.cpp. If there is no need to convert reduced units to physical units, you can omit the keyword *lj* and these five values will be set to 1.
|
||||
|
||||
Fix *pimd/langevin/bosonic* also has a keyword not available in fix *pimd/langevin*: *esynch*, with default *yes*. If set to *no*, some time consuming synchronization of spring energies and the primitive kinetic energy estimator between processors is avoided.
|
||||
|
||||
The PIMD algorithm in LAMMPS is implemented as a hyper-parallel scheme
|
||||
as described in :ref:`Calhoun <Calhoun>`. In LAMMPS this is done by using
|
||||
:doc:`multi-replica feature <Howto_replica>` in LAMMPS, where each
|
||||
@ -351,6 +384,8 @@ the global vector are:
|
||||
The vector values calculated by fix *pimd/nvt* are "extensive", except for the
|
||||
temperature, which is "intensive".
|
||||
|
||||
Fix *pimd/nvt/bosonic* computes a global 4-vector. The first three are the same as in *pimd/nvt* (the justification for the correctness of the virial estimator for bosons appears in the supporting information of :ref:`(Hirshberg2) <HirshbergInvernizzi>`). The fourth is the current value of the scalar primitive estimator for the kinetic energy of the quantum system :ref:`(Hirshberg1) <Hirshberg>`.
|
||||
|
||||
Fix *pimd/langevin* computes a global vector of quantities, which
|
||||
can be accessed by various :doc:`output commands <Howto_output>`. Note that
|
||||
it outputs multiple log files, and different log files contain information
|
||||
@ -409,6 +444,33 @@ If *aniso* or *x* or *y* or *z* is used for the barostat, the vector has 17 valu
|
||||
#. barostat cell Jacobian
|
||||
#. enthalpy of the extended system (sum of 4, 14, 15, and 16; conserved if *ensemble* is *nph*)
|
||||
|
||||
Fix *pimd/langevin/bosonic* computes a global 6-vector. The quantities in the
|
||||
global vector are:
|
||||
|
||||
#. kinetic energy of the beads,
|
||||
#. spring elastic energy of the beads,
|
||||
#. potential energy of the bead,
|
||||
#. total energy of all beads (conserved if *ensemble* is *nve*) if *esynch* is *yes*
|
||||
#. primitive kinetic energy estimator :ref:`(Hirshberg1) <Hirshberg>`
|
||||
#. virial energy estimator :ref:`(Herman) <Herman>` (see the justification in the supporting information of :ref:`(Hirshberg2) <HirshbergInvernizzi>`).
|
||||
|
||||
The first three are different for different log files, and the others
|
||||
are the same for different log files, except for the primitive kinetic
|
||||
energy estimator when setting *esynch* to *no*. Then, the primitive
|
||||
kinetic energy estimator is obtained by summing over all log files.
|
||||
Also note that when *esynch* is set to *no*, the fourth output gives the
|
||||
total energy of all beads excluding the spring elastic energy; the total
|
||||
classical energy can then be obtained by adding the sum of second output
|
||||
over all log files. All vector values calculated by fix
|
||||
*pimd/langevin/bosonic* are "extensive".
|
||||
|
||||
For both *pimd/nvt/bosonic* and *pimd/langevin/bosonic*, the contribution of the
|
||||
exterior spring to the primitive estimator is printed to the first log
|
||||
file. The contribution of the :math:`P-1` interior springs is printed
|
||||
to the other :math:`P-1` log files. The contribution of the constant
|
||||
:math:`\frac{PdN}{2 \beta}` (with :math:`d` being the dimensionality) is
|
||||
equally divided over log files.
|
||||
|
||||
No parameter of fix *pimd/nvt* or *pimd/langevin* can be used with the *start/stop* keywords
|
||||
of the :doc:`run <run>` command. Fix *pimd/nvt* or *pimd/langevin* is not invoked during
|
||||
:doc:`energy minimization <minimize>`.
|
||||
@ -506,3 +568,19 @@ Path Integrals, McGraw-Hill, New York (1965).
|
||||
.. _Liujian:
|
||||
|
||||
**(Liu)** J. Liu, D. Li, X. Liu, J. Chem. Phys. 145, 024103 (2016).
|
||||
|
||||
.. _Hirshberg:
|
||||
|
||||
**(Hirshberg1)** B. Hirshberg, V. Rizzi, and M. Parrinello, "Path integral molecular dynamics for bosons," Proc. Natl. Acad. Sci. U. S. A. 116, 21445 (2019)
|
||||
|
||||
.. _HirshbergInvernizzi:
|
||||
|
||||
**(Hirshberg2)** B. Hirshberg, M. Invernizzi, and M. Parrinello, "Path integral molecular dynamics for fermions: Alleviating the sign problem with the Bogoliubov inequality," J Chem Phys, 152, 171102 (2020)
|
||||
|
||||
.. _Feldman:
|
||||
|
||||
**(Feldman)** Y. M. Y. Feldman and B. Hirshberg, "Quadratic scaling bosonic path integral molecular dynamics," J. Chem. Phys. 159, 154107 (2023)
|
||||
|
||||
.. _HigerFeldman:
|
||||
|
||||
**(Higer)** J. Higer, Y. M. Y. Feldman, and B. Hirshberg, "Periodic Boundary Conditions for Bosonic Path Integral Molecular Dynamics," J. Chem. Phys. 163, 024101 (2025)
|
||||
|
||||
@ -12,13 +12,14 @@ Syntax
|
||||
|
||||
* url = URL of the file to download
|
||||
* zero or more keyword argument pairs may be provided
|
||||
* keyword = *output* or *verify* or *overwrite* or *verbose*
|
||||
* keyword = *output* or *overwrite* or *timeout* or *verify* or *verbose*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*output* filename = write to *filename* instead of inferring the name from the URL
|
||||
*verify* yes/no = verify SSL certificate and hostname if *yes*, do not if *no*
|
||||
*overwrite* yes/no = if *yes* overwrite the output file in case it exists, do not if *no*
|
||||
*timeout* time = stop download if not completed within given time in seconds
|
||||
*verify* yes/no = verify SSL certificate and hostname if *yes*, do not if *no*
|
||||
*verbose* yes/no = if *yes* write verbose debug output from libcurl to screen, do not if *no*
|
||||
|
||||
Examples
|
||||
@ -42,15 +43,20 @@ large variety of protocols including "http", "https", "ftp", "scp",
|
||||
The *output* keyword can be used to set the filename. By default, the last part
|
||||
of the URL is used.
|
||||
|
||||
The *overwrite* keyword determines whether a file should be overwritten if it
|
||||
already exists. If the argument is *no*, then the download will be skipped
|
||||
if the file exists.
|
||||
|
||||
The *timeout* keyword can be used to modify the timeout for downloads in
|
||||
seconds. After the timeout, the download will stop, even if incomplete.
|
||||
The default time value is 300, i.e. 5 minutes. Setting the timeout to 0
|
||||
means to wait forever.
|
||||
|
||||
The *verify* keyword determines whether ``libcurl`` will validate the
|
||||
SSL certificate and hostname for encrypted connections. Turning this
|
||||
off may be required when using a proxy or connecting to a server with a
|
||||
self-signed SSL certificate.
|
||||
|
||||
The *overwrite* keyword determines whether a file should be overwritten if it
|
||||
already exists. If the argument is *no*, then the download will be skipped
|
||||
if the file exists.
|
||||
|
||||
The *verbose* keyword determines whether a detailed protocol of the steps
|
||||
performed by libcurl is written to the screen. Using the argument *yes*
|
||||
can be used to debug connection issues when the *geturl* command does not
|
||||
@ -105,4 +111,4 @@ Related commands
|
||||
Default
|
||||
"""""""
|
||||
|
||||
*verify* = yes, *overwrite* = yes
|
||||
*overwrite* = yes, *timeout* = 300, *verify* = yes, *verbose* = no
|
||||
|
||||
@ -76,7 +76,9 @@ contains multiple molecules. The :doc:`atom_style template
|
||||
system with more than one templated molecule.
|
||||
|
||||
The molecule file can be either in a *native* format or in `JSON format
|
||||
<https://www.json.org/>`_. The details of the two formats are described
|
||||
<https://www.json.org/>`_. JSON formal filenames **must** have the
|
||||
extension ".json". Files with any other name will be assumed to be in
|
||||
the "native" format. The details of the two formats are described
|
||||
below. When referencing multiple molecule files in a single *molecule*
|
||||
command, each of those files may be either format.
|
||||
|
||||
@ -207,7 +209,7 @@ defining a *body* particle, which requires setting the number of
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 20 13 42 15
|
||||
:widths: 21 12 47 20
|
||||
|
||||
* - Number(s)
|
||||
- Keyword
|
||||
@ -216,7 +218,7 @@ defining a *body* particle, which requires setting the number of
|
||||
* - N
|
||||
- atoms
|
||||
- # of atoms N in molecule
|
||||
- 0
|
||||
- keyword is *required*
|
||||
* - Nb
|
||||
- bonds
|
||||
- # of bonds Nb in molecule
|
||||
@ -239,8 +241,8 @@ defining a *body* particle, which requires setting the number of
|
||||
- 0
|
||||
* - Ninteger Ndouble
|
||||
- body
|
||||
- # of integer and floating-point values in body particle
|
||||
- 0
|
||||
- # of integer and floating-point values in :doc:`body particle <Howto_body>`
|
||||
- 0 0
|
||||
* - Mtotal
|
||||
- mass
|
||||
- total mass of molecule
|
||||
@ -693,12 +695,15 @@ and thus the data in the file must follow suitable conventions to be
|
||||
correctly processed. LAMMPS provides a `JSON schema file
|
||||
<https://json-schema.org/>`_ for JSON format molecule files in the
|
||||
:ref:`tools/json folder <json>` to represent those conventions. Using
|
||||
the schema file any JSON format molecule files can be validated.
|
||||
the schema file any JSON format molecule files can be validated. Please
|
||||
note that the format requirement for JSON are very strict and the JSON
|
||||
reader in LAMMPS does not accept files with extensions like comments.
|
||||
Validating a particular JSON format molecule file against this schema
|
||||
ensures that both, the JSON syntax requirement *and* the LAMMPS
|
||||
conventions for molecule templates are followed. This is a formal check
|
||||
only and thus it **cannot** check whether the file contents are
|
||||
physically meaningful.
|
||||
conventions for molecule template files are followed. LAMMPS should be
|
||||
able to read and parse any JSON file that passes the schema check. This
|
||||
is a formal check only and thus it **cannot** check whether the file
|
||||
contents are consistent or physically meaningful.
|
||||
|
||||
Here is a simple example for the same TIP3P water molecule from above in
|
||||
JSON format and also using :doc:`type labels <labelmap>` instead of
|
||||
@ -862,6 +867,155 @@ for the "native" molecule file format.
|
||||
- a data block
|
||||
- no
|
||||
- defines impropers in the molecule template with the format "improper-type", "atom1", "atom2", "atom3", "atom4" (same as Impropers without improper-ID)
|
||||
* - shake
|
||||
- 3 JSON objects
|
||||
- no
|
||||
- contains the sub-sections "flags", "atoms", "bonds" described below
|
||||
* - special
|
||||
- 2 JSON objects
|
||||
- no
|
||||
- contains the sub-sections "counts" and "bonds" described below
|
||||
* - body
|
||||
- 2 JSON objects
|
||||
- no
|
||||
- contains the "integers" and "doubles" sub-sections with arrays with the same data as Body Integers and Body Doubles, respectively
|
||||
|
||||
The following table describes the sub-sections for the "special" entry from above:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Subsection
|
||||
- Argument(s)
|
||||
- Required
|
||||
- Description
|
||||
* - counts
|
||||
- a data block
|
||||
- yes
|
||||
- contains the counts of 1-2, 1-3, and 1-4 special neighbors with the format "atom-id", "n12", "n13", "n14" (same as Special Bond Counts)
|
||||
* - bonds
|
||||
- a data block
|
||||
- yes
|
||||
- contains the lists of special neighbors to atoms with the format "atom-id", "atom-id-list" (same as Special Bonds)
|
||||
|
||||
The following table describes the sub-sections for the "shake" entry from above:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Subsection
|
||||
- Argument(s)
|
||||
- Required
|
||||
- Description
|
||||
* - flags
|
||||
- a data block
|
||||
- yes
|
||||
- contains the counts shake flags for atoms with the format "atom-id", "flag" (same as Shake Flags)
|
||||
* - atoms
|
||||
- a data block
|
||||
- yes
|
||||
- contains the lists of shake cluster atom-ids for atoms with the format "atom-id", "atom-id-list" (same as Shake Atoms)
|
||||
* - bonds
|
||||
- a data block
|
||||
- yes
|
||||
- contains the lists of shake bond or angle types for atoms with the format "atom-id", "type-list" (same as Shake Bonds)
|
||||
|
||||
The "special" and "shake" sections are usually not needed, since the
|
||||
data can be auto-generated as soon as the simulation box is defined.
|
||||
Below is an example for what would have to be *added* to the example
|
||||
JSON file above in case the molecule command needs to be issued earlier.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
"special": {
|
||||
"counts": {
|
||||
"format": ["atom-id", "n12", "n13", "n14"],
|
||||
"data": [
|
||||
[1, 2, 0, 0],
|
||||
[2, 1, 1, 0],
|
||||
[3, 1, 1, 0]
|
||||
]
|
||||
},
|
||||
"bonds": {
|
||||
"format": ["atom-id", "atom-id-list"],
|
||||
"data": [
|
||||
[1, [2, 3]],
|
||||
[2, [1, 3]],
|
||||
[3, [1, 2]]
|
||||
]
|
||||
}
|
||||
},
|
||||
"shake": {
|
||||
"flags": {
|
||||
"format": ["atom-id", "flag"],
|
||||
"data": [
|
||||
[1, 1],
|
||||
[2, 1],
|
||||
[3, 1]
|
||||
]
|
||||
},
|
||||
"atoms": {
|
||||
"format": ["atom-id", "atom-id-list"],
|
||||
"data": [
|
||||
[1, [1, 2, 3]],
|
||||
[2, [1, 2, 3]],
|
||||
[3, [1, 2, 3]]
|
||||
]
|
||||
},
|
||||
"types": {
|
||||
"format": ["atom-id", "type-list"],
|
||||
"data": [
|
||||
[1, ["OW-HO1", "OW-HO1", "HO1-OW-HO1"]],
|
||||
[2, ["OW-HO1", "OW-HO1", "HO1-OW-HO1"]],
|
||||
[3, ["OW-HO1", "OW-HO1", "HO1-OW-HO1"]]
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Below is a minimal example of a JSON format molecule template for a body
|
||||
particle for :doc:`pair style body/nparticle
|
||||
<pair_body_nparticle>`. Molecule templates for body particles must
|
||||
contain only one atom:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"application": "LAMMPS",
|
||||
"format": "molecule",
|
||||
"revision": 1,
|
||||
"title": "Square body for body/nparticles",
|
||||
"schema": "https://download.lammps.org/json/molecule-schema.json",
|
||||
"units": "real",
|
||||
"coords": {
|
||||
"format": ["atom-id", "x", "y", "z"],
|
||||
"data": [
|
||||
[1, 0.00000, 0.00000, 0.00000]
|
||||
]
|
||||
},
|
||||
"types": {
|
||||
"format": ["atom-id", "type"],
|
||||
"data": [
|
||||
[1, 1]
|
||||
]
|
||||
},
|
||||
"masses": {
|
||||
"format": ["atom-id", "mass"],
|
||||
"data": [
|
||||
[1, 1.0]
|
||||
]
|
||||
},
|
||||
"body": {
|
||||
"integers": [4],
|
||||
"doubles": [
|
||||
1.0, 1.0, 4.0, 0.0, 0.0, 0.0,
|
||||
-0.70710678118654752440, -0.70710678118654752440, 0.0,
|
||||
-0.70710678118654752440, 0.70710678118654752440, 0.0,
|
||||
0.70710678118654752440, 0.70710678118654752440, 0.0,
|
||||
0.70710678118654752440, -0.70710678118654752440, 0.0
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -117,6 +117,16 @@ Syntax
|
||||
*pair/only* = *off* or *on*
|
||||
*off* = use device acceleration (e.g. GPU) for all available styles in the KOKKOS package (default)
|
||||
*on* = use device acceleration only for pair styles (and host acceleration for others)
|
||||
*threads/per/atom* args = Ntpa
|
||||
Ntpa = # of threads per atom for multiple GPU threads over the neighbor list per atom
|
||||
*pair/team/size* args = Nteamsize
|
||||
Nteamsize = # of threads per block used for the pair compute kernel
|
||||
*nbin/atoms/per/bin = Natomsperbin
|
||||
Natomsperbin = # of atoms per bin used for neighbor list builds
|
||||
*nbor/block/size = blocksize
|
||||
blocksize = # of GPU threads per block for the flat neighbor build method
|
||||
*bond/block/size = blocksize
|
||||
blocksize = # of GPU threads per block for the bond force computation
|
||||
*omp* args = Nthreads keyword value ...
|
||||
Nthreads = # of OpenMP threads to associate with each MPI process
|
||||
zero or more keyword/value pairs may be appended
|
||||
@ -586,14 +596,14 @@ keyword above.
|
||||
The *gpu/aware* keyword chooses whether GPU-aware MPI will be used. When
|
||||
this keyword is set to *on*, buffers in GPU memory are passed directly
|
||||
through MPI send/receive calls. This reduces overhead of first copying
|
||||
the data to the host CPU. However GPU-aware MPI is not supported on all
|
||||
the data to the host CPU. However GPU-aware MPI is not supported on all
|
||||
systems, which can lead to segmentation faults and would require using a
|
||||
value of *off*\ . If LAMMPS can safely detect that GPU-aware MPI is not
|
||||
available (currently only possible with OpenMPI v2.0.0 or later), then
|
||||
the *gpu/aware* keyword is automatically set to *off* by default. When
|
||||
the *gpu/aware* keyword is set to *off* while any of the *comm*
|
||||
keywords are set to *device*, the value for these *comm* keywords will
|
||||
be automatically changed to *no*\ . This setting has no effect if not
|
||||
be automatically changed to *no*\ . This setting has no effect if not
|
||||
running on GPUs or if using only one MPI rank. GPU-aware MPI is available
|
||||
for OpenMPI 1.8 (or later versions), Mvapich2 1.9 (or later) when the
|
||||
"MV2_USE_CUDA" environment variable is set to "1", CrayMPI, and IBM
|
||||
@ -608,6 +618,37 @@ other force computations on the host CPU. The *comm* flags, along with the
|
||||
This can result in better performance for certain configurations and
|
||||
system sizes.
|
||||
|
||||
The following parameters allow users to tune the overall performance
|
||||
depending on the simulated systems. If not explicitly specified,
|
||||
their values will be set internally by the KOKKOS package.
|
||||
|
||||
The *threads/per/atom* keyword sets the number of GPU vector lanes per atom
|
||||
used to perform force calculations. This keyword is only applicable
|
||||
when *neigh/thread* is set to *on*. For large cutoffs or with a small number
|
||||
of particles per GPU, increasing the value can improve performance.
|
||||
The number of lanes per atom must be a power of 2 and currently cannot be
|
||||
greater than the SIMD width for the GPU / accelerator. In the case
|
||||
it exceeds the SIMD width, it will automatically be decreased to meet
|
||||
the restriction.
|
||||
|
||||
The *pair/team/size* keyword sets the number of threads per block for
|
||||
the pair force compute kernel. This keyword is only applicable
|
||||
when *neigh/thread* is set to *on*. The default value of this parameter
|
||||
is determined based on the GPU architecture at runtime.
|
||||
|
||||
The *nbin/atoms/per/bin* keyword sets the number of atoms per bin
|
||||
used for the neighbor list builds on the GPU, which then determines
|
||||
the number of GPU threads per bin. The default value of this parameter is 16.
|
||||
|
||||
The *nbor/block/size* keyword sets the number of GPU threads per block
|
||||
used for the neighbor list builds on the GPU using the flat method (i.e.,
|
||||
each thread finds the neighbor list of an atom). If not specified, then
|
||||
the GPU threads are assigned to the bins.
|
||||
|
||||
The *bond/block/size* keyword sets the number of GPU threads per block
|
||||
used for launching the bond force kernel on the GPU. The default value
|
||||
of this parameter is determined based on the GPU architecture at runtime.
|
||||
|
||||
----------
|
||||
|
||||
The *omp* style invokes settings associated with the use of the
|
||||
|
||||
127
doc/src/pair_eam_apip.rst
Normal file
@ -0,0 +1,127 @@
|
||||
.. index:: pair_style eam/apip
|
||||
.. index:: pair_style eam/fs/apip
|
||||
|
||||
pair_style eam/apip command
|
||||
=============================
|
||||
|
||||
Constant precision variant: *eam*
|
||||
|
||||
pair_style eam/fs/apip command
|
||||
================================
|
||||
|
||||
Constant precision variant: *eam/fs*
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style eam/apip
|
||||
pair_style eam/fs/apip
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style hybrid/overlay eam/fs/apip pace/precise/apip lambda/input/csp/apip fcc cutoff 5.0 lambda/zone/apip 12.0
|
||||
pair_coeff * * eam/fs/apip Cu.eam.fs Cu
|
||||
pair_coeff * * pace/precise/apip Cu_precise.yace Cu
|
||||
pair_coeff * * lambda/input/csp/apip
|
||||
pair_coeff * * lambda/zone/apip
|
||||
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
Style *eam* computes pairwise interactions for metals and metal alloys
|
||||
using embedded-atom method (EAM) potentials :ref:`(Daw) <Daw2>`. The total
|
||||
energy :math:`E_i` of an atom :math:`i` is given by
|
||||
|
||||
.. math::
|
||||
|
||||
E_i^\text{EAM} = F_\alpha \left(\sum_{j \neq i}\ \rho_\beta (r_{ij})\right) +
|
||||
\frac{1}{2} \sum_{j \neq i} \phi_{\alpha\beta} (r_{ij})
|
||||
|
||||
where :math:`F` is the embedding energy which is a function of the atomic
|
||||
electron density :math:`\rho`, :math:`\phi` is a pair potential interaction,
|
||||
and :math:`\alpha` and :math:`\beta` are the element types of atoms
|
||||
:math:`i` and :math:`j`. The multi-body nature of the EAM potential is a
|
||||
result of the embedding energy term. Both summations in the formula are over
|
||||
all neighbors :math:`j` of atom :math:`i` within the cutoff distance.
|
||||
EAM is documented in detail in :doc:`pair_style eam <pair_eam>`.
|
||||
|
||||
The potential energy :math:`E_i` of an atom :math:`i` of an adaptive-precision
|
||||
interatomic potential (APIP) according to :ref:`(Immel) <Immel2025_5>` is given by
|
||||
|
||||
.. math::
|
||||
|
||||
E_i^\text{APIP} = \lambda_i E_i^\text{(fast)} + (1-\lambda_i) E_i^\text{(precise)}\,,
|
||||
|
||||
whereas the switching parameter :math:`\lambda_i` is computed
|
||||
dynamically during a simulation by :doc:`fix lambda/apip <fix_lambda_apip>`
|
||||
or set prior to a simulation via :doc:`set <set>`.
|
||||
|
||||
The pair style *eam/fs/apip* computes the potential energy
|
||||
:math:`\lambda_i E_i^\text{EAM}` and the
|
||||
corresponding force and should be combined
|
||||
with a precise potential like
|
||||
:doc:`pair_style pace/precise/apip <pair_pace_apip>` that computes the
|
||||
potential energy :math:`(1-\lambda_i) E_i^\text{(precise)}` and the
|
||||
corresponding force via :doc:`pair_style hybrid/overlay <pair_hybrid>`.
|
||||
|
||||
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
For atom type pairs I,J and I != J, where types I and J correspond to
|
||||
two different element types, mixing is performed by LAMMPS as
|
||||
described above with the individual styles. You never need to specify
|
||||
a pair_coeff command with I != J arguments for the eam/apip styles.
|
||||
|
||||
This pair style does not support the :doc:`pair_modify <pair_modify>`
|
||||
shift, table, and tail options.
|
||||
|
||||
The eam/apip pair styles do not write their information to :doc:`binary
|
||||
restart files <restart>`, since it is stored in tabulated potential
|
||||
files. Thus, you need to re-specify the pair_style and pair_coeff
|
||||
commands in an input script that reads a restart file.
|
||||
|
||||
The eam/apip pair styles can only be used via the *pair* keyword of the
|
||||
:doc:`run_style respa <run_style>` command. They do not support the
|
||||
*inner*, *middle*, *outer* keywords.
|
||||
|
||||
----------
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This pair styles are part of the APIP package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`pair_style eam <pair_eam>`,
|
||||
:doc:`pair_style hybrid/overlay <pair_hybrid>`,
|
||||
:doc:`fix lambda/apip <fix_lambda_apip>`,
|
||||
:doc:`fix lambda_thermostat/apip <fix_lambda_thermostat_apip>`,
|
||||
:doc:`pair_style lambda/zone/apip <pair_lambda_zone_apip>`,
|
||||
:doc:`pair_style lambda/input/apip <pair_lambda_input_apip>`,
|
||||
:doc:`pair_style pace/apip <pair_pace_apip>`,
|
||||
:doc:`fix atom_weight/apip <fix_atom_weight_apip>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
none
|
||||
|
||||
----------
|
||||
|
||||
.. _Immel2025_5:
|
||||
|
||||
**(Immel)** Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025)
|
||||
|
||||
.. _Daw2:
|
||||
|
||||
**(Daw)** Daw, Baskes, Phys Rev Lett, 50, 1285 (1983).
|
||||
Daw, Baskes, Phys Rev B, 29, 6443 (1984).
|
||||
@ -171,29 +171,26 @@ restrictions discussed below.
|
||||
If the *hybrid/scaled* style is used instead of *hybrid/overlay*,
|
||||
contributions from sub-styles are weighted by their scale factors, which
|
||||
may be fractional or even negative. Furthermore the scale factor for
|
||||
each sub-style may a constant, an *equal* style variable, or an *atom*
|
||||
style variable. Variable scale factors may change during the simulation.
|
||||
Different sub-styles may use different scale factor styles.
|
||||
In the case of a sub-style scale factor that is an *atom* style variable,
|
||||
the force contribution to each atom from that sub-style is weighted
|
||||
by the value of the variable for that atom, while the contribution
|
||||
from that sub-style to the global potential energy is zero.
|
||||
All other contributions to the per-atom energy, per-atom
|
||||
virial, and global virial (if not obtained from forces)
|
||||
from that sub-style are zero.
|
||||
This enables
|
||||
switching smoothly between two different pair styles or two different
|
||||
parameter sets during a run in a similar fashion as could be done
|
||||
with :doc:`fix adapt <fix_adapt>` or :doc:`fix alchemy <fix_alchemy>`.
|
||||
All pair styles that will be used are listed as "sub-styles" following
|
||||
the *hybrid* or *hybrid/overlay* keyword, in any order. In case of the
|
||||
*hybrid/scaled* pair style, each sub-style is prefixed with a scale
|
||||
factor. The scale factor is either a floating point number or an
|
||||
*equal* or *atom*
|
||||
style (or equivalent) variable. Each sub-style's name is followed by
|
||||
its usual arguments, as illustrated in the examples above. See the doc
|
||||
pages of the individual pair styles for a listing and explanation of the
|
||||
appropriate arguments for them.
|
||||
each sub-style may be a constant, an *equal* style variable, or an
|
||||
*atom* style variable. Variable scale factors may change during the
|
||||
simulation. Different sub-styles may use different scale factor styles.
|
||||
In the case of a sub-style scale factor that is an *atom* style
|
||||
variable, the force contribution to each atom from that sub-style is
|
||||
weighted by the value of the variable for that atom, while the
|
||||
contribution from that sub-style to the global potential energy is zero.
|
||||
All other contributions to the per-atom energy, per-atom virial, and
|
||||
global virial (if not obtained from forces) from that sub-style are
|
||||
zero. This enables switching smoothly between two different pair styles
|
||||
or two different parameter sets during a run in a similar fashion as
|
||||
could be done with :doc:`fix adapt <fix_adapt>` or :doc:`fix alchemy
|
||||
<fix_alchemy>`. All pair styles that will be used are listed as
|
||||
"sub-styles" following the *hybrid* or *hybrid/overlay* keyword, in any
|
||||
order. In case of the *hybrid/scaled* pair style, each sub-style is
|
||||
prefixed with a scale factor. The scale factor is either a floating
|
||||
point number or an *equal* or *atom* style (or equivalent) variable.
|
||||
Each sub-style's name is followed by its usual arguments, as illustrated
|
||||
in the examples above. See the doc pages of the individual pair styles
|
||||
for a listing and explanation of the appropriate arguments for them.
|
||||
|
||||
Note that an individual pair style can be used multiple times as a
|
||||
sub-style. For efficiency reasons this should only be done if your
|
||||
|
||||
151
doc/src/pair_lambda_input_apip.rst
Normal file
@ -0,0 +1,151 @@
|
||||
.. index:: pair_style lambda/input/apip
|
||||
.. index:: pair_style lambda/input/csp/apip
|
||||
|
||||
pair_style lambda/input/apip command
|
||||
====================================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style lambda/input/apip cutoff
|
||||
|
||||
* lambda/input/apip = style name of this pair style
|
||||
* cutoff = global cutoff (distance units)
|
||||
|
||||
pair_style lambda/input/csp/apip command
|
||||
========================================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style lambda/input/csp/apip lattice keyword args
|
||||
|
||||
* lambda/input/csp/apip = style name of this pair style
|
||||
* lattice = *fcc* or *bcc* or integer
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*fcc* = use 12 nearest neighbors to calculate the CSP like in a perfect fcc lattice
|
||||
*bcc* = use 8 nearest neighbors to calculate the CSP like in a perfect bcc lattice
|
||||
integer = use N nearest neighbors to calculate the CSP
|
||||
|
||||
* zero or more keyword/args pairs may be appended
|
||||
* keyword = *cutoff* or *N_buffer*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*cutoff* args = cutoff
|
||||
cutoff = distance in which neighboring atoms are considered (> 0)
|
||||
*N_buffer* args = N_buffer
|
||||
N_buffer = number of additional neighbors, which are included in the j-j+N/2 calculation
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style lambda/input/csp/apip fcc
|
||||
pair_style lambda/input/csp/apip fcc cutoff 5.0
|
||||
pair_style lambda/input/csp/apip bcc cutoff 5.0 N_buffer 2
|
||||
pair_style lambda/input/csp/apip 14
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
This pair_styles calculates :math:`\lambda_i^\text{input}(t)`, which
|
||||
is required for :doc:`fix lambda/apip <fix_lambda_apip>`.
|
||||
|
||||
The pair_style lambda_input sets :math:`\lambda_i^\text{input}(t) = 0`.
|
||||
|
||||
The pair_style lambda_input/csp calculates
|
||||
:math:`\lambda_i^\text{input}(t) = \text{CSP}_i(t)`.
|
||||
The centro-symmetry parameter (CSP) :ref:`(Kelchner) <Kelchner_2>` is described
|
||||
in :doc:`compute centro/atom <compute_centro_atom>`.
|
||||
|
||||
The lattice argument is described in
|
||||
:doc:`compute centro/atom <compute_centro_atom>` and determines
|
||||
the number of neighboring atoms that are used to compute the CSP.
|
||||
The *N_buffer* argument allows to include more neighboring atoms in
|
||||
the calculation of the contributions from the pair j,j+N/2 to the CSP as
|
||||
discussed in :ref:`(Immel) <Immel2025_6>`.
|
||||
|
||||
The computation of :math:`\lambda_i^\text{input}(t)` is done by this
|
||||
pair_style instead of by :doc:`fix lambda/apip <fix_lambda_apip>`, as this computation
|
||||
takes time and this pair_style can be included in the load-balancing via
|
||||
:doc:`fix atom_weight/apip <fix_atom_weight_apip>`.
|
||||
|
||||
A code example for the calculation of the switching parameter for an adaptive-
|
||||
precision potential is given in the following:
|
||||
The adaptive-precision potential is created
|
||||
by combining :doc:`pair_style eam/fs/apip <pair_eam_apip>`
|
||||
and :doc:`pair_style pace/precise/apip <pair_pace_apip>`.
|
||||
The input, from which the switching parameter is calculated, is provided
|
||||
by this pair_style.
|
||||
The switching parameter is calculated by :doc:`fix lambda/apip <fix_lambda_apip>`,
|
||||
whereas the spatial
|
||||
transition zone of the switching parameter is calculated by
|
||||
:doc:`pair_style lambda/zone/apip <pair_lambda_zone_apip>`.
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style hybrid/overlay eam/fs/apip pace/precise/apip lambda/input/csp/apip fcc cutoff 5.0 lambda/zone/apip 12.0
|
||||
pair_coeff * * eam/fs/apip Cu.eam.fs Cu
|
||||
pair_coeff * * pace/precise/apip Cu_precise.yace Cu
|
||||
pair_coeff * * lambda/input/csp/apip
|
||||
pair_coeff * * lambda/zone/apip
|
||||
fix 2 all lambda/apip 3.0 3.5 time_averaged_zone 4.0 12.0 110 110 min_delta_lambda 0.01
|
||||
|
||||
----------
|
||||
|
||||
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
The cutoff distance for this pair style can be mixed. The default mix
|
||||
value is *geometric*\ . See the "pair_modify" command for details.
|
||||
|
||||
This pair style does not support the :doc:`pair_modify <pair_modify>`
|
||||
shift, table, and tail options.
|
||||
|
||||
This pair style writes no information to :doc:`binary restart files <restart>`, so pair_style and pair_coeff commands need
|
||||
to be specified in an input script that reads a restart file.
|
||||
|
||||
This pair style does not support the use of the *inner*, *middle*,
|
||||
and *outer* keywords of the :doc:`run_style respa <run_style>` command.
|
||||
|
||||
----------
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
This fix is part of the APIP package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`compute centro/atom <compute_centro_atom>`,
|
||||
:doc:`fix lambda/apip <fix_lambda_apip>`,
|
||||
:doc:`fix lambda_thermostat/apip <fix_lambda_thermostat_apip>`,
|
||||
:doc:`pair_style lambda/zone/apip <pair_lambda_zone_apip>`,
|
||||
:doc:`pair_style eam/apip <pair_eam_apip>`,
|
||||
:doc:`pair_style pace/apip <pair_pace_apip>`,
|
||||
:doc:`fix atom_weight/apip <fix_atom_weight_apip>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
N_buffer=0, cutoff=5.0
|
||||
|
||||
----------
|
||||
|
||||
.. _Kelchner_2:
|
||||
|
||||
**(Kelchner)** Kelchner, Plimpton, Hamilton, Phys Rev B, 58, 11085 (1998).
|
||||
|
||||
.. _Immel2025_6:
|
||||
|
||||
**(Immel)** Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025)
|
||||
106
doc/src/pair_lambda_zone_apip.rst
Normal file
@ -0,0 +1,106 @@
|
||||
.. index:: pair_style lambda/zone/apip
|
||||
|
||||
pair_style lambda/zone/apip command
|
||||
===================================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style lambda/zone/apip cutoff
|
||||
|
||||
* lambda/zone/apip = style name of this pair style
|
||||
* cutoff = global cutoff (distance units)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style lambda/zone/apip 12.0
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
This pair_style calculates :math:`\lambda_{\text{min},i}`, which
|
||||
is required for :doc:`fix lambda/apip <fix_lambda_apip>`.
|
||||
The meaning of :math:`\lambda_{\text{min},i}` is documented in
|
||||
:doc:`fix lambda/apip <fix_lambda_apip>`, as this pair_style is for use with
|
||||
:doc:`fix lambda/apip <fix_lambda_apip>` only.
|
||||
|
||||
This pair_style requires only the global cutoff as argument.
|
||||
The remaining quantities, that are required to calculate
|
||||
:math:`\lambda_{\text{min},i}` are extracted from
|
||||
:doc:`fix lambda/apip <fix_lambda_apip>` and, thus,
|
||||
do not need to be passed to this pair_style as arguments.
|
||||
|
||||
.. warning::
|
||||
|
||||
The cutoff given as argument to this pair style is only relevant for the
|
||||
neighbor list creation. The radii, which define :math:`r_{\lambda,\text{hi}}` and :math:`r_{\lambda,\text{lo}}` are defined by :doc:`fix lambda/apip <fix_lambda_apip>`.
|
||||
|
||||
The computation of :math:`\lambda_{\text{min},i}` is done by this
|
||||
pair_style instead of by :doc:`fix lambda/apip <fix_lambda_apip>`, as this computation
|
||||
takes time and this pair_style can be included in the load-balancing via
|
||||
:doc:`fix atom_weight/apip <fix_atom_weight_apip>`.
|
||||
|
||||
A code example for the calculation of the switching parameter for an
|
||||
adaptive-precision interatomic potential (APIP) is given in the following:
|
||||
The adaptive-precision potential is created
|
||||
by combining :doc:`pair_style eam/fs/apip <pair_eam_apip>`
|
||||
and :doc:`pair_style pace/precise/apip <pair_pace_apip>`.
|
||||
The input, from which the switching parameter is calculated, is provided
|
||||
by :doc:`pair lambda/input/csp/apip <pair_lambda_input_apip>`.
|
||||
The switching parameter is calculated by :doc:`fix lambda/apip <fix_lambda_apip>`,
|
||||
whereas the spatial transition zone of the switching parameter is calculated
|
||||
by this pair style.
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style hybrid/overlay eam/fs/apip pace/precise/apip lambda/input/csp/apip fcc cutoff 5.0 lambda/zone/apip 12.0
|
||||
pair_coeff * * eam/fs/apip Cu.eam.fs Cu
|
||||
pair_coeff * * pace/precise/apip Cu_precise.yace Cu
|
||||
pair_coeff * * lambda/input/csp/apip
|
||||
pair_coeff * * lambda/zone/apip
|
||||
fix 2 all lambda/apip 3.0 3.5 time_averaged_zone 4.0 12.0 110 110 min_delta_lambda 0.01
|
||||
|
||||
----------
|
||||
|
||||
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
The cutoff distance for this pair style can be mixed. The default mix
|
||||
value is *geometric*\ . See the "pair_modify" command for details.
|
||||
|
||||
This pair style does not support the :doc:`pair_modify <pair_modify>`
|
||||
shift, table, and tail options.
|
||||
|
||||
This pair style writes no information to :doc:`binary restart files <restart>`, so pair_style and pair_coeff commands need
|
||||
to be specified in an input script that reads a restart file.
|
||||
|
||||
This pair style does not support the use of the *inner*, *middle*,
|
||||
and *outer* keywords of the :doc:`run_style respa <run_style>` command.
|
||||
|
||||
----------
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
This fix is part of the APIP package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix lambda/apip <fix_lambda_apip>`,
|
||||
:doc:`fix atom_weight/apip <fix_atom_weight_apip>`
|
||||
:doc:`pair_style lambda/input/apip <pair_lambda_input_apip>`,
|
||||
:doc:`pair_style eam/apip <pair_eam_apip>`,
|
||||
:doc:`pair_style pace/apip <pair_pace_apip>`,
|
||||
:doc:`fix lambda_thermostat/apip <fix_lambda_thermostat_apip>`,
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
none
|
||||
@ -8,7 +8,17 @@
|
||||
pair_style lepton command
|
||||
=========================
|
||||
|
||||
Accelerator Variants: *lepton/omp*, *lepton/coul/comp*, *lepton/sphere/comp*
|
||||
Accelerator Variant: *lepton/omp*
|
||||
|
||||
pair_style lepton/coul command
|
||||
==============================
|
||||
|
||||
Accelerator Variant: *lepton/coul/comp*
|
||||
|
||||
pair_style lepton/sphere command
|
||||
================================
|
||||
|
||||
Accelerator Variant: *lepton/sphere/comp*
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
147
doc/src/pair_pace_apip.rst
Normal file
@ -0,0 +1,147 @@
|
||||
.. index:: pair_style pace/apip
|
||||
.. index:: pair_style pace/fast/apip
|
||||
.. index:: pair_style pace/precise/apip
|
||||
|
||||
pair_style pace/apip command
|
||||
============================
|
||||
|
||||
pair_style pace/fast/apip command
|
||||
=================================
|
||||
|
||||
pair_style pace/precise/apip command
|
||||
====================================
|
||||
|
||||
Constant precision variant: *pace*
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style pace/apip ... keyword values ...
|
||||
pair_style pace/fast/apip ... keyword values ...
|
||||
pair_style pace/precise/apip ... keyword values ...
|
||||
|
||||
* one or more keyword/value pairs may be appended
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
keyword = keywords of :doc:`pair pace <pair_pace>`
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style hybrid/overlay pace/fast/apip pace/precise/apip lambda/input/csp/apip fcc cutoff 5.0 lambda/zone/apip 12.0
|
||||
pair_coeff * * pace/fast/apip Cu_fast.yace Cu
|
||||
pair_coeff * * pace/precise/apip Cu_precise.yace Cu
|
||||
pair_coeff * * lambda/input/csp/apip
|
||||
pair_coeff * * lambda/zone/apip
|
||||
|
||||
pair_style hybrid/overlay eam/fs/apip pace/precise/apip lambda/input/csp/apip fcc cutoff 5.0 lambda/zone/apip 12.0
|
||||
pair_coeff * * eam/fs/apip Cu.eam.fs Cu
|
||||
pair_coeff * * pace/precise/apip Cu_precise.yace Cu
|
||||
pair_coeff * * lambda/input/csp/apip
|
||||
pair_coeff * * lambda/zone/apip
|
||||
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Pair style :doc:`pace <pair_pace>` computes interactions using the Atomic
|
||||
Cluster Expansion (ACE), which is a general expansion of the atomic energy in
|
||||
multi-body basis functions :ref:`(Drautz19) <Drautz2019_2>`. The *pace*
|
||||
pair style provides an efficient implementation that is described in
|
||||
this paper :ref:`(Lysogorskiy21) <Lysogorskiy20211_2>`.
|
||||
|
||||
The potential energy :math:`E_i` of an atom :math:`i` of an adaptive-precision
|
||||
interatomic potential (APIP) according to
|
||||
:ref:`(Immel25) <Immel2025_7>` is given by
|
||||
|
||||
.. math::
|
||||
|
||||
E_i^\text{APIP} = \lambda_i E_i^\text{(fast)} + (1-\lambda_i) E_i^\text{(precise)}\,,
|
||||
|
||||
whereas the switching parameter :math:`\lambda_i` is computed
|
||||
dynamically during a simulation by :doc:`fix lambda/apip <fix_lambda_apip>`
|
||||
or set prior to a simulation via :doc:`set <set>`.
|
||||
|
||||
The pair style *pace/precise/apip* computes the potential energy
|
||||
:math:`(1-\lambda_i) E_i^\text{(pace)}` and the
|
||||
corresponding force and should be combined
|
||||
with a fast potential that computes the potential energy
|
||||
:math:`\lambda_i E_i^\text{(fast)}` and the corresponding force
|
||||
via :doc:`pair_style hybrid/overlay <pair_hybrid>`.
|
||||
|
||||
The pair style *pace/fast/apip* computes the potential energy
|
||||
:math:`\lambda_i E_i^\text{(pace)}` and the
|
||||
corresponding force and should be combined
|
||||
with a precise potential that computes the potential energy
|
||||
:math:`(1-\lambda_i) E_i^\text{(precise)}` and the corresponding force
|
||||
via :doc:`pair_style hybrid/overlay <pair_hybrid>`.
|
||||
|
||||
The pair_styles *pace/fast/apip* and *pace/precise/apip*
|
||||
commands may be followed by the optional keywords of
|
||||
:doc:`pair_style pace <pair_pace>`, which are described
|
||||
:doc:`here <pair_pace>`.
|
||||
|
||||
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
For atom type pairs I,J and I != J, where types I and J correspond to
|
||||
two different element types, mixing is performed by LAMMPS with
|
||||
user-specifiable parameters as described above. You never need to
|
||||
specify a pair_coeff command with I != J arguments for this style.
|
||||
|
||||
This pair styles does not support the :doc:`pair_modify <pair_modify>`
|
||||
shift, table, and tail options.
|
||||
|
||||
This pair styles does not write its information to :doc:`binary restart
|
||||
files <restart>`, since it is stored in potential files. Thus, you need
|
||||
to re-specify the pair_style and pair_coeff commands in an input script
|
||||
that reads a restart file.
|
||||
|
||||
This pair styles can only be used via the *pair* keyword of the
|
||||
:doc:`run_style respa <run_style>` command. It does not support the
|
||||
*inner*, *middle*, *outer* keywords.
|
||||
|
||||
----------
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This pair styles are part of the APIP package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`pair_style pace <pair_pace>`,
|
||||
:doc:`pair_style hybrid/overlay <pair_hybrid>`,
|
||||
:doc:`fix lambda/apip <fix_lambda_apip>`,
|
||||
:doc:`fix lambda_thermostat/apip <fix_lambda_thermostat_apip>`,
|
||||
:doc:`pair_style lambda/zone/apip <pair_lambda_zone_apip>`,
|
||||
:doc:`pair_style lambda/input/apip <pair_lambda_input_apip>`,
|
||||
:doc:`pair_style eam/apip <pair_eam_apip>`,
|
||||
:doc:`fix atom_weight/apip <fix_atom_weight_apip>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
See :doc:`pair_style pace <pair_pace>`.
|
||||
|
||||
----------
|
||||
|
||||
.. _Drautz2019_2:
|
||||
|
||||
**(Drautz19)** Drautz, Phys Rev B, 99, 014104 (2019).
|
||||
|
||||
.. _Lysogorskiy20211_2:
|
||||
|
||||
**(Lysogorskiy21)** Lysogorskiy, van der Oord, Bochkarev, Menon, Rinaldi, Hammerschmidt, Mrovec, Thompson, Csanyi, Ortner, Drautz, npj Comp Mat, 7, 97 (2021).
|
||||
|
||||
.. _Immel2025_7:
|
||||
|
||||
**(Immel25)** Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025)
|
||||
@ -188,7 +188,9 @@ accelerated styles exist.
|
||||
* :doc:`eam/cd <pair_eam>` - concentration-dependent EAM
|
||||
* :doc:`eam/cd/old <pair_eam>` - older two-site model for concentration-dependent EAM
|
||||
* :doc:`eam/fs <pair_eam>` - Finnis-Sinclair EAM
|
||||
* :doc:`eam/fs/apip <pair_eam_apip>` - :doc:`adaptive precision <Howto_apip>` version of FS EAM, used as fast potential
|
||||
* :doc:`eam/he <pair_eam>` - Finnis-Sinclair EAM modified for Helium in metals
|
||||
* :doc:`eam/apip <pair_eam_apip>` - :doc:`adaptive-precision <Howto_apip>` version of EAM, used as fast potential
|
||||
* :doc:`edip <pair_edip>` - three-body EDIP potential
|
||||
* :doc:`edip/multi <pair_edip>` - multi-element EDIP potential
|
||||
* :doc:`edpd <pair_mesodpd>` - eDPD particle interactions
|
||||
@ -217,6 +219,9 @@ accelerated styles exist.
|
||||
* :doc:`kim <pair_kim>` - interface to potentials provided by KIM project
|
||||
* :doc:`kolmogorov/crespi/full <pair_kolmogorov_crespi_full>` - Kolmogorov-Crespi (KC) potential with no simplifications
|
||||
* :doc:`kolmogorov/crespi/z <pair_kolmogorov_crespi_z>` - Kolmogorov-Crespi (KC) potential with normals along z-axis
|
||||
* :doc:`lambda/input/apip <pair_lambda_input_apip>` - constant as input for the precision calculation of an :doc:`adaptive-precision interatomic potential (APIP) <Howto_apip>`
|
||||
* :doc:`lambda/input/csp/apip <pair_lambda_input_apip>` - CSP as input for the precision calculation of an :doc:`adaptive-precision interatomic potential (APIP) <Howto_apip>`
|
||||
* :doc:`lambda/zone/apip <pair_lambda_zone_apip>` - transition zone of an :doc:`adaptive-precision interatomic potential <Howto_apip>`
|
||||
* :doc:`lcbop <pair_lcbop>` - long-range bond-order potential (LCBOP)
|
||||
* :doc:`lebedeva/z <pair_lebedeva_z>` - Lebedeva interlayer potential for graphene with normals along z-axis
|
||||
* :doc:`lennard/mdf <pair_mdf>` - LJ potential in A/B form with a taper function
|
||||
@ -330,6 +335,9 @@ accelerated styles exist.
|
||||
* :doc:`oxrna2/xstk <pair_oxrna2>` -
|
||||
* :doc:`pace <pair_pace>` - Atomic Cluster Expansion (ACE) machine-learning potential
|
||||
* :doc:`pace/extrapolation <pair_pace>` - Atomic Cluster Expansion (ACE) machine-learning potential with extrapolation grades
|
||||
* :doc:`pace/apip <pair_pace_apip>` - :doc:`adaptive-precision <Howto_apip>` version of ACE, used as precise potential
|
||||
* :doc:`pace/fast/apip <pair_pace_apip>` - :doc:`adaptive-precision <Howto_apip>` version of ACE, used as fast potential
|
||||
* :doc:`pace/precise/apip <pair_pace_apip>` - :doc:`adaptive-precision <Howto_apip>` version of ACE, used as precise potential
|
||||
* :doc:`pedone <pair_pedone>` - Pedone (PMMCS) potential (non-Coulomb part)
|
||||
* :doc:`pod <pair_pod>` - Proper orthogonal decomposition (POD) machine-learning potential
|
||||
* :doc:`peri/eps <pair_peri>` - Peridynamic EPS potential
|
||||
|
||||
@ -16,12 +16,13 @@ Syntax
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
field = *x* or *y* or *z* or *vx* or *vy* or *vz* or *q* or *ix* or *iy* or *iz* or *fx* or *fy* or *fz*
|
||||
field = *x* or *y* or *z* or *vx* or *vy* or *vz* or *q* or *ix* or *iy* or *iz* or *fx* or *fy* or *fz* or *apip_lambda*
|
||||
*x*,\ *y*,\ *z* = atom coordinates
|
||||
*vx*,\ *vy*,\ *vz* = velocity components
|
||||
*q* = charge
|
||||
*ix*,\ *iy*,\ *iz* = image flags in each dimension
|
||||
*fx*,\ *fy*,\ *fz* = force components
|
||||
*apip_lambda* = switching parameter of an :doc:`adaptive-precision interatomic potential <Howto_apip>`
|
||||
|
||||
* zero or more keyword/value pairs may be appended
|
||||
* keyword = *nfile* or *box* or *timestep* or *replace* or *purge* or *trim* or *add* or *label* or *scaled* or *wrapped* or *format*
|
||||
|
||||
@ -23,8 +23,8 @@ Syntax
|
||||
|
||||
* one or more keyword/value pairs may be appended
|
||||
|
||||
* keyword = *angle* or *angmom* or *bond* or *cc* or *charge* or
|
||||
*density* or *density/disc* or *diameter* or *dihedral* or *dipole*
|
||||
* keyword = *angle* or *angmom* or *apip/lambda* or *bond* or *cc* or *charge*
|
||||
or *density* or *density/disc* or *diameter* or *dihedral* or *dipole*
|
||||
or *dipole/random* or *dpd/theta* or *edpd/cv* or *edpd/temp* or
|
||||
*epsilon* or *image* or *improper* or *length* or *mass* or *mol* or
|
||||
*omega* or *quat* or *quat/random* or *radius/electron* or *shape* or
|
||||
@ -41,6 +41,10 @@ Syntax
|
||||
*angmom* values = Lx Ly Lz
|
||||
Lx,Ly,Lz = components of angular momentum vector (distance-mass-velocity units)
|
||||
any of Lx,Ly,Lz can be an atom-style variable (see below)
|
||||
*apip/lambda* value = fast or precise or float
|
||||
fast = switching parameter of fast potential (1)
|
||||
precise = switching parameter of fast potential (0)
|
||||
float = constant float or atom-style variable (between 0 and 1)
|
||||
*bond* value = numeric bond type or bond type label, for all bonds between selected atoms
|
||||
*cc* values = index cc
|
||||
index = index of a chemical species (1 to Nspecies)
|
||||
@ -632,6 +636,13 @@ atoms.
|
||||
|
||||
Keywords *x*, *y*, *z* set the coordinates of all selected atoms.
|
||||
|
||||
Keyword *apip/lambda* sets the switching parameter of an
|
||||
adaptive-precision interatomic potential (:doc:`APIP <Howto_apip>`).
|
||||
The precise potential is used for an atom when its switching parameter
|
||||
:math:`\lambda` is 0. The fast potential is used for an atom when its
|
||||
switching parameter :math:`\lambda` is 1. Both potentials are partially
|
||||
used for :math:`\lambda\in(0,1)`.
|
||||
|
||||
Keywords *i_name*, *d_name*, *i2_name*, *d2_name* refer to custom
|
||||
per-atom integer and floating-point vectors or arrays that have been
|
||||
added via the :doc:`fix property/atom <fix_property_atom>` command.
|
||||
|
||||
@ -20,7 +20,7 @@ Syntax
|
||||
*yaml* args = none
|
||||
*custom* args = list of keywords
|
||||
possible keywords = step, elapsed, elaplong, dt, time,
|
||||
cpu, tpcpu, spcpu, cpuremain, part, timeremain,
|
||||
cpu, tpcpu, spcpu, cpuuse, cpuremain, part, timeremain,
|
||||
atoms, temp, press, pe, ke, etotal,
|
||||
evdwl, ecoul, epair, ebond, eangle, edihed, eimp,
|
||||
emol, elong, etail,
|
||||
@ -48,6 +48,7 @@ Syntax
|
||||
cpu = elapsed CPU time in seconds since start of this run
|
||||
tpcpu = time per CPU second
|
||||
spcpu = timesteps per CPU second
|
||||
cpuuse = CPU utilization in percent (can be > 100% with multi-threading)
|
||||
cpuremain = estimated CPU time remaining in run
|
||||
part = which partition (0 to Npartition-1) this is
|
||||
timeremain = remaining time in seconds on timer timeout.
|
||||
@ -292,6 +293,16 @@ steps. The *tpcpu* keyword does not attempt to track any changes in
|
||||
timestep size, e.g. due to using the :doc:`fix dt/reset <fix_dt_reset>`
|
||||
command.
|
||||
|
||||
The *cpuuse* keyword represents the CPU utilization in percent on
|
||||
MPI rank 0 for the current run. This should typically be around 100%
|
||||
for single-threaded runs. Smaller values indicate that LAMMPS may be
|
||||
stalling on file I/O, or some other process is competing with LAMMPS
|
||||
for the same CPU. When using multi-threading through the KOKKOS,
|
||||
INTEL, or OPENMP packages the value can be larger than 100% and
|
||||
ideally should be close to *nthreads* x 100%. How close depends
|
||||
on how much of the execution time is spent in multi-threaded parts
|
||||
of the code versus the non-accelerated parts.
|
||||
|
||||
The *cpuremain* keyword estimates the CPU time remaining in the
|
||||
current run, based on the time elapsed thus far. It will only be a
|
||||
good estimate if the CPU time/timestep for the rest of the run is
|
||||
|
||||
@ -68,7 +68,8 @@ Syntax
|
||||
bound(group,dir,region), gyration(group,region), ke(group,reigon),
|
||||
angmom(group,dim,region), torque(group,dim,region),
|
||||
inertia(group,dimdim,region), omega(group,dim,region)
|
||||
special functions = sum(x), min(x), max(x), ave(x), trap(x), slope(x), sort(x), rsort(x), \ gmask(x), rmask(x), grmask(x,y), next(x), is_file(name), is_os(name),
|
||||
special functions = sum(x), min(x), max(x), ave(x), trap(x), slope(x), sort(x), rsort(x),
|
||||
gmask(x), rmask(x), grmask(x,y), next(x), is_file(name), is_os(name),
|
||||
extract_setting(name), label2type(kind,label),
|
||||
is_typelabel(kind,label), is_timeout()
|
||||
feature functions = is_available(category,feature), is_active(category,feature),
|
||||
@ -758,10 +759,23 @@ is the nearest integer to its argument.
|
||||
|
||||
.. versionadded:: 7Feb2024
|
||||
|
||||
The ternary(x,y,z) function is the equivalent of the ternary operator
|
||||
(? and :) in C or C++. It takes 3 arguments. The first argument is a
|
||||
.. versionchanged:: TBD
|
||||
|
||||
Evaluate only selected argument
|
||||
|
||||
The ternary(x,y,z) function is the equivalent of the ternary operator (?
|
||||
and :) in C or C++. It takes 3 arguments. The first argument is a
|
||||
conditional. The result of the function is y if x evaluates to true
|
||||
(non-zero). The result is z if x evaluates to false (zero).
|
||||
(non-zero). The result is z if x evaluates to false (zero). Same as in
|
||||
C or C++ only the selected argument y or z is evaluated, so this
|
||||
function can be used to protect against crashes from evaluating invalid
|
||||
arguments, e.g. in the following example where "qval" is a variable with
|
||||
an expression that may become (slightly) negative due to floating-point
|
||||
math limitations.:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
variable sqrtofqval equal "ternary(v_qval >= 0, sqrt(v_qval), 0.0)"
|
||||
|
||||
The ramp(x,y) function uses the current timestep to generate a value
|
||||
linearly interpolated between the specified x,y values over the course
|
||||
|
||||
@ -2,6 +2,7 @@ Sphinx >= 5.3.0, <8.3.0
|
||||
sphinxcontrib-spelling
|
||||
sphinxcontrib-jquery
|
||||
sphinx-design
|
||||
sphinx-toolbox
|
||||
git+https://github.com/akohlmey/sphinx-fortran@parallel-read
|
||||
sphinx-tabs>=3.4.1
|
||||
breathe
|
||||
@ -10,3 +11,4 @@ six
|
||||
pyyaml
|
||||
linkchecker
|
||||
ipython
|
||||
numpy
|
||||
|
||||
@ -50,6 +50,7 @@ extensions = [
|
||||
'sphinx.ext.mathjax',
|
||||
'sphinx.ext.imgmath',
|
||||
'sphinx.ext.autodoc',
|
||||
'sphinx_toolbox.collapse',
|
||||
'lammps_theme',
|
||||
'sphinxcontrib.jquery',
|
||||
'sphinxfortran.fortran_domain',
|
||||
@ -370,17 +371,6 @@ latex_elements = {
|
||||
{%
|
||||
\hypersetup{pageanchor=false}% avoid duplicate destination warnings
|
||||
\begin{titlepage}%
|
||||
\sffamily\Large
|
||||
The LAMMPS developers are thinking about dropping the PDF format version of
|
||||
the LAMMPS manual. This would allow us to focus on the HTML version, use
|
||||
HTML-only features, and skip checking if the documentation source files,
|
||||
especially the embedded mathematical expressions, are compatible with \LaTeX{} output.
|
||||
|
||||
Please let us know how you feel about this change by sending an email to
|
||||
\texttt{developers@lammps.org} stating whether you agree or disagree with
|
||||
removing support for the PDF format version of the manual and optionally
|
||||
provide arguments for your preference.
|
||||
\clearpage
|
||||
\sffamily\bfseries
|
||||
\begingroup % for PDF information dictionary
|
||||
\def\endgraf{ }\def\and{\& }%
|
||||
@ -395,8 +385,8 @@ latex_elements = {
|
||||
\vfill
|
||||
{\LARGE \lammpsversion \par}
|
||||
\vfill
|
||||
{\LARGE The LAMMPS Developers \par}
|
||||
{\Large developers@lammps.org $^*$ \par}
|
||||
{\LARGE The LAMMPS Developers$^*$ \par}
|
||||
{\Large developers@lammps.org \par}
|
||||
\vfill\vfill\vfill
|
||||
{\normalsize ${}^*$ see
|
||||
\sphinxhref{https://www.lammps.org/authors.html}{https://www.lammps.org/authors.html}
|
||||
|
||||
@ -33,6 +33,7 @@ activationfunctions
|
||||
acylindricity
|
||||
addforce
|
||||
Addington
|
||||
addstep
|
||||
addtorque
|
||||
adf
|
||||
Adhikari
|
||||
@ -135,6 +136,8 @@ anton
|
||||
Antonelli
|
||||
anysize
|
||||
api
|
||||
apip
|
||||
APIP
|
||||
apolar
|
||||
Apoorva
|
||||
Appl
|
||||
@ -530,6 +533,7 @@ civ
|
||||
CKD
|
||||
ckk
|
||||
Clang
|
||||
clearstep
|
||||
clearstore
|
||||
Cleary
|
||||
Clebsch
|
||||
@ -654,6 +658,7 @@ CSiC
|
||||
csld
|
||||
cslib
|
||||
CSlib
|
||||
csp
|
||||
cstdio
|
||||
cstdlib
|
||||
cstring
|
||||
@ -1384,6 +1389,7 @@ gmres
|
||||
gname
|
||||
gneb
|
||||
GNEB
|
||||
Godehard
|
||||
Goerigk
|
||||
Goga
|
||||
Goldfarb
|
||||
@ -1489,6 +1495,7 @@ Hebbeker
|
||||
Hebenstreit
|
||||
Hecht
|
||||
Heenen
|
||||
Heermann
|
||||
heFFTe
|
||||
Hendrik
|
||||
Henin
|
||||
@ -1526,6 +1533,7 @@ histogrammed
|
||||
histogramming
|
||||
hma
|
||||
hmaktulga
|
||||
hmc
|
||||
hoc
|
||||
Hochbruck
|
||||
Hofling
|
||||
@ -1619,6 +1627,7 @@ Imageint
|
||||
Imagemagick
|
||||
imagename
|
||||
imd
|
||||
Immel
|
||||
Impey
|
||||
impl
|
||||
improperlist
|
||||
@ -2087,6 +2096,7 @@ Loewen
|
||||
logfile
|
||||
logfreq
|
||||
logicals
|
||||
logmesg
|
||||
loID
|
||||
Lomdahl
|
||||
Lond
|
||||
@ -2259,6 +2269,7 @@ mediumturquoise
|
||||
mediumvioletred
|
||||
Mees
|
||||
Mehl
|
||||
Mehlig
|
||||
Mei
|
||||
Meissner
|
||||
Melchor
|
||||
@ -3196,6 +3207,7 @@ queryargs
|
||||
Queteschiner
|
||||
quickmin
|
||||
quintic
|
||||
qval
|
||||
qw
|
||||
qx
|
||||
qy
|
||||
@ -3847,6 +3859,7 @@ Thiaville
|
||||
Thibaudeau
|
||||
Thijsse
|
||||
Thirumalai
|
||||
thr
|
||||
Threadripper
|
||||
threebody
|
||||
thrid
|
||||
|
||||
@ -141,6 +141,7 @@ liblammpsplugin_t *liblammpsplugin_load(const char *lib)
|
||||
ADDSYM(scatter_subset);
|
||||
|
||||
ADDSYM(create_atoms);
|
||||
ADDSYM(create_molecule);
|
||||
|
||||
ADDSYM(find_pair_neighlist);
|
||||
ADDSYM(find_fix_neighlist);
|
||||
|
||||
@ -207,6 +207,7 @@ struct _liblammpsplugin {
|
||||
int (*create_atoms)(void *, int, const int64_t *, const int *, const double *, const double *,
|
||||
const int64_t *, int);
|
||||
#endif
|
||||
int (*create_molecule)(void *, const char *, const char *);
|
||||
|
||||
int (*find_pair_neighlist)(void *, const char *, int, int, int);
|
||||
int (*find_fix_neighlist)(void *, const char *, int);
|
||||
|
||||
34
examples/PACKAGES/apip/Cu-1.yace
Normal file
@ -0,0 +1,34 @@
|
||||
NOTE: This is a simple potential for the example. Production usage without testing is not recommended. Provided by Yury Lysogorskiy (ICAMS, RUB, Germany).
|
||||
elements: [Cu]
|
||||
E0: [0]
|
||||
deltaSplineBins: 0.001
|
||||
embeddings:
|
||||
0: {ndensity: 2, FS_parameters: [1, 1, 1, 0.5], npoti: FinnisSinclairShiftedScaled, rho_core_cutoff: 100000, drho_core_cutoff: 250}
|
||||
bonds:
|
||||
[0, 0]: {nradmax: 2, lmax: 2, nradbasemax: 15, radbasename: ChebPow, radparameters: [2], radcoefficients: [[[0.99440439385969503, -0.085048653403583918, -0.23248632054717755, -0.22732701549371864, 0.026354948476648921, 0.21853318667456997, 0.05745747498169812, -0.19717925712228765, -0.11474256770370879, 0.12738668745839368, 0.053777769435472259, -0.11094768379576209, 0.072620812391582482, -0.058715761632824881, 0.030359986427775303], [0.96259704765772924, -0.10129488003029259, -0.10345557604916655, -0.020393848425879282, 0.076671442494272601, 0.10318554794001746, 0.0555341702761026, 0.00083194423680727696, -0.018184436957498409, -0.021866885826555403, -0.020179969116479776, 0.021880011516616484, 0.053112509345249602, -0.083707026393616657, 0.020611714544479017], [1.001530579978529, -0.030080648426358471, -0.13318582671063051, -0.24371635685809706, -0.22760541127468878, -0.041144767051648642, 0.18080289144697201, 0.24543156067198274, 0.11014559411659355, -0.069512010077804498, -0.1172049950938457, -0.027509386703874331, 0.056985864219913585, 0.037536629112081353, -0.044222474537374087]], [[0.25716120576634355, 1.7485527550537943, 0.91889737965719875, 0.50902244208852199, -0.15895537149482841, -0.48109723575282892, -0.17843605933015286, 0.39450608859531944, 0.59293909285591195, 0.18268386912819001, -0.34706543720907351, -0.3210061634328315, 0.21678650779400246, 0.39500148786376449, -0.31820913370341625], [0.0079213202761679105, 1.0212489038630681, 0.011530454475879359, -0.049445152058907642, -0.15268524878755677, -0.2319378608755131, -0.20612580998548105, -0.067027395211212315, 0.08241096034972574, 0.11288597065081186, 0.01355948960244063, -0.074722461388416803, -0.022724332047049267, 0.088871664887057056, 0.031667459613258314], [-0.0069872405356639312, 0.9939655327342134, 0.035044055182587928, 0.099765277857093104, 0.11687607289674087, 0.030241996404391416, -0.12367698594314165, -0.22480900218170197, -0.17727517861619441, -0.015144941558075584, 0.11375495728241894, 0.090680932947050971, -0.041190210394591399, -0.10085768296286811, 0.055789864104988186]]], prehc: 0, lambdahc: 0, rcut: 3.8999999999999999, dcut: 0.01, rcut_in: 0, dcut_in: 0, inner_cutoff_type: density}
|
||||
functions:
|
||||
0:
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [1], ls: [0], ms_combs: [0], ctildes: [0.26072556900842869, -0.03073189825062177]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [2], ls: [0], ms_combs: [0], ctildes: [0.64429175483702295, -0.1630534353246999]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [3], ls: [0], ms_combs: [0], ctildes: [0.51856313423563594, -0.4259316875879266]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [4], ls: [0], ms_combs: [0], ctildes: [-0.078113533662468398, -0.70352070540668643]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [5], ls: [0], ms_combs: [0], ctildes: [-0.45633111544093646, -0.7859368117550467]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [6], ls: [0], ms_combs: [0], ctildes: [-0.19608401600520556, -0.59151667874441172]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [7], ls: [0], ms_combs: [0], ctildes: [0.30580228338697285, -0.29248216980800118]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [8], ls: [0], ms_combs: [0], ctildes: [0.40167461008815436, -0.15647925731818518]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [9], ls: [0], ms_combs: [0], ctildes: [0.053519057558225343, -0.25900906688118652]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [10], ls: [0], ms_combs: [0], ctildes: [-0.20446546815457517, -0.40019216010057629]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [11], ls: [0], ms_combs: [0], ctildes: [-0.070020661105060208, -0.33441939205411986]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [12], ls: [0], ms_combs: [0], ctildes: [0.15734064575001952, -0.055233119903794807]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [13], ls: [0], ms_combs: [0], ctildes: [0.10021406559793103, 0.18641744536767416]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [14], ls: [0], ms_combs: [0], ctildes: [-0.14066730990975543, 0.14711096149210373]}
|
||||
- {mu0: 0, rank: 1, ndensity: 2, num_ms_combs: 1, mus: [0], ns: [15], ls: [0], ms_combs: [0], ctildes: [0.031100766650549283, -0.13720067925313634]}
|
||||
- {mu0: 0, rank: 2, ndensity: 2, num_ms_combs: 1, mus: [0, 0], ns: [1, 1], ls: [0, 0], ms_combs: [0, 0], ctildes: [1.0984212008195524, 0.49756623164565855]}
|
||||
- {mu0: 0, rank: 2, ndensity: 2, num_ms_combs: 2, mus: [0, 0], ns: [1, 1], ls: [1, 1], ms_combs: [0, 0, 1, -1], ctildes: [0.2591109116320176, 0.21348077494861176, -0.5182218232640351, -0.4269615498972234]}
|
||||
- {mu0: 0, rank: 2, ndensity: 2, num_ms_combs: 3, mus: [0, 0], ns: [1, 1], ls: [2, 2], ms_combs: [0, 0, 1, -1, 2, -2], ctildes: [0.015905361441871636, 0.023783303055646809, -0.031810722883743273, -0.047566606111293624, 0.031810722883743286, 0.047566606111293638]}
|
||||
- {mu0: 0, rank: 2, ndensity: 2, num_ms_combs: 1, mus: [0, 0], ns: [2, 1], ls: [0, 0], ms_combs: [0, 0], ctildes: [0.63958612617724186, 1.6623415103929948]}
|
||||
- {mu0: 0, rank: 2, ndensity: 2, num_ms_combs: 2, mus: [0, 0], ns: [2, 1], ls: [1, 1], ms_combs: [0, 0, 1, -1], ctildes: [0.14199022782503917, 0.0069900458821809735, -0.28398045565007829, -0.013980091764361944]}
|
||||
- {mu0: 0, rank: 2, ndensity: 2, num_ms_combs: 3, mus: [0, 0], ns: [2, 1], ls: [2, 2], ms_combs: [0, 0, 1, -1, 2, -2], ctildes: [0.028732470496968317, -0.037173039560267927, -0.05746494099393664, 0.074346079120535868, 0.057464940993936654, -0.074346079120535882]}
|
||||
- {mu0: 0, rank: 2, ndensity: 2, num_ms_combs: 1, mus: [0, 0], ns: [2, 2], ls: [0, 0], ms_combs: [0, 0], ctildes: [0.056442895466964321, 0.0054387873274233034]}
|
||||
- {mu0: 0, rank: 2, ndensity: 2, num_ms_combs: 2, mus: [0, 0], ns: [2, 2], ls: [1, 1], ms_combs: [0, 0, 1, -1], ctildes: [0.025326283180140272, -0.19511149476156769, -0.050652566360280531, 0.39022298952313533]}
|
||||
- {mu0: 0, rank: 2, ndensity: 2, num_ms_combs: 3, mus: [0, 0], ns: [2, 2], ls: [2, 2], ms_combs: [0, 0, 1, -1, 2, -2], ctildes: [0.012754475331985416, -0.058934602152610385, -0.025508950663970836, 0.11786920430522078, 0.025508950663970843, -0.11786920430522081]}
|
||||
6006
examples/PACKAGES/apip/Cu_300K_Immel_2023.eam.fs
Normal file
11
examples/PACKAGES/apip/README
Normal file
@ -0,0 +1,11 @@
|
||||
The APIP package is based on the paper:
|
||||
|
||||
David Immel, Ralf Drautz, Godehard Sutmann; Adaptive-precision potentials for large-scale atomistic simulations. J. Chem. Phys. 14 March 2025; 162 (11): 114119. https://doi.org/10.1063/5.0245877
|
||||
|
||||
The pair_style pace/apip requires the installation of lib/pace of the ML-PACE package.
|
||||
The installation of lib/pace is described in src/ML-PACE/README .
|
||||
|
||||
Examples of how to use an adaptive-precision potential are provided in examples/PACKAGES/apip .
|
||||
|
||||
in.vacancy contains a small example that can be used to visualize the transition region and get a visual impression of the selected parameters.
|
||||
in.surface.balance in a more realistic example, in which a surface is simulated and the benefit of fix apip_atom_weight and fix balance for adaptive-precision interatomic potentials is demonstrated.
|
||||
80418
examples/PACKAGES/apip/data.surface.balance
Normal file
4112
examples/PACKAGES/apip/data.vacancy
Normal file
80
examples/PACKAGES/apip/data.validate
Normal file
@ -0,0 +1,80 @@
|
||||
LAMMPS data file via write_data, version 2 Apr 2025, timestep = 0, units = metal
|
||||
|
||||
31 atoms
|
||||
1 atom types
|
||||
|
||||
0 7.23 xlo xhi
|
||||
0 7.23 ylo yhi
|
||||
0 7.23 zlo zhi
|
||||
|
||||
Masses
|
||||
|
||||
1 63.546
|
||||
|
||||
Atoms # apip
|
||||
|
||||
1 1 3.255649577011424 2.1469408310018205 1.596546647595962 0 0 0
|
||||
2 1 5.312133977687514 0.2962629940541289 1.7986410677440656 0 0 0
|
||||
3 1 0.3570136530341179 1.9589665444185802 1.8227120430766197 0 0 0
|
||||
4 1 1.538770434276094 1.8506888783106994 3.5984777679252336 0 0 0
|
||||
5 1 5.414379916412933 1.9802551521608864 3.5428423680157133 0 0 0
|
||||
6 1 3.3396207511420926 0.34696444514694835 3.3284295847601864 0 0 0
|
||||
7 1 0.04692381499727436 3.470558659189874 0.20838500420697273 0 0 0
|
||||
8 1 3.5507628116865004 3.419576015011443 0.09808429731968064 0 0 0
|
||||
9 1 3.4359438466091845 3.3442299605630015 3.344947182361245 0 0 0
|
||||
10 1 3.262172986855113 1.8898900738753799 5.6074716235080135 0 0 0
|
||||
11 1 5.616180533384058 0.24272458584617107 5.728614316596936 0 0 0
|
||||
12 1 0.3320737270957668 2.133631298552561 5.648234772896504 0 0 0
|
||||
13 1 7.193910458696732 0.040079315967661934 7.007063468494249 -1 0 -1
|
||||
14 1 1.9428459507398523 2.008894084694746 6.974381464595852 0 0 -1
|
||||
15 1 5.17195441765988 1.6398976096007498 7.144624559798802 0 0 -1
|
||||
16 1 3.828212487222493 0.27427274843853566 7.084083006467942 0 0 -1
|
||||
17 1 0.3576896118392189 3.5593061817506357 3.8539966829342287 0 0 0
|
||||
18 1 5.549388330643712 3.3771731288636446 5.733276811271104 0 0 0
|
||||
19 1 1.474782367736 3.311754538948766 5.203036111913638 0 0 0
|
||||
20 1 3.353885621487343 5.483140337766679 1.559656844576661 0 0 0
|
||||
21 1 1.4600851633288363 5.3693400677513985 0.16901869775192754 0 0 0
|
||||
22 1 1.865319826459661 3.680823307523189 1.909829542233995 0 0 0
|
||||
23 1 6.919428313555163 5.704165921616911 1.5626446154218376 -1 0 0
|
||||
24 1 5.286111954406888 3.9741177165543746 1.894962129368895 0 0 0
|
||||
25 1 5.661441532175263 5.770831269632481 0.2726487131030991 0 0 0
|
||||
26 1 5.749451385769738 5.694440631979816 3.315201684766776 0 0 0
|
||||
27 1 2.1656354707333425 5.630356615286487 3.525133119978771 0 0 0
|
||||
28 1 3.4802512558478638 5.136357035041954 5.613687950103865 0 0 0
|
||||
29 1 6.9476459434582605 5.669871702976 5.748711917622347 -1 0 0
|
||||
30 1 0.3145319513743893 6.992506749359428 3.748936483911442 0 -1 0
|
||||
31 1 2.0688280140984934 7.144932953378388 5.071647430554334 0 -1 0
|
||||
|
||||
Velocities
|
||||
|
||||
1 0 0 0
|
||||
2 0 0 0
|
||||
3 0 0 0
|
||||
4 0 0 0
|
||||
5 0 0 0
|
||||
6 0 0 0
|
||||
7 0 0 0
|
||||
8 0 0 0
|
||||
9 0 0 0
|
||||
10 0 0 0
|
||||
11 0 0 0
|
||||
12 0 0 0
|
||||
13 0 0 0
|
||||
14 0 0 0
|
||||
15 0 0 0
|
||||
16 0 0 0
|
||||
17 0 0 0
|
||||
18 0 0 0
|
||||
19 0 0 0
|
||||
20 0 0 0
|
||||
21 0 0 0
|
||||
22 0 0 0
|
||||
23 0 0 0
|
||||
24 0 0 0
|
||||
25 0 0 0
|
||||
26 0 0 0
|
||||
27 0 0 0
|
||||
28 0 0 0
|
||||
29 0 0 0
|
||||
30 0 0 0
|
||||
31 0 0 0
|
||||
75
examples/PACKAGES/apip/in.surface.balance
Normal file
@ -0,0 +1,75 @@
|
||||
##################################################
|
||||
# parameters of the adaptive-precision potential #
|
||||
##################################################
|
||||
# We couple an EAM potential with an ACE potential.
|
||||
variable eamfs_file string "Cu_300K_Immel_2023.eam.fs"
|
||||
variable ace_file1 string "Cu-1.yace"
|
||||
variable ace_file2 string "../../../potentials/Cu-PBE-core-rep.ace"
|
||||
# The csp is used as detection mechanism for atoms of interest.
|
||||
variable csp_lattice string "fcc"
|
||||
variable csp_cutoff equal 6.0
|
||||
# The range [r_sw_lo, r_sw_hi] determines where the switching parameter changes from 0 to 1.
|
||||
variable r_sw_lo equal 4.0
|
||||
variable r_sw_hi equal 12.0
|
||||
# Thresholds between which the switching parameter changes from 1 to 0 based on the csp.
|
||||
variable lambda_input_thr_lo equal 7.5
|
||||
variable lambda_input_thr_hi equal 8.0
|
||||
# Number of averaged steps.
|
||||
variable lambda_input_histlen equal 110
|
||||
variable lambda_histlen equal 110
|
||||
# Minimum required change of the switching parameter
|
||||
variable min_delta_lambda equal 1/${lambda_histlen}
|
||||
# number of atoms rescaled by the lambda_thermostat
|
||||
variable N_rescaling equal 600
|
||||
|
||||
|
||||
|
||||
# basic stuff
|
||||
units metal
|
||||
dimension 3
|
||||
boundary p p s
|
||||
atom_style apip # own atom style required for APIP
|
||||
timestep 0.001
|
||||
|
||||
read_data data.surface.balance
|
||||
|
||||
fix nve all nve
|
||||
comm_style tiled
|
||||
|
||||
|
||||
# Only the upper surface should be treated precisely.
|
||||
# Thus, we create group, for whose atoms the csp is ignored, as the corresponding
|
||||
# argument of fix lambda is used.
|
||||
region bottom block INF INF INF INF INF 0 units box
|
||||
group group_ignore_csp region bottom
|
||||
|
||||
|
||||
# use adaptive-precision eam-ace potential with lambda_thermostat
|
||||
pair_style hybrid/overlay eam/fs/apip pace/apip lambda/input/csp/apip ${csp_lattice} cutoff ${csp_cutoff} lambda/zone/apip ${r_sw_hi}
|
||||
pair_coeff * * eam/fs/apip ${eamfs_file} Cu
|
||||
pair_coeff * * pace/apip ${ace_file2} Cu
|
||||
pair_coeff * * lambda/input/csp/apip
|
||||
pair_coeff * * lambda/zone/apip
|
||||
fix lambda all lambda/apip ${lambda_input_thr_lo} ${lambda_input_thr_hi} time_averaged_zone ${r_sw_lo} ${r_sw_hi} ${lambda_input_histlen} ${lambda_histlen} min_delta_lambda ${min_delta_lambda} group_ignore_lambda_input group_ignore_csp
|
||||
fix lambda_thermostat all lambda_thermostat/apip N_rescaling ${N_rescaling}
|
||||
fix weight_atom all atom_weight/apip 10 eam ace lambda/input lambda/zone all
|
||||
|
||||
# store weight in variable
|
||||
fix property_atom all property/atom d_usedweight
|
||||
variable myweight atom f_weight_atom
|
||||
#compute lambda all property/atom apip_lambda
|
||||
#compute lambda_input all property/atom apip_lambda_input
|
||||
#dump 1 all custom 10 dump/surface_ap_balance.dump.* id type x y z c_lambda c_lambda_input f_weight_atom proc d_usedweight
|
||||
|
||||
|
||||
## apply load balancing
|
||||
## no load-balancing
|
||||
#fix balance all balance 10 0.9 report weight time 1.0 weight store usedweight
|
||||
## load balancing with times per atom per processor
|
||||
#fix balance all balance 10 0.9 rcb weight time 1.0 weight store usedweight
|
||||
## load balancing with an approximated load per atom by fix apip_atom_weight
|
||||
fix balance all balance 10 0.9 rcb weight var myweight weight store usedweight
|
||||
|
||||
thermo_style custom step f_balance spcpu f_weight_atom[*]
|
||||
thermo 10
|
||||
run 100
|
||||
54
examples/PACKAGES/apip/in.vacancy.const.lambda
Normal file
@ -0,0 +1,54 @@
|
||||
##################################################
|
||||
# parameters of the adaptive-precision potential #
|
||||
##################################################
|
||||
# We couple an EAM potential with an ACE potential.
|
||||
variable eamfs_file string "Cu_300K_Immel_2023.eam.fs"
|
||||
variable ace_file1 string "Cu-1.yace"
|
||||
variable ace_file2 string "../../../potentials/Cu-PBE-core-rep.ace"
|
||||
|
||||
|
||||
## basic stuff
|
||||
units metal
|
||||
atom_style apip # own atom style required for APIP
|
||||
timestep 0.001
|
||||
|
||||
# copper at room temperature with a vacancy
|
||||
read_data data.vacancy
|
||||
|
||||
|
||||
# set lambda
|
||||
group vacancy id 145 147 148 149 150 994 997 995 1024 1026 1028 1922
|
||||
group transition id 77 79 81 84 88 151 152 153 154 155 158 1089 188 189 192 1033 1039 1964 1022 1021 999 998 996 948 950 952 992 993 139 1025 1027 1029 1034 1035 1038 1088 1920 1921 1923 1924 1925 1930
|
||||
group bulk subtract all vacancy transition
|
||||
set group vacancy apip/lambda precise
|
||||
set group transition apip/lambda 0.5
|
||||
set group bulk apip/lambda fast
|
||||
|
||||
|
||||
fix nve all nve
|
||||
|
||||
|
||||
# Use adaptive-precision eam-ace potential with constant lambda.
|
||||
# Calculate atomic weight that could be used for load balancing.
|
||||
pair_style hybrid/overlay eam/fs/apip pace/apip
|
||||
pair_coeff * * eam/fs/apip ${eamfs_file} Cu
|
||||
pair_coeff * * pace/apip ${ace_file2} Cu
|
||||
fix weight_atom all atom_weight/apip 50 eam ace 0.5 0 all
|
||||
|
||||
|
||||
# get statistics about lambda
|
||||
compute lambda all property/atom apip_lambda
|
||||
compute lambda_input all property/atom apip_lambda_input
|
||||
variable flag_simple atom c_lambda==1
|
||||
variable flag_switch atom c_lambda<1&&c_lambda>0
|
||||
variable flag_complex atom c_lambda==0
|
||||
compute lambda_types all reduce sum v_flag_simple v_flag_switch v_flag_complex
|
||||
|
||||
|
||||
thermo_style custom step etotal c_lambda_types[*]
|
||||
thermo 1
|
||||
|
||||
run 100
|
||||
|
||||
# dump atoms
|
||||
#write_dump all custom dump.vacancy.* id type x y z fx fy fz c_lambda c_lambda_input f_weight_atom
|
||||
101
examples/PACKAGES/apip/in.vacancy.dynamic.lambda
Normal file
@ -0,0 +1,101 @@
|
||||
##################################################
|
||||
# parameters of the adaptive-precision potential #
|
||||
##################################################
|
||||
# We couple an EAM potential with an ACE potential.
|
||||
variable eamfs_file string "Cu_300K_Immel_2023.eam.fs"
|
||||
variable ace_file1 string "Cu-1.yace"
|
||||
variable ace_file2 string "../../../potentials/Cu-PBE-core-rep.ace"
|
||||
# The csp is used as detection mechanism for atoms of interest.
|
||||
variable csp_lattice string "fcc"
|
||||
variable csp_cutoff equal 6.0
|
||||
# The range [r_sw_lo, r_sw_hi] determines where the switching parameter changes from 0 to 1.
|
||||
variable r_sw_lo equal 2.0
|
||||
variable r_sw_hi equal 3.0
|
||||
# Thresholds between which the switching parameter changes from 1 to 0 based on the csp.
|
||||
variable lambda_input_thr_lo equal 2.5
|
||||
variable lambda_input_thr_hi equal 3.0
|
||||
# Number of averaged steps.
|
||||
variable lambda_input_histlen equal 110
|
||||
variable lambda_histlen equal 110
|
||||
# Minimum required change of the switching parameter
|
||||
variable min_delta_lambda equal 1/${lambda_histlen}
|
||||
# number of atoms rescaled by the lambda_thermostat
|
||||
variable N_rescaling equal 600
|
||||
|
||||
|
||||
|
||||
## basic stuff
|
||||
units metal
|
||||
atom_style apip # own atom style required for APIP
|
||||
timestep 0.001
|
||||
|
||||
# copper at room temperature with a vacancy
|
||||
read_data data.vacancy
|
||||
|
||||
fix nve all nve
|
||||
|
||||
|
||||
## Use adaptive-precision ace-ace potential without lambda_thermostat.
|
||||
## Calculate atomic weight that could be used for load balancing.
|
||||
#pair_style hybrid/overlay pace/fast/apip pace/precise/apip lambda/input/csp/apip ${csp_lattice} cutoff ${csp_cutoff} lambda/zone/apip ${r_sw_hi}
|
||||
#pair_coeff * * pace/fast/apip ${ace_file1} Cu
|
||||
#pair_coeff * * pace/precise/apip ${ace_file2} Cu
|
||||
#pair_coeff * * lambda/input/csp/apip
|
||||
#pair_coeff * * lambda/zone/apip
|
||||
#fix lambda all lambda/apip ${lambda_input_thr_lo} ${lambda_input_thr_hi} time_averaged_zone ${r_sw_lo} ${r_sw_hi} ${lambda_input_histlen} ${lambda_histlen} min_delta_lambda ${min_delta_lambda}
|
||||
#fix weight_atom all atom_weight/apip 100 ace ace lambda/input lambda/zone all
|
||||
|
||||
|
||||
# Use adaptive-precision eam-ace potential without lambda_thermostat.
|
||||
# Calculate atomic weight that could be used for load balancing.
|
||||
pair_style hybrid/overlay eam/fs/apip pace/apip lambda/input/csp/apip ${csp_lattice} cutoff ${csp_cutoff} lambda/zone/apip ${r_sw_hi}
|
||||
pair_coeff * * eam/fs/apip ${eamfs_file} Cu
|
||||
pair_coeff * * pace/apip ${ace_file2} Cu
|
||||
pair_coeff * * lambda/input/csp/apip
|
||||
pair_coeff * * lambda/zone/apip
|
||||
fix lambda all lambda/apip ${lambda_input_thr_lo} ${lambda_input_thr_hi} time_averaged_zone ${r_sw_lo} ${r_sw_hi} ${lambda_input_histlen} ${lambda_histlen} min_delta_lambda ${min_delta_lambda}
|
||||
fix weight_atom all atom_weight/apip 100 eam ace lambda/input lambda/zone all
|
||||
|
||||
|
||||
## One can comment out fix lambda_thermostat to see the energy change caused by the neglection of the
|
||||
## gradient of the switching function. This neglection can be compensated by the local thermostat and the
|
||||
## energy can be conserved within numerical precision.
|
||||
fix lambda_thermostat all lambda_thermostat/apip N_rescaling ${N_rescaling} store_atomic_forces 100
|
||||
|
||||
|
||||
# get statistics about lambda
|
||||
compute lambda all property/atom apip_lambda
|
||||
compute lambda_input all property/atom apip_lambda_input
|
||||
variable flag_simple atom c_lambda==1
|
||||
variable flag_switch atom c_lambda<1&&c_lambda>0
|
||||
variable flag_complex atom c_lambda==0
|
||||
compute lambda_types all reduce sum v_flag_simple v_flag_switch v_flag_complex
|
||||
|
||||
|
||||
thermo_style custom step etotal c_lambda_types[*]
|
||||
thermo 1
|
||||
|
||||
run 100
|
||||
|
||||
# dump atoms
|
||||
#write_dump all custom dump/vacancy.dump.* id type x y z fx fy fz c_lambda c_lambda_input f_weight_atom f_lambda_thermostat[*]
|
||||
|
||||
|
||||
|
||||
## A smooth restart of the simulation is possible as the history of lambda and lambda_input is stored.
|
||||
|
||||
#write_restart vacancy_ap.restart
|
||||
#clear
|
||||
#read_restart vacancy_ap.restart
|
||||
#pair_style hybrid/overlay eam/fs/apip pace/apip lambda/input/csp/apip fcc cutoff 6.0 lambda/zone/apip 12.0
|
||||
#pair_coeff * * eam/fs/apip "Cu_300K_Immel_2023.eam.fs" Cu
|
||||
#pair_coeff * * pace/apip "../../../potentials/Cu-PBE-core-rep.ace" Cu
|
||||
#pair_coeff * * lambda/input/csp/apip
|
||||
#pair_coeff * * lambda/zone/apip
|
||||
#fix lambda all lambda/apip 2.5 3.0 time_averaged_zone 4.0 12.0 110 110 min_delta_lambda $(1/110)
|
||||
#fix lambda_thermostat all lambda_thermostat/apip N_rescaling ${N_rescaling} store_atomic_forces 100
|
||||
#fix nve all nve
|
||||
#thermo_style custom step etotal
|
||||
#thermo 1
|
||||
#run 10
|
||||
#shell rm vacancy_ap.restart
|
||||
51
examples/PACKAGES/apip/in.validate
Normal file
@ -0,0 +1,51 @@
|
||||
##################################################
|
||||
# parameters of the adaptive-precision potential #
|
||||
##################################################
|
||||
# We couple an EAM potential with an ACE potential.
|
||||
variable eamfs_file string "Cu_300K_Immel_2023.eam.fs"
|
||||
variable ace_file string "Cu-1.yace"
|
||||
|
||||
|
||||
## basic stuff
|
||||
units metal
|
||||
atom_style apip # own atom style required for APIP
|
||||
timestep 0.001
|
||||
|
||||
## copper with a vacancy
|
||||
#lattice fcc 3.615
|
||||
#region box block 0 2 0 2 0 2 units lattice
|
||||
#create_box 1 box
|
||||
#create_atoms 1 box
|
||||
#mass 1 63.546
|
||||
#displace_atoms all random 0.1 0.1 0.1 42 units lattice
|
||||
#delete_atoms random count 1 yes all NULL 42
|
||||
#write_data data.validate
|
||||
read_data data.validate
|
||||
|
||||
|
||||
fix 1 all nve
|
||||
thermo_style custom step pe fnorm fmax
|
||||
|
||||
|
||||
# use ACE potential
|
||||
pair_style pace
|
||||
pair_coeff * * ${ace_file} Cu
|
||||
run 0
|
||||
|
||||
# use adaptive-precision EAM-ACE potential with constant lambda
|
||||
pair_style hybrid/overlay eam/fs/apip pace/apip
|
||||
pair_coeff * * eam/fs/apip ${eamfs_file} Cu
|
||||
pair_coeff * * pace/apip ${ace_file} Cu
|
||||
|
||||
# use ACE of adaptive-precision potential
|
||||
set group all apip/lambda precise
|
||||
run 0
|
||||
|
||||
# use EAM of adaptive-precision potential
|
||||
set group all apip/lambda fast
|
||||
run 0
|
||||
|
||||
# Use EAM potential
|
||||
pair_style eam/fs
|
||||
pair_coeff * * ${eamfs_file} Cu
|
||||
run 0
|
||||
108
examples/PACKAGES/apip/log.02Apr25.surface.balance.nolb.g++.4
Normal file
@ -0,0 +1,108 @@
|
||||
LAMMPS (2 Apr 2025 - Development - )
|
||||
Reading data file ...
|
||||
orthogonal box = (0 0 -1.1656272) to (36.15 36.15 362.81506)
|
||||
1 by 1 by 4 MPI processor grid
|
||||
reading atoms ...
|
||||
40200 atoms
|
||||
reading velocities ...
|
||||
40200 velocities
|
||||
read_data CPU = 0.135 seconds
|
||||
200 atoms in group group_ignore_csp
|
||||
ACE version: 2023.11.25
|
||||
Recursive evaluator is used by ACE
|
||||
Loading ../../../potentials/Cu-PBE-core-rep.ace
|
||||
Total number of basis functions
|
||||
Cu: 16 (r=1) 726 (r>1)
|
||||
Mapping LAMMPS atom type #1(Cu) -> ACE species type #0
|
||||
atomic load lambda:
|
||||
fast potential: extract eam/apip:time_per_atom
|
||||
precise potential: extract pace/apip:time_per_atom
|
||||
lambda_input: extract lambda/input/apip:time_per_atom
|
||||
lambda: extract lambda/zone/apip:time_per_atom
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
- fix lambda command: doi.org/10.1063/5.0245877
|
||||
The log file lists these citations in BibTeX format.
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 6 6 52
|
||||
5 neighbor lists, perpetual/occasional/extra = 5 0 0
|
||||
(1) pair eam/fs/apip, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(2) pair pace/apip, perpetual, trim from (4)
|
||||
attributes: full, newton on, cut 9.4
|
||||
pair build: trim
|
||||
stencil: none
|
||||
bin: none
|
||||
(3) pair lambda/input/csp/apip, perpetual, trim from (2)
|
||||
attributes: full, newton on, cut 8
|
||||
pair build: trim
|
||||
stencil: none
|
||||
bin: none
|
||||
(4) pair lambda/zone/apip, perpetual
|
||||
attributes: full, newton on, ghost, cut 14
|
||||
pair build: full/bin/ghost
|
||||
stencil: full/ghost/bin/3d
|
||||
bin: standard
|
||||
(5) fix lambda_thermostat/apip, perpetual, copy from (1)
|
||||
attributes: full, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Setting up Verlet run ...
|
||||
Unit style : metal
|
||||
Current step : 0
|
||||
Time step : 0.001
|
||||
Per MPI rank memory allocation (min/avg/max) = 297.9 | 306.9 | 315.9 Mbytes
|
||||
Step f_balance S/CPU f_weight_atom[1] f_weight_atom[2] f_weight_atom[3] f_weight_atom[4]
|
||||
0 1.0139303 0 0 0 0 0
|
||||
10 2.6176099 0.23789922 3.4933844e-05 0.0018769787 2.0912678e-05 3.414976e-05
|
||||
20 2.1242027 0.2259695 4.2800036e-05 0.0022124427 2.4613899e-05 4.0819606e-05
|
||||
30 2.1197082 0.22281117 4.3885117e-05 0.0022416604 2.4808124e-05 4.081464e-05
|
||||
40 2.1149313 0.2245266 4.3328755e-05 0.0022134411 2.4645468e-05 4.0892224e-05
|
||||
50 2.1066618 0.22308398 4.3884622e-05 0.0022085846 2.464161e-05 4.0909229e-05
|
||||
60 2.1000306 0.22186291 4.4839801e-05 0.0022299631 2.4816945e-05 4.1173119e-05
|
||||
70 2.1062658 0.22406791 4.3740709e-05 0.0022049729 2.4693417e-05 4.0963037e-05
|
||||
80 2.1072933 0.22241288 4.4160464e-05 0.0022245226 2.4854938e-05 4.2491144e-05
|
||||
90 2.0981181 0.22412189 4.3990788e-05 0.0022086162 2.4710948e-05 4.09478e-05
|
||||
100 2.1033304 0.2237968 4.3982714e-05 0.0022112815 2.4658851e-05 4.1060551e-05
|
||||
Loop time of 444.499 on 4 procs for 100 steps with 40200 atoms
|
||||
|
||||
Performance: 0.019 ns/day, 1234.721 hours/ns, 0.225 timesteps/s, 9.044 katom-step/s
|
||||
99.0% CPU use with 4 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 67.764 | 146.15 | 378.03 |1107.5 | 32.88
|
||||
Neigh | 55.764 | 59.579 | 62.94 | 43.1 | 13.40
|
||||
Comm | 0.6589 | 153.57 | 302.72 |1199.1 | 34.55
|
||||
Output | 0.0032423 | 6.1068 | 24.01 | 418.3 | 1.37
|
||||
Modify | 8.0892 | 16.162 | 38.588 | 322.6 | 3.64
|
||||
Other | | 62.93 | | | 14.16
|
||||
|
||||
Nlocal: 10050 ave 10180 max 10000 min
|
||||
Histogram: 2 1 0 0 0 0 0 0 0 1
|
||||
Nghost: 27854.5 ave 30385 max 25525 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 9.49222e+06 ave 9.76687e+06 max 9.29466e+06 min
|
||||
Histogram: 2 0 0 0 0 0 1 0 0 1
|
||||
|
||||
Total # of neighbors = 37968882
|
||||
Ave neighs/atom = 944.49955
|
||||
Neighbor list builds = 10
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:07:25
|
||||
@ -0,0 +1,108 @@
|
||||
LAMMPS (2 Apr 2025 - Development - )
|
||||
Reading data file ...
|
||||
orthogonal box = (0 0 -1.1656272) to (36.15 36.15 362.81506)
|
||||
1 by 1 by 4 MPI processor grid
|
||||
reading atoms ...
|
||||
40200 atoms
|
||||
reading velocities ...
|
||||
40200 velocities
|
||||
read_data CPU = 0.161 seconds
|
||||
200 atoms in group group_ignore_csp
|
||||
ACE version: 2023.11.25
|
||||
Recursive evaluator is used by ACE
|
||||
Loading ../../../potentials/Cu-PBE-core-rep.ace
|
||||
Total number of basis functions
|
||||
Cu: 16 (r=1) 726 (r>1)
|
||||
Mapping LAMMPS atom type #1(Cu) -> ACE species type #0
|
||||
atomic load lambda:
|
||||
fast potential: extract eam/apip:time_per_atom
|
||||
precise potential: extract pace/apip:time_per_atom
|
||||
lambda_input: extract lambda/input/apip:time_per_atom
|
||||
lambda: extract lambda/zone/apip:time_per_atom
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
- fix lambda command: doi.org/10.1063/5.0245877
|
||||
The log file lists these citations in BibTeX format.
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 6 6 52
|
||||
5 neighbor lists, perpetual/occasional/extra = 5 0 0
|
||||
(1) pair eam/fs/apip, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(2) pair pace/apip, perpetual, trim from (4)
|
||||
attributes: full, newton on, cut 9.4
|
||||
pair build: trim
|
||||
stencil: none
|
||||
bin: none
|
||||
(3) pair lambda/input/csp/apip, perpetual, trim from (2)
|
||||
attributes: full, newton on, cut 8
|
||||
pair build: trim
|
||||
stencil: none
|
||||
bin: none
|
||||
(4) pair lambda/zone/apip, perpetual
|
||||
attributes: full, newton on, ghost, cut 14
|
||||
pair build: full/bin/ghost
|
||||
stencil: full/ghost/bin/3d
|
||||
bin: standard
|
||||
(5) fix lambda_thermostat/apip, perpetual, copy from (1)
|
||||
attributes: full, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Setting up Verlet run ...
|
||||
Unit style : metal
|
||||
Current step : 0
|
||||
Time step : 0.001
|
||||
Per MPI rank memory allocation (min/avg/max) = 298.1 | 306.3 | 314.5 Mbytes
|
||||
Step f_balance S/CPU f_weight_atom[1] f_weight_atom[2] f_weight_atom[3] f_weight_atom[4]
|
||||
0 1 0 0 0 0 0
|
||||
10 1.0018226 0.21929744 4.2082278e-05 0.0022147425 2.472285e-05 4.0694771e-05
|
||||
20 1.002451 0.38193369 4.9389333e-05 0.0023722824 2.4776133e-05 2.168819e-05
|
||||
30 1.0004234 0.39492198 4.8977088e-05 0.002249832 2.4610967e-05 2.1465621e-05
|
||||
40 1.0012276 0.39068387 4.9886201e-05 0.0022529811 2.4663509e-05 2.1540032e-05
|
||||
50 1.0013752 0.39170654 5.0527084e-05 0.002253323 2.4721079e-05 2.153442e-05
|
||||
60 1.0007053 0.3758265 5.0935226e-05 0.0022581901 2.4772692e-05 2.1596641e-05
|
||||
70 1.0003982 0.38524379 5.1685387e-05 0.002263544 2.495032e-05 2.1714264e-05
|
||||
80 1.0022848 0.38409158 5.1897166e-05 0.0022557711 2.4755235e-05 2.1595246e-05
|
||||
90 1.0012911 0.38122934 5.2440631e-05 0.0022574019 2.4795351e-05 2.1615786e-05
|
||||
100 1.0005279 0.37983246 5.2871808e-05 0.0022583136 2.484618e-05 2.1569403e-05
|
||||
Loop time of 279.389 on 4 procs for 100 steps with 40200 atoms
|
||||
|
||||
Performance: 0.031 ns/day, 776.081 hours/ns, 0.358 timesteps/s, 14.389 katom-step/s
|
||||
98.6% CPU use with 4 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 148.19 | 155.34 | 175.77 | 94.7 | 55.60
|
||||
Neigh | 87.542 | 87.924 | 88.444 | 3.6 | 31.47
|
||||
Comm | 4.9019 | 18.932 | 33.429 | 322.2 | 6.78
|
||||
Output | 0.01326 | 0.04615 | 0.075485 | 10.3 | 0.02
|
||||
Modify | 9.5358 | 10.391 | 12.424 | 36.6 | 3.72
|
||||
Other | | 6.756 | | | 2.42
|
||||
|
||||
Nlocal: 10050 ave 10283 max 9838 min
|
||||
Histogram: 1 0 1 0 0 0 1 0 0 1
|
||||
Nghost: 52763 ave 52975 max 52530 min
|
||||
Histogram: 1 0 0 1 0 0 0 1 0 1
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 9.49222e+06 ave 9.71459e+06 max 9.29015e+06 min
|
||||
Histogram: 1 0 1 0 0 0 1 0 0 1
|
||||
|
||||
Total # of neighbors = 37968882
|
||||
Ave neighs/atom = 944.49955
|
||||
Neighbor list builds = 10
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:04:48
|
||||
@ -0,0 +1,108 @@
|
||||
LAMMPS (2 Apr 2025 - Development - )
|
||||
Reading data file ...
|
||||
orthogonal box = (0 0 -1.1656272) to (36.15 36.15 362.81506)
|
||||
1 by 1 by 4 MPI processor grid
|
||||
reading atoms ...
|
||||
40200 atoms
|
||||
reading velocities ...
|
||||
40200 velocities
|
||||
read_data CPU = 0.134 seconds
|
||||
200 atoms in group group_ignore_csp
|
||||
ACE version: 2023.11.25
|
||||
Recursive evaluator is used by ACE
|
||||
Loading ../../../potentials/Cu-PBE-core-rep.ace
|
||||
Total number of basis functions
|
||||
Cu: 16 (r=1) 726 (r>1)
|
||||
Mapping LAMMPS atom type #1(Cu) -> ACE species type #0
|
||||
atomic load lambda:
|
||||
fast potential: extract eam/apip:time_per_atom
|
||||
precise potential: extract pace/apip:time_per_atom
|
||||
lambda_input: extract lambda/input/apip:time_per_atom
|
||||
lambda: extract lambda/zone/apip:time_per_atom
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
- fix lambda command: doi.org/10.1063/5.0245877
|
||||
The log file lists these citations in BibTeX format.
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 14
|
||||
ghost atom cutoff = 14
|
||||
binsize = 7, bins = 6 6 52
|
||||
5 neighbor lists, perpetual/occasional/extra = 5 0 0
|
||||
(1) pair eam/fs/apip, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(2) pair pace/apip, perpetual, trim from (4)
|
||||
attributes: full, newton on, cut 9.4
|
||||
pair build: trim
|
||||
stencil: none
|
||||
bin: none
|
||||
(3) pair lambda/input/csp/apip, perpetual, trim from (2)
|
||||
attributes: full, newton on, cut 8
|
||||
pair build: trim
|
||||
stencil: none
|
||||
bin: none
|
||||
(4) pair lambda/zone/apip, perpetual
|
||||
attributes: full, newton on, ghost, cut 14
|
||||
pair build: full/bin/ghost
|
||||
stencil: full/ghost/bin/3d
|
||||
bin: standard
|
||||
(5) fix lambda_thermostat/apip, perpetual, copy from (1)
|
||||
attributes: full, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Setting up Verlet run ...
|
||||
Unit style : metal
|
||||
Current step : 0
|
||||
Time step : 0.001
|
||||
Per MPI rank memory allocation (min/avg/max) = 298.1 | 306.3 | 314.5 Mbytes
|
||||
Step f_balance S/CPU f_weight_atom[1] f_weight_atom[2] f_weight_atom[3] f_weight_atom[4]
|
||||
0 1 0 0 0 0 0
|
||||
10 1.000245 0.23168829 2.8965377e-05 0.0016346261 1.8194173e-05 2.8621987e-05
|
||||
20 1.0001156 0.23012235 4.2703387e-05 0.0022174634 2.4522315e-05 4.0198928e-05
|
||||
30 1.0003479 0.24170843 4.2900821e-05 0.0022358654 2.4496934e-05 4.0262644e-05
|
||||
40 1.0000952 0.34743014 4.4687983e-05 0.0022336389 2.4626704e-05 2.8362965e-05
|
||||
50 1.000399 0.23273413 4.4278568e-05 0.0022319529 2.4645291e-05 4.0394287e-05
|
||||
60 1.000137 0.23531789 4.5212176e-05 0.0022671271 2.4758267e-05 4.0607561e-05
|
||||
70 1.0001901 0.34359487 4.5647742e-05 0.0022386998 2.473236e-05 2.8357019e-05
|
||||
80 1.0003173 0.23324348 4.5372627e-05 0.0022272881 2.4704053e-05 4.0760615e-05
|
||||
90 1.0009828 0.2360927 4.5867574e-05 0.0022616272 2.4715122e-05 4.0548519e-05
|
||||
100 1.0005337 0.34332801 4.6171376e-05 0.0022394199 2.4724815e-05 2.8552653e-05
|
||||
Loop time of 385.695 on 4 procs for 100 steps with 40200 atoms
|
||||
|
||||
Performance: 0.022 ns/day, 1071.376 hours/ns, 0.259 timesteps/s, 10.423 katom-step/s
|
||||
98.9% CPU use with 4 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 80.949 | 145.84 | 287.45 | 683.6 | 37.81
|
||||
Neigh | 21.125 | 61.121 | 98.27 | 452.7 | 15.85
|
||||
Comm | 23.839 | 129.54 | 261.28 | 833.4 | 33.59
|
||||
Output | 0.10319 | 2.5231 | 8.6153 | 222.9 | 0.65
|
||||
Modify | 5.3228 | 13.101 | 29.2 | 267.2 | 3.40
|
||||
Other | | 33.57 | | | 8.70
|
||||
|
||||
Nlocal: 10050 ave 16825 max 3772 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||
Nghost: 27618.8 ave 41748 max 12149 min
|
||||
Histogram: 1 1 0 0 0 0 0 0 0 2
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 9.49222e+06 ave 1.58445e+07 max 3.337e+06 min
|
||||
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||
|
||||
Total # of neighbors = 37968882
|
||||
Ave neighs/atom = 944.49955
|
||||
Neighbor list builds = 10
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:06:27
|
||||
182
examples/PACKAGES/apip/log.02Apr25.vacancy.const.lambda.g++.1
Normal file
@ -0,0 +1,182 @@
|
||||
LAMMPS (2 Apr 2025 - Development - )
|
||||
Reading data file ...
|
||||
orthogonal box = (0 0 0) to (28.92 28.92 28.92)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
2047 atoms
|
||||
reading velocities ...
|
||||
2047 velocities
|
||||
read_data CPU = 0.009 seconds
|
||||
12 atoms in group vacancy
|
||||
42 atoms in group transition
|
||||
1993 atoms in group bulk
|
||||
Setting atom values ...
|
||||
12 settings made for apip/lambda
|
||||
Setting atom values ...
|
||||
42 settings made for apip/lambda
|
||||
Setting atom values ...
|
||||
1993 settings made for apip/lambda
|
||||
ACE version: 2023.11.25
|
||||
Recursive evaluator is used by ACE
|
||||
Loading ../../../potentials/Cu-PBE-core-rep.ace
|
||||
Total number of basis functions
|
||||
Cu: 16 (r=1) 726 (r>1)
|
||||
Mapping LAMMPS atom type #1(Cu) -> ACE species type #0
|
||||
atomic load lambda:
|
||||
fast potential: extract eam/apip:time_per_atom
|
||||
precise potential: extract pace/apip:time_per_atom
|
||||
lambda_input: const 0.5
|
||||
lambda: const 0
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 9.4
|
||||
ghost atom cutoff = 9.4
|
||||
binsize = 4.7, bins = 7 7 7
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair eam/fs/apip, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(2) pair pace/apip, perpetual
|
||||
attributes: full, newton on, cut 9.4
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
Setting up Verlet run ...
|
||||
Unit style : metal
|
||||
Current step : 0
|
||||
Time step : 0.001
|
||||
Per MPI rank memory allocation (min/avg/max) = 11.08 | 11.08 | 11.08 Mbytes
|
||||
Step TotEng c_lambda_types[1] c_lambda_types[2] c_lambda_types[3]
|
||||
0 -7408.6798 1993 42 12
|
||||
1 -7408.6798 1993 42 12
|
||||
2 -7408.6798 1993 42 12
|
||||
3 -7408.6798 1993 42 12
|
||||
4 -7408.6798 1993 42 12
|
||||
5 -7408.6798 1993 42 12
|
||||
6 -7408.6799 1993 42 12
|
||||
7 -7408.6799 1993 42 12
|
||||
8 -7408.6799 1993 42 12
|
||||
9 -7408.6799 1993 42 12
|
||||
10 -7408.6799 1993 42 12
|
||||
11 -7408.68 1993 42 12
|
||||
12 -7408.68 1993 42 12
|
||||
13 -7408.68 1993 42 12
|
||||
14 -7408.68 1993 42 12
|
||||
15 -7408.68 1993 42 12
|
||||
16 -7408.68 1993 42 12
|
||||
17 -7408.6801 1993 42 12
|
||||
18 -7408.6801 1993 42 12
|
||||
19 -7408.6801 1993 42 12
|
||||
20 -7408.6801 1993 42 12
|
||||
21 -7408.6801 1993 42 12
|
||||
22 -7408.6801 1993 42 12
|
||||
23 -7408.6801 1993 42 12
|
||||
24 -7408.6801 1993 42 12
|
||||
25 -7408.6801 1993 42 12
|
||||
26 -7408.6801 1993 42 12
|
||||
27 -7408.6801 1993 42 12
|
||||
28 -7408.6801 1993 42 12
|
||||
29 -7408.6801 1993 42 12
|
||||
30 -7408.6801 1993 42 12
|
||||
31 -7408.6801 1993 42 12
|
||||
32 -7408.68 1993 42 12
|
||||
33 -7408.68 1993 42 12
|
||||
34 -7408.68 1993 42 12
|
||||
35 -7408.68 1993 42 12
|
||||
36 -7408.68 1993 42 12
|
||||
37 -7408.68 1993 42 12
|
||||
38 -7408.68 1993 42 12
|
||||
39 -7408.68 1993 42 12
|
||||
40 -7408.6801 1993 42 12
|
||||
41 -7408.6801 1993 42 12
|
||||
42 -7408.6801 1993 42 12
|
||||
43 -7408.6801 1993 42 12
|
||||
44 -7408.6801 1993 42 12
|
||||
45 -7408.6801 1993 42 12
|
||||
46 -7408.6801 1993 42 12
|
||||
47 -7408.6801 1993 42 12
|
||||
48 -7408.6801 1993 42 12
|
||||
49 -7408.6802 1993 42 12
|
||||
50 -7408.6802 1993 42 12
|
||||
51 -7408.6802 1993 42 12
|
||||
52 -7408.6802 1993 42 12
|
||||
53 -7408.6802 1993 42 12
|
||||
54 -7408.6802 1993 42 12
|
||||
55 -7408.6802 1993 42 12
|
||||
56 -7408.6802 1993 42 12
|
||||
57 -7408.6802 1993 42 12
|
||||
58 -7408.6802 1993 42 12
|
||||
59 -7408.6801 1993 42 12
|
||||
60 -7408.6801 1993 42 12
|
||||
61 -7408.6801 1993 42 12
|
||||
62 -7408.6801 1993 42 12
|
||||
63 -7408.6801 1993 42 12
|
||||
64 -7408.68 1993 42 12
|
||||
65 -7408.68 1993 42 12
|
||||
66 -7408.68 1993 42 12
|
||||
67 -7408.68 1993 42 12
|
||||
68 -7408.68 1993 42 12
|
||||
69 -7408.6799 1993 42 12
|
||||
70 -7408.6799 1993 42 12
|
||||
71 -7408.6799 1993 42 12
|
||||
72 -7408.6799 1993 42 12
|
||||
73 -7408.6799 1993 42 12
|
||||
74 -7408.6799 1993 42 12
|
||||
75 -7408.6798 1993 42 12
|
||||
76 -7408.6798 1993 42 12
|
||||
77 -7408.6798 1993 42 12
|
||||
78 -7408.6798 1993 42 12
|
||||
79 -7408.6798 1993 42 12
|
||||
80 -7408.6798 1993 42 12
|
||||
81 -7408.6799 1993 42 12
|
||||
82 -7408.6799 1993 42 12
|
||||
83 -7408.6799 1993 42 12
|
||||
84 -7408.6799 1993 42 12
|
||||
85 -7408.6799 1993 42 12
|
||||
86 -7408.6799 1993 42 12
|
||||
87 -7408.6799 1993 42 12
|
||||
88 -7408.68 1993 42 12
|
||||
89 -7408.68 1993 42 12
|
||||
90 -7408.68 1993 42 12
|
||||
91 -7408.68 1993 42 12
|
||||
92 -7408.68 1993 42 12
|
||||
93 -7408.68 1993 42 12
|
||||
94 -7408.68 1993 42 12
|
||||
95 -7408.68 1993 42 12
|
||||
96 -7408.68 1993 42 12
|
||||
97 -7408.6801 1993 42 12
|
||||
98 -7408.6801 1993 42 12
|
||||
99 -7408.6801 1993 42 12
|
||||
100 -7408.6801 1993 42 12
|
||||
Loop time of 1.65093 on 1 procs for 100 steps with 2047 atoms
|
||||
|
||||
Performance: 5.233 ns/day, 4.586 hours/ns, 60.572 timesteps/s, 123.991 katom-step/s
|
||||
99.8% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 1.6272 | 1.6272 | 1.6272 | 0.0 | 98.56
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.012716 | 0.012716 | 0.012716 | 0.0 | 0.77
|
||||
Output | 0.0078409 | 0.0078409 | 0.0078409 | 0.0 | 0.47
|
||||
Modify | 0.0013654 | 0.0013654 | 0.0013654 | 0.0 | 0.08
|
||||
Other | | 0.001839 | | | 0.11
|
||||
|
||||
Nlocal: 2047 ave 2047 max 2047 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 7790 ave 7790 max 7790 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 648022 ave 648022 max 648022 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 648022
|
||||
Ave neighs/atom = 316.57157
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:01
|
||||
@ -0,0 +1,193 @@
|
||||
LAMMPS (2 Apr 2025 - Development - )
|
||||
Reading data file ...
|
||||
orthogonal box = (0 0 0) to (28.92 28.92 28.92)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
2047 atoms
|
||||
reading velocities ...
|
||||
2047 velocities
|
||||
read_data CPU = 0.009 seconds
|
||||
ACE version: 2023.11.25
|
||||
Recursive evaluator is used by ACE
|
||||
Loading ../../../potentials/Cu-PBE-core-rep.ace
|
||||
Total number of basis functions
|
||||
Cu: 16 (r=1) 726 (r>1)
|
||||
Mapping LAMMPS atom type #1(Cu) -> ACE species type #0
|
||||
atomic load lambda:
|
||||
fast potential: extract eam/apip:time_per_atom
|
||||
precise potential: extract pace/apip:time_per_atom
|
||||
lambda_input: extract lambda/input/apip:time_per_atom
|
||||
lambda: extract lambda/zone/apip:time_per_atom
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
- fix lambda command: doi.org/10.1063/5.0245877
|
||||
The log file lists these citations in BibTeX format.
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
WARNING: The energy is not conserved when lambda changes as fix lambda_thermostat/apip is not used. (../fix_lambda_apip.cpp:248)
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 9.4
|
||||
ghost atom cutoff = 9.4
|
||||
binsize = 4.7, bins = 7 7 7
|
||||
4 neighbor lists, perpetual/occasional/extra = 4 0 0
|
||||
(1) pair eam/fs/apip, perpetual, trim from (3)
|
||||
attributes: full, newton on, cut 7.50679
|
||||
pair build: trim
|
||||
stencil: none
|
||||
bin: none
|
||||
(2) pair pace/apip, perpetual
|
||||
attributes: full, newton on, cut 9.4
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(3) pair lambda/input/csp/apip, perpetual, trim from (2)
|
||||
attributes: full, newton on, cut 8
|
||||
pair build: trim
|
||||
stencil: none
|
||||
bin: none
|
||||
(4) pair lambda/zone/apip, perpetual
|
||||
attributes: full, newton on, ghost
|
||||
pair build: full/bin/ghost
|
||||
stencil: full/ghost/bin/3d
|
||||
bin: standard
|
||||
Setting up Verlet run ...
|
||||
Unit style : metal
|
||||
Current step : 0
|
||||
Time step : 0.001
|
||||
Per MPI rank memory allocation (min/avg/max) = 49.37 | 49.37 | 49.37 Mbytes
|
||||
Step TotEng c_lambda_types[1] c_lambda_types[2] c_lambda_types[3]
|
||||
0 -7408.7649 1993 42 12
|
||||
1 -7408.7649 1993 42 12
|
||||
2 -7408.7649 1993 42 12
|
||||
3 -7408.765 1993 42 12
|
||||
4 -7408.7657 1993 42 12
|
||||
5 -7408.7785 1993 42 12
|
||||
6 -7408.7769 1993 42 12
|
||||
7 -7408.778 1993 42 12
|
||||
8 -7408.7862 1993 42 12
|
||||
9 -7408.79 1993 42 12
|
||||
10 -7408.7912 1993 42 12
|
||||
11 -7408.8005 1993 42 12
|
||||
12 -7408.8012 1993 42 12
|
||||
13 -7408.8016 1993 42 12
|
||||
14 -7408.8123 1993 42 12
|
||||
15 -7408.8154 1993 42 12
|
||||
16 -7408.8144 1993 42 12
|
||||
17 -7408.8271 1993 42 12
|
||||
18 -7408.8277 1993 42 12
|
||||
19 -7408.8289 1993 42 12
|
||||
20 -7408.8352 1993 42 12
|
||||
21 -7408.8376 1993 42 12
|
||||
22 -7408.841 1993 42 12
|
||||
23 -7408.8507 1993 42 12
|
||||
24 -7408.8496 1993 42 12
|
||||
25 -7408.8544 1993 42 12
|
||||
26 -7408.8645 1993 42 12
|
||||
27 -7408.8665 1993 42 12
|
||||
28 -7408.8713 1993 42 12
|
||||
29 -7408.8763 1993 42 12
|
||||
30 -7408.8812 1993 42 12
|
||||
31 -7408.8842 1993 42 12
|
||||
32 -7408.8905 1993 42 12
|
||||
33 -7408.8947 1993 42 12
|
||||
34 -7408.9048 1993 42 12
|
||||
35 -7408.9099 1993 42 12
|
||||
36 -7408.9101 1993 42 12
|
||||
37 -7408.9159 1993 42 12
|
||||
38 -7408.9256 1993 42 12
|
||||
39 -7408.9241 1993 42 12
|
||||
40 -7408.9342 1993 42 12
|
||||
41 -7408.9423 1993 42 12
|
||||
42 -7408.9402 1993 42 12
|
||||
43 -7408.9452 1993 42 12
|
||||
44 -7408.9548 1993 42 12
|
||||
45 -7408.9543 1993 42 12
|
||||
46 -7408.9607 1993 42 12
|
||||
47 -7408.9699 1993 42 12
|
||||
48 -7408.9751 1993 42 12
|
||||
49 -7408.978 1993 42 12
|
||||
50 -7408.9797 1993 42 12
|
||||
51 -7408.9851 1993 42 12
|
||||
52 -7408.9937 1993 42 12
|
||||
53 -7408.9977 1993 42 12
|
||||
54 -7408.9961 1993 42 12
|
||||
55 -7409.0011 1993 42 12
|
||||
56 -7409.0098 1993 42 12
|
||||
57 -7409.0132 1993 42 12
|
||||
58 -7409.0173 1993 42 12
|
||||
59 -7409.0174 1993 42 12
|
||||
60 -7409.0204 1993 42 12
|
||||
61 -7409.0259 1993 42 12
|
||||
62 -7409.0324 1993 42 12
|
||||
63 -7409.0365 1993 42 12
|
||||
64 -7409.0407 1993 42 12
|
||||
65 -7409.0407 1993 42 12
|
||||
66 -7409.0428 1993 42 12
|
||||
67 -7409.0437 1993 42 12
|
||||
68 -7409.0437 1993 42 12
|
||||
69 -7409.0502 1993 42 12
|
||||
70 -7409.0558 1993 42 12
|
||||
71 -7409.0572 1993 42 12
|
||||
72 -7409.0624 1993 42 12
|
||||
73 -7409.0686 1993 42 12
|
||||
74 -7409.0721 1993 42 12
|
||||
75 -7409.075 1993 42 12
|
||||
76 -7409.0751 1993 42 12
|
||||
77 -7409.0728 1993 42 12
|
||||
78 -7409.0732 1993 42 12
|
||||
79 -7409.0764 1993 42 12
|
||||
80 -7409.077 1993 42 12
|
||||
81 -7409.0879 1993 42 12
|
||||
82 -7409.0898 1993 42 12
|
||||
83 -7409.0922 1993 42 12
|
||||
84 -7409.0916 1993 42 12
|
||||
85 -7409.0928 1993 42 12
|
||||
86 -7409.0944 1993 42 12
|
||||
87 -7409.1058 1993 42 12
|
||||
88 -7409.1084 1993 42 12
|
||||
89 -7409.1103 1993 42 12
|
||||
90 -7409.1121 1993 42 12
|
||||
91 -7409.1145 1993 42 12
|
||||
92 -7409.1133 1993 42 12
|
||||
93 -7409.1166 1993 42 12
|
||||
94 -7409.12 1993 42 12
|
||||
95 -7409.119 1993 42 12
|
||||
96 -7409.1208 1993 42 12
|
||||
97 -7409.1217 1993 42 12
|
||||
98 -7409.1229 1993 42 12
|
||||
99 -7409.1235 1993 42 12
|
||||
100 -7409.1206 1993 42 12
|
||||
Loop time of 2.01276 on 1 procs for 100 steps with 2047 atoms
|
||||
|
||||
Performance: 4.293 ns/day, 5.591 hours/ns, 49.683 timesteps/s, 101.701 katom-step/s
|
||||
99.8% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 1.985 | 1.985 | 1.985 | 0.0 | 98.62
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.012367 | 0.012367 | 0.012367 | 0.0 | 0.61
|
||||
Output | 0.0080612 | 0.0080612 | 0.0080612 | 0.0 | 0.40
|
||||
Modify | 0.0053111 | 0.0053111 | 0.0053111 | 0.0 | 0.26
|
||||
Other | | 0.002 | | | 0.10
|
||||
|
||||
Nlocal: 2047 ave 2047 max 2047 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 7790 ave 7790 max 7790 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 291196 ave 291196 max 291196 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 291196
|
||||
Ave neighs/atom = 142.25501
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:02
|
||||
@ -0,0 +1,197 @@
|
||||
LAMMPS (2 Apr 2025 - Development - )
|
||||
Reading data file ...
|
||||
orthogonal box = (0 0 0) to (28.92 28.92 28.92)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
2047 atoms
|
||||
reading velocities ...
|
||||
2047 velocities
|
||||
read_data CPU = 0.009 seconds
|
||||
ACE version: 2023.11.25
|
||||
Recursive evaluator is used by ACE
|
||||
Loading ../../../potentials/Cu-PBE-core-rep.ace
|
||||
Total number of basis functions
|
||||
Cu: 16 (r=1) 726 (r>1)
|
||||
Mapping LAMMPS atom type #1(Cu) -> ACE species type #0
|
||||
atomic load lambda:
|
||||
fast potential: extract eam/apip:time_per_atom
|
||||
precise potential: extract pace/apip:time_per_atom
|
||||
lambda_input: extract lambda/input/apip:time_per_atom
|
||||
lambda: extract lambda/zone/apip:time_per_atom
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
- fix lambda command: doi.org/10.1063/5.0245877
|
||||
The log file lists these citations in BibTeX format.
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 9.4
|
||||
ghost atom cutoff = 9.4
|
||||
binsize = 4.7, bins = 7 7 7
|
||||
5 neighbor lists, perpetual/occasional/extra = 5 0 0
|
||||
(1) pair eam/fs/apip, perpetual, trim from (3)
|
||||
attributes: full, newton on, cut 7.50679
|
||||
pair build: trim
|
||||
stencil: none
|
||||
bin: none
|
||||
(2) pair pace/apip, perpetual
|
||||
attributes: full, newton on, cut 9.4
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(3) pair lambda/input/csp/apip, perpetual, trim from (2)
|
||||
attributes: full, newton on, cut 8
|
||||
pair build: trim
|
||||
stencil: none
|
||||
bin: none
|
||||
(4) pair lambda/zone/apip, perpetual
|
||||
attributes: full, newton on, ghost
|
||||
pair build: full/bin/ghost
|
||||
stencil: full/ghost/bin/3d
|
||||
bin: standard
|
||||
(5) fix lambda_thermostat/apip, perpetual, copy from (2)
|
||||
attributes: full, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Setting up Verlet run ...
|
||||
Unit style : metal
|
||||
Current step : 0
|
||||
Time step : 0.001
|
||||
Per MPI rank memory allocation (min/avg/max) = 52.93 | 52.93 | 52.93 Mbytes
|
||||
Step TotEng c_lambda_types[1] c_lambda_types[2] c_lambda_types[3]
|
||||
0 -7408.7649 1993 42 12
|
||||
1 -7408.7649 1993 42 12
|
||||
2 -7408.7649 1993 42 12
|
||||
3 -7408.765 1993 42 12
|
||||
4 -7408.765 1993 42 12
|
||||
5 -7408.765 1993 42 12
|
||||
6 -7408.765 1993 42 12
|
||||
7 -7408.765 1993 42 12
|
||||
8 -7408.765 1993 42 12
|
||||
9 -7408.765 1993 42 12
|
||||
10 -7408.7651 1993 42 12
|
||||
11 -7408.7651 1993 42 12
|
||||
12 -7408.7651 1993 42 12
|
||||
13 -7408.7651 1993 42 12
|
||||
14 -7408.7651 1993 42 12
|
||||
15 -7408.7651 1993 42 12
|
||||
16 -7408.7652 1993 42 12
|
||||
17 -7408.7652 1993 42 12
|
||||
18 -7408.7652 1993 42 12
|
||||
19 -7408.7652 1993 42 12
|
||||
20 -7408.7652 1993 42 12
|
||||
21 -7408.7652 1993 42 12
|
||||
22 -7408.7652 1993 42 12
|
||||
23 -7408.7652 1993 42 12
|
||||
24 -7408.7652 1993 42 12
|
||||
25 -7408.7652 1993 42 12
|
||||
26 -7408.7652 1993 42 12
|
||||
27 -7408.7652 1993 42 12
|
||||
28 -7408.7652 1993 42 12
|
||||
29 -7408.7652 1993 42 12
|
||||
30 -7408.7652 1993 42 12
|
||||
31 -7408.7652 1993 42 12
|
||||
32 -7408.7652 1993 42 12
|
||||
33 -7408.7652 1993 42 12
|
||||
34 -7408.7652 1993 42 12
|
||||
35 -7408.7652 1993 42 12
|
||||
36 -7408.7652 1993 42 12
|
||||
37 -7408.7652 1993 42 12
|
||||
38 -7408.7652 1993 42 12
|
||||
39 -7408.7652 1993 42 12
|
||||
40 -7408.7652 1993 42 12
|
||||
41 -7408.7652 1993 42 12
|
||||
42 -7408.7652 1993 42 12
|
||||
43 -7408.7652 1993 42 12
|
||||
44 -7408.7652 1993 42 12
|
||||
45 -7408.7652 1993 42 12
|
||||
46 -7408.7652 1993 42 12
|
||||
47 -7408.7653 1993 42 12
|
||||
48 -7408.7653 1993 42 12
|
||||
49 -7408.7653 1993 42 12
|
||||
50 -7408.7653 1993 42 12
|
||||
51 -7408.7653 1993 42 12
|
||||
52 -7408.7653 1993 42 12
|
||||
53 -7408.7653 1993 42 12
|
||||
54 -7408.7653 1993 42 12
|
||||
55 -7408.7653 1993 42 12
|
||||
56 -7408.7653 1993 42 12
|
||||
57 -7408.7653 1993 42 12
|
||||
58 -7408.7653 1993 42 12
|
||||
59 -7408.7653 1993 42 12
|
||||
60 -7408.7652 1993 42 12
|
||||
61 -7408.7652 1993 42 12
|
||||
62 -7408.7652 1993 42 12
|
||||
63 -7408.7652 1993 42 12
|
||||
64 -7408.7652 1993 42 12
|
||||
65 -7408.7651 1993 42 12
|
||||
66 -7408.7651 1993 42 12
|
||||
67 -7408.7651 1993 42 12
|
||||
68 -7408.7651 1993 42 12
|
||||
69 -7408.7651 1993 42 12
|
||||
70 -7408.765 1993 42 12
|
||||
71 -7408.765 1993 42 12
|
||||
72 -7408.765 1993 42 12
|
||||
73 -7408.765 1993 42 12
|
||||
74 -7408.765 1993 42 12
|
||||
75 -7408.765 1993 42 12
|
||||
76 -7408.765 1993 42 12
|
||||
77 -7408.765 1993 42 12
|
||||
78 -7408.765 1993 42 12
|
||||
79 -7408.765 1993 42 12
|
||||
80 -7408.765 1993 42 12
|
||||
81 -7408.765 1993 42 12
|
||||
82 -7408.765 1993 42 12
|
||||
83 -7408.765 1993 42 12
|
||||
84 -7408.765 1993 42 12
|
||||
85 -7408.765 1993 42 12
|
||||
86 -7408.765 1993 42 12
|
||||
87 -7408.765 1993 42 12
|
||||
88 -7408.765 1993 42 12
|
||||
89 -7408.7651 1993 42 12
|
||||
90 -7408.7651 1993 42 12
|
||||
91 -7408.7651 1993 42 12
|
||||
92 -7408.7651 1993 42 12
|
||||
93 -7408.7651 1993 42 12
|
||||
94 -7408.7651 1993 42 12
|
||||
95 -7408.7651 1993 42 12
|
||||
96 -7408.7651 1993 42 12
|
||||
97 -7408.7651 1993 42 12
|
||||
98 -7408.7651 1993 42 12
|
||||
99 -7408.7651 1993 42 12
|
||||
100 -7408.7651 1993 42 12
|
||||
Loop time of 2.19492 on 1 procs for 100 steps with 2047 atoms
|
||||
|
||||
Performance: 3.936 ns/day, 6.097 hours/ns, 45.560 timesteps/s, 93.261 katom-step/s
|
||||
99.8% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 2.0683 | 2.0683 | 2.0683 | 0.0 | 94.23
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.012156 | 0.012156 | 0.012156 | 0.0 | 0.55
|
||||
Output | 0.0084851 | 0.0084851 | 0.0084851 | 0.0 | 0.39
|
||||
Modify | 0.10386 | 0.10386 | 0.10386 | 0.0 | 4.73
|
||||
Other | | 0.002096 | | | 0.10
|
||||
|
||||
Nlocal: 2047 ave 2047 max 2047 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 7790 ave 7790 max 7790 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 291196 ave 291196 max 291196 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 291196
|
||||
Ave neighs/atom = 142.25501
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:02
|
||||
201
examples/PACKAGES/apip/log.02Apr25.validate.g++.1
Normal file
@ -0,0 +1,201 @@
|
||||
LAMMPS (2 Apr 2025 - Development - )
|
||||
Reading data file ...
|
||||
orthogonal box = (0 0 0) to (7.23 7.23 7.23)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
reading atoms ...
|
||||
31 atoms
|
||||
reading velocities ...
|
||||
31 velocities
|
||||
read_data CPU = 0.002 seconds
|
||||
ACE version: 2023.11.25
|
||||
Recursive evaluator is used
|
||||
Loading Cu-1.yace
|
||||
Total number of basis functions
|
||||
Cu: 15 (r=1) 9 (r>1)
|
||||
Mapping LAMMPS atom type #1(Cu) -> ACE species type #0
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 5.9
|
||||
ghost atom cutoff = 5.9
|
||||
binsize = 2.95, bins = 3 3 3
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair pace, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
Setting up Verlet run ...
|
||||
Unit style : metal
|
||||
Current step : 0
|
||||
Time step : 0.001
|
||||
Per MPI rank memory allocation (min/avg/max) = 4.908 | 4.908 | 4.908 Mbytes
|
||||
Step PotEng Fnorm Fmax
|
||||
0 -98.699376 49.367618 19.563052
|
||||
Loop time of 6.74e-07 on 1 procs for 0 steps with 31 atoms
|
||||
|
||||
148.4% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 6.74e-07 | | |100.00
|
||||
|
||||
Nlocal: 31 ave 31 max 31 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 616 ave 616 max 616 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 2132 ave 2132 max 2132 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 2132
|
||||
Ave neighs/atom = 68.774194
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
ACE version: 2023.11.25
|
||||
Recursive evaluator is used by ACE
|
||||
Loading Cu-1.yace
|
||||
Total number of basis functions
|
||||
Cu: 15 (r=1) 9 (r>1)
|
||||
Mapping LAMMPS atom type #1(Cu) -> ACE species type #0
|
||||
Setting atom values ...
|
||||
31 settings made for apip/lambda
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 7.50679
|
||||
ghost atom cutoff = 7.50679
|
||||
binsize = 3.753395, bins = 2 2 2
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair eam/fs/apip, perpetual
|
||||
attributes: full, newton on, cut 7.50679
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(2) pair pace/apip, perpetual, copy from (1)
|
||||
attributes: full, newton on
|
||||
pair build: copy
|
||||
stencil: none
|
||||
bin: none
|
||||
Setting up Verlet run ...
|
||||
Unit style : metal
|
||||
Current step : 0
|
||||
Time step : 0.001
|
||||
Per MPI rank memory allocation (min/avg/max) = 5.564 | 5.564 | 5.564 Mbytes
|
||||
Step PotEng Fnorm Fmax
|
||||
0 -98.699376 49.367618 19.563052
|
||||
Loop time of 5.62e-07 on 1 procs for 0 steps with 31 atoms
|
||||
|
||||
177.9% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 5.62e-07 | | |100.00
|
||||
|
||||
Nlocal: 31 ave 31 max 31 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 957 ave 957 max 957 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 4558 ave 4558 max 4558 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 4558
|
||||
Ave neighs/atom = 147.03226
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
Setting atom values ...
|
||||
31 settings made for apip/lambda
|
||||
Setting up Verlet run ...
|
||||
Unit style : metal
|
||||
Current step : 0
|
||||
Time step : 0.001
|
||||
Per MPI rank memory allocation (min/avg/max) = 5.564 | 5.564 | 5.564 Mbytes
|
||||
Step PotEng Fnorm Fmax
|
||||
0 -85.025323 53.839249 22.182149
|
||||
Loop time of 5.49e-07 on 1 procs for 0 steps with 31 atoms
|
||||
|
||||
182.1% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 5.49e-07 | | |100.00
|
||||
|
||||
Nlocal: 31 ave 31 max 31 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 957 ave 957 max 957 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 4558 ave 4558 max 4558 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 4558
|
||||
Ave neighs/atom = 147.03226
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 7.50679
|
||||
ghost atom cutoff = 7.50679
|
||||
binsize = 3.753395, bins = 2 2 2
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair eam/fs, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d
|
||||
bin: standard
|
||||
Setting up Verlet run ...
|
||||
Unit style : metal
|
||||
Current step : 0
|
||||
Time step : 0.001
|
||||
Per MPI rank memory allocation (min/avg/max) = 5.183 | 5.183 | 5.183 Mbytes
|
||||
Step PotEng Fnorm Fmax
|
||||
0 -85.025323 53.839249 22.182149
|
||||
Loop time of 4.77e-07 on 1 procs for 0 steps with 31 atoms
|
||||
|
||||
0.0% CPU use with 1 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 4.77e-07 | | |100.00
|
||||
|
||||
Nlocal: 31 ave 31 max 31 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 957 ave 957 max 957 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 2279 ave 2279 max 2279 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 2279
|
||||
Ave neighs/atom = 73.516129
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:00
|
||||
1
examples/PACKAGES/neighbor-swap/MoCoNiVFeAlCr_2nn.meam
Symbolic link
@ -0,0 +1 @@
|
||||
../../../potentials/MoCoNiVFeAlCr_2nn.meam
|
||||
46
examples/PACKAGES/neighbor-swap/in.KMC_pulse_center
Normal file
@ -0,0 +1,46 @@
|
||||
# May 2025
|
||||
# Test script for MD-KMC accelerated diffusion testing in LAMMPS
|
||||
# Created by Jacob Tavenner, Baylor University
|
||||
|
||||
# Initiation -------------------------------------
|
||||
units metal
|
||||
dimension 3
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
|
||||
# Atom Definition --------------------------------
|
||||
lattice fcc 3.762
|
||||
region whole block 0 1 0 1 0 1
|
||||
create_box 2 whole
|
||||
create_atoms 1 region whole
|
||||
|
||||
replicate 6 16 6
|
||||
|
||||
region puck block INF INF 7 9 INF INF
|
||||
set region puck type 2
|
||||
|
||||
# Force Fields -----------------------------------
|
||||
pair_style meam
|
||||
pair_coeff * * library_2nn.meam Mo Co Ni V Fe Al Cr MoCoNiVFeAlCr_2nn.meam Ni Cr
|
||||
|
||||
# Settings ---------------------------------------
|
||||
timestep 0.002
|
||||
thermo 100
|
||||
|
||||
# Computations -----------------------------------
|
||||
compute voroN all voronoi/atom neighbors yes
|
||||
|
||||
run 0
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe
|
||||
|
||||
# Execution --------------------------------------
|
||||
|
||||
velocity all create 2400 908124 loop geom
|
||||
fix temp all npt temp 1000 1000 1000 aniso 0 0 1
|
||||
fix mc all neighbor/swap 50 12 1340723 1000 3 voroN diff 2
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe f_mc[*]
|
||||
#dump dump2 all custom 5000 dump.edge-3_Ni-Cr.* id type x y z c_eng c_csym
|
||||
|
||||
run 1000
|
||||
|
||||
#write_data pulse_center.data
|
||||
47
examples/PACKAGES/neighbor-swap/in.KMC_pulse_edge
Normal file
@ -0,0 +1,47 @@
|
||||
# May 2025
|
||||
# Test script for MD-KMC accelerated diffusion testing in LAMMPS
|
||||
# Created by Jacob Tavenner, Baylor University
|
||||
|
||||
# Initiation -------------------------------------
|
||||
units metal
|
||||
dimension 3
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
|
||||
|
||||
# Atom Definition --------------------------------
|
||||
lattice fcc 3.762
|
||||
region whole block 0 1 0 1 0 1
|
||||
create_box 2 whole
|
||||
create_atoms 1 region whole
|
||||
|
||||
replicate 6 16 6
|
||||
|
||||
region puck block INF INF INF 2 INF INF
|
||||
set region puck type 2
|
||||
|
||||
# Force Fields -----------------------------------
|
||||
pair_style meam
|
||||
pair_coeff * * library_2nn.meam Mo Co Ni V Fe Al Cr MoCoNiVFeAlCr_2nn.meam Ni Cr
|
||||
|
||||
# Settings ---------------------------------------
|
||||
timestep 0.002
|
||||
thermo 100
|
||||
|
||||
# Computations -----------------------------------
|
||||
compute voroN all voronoi/atom neighbors yes
|
||||
|
||||
run 0
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe
|
||||
|
||||
# Execution --------------------------------------
|
||||
|
||||
velocity all create 2400 908124 loop geom
|
||||
fix temp all npt temp 1000 1000 1000 aniso 0 0 1
|
||||
fix mc all neighbor/swap 50 12 1340723 1000 3 voroN diff 2
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe f_mc[*]
|
||||
#dump dump2 all custom 5000 dump.edge-3_Ni-Cr.* id type x y z c_eng c_csym
|
||||
|
||||
run 1000
|
||||
|
||||
#write_data pulse_end.data
|
||||
1
examples/PACKAGES/neighbor-swap/library_2nn.meam
Symbolic link
@ -0,0 +1 @@
|
||||
../../../potentials/library_2nn.meam
|
||||
@ -0,0 +1,174 @@
|
||||
LAMMPS (12 Jun 2025 - Development - patch_12Jun2025-605-g5eb61491f0-modified)
|
||||
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread.
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
# May 2025
|
||||
# Test script for MD-KMC accelerated diffusion testing in LAMMPS
|
||||
# Created by Jacob Tavenner, Baylor University
|
||||
|
||||
# Initiation -------------------------------------
|
||||
units metal
|
||||
dimension 3
|
||||
boundary p p p
|
||||
atom_style atomic
|
||||
|
||||
# Atom Definition --------------------------------
|
||||
lattice fcc 3.762
|
||||
Lattice spacing in x,y,z = 3.762 3.762 3.762
|
||||
region whole block 0 1 0 1 0 1
|
||||
create_box 2 whole
|
||||
Created orthogonal box = (0 0 0) to (3.762 3.762 3.762)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
create_atoms 1 region whole
|
||||
Created 4 atoms
|
||||
using lattice units in orthogonal box = (0 0 0) to (3.762 3.762 3.762)
|
||||
create_atoms CPU = 0.000 seconds
|
||||
|
||||
replicate 6 16 6
|
||||
Replication is creating a 6x16x6 = 576 times larger system...
|
||||
orthogonal box = (0 0 0) to (22.572 60.192 22.572)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
2304 atoms
|
||||
replicate CPU = 0.000 seconds
|
||||
|
||||
region puck block INF INF 7 9 INF INF
|
||||
set region puck type 2
|
||||
Setting atom values ...
|
||||
360 settings made for type
|
||||
|
||||
# Force Fields -----------------------------------
|
||||
pair_style meam
|
||||
pair_coeff * * library_2nn.meam Mo Co Ni V Fe Al Cr MoCoNiVFeAlCr_2nn.meam Ni Cr
|
||||
Reading MEAM library file library_2nn.meam with DATE: 2024-08-08
|
||||
Reading MEAM potential file MoCoNiVFeAlCr_2nn.meam with DATE: 2024-08-08
|
||||
|
||||
# Settings ---------------------------------------
|
||||
timestep 0.002
|
||||
thermo 100
|
||||
|
||||
# Computations -----------------------------------
|
||||
compute voroN all voronoi/atom neighbors yes
|
||||
|
||||
run 0
|
||||
WARNING: No fixes with time integration, atoms won't move
|
||||
For more information see https://docs.lammps.org/err0028 (src/verlet.cpp:60)
|
||||
Neighbor list info ...
|
||||
update: every = 1 steps, delay = 0 steps, check = yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.8
|
||||
ghost atom cutoff = 6.8
|
||||
binsize = 3.4, bins = 7 18 7
|
||||
2 neighbor lists, perpetual/occasional/extra = 2 0 0
|
||||
(1) pair meam, perpetual
|
||||
attributes: full, newton on
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
(2) pair meam, perpetual, half/full from (1)
|
||||
attributes: half, newton on
|
||||
pair build: halffull/newton
|
||||
stencil: none
|
||||
bin: none
|
||||
Per MPI rank memory allocation (min/avg/max) = 13.32 | 13.32 | 13.32 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 0 -9674.3728 0 -9674.3728 -212400.94
|
||||
Loop time of 8.62e-07 on 1 procs for 0 steps with 2304 atoms
|
||||
|
||||
0.0% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Output | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Modify | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Other | | 8.62e-07 | | |100.00
|
||||
|
||||
Nlocal: 2304 ave 2304 max 2304 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 4735 ave 4735 max 4735 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 99072 ave 99072 max 99072 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 198144 ave 198144 max 198144 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 198144
|
||||
Ave neighs/atom = 86
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe
|
||||
|
||||
# Execution --------------------------------------
|
||||
|
||||
velocity all create 2400 908124 loop geom
|
||||
fix temp all npt temp 1000 1000 1000 aniso 0 0 1
|
||||
fix mc all neighbor/swap 50 12 1340723 1000 3 voroN diff 2
|
||||
thermo_style custom step temp press pxx pyy pzz lx ly lz vol pe f_mc[*]
|
||||
#dump dump2 all custom 5000 dump.edge-3_Ni-Cr.* id type x y z c_eng c_csym
|
||||
|
||||
run 1000
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Your simulation uses code contributions which should be cited:
|
||||
|
||||
- fix neighbor/swap command: doi:10.1016/j.commatsci.2022.111929
|
||||
|
||||
@Article{Tavenner2023111929,
|
||||
author = {Jacob P. Tavenner and Mikhail I. Mendelev and John W. Lawson},
|
||||
title = {Molecular dynamics based kinetic Monte Carlo simulation for accelerated diffusion},
|
||||
journal = {Computational Materials Science},
|
||||
year = {2023},
|
||||
volume = {218},
|
||||
pages = {111929}
|
||||
url = {https://dx.doi.org/10.1016/j.commatsci.2022.111929}
|
||||
}
|
||||
|
||||
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||
|
||||
Per MPI rank memory allocation (min/avg/max) = 13.32 | 13.32 | 13.32 Mbytes
|
||||
Step Temp Press Pxx Pyy Pzz Lx Ly Lz Volume PotEng f_mc[1] f_mc[2]
|
||||
0 2400 -187517.52 -187464.28 -188202.86 -186885.42 22.572 60.192 22.572 30667.534 -9674.3728 0 0
|
||||
100 1687.1584 13681.454 14112.794 14026.902 12904.667 21.637683 57.728817 21.63703 27027.2 -9600.6424 24 23
|
||||
200 1578.9879 -6074.2872 -7170.074 -4456.4001 -6596.3875 21.71812 58.13626 21.712735 27414.722 -9569.7632 48 44
|
||||
300 1586.0502 1921.5002 2871.8396 1449.0001 1443.661 21.677891 58.13829 21.643595 27277.759 -9572.2349 72 67
|
||||
400 1599.8151 459.13309 -890.62191 638.40686 1629.6143 21.662475 58.208733 21.64368 27291.495 -9576.3711 96 88
|
||||
500 1622.7406 -980.83045 -358.66202 -2883.0275 299.19813 21.627475 58.244052 21.683194 27313.708 -9583.2244 120 110
|
||||
600 1558.3072 661.01491 2134.4817 -1069.4315 917.99455 21.675158 58.08722 21.705367 27328.136 -9564.1953 144 132
|
||||
700 1585.7908 2896.8915 2712.2516 5131.3298 847.09324 21.703761 57.89964 21.704281 27274.466 -9572.077 168 154
|
||||
800 1593.7707 -754.08728 -529.51328 807.24585 -2539.9944 21.682927 58.129291 21.67599 27320.704 -9574.7174 192 175
|
||||
900 1594.1026 -504.80889 147.79949 -1421.9393 -240.28691 21.678023 58.172814 21.655846 27309.572 -9574.7989 216 198
|
||||
1000 1604.8161 1017.6914 707.59987 2068.9348 276.53957 21.696786 57.985179 21.676799 27271.408 -9578.0587 240 221
|
||||
Loop time of 30.6062 on 1 procs for 1000 steps with 2304 atoms
|
||||
|
||||
Performance: 5.646 ns/day, 4.251 hours/ns, 32.673 timesteps/s, 75.279 katom-step/s
|
||||
99.6% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 27.514 | 27.514 | 27.514 | 0.0 | 89.90
|
||||
Neigh | 0.22106 | 0.22106 | 0.22106 | 0.0 | 0.72
|
||||
Comm | 0.011786 | 0.011786 | 0.011786 | 0.0 | 0.04
|
||||
Output | 0.00030095 | 0.00030095 | 0.00030095 | 0.0 | 0.00
|
||||
Modify | 2.854 | 2.854 | 2.854 | 0.0 | 9.32
|
||||
Other | | 0.004794 | | | 0.02
|
||||
|
||||
Nlocal: 2304 ave 2304 max 2304 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 4744 ave 4744 max 4744 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 130039 ave 130039 max 130039 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
FullNghs: 260078 ave 260078 max 260078 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 260078
|
||||
Ave neighs/atom = 112.88108
|
||||
Neighbor list builds = 62
|
||||
Dangerous builds = 0
|
||||
|
||||
#write_data pulse_center.data
|
||||
Total wall time: 0:00:30
|
||||