Compare commits
2209 Commits
patch_4Feb
...
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 | |||
| 0d2f47ddd4 | |||
| 336bb4622d | |||
| 380ad17cf3 | |||
| 949bac6b4a | |||
| 4865235998 | |||
| dcf604875c | |||
| 3052bc7f4c | |||
| 6df845a8d8 | |||
| fa59b1c6f2 | |||
| 66684deb9f | |||
| 550048f458 | |||
| 37b02a27fa | |||
| f389b6676b | |||
| f9de296ed1 | |||
| a9c5d095e4 | |||
| 2d10754930 | |||
| 97b85d34f2 | |||
| f84bbf9326 | |||
| 9b195d2109 | |||
| db835d1ec5 | |||
| 285fffa98e | |||
| 00ffebc929 | |||
| ed1d49cc16 | |||
| db22bdc7b9 | |||
| 349def92d2 | |||
| 674500781f | |||
| 4097733b52 | |||
| dd30b5a258 | |||
| 2eed658d85 | |||
| 1db87d827d | |||
| 766ef241d9 | |||
| b21ce964e1 | |||
| b15f4e5d63 | |||
| 125389bf23 | |||
| 5868aa095d | |||
| d4be195d81 | |||
| 5e948b1450 | |||
| 72533c8276 | |||
| cac7606470 | |||
| b0694e4e73 | |||
| 3d7f7af8c7 | |||
| 9df30404db | |||
| e7cf0701a8 | |||
| d3691dce98 | |||
| d7cd2795c5 | |||
| 768d5bb9c1 | |||
| e44e2e27cc | |||
| dad1f02716 | |||
| c4e062f2d8 | |||
| 2d8ef50e49 | |||
| 6ccb1b745c | |||
| 75c341543a | |||
| 67128a00b9 | |||
| 0fd7a40d92 | |||
| 30cc2570ad | |||
| df08818fef | |||
| 3ab3663659 | |||
| 464b9f4b03 | |||
| 8d11f16e16 | |||
| 91896bc444 | |||
| 8ae5b16d66 | |||
| f77be0a373 | |||
| c8cd692bbd | |||
| c309d6e99e | |||
| a45561ab41 | |||
| 319037caf6 | |||
| 1f57be8255 | |||
| 7a7ec8083f | |||
| e9146a6467 | |||
| c7fd0817e2 | |||
| 2567a3d802 | |||
| 962f791700 | |||
| 72080d78a7 | |||
| 1e59400ef3 | |||
| e41d485377 | |||
| 43dbb0c089 | |||
| 8305e27835 | |||
| 3f685e9a44 | |||
| 23b185a625 | |||
| ccc078f036 | |||
| 9a65ab2c4d | |||
| 84f20fe516 | |||
| 4cb936c3c6 | |||
| 65debaf191 | |||
| 001fa6a024 | |||
| f69d28fbab | |||
| 1b12f3b47e | |||
| e1aa3cf7ec | |||
| f6f3eb1c31 | |||
| 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 | |||
| bf97cc470f | |||
| bd26d7a742 | |||
| d3f00eeff4 | |||
| 67d668cb62 | |||
| 9d4aad2588 | |||
| f5b64118cc | |||
| acf8a51b01 | |||
| b3f160c118 | |||
| ece4939708 | |||
| 0fb02af020 | |||
| 3f58927829 | |||
| b73f78ea88 | |||
| ba8dd4d380 | |||
| 45ba47e0d0 | |||
| ddb6bb2cfb | |||
| b509c53003 | |||
| 9941d9132c | |||
| 11bf72c4aa | |||
| ba093790fc | |||
| 5386dce0cf | |||
| 4da7fad87e | |||
| 87cf0f964e | |||
| f9003e6a16 | |||
| deef742897 | |||
| 6a2e796538 | |||
| 3086e6e0ec | |||
| 117a451b15 | |||
| 8a8fc2f1d8 | |||
| 688800038a | |||
| 07f650a982 | |||
| 60c33bfb95 | |||
| 23694ee4f5 | |||
| 1fc8e05642 | |||
| 1fae7e3f98 | |||
| f7ae20358c | |||
| 07acf912c9 | |||
| 52f8d1d5a1 | |||
| b5cf8eb9ed | |||
| 7aac770631 | |||
| 17ed72f99b | |||
| ed535e5301 | |||
| 04c642905f | |||
| 7780309fae | |||
| c663a5ac1c | |||
| 5ea7bec083 | |||
| b05f5f8e3a | |||
| 2599f9ddb0 | |||
| 2cc7c71ebc | |||
| d7cee3e71d | |||
| 9d81246761 | |||
| 290f409cf8 | |||
| 7bed09c25a | |||
| 68ce9c8a6f | |||
| e43acf24ea | |||
| 765701b924 | |||
| 5b65c4938f | |||
| 8f56874d07 | |||
| 06af3b8c4a | |||
| a6d7f015a2 | |||
| 5e9f00f1eb | |||
| 66c2e4f324 | |||
| 8f9806ec72 | |||
| 13304707aa | |||
| cea8d22a87 | |||
| f839532cf6 | |||
| f12d1d3c5b | |||
| 0af41a211d | |||
| 26def4a3cf | |||
| f584d7219a | |||
| 129a3a83e5 | |||
| 3dadcab047 | |||
| f5cc752648 | |||
| a246619ecf | |||
| de98aa0fb1 | |||
| be59eb6a70 | |||
| 8f07b44dce | |||
| 3552847957 | |||
| ce074d475f | |||
| 8254107095 | |||
| 1ddc64b885 | |||
| 46b0e48ef3 | |||
| 1668bcffcf | |||
| 747ed4244f | |||
| ce44faddcf | |||
| 5ff0f05933 | |||
| 6843424dad | |||
| d59f7d3381 | |||
| d6a0d3bacf | |||
| df3467a114 | |||
| f5c51af9bc | |||
| 6a5ed2af4b | |||
| 06b06fd991 | |||
| 6ea16aead1 | |||
| 2e775034f9 | |||
| 1f758bcf8e | |||
| f8665fdf4e | |||
| 8181224bca | |||
| 2436bd4411 | |||
| 94f44e3644 | |||
| 730cf8bcf5 | |||
| 8d09e440c5 | |||
| 1d8d8b6445 | |||
| 442e50bb17 | |||
| 018342afc8 | |||
| 61d3759d6b | |||
| 0975207ba4 | |||
| 534373bef3 | |||
| f979d503d9 | |||
| cf7011bf64 | |||
| ae8542a020 | |||
| 76ef41a901 | |||
| 2fe88a1e9e | |||
| 30b555d7dc | |||
| 0df77ef7ca | |||
| 446630e3ba | |||
| 8c314c7bda | |||
| 13500710ce | |||
| c787ce60a7 | |||
| 103c44e3c1 | |||
| c1fe6c9109 | |||
| c03e19d2dd | |||
| e9dc43c2da | |||
| d70409181c | |||
| ef6cdbf00e | |||
| 7b5b6f19b7 | |||
| a46d32e4d4 | |||
| 7328dedb7b | |||
| 30010a8929 | |||
| 6800e8bb39 | |||
| 594953ed0b | |||
| b92414349d | |||
| bc07696ce9 | |||
| 21394574ed | |||
| a443e6ea5e | |||
| 37a344a2ad | |||
| 271bdc1af7 | |||
| 2351418c94 | |||
| adce5bef84 | |||
| 380c878e5f | |||
| 2744647c75 | |||
| 2cc1356384 | |||
| 510563f5f3 | |||
| 70e1bb50f1 | |||
| 186a6431f7 | |||
| 09b174d129 | |||
| 5a8da735f2 | |||
| ad63eb8bf7 | |||
| b3402eaae8 | |||
| 8fa4c0974c | |||
| ac059a15b0 | |||
| c3b25c8c27 | |||
| b9b59bd23c | |||
| a821654ef5 | |||
| 2968a62937 | |||
| e393b9803b | |||
| 63ee449dc1 | |||
| 031fab210f | |||
| 629ec2eabe | |||
| 5fd4d6bb87 | |||
| ebfb94a717 | |||
| 06616c5ff3 | |||
| c3c0180649 | |||
| 19cfd08eb8 | |||
| fd8fb74a88 | |||
| 35f08232ba | |||
| 2b7c05c057 | |||
| 179d4f0148 | |||
| 32588f075e | |||
| 9abb171d05 | |||
| b3e7121535 | |||
| 85f0853910 | |||
| 01bde55e9a | |||
| 68d2414b59 | |||
| 9ba50df9d8 | |||
| 83fa2cbc93 | |||
| fdd91e597e | |||
| 75907ccf91 | |||
| 2bcac9efba | |||
| 24149fc793 | |||
| ef89edc4c6 | |||
| bb62f46404 | |||
| 17da04f07b | |||
| 6436cc87b7 | |||
| 3215141d9e | |||
| 3be9a40bf8 | |||
| b69e8fff1f | |||
| 458c0844a8 | |||
| acd53ebd7c | |||
| ac556104c1 | |||
| 22cddeee78 | |||
| 60fe08c328 | |||
| 38dffe2283 | |||
| 45944c4dc9 | |||
| 6c2f11ce75 | |||
| 011f05f9ff | |||
| 955d5da09c | |||
| b5cac76937 | |||
| 9f0c87cf81 | |||
| 9c8e03c4f4 | |||
| 7c2c9ea286 | |||
| 3751fe6be7 | |||
| 1f85dd4093 | |||
| 615dd589dd | |||
| c0a41bd638 | |||
| c1e9adbd80 | |||
| 48df0448df | |||
| 2d22092078 | |||
| afcb97aaf2 | |||
| fbfe1e6a7c | |||
| a528b88d8a | |||
| 750cfbedd3 | |||
| a1cd18e4cf | |||
| 3b17ea5363 | |||
| dc07a1471e | |||
| 7c30111fa0 | |||
| 0d7e07b9be | |||
| 7ec7745640 | |||
| 8d38ec4f18 | |||
| 228cf1e871 | |||
| 6c8e758e2b | |||
| f3adda8d3e | |||
| af840176e7 | |||
| 79f6867d7e | |||
| 3fafec9cba | |||
| 10077b057c | |||
| 37221c080b | |||
| 55a13efad0 | |||
| a388bd38ee | |||
| edb060ccf5 | |||
| 565e7b2c2b | |||
| b2001e999c | |||
| f8a0ff011b | |||
| 1f5b64bca4 | |||
| e474bfeece | |||
| 9b36c58eb2 | |||
| 1fc13c491c | |||
| a2a2c541b5 | |||
| 76d0ead245 | |||
| 165f34bc12 | |||
| 19d25a3654 | |||
| 597a841f40 | |||
| 2ab7eda64a | |||
| cba479bf6e | |||
| f9ba063c4a | |||
| def38bf0f3 | |||
| 2fa9cc7ae1 | |||
| 0ce5d68455 | |||
| 1062a8fb3a | |||
| 332006923d | |||
| 169f8ffd73 | |||
| f9a55c0f49 | |||
| 053792ed47 | |||
| 2fc7d287d4 | |||
| 440e24c60e | |||
| d4867ab55e | |||
| 2927b08792 | |||
| 4a3c08576f | |||
| c886fff624 | |||
| e5854ced41 | |||
| 0768aac1fd | |||
| 75d3d79fca | |||
| fc0788f61c | |||
| b5f3660101 | |||
| 11f6b3483b | |||
| db3d93210d | |||
| e62f45b2b5 | |||
| 7151f261a0 | |||
| 31b18ad24e | |||
| f7e53b06e4 | |||
| bef695f70b | |||
| c74e7292c0 | |||
| 5169a633e5 | |||
| 2c27ea3706 | |||
| f8bf6d1ad6 | |||
| d89ae3d15d | |||
| 6030c68ba3 | |||
| 9442218b36 | |||
| 1a1f4b1a82 | |||
| 3221c53b14 | |||
| 161776b2c7 | |||
| 78c5e9c00b | |||
| 36ad6ebe52 | |||
| 85bac7665a | |||
| 12c72593f7 | |||
| ad6b674798 | |||
| 3b2f794398 | |||
| 092df8ed8f | |||
| 4897fbb210 | |||
| 40d8e1b95f | |||
| 4b2163666c | |||
| 7102cc2588 | |||
| f1edc7f222 | |||
| 706aa19710 | |||
| 67c6dc492b | |||
| d406289a7a | |||
| 1969c28e0c | |||
| f577dcb28b | |||
| d416202b71 | |||
| 46f4f5a3c0 | |||
| 9b258d4c82 | |||
| 1597019419 | |||
| c8b841b08e | |||
| 3b9ddf7a1f | |||
| cab78b2c0d | |||
| 734bc915e2 | |||
| 3c5e85a7c0 | |||
| 9e26d8b569 | |||
| 43fcf6eccc | |||
| d25d0cbc7e | |||
| 8e07d48518 | |||
| d4ba5d1fe6 | |||
| a1fc036e25 | |||
| ad086f26a5 | |||
| 20d3d47fe3 | |||
| 2d70947044 | |||
| 130033ec75 | |||
| 4126c9ed75 | |||
| 2e8b95f0c1 | |||
| f9dc879033 | |||
| b1159dc528 | |||
| 1352257cf4 | |||
| 6629ecff2d | |||
| 648cd3f0c6 | |||
| 946e885209 | |||
| 9e9caf7d14 | |||
| 290ca2a095 | |||
| 73fe2f7915 | |||
| d10e5dded2 | |||
| bbc025632d | |||
| dbe98e2cfb | |||
| 25307b049c | |||
| da903e6d44 | |||
| f9ba8caf4a | |||
| 7221e3993a | |||
| 0673ac6acf | |||
| fcc4092e83 | |||
| 26ab7cd20d | |||
| 385f350918 | |||
| 04732e2efd | |||
| 7bfc15ff2c | |||
| d5c4f9c158 | |||
| 0ff17967b0 | |||
| 4e69046e54 | |||
| 75d620c0a7 | |||
| fc0a41fb71 | |||
| 6988c2f13e | |||
| c088ce2f51 | |||
| 699e5bee07 | |||
| bd427ecf7a | |||
| 8adc2d3391 | |||
| 95a0c0a69a | |||
| f385633f97 | |||
| a59a2e4dba | |||
| 0895b77a93 | |||
| 71da769b11 | |||
| 9a08f7b23b | |||
| bd34c5f315 | |||
| 18dca0eeb1 | |||
| 942e77d976 | |||
| 25fd039457 | |||
| 96f7dc79cc | |||
| 8ef9759856 | |||
| e1e87cc9ef | |||
| e7a8cc6646 | |||
| 80361d0bd6 | |||
| 7806244713 | |||
| e15e7f699e | |||
| 6e2d7f48d7 | |||
| 51aa87d4ce | |||
| 7ca493917a | |||
| 5938dee2d9 | |||
| 854e9c7a19 | |||
| a7760e82e1 | |||
| 0f80a5c93d | |||
| 82bb366126 | |||
| ab75943e39 | |||
| ae19abdd7a | |||
| 27d8e103eb | |||
| a9fe42bea4 | |||
| 5d9a7d154d | |||
| 4553108035 | |||
| c4c76dd96c | |||
| b131659a43 | |||
| d2d7248e3a | |||
| 49d5e02c11 | |||
| 0c29a0a0c9 | |||
| 4bfdd3eb34 | |||
| 51de62ce05 | |||
| 703750f4c8 | |||
| a3bc1a6c0b | |||
| ca246a50f1 | |||
| 3a6ea0808d | |||
| e4c3b0c05e | |||
| 689b542da6 | |||
| b081d289c1 | |||
| 0b0383bc64 | |||
| 7be6e95647 | |||
| 31df721767 | |||
| 0bab80a26e | |||
| f181ca6aec | |||
| 1eb61936ab | |||
| 00673999af | |||
| 994b7b4937 | |||
| bb09088731 | |||
| 1ad2df84d8 | |||
| d0c3564216 | |||
| 2dd53c440e | |||
| ed1f4cc381 | |||
| 09d3ac0a1b | |||
| 3aa3d45a9f | |||
| a30daec348 | |||
| 2ca9e188c0 | |||
| b8e14cd0c9 | |||
| 3810be6c8b | |||
| 7a40e78c7a | |||
| e79171c1de | |||
| f786707699 | |||
| 02c627db82 | |||
| 190ecd2666 | |||
| a5b83224e4 | |||
| 7c0fd42ab4 | |||
| 2bb9454190 | |||
| 43a7b14b7c | |||
| 4dd8c66390 | |||
| 90797c7b62 | |||
| 83c785740b | |||
| 8c1aada9cb | |||
| dfc10e5b59 | |||
| bc031bdd7a | |||
| f2bf0d0a8b | |||
| 980bf70310 | |||
| 227b4ed12d | |||
| 32592e6660 | |||
| 2f861b83d7 | |||
| d1f452fcb6 | |||
| 6e7cbbeb9c | |||
| e9695df0e8 | |||
| 8fd1bf23c9 | |||
| f16f65c8dc | |||
| bd6bb3ce10 | |||
| 585565edb9 | |||
| 210cddd94e | |||
| d6e9a6a44a | |||
| 139ecd0e90 | |||
| 813e65026e | |||
| 535d08895a | |||
| 586d24f5ef | |||
| 7643c901eb | |||
| a237bdc753 | |||
| af718e8162 | |||
| c9f25a69e5 | |||
| b6dae216d3 | |||
| 3d13227287 | |||
| 647bc7538d | |||
| fc3d295560 | |||
| 641d496d4b | |||
| 319e14c8e3 | |||
| dcb04032fb | |||
| 99b484a0cc | |||
| c505bfbdfe | |||
| 8ea6c5c395 | |||
| 6c337ba655 | |||
| 52ce35adbc | |||
| bfd496bee7 | |||
| 9a06ac9585 | |||
| 499192a1b2 | |||
| 809d5b5b93 | |||
| 7b0c5f3e04 | |||
| d012d13c19 | |||
| fe9915f307 | |||
| fdbae98345 | |||
| 6372178caa | |||
| 4ce473a649 | |||
| ef875b5973 | |||
| 239eb64cbb | |||
| 2b38b6d1c0 | |||
| e93709d34e | |||
| 7655a4cb84 | |||
| e956e5ccda | |||
| 55964c1233 | |||
| 27ac8c0ea1 | |||
| 477f78b28c | |||
| 7034e930fd | |||
| 6267389801 | |||
| 911b3eb811 | |||
| 2a1fb835ad | |||
| d4bcd3b7eb | |||
| cf3ffb9dfc | |||
| c6d2812d2d | |||
| ac76176dd5 | |||
| cdea2737c7 | |||
| da2bc03ae6 | |||
| 6272acd9c6 | |||
| 6ab7d7d818 | |||
| ece0df7f7e | |||
| 94e6022210 | |||
| b357540e92 | |||
| f8757abe92 | |||
| 2eaf1e52f0 | |||
| 860a3cbbd3 | |||
| 8d5459393f | |||
| 2939e7d509 | |||
| 0cc6fb8e18 | |||
| 3fc0868db9 | |||
| 0bfa5b210b | |||
| 25f1dac9b6 | |||
| 7c2ca8c8e5 | |||
| c60bff2b97 | |||
| e0847f2195 | |||
| ea76dc99e9 | |||
| b9228a854e | |||
| be6acff029 | |||
| bff980b56f | |||
| 3d4b57d7fd | |||
| a970f946a7 | |||
| 0c71daabbe | |||
| 30bbbafd9d | |||
| d1dd05bf4e | |||
| 996faf7a94 | |||
| 3182dc26da | |||
| 0879548737 | |||
| 54d7f46151 | |||
| ccd6eeb8af | |||
| 5086c639e2 | |||
| f4f0a22ee1 | |||
| 66fbc40944 | |||
| af31dd3a6b | |||
| 5d32a1e61a | |||
| 50f42f203d | |||
| e3016072ad | |||
| d06bfbf180 | |||
| a3de234873 | |||
| fdf5f8dd22 | |||
| cadac64ab6 | |||
| 9d61ff4bba | |||
| daf58e72dc | |||
| 91283d98cc | |||
| 1892189eaa | |||
| f447a0476c | |||
| 65992f7ba2 | |||
| 999e6d95d4 | |||
| 384d7f446b | |||
| 609b60c211 | |||
| 216b9218cb | |||
| 75e12e2004 | |||
| 7b4c33630d | |||
| 0a7f55688b | |||
| 91e4cbb564 | |||
| 0043bca33d | |||
| 9cfcb971b9 | |||
| cb8550465e | |||
| 8df9f3404b | |||
| 92321f4cad | |||
| 9f7653dd37 | |||
| 38df714672 | |||
| 8defe0e798 | |||
| d51017c878 | |||
| 5bd3218372 | |||
| 5933eca83f | |||
| 5371aa8670 | |||
| 144637c0a1 | |||
| 618c92aeee | |||
| b0ca9ed0d4 | |||
| 76e3900128 | |||
| db8dae3300 | |||
| fd77c935ab | |||
| c99ae613de | |||
| 6964156b6f | |||
| e577528099 | |||
| b8aaa8d60f | |||
| 3c1ed34753 | |||
| eeaf0694ad | |||
| 8ee8cb1aa3 | |||
| 3aafe2831b | |||
| 9d01ac2caf | |||
| bba860f959 | |||
| a4f7c7e4c5 | |||
| 3b69cf6011 | |||
| 084ba674a5 | |||
| 9d2b5302b9 | |||
| 1c609ef3e4 | |||
| 677e8dd681 | |||
| 6e395424bc | |||
| 935e323d08 | |||
| 578b1cf936 | |||
| 2da463a773 | |||
| 367dd4635b | |||
| fc9d7bc181 | |||
| 2396668965 | |||
| 285baf27b5 | |||
| 7ff9ee51e5 | |||
| 990007c87b | |||
| 4dbf18e2c9 | |||
| 1172a8c6c8 | |||
| aeed7a425f | |||
| b7b9a4a599 | |||
| 9661c21052 | |||
| c0321b5f00 | |||
| 9a55856758 | |||
| 09242c0b12 | |||
| a17ec2a8d3 | |||
| 0263774595 | |||
| 9ac09e839f | |||
| 963083b2d5 | |||
| 8949a6262d | |||
| c3309bc0b3 | |||
| c9be07df9c | |||
| fc78806bc7 | |||
| f652687a3a | |||
| 738fb4a502 | |||
| d12f4b076b | |||
| 032c1c39b0 | |||
| fce3246439 | |||
| c9d557a9f2 | |||
| 8eceb2b944 | |||
| dcb844b01b | |||
| 0c7c21925f | |||
| b0a8391413 | |||
| bb6470eb1a | |||
| 855737cf04 | |||
| 2ad0cc1820 | |||
| f5dbf30965 | |||
| f0b3b20653 | |||
| dd313465e1 | |||
| 9661d020c1 | |||
| c45558b640 | |||
| 2542b989ee | |||
| 7f0b71f7c0 | |||
| 637b572600 | |||
| 465171d58f | |||
| dcbc3c9dbc | |||
| 194b3408f7 | |||
| bc1b22a2f8 | |||
| 8a373ab5d8 | |||
| cf5d74b315 | |||
| d515af2e2b | |||
| 811f79abc6 | |||
| c22716f5c0 | |||
| a9f2bdf326 | |||
| c95d43f647 | |||
| 24389a55dc | |||
| 16f836bef5 | |||
| d658c589f7 | |||
| a98a743f2e | |||
| bc791da69e | |||
| faa6e806bf | |||
| 7878ec170c | |||
| 3c055fe93b | |||
| bb788cb1a2 | |||
| 0b43649e74 | |||
| 227b7840e7 | |||
| 2d0c1af656 | |||
| fecd93783b | |||
| d850d93dad | |||
| 678e90f669 | |||
| bafd2a8d6b | |||
| 2ea5cf1206 | |||
| 9e241df062 | |||
| 32e4a0d36b | |||
| 5dbeacb1e8 | |||
| bdf1b541b1 | |||
| 66d5fbd4bd | |||
| 183486d813 | |||
| e9ac9e77db | |||
| 3efddff01a | |||
| 3872fa16d4 | |||
| 7fba02f865 | |||
| 5a62d0a129 | |||
| 3ed03c4044 | |||
| 15026cfa56 | |||
| b4ff184a0a | |||
| d830412228 | |||
| bbd057891a | |||
| b45c811fbb | |||
| 7b5c281596 | |||
| 350fa4ddec | |||
| e0322b96ec | |||
| 15cdba0bf0 | |||
| e79fcfb4ef | |||
| 3a18ca5197 | |||
| 9577343429 | |||
| 2b718d3b86 | |||
| aabfef6d0b | |||
| b4e4ea1069 | |||
| ccbf47c66d | |||
| 6fca985d5d | |||
| a26ea958c6 | |||
| a64863caa6 | |||
| 824b1b0b66 | |||
| 3d5430bfe4 | |||
| adaa313990 | |||
| 88cecbd11d | |||
| c65c8819e3 | |||
| f4b92a23ae | |||
| 6f24e1edd5 | |||
| 12cc12b4f4 | |||
| cb5e45ff1f | |||
| 8a0900f0ab | |||
| 9d0c25fbab | |||
| c289ad9471 | |||
| 725b34a70a | |||
| 410d3e84b0 | |||
| 1b58a4695b | |||
| 649fd86e11 | |||
| 3834169c92 | |||
| 3ab91e4e1a | |||
| c037ec07a2 | |||
| e9bc334a14 | |||
| 3b61bcf890 | |||
| bbed85a410 | |||
| 829a0868e8 | |||
| f85a19d0b1 | |||
| 2e98ae9de9 | |||
| e11245d0fd | |||
| e4c96459e5 | |||
| ca575e395e | |||
| 643afe6eff | |||
| 04bb57f8e2 | |||
| 37248a011e | |||
| 63b8e86a4b | |||
| 6700a3bed1 | |||
| db8abdb592 | |||
| bb8b6590d5 | |||
| 5bcfc35cd1 | |||
| ee78e3e201 | |||
| b936673935 | |||
| 8a04dc036d | |||
| 4cd3fa1e38 | |||
| 90cd786c2d | |||
| d02e26d3ba | |||
| 056733fb1f | |||
| 78bfa5b59b | |||
| 69881baa0c | |||
| 4aece11628 | |||
| 7d6c19f51b | |||
| f0b988904d | |||
| e502d40491 | |||
| 6f0a59372c | |||
| b329d01e5e | |||
| aee02c7ed4 | |||
| afaf440895 | |||
| 68c92f3267 | |||
| d42330edbd | |||
| 9e8b9e55be | |||
| 0a7b528d39 | |||
| 368e0a22a0 | |||
| d65b0ce666 | |||
| afbae53a0a | |||
| 035aefcc26 | |||
| 73585e1dcc | |||
| 111817ce32 | |||
| b34b6b80e4 | |||
| 7b915b2983 | |||
| 96f135c294 | |||
| bca920a021 | |||
| 589c026465 | |||
| 2240430d5e | |||
| 6dacf5d52c | |||
| 067f998eac | |||
| 546ea917c7 | |||
| b9218528cf | |||
| 54be0adfb8 | |||
| 5b5b700318 | |||
| 48570e01ba | |||
| 2c3824bdd0 | |||
| 07c0c435ef | |||
| ee930935f5 | |||
| aafdac1917 | |||
| 81ab0b7504 | |||
| 3aba21f6e2 | |||
| 361914f3f1 | |||
| 557d279774 | |||
| 55eeaca69c | |||
| 4e0d37ecc2 | |||
| 4c3260a0dc | |||
| cea31e463d | |||
| a0d1deea44 | |||
| fcb2eee686 | |||
| e97807b92e | |||
| 29558a1141 | |||
| 5ab442f10b | |||
| 7374d38b44 | |||
| 419b18bd16 | |||
| b11672a99f | |||
| d784706a68 | |||
| e3de43f2b0 | |||
| 8ff5855e40 | |||
| 9da8a7f73a | |||
| bf1a5e05fd | |||
| 03f71259c1 | |||
| 34b3dd9ebd | |||
| 889f91763f | |||
| bfdfd322df | |||
| 9d70c8b8ae | |||
| 0f10741f71 | |||
| f6394b2a61 | |||
| c449bed814 | |||
| b53449ff10 | |||
| a1c0d93953 | |||
| 8c9e1fe6a2 | |||
| 009a7b1916 | |||
| 0812d3c772 | |||
| 71c8c2aaa2 | |||
| 933f618eb4 | |||
| 0a4a2f6deb | |||
| bdb661451d | |||
| a892495575 | |||
| 24444f2f7c | |||
| fd06c20a6a | |||
| f158b5195e | |||
| 33ac6c8836 | |||
| 16ed78f435 | |||
| 6d6fce7866 | |||
| 084bdb2da6 | |||
| c3976a444c | |||
| 377c423e42 | |||
| 063d595233 | |||
| 9c4181e42e | |||
| bd7420e496 | |||
| 130b898e26 | |||
| c7f5d07a68 | |||
| 42219ac784 | |||
| 1931427a57 | |||
| 24ce7bedcd | |||
| f097e8d951 | |||
| 1b31064921 | |||
| 38903fb7d2 | |||
| 9aba2c91c9 | |||
| 3e62e660e5 | |||
| 4a2d78fd99 | |||
| d0aabe57bc | |||
| 1cc69bd0df | |||
| e3bf1a194d | |||
| 930d3ddc17 | |||
| 508eeddf87 | |||
| ebf6ba36bf | |||
| 90c713d065 | |||
| d1671c24c4 | |||
| fa262967e6 | |||
| 6d42040b9d | |||
| 70faf86040 | |||
| ab63993226 | |||
| 2c2eaf09e6 | |||
| 1507d3511f | |||
| aa020c0ad3 | |||
| d076b1c582 | |||
| c144fc0fc6 | |||
| 5068406c03 | |||
| 0004a384fe | |||
| 1d3b93b042 | |||
| 6fb382af3d | |||
| b88accc50e | |||
| 242f77fce9 | |||
| 1e819efcf8 | |||
| 01698ddc2e | |||
| 08f8be18e5 | |||
| 8af31ca28c | |||
| 9c494d0a25 | |||
| 5a1aed7957 | |||
| 6ff0f645e0 | |||
| 4cafb49c34 | |||
| 312bdcbddd | |||
| 79d2346eaa | |||
| 4be39d6d2b | |||
| 9ee1648af2 | |||
| ca3d2de44b | |||
| ce10be7492 | |||
| 4246fab500 | |||
| 15b7dd78f0 | |||
| e3cf1dec27 | |||
| 388f279633 | |||
| 0a1e3fa26a | |||
| 976b73a2f2 | |||
| 9af8fdc91e | |||
| 24fc6eb10a | |||
| 6e94d83cff | |||
| 2ff078f973 | |||
| 7bd7be8f86 | |||
| 22fa86a1b7 | |||
| a61f67ceb7 | |||
| 9b1dca201f | |||
| 46393cc930 | |||
| 916ab55a31 | |||
| 09c8dc07d8 | |||
| 3f9167be59 | |||
| 1531810cc5 | |||
| c16bbf6bb0 | |||
| abc14c00a0 | |||
| 47cea8e1ba | |||
| b433c8cb77 | |||
| 07c457221d | |||
| 711d76531f | |||
| 505d295d16 | |||
| 6da1c6270c | |||
| cc70b5bb89 | |||
| 389b07418b | |||
| 16c3198d27 | |||
| 885099cf77 | |||
| 037251238b | |||
| a229b148d1 | |||
| 43f3db1867 | |||
| 61daafca62 | |||
| ac2214e5f2 | |||
| 71b86b102d | |||
| 0f20eca322 | |||
| 16db8e1515 | |||
| 700eb0c0e6 | |||
| 42923179e5 | |||
| 2e3c1dfcc6 | |||
| bc3aafd324 | |||
| 7fc4ba9628 | |||
| 38f8299cfb | |||
| ea48161a51 | |||
| e3b81ec784 | |||
| 98159e7c14 | |||
| 169c051308 | |||
| 9f78d5797b | |||
| 5d02e140d4 | |||
| f4d2c518e8 | |||
| 1f4b955a34 | |||
| c6ebb57b41 | |||
| ef5c797a84 | |||
| 94885186b8 | |||
| 4ed7d95bf9 | |||
| 4882fe8e8b | |||
| dbdc71433c | |||
| c182fbd1c6 | |||
| 7f4d5bf0eb | |||
| aaa81b2576 | |||
| e1ba18aff9 | |||
| f6c2f5bc74 | |||
| dc99e204d3 | |||
| a99a567f0c | |||
| 9bf19159a4 | |||
| b89046d82f | |||
| 361f0dbe3c | |||
| d46edfed6d | |||
| 2c7e3dddbc | |||
| 7ceb8c461f | |||
| 1e2752bc5f | |||
| b3e75a6f84 | |||
| d79be293f5 | |||
| 9f6f957f7c | |||
| 6264a2b202 | |||
| 5532117417 | |||
| 8780cd89a5 | |||
| aee34a92d3 | |||
| df360f0d55 | |||
| c7e288eb8c | |||
| f4275ae44c | |||
| f1ef94aade | |||
| 16b2988106 | |||
| 35fca290fc | |||
| f29a433fa9 | |||
| 0448651a90 | |||
| cef81881f9 | |||
| cce060caa8 | |||
| e87e6dc5b0 | |||
| f46d066e5b | |||
| 1cb47dc066 | |||
| 63d49f50d1 | |||
| c37bc484b6 | |||
| d4011262f1 | |||
| f1e1099ac2 | |||
| 4d453a65e6 | |||
| 3141723c24 | |||
| b77c3bf8c7 | |||
| 1e078665f6 | |||
| 29931c030f | |||
| 7952281f78 | |||
| a31f4f79b8 | |||
| 632d88912d | |||
| dafbe5541a | |||
| 8641486249 | |||
| abc8954c5c | |||
| 11f66b4da1 | |||
| fe8ebb308d | |||
| 90c2175056 | |||
| d772833f67 | |||
| 6fb1f4466c | |||
| 0a1b10faef | |||
| f0bc9ddcc9 | |||
| f5099b7c16 | |||
| c19389a205 | |||
| 816fb83d1a | |||
| 3138f62ac8 | |||
| 0e07eab97f | |||
| 9be6b5a05b | |||
| fe5d6b154a | |||
| 1c1749b6bf | |||
| 841e459b67 | |||
| 25774943d5 | |||
| 6f925e12dd | |||
| 3ed6b617f0 | |||
| 5d4a277623 | |||
| 9f02f20023 | |||
| 77ab5bd624 | |||
| 52437e2152 | |||
| eaf624c0f0 | |||
| 89abf65751 | |||
| 5e61e6c0dc | |||
| 33026e5fd3 | |||
| 79ed41837a | |||
| 344bcc2304 | |||
| ca5015eaea | |||
| 7f82dcd835 | |||
| 0fb79ae3ff | |||
| c83ae0365e | |||
| 2a35452c13 | |||
| 52312fcd1d | |||
| d83121878e | |||
| b42cc2f588 | |||
| 00b33b749b | |||
| 36e739b734 | |||
| 53213fb6ff | |||
| f4d2653cda | |||
| ad51ef5aff | |||
| 8dc7d254dc | |||
| 966ca42463 | |||
| 67ef0407bd | |||
| 1c65907d72 | |||
| 2a2e9919cf | |||
| f84ed6f9a4 | |||
| 8ab8491da5 | |||
| 52f068d1c5 | |||
| bedcc59f83 | |||
| 583f7b70b4 | |||
| 73852524dd | |||
| 0f972a87fd | |||
| ea2eb930c5 | |||
| 63d8915562 | |||
| 926f336962 | |||
| adfe84913f | |||
| 2e398bd17c | |||
| 1d362a7627 | |||
| 98f3a0a1ba | |||
| 66ec1ff360 | |||
| 7af11fe604 | |||
| 944e50b06a | |||
| 5b7bf1951e | |||
| 5479ac32d4 | |||
| c1fb8cbf69 | |||
| d8893ea501 | |||
| ac1221602b | |||
| 47977a2821 | |||
| ba14ce210c | |||
| 889b33df4a | |||
| 0b47e90008 | |||
| 89ceb73ec5 | |||
| 7be7ffbaf1 | |||
| c263c9a534 | |||
| afaff7199b | |||
| b94d82d7b1 | |||
| ed9b22cb0e | |||
| a708a50468 | |||
| 1d974a51c0 | |||
| fb6a1ad603 | |||
| 8bba7ff10f | |||
| 757eb8bf58 | |||
| c66ca60f65 | |||
| 94dd03d43c | |||
| 5032436312 | |||
| c9b4689167 | |||
| bac4eec31b | |||
| a320a52804 | |||
| 11b95655f8 | |||
| 7e0f067b74 | |||
| 1d3ad36e85 | |||
| 17797e4f74 | |||
| 252bd9aa9d | |||
| 08553a7272 | |||
| c42650257f | |||
| f8b13b21ec | |||
| c41c4086ca | |||
| 18cd31d811 | |||
| e88946935c | |||
| dc83bd3084 | |||
| 0b55587b1d | |||
| 7ae9ef75d8 | |||
| 70acd78048 | |||
| f738690cb5 | |||
| 2b46abc31c | |||
| 0c80ec5e0d | |||
| 3f5c54e362 | |||
| 7fe804d19d | |||
| c9bd1a7877 | |||
| 0f66e66529 | |||
| 8025a494d9 | |||
| 5251ba1465 | |||
| e90d5133cc | |||
| 9bce6662b4 | |||
| 8dfb967acc | |||
| 261cc13f99 | |||
| f6e39d14b0 | |||
| 0a4eea6aa0 | |||
| ec0afc3fdf | |||
| 6abdedc75b | |||
| 75fd76aaa6 | |||
| 9e249c9c57 | |||
| 566a14f52d | |||
| 2c1cd2ed04 | |||
| 54790d6095 | |||
| 63b5e46bf0 | |||
| a67f67607c | |||
| d9d24300a4 | |||
| 4cab0bfe1a | |||
| 0de9da709c | |||
| 05521d38d9 | |||
| 6bd2e0e496 | |||
| 31697bac8d | |||
| e00e215f99 | |||
| 7cf3ff588e | |||
| d11c8b3e1e | |||
| fe3c8487de | |||
| c0ef702af5 | |||
| f7a43b94a6 | |||
| e4a16556db | |||
| 5557e03e54 | |||
| 3cd028fd01 | |||
| f693577262 | |||
| 0a8e2f923d | |||
| 8a87a6068c | |||
| c7db4e9e19 | |||
| 95858bccc6 | |||
| 8791b29aa2 | |||
| ea973e1d6c | |||
| 424c694b6b | |||
| 49b5e89258 | |||
| e954bdfc14 | |||
| 2a2a7a3113 | |||
| 66117414dd | |||
| 38d28fb426 | |||
| 098bb4b3c8 | |||
| 314d0a0e61 | |||
| 599ff11eb0 | |||
| 792144f12e | |||
| 86f7f6da98 | |||
| 8a1744c038 | |||
| b188cdc044 | |||
| 6eddb3a33f | |||
| 61a2db4715 | |||
| 1a636acf81 | |||
| d384de354a | |||
| 26e1b5d101 | |||
| 909796b858 | |||
| ab6668031f | |||
| d22533350a | |||
| c9f41f9d90 | |||
| a547b9a417 | |||
| 2440564bef | |||
| ced5fd3240 | |||
| c918c7b547 | |||
| f9b7013af3 | |||
| 33f5057488 | |||
| 22898fc8fc | |||
| 72d2b70125 | |||
| 61f4012300 | |||
| 24f40c7db4 | |||
| ea9166d175 | |||
| 676add28fe | |||
| 34e89bed4c | |||
| ee7b0840ef | |||
| 62e7698a44 | |||
| 3cd0871083 | |||
| 52457d6c1e | |||
| 60181e2a8a | |||
| 61a29f5421 | |||
| 01d091d8d6 | |||
| ca6ab28536 | |||
| de6f17c0ce | |||
| 7df94e179c | |||
| 5233b21c21 | |||
| 59915a3b6a | |||
| a21b92f4de | |||
| 36c2770383 | |||
| 84dbfa3e0d | |||
| 43d9d6af3e | |||
| a2508fef13 | |||
| dda23a20b7 | |||
| feea204f7c | |||
| 95797d643b | |||
| 04cad88b55 | |||
| 97e7baf33f | |||
| 3ed6716b65 | |||
| fa285d9733 | |||
| e178f593be | |||
| 4a3394b300 | |||
| 892c20cc20 | |||
| acb9fdfc24 | |||
| 2ae07ec1cb | |||
| edaab05db6 | |||
| 262ff223c6 | |||
| 3b8139d428 | |||
| 02f98947f9 | |||
| 32d0bf1bee | |||
| 504e747f3d | |||
| e84b172417 | |||
| 842eec1e73 | |||
| e6f2757385 | |||
| 150cd216ba | |||
| b2b9f2c3e9 | |||
| 418b205362 | |||
| 4e582993c4 | |||
| 8c2bbc1608 | |||
| 1d56981bb1 | |||
| 72eb284f76 | |||
| 1057882126 | |||
| 0b1ef95562 | |||
| ed627579f6 | |||
| 33c4ce8929 | |||
| dda72fee76 | |||
| 080df8cf74 | |||
| ec0c8cc847 | |||
| feafce74b3 | |||
| 5882ec9370 | |||
| 7fe3da56a0 | |||
| 3e587685b6 | |||
| 2e0bc27646 | |||
| e3dd2790f9 | |||
| c4d11a7871 | |||
| ea6e702184 | |||
| a678a3b474 | |||
| e6986cbc06 | |||
| 8ecd7e8629 | |||
| d91a75a9af | |||
| b2def45011 | |||
| c47f7d5618 | |||
| d5b82562bd | |||
| 6663e998d9 | |||
| 6f19d1fe0e | |||
| 844f8e4e16 | |||
| ee3e113339 | |||
| c353c3c6c6 | |||
| 2765f35340 | |||
| 9fd0d09b5f | |||
| 60e1e52ec1 | |||
| cba09fc0f5 | |||
| be7d3a5f4b | |||
| 5436411178 | |||
| fbbeba5912 | |||
| d34a8a4807 | |||
| 002fc02b3d | |||
| 358e6e82a0 | |||
| f02f6b50c4 | |||
| 2a9a1aeeab | |||
| 1b79f34b22 | |||
| 7f6cfd364d | |||
| 274525ca25 | |||
| ec504e3324 | |||
| a661ffdb06 | |||
| 1d2f42dce9 | |||
| 2898592bb4 | |||
| f3b1f56fa8 | |||
| 795a5daade | |||
| a5eb0dc105 | |||
| edca6eb4db | |||
| 60583c5e35 | |||
| a5e28252cf | |||
| 77d8942589 | |||
| ac68f70e20 | |||
| 5419fe0925 | |||
| 25c92d6399 | |||
| 75dba6f39b | |||
| e2f735ad29 | |||
| 5bb1fe42dd | |||
| 195f8a9670 | |||
| d68287a9c7 | |||
| 12b6b797b8 | |||
| b1e881d4ff | |||
| f16aa8e32e | |||
| f07c28a7a1 | |||
| 4fa36164cf | |||
| fa014649e5 | |||
| c9fb27686d | |||
| c03d15f759 | |||
| 1e491dc593 | |||
| 42a884a14c | |||
| d31c040cb9 | |||
| b86832e72f | |||
| 53c91e67a1 | |||
| e94f3a53bd | |||
| 364843d277 | |||
| e253dcf2a5 | |||
| 28dc82f3ed | |||
| df44ee9504 | |||
| 6905bc736b | |||
| dbc930c756 | |||
| 60b0ef68a6 | |||
| 42b6308e26 | |||
| 3c0d4c8e14 | |||
| 8a89d2fcf6 | |||
| b05172fe96 | |||
| 49b2b978e6 | |||
| c847ac1fd4 | |||
| 0bd65d3489 | |||
| 4004d26304 | |||
| acb107af5e | |||
| 82569f4448 | |||
| 92aae586d4 | |||
| f980e8babf | |||
| 1e968d9cb0 | |||
| 2e57a2ee23 | |||
| 875ad66afc | |||
| 9a4361336d | |||
| 6cb46bc7f0 | |||
| b953dbd856 | |||
| ea664476d3 | |||
| db2f5dc407 | |||
| 5a826c67f6 | |||
| 9f6a7b1249 | |||
| e9022af338 | |||
| 579ce56cd7 | |||
| 5bec534faf | |||
| 598035d577 | |||
| 35b0d4a921 | |||
| c5c22bd56a | |||
| 9d85a04573 | |||
| 1fc7cca77c | |||
| c645a6b841 | |||
| 85a0b668c3 | |||
| f357e89d19 | |||
| 54e7a8a4c7 | |||
| e9c2a12f99 | |||
| 4eef02af5a | |||
| 74d3b5de09 | |||
| 6a75e64879 | |||
| be93e0e37b | |||
| c36e1a9c8e | |||
| 563525bd6b | |||
| adb3343a17 | |||
| e0253e1058 | |||
| 02698e9d36 | |||
| 1fb695f354 | |||
| a48c6c13a2 | |||
| 0a95bcd2cc | |||
| c65ff237ee | |||
| 42e6880820 | |||
| 14dc2fb1d8 | |||
| ee50ee2a9b | |||
| 1318e3590e | |||
| 0d151b948f | |||
| 36d6f1f95c | |||
| 0aa4118e89 | |||
| 37f7f62b77 | |||
| 9a295d73b6 | |||
| d8d3ddc140 | |||
| 25a4117e67 | |||
| 7a3dd2231b | |||
| 991f09905e | |||
| 8d1c5734c4 | |||
| d415db4106 | |||
| a0939c4fcc | |||
| 5f2c81804d | |||
| 279b218af1 | |||
| 7acc46475d | |||
| d5fdefa40a | |||
| 61d6220aa6 | |||
| c49168bba3 | |||
| 8e099b30da | |||
| 623bf2dddb | |||
| e2b8d999c0 | |||
| ba8d1587d4 | |||
| 33fb1c1e45 | |||
| 5c3c0588f1 | |||
| 1cc83bb1ac | |||
| 3ffa5908ca | |||
| a6ac272e7e | |||
| e374b073bc | |||
| 846e365e94 | |||
| 64fe4c171c | |||
| b23f70daf7 | |||
| 33c52c2a4a | |||
| aa1382b2ac | |||
| e83f0d3f26 | |||
| 2f692b9bff | |||
| 33bfc1d1ca | |||
| b0205dbe07 | |||
| 8968cbf49d | |||
| 08f78f8060 | |||
| 64dc621027 | |||
| acdc4244ec | |||
| c18de5dbd8 | |||
| c13455bfa3 | |||
| 19be6d5f94 | |||
| c234d6e997 | |||
| 66411317cb | |||
| b895b52fc1 | |||
| 17ddf26121 | |||
| a65e85a12e | |||
| 2da1800357 | |||
| d392b17ff1 | |||
| 623f2c4ea0 | |||
| 7761b6022b | |||
| 1b9e33a17f | |||
| f67b045f02 | |||
| e91c72a0d2 | |||
| dc17dc3f84 | |||
| 81a4da5da3 | |||
| 5506f42005 | |||
| 51b38c5b24 | |||
| 06a445fd4c | |||
| 4a7f543036 | |||
| f4e9523152 | |||
| c37ba54d27 | |||
| a307d5ca7e | |||
| e9ed0ec9cb | |||
| a8df05939c | |||
| d9ed0c2288 | |||
| 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 | |||
| 57ce8ee6ab | |||
| 7d8ec9f8be | |||
| 31869a5d6b | |||
| 1a908b2edd | |||
| c3fe7d4b58 | |||
| f42f861328 | |||
| d4c0b24eac | |||
| d155ac70f1 | |||
| 83bbdd71f3 | |||
| cf68591184 | |||
| 8171741ccb | |||
| 5120af1aba | |||
| 1356cb54a9 | |||
| fa71278070 | |||
| 5a91f3d51a | |||
| d56868c675 | |||
| 1fe2891e74 | |||
| 1d64be30d9 | |||
| b0550648bf | |||
| 8339cdc76a | |||
| 6c9c537ab1 | |||
| 04a7c6e920 | |||
| e1c1cc34bb | |||
| c583a52402 | |||
| d1290dc6cc | |||
| bbed056c73 | |||
| a1fc55b479 | |||
| ee0a050f65 | |||
| 36afc91dfa | |||
| 84b1ecff6f | |||
| a80406347c | |||
| f4a133c47a | |||
| 148c23e24d | |||
| 12ef219da6 | |||
| 966398d470 | |||
| 3588fddef2 | |||
| 4907a530c2 | |||
| eb8070b7c3 | |||
| e7313515c1 | |||
| 040b23ab27 | |||
| 496802c908 | |||
| 920b49d5a8 | |||
| 7692824bcf | |||
| aab3773a90 | |||
| e5f4d60888 | |||
| d20b4c4c94 | |||
| ebe287555c | |||
| 645541bcc7 | |||
| e865df16a8 | |||
| 18583434b1 | |||
| 2413da64a4 |
3
.github/CODEOWNERS
vendored
@ -71,7 +71,10 @@ src/EXTRA-COMMAND/group_ndx.* @akohlmey
|
|||||||
src/EXTRA-COMMAND/ndx_group.* @akohlmey
|
src/EXTRA-COMMAND/ndx_group.* @akohlmey
|
||||||
src/EXTRA-COMPUTE/compute_stress_mop*.* @RomainVermorel
|
src/EXTRA-COMPUTE/compute_stress_mop*.* @RomainVermorel
|
||||||
src/EXTRA-COMPUTE/compute_born_matrix.* @Bibobu @athomps
|
src/EXTRA-COMPUTE/compute_born_matrix.* @Bibobu @athomps
|
||||||
|
src/EXTRA-DUMP/dump_extxyz.* @fxcoudert
|
||||||
src/EXTRA-FIX/fix_deform_pressure.* @jtclemm
|
src/EXTRA-FIX/fix_deform_pressure.* @jtclemm
|
||||||
|
src/EXTRA-PAIR/pair_dispersion_d3.* @soniasolomoni @arthurfl
|
||||||
|
src/EXTRA-PAIR/d3_parameters.h @soniasolomoni @arthurfl
|
||||||
src/MISC/*_tracker.* @jtclemm
|
src/MISC/*_tracker.* @jtclemm
|
||||||
src/MC/fix_gcmc.* @athomps
|
src/MC/fix_gcmc.* @athomps
|
||||||
src/MC/fix_sgcmc.* @athomps
|
src/MC/fix_sgcmc.* @athomps
|
||||||
|
|||||||
235
.github/release_steps.md
vendored
@ -28,14 +28,14 @@ Create a 'next\_release' branch off 'develop' and make the following changes:
|
|||||||
..versionadded:: or ..versionchanged:: are missing and need to be
|
..versionadded:: or ..versionchanged:: are missing and need to be
|
||||||
added
|
added
|
||||||
|
|
||||||
Submit this pull request, rebase if needed. This is the last pull
|
Submit this pull request. This is the last pull request merged for the
|
||||||
request merged for the release and should not contain any other
|
release and should not contain any other changes. (Exceptions: this
|
||||||
changes. (Exceptions: this document, last minute trivial(!) changes).
|
document, last minute trivial(!) changes).
|
||||||
|
|
||||||
This PR shall not be merged before **all** pending tests have completed
|
This PR shall not be merged before **all** pending tests have completed
|
||||||
and cleared. We currently use a mix of automated tests running on
|
and cleared. We currently use a mix of automated tests running on
|
||||||
either Temple's Jenkins cluster or GitHub workflows. Those include time
|
either Temple's Jenkins cluster or GitHub workflows. Those include time
|
||||||
consuming tests not run on pull requests. If needed, a bugfix pull
|
consuming tests not run on pull requests. If needed, a bug-fix pull
|
||||||
request should be created and merged to clear all tests.
|
request should be created and merged to clear all tests.
|
||||||
|
|
||||||
### Create release on GitHub
|
### Create release on GitHub
|
||||||
@ -56,7 +56,7 @@ git pull
|
|||||||
git checkout release
|
git checkout release
|
||||||
git pull
|
git pull
|
||||||
git merge --ff-only develop
|
git merge --ff-only develop
|
||||||
git tag -s -m "LAMMPS feature release 19 November 2024" patch_19Nov2024
|
git tag -s -m "LAMMPS feature release 4 February 2025" patch_4Feb2025
|
||||||
git push git@github.com:lammps/lammps.git --tags develop release
|
git push git@github.com:lammps/lammps.git --tags develop release
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -77,7 +77,7 @@ release page with a summary of all the changes included and references
|
|||||||
to the pull requests they were merged from or check the existing draft
|
to the pull requests they were merged from or check the existing draft
|
||||||
for any necessary changes from pull requests that were merged but are
|
for any necessary changes from pull requests that were merged but are
|
||||||
not listed. Then select the applied tag for the release in the "Choose
|
not listed. Then select the applied tag for the release in the "Choose
|
||||||
a tag" dropdown list. Go to the bottom of the list and select the "Set
|
a tag" drop-down list. Go to the bottom of the list and select the "Set
|
||||||
as pre-release" checkbox. The "Set as the latest release" button is
|
as pre-release" checkbox. The "Set as the latest release" button is
|
||||||
reserved for stable releases and updates to them.
|
reserved for stable releases and updates to them.
|
||||||
|
|
||||||
@ -87,67 +87,197 @@ you can return to edit the release page and publish it.
|
|||||||
|
|
||||||
### Prepare pre-compiled packages, update packages to GitHub
|
### Prepare pre-compiled packages, update packages to GitHub
|
||||||
|
|
||||||
Build a fully static LAMMPS installation using a musl-libc
|
|
||||||
cross-compiler, install into a lammps-static folder, and create a
|
|
||||||
tarball called lammps-linux-x86_64-19Nov2024.tar.gz (or using a
|
|
||||||
corresponding date with a future release) from the lammps-static folder.
|
|
||||||
A suitable build environment is provided with the
|
A suitable build environment is provided with the
|
||||||
https://download.lammps.org/static/fedora37_musl.sif container image.
|
https://download.lammps.org/static/fedora41_musl_mingw.sif container
|
||||||
|
image. The corresponding container build definition file is maintained
|
||||||
|
in the tools/singularity folder of the LAMMPS source distribution.
|
||||||
|
|
||||||
|
#### Fully portable static Linux x86_64 non-MPI binaries
|
||||||
|
|
||||||
|
The following commands use the Fedora container to build a fully static
|
||||||
|
LAMMPS installation using a musl-libc cross-compiler, install it into a
|
||||||
|
`lammps-static` folder, and create a tarball called
|
||||||
|
`lammps-linux-x86_64-4Feb2025.tar.gz` (or using a corresponding date
|
||||||
|
with a future release) from the `lammps-static` folder.
|
||||||
|
|
||||||
``` sh
|
``` sh
|
||||||
rm -rf release-packages
|
rm -rf release-packages
|
||||||
mkdir release-packages
|
mkdir release-packages
|
||||||
cd release-packages
|
cd release-packages
|
||||||
wget https://download.lammps.org/static/fedora41_musl.sif
|
wget https://download.lammps.org/static/fedora41_musl_mingw.sif
|
||||||
apptainer shell fedora41_musl.sif
|
apptainer shell fedora41_musl_mingw.sif
|
||||||
git clone -b release --depth 10 https://github.com/lammps/lammps.git lammps-release
|
git clone -b release --depth 10 https://github.com/lammps/lammps.git lammps-release
|
||||||
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 -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 all
|
||||||
cmake --build build-release --target install
|
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-19Nov2024.tar.gz lammps-static
|
tar -czvvf ../lammps-linux-x86_64-4Feb2025.tar.gz lammps-static
|
||||||
exit # fedora 41 container
|
exit # fedora 41 container
|
||||||
|
cd ..
|
||||||
```
|
```
|
||||||
|
|
||||||
The resulting tar archive can be uploaded to the GitHub release page with:
|
The resulting tar archive can be uploaded to the GitHub release page with:
|
||||||
|
|
||||||
```
|
``` sh
|
||||||
gh release upload patch_19Nov2024 lammps-linux-x86_64-19Nov2024.tar.gz
|
gh release upload patch_4Feb2025 lammps-linux-x86_64-4Feb2025.tar.gz
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Linux x86_64 Flatpak bundle with GUI included
|
||||||
|
|
||||||
Make sure you have the `flatpak` and `flatpak-builder` packages
|
Make sure you have the `flatpak` and `flatpak-builder` packages
|
||||||
installed locally (they cannot be used from the container) and build a
|
installed locally (they require binaries that run with elevated
|
||||||
|
privileges and thus cannot be used from the container) and build a
|
||||||
LAMMPS and LAMMPS-GUI flatpak bundle in the `release-packages` folder
|
LAMMPS and LAMMPS-GUI flatpak bundle in the `release-packages` folder
|
||||||
with:
|
with:
|
||||||
|
|
||||||
``` sh
|
``` sh
|
||||||
|
cd release-packages
|
||||||
flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||||
flatpak-builder --force-clean --verbose --repo=$PWD/flatpak-repo --install-deps-from=flathub --state-dir=$PWD --user --ccache --default-branch=release flatpak-build lammps-release/tools/lammps-gui/org.lammps.lammps-gui.yml
|
flatpak-builder --force-clean --verbose --repo=$PWD/flatpak-repo --install-deps-from=flathub --state-dir=$PWD --user --ccache --default-branch=release flatpak-build lammps-release/tools/lammps-gui/org.lammps.lammps-gui.yml
|
||||||
flatpak build-bundle --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo --verbose $PWD/flatpak-repo LAMMPS-Linux-x86_64-GUI-19Nov2024.flatpak org.lammps.lammps-gui release
|
flatpak build-bundle --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo --verbose $PWD/flatpak-repo ../LAMMPS-Linux-x86_64-GUI-4Feb2025.flatpak org.lammps.lammps-gui release
|
||||||
|
cd ..
|
||||||
```
|
```
|
||||||
|
|
||||||
The resulting flatpak bundle file can be uploaded to the GitHub release page with:
|
The resulting flatpak bundle file can be uploaded to the GitHub release page with:
|
||||||
|
|
||||||
```
|
``` sh
|
||||||
gh release upload patch_19Nov2024 LAMMPS-Linux-x86_64-GUI-19Nov2024.flatpak
|
gh release upload patch_4Feb2025 LAMMPS-Linux-x86_64-GUI-4Feb2025.flatpak
|
||||||
```
|
```
|
||||||
|
|
||||||
Also build serial executable packages that also include LAMMPS-GUI for
|
#### LAMMPS Source tarball
|
||||||
Linux, macOS, and Windows, and upload them to the GitHub release.
|
|
||||||
|
|
||||||
Clean up:
|
The container for the static binary can also be used to prepare the source
|
||||||
|
tarball including the HTML and PDF manual (this is currently done automatically
|
||||||
|
when the releases is created and the tarball uploaded to https://download.lammps.org/tars/).
|
||||||
|
The steps are as follows:
|
||||||
|
|
||||||
|
``` sh
|
||||||
|
cd release-packages
|
||||||
|
apptainer shell fedora41_musl_mingw.sif
|
||||||
|
cd lammps-release
|
||||||
|
rm -f ../release.tar*
|
||||||
|
git archive --output=../release.tar --prefix=lammps-4Feb2025/ HEAD
|
||||||
|
cd doc
|
||||||
|
make clean-all
|
||||||
|
make html pdf
|
||||||
|
tar -rf ../../release.tar --transform 's,^,lammps-4Feb2025/doc/,' html Manual.pdf
|
||||||
|
gzip -9v ../../release.tar
|
||||||
|
mv ../../release.tar.gz ../../lammps-src-4Feb2025.tar.gz
|
||||||
|
exit # fedora41 container
|
||||||
|
cd ..
|
||||||
|
```
|
||||||
|
|
||||||
|
The resulting source tarball can be uploaded to the GitHub release page with:
|
||||||
|
|
||||||
|
``` sh
|
||||||
|
gh release upload patch_4Feb2025 lammps-src-4Feb2025.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Build Windows Installer Packages with MinGW Linux-to-Windows Cross-compiler
|
||||||
|
|
||||||
|
The various Windows installer packages can also be built with
|
||||||
|
apptainer container image.
|
||||||
|
|
||||||
|
``` sh
|
||||||
|
cd release-packages
|
||||||
|
apptainer shell fedora41_musl_mingw.sif
|
||||||
|
git clone --depth 10 https://github.com/lammps/lammps-packages.git lammps-packages
|
||||||
|
cd lammps-packages/mingw-cross
|
||||||
|
ln -sf ../../lammps-release lammps
|
||||||
|
./buildall.sh release >& mk.log & less +F mk.log
|
||||||
|
```
|
||||||
|
|
||||||
|
The installer with the GUI included can be uploaded to the GitHub release page with:
|
||||||
|
|
||||||
|
``` sh
|
||||||
|
ln -sf LAMMPS-64bit-GUI-4Feb2025.exe LAMMPS-Win10-64bit-GUI-4Feb2025.exe
|
||||||
|
gh release upload patch_4Feb2025 LAMMPS-Win10-64bit-GUI-4Feb2025.exe
|
||||||
|
```
|
||||||
|
|
||||||
|
The symbolic link is used to have a consistent naming scheme for the packages
|
||||||
|
attached to the GitHub release page.
|
||||||
|
|
||||||
|
#### Clean up:
|
||||||
|
|
||||||
``` sh
|
``` sh
|
||||||
cd ..
|
cd ..
|
||||||
rm -r release-packages
|
rm -r release-packages
|
||||||
```
|
```
|
||||||
|
|
||||||
TODO:
|
#### Build Multi-arch App-bundle with GUI for macOS
|
||||||
- add detailed commands for building GUI packages on Ubuntu 20.04LTS (move to 22.04LTS?),
|
|
||||||
macOS, and Windows cross-compiler and upload to GitHub
|
|
||||||
- build all Windows cross-compiled installer packages using lammps-packages repo
|
|
||||||
|
|
||||||
### Update download website
|
Building app-bundles for macOS is not as easily automated and portable
|
||||||
|
as some of the other steps. It requires a machine actually running
|
||||||
|
macOS. In that machine the Xcode compiler package needs to be
|
||||||
|
installed. This also includes tools for building and manipulating disk
|
||||||
|
images. This compiler supports building executables for both, the
|
||||||
|
x86_64 and the arm64 architectures. This requires building with CMake
|
||||||
|
and using the CMake settings:
|
||||||
|
|
||||||
|
``` sh
|
||||||
|
-D CMAKE_OSX_ARCHITECTURES=arm64;x86_64
|
||||||
|
-D CMAKE_OSX_DEPLOYMENT_TARGET=11.0
|
||||||
|
```
|
||||||
|
|
||||||
|
This will add the compiler flags `-arch arm64 -arch x86_64
|
||||||
|
-mmacosx-version-min=11.0` and thus produce object for both
|
||||||
|
architectures and support for macOS versions back to version 11 (aka Big
|
||||||
|
Sur). With these settings the following libraries should be compiled
|
||||||
|
and installed (e.g. to `$HOME/.local`) as static libraries only:
|
||||||
|
- libomp taken from the LLVM/Clang source distribution (to support OpenMP)
|
||||||
|
- jpeg
|
||||||
|
- zlib
|
||||||
|
- png
|
||||||
|
- Qt (for LAMMPS-GUI)
|
||||||
|
|
||||||
|
When configuring LAMMPS the `cmake/presets/clang.cmake` should be used
|
||||||
|
and as many packages as possible enabled. For LAMMPS-GUI, MPI should be
|
||||||
|
disabled with `-D BUILD_MPI=OFF` and LAMMPS-GUI enabled with
|
||||||
|
`-D BUILD_LAMMPS_GUI=ON`. If the CMake configuration is successful,
|
||||||
|
settings for building a macOS app-bundle are enabled and with `cmake
|
||||||
|
--build build --target dmg` extra steps will be executed that will build
|
||||||
|
a macOS application installer image under the name
|
||||||
|
`LAMMPS_GUI-macOS-multiarch-4Feb2025.dmg`
|
||||||
|
|
||||||
|
The application image can be uploaded to the GitHub release page with:
|
||||||
|
|
||||||
|
``` sh
|
||||||
|
ln -sf LAMMPS_GUI-macOS-multiarch-4Feb2025.dmg LAMMPS-macOS-multiarch-GUI-4Feb2025.dmg
|
||||||
|
gh release upload patch_4Feb2025 LAMMPS-macOS-multiarch-GUI-4Feb2025.dmg
|
||||||
|
```
|
||||||
|
|
||||||
|
The symbolic link is used to have a consistent naming scheme for the packages
|
||||||
|
attached to the GitHub release page.
|
||||||
|
|
||||||
|
We are currently building the application images on macOS 12 (aka Monterey).
|
||||||
|
|
||||||
|
#### Build Linux x86_64 binary tarball with GUI on Ubuntu 20.04LTS
|
||||||
|
|
||||||
|
While the flatpak Linux version uses portable runtime libraries provided
|
||||||
|
by the flatpak environment, we also build regular Linux executables that
|
||||||
|
use a wrapper script and matching shared libraries in a tarball. To be
|
||||||
|
compatible with many Linux distributions, one has to build this on a
|
||||||
|
very old Linux distribution, since most Linux system libraries are
|
||||||
|
usually backward compatible but not forward compatible. This is
|
||||||
|
currently done on an Ubuntu 20.04LTS system. Once LAMMPS moves to
|
||||||
|
require CMake 3.20 and C++17, we will have to move to Ubuntu 22.04LTS.
|
||||||
|
This installation (either on a real or a virtual machine) should have
|
||||||
|
the packages installed that are indicated in
|
||||||
|
`tools/singularity/ubuntu20.04.def` plus Qt version 5.x with development
|
||||||
|
headers, so that LAMMPS-GUI can be compiled.
|
||||||
|
|
||||||
|
Also the building of the binary tarball and setup of the bundled
|
||||||
|
libraries and wrapper scripts is automated and can executed with `cmake
|
||||||
|
--build build --target tgz`. This should produce a file
|
||||||
|
`LAMMPS_GUI-Linux-amd64-4Feb2025.tar.gz` which can be uploaded to the
|
||||||
|
GitHub release page with:
|
||||||
|
|
||||||
|
``` sh
|
||||||
|
ln -sf LAMMPS_GUI-Linux-amd64-4Feb2025.tar.gz LAMMPS-Linux-x86_64-GUI-4Feb2025.tar.gz
|
||||||
|
gh release upload patch_4Feb2025 LAMMPS-Linux-x86_64-GUI-4Feb2025.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update download page on LAMMPS website
|
||||||
|
|
||||||
Check out the LAMMPS website repo
|
Check out the LAMMPS website repo
|
||||||
https://github.com/lammps/lammps-website.git and edit the file
|
https://github.com/lammps/lammps-website.git and edit the file
|
||||||
@ -156,7 +286,7 @@ html` and review `html/download.html` Then add and commit to git and
|
|||||||
push the changes to GitHub. The Temple Jenkis cluster will
|
push the changes to GitHub. The Temple Jenkis cluster will
|
||||||
automatically update https://www.lammps.org/download.html accordingly.
|
automatically update https://www.lammps.org/download.html accordingly.
|
||||||
|
|
||||||
Notify Steve of the release so he can update `src/bug.txt` on the
|
Also notify Steve of the release so he can update `src/bug.txt` on the
|
||||||
website from the available release notes.
|
website from the available release notes.
|
||||||
|
|
||||||
## LAMMPS Stable Release
|
## LAMMPS Stable Release
|
||||||
@ -194,6 +324,47 @@ At this point it should be possible to do a fast-forward merge of
|
|||||||
|
|
||||||
### Push branches and tags
|
### Push branches and tags
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## LAMMPS Stable Update Release
|
## LAMMPS Stable Update Release
|
||||||
|
|
||||||
|
After making a stable release, bugfixes from the 'develop' branch
|
||||||
|
are selectively backported to the 'maintenance' branch. This is
|
||||||
|
done with "git cherry-pick \<commit hash\>' wherever possible.
|
||||||
|
The LAMMPS\_UPDATE define in "src/version.h" is set to "Maintenance".
|
||||||
|
|
||||||
|
### Prerequesites
|
||||||
|
|
||||||
|
When a sufficient number of bugfixes has accumulated or an urgent
|
||||||
|
or important bugfix needs to be distributed a new stable update
|
||||||
|
release is made. To make this publicly visible a pull request
|
||||||
|
is submitted that will merge 'maintenance' into 'stable'. Before
|
||||||
|
merging, set LAMMPS\_UPDATE in "src/version.h" to "Update #" with
|
||||||
|
"#" indicating the update count (1, 2, and so on).
|
||||||
|
Also draft suitable release notes under https://github.com/lammps/lammps/releases
|
||||||
|
|
||||||
|
### Fast-forward merge of 'maintenance' into 'stable', apply tag, and publish
|
||||||
|
|
||||||
|
Do a fast-forward merge of 'maintenance' to 'stable' and then
|
||||||
|
apply the stable\_DMmmYYYY\_update# tag and push branch and tag
|
||||||
|
to GitHub. The corresponding pull request will be automatically
|
||||||
|
closed. Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
git checkout maintenance
|
||||||
|
git pull
|
||||||
|
git checkout stable
|
||||||
|
git pull
|
||||||
|
git merge --ff-only maintenance
|
||||||
|
git tag -s -m 'Update 2 for Stable LAMMPS version 29 August 2024' stable_29Aug2024_update2
|
||||||
|
git push git@github.com:lammps/lammps.git --tags maintenance stable
|
||||||
|
```
|
||||||
|
|
||||||
|
Associate draft release notes with new tag and publish as "latest release".
|
||||||
|
|
||||||
|
On https://ci.lammps.org/ go to "dev", "stable" and manually execute
|
||||||
|
the "update\_release" task. This will update https://docs.lammps.org/stable
|
||||||
|
and prepare a stable tarball.
|
||||||
|
|
||||||
|
### Build and upload binary packages and source tarball to GitHub
|
||||||
|
|
||||||
|
The build procedure is the same as for the feature releases, only
|
||||||
|
that packages are built from the 'stable' branch.
|
||||||
|
|||||||
23
.github/workflows/check-cpp23.yml
vendored
@ -1,4 +1,4 @@
|
|||||||
# GitHub action to build LAMMPS on Linux with gcc and C++23
|
# GitHub action to build LAMMPS on Linux with gcc or clang and C++23
|
||||||
name: "Check for C++23 Compatibility"
|
name: "Check for C++23 Compatibility"
|
||||||
|
|
||||||
on:
|
on:
|
||||||
@ -11,11 +11,19 @@ on:
|
|||||||
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.event_name }}-${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: ${{github.event_name == 'pull_request'}}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Build with C++23 support enabled
|
name: Build with C++23 support enabled
|
||||||
if: ${{ github.repository == 'lammps/lammps' }}
|
if: ${{ github.repository == 'lammps/lammps' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
max-parallel: 2
|
||||||
|
matrix:
|
||||||
|
idx: [ gcc, clang ]
|
||||||
env:
|
env:
|
||||||
CCACHE_DIR: ${{ github.workspace }}/.ccache
|
CCACHE_DIR: ${{ github.workspace }}/.ccache
|
||||||
|
|
||||||
@ -29,8 +37,11 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y ccache \
|
sudo apt-get install -y ccache \
|
||||||
libeigen3-dev \
|
clang \
|
||||||
libcurl4-openssl-dev \
|
libcurl4-openssl-dev \
|
||||||
|
libeigen3-dev \
|
||||||
|
libfftw3-dev \
|
||||||
|
libomp-dev \
|
||||||
mold \
|
mold \
|
||||||
mpi-default-bin \
|
mpi-default-bin \
|
||||||
mpi-default-dev \
|
mpi-default-dev \
|
||||||
@ -44,8 +55,8 @@ jobs:
|
|||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: ${{ env.CCACHE_DIR }}
|
path: ${{ env.CCACHE_DIR }}
|
||||||
key: linux-cpp23-ccache-${{ github.sha }}
|
key: linux-cpp23-ccache-${{ matrix.idx }}-${{ github.sha }}
|
||||||
restore-keys: linux-cpp23-ccache-
|
restore-keys: linux-cpp23-ccache-${{ matrix.idx }}
|
||||||
|
|
||||||
- name: Building LAMMPS via CMake
|
- name: Building LAMMPS via CMake
|
||||||
shell: bash
|
shell: bash
|
||||||
@ -58,14 +69,14 @@ jobs:
|
|||||||
cmake -S cmake -B build \
|
cmake -S cmake -B build \
|
||||||
-C cmake/presets/most.cmake \
|
-C cmake/presets/most.cmake \
|
||||||
-C cmake/presets/kokkos-openmp.cmake \
|
-C cmake/presets/kokkos-openmp.cmake \
|
||||||
|
-C cmake/presets/${{ matrix.idx }}.cmake \
|
||||||
-D CMAKE_CXX_STANDARD=23 \
|
-D CMAKE_CXX_STANDARD=23 \
|
||||||
-D CMAKE_CXX_COMPILER=g++ \
|
|
||||||
-D CMAKE_C_COMPILER=gcc \
|
|
||||||
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||||
-D CMAKE_C_COMPILER_LAUNCHER=ccache \
|
-D CMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||||
-D CMAKE_BUILD_TYPE=Debug \
|
-D CMAKE_BUILD_TYPE=Debug \
|
||||||
-D CMAKE_CXX_FLAGS_DEBUG="-Og -g" \
|
-D CMAKE_CXX_FLAGS_DEBUG="-Og -g" \
|
||||||
-D DOWNLOAD_POTENTIALS=off \
|
-D DOWNLOAD_POTENTIALS=off \
|
||||||
|
-D FFT=KISS \
|
||||||
-D BUILD_MPI=on \
|
-D BUILD_MPI=on \
|
||||||
-D BUILD_SHARED_LIBS=on \
|
-D BUILD_SHARED_LIBS=on \
|
||||||
-D BUILD_TOOLS=off \
|
-D BUILD_TOOLS=off \
|
||||||
|
|||||||
2
.github/workflows/check-vla.yml
vendored
@ -77,7 +77,7 @@ jobs:
|
|||||||
-D PKG_MDI=on \
|
-D PKG_MDI=on \
|
||||||
-D PKG_MANIFOLD=on \
|
-D PKG_MANIFOLD=on \
|
||||||
-D PKG_ML-PACE=on \
|
-D PKG_ML-PACE=on \
|
||||||
-D PKG_ML-RANN=off \
|
-D PKG_ML-RANN=on \
|
||||||
-D PKG_MOLFILE=on \
|
-D PKG_MOLFILE=on \
|
||||||
-D PKG_RHEO=on \
|
-D PKG_RHEO=on \
|
||||||
-D PKG_PTM=on \
|
-D PKG_PTM=on \
|
||||||
|
|||||||
16
README
@ -23,17 +23,21 @@ more information about the code and its uses.
|
|||||||
The LAMMPS distribution includes the following files and directories:
|
The LAMMPS distribution includes the following files and directories:
|
||||||
|
|
||||||
README this file
|
README this file
|
||||||
LICENSE the GNU General Public License (GPL)
|
LICENSE the GNU General Public License (GPLv2)
|
||||||
bench benchmark problems
|
CITATION.cff Citation information for LAMMPS in CFF format
|
||||||
|
bench benchmark inputs
|
||||||
cmake CMake build files
|
cmake CMake build files
|
||||||
doc documentation
|
doc documentation
|
||||||
examples simple test problems
|
examples example inputs for many LAMMPS commands
|
||||||
fortran Fortran wrapper for LAMMPS
|
fortran Fortran 2003 module for LAMMPS
|
||||||
lib additional provided or external libraries
|
lib additional provided or external libraries
|
||||||
potentials interatomic potential files
|
potentials interatomic potential files
|
||||||
python Python wrappers for LAMMPS
|
python Python module for LAMMPS
|
||||||
src source files
|
src source files
|
||||||
|
third_party Copies of thirdparty software bundled with LAMMPS
|
||||||
tools pre- and post-processing tools
|
tools pre- and post-processing tools
|
||||||
|
unittest test programs for use with CTest
|
||||||
|
.github Git and GitHub related files and tools
|
||||||
|
|
||||||
Point your browser at any of these files to get started:
|
Point your browser at any of these files to get started:
|
||||||
|
|
||||||
@ -42,6 +46,8 @@ https://docs.lammps.org/Intro.html hi-level introduction
|
|||||||
https://docs.lammps.org/Build.html how to build LAMMPS
|
https://docs.lammps.org/Build.html how to build LAMMPS
|
||||||
https://docs.lammps.org/Run_head.html how to run LAMMPS
|
https://docs.lammps.org/Run_head.html how to run LAMMPS
|
||||||
https://docs.lammps.org/Commands_all.html Table of available commands
|
https://docs.lammps.org/Commands_all.html Table of available commands
|
||||||
|
https://docs.lammps.org/Howto.html Short tutorials and HowTo discussions
|
||||||
|
https://docs.lammps.org/Errors.html How to interpret and debug errors
|
||||||
https://docs.lammps.org/Library.html LAMMPS library interfaces
|
https://docs.lammps.org/Library.html LAMMPS library interfaces
|
||||||
https://docs.lammps.org/Modify.html how to modify and extend LAMMPS
|
https://docs.lammps.org/Modify.html how to modify and extend LAMMPS
|
||||||
https://docs.lammps.org/Developer.html LAMMPS developer info
|
https://docs.lammps.org/Developer.html LAMMPS developer info
|
||||||
|
|||||||
@ -3,10 +3,11 @@
|
|||||||
# CMake build system
|
# CMake build system
|
||||||
# This file is part of LAMMPS
|
# This file is part of LAMMPS
|
||||||
cmake_minimum_required(VERSION 3.16)
|
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)
|
||||||
|
cmake_policy(SET CMP0048 NEW)
|
||||||
|
endif()
|
||||||
# set policy to silence warnings about ignoring <PackageName>_ROOT but use it
|
# set policy to silence warnings about ignoring <PackageName>_ROOT but use it
|
||||||
if(POLICY CMP0074)
|
if(POLICY CMP0074)
|
||||||
cmake_policy(SET CMP0074 NEW)
|
cmake_policy(SET CMP0074 NEW)
|
||||||
@ -27,7 +28,10 @@ endif()
|
|||||||
|
|
||||||
########################################
|
########################################
|
||||||
|
|
||||||
project(lammps CXX)
|
project(lammps
|
||||||
|
DESCRIPTION "The LAMMPS Molecular Dynamics Simulator"
|
||||||
|
HOMEPAGE_URL "https://www.lammps.org"
|
||||||
|
LANGUAGES CXX C)
|
||||||
set(SOVERSION 0)
|
set(SOVERSION 0)
|
||||||
get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
|
|
||||||
@ -44,6 +48,7 @@ set(LAMMPS_DOC_DIR ${LAMMPS_DIR}/doc)
|
|||||||
set(LAMMPS_TOOLS_DIR ${LAMMPS_DIR}/tools)
|
set(LAMMPS_TOOLS_DIR ${LAMMPS_DIR}/tools)
|
||||||
set(LAMMPS_PYTHON_DIR ${LAMMPS_DIR}/python)
|
set(LAMMPS_PYTHON_DIR ${LAMMPS_DIR}/python)
|
||||||
set(LAMMPS_POTENTIALS_DIR ${LAMMPS_DIR}/potentials)
|
set(LAMMPS_POTENTIALS_DIR ${LAMMPS_DIR}/potentials)
|
||||||
|
set(LAMMPS_THIRDPARTY_DIR ${LAMMPS_DIR}/third_party)
|
||||||
|
|
||||||
set(LAMMPS_DOWNLOADS_URL "https://download.lammps.org" CACHE STRING "Base URL for LAMMPS downloads")
|
set(LAMMPS_DOWNLOADS_URL "https://download.lammps.org" CACHE STRING "Base URL for LAMMPS downloads")
|
||||||
set(LAMMPS_POTENTIALS_URL "${LAMMPS_DOWNLOADS_URL}/potentials")
|
set(LAMMPS_POTENTIALS_URL "${LAMMPS_DOWNLOADS_URL}/potentials")
|
||||||
@ -105,46 +110,35 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
|||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Qrestrict")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Qrestrict")
|
||||||
endif()
|
endif()
|
||||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4)
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4)
|
||||||
set(CMAKE_TUNE_DEFAULT "/QxCOMMON-AVX512")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /QxCOMMON-AVX512")
|
||||||
else()
|
else()
|
||||||
set(CMAKE_TUNE_DEFAULT "/QxHost")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /QxHost")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -restrict")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -restrict")
|
||||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4)
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4)
|
||||||
set(CMAKE_TUNE_DEFAULT "-xCOMMON-AVX512")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xCOMMON-AVX512")
|
||||||
else()
|
else()
|
||||||
set(CMAKE_TUNE_DEFAULT "-xHost -fp-model fast=2 -no-prec-div -qoverride-limits -diag-disable=10441 -diag-disable=11074 -diag-disable=11076 -diag-disable=2196")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHost -fp-model fast=2 -no-prec-div -qoverride-limits -diag-disable=10441 -diag-disable=11074 -diag-disable=11076 -diag-disable=2196")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# silence excessive warnings for new Intel Compilers
|
# silence excessive warnings for new Intel Compilers
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
|
||||||
set(CMAKE_TUNE_DEFAULT "-fp-model precise -Wno-tautological-constant-compare -Wno-unused-command-line-argument")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -Wno-tautological-constant-compare -Wno-unused-command-line-argument")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# silence excessive warnings for PGI/NVHPC compilers
|
# silence excessive warnings for PGI/NVHPC compilers
|
||||||
if((CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_CXX_COMPILER_ID STREQUAL "PGI"))
|
if((CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_CXX_COMPILER_ID STREQUAL "PGI"))
|
||||||
set(CMAKE_TUNE_DEFAULT "-Minform=severe")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Minform=severe")
|
||||||
endif()
|
|
||||||
|
|
||||||
# this hack is required to compile fmt lib with CrayClang version 15.0.2
|
|
||||||
# CrayClang is only directly recognized by version 3.28 and later
|
|
||||||
if(CMAKE_VERSION VERSION_LESS 3.28)
|
|
||||||
get_filename_component(_exe "${CMAKE_CXX_COMPILER}" NAME)
|
|
||||||
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (_exe STREQUAL "crayCC"))
|
|
||||||
set(CMAKE_TUNE_DEFAULT "-DFMT_STATIC_THOUSANDS_SEPARATOR")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang")
|
|
||||||
set(CMAKE_TUNE_DEFAULT "-DFMT_STATIC_THOUSANDS_SEPARATOR")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# silence nvcc warnings
|
# silence nvcc warnings
|
||||||
if((PKG_KOKKOS) AND (Kokkos_ENABLE_CUDA) AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))
|
if((PKG_KOKKOS) AND (Kokkos_ENABLE_CUDA) AND NOT
|
||||||
set(CMAKE_TUNE_DEFAULT "${CMAKE_TUNE_DEFAULT}" "-Xcudafe --diag_suppress=unrecognized_pragma,--diag_suppress=128")
|
((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
|
||||||
|
OR (CMAKE_CXX_COMPILER_ID STREQUAL "XLClang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang")))
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xcudafe --diag_suppress=unrecognized_pragma,--diag_suppress=128")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# we *require* C++11 without extensions but prefer C++17.
|
# we *require* C++11 without extensions but prefer C++17.
|
||||||
@ -159,9 +153,6 @@ endif()
|
|||||||
if(CMAKE_CXX_STANDARD LESS 11)
|
if(CMAKE_CXX_STANDARD LESS 11)
|
||||||
message(FATAL_ERROR "C++ standard must be set to at least 11")
|
message(FATAL_ERROR "C++ standard must be set to at least 11")
|
||||||
endif()
|
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))
|
if(PKG_KOKKOS AND (CMAKE_CXX_STANDARD LESS 17))
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
endif()
|
endif()
|
||||||
@ -206,10 +197,14 @@ if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND BUILD_SHARED_LIBS)
|
|||||||
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# do not include the (obsolete) MPI C++ bindings which makes for leaner object files
|
||||||
|
# and avoids namespace conflicts. Put this early to increase its visbility.
|
||||||
|
set(MPI_CXX_SKIP_MPICXX TRUE CACHE BOOL "Skip MPI C++ Bindings" FORCE)
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# User input options #
|
# User input options #
|
||||||
########################################################################
|
########################################################################
|
||||||
# backward compatibility with CMake before 3.12 and older LAMMPS documentation
|
# backward compatibility with older LAMMPS documentation
|
||||||
if (PYTHON_EXECUTABLE)
|
if (PYTHON_EXECUTABLE)
|
||||||
set(Python_EXECUTABLE "${PYTHON_EXECUTABLE}")
|
set(Python_EXECUTABLE "${PYTHON_EXECUTABLE}")
|
||||||
endif()
|
endif()
|
||||||
@ -225,6 +220,12 @@ if(DEFINED ENV{VIRTUAL_ENV} AND NOT Python_EXECUTABLE)
|
|||||||
" Setting Python interpreter to: ${Python_EXECUTABLE}")
|
" Setting Python interpreter to: ${Python_EXECUTABLE}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
find_package(Python COMPONENTS Interpreter QUIET)
|
||||||
|
# NOTE: RHEL 8.0 and Ubuntu 18.04LTS ship with Python 3.6, Python 3.8 was EOL in 2024
|
||||||
|
if(Python_VERSION VERSION_LESS 3.6)
|
||||||
|
message(FATAL_ERROR "LAMMPS requires Python 3.6 or later")
|
||||||
|
endif()
|
||||||
|
|
||||||
set(LAMMPS_MACHINE "" CACHE STRING "Suffix to append to lmp binary (WON'T enable any features automatically")
|
set(LAMMPS_MACHINE "" CACHE STRING "Suffix to append to lmp binary (WON'T enable any features automatically")
|
||||||
mark_as_advanced(LAMMPS_MACHINE)
|
mark_as_advanced(LAMMPS_MACHINE)
|
||||||
if(LAMMPS_MACHINE)
|
if(LAMMPS_MACHINE)
|
||||||
@ -237,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_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF)
|
||||||
option(BUILD_LAMMPS_GUI "Build and install the LAMMPS GUI" 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 ALL_SOURCES CONFIGURE_DEPENDS ${LAMMPS_SOURCE_DIR}/[^.]*.cpp)
|
||||||
file(GLOB MAIN_SOURCES CONFIGURE_DEPENDS ${LAMMPS_SOURCE_DIR}/main.cpp)
|
file(GLOB MAIN_SOURCES CONFIGURE_DEPENDS ${LAMMPS_SOURCE_DIR}/main.cpp)
|
||||||
list(REMOVE_ITEM ALL_SOURCES ${MAIN_SOURCES})
|
list(REMOVE_ITEM ALL_SOURCES ${MAIN_SOURCES})
|
||||||
@ -270,6 +262,7 @@ option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF)
|
|||||||
set(STANDARD_PACKAGES
|
set(STANDARD_PACKAGES
|
||||||
ADIOS
|
ADIOS
|
||||||
AMOEBA
|
AMOEBA
|
||||||
|
APIP
|
||||||
ASPHERE
|
ASPHERE
|
||||||
ATC
|
ATC
|
||||||
AWPMD
|
AWPMD
|
||||||
@ -362,27 +355,16 @@ foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES})
|
|||||||
option(PKG_${PKG} "Build ${PKG} Package" OFF)
|
option(PKG_${PKG} "Build ${PKG} Package" OFF)
|
||||||
endforeach()
|
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
|
# packages with special compiler needs or external libs
|
||||||
######################################################
|
######################################################
|
||||||
target_include_directories(lammps PUBLIC $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}>)
|
target_include_directories(lammps PUBLIC $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}>)
|
||||||
|
target_include_directories(lammps PUBLIC $<BUILD_INTERFACE:${LAMMPS_THIRDPARTY_DIR}>)
|
||||||
|
|
||||||
if(PKG_ADIOS)
|
if(PKG_ADIOS)
|
||||||
# The search for ADIOS2 must come before MPI because
|
# The search for ADIOS2 must come before MPI because
|
||||||
# it includes its own MPI search with the latest FindMPI.cmake
|
# it includes its own MPI search with the latest FindMPI.cmake
|
||||||
# script that defines the MPI::MPI_C target
|
# script that defines the MPI::MPI_C target
|
||||||
enable_language(C)
|
|
||||||
find_package(ADIOS2 REQUIRED)
|
find_package(ADIOS2 REQUIRED)
|
||||||
if(BUILD_MPI)
|
if(BUILD_MPI)
|
||||||
if(NOT ADIOS2_HAVE_MPI)
|
if(NOT ADIOS2_HAVE_MPI)
|
||||||
@ -397,21 +379,18 @@ if(PKG_ADIOS)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT CMAKE_CROSSCOMPILING)
|
if(NOT CMAKE_CROSSCOMPILING)
|
||||||
find_package(MPI QUIET)
|
find_package(MPI QUIET COMPONENTS CXX)
|
||||||
option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
|
option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
|
||||||
else()
|
else()
|
||||||
option(BUILD_MPI "Build MPI version" OFF)
|
option(BUILD_MPI "Build MPI version" OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(BUILD_MPI)
|
if(BUILD_MPI)
|
||||||
# do not include the (obsolete) MPI C++ bindings which makes
|
|
||||||
# for leaner object files and avoids namespace conflicts
|
|
||||||
set(MPI_CXX_SKIP_MPICXX TRUE)
|
|
||||||
# We use a non-standard procedure to cross-compile with MPI on Windows
|
# We use a non-standard procedure to cross-compile with MPI on Windows
|
||||||
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
|
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
|
||||||
include(MPI4WIN)
|
include(MPI4WIN)
|
||||||
else()
|
else()
|
||||||
find_package(MPI REQUIRED)
|
find_package(MPI REQUIRED COMPONENTS CXX)
|
||||||
option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF)
|
option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF)
|
||||||
if(LAMMPS_LONGLONG_TO_LONG)
|
if(LAMMPS_LONGLONG_TO_LONG)
|
||||||
target_compile_definitions(lammps PRIVATE -DLAMMPS_LONGLONG_TO_LONG)
|
target_compile_definitions(lammps PRIVATE -DLAMMPS_LONGLONG_TO_LONG)
|
||||||
@ -425,8 +404,8 @@ else()
|
|||||||
target_link_libraries(lammps PUBLIC mpi_stubs)
|
target_link_libraries(lammps PUBLIC mpi_stubs)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallsmall: all 32-bit, smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)")
|
set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)")
|
||||||
set(LAMMPS_SIZES_VALUES smallbig bigbig smallsmall)
|
set(LAMMPS_SIZES_VALUES smallbig bigbig)
|
||||||
set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS ${LAMMPS_SIZES_VALUES})
|
set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS ${LAMMPS_SIZES_VALUES})
|
||||||
validate_option(LAMMPS_SIZES LAMMPS_SIZES_VALUES)
|
validate_option(LAMMPS_SIZES LAMMPS_SIZES_VALUES)
|
||||||
string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES)
|
string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES)
|
||||||
@ -444,6 +423,19 @@ if(NOT ${LAMMPS_MEMALIGN} STREQUAL "0")
|
|||||||
target_compile_definitions(lammps PRIVATE -DLAMMPS_MEMALIGN=${LAMMPS_MEMALIGN})
|
target_compile_definitions(lammps PRIVATE -DLAMMPS_MEMALIGN=${LAMMPS_MEMALIGN})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# this hack is required to compile fmt lib with CrayClang version 15.0.2
|
||||||
|
# CrayClang is only directly recognized by CMake version 3.28 and later
|
||||||
|
if(CMAKE_VERSION VERSION_LESS 3.28)
|
||||||
|
get_filename_component(_exe "${CMAKE_CXX_COMPILER}" NAME)
|
||||||
|
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (_exe STREQUAL "crayCC"))
|
||||||
|
target_compile_definitions(lammps PRIVATE -DFMT_STATIC_THOUSANDS_SEPARATOR)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang")
|
||||||
|
target_compile_definitions(lammps PRIVATE -DFMT_STATIC_THOUSANDS_SEPARATOR)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# "hard" dependencies between packages resulting
|
# "hard" dependencies between packages resulting
|
||||||
# in an error instead of skipping over files
|
# in an error instead of skipping over files
|
||||||
pkg_depends(ML-IAP ML-SNAP)
|
pkg_depends(ML-IAP ML-SNAP)
|
||||||
@ -459,6 +451,7 @@ pkg_depends(ELECTRODE KSPACE)
|
|||||||
pkg_depends(EXTRA-MOLECULE MOLECULE)
|
pkg_depends(EXTRA-MOLECULE MOLECULE)
|
||||||
pkg_depends(MESONT MOLECULE)
|
pkg_depends(MESONT MOLECULE)
|
||||||
pkg_depends(RHEO BPM)
|
pkg_depends(RHEO BPM)
|
||||||
|
pkg_depends(APIP ML-PACE)
|
||||||
|
|
||||||
# detect if we may enable OpenMP support by default
|
# detect if we may enable OpenMP support by default
|
||||||
set(BUILD_OMP_DEFAULT OFF)
|
set(BUILD_OMP_DEFAULT OFF)
|
||||||
@ -501,13 +494,13 @@ if(BUILD_OMP)
|
|||||||
if(CMAKE_VERSION VERSION_LESS 3.28)
|
if(CMAKE_VERSION VERSION_LESS 3.28)
|
||||||
get_filename_component(_exe "${CMAKE_CXX_COMPILER}" NAME)
|
get_filename_component(_exe "${CMAKE_CXX_COMPILER}" NAME)
|
||||||
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (_exe STREQUAL "crayCC"))
|
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (_exe STREQUAL "crayCC"))
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS_${BTYPE} "${CMAKE_SHARED_LINKER_FLAGS_${BTYPE}} -fopenmp")
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fopenmp")
|
||||||
set(CMAKE_STATIC_LINKER_FLAGS_${BTYPE} "${CMAKE_STATIC_LINKER_FLAGS_${BTYPE}} -fopenmp")
|
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} -fopenmp")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang")
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "CrayClang")
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS_${BTYPE} "${CMAKE_SHARED_LINKER_FLAGS_${BTYPE}} -fopenmp")
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fopenmp")
|
||||||
set(CMAKE_STATIC_LINKER_FLAGS_${BTYPE} "${CMAKE_STATIC_LINKER_FLAGS_${BTYPE}} -fopenmp")
|
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} -fopenmp")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@ -525,7 +518,6 @@ if((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") AND (CMAKE_CXX_STANDARD GREATER_EQUA
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_ML-POD OR PKG_ELECTRODE OR PKG_RHEO OR BUILD_TOOLS)
|
if(PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_ML-POD OR PKG_ELECTRODE OR PKG_RHEO OR BUILD_TOOLS)
|
||||||
enable_language(C)
|
|
||||||
if (NOT USE_INTERNAL_LINALG)
|
if (NOT USE_INTERNAL_LINALG)
|
||||||
find_package(LAPACK)
|
find_package(LAPACK)
|
||||||
find_package(BLAS)
|
find_package(BLAS)
|
||||||
@ -622,10 +614,6 @@ if(WITH_SWIG)
|
|||||||
add_subdirectory(${LAMMPS_SWIG_DIR} swig)
|
add_subdirectory(${LAMMPS_SWIG_DIR} swig)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CMAKE_TUNE_FLAGS "${CMAKE_TUNE_DEFAULT}" CACHE STRING "Compiler and machine specific optimization flags (compilation only)")
|
|
||||||
separate_arguments(CMAKE_TUNE_FLAGS)
|
|
||||||
target_compile_options(lammps PRIVATE ${CMAKE_TUNE_FLAGS})
|
|
||||||
target_compile_options(lmp PRIVATE ${CMAKE_TUNE_FLAGS})
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# Basic system tests (standard libraries, headers, functions, types) #
|
# Basic system tests (standard libraries, headers, functions, types) #
|
||||||
########################################################################
|
########################################################################
|
||||||
@ -930,7 +918,7 @@ endif()
|
|||||||
include(Testing)
|
include(Testing)
|
||||||
include(CodeCoverage)
|
include(CodeCoverage)
|
||||||
include(CodingStandard)
|
include(CodingStandard)
|
||||||
find_package(ClangFormat 11.0)
|
find_package(ClangFormat 11.0 QUIET)
|
||||||
|
|
||||||
if(ClangFormat_FOUND)
|
if(ClangFormat_FOUND)
|
||||||
add_custom_target(format-src
|
add_custom_target(format-src
|
||||||
|
|||||||
@ -7,76 +7,76 @@
|
|||||||
# For Python coverage the coverage package needs to be installed
|
# For Python coverage the coverage package needs to be installed
|
||||||
###############################################################################
|
###############################################################################
|
||||||
if(ENABLE_COVERAGE)
|
if(ENABLE_COVERAGE)
|
||||||
find_program(GCOVR_BINARY gcovr)
|
find_program(GCOVR_BINARY gcovr)
|
||||||
find_package_handle_standard_args(GCOVR DEFAULT_MSG GCOVR_BINARY)
|
find_package_handle_standard_args(GCOVR DEFAULT_MSG GCOVR_BINARY)
|
||||||
|
|
||||||
find_program(COVERAGE_BINARY coverage)
|
find_program(COVERAGE_BINARY coverage)
|
||||||
find_package_handle_standard_args(COVERAGE DEFAULT_MSG COVERAGE_BINARY)
|
find_package_handle_standard_args(COVERAGE DEFAULT_MSG COVERAGE_BINARY)
|
||||||
|
|
||||||
if(GCOVR_FOUND)
|
if(GCOVR_FOUND)
|
||||||
get_filename_component(ABSOLUTE_LAMMPS_SOURCE_DIR ${LAMMPS_SOURCE_DIR} ABSOLUTE)
|
get_filename_component(ABSOLUTE_LAMMPS_SOURCE_DIR ${LAMMPS_SOURCE_DIR} ABSOLUTE)
|
||||||
|
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
gen_coverage_xml
|
gen_coverage_xml
|
||||||
COMMAND ${GCOVR_BINARY} -s -x -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.xml
|
COMMAND ${GCOVR_BINARY} -s -x -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.xml
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
COMMENT "Generating XML coverage report..."
|
COMMENT "Generating XML coverage report..."
|
||||||
)
|
)
|
||||||
|
|
||||||
set(COVERAGE_HTML_DIR ${CMAKE_BINARY_DIR}/coverage_html)
|
set(COVERAGE_HTML_DIR ${CMAKE_BINARY_DIR}/coverage_html)
|
||||||
|
|
||||||
add_custom_target(coverage_html_folder
|
add_custom_target(coverage_html_folder
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${COVERAGE_HTML_DIR})
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${COVERAGE_HTML_DIR})
|
||||||
|
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
gen_coverage_html
|
gen_coverage_html
|
||||||
COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o ${COVERAGE_HTML_DIR}/index.html
|
COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o ${COVERAGE_HTML_DIR}/index.html
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
COMMENT "Generating HTML coverage report..."
|
COMMENT "Generating HTML coverage report..."
|
||||||
)
|
)
|
||||||
add_dependencies(gen_coverage_html coverage_html_folder)
|
add_dependencies(gen_coverage_html coverage_html_folder)
|
||||||
|
|
||||||
add_custom_target(clean_coverage_html
|
add_custom_target(clean_coverage_html
|
||||||
${CMAKE_COMMAND} -E remove_directory ${COVERAGE_HTML_DIR}
|
${CMAKE_COMMAND} -E remove_directory ${COVERAGE_HTML_DIR}
|
||||||
COMMENT "Deleting HTML coverage report..."
|
COMMENT "Deleting HTML coverage report..."
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(reset_coverage
|
add_custom_target(reset_coverage
|
||||||
${CMAKE_COMMAND} -E remove -f */*.gcda */*/*.gcda */*/*/*.gcda
|
${CMAKE_COMMAND} -E remove -f */*.gcda */*/*.gcda */*/*/*.gcda
|
||||||
*/*/*/*/*.gcda */*/*/*/*/*.gcda */*/*/*/*/*/*.gcda
|
*/*/*/*/*.gcda */*/*/*/*/*.gcda */*/*/*/*/*/*.gcda
|
||||||
*/*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*.gcda
|
*/*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*.gcda
|
||||||
*/*/*/*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*/*/*.gcda
|
*/*/*/*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*/*/*.gcda
|
||||||
WORKIND_DIRECTORY ${CMAKE_BINARY_DIR}
|
WORKIND_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
COMMENT "Deleting coverage data files..."
|
COMMENT "Deleting coverage data files..."
|
||||||
)
|
)
|
||||||
add_dependencies(reset_coverage clean_coverage_html)
|
add_dependencies(reset_coverage clean_coverage_html)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(COVERAGE_FOUND)
|
if(COVERAGE_FOUND)
|
||||||
set(PYTHON_COVERAGE_HTML_DIR ${CMAKE_BINARY_DIR}/python_coverage_html)
|
set(PYTHON_COVERAGE_HTML_DIR ${CMAKE_BINARY_DIR}/python_coverage_html)
|
||||||
configure_file(.coveragerc.in ${CMAKE_BINARY_DIR}/.coveragerc @ONLY)
|
configure_file(.coveragerc.in ${CMAKE_BINARY_DIR}/.coveragerc @ONLY)
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${CMAKE_BINARY_DIR}/unittest/python/.coverage
|
OUTPUT ${CMAKE_BINARY_DIR}/unittest/python/.coverage
|
||||||
COMMAND ${COVERAGE_BINARY} combine
|
COMMAND ${COVERAGE_BINARY} combine
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/unittest/python
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/unittest/python
|
||||||
COMMENT "Combine Python coverage files..."
|
COMMENT "Combine Python coverage files..."
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
gen_python_coverage_html
|
gen_python_coverage_html
|
||||||
COMMAND ${COVERAGE_BINARY} html --rcfile=${CMAKE_BINARY_DIR}/.coveragerc -d ${PYTHON_COVERAGE_HTML_DIR}
|
COMMAND ${COVERAGE_BINARY} html --rcfile=${CMAKE_BINARY_DIR}/.coveragerc -d ${PYTHON_COVERAGE_HTML_DIR}
|
||||||
DEPENDS ${CMAKE_BINARY_DIR}/unittest/python/.coverage ${CMAKE_BINARY_DIR}/.coveragerc
|
DEPENDS ${CMAKE_BINARY_DIR}/unittest/python/.coverage ${CMAKE_BINARY_DIR}/.coveragerc
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/unittest/python
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/unittest/python
|
||||||
COMMENT "Generating HTML Python coverage report..."
|
COMMENT "Generating HTML Python coverage report..."
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
gen_python_coverage_xml
|
gen_python_coverage_xml
|
||||||
COMMAND ${COVERAGE_BINARY} xml --rcfile=${CMAKE_BINARY_DIR}/.coveragerc -o ${CMAKE_BINARY_DIR}/python_coverage.xml
|
COMMAND ${COVERAGE_BINARY} xml --rcfile=${CMAKE_BINARY_DIR}/.coveragerc -o ${CMAKE_BINARY_DIR}/python_coverage.xml
|
||||||
DEPENDS ${CMAKE_BINARY_DIR}/unittest/python/.coverage ${CMAKE_BINARY_DIR}/.coveragerc
|
DEPENDS ${CMAKE_BINARY_DIR}/unittest/python/.coverage ${CMAKE_BINARY_DIR}/.coveragerc
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/unittest/python
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/unittest/python
|
||||||
COMMENT "Generating XML Python coverage report..."
|
COMMENT "Generating XML Python coverage report..."
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -1,40 +1,39 @@
|
|||||||
# use default (or custom) Python executable, if version is sufficient
|
# use default (or custom) Python executable.
|
||||||
if(Python_VERSION VERSION_GREATER_EQUAL 3.6)
|
# Python version check is in main CMakeLists.txt file
|
||||||
|
if(Python_EXECUTABLE)
|
||||||
set(Python3_EXECUTABLE ${Python_EXECUTABLE})
|
set(Python3_EXECUTABLE ${Python_EXECUTABLE})
|
||||||
endif()
|
endif()
|
||||||
find_package(Python3 COMPONENTS Interpreter)
|
find_package(Python3 COMPONENTS Interpreter)
|
||||||
|
|
||||||
if(Python3_EXECUTABLE)
|
if(Python3_EXECUTABLE)
|
||||||
if(Python3_VERSION VERSION_GREATER_EQUAL 3.6)
|
add_custom_target(
|
||||||
add_custom_target(
|
check-whitespace
|
||||||
check-whitespace
|
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/whitespace.py .
|
||||||
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/whitespace.py .
|
WORKING_DIRECTORY ${LAMMPS_DIR}
|
||||||
WORKING_DIRECTORY ${LAMMPS_DIR}
|
COMMENT "Check for whitespace errors")
|
||||||
COMMENT "Check for whitespace errors")
|
add_custom_target(
|
||||||
add_custom_target(
|
check-homepage
|
||||||
check-homepage
|
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/homepage.py .
|
||||||
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/homepage.py .
|
WORKING_DIRECTORY ${LAMMPS_DIR}
|
||||||
WORKING_DIRECTORY ${LAMMPS_DIR}
|
COMMENT "Check for homepage URL errors")
|
||||||
COMMENT "Check for homepage URL errors")
|
add_custom_target(
|
||||||
add_custom_target(
|
check-permissions
|
||||||
check-permissions
|
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/permissions.py .
|
||||||
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/permissions.py .
|
WORKING_DIRECTORY ${LAMMPS_DIR}
|
||||||
WORKING_DIRECTORY ${LAMMPS_DIR}
|
COMMENT "Check for permission errors")
|
||||||
COMMENT "Check for permission errors")
|
add_custom_target(
|
||||||
add_custom_target(
|
fix-whitespace
|
||||||
fix-whitespace
|
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/whitespace.py -f .
|
||||||
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/whitespace.py -f .
|
WORKING_DIRECTORY ${LAMMPS_DIR}
|
||||||
WORKING_DIRECTORY ${LAMMPS_DIR}
|
COMMENT "Fix whitespace errors")
|
||||||
COMMENT "Fix whitespace errors")
|
add_custom_target(
|
||||||
add_custom_target(
|
fix-homepage
|
||||||
fix-homepage
|
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/homepage.py -f .
|
||||||
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/homepage.py -f .
|
WORKING_DIRECTORY ${LAMMPS_DIR}
|
||||||
WORKING_DIRECTORY ${LAMMPS_DIR}
|
COMMENT "Fix homepage URL errors")
|
||||||
COMMENT "Fix homepage URL errors")
|
add_custom_target(
|
||||||
add_custom_target(
|
fix-permissions
|
||||||
fix-permissions
|
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/permissions.py -f .
|
||||||
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/permissions.py -f .
|
WORKING_DIRECTORY ${LAMMPS_DIR}
|
||||||
WORKING_DIRECTORY ${LAMMPS_DIR}
|
COMMENT "Fix permission errors")
|
||||||
COMMENT "Fix permission errors")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -13,7 +13,7 @@ if(BUILD_DOC)
|
|||||||
endif()
|
endif()
|
||||||
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
||||||
if(Python3_VERSION VERSION_LESS 3.8)
|
if(Python3_VERSION VERSION_LESS 3.8)
|
||||||
message(FATAL_ERROR "Python 3.8 and up is required to build the HTML documentation")
|
message(FATAL_ERROR "Python 3.8 and up is required to build the LAMMPS HTML documentation")
|
||||||
endif()
|
endif()
|
||||||
set(VIRTUALENV ${Python3_EXECUTABLE} -m venv)
|
set(VIRTUALENV ${Python3_EXECUTABLE} -m venv)
|
||||||
|
|
||||||
@ -65,8 +65,8 @@ if(BUILD_DOC)
|
|||||||
find_package(Sphinx)
|
find_package(Sphinx)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(MATHJAX_URL "https://github.com/mathjax/MathJax/archive/3.1.3.tar.gz" CACHE STRING "URL for MathJax tarball")
|
set(MATHJAX_URL "https://github.com/mathjax/MathJax/archive/3.2.2.tar.gz" CACHE STRING "URL for MathJax tarball")
|
||||||
set(MATHJAX_MD5 "b81661c6e6ba06278e6ae37b30b0c492" CACHE STRING "MD5 checksum of MathJax tarball")
|
set(MATHJAX_MD5 "08dd6ef33ca08870220d9aade2a62845" CACHE STRING "MD5 checksum of MathJax tarball")
|
||||||
mark_as_advanced(MATHJAX_URL)
|
mark_as_advanced(MATHJAX_URL)
|
||||||
GetFallbackURL(MATHJAX_URL MATHJAX_FALLBACK)
|
GetFallbackURL(MATHJAX_URL MATHJAX_FALLBACK)
|
||||||
|
|
||||||
|
|||||||
@ -34,8 +34,26 @@ if(MSVC)
|
|||||||
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
|
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# C++11 is required
|
if(NOT CMAKE_CXX_STANDARD)
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
if(cxx_std_17 IN_LIST CMAKE_CXX_COMPILE_FEATURES)
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
else()
|
||||||
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
|
endif()
|
||||||
|
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()
|
||||||
|
# turn off C++17 check in lmptype.h
|
||||||
|
if(LAMMPS_CXX11)
|
||||||
|
add_compile_definitions(LAMMPS_CXX11)
|
||||||
|
endif()
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
# Need -restrict with Intel compilers
|
# Need -restrict with Intel compilers
|
||||||
@ -44,6 +62,9 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
|||||||
endif()
|
endif()
|
||||||
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
|
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
|
||||||
|
|
||||||
|
# skip over obsolete MPI-2 C++ bindings
|
||||||
|
set(MPI_CXX_SKIP_MPICXX TRUE)
|
||||||
|
|
||||||
#######
|
#######
|
||||||
# helper functions from LAMMPSUtils.cmake
|
# helper functions from LAMMPSUtils.cmake
|
||||||
function(validate_option name values)
|
function(validate_option name values)
|
||||||
@ -110,8 +131,7 @@ endif()
|
|||||||
################################################################################
|
################################################################################
|
||||||
# MPI configuration
|
# MPI configuration
|
||||||
if(NOT CMAKE_CROSSCOMPILING)
|
if(NOT CMAKE_CROSSCOMPILING)
|
||||||
set(MPI_CXX_SKIP_MPICXX TRUE)
|
find_package(MPI QUIET COMPONENTS CXX)
|
||||||
find_package(MPI QUIET)
|
|
||||||
option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
|
option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
|
||||||
else()
|
else()
|
||||||
option(BUILD_MPI "Build MPI version" OFF)
|
option(BUILD_MPI "Build MPI version" OFF)
|
||||||
@ -123,78 +143,38 @@ if(BUILD_MPI)
|
|||||||
set(MPI_CXX_SKIP_MPICXX TRUE)
|
set(MPI_CXX_SKIP_MPICXX TRUE)
|
||||||
# We use a non-standard procedure to cross-compile with MPI on Windows
|
# We use a non-standard procedure to cross-compile with MPI on Windows
|
||||||
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
|
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
|
||||||
# Download and configure MinGW compatible MPICH development files for Windows
|
message(STATUS "Downloading and configuring MS-MPI 10.1 for Windows cross-compilation")
|
||||||
option(USE_MSMPI "Use Microsoft's MS-MPI SDK instead of MPICH2-1.4.1" OFF)
|
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/msmpi-win64-devel.tar.gz" CACHE STRING "URL for MS-MPI (win64) tarball")
|
||||||
if(USE_MSMPI)
|
set(MPICH2_WIN64_DEVEL_MD5 "86314daf1bffb809f1fcbefb8a547490" CACHE STRING "MD5 checksum of MS-MPI (win64) tarball")
|
||||||
message(STATUS "Downloading and configuring MS-MPI 10.1 for Windows cross-compilation")
|
mark_as_advanced(MPICH2_WIN64_DEVEL_URL)
|
||||||
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/msmpi-win64-devel.tar.gz" CACHE STRING "URL for MS-MPI (win64) tarball")
|
mark_as_advanced(MPICH2_WIN64_DEVEL_MD5)
|
||||||
set(MPICH2_WIN64_DEVEL_MD5 "86314daf1bffb809f1fcbefb8a547490" CACHE STRING "MD5 checksum of MS-MPI (win64) tarball")
|
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_URL)
|
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_MD5)
|
|
||||||
|
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||||
ExternalProject_Add(mpi4win_build
|
ExternalProject_Add(mpi4win_build
|
||||||
URL ${MPICH2_WIN64_DEVEL_URL}
|
URL ${MPICH2_WIN64_DEVEL_URL}
|
||||||
URL_MD5 ${MPICH2_WIN64_DEVEL_MD5}
|
URL_MD5 ${MPICH2_WIN64_DEVEL_MD5}
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmsmpi.a)
|
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmsmpi.a)
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "Only x86 64-bit builds are supported with MS-MPI")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
ExternalProject_get_property(mpi4win_build SOURCE_DIR)
|
|
||||||
file(MAKE_DIRECTORY "${SOURCE_DIR}/include")
|
|
||||||
add_library(MPI::MPI_CXX UNKNOWN IMPORTED)
|
|
||||||
set_target_properties(MPI::MPI_CXX PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmsmpi.a"
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
|
||||||
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
|
||||||
|
|
||||||
# set variables for status reporting at the end of CMake run
|
|
||||||
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
|
||||||
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmsmpi.a")
|
|
||||||
else()
|
else()
|
||||||
# Download and configure custom MPICH files for Windows
|
message(FATAL_ERROR "Only x86 64-bit builds are supported with MS-MPI")
|
||||||
message(STATUS "Downloading and configuring MPICH-1.4.1 for Windows")
|
|
||||||
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball")
|
|
||||||
set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball")
|
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_URL)
|
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_MD5)
|
|
||||||
|
|
||||||
include(ExternalProject)
|
|
||||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
|
||||||
ExternalProject_Add(mpi4win_build
|
|
||||||
URL ${MPICH2_WIN64_DEVEL_URL}
|
|
||||||
URL_MD5 ${MPICH2_WIN64_DEVEL_MD5}
|
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
|
|
||||||
else()
|
|
||||||
ExternalProject_Add(mpi4win_build
|
|
||||||
URL ${MPICH2_WIN32_DEVEL_URL}
|
|
||||||
URL_MD5 ${MPICH2_WIN32_DEVEL_MD5}
|
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
ExternalProject_get_property(mpi4win_build SOURCE_DIR)
|
|
||||||
file(MAKE_DIRECTORY "${SOURCE_DIR}/include")
|
|
||||||
add_library(MPI::MPI_CXX UNKNOWN IMPORTED)
|
|
||||||
set_target_properties(MPI::MPI_CXX PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a"
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
|
||||||
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
|
||||||
|
|
||||||
# set variables for status reporting at the end of CMake run
|
|
||||||
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
|
||||||
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
ExternalProject_get_property(mpi4win_build SOURCE_DIR)
|
||||||
|
file(MAKE_DIRECTORY "${SOURCE_DIR}/include")
|
||||||
|
add_library(MPI::MPI_CXX UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(MPI::MPI_CXX PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmsmpi.a"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
||||||
|
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX=1")
|
||||||
|
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
||||||
|
|
||||||
|
# set variables for status reporting at the end of CMake run
|
||||||
|
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
||||||
|
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX=1")
|
||||||
|
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmsmpi.a")
|
||||||
else()
|
else()
|
||||||
find_package(MPI REQUIRED)
|
find_package(MPI REQUIRED COMPONENTS CXX)
|
||||||
option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF)
|
option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF)
|
||||||
if(LAMMPS_LONGLONG_TO_LONG)
|
if(LAMMPS_LONGLONG_TO_LONG)
|
||||||
target_compile_definitions(lammps INTERFACE -DLAMMPS_LONGLONG_TO_LONG)
|
target_compile_definitions(lammps INTERFACE -DLAMMPS_LONGLONG_TO_LONG)
|
||||||
@ -242,8 +222,8 @@ endif()
|
|||||||
|
|
||||||
################
|
################
|
||||||
# integer size selection
|
# integer size selection
|
||||||
set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallsmall: all 32-bit, smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)")
|
set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)")
|
||||||
set(LAMMPS_SIZES_VALUES smallbig bigbig smallsmall)
|
set(LAMMPS_SIZES_VALUES smallbig bigbig)
|
||||||
set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS ${LAMMPS_SIZES_VALUES})
|
set_property(CACHE LAMMPS_SIZES PROPERTY STRINGS ${LAMMPS_SIZES_VALUES})
|
||||||
validate_option(LAMMPS_SIZES LAMMPS_SIZES_VALUES)
|
validate_option(LAMMPS_SIZES LAMMPS_SIZES_VALUES)
|
||||||
string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES)
|
string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES)
|
||||||
|
|||||||
@ -30,7 +30,7 @@ function(check_omp_h_include)
|
|||||||
if(OpenMP_CXX_FOUND)
|
if(OpenMP_CXX_FOUND)
|
||||||
set(CMAKE_REQUIRED_FLAGS ${OpenMP_CXX_FLAGS})
|
set(CMAKE_REQUIRED_FLAGS ${OpenMP_CXX_FLAGS})
|
||||||
set(CMAKE_REQUIRED_INCLUDES ${OpenMP_CXX_INCLUDE_DIRS})
|
set(CMAKE_REQUIRED_INCLUDES ${OpenMP_CXX_INCLUDE_DIRS})
|
||||||
set(CMAKE_REQUIRED_LINK_OPTIONS ${OpenMP_CXX_FLAGS})
|
separate_arguments(CMAKE_REQUIRED_LINK_OPTIONS NATIVE_COMMAND ${OpenMP_CXX_FLAGS}) # needs to be a list
|
||||||
set(CMAKE_REQUIRED_LIBRARIES ${OpenMP_CXX_LIBRARIES})
|
set(CMAKE_REQUIRED_LIBRARIES ${OpenMP_CXX_LIBRARIES})
|
||||||
# there are all kinds of problems with finding omp.h
|
# there are all kinds of problems with finding omp.h
|
||||||
# for Clang and derived compilers so we pretend it is there.
|
# for Clang and derived compilers so we pretend it is there.
|
||||||
@ -75,13 +75,25 @@ function(get_lammps_version version_header variable)
|
|||||||
list(FIND MONTHS "${month}" month)
|
list(FIND MONTHS "${month}" month)
|
||||||
string(LENGTH ${day} day_length)
|
string(LENGTH ${day} day_length)
|
||||||
string(LENGTH ${month} month_length)
|
string(LENGTH ${month} month_length)
|
||||||
if(day_length EQUAL 1)
|
# no leading zero needed for new version string with dots
|
||||||
set(day "0${day}")
|
# if(day_length EQUAL 1)
|
||||||
|
# set(day "0${day}")
|
||||||
|
# endif()
|
||||||
|
# if(month_length EQUAL 1)
|
||||||
|
# set(month "0${month}")
|
||||||
|
#endif()
|
||||||
|
file(STRINGS ${version_header} line REGEX LAMMPS_UPDATE)
|
||||||
|
string(REGEX REPLACE "#define LAMMPS_UPDATE \"Update ([0-9]+)\"" "\\1" tweak "${line}")
|
||||||
|
if (line MATCHES "#define LAMMPS_UPDATE \"(Maintenance|Development)\"")
|
||||||
|
set(tweak "99")
|
||||||
endif()
|
endif()
|
||||||
if(month_length EQUAL 1)
|
if(NOT tweak)
|
||||||
set(month "0${month}")
|
set(tweak "0")
|
||||||
endif()
|
endif()
|
||||||
set(${variable} "${year}${month}${day}" PARENT_SCOPE)
|
# new version string with dots
|
||||||
|
set(${variable} "${year}.${month}.${day}.${tweak}" PARENT_SCOPE)
|
||||||
|
# old version string without dots
|
||||||
|
# set(${variable} "${year}${month}${day}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(check_for_autogen_files source_dir)
|
function(check_for_autogen_files source_dir)
|
||||||
|
|||||||
@ -1,74 +1,31 @@
|
|||||||
# Download and configure MinGW compatible MPICH development files for Windows
|
# set-up MS-MPI library for Windows with MinGW compatibility
|
||||||
option(USE_MSMPI "Use Microsoft's MS-MPI SDK instead of MPICH2-1.4.1" OFF)
|
message(STATUS "Downloading and configuring MS-MPI 10.1 for Windows cross-compilation")
|
||||||
|
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/msmpi-win64-devel.tar.gz" CACHE STRING "URL for MS-MPI (win64) tarball")
|
||||||
|
set(MPICH2_WIN64_DEVEL_MD5 "86314daf1bffb809f1fcbefb8a547490" CACHE STRING "MD5 checksum of MS-MPI (win64) tarball")
|
||||||
|
mark_as_advanced(MPICH2_WIN64_DEVEL_URL)
|
||||||
|
mark_as_advanced(MPICH2_WIN64_DEVEL_MD5)
|
||||||
|
|
||||||
if(USE_MSMPI)
|
include(ExternalProject)
|
||||||
message(STATUS "Downloading and configuring MS-MPI 10.1 for Windows cross-compilation")
|
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||||
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/msmpi-win64-devel.tar.gz" CACHE STRING "URL for MS-MPI (win64) tarball")
|
ExternalProject_Add(mpi4win_build
|
||||||
set(MPICH2_WIN64_DEVEL_MD5 "86314daf1bffb809f1fcbefb8a547490" CACHE STRING "MD5 checksum of MS-MPI (win64) tarball")
|
URL ${MPICH2_WIN64_DEVEL_URL}
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_URL)
|
URL_MD5 ${MPICH2_WIN64_DEVEL_MD5}
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_MD5)
|
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
||||||
|
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmsmpi.a)
|
||||||
include(ExternalProject)
|
|
||||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
|
||||||
ExternalProject_Add(mpi4win_build
|
|
||||||
URL ${MPICH2_WIN64_DEVEL_URL}
|
|
||||||
URL_MD5 ${MPICH2_WIN64_DEVEL_MD5}
|
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmsmpi.a)
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "Only x86 64-bit builds are supported with MS-MPI")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
ExternalProject_get_property(mpi4win_build SOURCE_DIR)
|
|
||||||
file(MAKE_DIRECTORY "${SOURCE_DIR}/include")
|
|
||||||
add_library(MPI::MPI_CXX UNKNOWN IMPORTED)
|
|
||||||
set_target_properties(MPI::MPI_CXX PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmsmpi.a"
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
|
||||||
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
|
||||||
|
|
||||||
# set variables for status reporting at the end of CMake run
|
|
||||||
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
|
||||||
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmsmpi.a")
|
|
||||||
else()
|
else()
|
||||||
message(STATUS "Downloading and configuring MPICH2-1.4.1 for Windows cross-compilation")
|
message(FATAL_ERROR "Only x86 64-bit builds are supported with MS-MPI")
|
||||||
set(MPICH2_WIN64_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win64-devel.tar.gz" CACHE STRING "URL for MPICH2 (win64) tarball")
|
|
||||||
set(MPICH2_WIN32_DEVEL_URL "${LAMMPS_THIRDPARTY_URL}/mpich2-win32-devel.tar.gz" CACHE STRING "URL for MPICH2 (win32) tarball")
|
|
||||||
set(MPICH2_WIN64_DEVEL_MD5 "4939fdb59d13182fd5dd65211e469f14" CACHE STRING "MD5 checksum of MPICH2 (win64) tarball")
|
|
||||||
set(MPICH2_WIN32_DEVEL_MD5 "a61d153500dce44e21b755ee7257e031" CACHE STRING "MD5 checksum of MPICH2 (win32) tarball")
|
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_URL)
|
|
||||||
mark_as_advanced(MPICH2_WIN32_DEVEL_URL)
|
|
||||||
mark_as_advanced(MPICH2_WIN64_DEVEL_MD5)
|
|
||||||
mark_as_advanced(MPICH2_WIN32_DEVEL_MD5)
|
|
||||||
|
|
||||||
include(ExternalProject)
|
|
||||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
|
||||||
ExternalProject_Add(mpi4win_build
|
|
||||||
URL ${MPICH2_WIN64_DEVEL_URL}
|
|
||||||
URL_MD5 ${MPICH2_WIN64_DEVEL_MD5}
|
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
|
|
||||||
else()
|
|
||||||
ExternalProject_Add(mpi4win_build
|
|
||||||
URL ${MPICH2_WIN32_DEVEL_URL}
|
|
||||||
URL_MD5 ${MPICH2_WIN32_DEVEL_MD5}
|
|
||||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libmpi.a)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
ExternalProject_get_property(mpi4win_build SOURCE_DIR)
|
|
||||||
file(MAKE_DIRECTORY "${SOURCE_DIR}/include")
|
|
||||||
add_library(MPI::MPI_CXX UNKNOWN IMPORTED)
|
|
||||||
set_target_properties(MPI::MPI_CXX PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmpi.a"
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
|
||||||
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
|
||||||
|
|
||||||
# set variables for status reporting at the end of CMake run
|
|
||||||
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
|
||||||
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX")
|
|
||||||
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmpi.a")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
ExternalProject_get_property(mpi4win_build SOURCE_DIR)
|
||||||
|
file(MAKE_DIRECTORY "${SOURCE_DIR}/include")
|
||||||
|
add_library(MPI::MPI_CXX UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(MPI::MPI_CXX PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libmsmpi.a"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include"
|
||||||
|
INTERFACE_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX=1")
|
||||||
|
add_dependencies(MPI::MPI_CXX mpi4win_build)
|
||||||
|
|
||||||
|
# set variables for status reporting at the end of CMake run
|
||||||
|
set(MPI_CXX_INCLUDE_PATH "${SOURCE_DIR}/include")
|
||||||
|
set(MPI_CXX_COMPILE_DEFINITIONS "MPICH_SKIP_MPICXX=1")
|
||||||
|
set(MPI_CXX_LIBRARIES "${SOURCE_DIR}/lib/libmsmpi.a")
|
||||||
|
|||||||
@ -14,10 +14,6 @@ endif()
|
|||||||
|
|
||||||
add_library(colvars STATIC ${COLVARS_SOURCES})
|
add_library(colvars STATIC ${COLVARS_SOURCES})
|
||||||
target_compile_definitions(colvars PRIVATE -DCOLVARS_LAMMPS)
|
target_compile_definitions(colvars PRIVATE -DCOLVARS_LAMMPS)
|
||||||
separate_arguments(CMAKE_TUNE_FLAGS)
|
|
||||||
foreach(_FLAG ${CMAKE_TUNE_FLAGS})
|
|
||||||
target_compile_options(colvars PRIVATE ${_FLAG})
|
|
||||||
endforeach()
|
|
||||||
set_target_properties(colvars PROPERTIES OUTPUT_NAME lammps_colvars${LAMMPS_MACHINE})
|
set_target_properties(colvars PROPERTIES OUTPUT_NAME lammps_colvars${LAMMPS_MACHINE})
|
||||||
target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars)
|
target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars)
|
||||||
# The line below is needed to locate math_eigen_impl.h
|
# The line below is needed to locate math_eigen_impl.h
|
||||||
@ -30,6 +26,10 @@ if(BUILD_OMP)
|
|||||||
target_link_libraries(colvars PRIVATE OpenMP::OpenMP_CXX)
|
target_link_libraries(colvars PRIVATE OpenMP::OpenMP_CXX)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(BUILD_MPI)
|
||||||
|
target_link_libraries(colvars PUBLIC MPI::MPI_CXX)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(COLVARS_DEBUG)
|
if(COLVARS_DEBUG)
|
||||||
# Need to export the define publicly to be valid in interface code
|
# Need to export the define publicly to be valid in interface code
|
||||||
target_compile_definitions(colvars PUBLIC -DCOLVARS_DEBUG)
|
target_compile_definitions(colvars PUBLIC -DCOLVARS_DEBUG)
|
||||||
|
|||||||
@ -1,10 +1,18 @@
|
|||||||
# the geturl command needs libcurl
|
# the geturl command needs libcurl
|
||||||
|
|
||||||
find_package(CURL QUIET COMPONENTS HTTP HTTPS)
|
find_package(CURL QUIET)
|
||||||
option(WITH_CURL "Enable libcurl support" ${CURL_FOUND})
|
option(WITH_CURL "Enable libcurl support" ${CURL_FOUND})
|
||||||
if(WITH_CURL)
|
if(WITH_CURL)
|
||||||
find_package(CURL REQUIRED COMPONENTS HTTP HTTPS)
|
|
||||||
target_compile_definitions(lammps PRIVATE -DLAMMPS_CURL)
|
target_compile_definitions(lammps PRIVATE -DLAMMPS_CURL)
|
||||||
target_link_libraries(lammps PRIVATE CURL::libcurl)
|
|
||||||
|
# need to use pkgconfig for fully static bins to find custom static libs
|
||||||
|
if (CMAKE_SYSTEM_NAME STREQUAL "LinuxMUSL")
|
||||||
|
include(FindPkgConfig)
|
||||||
|
pkg_check_modules(CURL IMPORTED_TARGET libcurl libssl libcrypto)
|
||||||
|
target_link_libraries(lammps PUBLIC PkgConfig::CURL)
|
||||||
|
else()
|
||||||
|
find_package(CURL REQUIRED)
|
||||||
|
target_link_libraries(lammps PRIVATE CURL::libcurl)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@ -189,7 +189,7 @@ if(GPU_API STREQUAL "CUDA")
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_executable(nvc_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp)
|
add_executable(nvc_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp)
|
||||||
target_compile_definitions(nvc_get_devices PRIVATE -DUCL_CUDADR)
|
target_compile_definitions(nvc_get_devices PRIVATE -DUCL_CUDADR -DLAMMPS_${LAMMPS_SIZES})
|
||||||
target_link_libraries(nvc_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
|
target_link_libraries(nvc_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
|
||||||
target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS})
|
target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS})
|
||||||
|
|
||||||
@ -489,7 +489,7 @@ else()
|
|||||||
target_link_libraries(gpu PRIVATE mpi_stubs)
|
target_link_libraries(gpu PRIVATE mpi_stubs)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES})
|
|
||||||
set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_MACHINE})
|
set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_MACHINE})
|
||||||
|
target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES})
|
||||||
target_sources(lammps PRIVATE ${GPU_SOURCES})
|
target_sources(lammps PRIVATE ${GPU_SOURCES})
|
||||||
target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR})
|
target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR})
|
||||||
|
|||||||
@ -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_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}")
|
||||||
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}")
|
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}")
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/4.5.01.tar.gz" CACHE STRING "URL for 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 "4d832aa0284169d9e3fbae3165286bc6" CACHE STRING "MD5 checksum of KOKKOS tarball")
|
set(KOKKOS_MD5 "14c02fac07bfcec48a1654f88ddee9c6" CACHE STRING "MD5 checksum of KOKKOS tarball")
|
||||||
mark_as_advanced(KOKKOS_URL)
|
mark_as_advanced(KOKKOS_URL)
|
||||||
mark_as_advanced(KOKKOS_MD5)
|
mark_as_advanced(KOKKOS_MD5)
|
||||||
GetFallbackURL(KOKKOS_URL KOKKOS_FALLBACK)
|
GetFallbackURL(KOKKOS_URL KOKKOS_FALLBACK)
|
||||||
@ -83,7 +83,7 @@ if(DOWNLOAD_KOKKOS)
|
|||||||
add_dependencies(LAMMPS::KOKKOSCORE kokkos_build)
|
add_dependencies(LAMMPS::KOKKOSCORE kokkos_build)
|
||||||
add_dependencies(LAMMPS::KOKKOSCONTAINERS kokkos_build)
|
add_dependencies(LAMMPS::KOKKOSCONTAINERS kokkos_build)
|
||||||
elseif(EXTERNAL_KOKKOS)
|
elseif(EXTERNAL_KOKKOS)
|
||||||
find_package(Kokkos 4.5.01 REQUIRED CONFIG)
|
find_package(Kokkos 4.6.02 REQUIRED CONFIG)
|
||||||
target_link_libraries(lammps PRIVATE Kokkos::kokkos)
|
target_link_libraries(lammps PRIVATE Kokkos::kokkos)
|
||||||
else()
|
else()
|
||||||
set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos)
|
set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos)
|
||||||
|
|||||||
@ -7,3 +7,23 @@ if(NOT PKG_MANYBODY)
|
|||||||
list(REMOVE_ITEM LAMMPS_SOURCES ${LAMMPS_SOURCE_DIR}/MC/fix_sgcmc.cpp)
|
list(REMOVE_ITEM LAMMPS_SOURCES ${LAMMPS_SOURCE_DIR}/MC/fix_sgcmc.cpp)
|
||||||
set_property(TARGET lammps PROPERTY SOURCES "${LAMMPS_SOURCES}")
|
set_property(TARGET lammps PROPERTY SOURCES "${LAMMPS_SOURCES}")
|
||||||
endif()
|
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)
|
||||||
|
list(REMOVE_ITEM LAMMPS_FIX_HEADERS ${LAMMPS_SOURCE_DIR}/MC/fix_neighbor_swap.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_neighbor_swap.cpp)
|
||||||
|
set_property(TARGET lammps PROPERTY SOURCES "${LAMMPS_SOURCES}")
|
||||||
|
endif()
|
||||||
|
|||||||
@ -24,9 +24,7 @@ if(MLIAP_ENABLE_PYTHON)
|
|||||||
if(NOT PKG_PYTHON)
|
if(NOT PKG_PYTHON)
|
||||||
message(FATAL_ERROR "Must enable PYTHON package for including Python support in ML-IAP")
|
message(FATAL_ERROR "Must enable PYTHON package for including Python support in ML-IAP")
|
||||||
endif()
|
endif()
|
||||||
if(Python_VERSION VERSION_LESS 3.6)
|
# Python version check is in main CMakeLists.txt file
|
||||||
message(FATAL_ERROR "Python support in ML-IAP requires Python 3.6 or later")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(MLIAP_BINARY_DIR ${CMAKE_BINARY_DIR}/cython)
|
set(MLIAP_BINARY_DIR ${CMAKE_BINARY_DIR}/cython)
|
||||||
file(GLOB MLIAP_CYTHON_SRC CONFIGURE_DEPENDS ${LAMMPS_SOURCE_DIR}/ML-IAP/*.pyx)
|
file(GLOB MLIAP_CYTHON_SRC CONFIGURE_DEPENDS ${LAMMPS_SOURCE_DIR}/ML-IAP/*.pyx)
|
||||||
|
|||||||
@ -53,7 +53,13 @@ else()
|
|||||||
add_library(yaml-cpp::yaml-cpp ALIAS yaml-cpp)
|
add_library(yaml-cpp::yaml-cpp ALIAS yaml-cpp)
|
||||||
endif()
|
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})
|
set_target_properties(pace PROPERTIES CXX_EXTENSIONS ON OUTPUT_NAME lammps_pace${LAMMPS_MACHINE})
|
||||||
|
|
||||||
if(CMAKE_PROJECT_NAME STREQUAL "lammps")
|
if(CMAKE_PROJECT_NAME STREQUAL "lammps")
|
||||||
|
|||||||
@ -37,7 +37,7 @@ if(DOWNLOAD_QUIP)
|
|||||||
endforeach()
|
endforeach()
|
||||||
# Fix cmake crashing when MATH_LINKOPTS not set, required for e.g. recent Cray Programming Environment
|
# Fix cmake crashing when MATH_LINKOPTS not set, required for e.g. recent Cray Programming Environment
|
||||||
set(temp "${temp} -L/_DUMMY_PATH_\n")
|
set(temp "${temp} -L/_DUMMY_PATH_\n")
|
||||||
set(temp "${temp}PYTHON=python\nPIP=pip\nEXTRA_LINKOPTS=\n")
|
set(temp "${temp}PYTHON=${Python_EXECUTABLE}\nPIP=pip\nEXTRA_LINKOPTS=\n")
|
||||||
set(temp "${temp}HAVE_CP2K=0\nHAVE_VASP=0\nHAVE_TB=0\nHAVE_PRECON=1\nHAVE_LOTF=0\nHAVE_ONIOM=0\n")
|
set(temp "${temp}HAVE_CP2K=0\nHAVE_VASP=0\nHAVE_TB=0\nHAVE_PRECON=1\nHAVE_LOTF=0\nHAVE_ONIOM=0\n")
|
||||||
set(temp "${temp}HAVE_LOCAL_E_MIX=0\nHAVE_QC=0\nHAVE_GAP=1\nHAVE_DESCRIPTORS_NONCOMMERCIAL=1\n")
|
set(temp "${temp}HAVE_LOCAL_E_MIX=0\nHAVE_QC=0\nHAVE_GAP=1\nHAVE_DESCRIPTORS_NONCOMMERCIAL=1\n")
|
||||||
set(temp "${temp}HAVE_TURBOGAP=0\nHAVE_QR=1\nHAVE_THIRDPARTY=0\nHAVE_FX=0\nHAVE_SCME=0\nHAVE_MTP=0\n")
|
set(temp "${temp}HAVE_TURBOGAP=0\nHAVE_QR=1\nHAVE_THIRDPARTY=0\nHAVE_FX=0\nHAVE_SCME=0\nHAVE_MTP=0\n")
|
||||||
|
|||||||
@ -40,6 +40,13 @@ mark_as_advanced(PLUMED_URL)
|
|||||||
mark_as_advanced(PLUMED_MD5)
|
mark_as_advanced(PLUMED_MD5)
|
||||||
GetFallbackURL(PLUMED_URL PLUMED_FALLBACK)
|
GetFallbackURL(PLUMED_URL PLUMED_FALLBACK)
|
||||||
|
|
||||||
|
# adjust C++ standard support for self-compiled Plumed2
|
||||||
|
if(CMAKE_CXX_STANDARD GREATER 11)
|
||||||
|
set(PLUMED_CXX_STANDARD 14)
|
||||||
|
else()
|
||||||
|
set(PLUMED_CXX_STANDARD 11)
|
||||||
|
endif()
|
||||||
|
|
||||||
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND (CMAKE_CROSSCOMPILING))
|
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND (CMAKE_CROSSCOMPILING))
|
||||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||||
set(CROSS_CONFIGURE mingw64-configure)
|
set(CROSS_CONFIGURE mingw64-configure)
|
||||||
@ -55,7 +62,7 @@ if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND (CMAKE_CROSSCOMPILING))
|
|||||||
URL_MD5 ${PLUMED_MD5}
|
URL_MD5 ${PLUMED_MD5}
|
||||||
BUILD_IN_SOURCE 1
|
BUILD_IN_SOURCE 1
|
||||||
CONFIGURE_COMMAND ${CROSS_CONFIGURE} --disable-shared --disable-bsymbolic
|
CONFIGURE_COMMAND ${CROSS_CONFIGURE} --disable-shared --disable-bsymbolic
|
||||||
--disable-python --enable-cxx=11
|
--disable-python --enable-cxx=${PLUMED_CXX_STANDARD}
|
||||||
--enable-modules=-adjmat:+crystallization:-dimred:+drr:+eds:-fisst:+funnel:+logmfd:+manyrestraints:+maze:+opes:+multicolvar:-pamm:-piv:+s2cm:-sasa:-ves
|
--enable-modules=-adjmat:+crystallization:-dimred:+drr:+eds:-fisst:+funnel:+logmfd:+manyrestraints:+maze:+opes:+multicolvar:-pamm:-piv:+s2cm:-sasa:-ves
|
||||||
${PLUMED_CONFIG_OMP}
|
${PLUMED_CONFIG_OMP}
|
||||||
${PLUMED_CONFIG_MPI}
|
${PLUMED_CONFIG_MPI}
|
||||||
@ -142,7 +149,7 @@ else()
|
|||||||
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
|
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
|
||||||
${CONFIGURE_REQUEST_PIC}
|
${CONFIGURE_REQUEST_PIC}
|
||||||
--enable-modules=all
|
--enable-modules=all
|
||||||
--enable-cxx=11
|
--enable-cxx=${PLUMED_CXX_STANDARD}
|
||||||
--disable-python
|
--disable-python
|
||||||
${PLUMED_CONFIG_MPI}
|
${PLUMED_CONFIG_MPI}
|
||||||
${PLUMED_CONFIG_OMP}
|
${PLUMED_CONFIG_OMP}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
if(NOT Python_INTERPRETER)
|
if(NOT Python_INTERPRETER)
|
||||||
# backward compatibility with CMake before 3.12 and older LAMMPS documentation
|
# backward compatibility with older LAMMPS documentation
|
||||||
if(PYTHON_EXECUTABLE)
|
if(PYTHON_EXECUTABLE)
|
||||||
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
|
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -14,27 +14,16 @@ endif()
|
|||||||
option(DOWNLOAD_SCAFACOS "Download ScaFaCoS library instead of using an already installed one" ${DOWNLOAD_SCAFACOS_DEFAULT})
|
option(DOWNLOAD_SCAFACOS "Download ScaFaCoS library instead of using an already installed one" ${DOWNLOAD_SCAFACOS_DEFAULT})
|
||||||
if(DOWNLOAD_SCAFACOS)
|
if(DOWNLOAD_SCAFACOS)
|
||||||
message(STATUS "ScaFaCoS download requested - we will build our own")
|
message(STATUS "ScaFaCoS download requested - we will build our own")
|
||||||
set(SCAFACOS_URL "https://github.com/scafacos/scafacos/releases/download/v1.0.1/scafacos-1.0.1.tar.gz" CACHE STRING "URL for SCAFACOS tarball")
|
set(SCAFACOS_URL "https://github.com/scafacos/scafacos/releases/download/v1.0.4/scafacos-1.0.4.tar.gz" CACHE STRING "URL for SCAFACOS tarball")
|
||||||
set(SCAFACOS_MD5 "bd46d74e3296bd8a444d731bb10c1738" CACHE STRING "MD5 checksum of SCAFACOS tarball")
|
set(SCAFACOS_MD5 "23867540ec32e63ce71d6ecc105278d2" CACHE STRING "MD5 checksum of SCAFACOS tarball")
|
||||||
mark_as_advanced(SCAFACOS_URL)
|
mark_as_advanced(SCAFACOS_URL)
|
||||||
mark_as_advanced(SCAFACOS_MD5)
|
mark_as_advanced(SCAFACOS_MD5)
|
||||||
GetFallbackURL(SCAFACOS_URL SCAFACOS_FALLBACK)
|
GetFallbackURL(SCAFACOS_URL SCAFACOS_FALLBACK)
|
||||||
|
|
||||||
|
|
||||||
# version 1.0.1 needs a patch to compile and linke cleanly with GCC 10 and later.
|
|
||||||
file(DOWNLOAD ${LAMMPS_THIRDPARTY_URL}/scafacos-1.0.1-fix.diff ${CMAKE_CURRENT_BINARY_DIR}/scafacos-1.0.1.fix.diff
|
|
||||||
EXPECTED_HASH MD5=4baa1333bb28fcce102d505e1992d032)
|
|
||||||
|
|
||||||
find_program(HAVE_PATCH patch)
|
|
||||||
if(NOT HAVE_PATCH)
|
|
||||||
message(FATAL_ERROR "The 'patch' program is required to build the ScaFaCoS library")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
ExternalProject_Add(scafacos_build
|
ExternalProject_Add(scafacos_build
|
||||||
URL ${SCAFACOS_URL} ${SCAFACOS_FALLBACK}
|
URL ${SCAFACOS_URL} ${SCAFACOS_FALLBACK}
|
||||||
URL_MD5 ${SCAFACOS_MD5}
|
URL_MD5 ${SCAFACOS_MD5}
|
||||||
PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_BINARY_DIR}/scafacos-1.0.1.fix.diff
|
|
||||||
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --disable-doc
|
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --disable-doc
|
||||||
--enable-fcs-solvers=fmm,p2nfft,direct,ewald,p3m
|
--enable-fcs-solvers=fmm,p2nfft,direct,ewald,p3m
|
||||||
--with-internal-fftw --with-internal-pfft
|
--with-internal-fftw --with-internal-pfft
|
||||||
|
|||||||
@ -21,11 +21,11 @@ if(ENABLE_TESTING)
|
|||||||
# also only verified with Fedora Linux > 30 and Ubuntu 18.04 or 22.04+(Ubuntu 20.04 fails)
|
# also only verified with Fedora Linux > 30 and Ubuntu 18.04 or 22.04+(Ubuntu 20.04 fails)
|
||||||
if((CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if((CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
AND ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")))
|
AND ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")))
|
||||||
if(((CMAKE_LINUX_DISTRO STREQUAL "Ubuntu") AND
|
if(((CMAKE_LINUX_DISTRO STREQUAL "Ubuntu") AND (CMAKE_DISTRO_VERSION VERSION_GREATER_EQUAL 22.04))
|
||||||
((CMAKE_DISTRO_VERSION VERSION_LESS_EQUAL 18.04) OR (CMAKE_DISTRO_VERSION VERSION_GREATER_EQUAL 22.04)))
|
|
||||||
OR ((CMAKE_LINUX_DISTRO STREQUAL "Fedora") AND (CMAKE_DISTRO_VERSION VERSION_GREATER 30)))
|
OR ((CMAKE_LINUX_DISTRO STREQUAL "Fedora") AND (CMAKE_DISTRO_VERSION VERSION_GREATER 30)))
|
||||||
include(CheckCXXCompilerFlag)
|
include(CheckCXXCompilerFlag)
|
||||||
set(CMAKE_CUSTOM_LINKER_DEFAULT default)
|
set(CMAKE_CUSTOM_LINKER_DEFAULT default)
|
||||||
|
check_cxx_compiler_flag(--ld-path=${CMAKE_LINKER} HAVE_LD_PATH_FLAG)
|
||||||
check_cxx_compiler_flag(-fuse-ld=mold HAVE_MOLD_LINKER_FLAG)
|
check_cxx_compiler_flag(-fuse-ld=mold HAVE_MOLD_LINKER_FLAG)
|
||||||
check_cxx_compiler_flag(-fuse-ld=lld HAVE_LLD_LINKER_FLAG)
|
check_cxx_compiler_flag(-fuse-ld=lld HAVE_LLD_LINKER_FLAG)
|
||||||
check_cxx_compiler_flag(-fuse-ld=gold HAVE_GOLD_LINKER_FLAG)
|
check_cxx_compiler_flag(-fuse-ld=gold HAVE_GOLD_LINKER_FLAG)
|
||||||
@ -50,6 +50,17 @@ if(ENABLE_TESTING)
|
|||||||
if(NOT "${CMAKE_CUSTOM_LINKER}" STREQUAL "default")
|
if(NOT "${CMAKE_CUSTOM_LINKER}" STREQUAL "default")
|
||||||
target_link_options(lammps PUBLIC -fuse-ld=${CMAKE_CUSTOM_LINKER})
|
target_link_options(lammps PUBLIC -fuse-ld=${CMAKE_CUSTOM_LINKER})
|
||||||
endif()
|
endif()
|
||||||
|
if(HAVE_LD_PATH_FLAG)
|
||||||
|
if("${CMAKE_CUSTOM_LINKER}" STREQUAL "mold")
|
||||||
|
target_link_options(lammps PUBLIC --ld-path=${HAVE_MOLD_LINKER_BIN})
|
||||||
|
elseif("${CMAKE_CUSTOM_LINKER}" STREQUAL "lld")
|
||||||
|
target_link_options(lammps PUBLIC --ld-path=${HAVE_LLD_LINKER_BIN})
|
||||||
|
elseif("${CMAKE_CUSTOM_LINKER}" STREQUAL "gold")
|
||||||
|
target_link_options(lammps PUBLIC --ld-path=${HAVE_GOLD_LINKER_BIN})
|
||||||
|
elseif("${CMAKE_CUSTOM_LINKER}" STREQUAL "bfd")
|
||||||
|
target_link_options(lammps PUBLIC --ld-path=${HAVE_BFD_LINKER_BIN})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,10 @@ if(BUILD_TOOLS)
|
|||||||
add_executable(stl_bin2txt ${LAMMPS_TOOLS_DIR}/stl_bin2txt.cpp)
|
add_executable(stl_bin2txt ${LAMMPS_TOOLS_DIR}/stl_bin2txt.cpp)
|
||||||
install(TARGETS stl_bin2txt DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install(TARGETS stl_bin2txt DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
|
||||||
|
add_executable(reformat-json ${LAMMPS_TOOLS_DIR}/json/reformat-json.cpp)
|
||||||
|
target_include_directories(reformat-json PRIVATE ${LAMMPS_SOURCE_DIR})
|
||||||
|
install(TARGETS reformat-json DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
|
||||||
include(CheckGeneratorSupport)
|
include(CheckGeneratorSupport)
|
||||||
if(CMAKE_GENERATOR_SUPPORT_FORTRAN)
|
if(CMAKE_GENERATOR_SUPPORT_FORTRAN)
|
||||||
include(CheckLanguage)
|
include(CheckLanguage)
|
||||||
|
|||||||
@ -7,6 +7,11 @@ export LC_ALL=C
|
|||||||
BASEDIR="$(dirname "$0")"
|
BASEDIR="$(dirname "$0")"
|
||||||
EXENAME="$(basename "$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}"
|
PATH="${BASEDIR}/bin:${PATH}"
|
||||||
|
|
||||||
# append to LD_LIBRARY_PATH to prefer local (newer) libs
|
# 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.
|
# set some environment variables for LAMMPS etc.
|
||||||
LAMMPS_POTENTIALS="${BASEDIR}/share/lammps/potentials"
|
LAMMPS_POTENTIALS="${BASEDIR}/share/lammps/potentials"
|
||||||
MSI2LMP_LIBRARY="${BASEDIR}/share/lammps/frc_files"
|
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}" "$@"
|
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"
|
NEW_LIBRARY_PATH="/usr/local/lib64"
|
||||||
for s in $(echo $LD_LIBRARY_PATH | sed -e 's/:/ /g')
|
for s in $(echo $LD_LIBRARY_PATH | sed -e 's/:/ /g')
|
||||||
do \
|
do \
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
set(ALL_PACKAGES
|
set(ALL_PACKAGES
|
||||||
ADIOS
|
ADIOS
|
||||||
AMOEBA
|
AMOEBA
|
||||||
|
APIP
|
||||||
ASPHERE
|
ASPHERE
|
||||||
ATC
|
ATC
|
||||||
AWPMD
|
AWPMD
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
set(ALL_PACKAGES
|
set(ALL_PACKAGES
|
||||||
ADIOS
|
ADIOS
|
||||||
AMOEBA
|
AMOEBA
|
||||||
|
APIP
|
||||||
ASPHERE
|
ASPHERE
|
||||||
ATC
|
ATC
|
||||||
AWPMD
|
AWPMD
|
||||||
|
|||||||
@ -19,12 +19,19 @@ set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
|
|||||||
|
|
||||||
set(MPI_CXX "hipcc" CACHE STRING "" FORCE)
|
set(MPI_CXX "hipcc" CACHE STRING "" FORCE)
|
||||||
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
||||||
|
set(MPI_C "hipcc" CACHE STRING "" FORCE)
|
||||||
|
set(MPI_C_COMPILER "mpicc" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
|
# change as needed. This is for Fedora Linux 41 and 42
|
||||||
|
set(_libomp_root "/usr/lib/clang/18")
|
||||||
|
# we need to explicitly specify the include dir, since hipcc will
|
||||||
|
# compile each file twice and doesn't find omp.h the second time
|
||||||
|
|
||||||
unset(HAVE_OMP_H_INCLUDE CACHE)
|
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||||
set(OpenMP_C "hipcc" CACHE STRING "" FORCE)
|
set(OpenMP_C "hipcc" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
set(OpenMP_C_FLAGS "-fopenmp=libomp -I${_libomp_root}/include" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_CXX "hipcc" CACHE STRING "" FORCE)
|
set(OpenMP_CXX "hipcc" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
set(OpenMP_CXX_FLAGS "-fopenmp=libomp -I${_libomp_root}/include" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
||||||
set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE)
|
set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE)
|
||||||
|
|||||||
@ -1,10 +1,8 @@
|
|||||||
# preset that enables KOKKOS and selects CUDA compilation with OpenMP
|
# preset that enables KOKKOS and selects CUDA compilation with OpenMP
|
||||||
# enabled as well. This preselects CC 5.0 as default GPU arch, since
|
# enabled as well. The GPU architecture *must* match your hardware (If not manually set, Kokkos will try to autodetect it).
|
||||||
# that is compatible with all higher CC, but not the default CC 3.5
|
|
||||||
set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
|
set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
|
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ENABLE_CUDA ON CACHE BOOL "" FORCE)
|
set(Kokkos_ENABLE_CUDA ON CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ARCH_PASCAL60 ON CACHE BOOL "" FORCE)
|
|
||||||
set(BUILD_OMP ON CACHE BOOL "" FORCE)
|
set(BUILD_OMP ON CACHE BOOL "" FORCE)
|
||||||
get_filename_component(NVCC_WRAPPER_CMD ${CMAKE_CURRENT_SOURCE_DIR}/../lib/kokkos/bin/nvcc_wrapper ABSOLUTE)
|
get_filename_component(NVCC_WRAPPER_CMD ${CMAKE_CURRENT_SOURCE_DIR}/../lib/kokkos/bin/nvcc_wrapper ABSOLUTE)
|
||||||
set(CMAKE_CXX_COMPILER ${NVCC_WRAPPER_CMD} CACHE FILEPATH "" FORCE)
|
set(CMAKE_CXX_COMPILER ${NVCC_WRAPPER_CMD} CACHE FILEPATH "" FORCE)
|
||||||
|
|||||||
@ -1,22 +1,21 @@
|
|||||||
# preset that enables KOKKOS and selects HIP compilation with OpenMP
|
# preset that enables KOKKOS and selects HIP compilation withOUT OpenMP.
|
||||||
# enabled as well. Also sets some performance related compiler flags.
|
# Kokkos OpenMP is not compatible with the second pass of hipcc.
|
||||||
set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
|
set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
|
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE)
|
set(Kokkos_ENABLE_OPENMP OFF CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE)
|
set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ENABLE_HIP ON CACHE BOOL "" FORCE)
|
set(Kokkos_ENABLE_HIP ON CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ARCH_VEGA90A on CACHE BOOL "" FORCE)
|
set(Kokkos_ARCH_VEGA90A on CACHE BOOL "" FORCE)
|
||||||
set(Kokkos_ENABLE_HIP_MULTIPLE_KERNEL_INSTANTIATIONS ON CACHE BOOL "" FORCE)
|
set(Kokkos_ENABLE_HIP_MULTIPLE_KERNEL_INSTANTIATIONS ON CACHE BOOL "" FORCE)
|
||||||
set(BUILD_OMP ON CACHE BOOL "" FORCE)
|
set(BUILD_OMP ON CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
set(CMAKE_CXX_COMPILER hipcc CACHE STRING "" FORCE)
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -munsafe-fp-atomics" CACHE STRING "" FORCE)
|
||||||
set(CMAKE_TUNE_FLAGS "-munsafe-fp-atomics" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
# If KSPACE is also enabled, use CUFFT for FFTs
|
# If KSPACE is also enabled, use HIPFFT for FFTs
|
||||||
set(FFT_KOKKOS "HIPFFT" CACHE STRING "" FORCE)
|
set(FFT_KOKKOS "HIPFFT" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
# hide deprecation warnings temporarily for stable release
|
# hide deprecation warnings temporarily for stable release
|
||||||
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)
|
#set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
# these flags are needed to build with Cray MPICH on OLCF Crusher
|
# these flags are needed to build with Cray MPICH on OLCF Crusher
|
||||||
#-D CMAKE_CXX_FLAGS="-I/${MPICH_DIR}/include"
|
#-D CMAKE_CXX_FLAGS="-I/${MPICH_DIR}/include"
|
||||||
|
|||||||
@ -21,9 +21,10 @@ set(CMAKE_C_COMPILER icx CACHE STRING "" FORCE)
|
|||||||
set(CMAKE_Fortran_COMPILER "" CACHE STRING "" FORCE)
|
set(CMAKE_Fortran_COMPILER "" CACHE STRING "" FORCE)
|
||||||
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
||||||
set(CMAKE_CXX_STANDARD 17 CACHE STRING "" FORCE)
|
set(CMAKE_CXX_STANDARD 17 CACHE STRING "" FORCE)
|
||||||
# Silence everything
|
|
||||||
set(CMAKE_CXX_FLAGS "-w" CACHE STRING "" FORCE)
|
# set(_intel_sycl_flags " -w -fsycl -flink-huge-device-code -fsycl-targets=spir64_gen "
|
||||||
|
set(_intel_sycl_flags " -w -fsycl -fsycl-device-code-split=per_kernel -fsycl-targets=spir64_gen ")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_intel_sycl_flags}" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
#set(CMAKE_EXE_LINKER_FLAGS "-fsycl -flink-huge-device-code -fsycl-targets=spir64_gen " CACHE STRING "" FORCE)
|
#set(CMAKE_EXE_LINKER_FLAGS "-fsycl -flink-huge-device-code -fsycl-targets=spir64_gen " CACHE STRING "" FORCE)
|
||||||
#set(CMAKE_TUNE_FLAGS "-O3 -fsycl -fsycl-device-code-split=per_kernel -fsycl-targets=spir64_gen" CACHE STRING "" FORCE)
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsycl -flink-huge-device-code " CACHE STRING "" FORCE)
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "-fsycl -flink-huge-device-code " CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_TUNE_FLAGS "-O3 -fsycl -fsycl-device-code-split=per_kernel " CACHE STRING "" FORCE)
|
|
||||||
|
|||||||
@ -14,5 +14,7 @@ set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)
|
|||||||
set(CMAKE_CXX_COMPILER clang++ CACHE STRING "" FORCE)
|
set(CMAKE_CXX_COMPILER clang++ CACHE STRING "" FORCE)
|
||||||
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
||||||
set(CMAKE_CXX_STANDARD 17 CACHE STRING "" FORCE)
|
set(CMAKE_CXX_STANDARD 17 CACHE STRING "" FORCE)
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS "-Xsycl-target-frontend -O3" CACHE STRING "" FORCE)
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xsycl-target-frontend -O3 " CACHE STRING "" FORCE)
|
||||||
set(CMAKE_TUNE_FLAGS "-fgpu-inline-threshold=100000 -Xsycl-target-frontend -O3 -Xsycl-target-frontend -ffp-contract=on -Wno-unknown-cuda-version" CACHE STRING "" FORCE)
|
|
||||||
|
set(_intel_sycl_flags "-fgpu-inline-threshold=100000 -Xsycl-target-frontend -O3 -Xsycl-target-frontend -ffp-contract=on -Wno-unknown-cuda-version")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_intel_sycl_flags}" CACHE STRING "" FORCE)
|
||||||
|
|||||||
@ -91,7 +91,7 @@ endif()
|
|||||||
set(DOWNLOAD_VORO ON CACHE BOOL "" FORCE)
|
set(DOWNLOAD_VORO ON CACHE BOOL "" FORCE)
|
||||||
set(DOWNLOAD_EIGEN3 ON CACHE BOOL "" FORCE)
|
set(DOWNLOAD_EIGEN3 ON CACHE BOOL "" FORCE)
|
||||||
set(LAMMPS_MEMALIGN "0" CACHE STRING "" FORCE)
|
set(LAMMPS_MEMALIGN "0" CACHE STRING "" FORCE)
|
||||||
set(CMAKE_TUNE_FLAGS "-Wno-missing-include-dirs" CACHE STRING "" FORCE)
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-include-dirs" CACHE STRING "" FORCE)
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-stdcall-fixup,--as-needed,-lssp" CACHE STRING "" FORCE)
|
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-stdcall-fixup,--as-needed,-lssp" CACHE STRING "" FORCE)
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--enable-stdcall-fixup,--as-needed,-lssp" CACHE STRING "" FORCE)
|
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--enable-stdcall-fixup,--as-needed,-lssp" CACHE STRING "" FORCE)
|
||||||
set(BUILD_TOOLS ON CACHE BOOL "" FORCE)
|
set(BUILD_TOOLS ON CACHE BOOL "" FORCE)
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
set(PACKAGES_WITH_LIB
|
set(PACKAGES_WITH_LIB
|
||||||
ADIOS
|
ADIOS
|
||||||
|
APIP
|
||||||
ATC
|
ATC
|
||||||
AWPMD
|
AWPMD
|
||||||
COMPRESS
|
COMPRESS
|
||||||
|
|||||||
@ -5,4 +5,4 @@ set(CMAKE_C_COMPILER "icx" CACHE STRING "" FORCE)
|
|||||||
set(CMAKE_Fortran_COMPILER "ifx" CACHE STRING "" FORCE)
|
set(CMAKE_Fortran_COMPILER "ifx" CACHE STRING "" FORCE)
|
||||||
set(INTEL_LRT_MODE "C++11" CACHE STRING "" FORCE)
|
set(INTEL_LRT_MODE "C++11" CACHE STRING "" FORCE)
|
||||||
unset(HAVE_OMP_H_INCLUDE CACHE)
|
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||||
set(CMAKE_TUNE_FLAGS -Wno-unused-command-line-argument)
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-command-line-argument" CACHE STRING "" FORCE)
|
||||||
|
|||||||
64
doc/Makefile
@ -17,9 +17,11 @@ MATHJAXTAG = 3.2.2
|
|||||||
|
|
||||||
PYTHON = $(word 3,$(shell type python3))
|
PYTHON = $(word 3,$(shell type python3))
|
||||||
DOXYGEN = $(word 3,$(shell type doxygen))
|
DOXYGEN = $(word 3,$(shell type doxygen))
|
||||||
|
PANDOC = $(word 3,$(shell type pandoc))
|
||||||
HAS_PYTHON3 = NO
|
HAS_PYTHON3 = NO
|
||||||
HAS_DOXYGEN = NO
|
HAS_DOXYGEN = NO
|
||||||
HAS_PDFLATEX = NO
|
HAS_PDFLATEX = NO
|
||||||
|
HAS_PANDOC = NO
|
||||||
|
|
||||||
ifeq ($(shell type python3 >/dev/null 2>&1; echo $$?), 0)
|
ifeq ($(shell type python3 >/dev/null 2>&1; echo $$?), 0)
|
||||||
HAS_PYTHON3 = YES
|
HAS_PYTHON3 = YES
|
||||||
@ -31,10 +33,14 @@ endif
|
|||||||
|
|
||||||
ifeq ($(shell type pdflatex >/dev/null 2>&1; echo $$?), 0)
|
ifeq ($(shell type pdflatex >/dev/null 2>&1; echo $$?), 0)
|
||||||
ifeq ($(shell type latexmk >/dev/null 2>&1; echo $$?), 0)
|
ifeq ($(shell type latexmk >/dev/null 2>&1; echo $$?), 0)
|
||||||
HAS_PDFLATEX = YES
|
HAS_PDFLATEX = YES
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(shell type pandoc >/dev/null 2>&1; echo $$?), 0)
|
||||||
|
HAS_PANDOC = YES
|
||||||
|
endif
|
||||||
|
|
||||||
# override settings for PIP commands
|
# override settings for PIP commands
|
||||||
# PIP_OPTIONS = --cert /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt --proxy http://proxy.mydomain.org
|
# PIP_OPTIONS = --cert /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt --proxy http://proxy.mydomain.org
|
||||||
|
|
||||||
@ -45,8 +51,9 @@ SPHINXEXTRA = -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiprocess
|
|||||||
# we only want to use explicitly listed files.
|
# we only want to use explicitly listed files.
|
||||||
DOXYFILES = $(shell sed -n -e 's/\#.*$$//' -e '/^ *INPUT \+=/,/^[A-Z_]\+ \+=/p' doxygen/Doxyfile.in | sed -e 's/@LAMMPS_SOURCE_DIR@/..\/src/g' -e 's/\\//g' -e 's/ \+/ /' -e 's/[A-Z_]\+ \+= *\(YES\|NO\|\)//')
|
DOXYFILES = $(shell sed -n -e 's/\#.*$$//' -e '/^ *INPUT \+=/,/^[A-Z_]\+ \+=/p' doxygen/Doxyfile.in | sed -e 's/@LAMMPS_SOURCE_DIR@/..\/src/g' -e 's/\\//g' -e 's/ \+/ /' -e 's/[A-Z_]\+ \+= *\(YES\|NO\|\)//')
|
||||||
|
|
||||||
.PHONY: help clean-all clean clean-spelling epub mobi html pdf spelling anchor_check style_check char_check role_check xmlgen fasthtml
|
.PHONY: help clean-all clean clean-spelling epub mobi html pdf spelling anchor_check style_check char_check role_check xmlgen fasthtml fasthtml-init
|
||||||
|
|
||||||
|
FASTHTMLFILES = $(patsubst $(RSTDIR)/%.rst,fasthtml/%.html,$(wildcard $(RSTDIR)/*rst))
|
||||||
# ------------------------------------------
|
# ------------------------------------------
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@ -92,8 +99,6 @@ html: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJ
|
|||||||
@(\
|
@(\
|
||||||
. $(VENV)/bin/activate ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
. $(VENV)/bin/activate ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
||||||
sphinx-build -E $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) html ;\
|
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;\
|
ln -sf Manual.html html/index.html;\
|
||||||
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
||||||
echo "############################################" ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
echo "############################################" ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
||||||
@ -105,6 +110,8 @@ html: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJ
|
|||||||
env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst ;\
|
env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst ;\
|
||||||
env LC_ALL=C grep -n '\(ref\|doc\)`[^`]' $(RSTDIR)/*.rst ;\
|
env LC_ALL=C grep -n '\(ref\|doc\)`[^`]' $(RSTDIR)/*.rst ;\
|
||||||
$(PYTHON) $(BUILDDIR)/utils/check-styles.py -s ../src -d src ;\
|
$(PYTHON) $(BUILDDIR)/utils/check-styles.py -s ../src -d src ;\
|
||||||
|
env LC_ALL=C grep -n -E '^ *\.\. [a-z0-9]+:(\s+.*|)$$' \
|
||||||
|
$(RSTDIR)/*.rst ../src/*.{cpp,h} ../src/*/*.{cpp,h} ;\
|
||||||
echo "############################################" ;\
|
echo "############################################" ;\
|
||||||
deactivate ;\
|
deactivate ;\
|
||||||
)
|
)
|
||||||
@ -116,25 +123,23 @@ html: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJ
|
|||||||
@rm -rf html/PDF/.[sg]*
|
@rm -rf html/PDF/.[sg]*
|
||||||
@echo "Build finished. The HTML pages are in doc/html."
|
@echo "Build finished. The HTML pages are in doc/html."
|
||||||
|
|
||||||
fasthtml: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
|
fasthtml: fasthtml-init $(FASTHTMLFILES)
|
||||||
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
|
|
||||||
@$(MAKE) $(MFLAGS) -C graphviz all
|
|
||||||
@mkdir -p fasthtml
|
|
||||||
@(\
|
|
||||||
. $(VENV)/bin/activate ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
|
||||||
sphinx-build $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/fasthtml/doctrees $(RSTDIR) fasthtml ;\
|
|
||||||
touch $(RSTDIR)/Fortran.rst ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
|
||||||
sphinx-build $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/fasthtml/doctrees $(RSTDIR) fasthtml ;\
|
|
||||||
deactivate ;\
|
|
||||||
)
|
|
||||||
@rm -rf fasthtml/_sources
|
|
||||||
@rm -rf fasthtml/PDF
|
|
||||||
@rm -rf fasthtml/USER
|
|
||||||
@rm -rf fasthtml/JPG
|
|
||||||
@cp -r src/PDF fasthtml/PDF
|
|
||||||
@rm -rf fasthtml/PDF/.[sg]*
|
|
||||||
@echo "Fast HTML build finished. The HTML pages are in doc/fasthtml."
|
@echo "Fast HTML build finished. The HTML pages are in doc/fasthtml."
|
||||||
|
|
||||||
|
fasthtml-init:
|
||||||
|
@mkdir -p fasthtml/JPG
|
||||||
|
@cp src/JPG/*.* fasthtml/JPG
|
||||||
|
@cp $(RSTDIR)/accel_styles.rst $(RSTDIR)/lepton_expression.rst fasthtml/
|
||||||
|
@cp $(BUILDDIR)/utils/pandoc.css fasthtml/
|
||||||
|
|
||||||
|
fasthtml/%.html: $(RSTDIR)/%.rst
|
||||||
|
@if [ "$(HAS_PANDOC)" == "NO" ] ; then echo "Make 'fasthtml' requires the 'pandoc' software" 1>&2; exit 1; fi
|
||||||
|
@mkdir -p fasthtml
|
||||||
|
@echo converting $< to $@
|
||||||
|
@sed -e 's/\\AA/\\mathring{\\mathrm{A}}/g' $< > fasthtml/$*.temp.rst
|
||||||
|
@pandoc -s --mathml --css="pandoc.css" --template=$(BUILDDIR)/utils/pandoc.html --metadata title="$@" -o $@ fasthtml/$*.temp.rst
|
||||||
|
@rm -f fasthtml/$*.temp.rst
|
||||||
|
|
||||||
spelling: xmlgen globbed-tocs $(SPHINXCONFIG)/conf.py $(VENV) $(SPHINXCONFIG)/false_positives.txt
|
spelling: xmlgen globbed-tocs $(SPHINXCONFIG)/conf.py $(VENV) $(SPHINXCONFIG)/false_positives.txt
|
||||||
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
|
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
|
||||||
@(\
|
@(\
|
||||||
@ -155,8 +160,6 @@ epub: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
|
|||||||
@(\
|
@(\
|
||||||
. $(VENV)/bin/activate ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
. $(VENV)/bin/activate ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
||||||
sphinx-build -E $(SPHINXEXTRA) -b epub -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) epub ;\
|
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;\
|
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
||||||
deactivate ;\
|
deactivate ;\
|
||||||
)
|
)
|
||||||
@ -176,8 +179,6 @@ pdf: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
|
|||||||
@(\
|
@(\
|
||||||
. $(VENV)/bin/activate ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
. $(VENV)/bin/activate ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
||||||
sphinx-build -E $(SPHINXEXTRA) -b latex -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) latex ;\
|
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;\
|
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
||||||
echo "############################################" ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
echo "############################################" ; env PYTHONWARNINGS= PYTHONDONTWRITEBYTECODE=1 \
|
||||||
rst_anchor_check src/*.rst ;\
|
rst_anchor_check src/*.rst ;\
|
||||||
@ -188,6 +189,8 @@ pdf: xmlgen globbed-tocs $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
|
|||||||
env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst ;\
|
env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst ;\
|
||||||
env LC_ALL=C grep -n '\(ref\|doc\)`[^`]' $(RSTDIR)/*.rst ;\
|
env LC_ALL=C grep -n '\(ref\|doc\)`[^`]' $(RSTDIR)/*.rst ;\
|
||||||
$(PYTHON) utils/check-styles.py -s ../src -d src ;\
|
$(PYTHON) utils/check-styles.py -s ../src -d src ;\
|
||||||
|
env LC_ALL=C grep -n -E '^ *\.\. [a-z0-9]+:(\s+.*|)$$' \
|
||||||
|
$(RSTDIR)/*.rst ../src/*.{cpp,h} ../src/*/*.{cpp,h} ;\
|
||||||
echo "############################################" ;\
|
echo "############################################" ;\
|
||||||
deactivate ;\
|
deactivate ;\
|
||||||
)
|
)
|
||||||
@ -237,6 +240,8 @@ role_check :
|
|||||||
@( env LC_ALL=C grep -n ' `[^`]\+<[a-z][^`]\+`[^_]' $(RSTDIR)/*.rst && exit 1 || : )
|
@( env LC_ALL=C grep -n ' `[^`]\+<[a-z][^`]\+`[^_]' $(RSTDIR)/*.rst && exit 1 || : )
|
||||||
@( env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst && exit 1 || : )
|
@( env LC_ALL=C grep -n ':\(ref\|doc\):[^`]' $(RSTDIR)/*.rst && exit 1 || : )
|
||||||
@( env LC_ALL=C grep -n '\(ref\|doc\)`[^`]' $(RSTDIR)/*.rst && exit 1 || : )
|
@( env LC_ALL=C grep -n '\(ref\|doc\)`[^`]' $(RSTDIR)/*.rst && exit 1 || : )
|
||||||
|
@( env LC_ALL=C grep -n -E '^ *\.\. [a-z0-9]+:(\s+.*|)$$' \
|
||||||
|
$(RSTDIR)/*.rst ../src/*.{cpp,h} ../src/*/*.{cpp,h} && exit 1 || : )
|
||||||
|
|
||||||
link_check : $(VENV) html
|
link_check : $(VENV) html
|
||||||
@(\
|
@(\
|
||||||
@ -245,6 +250,15 @@ link_check : $(VENV) html
|
|||||||
deactivate ;\
|
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
|
xmlgen : doxygen/xml/index.xml
|
||||||
|
|
||||||
doxygen/Doxyfile: doxygen/Doxyfile.in
|
doxygen/Doxyfile: doxygen/Doxyfile.in
|
||||||
|
|||||||
20
doc/README
@ -22,12 +22,12 @@ doxygen-warn.log logfile with warnings from running doxygen
|
|||||||
and:
|
and:
|
||||||
|
|
||||||
github-development-workflow.md notes on the LAMMPS development workflow
|
github-development-workflow.md notes on the LAMMPS development workflow
|
||||||
include-file-conventions.md notes on LAMMPS' include file conventions
|
|
||||||
documentation_conventions.md notes on writing documentation for LAMMPS
|
documentation_conventions.md notes on writing documentation for LAMMPS
|
||||||
|
|
||||||
If you downloaded a LAMMPS tarball from www.lammps.org, then the html
|
If you downloaded a LAMMPS tarball from www.lammps.org, then the html
|
||||||
folder and the PDF manual should be included. If you downloaded LAMMPS
|
folder and the PDF manual should be included. If you downloaded LAMMPS
|
||||||
from GitHub then you either need to build them.
|
using GitHub then you either need to build them yourself or read the
|
||||||
|
online version at https://docs.lammps.org/
|
||||||
|
|
||||||
You can build the HTML and PDF files yourself, by typing "make html"
|
You can build the HTML and PDF files yourself, by typing "make html"
|
||||||
or by "make pdf", respectively. This requires various tools and files.
|
or by "make pdf", respectively. This requires various tools and files.
|
||||||
@ -39,10 +39,10 @@ environment and local folders.
|
|||||||
|
|
||||||
Installing prerequisites for the documentation build
|
Installing prerequisites for the documentation build
|
||||||
|
|
||||||
To run the HTML documention build toolchain, python 3.x, doxygen, git,
|
To run the HTML documention build toolchain, python 3.8 or later,
|
||||||
and the venv python module have to be installed if not already available.
|
doxygen 1.8.10 or later, git, and the venv python module have to be
|
||||||
Also internet access is initially required to download external files
|
installed if not already available. Also internet access is initially
|
||||||
and tools.
|
required to download external files and tools.
|
||||||
|
|
||||||
Building the PDF format manual requires in addition a compatible LaTeX
|
Building the PDF format manual requires in addition a compatible LaTeX
|
||||||
installation with support for PDFLaTeX and several add-on LaTeX packages
|
installation with support for PDFLaTeX and several add-on LaTeX packages
|
||||||
@ -52,16 +52,24 @@ installed. This includes:
|
|||||||
- babel
|
- babel
|
||||||
- capt-of
|
- capt-of
|
||||||
- cmap
|
- cmap
|
||||||
|
- dvipng
|
||||||
|
- ellipse
|
||||||
- fncychap
|
- fncychap
|
||||||
|
- fontawesom
|
||||||
- framed
|
- framed
|
||||||
- geometry
|
- geometry
|
||||||
|
- gyre
|
||||||
- hyperref
|
- hyperref
|
||||||
- hypcap
|
- hypcap
|
||||||
- needspace
|
- needspace
|
||||||
|
- pict2e
|
||||||
- times
|
- times
|
||||||
- tabulary
|
- tabulary
|
||||||
|
- titlesec
|
||||||
- upquote
|
- upquote
|
||||||
- wrapfig
|
- wrapfig
|
||||||
|
- xindy
|
||||||
|
|
||||||
Also the latexmk script is required to run PDFLaTeX and related tools.
|
Also the latexmk script is required to run PDFLaTeX and related tools.
|
||||||
the required number of times to have self-consistent output and include
|
the required number of times to have self-consistent output and include
|
||||||
updated bibliography and indices.
|
updated bibliography and indices.
|
||||||
|
|||||||
@ -5,13 +5,13 @@ digraph releases {
|
|||||||
github -> develop [label="Merge commits"];
|
github -> develop [label="Merge commits"];
|
||||||
{
|
{
|
||||||
rank = "same";
|
rank = "same";
|
||||||
work [shape="none" label="Development branches:"]
|
work [shape="none" label="Development branches:" fontname="bold"]
|
||||||
develop [label="'develop' branch" height=0.75];
|
develop [label="'develop' branch" height=0.75];
|
||||||
maintenance [label="'maintenance' branch" height=0.75];
|
maintenance [label="'maintenance' branch" height=0.75];
|
||||||
};
|
};
|
||||||
{
|
{
|
||||||
rank = "same";
|
rank = "same";
|
||||||
upload [shape="none" label="Release branches:"]
|
upload [shape="none" label="Release branches:" fontname="bold"]
|
||||||
release [label="'release' branch" height=0.75];
|
release [label="'release' branch" height=0.75];
|
||||||
stable [label="'stable' branch" height=0.75];
|
stable [label="'stable' branch" height=0.75];
|
||||||
};
|
};
|
||||||
@ -22,7 +22,7 @@ digraph releases {
|
|||||||
maintenance -> stable [label="Updates to stable release"];
|
maintenance -> stable [label="Updates to stable release"];
|
||||||
{
|
{
|
||||||
rank = "same";
|
rank = "same";
|
||||||
tag [shape="none" label="Applied tags:"];
|
tag [shape="none" label="Applied tags:" fontname="bold"];
|
||||||
patchtag [shape="box" label="patch_<date>"];
|
patchtag [shape="box" label="patch_<date>"];
|
||||||
stabletag [shape="box" label="stable_<date>"];
|
stabletag [shape="box" label="stable_<date>"];
|
||||||
updatetag [shape="box" label="stable_<date>_update<num>"];
|
updatetag [shape="box" label="stable_<date>_update<num>"];
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
.TH LAMMPS "1" "4 February 2025" "2025-02-04"
|
.TH LAMMPS "1" "12 June 2025" "2025-06-12"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
.B LAMMPS
|
.B LAMMPS
|
||||||
\- Molecular Dynamics Simulator. Version 4 February 2025
|
\- Molecular Dynamics Simulator. Version 12 June 2025
|
||||||
|
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B lmp
|
.B lmp
|
||||||
|
|||||||
@ -17,6 +17,7 @@ section of the manual.
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
|
Build_prerequisites
|
||||||
Build_cmake
|
Build_cmake
|
||||||
Build_make
|
Build_make
|
||||||
Build_link
|
Build_link
|
||||||
|
|||||||
@ -212,11 +212,7 @@ LAMMPS.
|
|||||||
You can tell CMake to look for a specific compiler with setting
|
You can tell CMake to look for a specific compiler with setting
|
||||||
CMake variables (listed below) during configuration. For a few
|
CMake variables (listed below) during configuration. For a few
|
||||||
common choices, there are also presets in the ``cmake/presets``
|
common choices, there are also presets in the ``cmake/presets``
|
||||||
folder. For convenience, there is a ``CMAKE_TUNE_FLAGS`` variable
|
folder. You may also specify the corresponding ``CMAKE_*_FLAGS``
|
||||||
that can be set to apply global compiler options (applied to
|
|
||||||
compilation only), to be used for adding compiler or host specific
|
|
||||||
optimization flags in addition to the "flags" variables listed
|
|
||||||
below. You may also specify the corresponding ``CMAKE_*_FLAGS``
|
|
||||||
variables individually, if you want to experiment with alternate
|
variables individually, if you want to experiment with alternate
|
||||||
optimization flags. You should specify all 3 compilers, so that
|
optimization flags. You should specify all 3 compilers, so that
|
||||||
the (few) LAMMPS source files written in C or Fortran are built
|
the (few) LAMMPS source files written in C or Fortran are built
|
||||||
@ -266,10 +262,6 @@ LAMMPS.
|
|||||||
``-C ../cmake/presets/pgi.cmake`` will switch the compiler to the PGI compilers,
|
``-C ../cmake/presets/pgi.cmake`` will switch the compiler to the PGI compilers,
|
||||||
and ``-C ../cmake/presets/nvhpc.cmake`` will switch to the NVHPC compilers.
|
and ``-C ../cmake/presets/nvhpc.cmake`` will switch to the NVHPC compilers.
|
||||||
|
|
||||||
Furthermore, you can set ``CMAKE_TUNE_FLAGS`` to specifically add
|
|
||||||
compiler flags to tune for optimal performance on given hosts.
|
|
||||||
This variable is empty by default.
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
When the cmake command completes, it prints a summary to the
|
When the cmake command completes, it prints a summary to the
|
||||||
|
|||||||
@ -52,9 +52,9 @@ software or for people that want to modify or extend LAMMPS.
|
|||||||
compilers can be configured and built concurrently from the same
|
compilers can be configured and built concurrently from the same
|
||||||
source tree.
|
source tree.
|
||||||
- Simplified packaging of LAMMPS for Linux distributions, environment
|
- Simplified packaging of LAMMPS for Linux distributions, environment
|
||||||
modules, or automated build tools like `Homebrew <https://brew.sh/>`_.
|
modules, or automated build tools like `Spack <https://spack.io>`_
|
||||||
- Integration of automated unit and regression testing (the LAMMPS side
|
or `Homebrew <https://brew.sh/>`_.
|
||||||
of this is still under active development).
|
- Integration of automated unit and regression testing.
|
||||||
|
|
||||||
.. _cmake_build:
|
.. _cmake_build:
|
||||||
|
|
||||||
@ -119,6 +119,13 @@ configured) and additional files like LAMMPS API headers, manpages,
|
|||||||
potential and force field files. The location of the installation tree
|
potential and force field files. The location of the installation tree
|
||||||
defaults to ``${HOME}/.local``.
|
defaults to ``${HOME}/.local``.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
If you have set `-D CMAKE_INSTALL_PREFIX` to install LAMMPS into a
|
||||||
|
system location on a Linux machine , you may also have to run (as
|
||||||
|
root) the `ldconfig` program to update the cache file for fast lookup
|
||||||
|
of system shared libraries.
|
||||||
|
|
||||||
.. _cmake_options:
|
.. _cmake_options:
|
||||||
|
|
||||||
Configuration and build options
|
Configuration and build options
|
||||||
|
|||||||
@ -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:
|
.. _iwyu_processing:
|
||||||
|
|
||||||
Report missing and unneeded '#include' statements (CMake only)
|
Report missing and unneeded '#include' statements (CMake only)
|
||||||
@ -523,7 +501,7 @@ to do this to install it via pip:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. 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
|
After post-processing with ``gen_coverage_html`` the results are in
|
||||||
a folder ``coverage_html`` and can be viewed with a web browser.
|
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
|
:columns: 6
|
||||||
|
|
||||||
* :ref:`ADIOS <adios>`
|
* :ref:`ADIOS <adios>`
|
||||||
|
* :ref:`APIP <apip>`
|
||||||
* :ref:`ATC <atc>`
|
* :ref:`ATC <atc>`
|
||||||
* :ref:`AWPMD <awpmd>`
|
* :ref:`AWPMD <awpmd>`
|
||||||
* :ref:`COLVARS <colvar>`
|
* :ref:`COLVARS <colvar>`
|
||||||
@ -255,11 +256,10 @@ Traditional make
|
|||||||
|
|
||||||
Before building LAMMPS, you must build the GPU library in ``lib/gpu``\ .
|
Before building LAMMPS, you must build the GPU library in ``lib/gpu``\ .
|
||||||
You can do this manually if you prefer; follow the instructions in
|
You can do this manually if you prefer; follow the instructions in
|
||||||
``lib/gpu/README``. Note that the GPU library uses MPI calls, so you must
|
``lib/gpu/README``. Note that the GPU library uses MPI calls, so you
|
||||||
use the same MPI library (or the STUBS library) settings as the main
|
must use the same MPI library (or the STUBS library) settings as the
|
||||||
LAMMPS code. This also applies to the ``-DLAMMPS_BIGBIG``\ ,
|
main LAMMPS code. This also applies to the ``-DLAMMPS_BIGBIG`` or
|
||||||
``-DLAMMPS_SMALLBIG``\ , or ``-DLAMMPS_SMALLSMALL`` settings in whichever
|
``-DLAMMPS_SMALLBIG`` settings in whichever Makefile you use.
|
||||||
Makefile you use.
|
|
||||||
|
|
||||||
You can also build the library in one step from the ``lammps/src`` dir,
|
You can also build the library in one step from the ``lammps/src`` dir,
|
||||||
using a command like these, which simply invokes the ``lib/gpu/Install.py``
|
using a command like these, which simply invokes the ``lib/gpu/Install.py``
|
||||||
@ -612,6 +612,12 @@ They must be specified in uppercase.
|
|||||||
* - ZEN3
|
* - ZEN3
|
||||||
- HOST
|
- HOST
|
||||||
- AMD Zen3 architecture
|
- AMD Zen3 architecture
|
||||||
|
* - ZEN4
|
||||||
|
- HOST
|
||||||
|
- AMD Zen4 architecture
|
||||||
|
* - ZEN5
|
||||||
|
- HOST
|
||||||
|
- AMD Zen5 architecture
|
||||||
* - RISCV_SG2042
|
* - RISCV_SG2042
|
||||||
- HOST
|
- HOST
|
||||||
- SG2042 (RISC-V) CPUs
|
- SG2042 (RISC-V) CPUs
|
||||||
@ -666,6 +672,12 @@ They must be specified in uppercase.
|
|||||||
* - HOPPER90
|
* - HOPPER90
|
||||||
- GPU
|
- GPU
|
||||||
- NVIDIA Hopper generation CC 9.0
|
- NVIDIA Hopper generation CC 9.0
|
||||||
|
* - BLACKWELL100
|
||||||
|
- GPU
|
||||||
|
- NVIDIA Blackwell generation CC 10.0
|
||||||
|
* - BLACKWELL120
|
||||||
|
- GPU
|
||||||
|
- NVIDIA Blackwell generation CC 12.0
|
||||||
* - AMD_GFX906
|
* - AMD_GFX906
|
||||||
- GPU
|
- GPU
|
||||||
- AMD GPU MI50/60
|
- AMD GPU MI50/60
|
||||||
@ -714,8 +726,11 @@ They must be specified in uppercase.
|
|||||||
* - INTEL_PVC
|
* - INTEL_PVC
|
||||||
- GPU
|
- GPU
|
||||||
- Intel GPU Ponte Vecchio
|
- Intel GPU Ponte Vecchio
|
||||||
|
* - INTEL_DG2
|
||||||
|
- GPU
|
||||||
|
- Intel GPU DG2
|
||||||
|
|
||||||
This list was last updated for version 4.5.1 of the Kokkos library.
|
This list was last updated for version 4.6.2 of the Kokkos library.
|
||||||
|
|
||||||
.. tabs::
|
.. tabs::
|
||||||
|
|
||||||
@ -1139,11 +1154,10 @@ POEMS package
|
|||||||
PYTHON package
|
PYTHON package
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
Building with the PYTHON package requires you have a the Python development
|
Building with the PYTHON package requires you have a the Python
|
||||||
headers and library available on your system, which needs to be a Python 2.7
|
development headers and library available on your system, which
|
||||||
version or a Python 3.x version. Since support for Python 2.x has ended,
|
needs to be Python version 3.6 or later. See ``lib/python/README``
|
||||||
using Python 3.x is strongly recommended. See ``lib/python/README`` for
|
for additional details.
|
||||||
additional details.
|
|
||||||
|
|
||||||
.. tabs::
|
.. tabs::
|
||||||
|
|
||||||
@ -1159,7 +1173,7 @@ additional details.
|
|||||||
set the Python_EXECUTABLE variable to specify which Python
|
set the Python_EXECUTABLE variable to specify which Python
|
||||||
interpreter should be used. Note note that you will also need to
|
interpreter should be used. Note note that you will also need to
|
||||||
have the development headers installed for this version,
|
have the development headers installed for this version,
|
||||||
e.g. python2-devel.
|
e.g. python3-devel.
|
||||||
|
|
||||||
.. tab:: Traditional make
|
.. tab:: Traditional make
|
||||||
|
|
||||||
@ -1271,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:
|
||||||
|
|
||||||
ATC package
|
ATC package
|
||||||
|
|||||||
@ -30,9 +30,9 @@ additional tools to be available and functioning.
|
|||||||
* A Bourne shell compatible "Unix" shell program (frequently this is ``bash``)
|
* A Bourne shell compatible "Unix" shell program (frequently this is ``bash``)
|
||||||
* A few shell utilities: ``ls``, ``mv``, ``ln``, ``rm``, ``grep``, ``sed``, ``tr``, ``cat``, ``touch``, ``diff``, ``dirname``
|
* A few shell utilities: ``ls``, ``mv``, ``ln``, ``rm``, ``grep``, ``sed``, ``tr``, ``cat``, ``touch``, ``diff``, ``dirname``
|
||||||
* Python (optional, required for ``make lib-<pkg>`` in the ``src``
|
* Python (optional, required for ``make lib-<pkg>`` in the ``src``
|
||||||
folder). Python scripts are currently tested with python 2.7 and
|
folder). Python scripts are currently tested with 3.6 to 3.11.
|
||||||
3.6 to 3.11. The procedure for :doc:`building the documentation
|
The procedure for :doc:`building the documentation <Build_manual>`
|
||||||
<Build_manual>` *requires* Python 3.5 or later.
|
*requires* Python 3.8 or later.
|
||||||
|
|
||||||
Getting started
|
Getting started
|
||||||
^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^
|
||||||
|
|||||||
@ -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.
|
internet access to download additional files and tools are required.
|
||||||
This download is usually only required once or after the documentation
|
This download is usually only required once or after the documentation
|
||||||
folder is returned to a pristine state with ``make clean-all``.
|
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
|
For the documentation build a python virtual environment is set up in
|
||||||
the folder ``doc/docenv`` and various python packages are installed into
|
the folder ``doc/docenv`` and various python packages are installed into
|
||||||
@ -78,11 +80,11 @@ folder. The following ``make`` commands are available:
|
|||||||
make epub # generate LAMMPS.epub in ePUB format using Sphinx
|
make epub # generate LAMMPS.epub in ePUB format using Sphinx
|
||||||
make mobi # generate LAMMPS.mobi in MOBI format using ebook-convert
|
make mobi # generate LAMMPS.mobi in MOBI format using ebook-convert
|
||||||
|
|
||||||
make fasthtml # generate approximate HTML in fasthtml dir using Sphinx
|
make fasthtml # generate approximate HTML in fasthtml dir using pandoc
|
||||||
# some Sphinx extensions do not work correctly with this
|
|
||||||
|
|
||||||
make clean # remove intermediate RST files created by HTML build
|
make clean # remove intermediate RST files created by HTML build
|
||||||
make clean-all # remove entire build folder and any cached data
|
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 anchor_check # check for duplicate anchor labels
|
||||||
make style_check # check for complete and consistent style lists
|
make style_check # check for complete and consistent style lists
|
||||||
@ -116,9 +118,9 @@ environment variable.
|
|||||||
Prerequisites for HTML
|
Prerequisites for HTML
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
To run the HTML documentation build toolchain, python 3, git, doxygen,
|
To run the HTML documentation build toolchain, Python 3.8 or later, git,
|
||||||
and virtualenv have to be installed locally. Here are instructions for
|
doxygen, and virtualenv have to be installed locally. Here are
|
||||||
common setups:
|
instructions for common setups:
|
||||||
|
|
||||||
.. tabs::
|
.. tabs::
|
||||||
|
|
||||||
@ -128,13 +130,7 @@ common setups:
|
|||||||
|
|
||||||
sudo apt-get install git doxygen
|
sudo apt-get install git doxygen
|
||||||
|
|
||||||
.. tab:: RHEL or CentOS (Version 7.x)
|
.. tab:: Fedora or RHEL/AlmaLinux/RockyLinux (8.x or later)
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
sudo yum install git doxygen
|
|
||||||
|
|
||||||
.. tab:: Fedora or RHEL/CentOS (8.x or later)
|
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -154,7 +150,36 @@ Prerequisites for PDF
|
|||||||
|
|
||||||
In addition to the tools needed for building the HTML format manual,
|
In addition to the tools needed for building the HTML format manual,
|
||||||
a working LaTeX installation with support for PDFLaTeX and a selection
|
a working LaTeX installation with support for PDFLaTeX and a selection
|
||||||
of LaTeX styles/packages are required. To run the PDFLaTeX translation
|
of LaTeX styles/packages are required. Apart from LaTeX packages that
|
||||||
|
are usually installed by default, the following packages are required:
|
||||||
|
|
||||||
|
.. table_from_list::
|
||||||
|
:columns: 11
|
||||||
|
|
||||||
|
- amsmath
|
||||||
|
- anysize
|
||||||
|
- babel
|
||||||
|
- capt-of
|
||||||
|
- cmap
|
||||||
|
- dvipng
|
||||||
|
- ellipse
|
||||||
|
- fncychap
|
||||||
|
- fontawesome
|
||||||
|
- framed
|
||||||
|
- geometry
|
||||||
|
- gyre
|
||||||
|
- hyperref
|
||||||
|
- hypcap
|
||||||
|
- needspace
|
||||||
|
- pict2e
|
||||||
|
- times
|
||||||
|
- tabulary
|
||||||
|
- titlesec
|
||||||
|
- upquote
|
||||||
|
- wrapfig
|
||||||
|
- xindy
|
||||||
|
|
||||||
|
To run the PDFLaTeX translation
|
||||||
the ``latexmk`` script needs to be installed as well.
|
the ``latexmk`` script needs to be installed as well.
|
||||||
|
|
||||||
Prerequisites for ePUB and MOBI
|
Prerequisites for ePUB and MOBI
|
||||||
@ -182,12 +207,42 @@ documentation is required and either existing files in the ``src``
|
|||||||
folder need to be updated or new files added. These files are written in
|
folder need to be updated or new files added. These files are written in
|
||||||
`reStructuredText <rst_>`_ markup for translation with the Sphinx tool.
|
`reStructuredText <rst_>`_ markup for translation with the Sphinx tool.
|
||||||
|
|
||||||
|
Testing your contribution
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Before contributing any documentation, please check that both the HTML
|
Before contributing any documentation, please check that both the HTML
|
||||||
and the PDF format documentation can translate without errors. During
|
and the PDF format documentation can translate without errors and that
|
||||||
testing the html translation, you may use the ``make fasthtml`` command
|
there are no spelling issues. This is done with ``make html``, ``make pdf``,
|
||||||
which does an approximate translation (i.e. not all Sphinx features and
|
and ``make spelling``, respectively.
|
||||||
extensions will work), but runs very fast because it will only translate
|
|
||||||
files that have been changed since the last ``make fasthtml`` command.
|
Fast and approximate translation to HTML
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Translating the full manual to HTML or PDF can take a long time. Thus
|
||||||
|
there is a fast and approximate way to translate the reStructuredText to
|
||||||
|
HTML as a quick-n-dirty way of checking your manual page.
|
||||||
|
|
||||||
|
This translation uses `Pandoc <https://pandoc.org>`_ instead of Sphinx
|
||||||
|
and thus all special Sphinx features (cross-references, advanced tables,
|
||||||
|
embedding of Python docstrings or doxygen documentation, and so on) will
|
||||||
|
not render correctly. Most embedded math should render correctly. This
|
||||||
|
is a **very fast** way to check the syntax and layout of a documentation
|
||||||
|
file translated to HTML while writing or updating it.
|
||||||
|
|
||||||
|
To translate **all** manual pages, you can type ``make fasthtml`` at the
|
||||||
|
command line. The translated HTML files are then in the ``fasthtml``
|
||||||
|
folder. All subsequent ``make fasthtml`` commands will only translate
|
||||||
|
``.rst`` files that have been changed. The ``make fasthtml`` command
|
||||||
|
can be parallelized with make using the `-j` flag. You can also
|
||||||
|
directly translate only individual pages: e.g. to translate only the
|
||||||
|
``doc/src/pair_lj.rst`` page type ``make fasthtml/pair_lj.html``
|
||||||
|
|
||||||
|
After writing the documentation is completed, you will still need
|
||||||
|
to verify with ``make html`` and ``make pdf`` that it translates
|
||||||
|
correctly in both formats.
|
||||||
|
|
||||||
|
Tests for consistency, completeness, and other known issues
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Please also check the output to the console for any warnings or problems. There will
|
Please also check the output to the console for any warnings or problems. There will
|
||||||
be multiple tests run automatically:
|
be multiple tests run automatically:
|
||||||
|
|||||||
22
doc/src/Build_prerequisites.rst
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
Prerequisites
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Which software you need to compile and use LAMMPS strongly depends on
|
||||||
|
which :doc:`features and settings <Build_settings>` and which
|
||||||
|
:doc:`optional packages <Packages_list>` you are trying to include.
|
||||||
|
Common to all is that you need a C++ and C compiler, where the C++
|
||||||
|
compiler has to support at least the C++11 standard (note that some
|
||||||
|
compilers require command-line flag to activate C++11 support).
|
||||||
|
Furthermore, if you are building with CMake, you need at least CMake
|
||||||
|
version 3.20 and a compatible build tool (make or ninja-build); if you
|
||||||
|
are building the the legacy GNU make based build system you need GNU
|
||||||
|
make (other make variants are not going to work since the build system
|
||||||
|
uses features unique to GNU make) and a Unix-like build environment with
|
||||||
|
a Bourne shell, and shell tools like "sed", "grep", "touch", "test",
|
||||||
|
"tr", "cp", "mv", "rm", "ln", "diff" and so on. Parts of LAMMPS
|
||||||
|
interface with or use Python version 3.6 or later.
|
||||||
|
|
||||||
|
The LAMMPS developers aim to keep LAMMPS very portable and usable -
|
||||||
|
at least in parts - on most operating systems commonly used for
|
||||||
|
running MD simulations. Please see the :doc:`section on portablility
|
||||||
|
<Intro_portability>` for more details.
|
||||||
@ -8,29 +8,30 @@ Optional build settings
|
|||||||
LAMMPS can be built with several optional settings. Each subsection
|
LAMMPS can be built with several optional settings. Each subsection
|
||||||
explains how to do this for building both with CMake and make.
|
explains how to do this for building both with CMake and make.
|
||||||
|
|
||||||
* `C++11 standard compliance`_ when building all of LAMMPS
|
* `C++11 and C++17 standard compliance`_ when building all of LAMMPS
|
||||||
* `FFT library`_ for use with the :doc:`kspace_style pppm <kspace_style>` command
|
* `FFT library`_ for use with the :doc:`kspace_style pppm <kspace_style>` command
|
||||||
* `Size of LAMMPS integer types and size limits`_
|
* `Size of LAMMPS integer types and size limits`_
|
||||||
* `Read or write compressed files`_
|
* `Read or write compressed files`_
|
||||||
* `Output of JPEG, PNG, and movie files`_ via the :doc:`dump image <dump_image>` or :doc:`dump movie <dump_image>` commands
|
* `Output of JPEG, PNG, and movie files`_ via the :doc:`dump image <dump_image>` or :doc:`dump movie <dump_image>` commands
|
||||||
* `Support for downloading files`_
|
* `Support for downloading files from the input`_
|
||||||
|
* `Prevent download of large potential files`_
|
||||||
* `Memory allocation alignment`_
|
* `Memory allocation alignment`_
|
||||||
* `Workaround for long long integers`_
|
* `Workaround for long long integers`_
|
||||||
* `Exception handling when using LAMMPS as a library`_ to capture errors
|
* `Exception handling when using LAMMPS as a library`_ to capture errors
|
||||||
* `Trigger selected floating-point exceptions`_
|
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
.. _cxx11:
|
.. _cxx11:
|
||||||
|
|
||||||
C++11 standard compliance
|
C++11 and C++17 standard compliance
|
||||||
-------------------------
|
-----------------------------------
|
||||||
|
|
||||||
A C++11 standard compatible compiler is a requirement for compiling LAMMPS.
|
A C++11 standard compatible compiler is currently the minimum
|
||||||
LAMMPS version 3 March 2020 is the last version compatible with the previous
|
requirement for compiling LAMMPS. LAMMPS version 3 March 2020 is the
|
||||||
C++98 standard for the core code and most packages. Most currently used
|
last version compatible with the previous C++98 standard for the core
|
||||||
C++ compilers are compatible with C++11, but some older ones may need extra
|
code and most packages. Most currently used C++ compilers are compatible
|
||||||
flags to enable C++11 compliance. Example for GNU c++ 4.8.x:
|
with C++11, but some older ones may need extra flags to enable C++11
|
||||||
|
compliance. Example for GNU c++ 4.8.x:
|
||||||
|
|
||||||
.. code-block:: make
|
.. code-block:: make
|
||||||
|
|
||||||
@ -40,6 +41,17 @@ Individual packages may require compliance with a later C++ standard
|
|||||||
like C++14 or C++17. These requirements will be documented with the
|
like C++14 or C++17. These requirements will be documented with the
|
||||||
:doc:`individual packages <Packages_details>`.
|
:doc:`individual packages <Packages_details>`.
|
||||||
|
|
||||||
|
.. versionchanged:: 4Feb2025
|
||||||
|
|
||||||
|
Starting with LAMMPS version 4 February 2025 we are starting a
|
||||||
|
transition to require the C++17 standard. Most current compilers are
|
||||||
|
compatible and if the C++17 standard is available by default, LAMMPS
|
||||||
|
will enable C++17 and will compile normally. If the chosen compiler is
|
||||||
|
not compatible with C++17, but only supports C++11, then the define
|
||||||
|
-DLAMMPS_CXX11 is required to fall back to compiling with a C++11
|
||||||
|
compiler. After the next stable release of LAMMPS in summer 2025, the
|
||||||
|
LAMMPS development branch and future releases will require C++17.
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
.. _fft:
|
.. _fft:
|
||||||
@ -303,7 +315,7 @@ large counters can become before "rolling over". The default setting of
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
-D LAMMPS_SIZES=value # smallbig (default) or bigbig or smallsmall
|
-D LAMMPS_SIZES=value # smallbig (default) or bigbig
|
||||||
|
|
||||||
If the variable is not set explicitly, "smallbig" is used.
|
If the variable is not set explicitly, "smallbig" is used.
|
||||||
|
|
||||||
@ -314,7 +326,7 @@ large counters can become before "rolling over". The default setting of
|
|||||||
|
|
||||||
.. code-block:: make
|
.. code-block:: make
|
||||||
|
|
||||||
LMP_INC = -DLAMMPS_SMALLBIG # or -DLAMMPS_BIGBIG or -DLAMMPS_SMALLSMALL
|
LMP_INC = -DLAMMPS_SMALLBIG # or -DLAMMPS_BIGBIG
|
||||||
|
|
||||||
The default setting is ``-DLAMMPS_SMALLBIG`` if nothing is specified
|
The default setting is ``-DLAMMPS_SMALLBIG`` if nothing is specified
|
||||||
|
|
||||||
@ -323,34 +335,27 @@ LAMMPS system size restrictions
|
|||||||
|
|
||||||
.. list-table::
|
.. list-table::
|
||||||
:header-rows: 1
|
:header-rows: 1
|
||||||
:widths: 18 27 28 27
|
:widths: 27 36 37
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
* -
|
* -
|
||||||
- smallbig
|
- smallbig
|
||||||
- bigbig
|
- bigbig
|
||||||
- smallsmall
|
|
||||||
* - Total atom count
|
* - Total atom count
|
||||||
- :math:`2^{63}` atoms (= :math:`9.223 \cdot 10^{18}`)
|
- :math:`2^{63}` atoms (= :math:`9.223 \cdot 10^{18}`)
|
||||||
- :math:`2^{63}` atoms (= :math:`9.223 \cdot 10^{18}`)
|
- :math:`2^{63}` atoms (= :math:`9.223 \cdot 10^{18}`)
|
||||||
- :math:`2^{31}` atoms (= :math:`2.147 \cdot 10^9`)
|
|
||||||
* - Total timesteps
|
* - Total timesteps
|
||||||
- :math:`2^{63}` steps (= :math:`9.223 \cdot 10^{18}`)
|
- :math:`2^{63}` steps (= :math:`9.223 \cdot 10^{18}`)
|
||||||
- :math:`2^{63}` steps (= :math:`9.223 \cdot 10^{18}`)
|
- :math:`2^{63}` steps (= :math:`9.223 \cdot 10^{18}`)
|
||||||
- :math:`2^{31}` steps (= :math:`2.147 \cdot 10^9`)
|
|
||||||
* - Atom ID values
|
* - Atom ID values
|
||||||
- :math:`1 \le i \le 2^{31} (= 2.147 \cdot 10^9)`
|
- :math:`1 \le i \le 2^{31} (= 2.147 \cdot 10^9)`
|
||||||
- :math:`1 \le i \le 2^{63} (= 9.223 \cdot 10^{18})`
|
- :math:`1 \le i \le 2^{63} (= 9.223 \cdot 10^{18})`
|
||||||
- :math:`1 \le i \le 2^{31} (= 2.147 \cdot 10^9)`
|
|
||||||
* - Image flag values
|
* - Image flag values
|
||||||
- :math:`-512 \le i \le 511`
|
- :math:`-512 \le i \le 511`
|
||||||
- :math:`- 1\,048\,576 \le i \le 1\,048\,575`
|
- :math:`- 1\,048\,576 \le i \le 1\,048\,575`
|
||||||
- :math:`-512 \le i \le 511`
|
|
||||||
|
|
||||||
The "bigbig" setting increases the size of image flags and atom IDs over
|
The "bigbig" setting increases the size of image flags and atom IDs over
|
||||||
"smallbig" and the "smallsmall" setting is only needed if your machine
|
the default "smallbig" setting.
|
||||||
does not support 64-bit integers or incurs performance penalties when
|
|
||||||
using them.
|
|
||||||
|
|
||||||
These are limits for the core of the LAMMPS code, specific features or
|
These are limits for the core of the LAMMPS code, specific features or
|
||||||
some styles may impose additional limits. The :ref:`ATC
|
some styles may impose additional limits. The :ref:`ATC
|
||||||
@ -504,8 +509,8 @@ during a run.
|
|||||||
|
|
||||||
.. _libcurl:
|
.. _libcurl:
|
||||||
|
|
||||||
Support for downloading files
|
Support for downloading files from the input
|
||||||
-----------------------------
|
--------------------------------------------
|
||||||
|
|
||||||
.. versionadded:: 29Aug2024
|
.. versionadded:: 29Aug2024
|
||||||
|
|
||||||
@ -548,6 +553,25 @@ LAMMPS is compiled accordingly which needs the following settings:
|
|||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
.. _download_pot:
|
||||||
|
|
||||||
|
Prevent download of large potential files
|
||||||
|
-----------------------------------------
|
||||||
|
|
||||||
|
.. versionadded:: 8Feb2023
|
||||||
|
|
||||||
|
LAMMPS bundles a selection of potential files in the ``potentials``
|
||||||
|
folder as examples of how those kinds of potential files look like and
|
||||||
|
for use with the provided input examples in the ``examples`` tree. To
|
||||||
|
keep the size of the distributed LAMMPS source package small, very large
|
||||||
|
potential files (> 5 MBytes) are not bundled, but only downloaded on
|
||||||
|
demand when the :doc:`corresponding package <Packages_list>` is
|
||||||
|
installed. This automatic download can be prevented when :doc:`building
|
||||||
|
LAMMPS with CMake <Build_cmake>` by adding the setting `-D
|
||||||
|
DOWNLOAD_POTENTIALS=off` when configuring.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
.. _align:
|
.. _align:
|
||||||
|
|
||||||
Memory allocation alignment
|
Memory allocation alignment
|
||||||
@ -634,40 +658,3 @@ code has to be set up to *catch* exceptions thrown from within LAMMPS.
|
|||||||
throw an exception and thus other MPI ranks may get stuck waiting for
|
throw an exception and thus other MPI ranks may get stuck waiting for
|
||||||
messages from the ones with errors.
|
messages from the ones with errors.
|
||||||
|
|
||||||
----------
|
|
||||||
|
|
||||||
.. _trap_fpe:
|
|
||||||
|
|
||||||
Trigger selected floating-point exceptions
|
|
||||||
------------------------------------------
|
|
||||||
|
|
||||||
Many kinds of CPUs have the capability to detect when a calculation
|
|
||||||
results in an invalid math operation, like a division by zero or calling
|
|
||||||
the square root with a negative argument. The default behavior on
|
|
||||||
most operating systems is to continue and have values for ``NaN`` (= not
|
|
||||||
a number) or ``Inf`` (= infinity). This allows software to detect and
|
|
||||||
recover from such conditions. This behavior can be changed, however,
|
|
||||||
often through use of compiler flags. On Linux systems (or more general
|
|
||||||
on systems using the GNU C library), these so-called floating-point traps
|
|
||||||
can also be selectively enabled through library calls. LAMMPS supports
|
|
||||||
that by setting the ``-DLAMMPS_TRAP_FPE`` pre-processor define. As it is
|
|
||||||
done in the ``main()`` function, this applies only to the standalone
|
|
||||||
executable, not the library.
|
|
||||||
|
|
||||||
.. tabs::
|
|
||||||
|
|
||||||
.. tab:: CMake build
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
-D CMAKE_TUNE_FLAGS=-DLAMMPS_TRAP_FPE
|
|
||||||
|
|
||||||
.. tab:: Traditional make
|
|
||||||
|
|
||||||
.. code-block:: make
|
|
||||||
|
|
||||||
LMP_INC = -DLAMMPS_TRAP_FPE <other LMP_INC settings>
|
|
||||||
|
|
||||||
After compilation with this flag set, the LAMMPS executable will stop
|
|
||||||
and produce a core dump when a division by zero, overflow, illegal math
|
|
||||||
function argument or other invalid floating point operation is encountered.
|
|
||||||
|
|||||||
@ -140,6 +140,7 @@ additional letter in parenthesis: k = KOKKOS.
|
|||||||
* :doc:`plugin <plugin>`
|
* :doc:`plugin <plugin>`
|
||||||
* :doc:`prd <prd>`
|
* :doc:`prd <prd>`
|
||||||
* :doc:`python <python>`
|
* :doc:`python <python>`
|
||||||
|
* :doc:`region2vmd <region2vmd>`
|
||||||
* :doc:`tad <tad>`
|
* :doc:`tad <tad>`
|
||||||
* :doc:`temper <temper>`
|
* :doc:`temper <temper>`
|
||||||
* :doc:`temper/grem <temper_grem>`
|
* :doc:`temper/grem <temper_grem>`
|
||||||
|
|||||||
@ -23,6 +23,7 @@ OPT.
|
|||||||
*
|
*
|
||||||
* :doc:`bpm/rotational <bond_bpm_rotational>`
|
* :doc:`bpm/rotational <bond_bpm_rotational>`
|
||||||
* :doc:`bpm/spring <bond_bpm_spring>`
|
* :doc:`bpm/spring <bond_bpm_spring>`
|
||||||
|
* :doc:`bpm/spring/plastic <bond_bpm_spring_plastic>`
|
||||||
* :doc:`class2 (ko) <bond_class2>`
|
* :doc:`class2 (ko) <bond_class2>`
|
||||||
* :doc:`fene (iko) <bond_fene>`
|
* :doc:`fene (iko) <bond_fene>`
|
||||||
* :doc:`fene/expand (o) <bond_fene_expand>`
|
* :doc:`fene/expand (o) <bond_fene_expand>`
|
||||||
@ -127,7 +128,7 @@ OPT.
|
|||||||
* :doc:`harmonic (iko) <dihedral_harmonic>`
|
* :doc:`harmonic (iko) <dihedral_harmonic>`
|
||||||
* :doc:`helix (o) <dihedral_helix>`
|
* :doc:`helix (o) <dihedral_helix>`
|
||||||
* :doc:`lepton (o) <dihedral_lepton>`
|
* :doc:`lepton (o) <dihedral_lepton>`
|
||||||
* :doc:`multi/harmonic (o) <dihedral_multi_harmonic>`
|
* :doc:`multi/harmonic (ko) <dihedral_multi_harmonic>`
|
||||||
* :doc:`nharmonic (o) <dihedral_nharmonic>`
|
* :doc:`nharmonic (o) <dihedral_nharmonic>`
|
||||||
* :doc:`opls (iko) <dihedral_opls>`
|
* :doc:`opls (iko) <dihedral_opls>`
|
||||||
* :doc:`quadratic (o) <dihedral_quadratic>`
|
* :doc:`quadratic (o) <dihedral_quadratic>`
|
||||||
|
|||||||
@ -178,6 +178,7 @@ KOKKOS, o = OPENMP, t = OPT.
|
|||||||
* :doc:`ti <compute_ti>`
|
* :doc:`ti <compute_ti>`
|
||||||
* :doc:`torque/chunk <compute_torque_chunk>`
|
* :doc:`torque/chunk <compute_torque_chunk>`
|
||||||
* :doc:`vacf <compute_vacf>`
|
* :doc:`vacf <compute_vacf>`
|
||||||
|
* :doc:`vacf/chunk <compute_vacf_chunk>`
|
||||||
* :doc:`vcm/chunk <compute_vcm_chunk>`
|
* :doc:`vcm/chunk <compute_vcm_chunk>`
|
||||||
* :doc:`viscosity/cos <compute_viscosity_cos>`
|
* :doc:`viscosity/cos <compute_viscosity_cos>`
|
||||||
* :doc:`voronoi/atom <compute_voronoi_atom>`
|
* :doc:`voronoi/atom <compute_voronoi_atom>`
|
||||||
|
|||||||
@ -19,6 +19,7 @@ An alphabetic list of all LAMMPS :doc:`dump <dump>` commands.
|
|||||||
* :doc:`custom/gz <dump>`
|
* :doc:`custom/gz <dump>`
|
||||||
* :doc:`custom/zstd <dump>`
|
* :doc:`custom/zstd <dump>`
|
||||||
* :doc:`dcd <dump>`
|
* :doc:`dcd <dump>`
|
||||||
|
* :doc:`extxyz <dump>`
|
||||||
* :doc:`grid <dump>`
|
* :doc:`grid <dump>`
|
||||||
* :doc:`grid/vtk <dump>`
|
* :doc:`grid/vtk <dump>`
|
||||||
* :doc:`h5md <dump_h5md>`
|
* :doc:`h5md <dump_h5md>`
|
||||||
|
|||||||
@ -22,6 +22,7 @@ OPT.
|
|||||||
* :doc:`append/atoms <fix_append_atoms>`
|
* :doc:`append/atoms <fix_append_atoms>`
|
||||||
* :doc:`atc <fix_atc>`
|
* :doc:`atc <fix_atc>`
|
||||||
* :doc:`atom/swap <fix_atom_swap>`
|
* :doc:`atom/swap <fix_atom_swap>`
|
||||||
|
* :doc:`atom_weight/apip <fix_atom_weight_apip>`
|
||||||
* :doc:`ave/atom <fix_ave_atom>`
|
* :doc:`ave/atom <fix_ave_atom>`
|
||||||
* :doc:`ave/chunk <fix_ave_chunk>`
|
* :doc:`ave/chunk <fix_ave_chunk>`
|
||||||
* :doc:`ave/correlate <fix_ave_correlate>`
|
* :doc:`ave/correlate <fix_ave_correlate>`
|
||||||
@ -29,6 +30,7 @@ OPT.
|
|||||||
* :doc:`ave/grid <fix_ave_grid>`
|
* :doc:`ave/grid <fix_ave_grid>`
|
||||||
* :doc:`ave/histo <fix_ave_histo>`
|
* :doc:`ave/histo <fix_ave_histo>`
|
||||||
* :doc:`ave/histo/weight <fix_ave_histo>`
|
* :doc:`ave/histo/weight <fix_ave_histo>`
|
||||||
|
* :doc:`ave/moments <fix_ave_moments>`
|
||||||
* :doc:`ave/time <fix_ave_time>`
|
* :doc:`ave/time <fix_ave_time>`
|
||||||
* :doc:`aveforce <fix_aveforce>`
|
* :doc:`aveforce <fix_aveforce>`
|
||||||
* :doc:`balance <fix_balance>`
|
* :doc:`balance <fix_balance>`
|
||||||
@ -64,7 +66,7 @@ OPT.
|
|||||||
* :doc:`electrode/conp (i) <fix_electrode>`
|
* :doc:`electrode/conp (i) <fix_electrode>`
|
||||||
* :doc:`electrode/conq (i) <fix_electrode>`
|
* :doc:`electrode/conq (i) <fix_electrode>`
|
||||||
* :doc:`electrode/thermo (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:`electron/stopping/fit <fix_electron_stopping>`
|
||||||
* :doc:`enforce2d (k) <fix_enforce2d>`
|
* :doc:`enforce2d (k) <fix_enforce2d>`
|
||||||
* :doc:`eos/cv <fix_eos_cv>`
|
* :doc:`eos/cv <fix_eos_cv>`
|
||||||
@ -77,6 +79,7 @@ OPT.
|
|||||||
* :doc:`flow/gauss <fix_flow_gauss>`
|
* :doc:`flow/gauss <fix_flow_gauss>`
|
||||||
* :doc:`freeze (k) <fix_freeze>`
|
* :doc:`freeze (k) <fix_freeze>`
|
||||||
* :doc:`gcmc <fix_gcmc>`
|
* :doc:`gcmc <fix_gcmc>`
|
||||||
|
* :doc:`gjf <fix_gjf>`
|
||||||
* :doc:`gld <fix_gld>`
|
* :doc:`gld <fix_gld>`
|
||||||
* :doc:`gle <fix_gle>`
|
* :doc:`gle <fix_gle>`
|
||||||
* :doc:`gravity (ko) <fix_gravity>`
|
* :doc:`gravity (ko) <fix_gravity>`
|
||||||
@ -84,11 +87,14 @@ OPT.
|
|||||||
* :doc:`halt <fix_halt>`
|
* :doc:`halt <fix_halt>`
|
||||||
* :doc:`heat <fix_heat>`
|
* :doc:`heat <fix_heat>`
|
||||||
* :doc:`heat/flow <fix_heat_flow>`
|
* :doc:`heat/flow <fix_heat_flow>`
|
||||||
|
* :doc:`hmc <fix_hmc>`
|
||||||
* :doc:`hyper/global <fix_hyper_global>`
|
* :doc:`hyper/global <fix_hyper_global>`
|
||||||
* :doc:`hyper/local <fix_hyper_local>`
|
* :doc:`hyper/local <fix_hyper_local>`
|
||||||
* :doc:`imd <fix_imd>`
|
* :doc:`imd <fix_imd>`
|
||||||
* :doc:`indent <fix_indent>`
|
* :doc:`indent <fix_indent>`
|
||||||
* :doc:`ipi <fix_ipi>`
|
* :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 (k) <fix_langevin>`
|
||||||
* :doc:`langevin/drude <fix_langevin_drude>`
|
* :doc:`langevin/drude <fix_langevin_drude>`
|
||||||
* :doc:`langevin/eff <fix_langevin_eff>`
|
* :doc:`langevin/eff <fix_langevin_eff>`
|
||||||
@ -111,6 +117,7 @@ OPT.
|
|||||||
* :doc:`mvv/tdpd <fix_mvv_dpd>`
|
* :doc:`mvv/tdpd <fix_mvv_dpd>`
|
||||||
* :doc:`neb <fix_neb>`
|
* :doc:`neb <fix_neb>`
|
||||||
* :doc:`neb/spin <fix_neb_spin>`
|
* :doc:`neb/spin <fix_neb_spin>`
|
||||||
|
* :doc:`neighbor/swap <fix_neighbor_swap>`
|
||||||
* :doc:`nonaffine/displacement <fix_nonaffine_displacement>`
|
* :doc:`nonaffine/displacement <fix_nonaffine_displacement>`
|
||||||
* :doc:`nph (ko) <fix_nh>`
|
* :doc:`nph (ko) <fix_nh>`
|
||||||
* :doc:`nph/asphere (o) <fix_nph_asphere>`
|
* :doc:`nph/asphere (o) <fix_nph_asphere>`
|
||||||
@ -162,6 +169,8 @@ OPT.
|
|||||||
* :doc:`phonon <fix_phonon>`
|
* :doc:`phonon <fix_phonon>`
|
||||||
* :doc:`pimd/langevin <fix_pimd>`
|
* :doc:`pimd/langevin <fix_pimd>`
|
||||||
* :doc:`pimd/nvt <fix_pimd>`
|
* :doc:`pimd/nvt <fix_pimd>`
|
||||||
|
* :doc:`pimd/langevin/bosonic <fix_pimd>`
|
||||||
|
* :doc:`pimd/nvt/bosonic <fix_pimd>`
|
||||||
* :doc:`planeforce <fix_planeforce>`
|
* :doc:`planeforce <fix_planeforce>`
|
||||||
* :doc:`plumed <fix_plumed>`
|
* :doc:`plumed <fix_plumed>`
|
||||||
* :doc:`poems <fix_poems>`
|
* :doc:`poems <fix_poems>`
|
||||||
@ -184,6 +193,7 @@ OPT.
|
|||||||
* :doc:`qeq/fire <fix_qeq>`
|
* :doc:`qeq/fire <fix_qeq>`
|
||||||
* :doc:`qeq/point <fix_qeq>`
|
* :doc:`qeq/point <fix_qeq>`
|
||||||
* :doc:`qeq/reaxff (ko) <fix_qeq_reaxff>`
|
* :doc:`qeq/reaxff (ko) <fix_qeq_reaxff>`
|
||||||
|
* :doc:`qeq/rel/reaxff <fix_qeq_rel_reaxff>`
|
||||||
* :doc:`qeq/shielded <fix_qeq>`
|
* :doc:`qeq/shielded <fix_qeq>`
|
||||||
* :doc:`qeq/slater <fix_qeq>`
|
* :doc:`qeq/slater <fix_qeq>`
|
||||||
* :doc:`qmmm <fix_qmmm>`
|
* :doc:`qmmm <fix_qmmm>`
|
||||||
@ -213,6 +223,7 @@ OPT.
|
|||||||
* :doc:`rigid/small (o) <fix_rigid>`
|
* :doc:`rigid/small (o) <fix_rigid>`
|
||||||
* :doc:`rx (k) <fix_rx>`
|
* :doc:`rx (k) <fix_rx>`
|
||||||
* :doc:`saed/vtk <fix_saed_vtk>`
|
* :doc:`saed/vtk <fix_saed_vtk>`
|
||||||
|
* :doc:`set <fix_set>`
|
||||||
* :doc:`setforce (k) <fix_setforce>`
|
* :doc:`setforce (k) <fix_setforce>`
|
||||||
* :doc:`setforce/spin <fix_setforce>`
|
* :doc:`setforce/spin <fix_setforce>`
|
||||||
* :doc:`sgcmc <fix_sgcmc>`
|
* :doc:`sgcmc <fix_sgcmc>`
|
||||||
|
|||||||
@ -31,3 +31,5 @@ OPT.
|
|||||||
* :doc:`pppm/dielectric <kspace_style>`
|
* :doc:`pppm/dielectric <kspace_style>`
|
||||||
* :doc:`pppm/electrode (i) <kspace_style>`
|
* :doc:`pppm/electrode (i) <kspace_style>`
|
||||||
* :doc:`scafacos <kspace_style>`
|
* :doc:`scafacos <kspace_style>`
|
||||||
|
* :doc:`zero <kspace_style>`
|
||||||
|
|
||||||
|
|||||||
@ -96,7 +96,9 @@ OPT.
|
|||||||
* :doc:`eam/cd <pair_eam>`
|
* :doc:`eam/cd <pair_eam>`
|
||||||
* :doc:`eam/cd/old <pair_eam>`
|
* :doc:`eam/cd/old <pair_eam>`
|
||||||
* :doc:`eam/fs (gikot) <pair_eam>`
|
* :doc:`eam/fs (gikot) <pair_eam>`
|
||||||
|
* :doc:`eam/fs/apip <pair_eam_apip>`
|
||||||
* :doc:`eam/he <pair_eam>`
|
* :doc:`eam/he <pair_eam>`
|
||||||
|
* :doc:`eam/apip <pair_eam_apip>`
|
||||||
* :doc:`edip (o) <pair_edip>`
|
* :doc:`edip (o) <pair_edip>`
|
||||||
* :doc:`edip/multi <pair_edip>`
|
* :doc:`edip/multi <pair_edip>`
|
||||||
* :doc:`edpd (g) <pair_mesodpd>`
|
* :doc:`edpd (g) <pair_mesodpd>`
|
||||||
@ -124,6 +126,9 @@ OPT.
|
|||||||
* :doc:`ilp/tmd (t) <pair_ilp_tmd>`
|
* :doc:`ilp/tmd (t) <pair_ilp_tmd>`
|
||||||
* :doc:`kolmogorov/crespi/full <pair_kolmogorov_crespi_full>`
|
* :doc:`kolmogorov/crespi/full <pair_kolmogorov_crespi_full>`
|
||||||
* :doc:`kolmogorov/crespi/z <pair_kolmogorov_crespi_z>`
|
* :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:`lcbop <pair_lcbop>`
|
||||||
* :doc:`lebedeva/z <pair_lebedeva_z>`
|
* :doc:`lebedeva/z <pair_lebedeva_z>`
|
||||||
* :doc:`lennard/mdf <pair_mdf>`
|
* :doc:`lennard/mdf <pair_mdf>`
|
||||||
@ -179,6 +184,7 @@ OPT.
|
|||||||
* :doc:`lj/long/dipole/long <pair_dipole>`
|
* :doc:`lj/long/dipole/long <pair_dipole>`
|
||||||
* :doc:`lj/long/tip4p/long (o) <pair_lj_long>`
|
* :doc:`lj/long/tip4p/long (o) <pair_lj_long>`
|
||||||
* :doc:`lj/mdf <pair_mdf>`
|
* :doc:`lj/mdf <pair_mdf>`
|
||||||
|
* :doc:`lj/pirani (o) <pair_lj_pirani>`
|
||||||
* :doc:`lj/relres (o) <pair_lj_relres>`
|
* :doc:`lj/relres (o) <pair_lj_relres>`
|
||||||
* :doc:`lj/spica (gko) <pair_spica>`
|
* :doc:`lj/spica (gko) <pair_spica>`
|
||||||
* :doc:`lj/spica/coul/long (gko) <pair_spica>`
|
* :doc:`lj/spica/coul/long (gko) <pair_spica>`
|
||||||
@ -236,6 +242,9 @@ OPT.
|
|||||||
* :doc:`oxrna2/coaxstk <pair_oxrna2>`
|
* :doc:`oxrna2/coaxstk <pair_oxrna2>`
|
||||||
* :doc:`pace (k) <pair_pace>`
|
* :doc:`pace (k) <pair_pace>`
|
||||||
* :doc:`pace/extrapolation (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:`pedone (o) <pair_pedone>`
|
||||||
* :doc:`pod (k) <pair_pod>`
|
* :doc:`pod (k) <pair_pod>`
|
||||||
* :doc:`peri/eps <pair_peri>`
|
* :doc:`peri/eps <pair_peri>`
|
||||||
|
|||||||
@ -12,10 +12,21 @@ stop LAMMPS and print a suitable error message in most cases, when a
|
|||||||
style/command is used that has been removed or will replace the command
|
style/command is used that has been removed or will replace the command
|
||||||
with the direct alternative (if available) and print a warning.
|
with the direct alternative (if available) and print a warning.
|
||||||
|
|
||||||
|
GJF formulation in fix langevin
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
.. deprecated:: 12Jun2025
|
||||||
|
|
||||||
|
The *gjf* keyword in fix langevin is deprecated and will be removed
|
||||||
|
soon. The GJF functionality has been moved to its own fix style
|
||||||
|
:doc:`fix gjf <fix_gjf>` and it is strongly recommended to use that
|
||||||
|
fix instead.
|
||||||
|
|
||||||
|
|
||||||
LAMMPS shell
|
LAMMPS shell
|
||||||
------------
|
------------
|
||||||
|
|
||||||
.. versionchanged:: 29Aug2024
|
.. deprecated:: 29Aug2024
|
||||||
|
|
||||||
The LAMMPS shell has been removed from the LAMMPS distribution. Users
|
The LAMMPS shell has been removed from the LAMMPS distribution. Users
|
||||||
are encouraged to use the :ref:`LAMMPS-GUI <lammps_gui>` tool instead.
|
are encouraged to use the :ref:`LAMMPS-GUI <lammps_gui>` tool instead.
|
||||||
@ -23,7 +34,7 @@ are encouraged to use the :ref:`LAMMPS-GUI <lammps_gui>` tool instead.
|
|||||||
i-PI tool
|
i-PI tool
|
||||||
---------
|
---------
|
||||||
|
|
||||||
.. versionchanged:: 27Jun2024
|
.. deprecated:: 27Jun2024
|
||||||
|
|
||||||
The i-PI tool has been removed from the LAMMPS distribution. Instead,
|
The i-PI tool has been removed from the LAMMPS distribution. Instead,
|
||||||
instructions to install i-PI from PyPI via pip are provided.
|
instructions to install i-PI from PyPI via pip are provided.
|
||||||
@ -170,6 +181,18 @@ performance characteristics on NVIDIA GPUs. Both, the KOKKOS
|
|||||||
and the :ref:`GPU package <PKG-GPU>` are maintained
|
and the :ref:`GPU package <PKG-GPU>` are maintained
|
||||||
and allow running LAMMPS with GPU acceleration.
|
and allow running LAMMPS with GPU acceleration.
|
||||||
|
|
||||||
|
Compute atom/molecule
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
.. deprecated:: 11 Dec2015
|
||||||
|
|
||||||
|
The atom/molecule command has been removed from LAMMPS since it was superseded
|
||||||
|
by the more general and extensible "chunk infrastructure". Here the system is
|
||||||
|
partitioned in one of many possible ways - including using molecule IDs -
|
||||||
|
through the :doc:`compute chunk/atom <compute_chunk_atom>` command and then
|
||||||
|
summing is done using :doc:`compute reduce/chunk <compute_reduce_chunk>` Please
|
||||||
|
refer to the :doc:`chunk HOWTO <Howto_chunk>` section for an overview.
|
||||||
|
|
||||||
Fix ave/spatial and fix ave/spatial/sphere
|
Fix ave/spatial and fix ave/spatial/sphere
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@ -24,4 +24,5 @@ of time and requests from the LAMMPS user community.
|
|||||||
Classes
|
Classes
|
||||||
Developer_platform
|
Developer_platform
|
||||||
Developer_utils
|
Developer_utils
|
||||||
|
Developer_internal
|
||||||
Developer_grid
|
Developer_grid
|
||||||
|
|||||||
120
doc/src/Developer_internal.rst
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
Internal Styles
|
||||||
|
---------------
|
||||||
|
|
||||||
|
LAMMPS has a number of styles that are not meant to be used in an input
|
||||||
|
file and thus are not documented in the :doc:`LAMMPS command
|
||||||
|
documentation <Commands_all>`. The differentiation between user
|
||||||
|
commands and internal commands is through the case of the command name:
|
||||||
|
user commands and styles are all lower case, internal styles are all
|
||||||
|
upper case. Internal styles are not called from the input file, but
|
||||||
|
their classes are instantiated by other styles. Often they are
|
||||||
|
created by other styles to store internal data or to perform actions
|
||||||
|
regularly at specific steps of the simulation.
|
||||||
|
|
||||||
|
The paragraphs below document some of those styles that have general
|
||||||
|
utility and may be used to avoid redundant implementation.
|
||||||
|
|
||||||
|
DEPRECATED Styles
|
||||||
|
^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The styles called DEPRECATED (e.g. pair, bond, fix, compute, region, etc.)
|
||||||
|
have the purpose to inform users that a specific style has been removed
|
||||||
|
or renamed. This is achieved by creating an alias for the deprecated
|
||||||
|
style to the corresponding class. For example, the fix style DEPRECATED
|
||||||
|
is aliased to fix style ave/spatial and fix style ave/spatial/sphere with
|
||||||
|
the following code:
|
||||||
|
|
||||||
|
.. code-block:: c++
|
||||||
|
|
||||||
|
FixStyle(DEPRECATED,FixDeprecated);
|
||||||
|
FixStyle(ave/spatial,FixDeprecated);
|
||||||
|
FixStyle(ave/spatial/sphere,FixDeprecated);
|
||||||
|
|
||||||
|
The individual class will then determine based on the style name
|
||||||
|
what action to perform:
|
||||||
|
|
||||||
|
- inform that the style has been removed and what style replaces it, if any, and then error out
|
||||||
|
- inform that the style has been renamed and then either execute the replacement or error out
|
||||||
|
- inform that the style is no longer required, and it is thus ignored and continue
|
||||||
|
|
||||||
|
There is also a section in the user's guide for :doc:`removed commands
|
||||||
|
and packages <Commands_removed>` with additional explanations.
|
||||||
|
|
||||||
|
Internal fix styles
|
||||||
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
These provide an implementation of features that would otherwise have
|
||||||
|
been replicated across multiple styles. The used fix ID is generally
|
||||||
|
derived from the compute or fix ID creating the fix with some string
|
||||||
|
appended. When needed, the fix can be looked up with
|
||||||
|
``Modify::get_fix_by_id()``, which returns a pointer to the fix
|
||||||
|
instance. The data managed by the fix can be accessed just as for other
|
||||||
|
fixes that can be used in input files.
|
||||||
|
|
||||||
|
fix DUMMY
|
||||||
|
"""""""""
|
||||||
|
|
||||||
|
Most fix classes cannot be instantiated before the simulation box has
|
||||||
|
been created since they access data that is only available then.
|
||||||
|
However, in some cases it is required that a fix must be at or close to
|
||||||
|
the top of the list of all fixes. In those cases an instance of the
|
||||||
|
DUMMY fix style may be created by calling ``Modify::add_fix()`` and then
|
||||||
|
later replaced by the intended fix through calling ``Modify::replace_fix()``.
|
||||||
|
|
||||||
|
fix STORE/ATOM
|
||||||
|
""""""""""""""
|
||||||
|
|
||||||
|
Fix STORE/ATOM can be used as persistent storage of per-atom data.
|
||||||
|
|
||||||
|
**Syntax**
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
fix ID group-ID STORE/ATOM N1 N2 gflag rflag
|
||||||
|
|
||||||
|
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||||
|
* STORE/ATOM = style name of this fix command
|
||||||
|
* N1 = 1, N2 = 0 : data is per-atom vector = single value per atom
|
||||||
|
* N1 > 1, N2 = 0 : data is per-atom array = N1 values per atom
|
||||||
|
* N1 > 0, N2 > 0 : data is per-atom tensor = N1xN2 values per atom
|
||||||
|
* gflag = 1 communicate per-atom values with ghost atoms, 0 do not update ghost atom data
|
||||||
|
* rflag = 1 store per-atom value in restart file, 0 do not store data in restart
|
||||||
|
|
||||||
|
Similar functionality is also available through using custom per-atom
|
||||||
|
properties with :doc:`fix property/atom <fix_property_atom>`. The
|
||||||
|
choice between the two fixes should be based on whether the user should
|
||||||
|
be able to access this per-atom data: if yes, then fix property/atom is
|
||||||
|
preferred, otherwise fix STORE/ATOM.
|
||||||
|
|
||||||
|
fix STORE/GLOBAL
|
||||||
|
""""""""""""""""
|
||||||
|
|
||||||
|
Fix STORE/GLOBAL can be used as persistent storage of global data with support for restarts
|
||||||
|
|
||||||
|
**Syntax**
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
fix ID group-ID STORE/GLOBAL N1 N2
|
||||||
|
|
||||||
|
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||||
|
* STORE/GLOBAL = style name of this fix command
|
||||||
|
* N1 >=1 : number of global items to store
|
||||||
|
* N2 = 1 : data is global vector of length N1
|
||||||
|
* N2 > 1 : data is global N1xN2 array
|
||||||
|
|
||||||
|
fix STORE/LOCAL
|
||||||
|
"""""""""""""""
|
||||||
|
|
||||||
|
Fix STORE/LOCAL can be used as persistent storage for local data
|
||||||
|
|
||||||
|
**Syntax**
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
fix ID group-ID STORE/LOCAL Nreset Nvalues
|
||||||
|
|
||||||
|
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||||
|
* STORE/LOCAL = style name of this fix command
|
||||||
|
* Nreset = frequency at which local data is available
|
||||||
|
* Nvalues = number of values per local item, that is the number of columns
|
||||||
@ -7,7 +7,7 @@ typically document what a variable stores, what a small section of
|
|||||||
code does, or what a function does and its input/outputs. The topics
|
code does, or what a function does and its input/outputs. The topics
|
||||||
on this page are intended to document code functionality at a higher level.
|
on this page are intended to document code functionality at a higher level.
|
||||||
|
|
||||||
.. contents::
|
.. contents:: Available notes
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
|
|||||||
@ -68,24 +68,25 @@ Members of ``lammpsplugin_t``
|
|||||||
* - author
|
* - author
|
||||||
- String with the name and email of the author
|
- String with the name and email of the author
|
||||||
* - creator.v1
|
* - creator.v1
|
||||||
- Pointer to factory function for pair, bond, angle, dihedral, improper, kspace, or command styles
|
- Pointer to factory function for pair, bond, angle, dihedral, improper, kspace, command, or minimize styles
|
||||||
* - creator.v2
|
* - creator.v2
|
||||||
- Pointer to factory function for compute, fix, or region styles
|
- Pointer to factory function for compute, fix, region, or run styles
|
||||||
* - handle
|
* - handle
|
||||||
- Pointer to the open DSO file handle
|
- Pointer to the open DSO file handle
|
||||||
|
|
||||||
Only one of the two alternate creator entries can be used at a time and
|
Only one of the two alternate creator entries can be used at a time and
|
||||||
which of those is determined by the style of plugin. The "creator.v1"
|
which of those is determined by the style of plugin. The "creator.v1"
|
||||||
element is for factory functions of supported styles computing forces
|
element is for factory functions of supported styles computing forces
|
||||||
(i.e. pair, bond, angle, dihedral, or improper styles) or command styles
|
(i.e. pair, bond, angle, dihedral, or improper styles), command styles,
|
||||||
and the function takes as single argument the pointer to the LAMMPS
|
or minimize styles and the function takes as single argument the pointer
|
||||||
instance. The factory function is cast to the ``lammpsplugin_factory1``
|
to the LAMMPS instance. The factory function is cast to the
|
||||||
type before assignment. The "creator.v2" element is for factory
|
``lammpsplugin_factory1`` type before assignment. The "creator.v2"
|
||||||
functions creating an instance of a fix, compute, or region style and
|
element is for factory functions creating an instance of a fix, compute,
|
||||||
takes three arguments: a pointer to the LAMMPS instance, an integer with
|
region, or run style and takes three arguments: a pointer to the LAMMPS
|
||||||
the length of the argument list and a ``char **`` pointer to the list of
|
instance, an integer with the length of the argument list and a ``char
|
||||||
arguments. The factory function pointer needs to be cast to the
|
**`` pointer to the list of arguments. The factory function pointer
|
||||||
``lammpsplugin_factory2`` type before assignment.
|
needs to be cast to the ``lammpsplugin_factory2`` type before
|
||||||
|
assignment.
|
||||||
|
|
||||||
Pair style example
|
Pair style example
|
||||||
^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^
|
||||||
@ -247,8 +248,8 @@ DSO handle. The registration function is called with a pointer to the address
|
|||||||
of this struct and the pointer of the LAMMPS class. The registration function
|
of this struct and the pointer of the LAMMPS class. The registration function
|
||||||
will then add the factory function of the plugin style to the respective
|
will then add the factory function of the plugin style to the respective
|
||||||
style map under the provided name. It will also make a copy of the struct
|
style map under the provided name. It will also make a copy of the struct
|
||||||
in a list of all loaded plugins and update the reference counter for loaded
|
in a global list of all loaded plugins and update the reference counter for
|
||||||
plugins from this specific DSO file.
|
loaded plugins from this specific DSO file.
|
||||||
|
|
||||||
The pair style itself (i.e. the PairMorse2 class in this example) can be
|
The pair style itself (i.e. the PairMorse2 class in this example) can be
|
||||||
written just like any other pair style that is included in LAMMPS. For
|
written just like any other pair style that is included in LAMMPS. For
|
||||||
@ -263,6 +264,21 @@ the plugin will override the existing code. This can be used to modify
|
|||||||
the behavior of existing styles or to debug new versions of them without
|
the behavior of existing styles or to debug new versions of them without
|
||||||
having to re-compile or re-install all of LAMMPS.
|
having to re-compile or re-install all of LAMMPS.
|
||||||
|
|
||||||
|
.. versionchanged:: 12Jun2025
|
||||||
|
|
||||||
|
When using the :doc:`clear <clear>` command, plugins are not unloaded
|
||||||
|
but restored to their respective style maps. This also applies when
|
||||||
|
multiple LAMMPS instances are created and deleted through the library
|
||||||
|
interface. The :doc:`plugin load <plugin>` load command may be issued
|
||||||
|
again, but for existing plugins they will be skipped. To replace
|
||||||
|
plugins they must be explicitly unloaded with :doc:`plugin unload
|
||||||
|
<plugin>`. When multiple LAMMPS instances are created concurrently, any
|
||||||
|
loaded plugins will be added to the global list of plugins, but are not
|
||||||
|
immediately available to any LAMMPS instance that was created before
|
||||||
|
loading the plugin. To "import" such plugins, the :doc:`plugin restore
|
||||||
|
<plugin>` may be used. Plugins are only removed when they are explicitly
|
||||||
|
unloaded or the LAMMPS interface is "finalized".
|
||||||
|
|
||||||
Compiling plugins
|
Compiling plugins
|
||||||
^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
|||||||
@ -29,6 +29,8 @@ Available topics in mostly chronological order are:
|
|||||||
- `Rename of fix STORE/PERATOM to fix STORE/ATOM and change of arguments`_
|
- `Rename of fix STORE/PERATOM to fix STORE/ATOM and change of arguments`_
|
||||||
- `Use Output::get_dump_by_id() instead of Output::find_dump()`_
|
- `Use Output::get_dump_by_id() instead of Output::find_dump()`_
|
||||||
- `Refactored grid communication using Grid3d/Grid2d classes instead of GridComm`_
|
- `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()`_
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
@ -610,3 +612,71 @@ KSpace solvers which use distributed FFT grids:
|
|||||||
- ``src/KSPACE/pppm.cpp``
|
- ``src/KSPACE/pppm.cpp``
|
||||||
|
|
||||||
This change is **required** or else the code will not compile.
|
This change is **required** or else the code will not compile.
|
||||||
|
|
||||||
|
FLERR as first argument to minimum image functions in Domain class
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionchanged:: 12Jun2025
|
||||||
|
|
||||||
|
The ``Domain::minimum_image()`` and ``Domain::minimum_image_big()``
|
||||||
|
functions were changed to take the ``FLERR`` macros as first argument.
|
||||||
|
This way the error message indicates *where* the function was called
|
||||||
|
instead of pointing to the implementation of the function. Example:
|
||||||
|
|
||||||
|
Old:
|
||||||
|
|
||||||
|
.. code-block:: c++
|
||||||
|
|
||||||
|
double delx1 = x[i1][0] - x[i2][0];
|
||||||
|
double dely1 = x[i1][1] - x[i2][1];
|
||||||
|
double delz1 = x[i1][2] - x[i2][2];
|
||||||
|
domain->minimum_image(delx1, dely1, delz1);
|
||||||
|
double r1 = sqrt(delx1 * delx1 + dely1 * dely1 + delz1 * delz1);
|
||||||
|
|
||||||
|
double delx2 = x[i3][0] - x[i2][0];
|
||||||
|
double dely2 = x[i3][1] - x[i2][1];
|
||||||
|
double delz2 = x[i3][2] - x[i2][2];
|
||||||
|
domain->minimum_image_big(delx2, dely2, delz2);
|
||||||
|
double r2 = sqrt(delx2 * delx2 + dely2 * dely2 + delz2 * delz2);
|
||||||
|
|
||||||
|
New:
|
||||||
|
|
||||||
|
.. code-block:: c++
|
||||||
|
|
||||||
|
double delx1 = x[i1][0] - x[i2][0];
|
||||||
|
double dely1 = x[i1][1] - x[i2][1];
|
||||||
|
double delz1 = x[i1][2] - x[i2][2];
|
||||||
|
domain->minimum_image(FLERR, delx1, dely1, delz1);
|
||||||
|
double r1 = sqrt(delx1 * delx1 + dely1 * dely1 + delz1 * delz1);
|
||||||
|
|
||||||
|
double delx2 = x[i3][0] - x[i2][0];
|
||||||
|
double dely2 = x[i3][1] - x[i2][1];
|
||||||
|
double delz2 = x[i3][2] - x[i2][2];
|
||||||
|
domain->minimum_image_big(FLERR, delx2, dely2, delz2);
|
||||||
|
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
|
The list below are some random notes on behavior of LAMMPS that is
|
||||||
machines or different numbers of processors, this is typically not a
|
sometimes unexpected or even considered a bug. Most of the time, these
|
||||||
bug. In theory you should get identical answers on any number of
|
are just issues of understanding how LAMMPS is implemented and
|
||||||
processors and on any machine. In practice, numerical round-off can
|
parallelized. Please also have a look at the :doc:`Error details
|
||||||
cause slight differences and eventual divergence of molecular dynamics
|
discussions page <Errors_details>` that contains recommendations for
|
||||||
phase space trajectories within a few 100s or few 1000s of timesteps.
|
tracking down issues and explanations for error messages that may
|
||||||
However, the statistical properties of the two runs (e.g. average
|
sometimes be confusing or need additional explanations.
|
||||||
energy or temperature) should still be the same.
|
|
||||||
|
|
||||||
If the :doc:`velocity <velocity>` command is used to set initial atom
|
- A LAMMPS simulation typically has two stages, 1) issuing commands
|
||||||
velocities, a particular atom can be assigned a different velocity
|
and 2) run or minimize. Most LAMMPS errors are detected in stage 1),
|
||||||
when the problem is run on a different number of processors or on
|
others at the beginning of stage 2), and finally others like a bond
|
||||||
different machines. If this happens, the phase space trajectories of
|
stretching too far may or lost atoms or bonds may not occur until the
|
||||||
the two simulations will rapidly diverge. See the discussion of the
|
middle of a run.
|
||||||
*loop* option in the :doc:`velocity <velocity>` command for details and
|
|
||||||
options that avoid this issue.
|
|
||||||
|
|
||||||
Similarly, the :doc:`create_atoms <create_atoms>` command generates a
|
- If two LAMMPS runs do not produce the exact same answer on different
|
||||||
lattice of atoms. For the same physical system, the ordering and
|
machines or different numbers of processors, this is typically not a
|
||||||
numbering of atoms by atom ID may be different depending on the number
|
bug. In theory you should get identical answers on any number of
|
||||||
of processors.
|
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
|
- If the :doc:`velocity <velocity>` command is used to set initial atom
|
||||||
produce different random number streams on each processor and hence
|
velocities, a particular atom can be assigned a different velocity
|
||||||
will produce different effects when run on different numbers of
|
when the problem is run on a different number of processors or on
|
||||||
processors. A commonly-used example is the :doc:`fix langevin <fix_langevin>` command for thermostatting.
|
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
|
- Similarly, the :doc:`create_atoms <create_atoms>` command generates a
|
||||||
LAMMPS errors are detected at setup time; others like a bond
|
lattice of atoms. For the same physical system, the ordering and
|
||||||
stretching too far may not occur until the middle of a run.
|
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
|
- Some commands use random number generators which may be setup to
|
||||||
you can fix the problem. For most errors it will also print the last
|
produce different random number streams on each processor and hence
|
||||||
input script command that it was processing. Of course, LAMMPS cannot
|
will produce different effects when run on different numbers of
|
||||||
figure out your physics or numerical mistakes, like choosing too big a
|
processors. A commonly-used example is the :doc:`fix langevin
|
||||||
timestep, specifying erroneous force field coefficients, or putting 2
|
<fix_langevin>` command for thermostatting.
|
||||||
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/>`_.
|
|
||||||
|
|
||||||
If you get an error message about an invalid command in your input
|
- LAMMPS tries to flag errors and print informative error messages so
|
||||||
script, you can determine what command is causing the problem by
|
you can fix the problem. For most errors it will also print the last
|
||||||
looking in the log.lammps file or using the :doc:`echo command <echo>`
|
input script command that it was processing or even point to the
|
||||||
to see it on the screen. If you get an error like "Invalid ...
|
keyword that is causing troubles. Of course, LAMMPS cannot figure out
|
||||||
style", with ... being fix, compute, pair, etc, it means that you
|
your physics or numerical mistakes, like choosing too big a timestep,
|
||||||
mistyped the style name or that the command is part of an optional
|
specifying erroneous force field coefficients, or putting 2 atoms on
|
||||||
package which was not compiled into your executable. The list of
|
top of each other! Also, LAMMPS does not know what you *intend* to
|
||||||
available styles in your executable can be listed by using
|
do, but very strictly applies the syntax as described in the
|
||||||
:doc:`the -h command-line switch <Run_options>`. The installation and
|
documentation. If you run into errors that LAMMPS does not catch that
|
||||||
compilation of optional packages is explained on the
|
you think it should flag, please send an email to the `developers
|
||||||
:doc:`Build packages <Build_package>` doc page.
|
<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
|
- If you get an error message about an invalid command in your input
|
||||||
order. If you mess this up, LAMMPS will often flag the error, but it
|
script, you can determine what command is causing the problem by
|
||||||
may also simply read a bogus argument and assign a value that is
|
looking in the log.lammps file or using the :doc:`echo command <echo>`
|
||||||
valid, but not what you wanted. E.g. trying to read the string "abc"
|
to see it on the screen. If you get an error like "Invalid ...
|
||||||
as an integer value of 0. Careful reading of the associated doc page
|
style", with ... being fix, compute, pair, etc, it means that you
|
||||||
for the command should allow you to fix these problems. In most cases,
|
mistyped the style name or that the command is part of an optional
|
||||||
where LAMMPS expects to read a number, either integer or floating point,
|
package which was not compiled into your executable. The list of
|
||||||
it performs a stringent test on whether the provided input actually
|
available styles in your executable can be listed by using
|
||||||
is an integer or floating-point number, respectively, and reject the
|
:doc:`the -h command-line switch <Run_options>`. The installation and
|
||||||
input with an error message (for instance, when an integer is required,
|
compilation of optional packages is explained on the :doc:`Build
|
||||||
but a floating-point number 1.0 is provided):
|
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
|
ERROR: Expected integer parameter instead of '1.0' in input script or data file
|
||||||
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,
|
|
||||||
|
|
||||||
.. 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
|
.. note::
|
||||||
the documentation of the corresponding command explicitly says it is.
|
|
||||||
Otherwise, you will receive an error message of this kind:
|
|
||||||
|
|
||||||
.. 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
|
ERROR: Expected floating point parameter instead of 'v_name' in input script or data file
|
||||||
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:
|
|
||||||
|
|
||||||
LAMMPS runs in the available memory a processor allows to be
|
- Generally, LAMMPS will print a message to the screen and logfile and
|
||||||
allocated. Most reasonable MD runs are compute limited, not memory
|
exit gracefully when it encounters a fatal error. When running in
|
||||||
limited, so this should not be a bottleneck on most platforms. Almost
|
parallel this message may be stuck in an I/O buffer and LAMMPS will be
|
||||||
all large memory allocations in the code are done via C-style malloc's
|
terminated before that buffer is printed. In that case you can try
|
||||||
which will generate an error message if you run out of memory.
|
adding the ``-nonblock`` or ``-nb`` command-line flag to turn off that
|
||||||
Smaller chunks of memory are allocated via C++ "new" statements. If
|
buffering. Please note that this should not be used for production
|
||||||
you are unlucky you could run out of memory just when one of these
|
runs, since turning off buffering usually has a significant negative
|
||||||
small requests is made, in which case the code will crash or hang (in
|
impact on performance (even worse than :doc:`thermo_modify flush yes
|
||||||
parallel), since LAMMPS does not trap on those errors.
|
<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
|
- LAMMPS runs in the available memory a processor allows to be
|
||||||
typically due to invalid physics and numerics that your simulation is
|
allocated. Most reasonable MD runs are compute limited, not memory
|
||||||
computing. If you see wild thermodynamic values or NaN values in your
|
limited, so this should not be a bottleneck on most platforms. Almost
|
||||||
LAMMPS output, something is wrong with your simulation. If you
|
all large memory allocations in the code are done via C-style malloc's
|
||||||
suspect this is happening, it is a good idea to print out
|
which will generate an error message if you run out of memory.
|
||||||
thermodynamic info frequently (e.g. every timestep) via the
|
Smaller chunks of memory are allocated via C++ "new" statements. If
|
||||||
:doc:`thermo <thermo>` so you can monitor what is happening.
|
you are unlucky you could run out of memory just when one of these
|
||||||
Visualizing the atom movement is also a good idea to ensure your model
|
small requests is made, in which case the code will crash or hang (in
|
||||||
is behaving as you expect.
|
parallel).
|
||||||
|
|
||||||
In parallel, one way LAMMPS can hang is due to how different MPI
|
- Illegal arithmetic can cause LAMMPS to run slow or crash. This is
|
||||||
implementations handle buffering of messages. If the code hangs
|
typically due to invalid physics and numerics that your simulation is
|
||||||
without an error message, it may be that you need to specify an MPI
|
computing. If you see wild thermodynamic values or NaN values in your
|
||||||
setting or two (usually via an environment variable) to enable
|
LAMMPS output, something is wrong with your simulation. If you
|
||||||
buffering or boost the sizes of messages that can be buffered.
|
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.
|
||||||
|
|||||||
@ -1,11 +1,15 @@
|
|||||||
Warning messages
|
Warning messages
|
||||||
================
|
================
|
||||||
|
|
||||||
This is an alphabetic list of the WARNING messages LAMMPS prints out
|
This is an alphabetic list of some of the WARNING messages LAMMPS prints
|
||||||
and the reason why. If the explanation here is not sufficient, the
|
out and the reason why. If the explanation here is not sufficient, the
|
||||||
documentation for the offending command may help. Warning messages
|
documentation for the offending command may help. This is a historic
|
||||||
also list the source file and line number where the warning was
|
list and no longer updated. Instead the LAMMPS developers are trying
|
||||||
generated. For example, a message like this:
|
to provide more details right with the error message or link to a
|
||||||
|
paragraph with :doc:`detailed explanations <Errors_details>`.
|
||||||
|
|
||||||
|
Warning messages also list the source file and line number where the
|
||||||
|
warning was generated. For example, a message like this:
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
@ -14,7 +18,7 @@ generated. For example, a message like this:
|
|||||||
means that line #187 in the file src/domain.cpp generated the error.
|
means that line #187 in the file src/domain.cpp generated the error.
|
||||||
Looking in the source code may help you figure out what went wrong.
|
Looking in the source code may help you figure out what went wrong.
|
||||||
|
|
||||||
Doc page with :doc:`ERROR messages <Errors_messages>`
|
Please also see the page with :doc:`Error messages <Errors_messages>`
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
@ -28,16 +32,10 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
cutoff is set too short or the angle has blown apart and an atom is
|
cutoff is set too short or the angle has blown apart and an atom is
|
||||||
too far away.
|
too far away.
|
||||||
|
|
||||||
*Angle style in data file differs from currently defined angle style*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Angles are defined but no angle style is set*
|
*Angles are defined but no angle style is set*
|
||||||
The topology contains angles, but there are no angle forces computed
|
The topology contains angles, but there are no angle forces computed
|
||||||
since there was no angle_style command.
|
since there was no angle_style command.
|
||||||
|
|
||||||
*Atom style in data file differs from currently defined atom style*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Bond atom missing in box size check*
|
*Bond atom missing in box size check*
|
||||||
The second atom needed to compute a particular bond is missing on this
|
The second atom needed to compute a particular bond is missing on this
|
||||||
processor. Typically this is because the pairwise cutoff is set too
|
processor. Typically this is because the pairwise cutoff is set too
|
||||||
@ -53,9 +51,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
processor. Typically this is because the pairwise cutoff is set too
|
processor. Typically this is because the pairwise cutoff is set too
|
||||||
short or the bond has blown apart and an atom is too far away.
|
short or the bond has blown apart and an atom is too far away.
|
||||||
|
|
||||||
*Bond style in data file differs from currently defined bond style*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Bonds are defined but no bond style is set*
|
*Bonds are defined but no bond style is set*
|
||||||
The topology contains bonds, but there are no bond forces computed
|
The topology contains bonds, but there are no bond forces computed
|
||||||
since there was no bond_style command.
|
since there was no bond_style command.
|
||||||
@ -68,9 +63,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
length, multiplying by the number of bonds in the interaction (e.g. 3
|
length, multiplying by the number of bonds in the interaction (e.g. 3
|
||||||
for a dihedral) and adding a small amount of stretch.
|
for a dihedral) and adding a small amount of stretch.
|
||||||
|
|
||||||
*Both groups in compute group/group have a net charge; the Kspace boundary correction to energy will be non-zero*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Calling write_dump before a full system init.*
|
*Calling write_dump before a full system init.*
|
||||||
The write_dump command is used before the system has been fully
|
The write_dump command is used before the system has been fully
|
||||||
initialized as part of a 'run' or 'minimize' command. Not all dump
|
initialized as part of a 'run' or 'minimize' command. Not all dump
|
||||||
@ -86,18 +78,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
This means the temperature associated with the rigid bodies may be
|
This means the temperature associated with the rigid bodies may be
|
||||||
incorrect on this timestep.
|
incorrect on this timestep.
|
||||||
|
|
||||||
*Cannot include log terms without 1/r terms; setting flagHI to 1*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Cannot include log terms without 1/r terms; setting flagHI to 1.*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Charges are set, but coulombic solver is not used*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Charges did not converge at step %ld: %lg*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost*
|
*Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost*
|
||||||
The communication cutoff defaults to the maximum of what is inferred from
|
The communication cutoff defaults to the maximum of what is inferred from
|
||||||
pair and bond styles (will be zero, if none are defined) and what is specified
|
pair and bond styles (will be zero, if none are defined) and what is specified
|
||||||
@ -123,9 +103,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
is not changed automatically and the warning may be ignored depending
|
is not changed automatically and the warning may be ignored depending
|
||||||
on the specific system being simulated.
|
on the specific system being simulated.
|
||||||
|
|
||||||
*Communication cutoff is too small for SNAP micro load balancing, increased to %lf*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Compute cna/atom cutoff may be too large to find ghost atom neighbors*
|
*Compute cna/atom cutoff may be too large to find ghost atom neighbors*
|
||||||
The neighbor cutoff used may not encompass enough ghost atoms
|
The neighbor cutoff used may not encompass enough ghost atoms
|
||||||
to perform this operation correctly.
|
to perform this operation correctly.
|
||||||
@ -158,9 +135,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
Conformation of the 4 listed dihedral atoms is extreme; you may want
|
Conformation of the 4 listed dihedral atoms is extreme; you may want
|
||||||
to check your simulation geometry.
|
to check your simulation geometry.
|
||||||
|
|
||||||
*Dihedral style in data file differs from currently defined dihedral style*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Dihedrals are defined but no dihedral style is set*
|
*Dihedrals are defined but no dihedral style is set*
|
||||||
The topology contains dihedrals, but there are no dihedral forces computed
|
The topology contains dihedrals, but there are no dihedral forces computed
|
||||||
since there was no dihedral_style command.
|
since there was no dihedral_style command.
|
||||||
@ -177,9 +151,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
*Estimated error in splitting of dispersion coeffs is %g*
|
*Estimated error in splitting of dispersion coeffs is %g*
|
||||||
Error is greater than 0.0001 percent.
|
Error is greater than 0.0001 percent.
|
||||||
|
|
||||||
*Ewald/disp Newton solver failed, using old method to estimate g_ewald*
|
|
||||||
Self-explanatory. Choosing a different cutoff value may help.
|
|
||||||
|
|
||||||
*FENE bond too long*
|
*FENE bond too long*
|
||||||
A FENE bond has stretched dangerously far. It's interaction strength
|
A FENE bond has stretched dangerously far. It's interaction strength
|
||||||
will be truncated to attempt to prevent the bond from blowing up.
|
will be truncated to attempt to prevent the bond from blowing up.
|
||||||
@ -192,9 +163,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
A FENE bond has stretched dangerously far. It's interaction strength
|
A FENE bond has stretched dangerously far. It's interaction strength
|
||||||
will be truncated to attempt to prevent the bond from blowing up.
|
will be truncated to attempt to prevent the bond from blowing up.
|
||||||
|
|
||||||
*Fix halt condition for fix-id %s met on step %ld with value %g*
|
|
||||||
Self explanatory.
|
|
||||||
|
|
||||||
*Fix SRD walls overlap but fix srd overlap not set*
|
*Fix SRD walls overlap but fix srd overlap not set*
|
||||||
You likely want to set this in your input script.
|
You likely want to set this in your input script.
|
||||||
|
|
||||||
@ -238,21 +206,12 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
*Fix property/atom mol or charge w/out ghost communication*
|
*Fix property/atom mol or charge w/out ghost communication*
|
||||||
A model typically needs these properties defined for ghost atoms.
|
A model typically needs these properties defined for ghost atoms.
|
||||||
|
|
||||||
*Fix qeq CG convergence failed (%g) after %d iterations at %ld step*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Fix qeq has non-zero lower Taper radius cutoff*
|
*Fix qeq has non-zero lower Taper radius cutoff*
|
||||||
Absolute value must be <= 0.01.
|
Absolute value must be <= 0.01.
|
||||||
|
|
||||||
*Fix qeq has very low Taper radius cutoff*
|
*Fix qeq has very low Taper radius cutoff*
|
||||||
Value should typically be >= 5.0.
|
Value should typically be >= 5.0.
|
||||||
|
|
||||||
*Fix qeq/dynamic tolerance may be too small for damped dynamics*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Fix qeq/fire tolerance may be too small for damped fires*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Fix rattle should come after all other integration fixes*
|
*Fix rattle should come after all other integration fixes*
|
||||||
This fix is designed to work after all other integration fixes change
|
This fix is designed to work after all other integration fixes change
|
||||||
atom positions. Thus it should be the last integration fix specified.
|
atom positions. Thus it should be the last integration fix specified.
|
||||||
@ -285,9 +244,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
The user-specified force accuracy cannot be achieved unless the table
|
The user-specified force accuracy cannot be achieved unless the table
|
||||||
feature is disabled by using 'pair_modify table 0'.
|
feature is disabled by using 'pair_modify table 0'.
|
||||||
|
|
||||||
*Geometric mixing assumed for 1/r\^6 coefficients*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Group for fix_modify temp != fix group*
|
*Group for fix_modify temp != fix group*
|
||||||
The fix_modify command is specifying a temperature computation that
|
The fix_modify command is specifying a temperature computation that
|
||||||
computes a temperature on a different group of atoms than the fix
|
computes a temperature on a different group of atoms than the fix
|
||||||
@ -310,46 +266,14 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
Conformation of the 4 listed improper atoms is extreme; you may want
|
Conformation of the 4 listed improper atoms is extreme; you may want
|
||||||
to check your simulation geometry.
|
to check your simulation geometry.
|
||||||
|
|
||||||
*Improper style in data file differs from currently defined improper style*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Impropers are defined but no improper style is set*
|
*Impropers are defined but no improper style is set*
|
||||||
The topology contains impropers, but there are no improper forces computed
|
The topology contains impropers, but there are no improper forces computed
|
||||||
since there was no improper_style command.
|
since there was no improper_style command.
|
||||||
|
|
||||||
*Inconsistent image flags*
|
|
||||||
The image flags for a pair on bonded atoms appear to be inconsistent.
|
|
||||||
Inconsistent means that when the coordinates of the two atoms are
|
|
||||||
unwrapped using the image flags, the two atoms are far apart.
|
|
||||||
Specifically they are further apart than half a periodic box length.
|
|
||||||
Or they are more than a box length apart in a non-periodic dimension.
|
|
||||||
This is usually due to the initial data file not having correct image
|
|
||||||
flags for the two atoms in a bond that straddles a periodic boundary.
|
|
||||||
They should be different by 1 in that case. This is a warning because
|
|
||||||
inconsistent image flags will not cause problems for dynamics or most
|
|
||||||
LAMMPS simulations. However they can cause problems when such atoms
|
|
||||||
are used with the fix rigid or replicate commands. Note that if you
|
|
||||||
have an infinite periodic crystal with bonds then it is impossible to
|
|
||||||
have fully consistent image flags, since some bonds will cross
|
|
||||||
periodic boundaries and connect two atoms with the same image
|
|
||||||
flag.
|
|
||||||
|
|
||||||
*Increasing communication cutoff for GPU style*
|
*Increasing communication cutoff for GPU style*
|
||||||
The pair style has increased the communication cutoff to be consistent with
|
The pair style has increased the communication cutoff to be consistent with
|
||||||
the communication cutoff requirements for this pair style when run on the GPU.
|
the communication cutoff requirements for this pair style when run on the GPU.
|
||||||
|
|
||||||
*KIM Model does not provide 'energy'; Potential energy will be zero*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*KIM Model does not provide 'forces'; Forces will be zero*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*KIM Model does not provide 'particleEnergy'; energy per atom will be zero*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*KIM Model does not provide 'particleVirial'; virial per atom will be zero*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Kspace_modify slab param < 2.0 may cause unphysical behavior*
|
*Kspace_modify slab param < 2.0 may cause unphysical behavior*
|
||||||
The kspace_modify slab parameter should be larger to ensure periodic
|
The kspace_modify slab parameter should be larger to ensure periodic
|
||||||
grids padded with empty space do not overlap.
|
grids padded with empty space do not overlap.
|
||||||
@ -401,20 +325,10 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
box, or moved further than one processor's subdomain away before
|
box, or moved further than one processor's subdomain away before
|
||||||
reneighboring.
|
reneighboring.
|
||||||
|
|
||||||
*MSM mesh too small, increasing to 2 points in each direction*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Mismatch between velocity and compute groups*
|
*Mismatch between velocity and compute groups*
|
||||||
The temperature computation used by the velocity command will not be
|
The temperature computation used by the velocity command will not be
|
||||||
on the same group of atoms that velocities are being set for.
|
on the same group of atoms that velocities are being set for.
|
||||||
|
|
||||||
*Mixing forced for lj coefficients*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Molecule attributes do not match system attributes*
|
|
||||||
An attribute is specified (e.g. diameter, charge) that is
|
|
||||||
not defined for the specified atom style.
|
|
||||||
|
|
||||||
*Molecule has bond topology but no special bond settings*
|
*Molecule has bond topology but no special bond settings*
|
||||||
This means the bonded atoms will not be excluded in pairwise
|
This means the bonded atoms will not be excluded in pairwise
|
||||||
interactions.
|
interactions.
|
||||||
@ -449,9 +363,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
*More than one compute damage/atom*
|
*More than one compute damage/atom*
|
||||||
It is not efficient to use compute ke/atom more than once.
|
It is not efficient to use compute ke/atom more than once.
|
||||||
|
|
||||||
*More than one compute dilatation/atom*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*More than one compute erotate/sphere/atom*
|
*More than one compute erotate/sphere/atom*
|
||||||
It is not efficient to use compute erorate/sphere/atom more than once.
|
It is not efficient to use compute erorate/sphere/atom more than once.
|
||||||
|
|
||||||
@ -464,24 +375,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
*More than one compute orientorder/atom*
|
*More than one compute orientorder/atom*
|
||||||
It is not efficient to use compute orientorder/atom more than once.
|
It is not efficient to use compute orientorder/atom more than once.
|
||||||
|
|
||||||
*More than one compute plasticity/atom*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*More than one compute sna/atom*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*More than one compute sna/grid*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*More than one compute sna/grid/local*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*More than one compute snad/atom*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*More than one compute snav/atom*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*More than one fix poems*
|
*More than one fix poems*
|
||||||
It is not efficient to use fix poems more than once.
|
It is not efficient to use fix poems more than once.
|
||||||
|
|
||||||
@ -557,21 +450,12 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
*Pair COMB charge %.10f with force %.10f hit min barrier*
|
*Pair COMB charge %.10f with force %.10f hit min barrier*
|
||||||
Something is possibly wrong with your model.
|
Something is possibly wrong with your model.
|
||||||
|
|
||||||
*Pair brownian needs newton pair on for momentum conservation*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Pair dpd needs newton pair on for momentum conservation*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Pair dsmc: num_of_collisions > number_of_A*
|
*Pair dsmc: num_of_collisions > number_of_A*
|
||||||
Collision model in DSMC is breaking down.
|
Collision model in DSMC is breaking down.
|
||||||
|
|
||||||
*Pair dsmc: num_of_collisions > number_of_B*
|
*Pair dsmc: num_of_collisions > number_of_B*
|
||||||
Collision model in DSMC is breaking down.
|
Collision model in DSMC is breaking down.
|
||||||
|
|
||||||
*Pair style in data file differs from currently defined pair style*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Pair style restartinfo set but has no restart support*
|
*Pair style restartinfo set but has no restart support*
|
||||||
This pair style has a bug, where it does not support reading and
|
This pair style has a bug, where it does not support reading and
|
||||||
writing information to a restart file, but does not set the member
|
writing information to a restart file, but does not set the member
|
||||||
@ -681,9 +565,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
cluster specified by the fix shake command is numerically suspect. LAMMPS
|
cluster specified by the fix shake command is numerically suspect. LAMMPS
|
||||||
will set it to 0.0 and continue.
|
will set it to 0.0 and continue.
|
||||||
|
|
||||||
*Shell command '%s' failed with error '%s'*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Shell command returned with non-zero status*
|
*Shell command returned with non-zero status*
|
||||||
This may indicate the shell command did not operate as expected.
|
This may indicate the shell command did not operate as expected.
|
||||||
|
|
||||||
@ -694,15 +575,9 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
This will lead to invalid constraint forces in the SHAKE/RATTLE
|
This will lead to invalid constraint forces in the SHAKE/RATTLE
|
||||||
computation.
|
computation.
|
||||||
|
|
||||||
*Simulations might be very slow because of large number of structure factors*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Slab correction not needed for MSM*
|
*Slab correction not needed for MSM*
|
||||||
Slab correction is intended to be used with Ewald or PPPM and is not needed by MSM.
|
Slab correction is intended to be used with Ewald or PPPM and is not needed by MSM.
|
||||||
|
|
||||||
*Specifying an 'subset' value of '0' is equivalent to no 'subset' keyword*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*System is not charge neutral, net charge = %g*
|
*System is not charge neutral, net charge = %g*
|
||||||
The total charge on all atoms on the system is not 0.0.
|
The total charge on all atoms on the system is not 0.0.
|
||||||
For some KSpace solvers this is only a warning.
|
For some KSpace solvers this is only a warning.
|
||||||
@ -734,9 +609,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
assumed to also be for all atoms. Thus the pressure printed by thermo
|
assumed to also be for all atoms. Thus the pressure printed by thermo
|
||||||
could be inaccurate.
|
could be inaccurate.
|
||||||
|
|
||||||
*The fix ave/spatial command has been replaced by the more flexible fix ave/chunk and compute chunk/atom commands -- fix ave/spatial will be removed in the summer of 2015*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*The minimizer does not re-orient dipoles when using fix efield*
|
*The minimizer does not re-orient dipoles when using fix efield*
|
||||||
This means that only the atom coordinates will be minimized,
|
This means that only the atom coordinates will be minimized,
|
||||||
not the orientation of the dipoles.
|
not the orientation of the dipoles.
|
||||||
@ -745,9 +617,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
More than the maximum # of neighbors was found multiple times. This
|
More than the maximum # of neighbors was found multiple times. This
|
||||||
was unexpected.
|
was unexpected.
|
||||||
|
|
||||||
*Too many inner timesteps in fix ttm*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Too many neighbors in CNA for %d atoms*
|
*Too many neighbors in CNA for %d atoms*
|
||||||
More than the maximum # of neighbors was found multiple times. This
|
More than the maximum # of neighbors was found multiple times. This
|
||||||
was unexpected.
|
was unexpected.
|
||||||
@ -775,24 +644,6 @@ Doc page with :doc:`ERROR messages <Errors_messages>`
|
|||||||
The deformation will heat the SRD particles so this can
|
The deformation will heat the SRD particles so this can
|
||||||
be dangerous.
|
be dangerous.
|
||||||
|
|
||||||
*Using kspace solver on system with no charge*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Using largest cut-off for lj/long/dipole/long long long*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Using largest cutoff for buck/long/coul/long*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Using largest cutoff for lj/long/coul/long*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Using largest cutoff for pair_style lj/long/tip4p/long*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Using package gpu without any pair style defined*
|
|
||||||
Self-explanatory.
|
|
||||||
|
|
||||||
*Using pair potential shift with pair_modify compute no*
|
*Using pair potential shift with pair_modify compute no*
|
||||||
The shift effects will thus not be computed.
|
The shift effects will thus not be computed.
|
||||||
|
|
||||||
|
|||||||
@ -54,7 +54,7 @@ Lowercase directories
|
|||||||
+-------------+------------------------------------------------------------------+
|
+-------------+------------------------------------------------------------------+
|
||||||
| body | body particles, 2d system |
|
| body | body particles, 2d system |
|
||||||
+-------------+------------------------------------------------------------------+
|
+-------------+------------------------------------------------------------------+
|
||||||
| bpm | BPM simulations of pouring elastic grains and plate impact |
|
| bpm | simulations of solid elastic/plastic deformation and fracture |
|
||||||
+-------------+------------------------------------------------------------------+
|
+-------------+------------------------------------------------------------------+
|
||||||
| cmap | CMAP 5-body contributions to CHARMM force field |
|
| cmap | CMAP 5-body contributions to CHARMM force field |
|
||||||
+-------------+------------------------------------------------------------------+
|
+-------------+------------------------------------------------------------------+
|
||||||
|
|||||||
@ -69,10 +69,11 @@ statement. Internally, it will call either
|
|||||||
:cpp:func:`lammps_open_fortran` or :cpp:func:`lammps_open_no_mpi` from
|
:cpp:func:`lammps_open_fortran` or :cpp:func:`lammps_open_no_mpi` from
|
||||||
the C library API to create the class instance. All arguments are
|
the C library API to create the class instance. All arguments are
|
||||||
optional and :cpp:func:`lammps_mpi_init` will be called automatically
|
optional and :cpp:func:`lammps_mpi_init` will be called automatically
|
||||||
if it is needed. Similarly, a possible call to
|
if it is needed. Similarly, optional calls to
|
||||||
:cpp:func:`lammps_mpi_finalize` is integrated into the :f:func:`close`
|
:cpp:func:`lammps_mpi_finalize`, :cpp:func:`lammps_kokkos_finalize`,
|
||||||
function and triggered with the optional logical argument set to
|
:cpp:func:`lammps_python_finalize`, and :cpp:func:`lammps_plugin_finalize`
|
||||||
``.TRUE.``. Here is a simple example:
|
are integrated into the :f:func:`close` function and triggered with the
|
||||||
|
optional logical argument set to ``.TRUE.``. Here is a simple example:
|
||||||
|
|
||||||
.. code-block:: fortran
|
.. code-block:: fortran
|
||||||
|
|
||||||
@ -521,8 +522,8 @@ Procedures Bound to the :f:type:`lammps` Derived Type
|
|||||||
This method will close down the LAMMPS instance through calling
|
This method will close down the LAMMPS instance through calling
|
||||||
:cpp:func:`lammps_close`. If the *finalize* argument is present and
|
:cpp:func:`lammps_close`. If the *finalize* argument is present and
|
||||||
has a value of ``.TRUE.``, then this subroutine also calls
|
has a value of ``.TRUE.``, then this subroutine also calls
|
||||||
:cpp:func:`lammps_kokkos_finalize` and
|
:cpp:func:`lammps_kokkos_finalize`, :cpp:func:`lammps_mpi_finalize`,
|
||||||
:cpp:func:`lammps_mpi_finalize`.
|
:cpp:func:`lammps_python_finalize`, and :cpp:func:`lammps_plugin_finalize`.
|
||||||
|
|
||||||
:o finalize: shut down the MPI environment of the LAMMPS
|
:o finalize: shut down the MPI environment of the LAMMPS
|
||||||
library if ``.TRUE.``.
|
library if ``.TRUE.``.
|
||||||
@ -530,6 +531,8 @@ Procedures Bound to the :f:type:`lammps` Derived Type
|
|||||||
:to: :cpp:func:`lammps_close`
|
:to: :cpp:func:`lammps_close`
|
||||||
:to: :cpp:func:`lammps_mpi_finalize`
|
:to: :cpp:func:`lammps_mpi_finalize`
|
||||||
:to: :cpp:func:`lammps_kokkos_finalize`
|
:to: :cpp:func:`lammps_kokkos_finalize`
|
||||||
|
:to: :cpp:func:`lammps_python_finalize`
|
||||||
|
:to: :cpp:func:`lammps_plugin_finalize`
|
||||||
|
|
||||||
--------
|
--------
|
||||||
|
|
||||||
@ -2096,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
|
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,
|
from a given list of coordinates and a list of atom types. Additionally,
|
||||||
@ -2125,6 +2128,8 @@ Procedures Bound to the :f:type:`lammps` Derived Type
|
|||||||
will be created, not dropped, and the box dimensions will be extended.
|
will be created, not dropped, and the box dimensions will be extended.
|
||||||
Default is ``.FALSE.``
|
Default is ``.FALSE.``
|
||||||
:otype bexpand: logical,optional
|
:otype bexpand: logical,optional
|
||||||
|
:r atoms: number of created atoms
|
||||||
|
:rtype atoms: integer(c_int)
|
||||||
:to: :cpp:func:`lammps_create_atoms`
|
:to: :cpp:func:`lammps_create_atoms`
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
@ -2149,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])
|
.. f:function:: find_pair_neighlist(style[, exact][, nsub][, reqid])
|
||||||
|
|
||||||
Find index of a neighbor list requested by a pair style.
|
Find index of a neighbor list requested by a pair style.
|
||||||
@ -2773,8 +2790,7 @@ Procedures Bound to the :f:type:`lammps` Derived Type
|
|||||||
END SUBROUTINE external_callback
|
END SUBROUTINE external_callback
|
||||||
END INTERFACE
|
END INTERFACE
|
||||||
|
|
||||||
where ``c_bigint`` is ``c_int`` if ``-DLAMMPS_SMALLSMALL`` was used and
|
where ``c_bigint`` is ``c_int64_t`` and ``c_tagint`` is ``c_int64_t`` if
|
||||||
``c_int64_t`` otherwise; and ``c_tagint`` is ``c_int64_t`` if
|
|
||||||
``-DLAMMPS_BIGBIG`` was used and ``c_int`` otherwise.
|
``-DLAMMPS_BIGBIG`` was used and ``c_int`` otherwise.
|
||||||
|
|
||||||
The argument *caller* to :f:subr:`set_fix_external_callback` is unlimited
|
The argument *caller* to :f:subr:`set_fix_external_callback` is unlimited
|
||||||
|
|||||||
@ -40,6 +40,7 @@ Settings howto
|
|||||||
Howto_walls
|
Howto_walls
|
||||||
Howto_nemd
|
Howto_nemd
|
||||||
Howto_dispersion
|
Howto_dispersion
|
||||||
|
Howto_bulk2slab
|
||||||
|
|
||||||
Analysis howto
|
Analysis howto
|
||||||
==============
|
==============
|
||||||
@ -65,6 +66,7 @@ Force fields howto
|
|||||||
:name: force_howto
|
:name: force_howto
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
|
Howto_FFgeneral
|
||||||
Howto_bioFF
|
Howto_bioFF
|
||||||
Howto_amoeba
|
Howto_amoeba
|
||||||
Howto_tip3p
|
Howto_tip3p
|
||||||
@ -91,6 +93,7 @@ Packages howto
|
|||||||
Howto_manifold
|
Howto_manifold
|
||||||
Howto_rheo
|
Howto_rheo
|
||||||
Howto_spins
|
Howto_spins
|
||||||
|
Howto_apip
|
||||||
|
|
||||||
Tutorials howto
|
Tutorials howto
|
||||||
===============
|
===============
|
||||||
|
|||||||
55
doc/src/Howto_FFgeneral.rst
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
Some general force field considerations
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
A compact summary of the concepts, definitions, and properties of force
|
||||||
|
fields with explicit bonded interactions (like the ones discussed in
|
||||||
|
this HowTo) is given in :ref:`(Gissinger) <Typelabel2>`.
|
||||||
|
|
||||||
|
A force field has 2 parts: the formulas that define its potential
|
||||||
|
functions and the coefficients used for a particular system. To assign
|
||||||
|
parameters it is first required to assign atom types. Those are not
|
||||||
|
only based on the elements, but also on the chemical environment due to
|
||||||
|
the atoms bound to them. This often follows the chemical concept of
|
||||||
|
*functional groups*. Example: a carbon atom bound with a single bond to
|
||||||
|
a single OH-group (alcohol) would be a different atom type than a carbon
|
||||||
|
atom bound to a methyl CH3 group (aliphatic carbon). The atom types
|
||||||
|
usually then determine the non-bonded Lennard-Jones parameters and the
|
||||||
|
parameters for bonds, angles, dihedrals, and impropers. On top of that,
|
||||||
|
partial charges have to be applied. Those are usually independent of
|
||||||
|
the atom types and are determined either for groups of atoms called
|
||||||
|
residues with some fitting procedure based on quantum mechanical
|
||||||
|
calculations, or based on some increment system that add or subtract
|
||||||
|
increments from the partial charge of an atom based on the types of
|
||||||
|
the neighboring atoms.
|
||||||
|
|
||||||
|
Force fields differ in the strategies they employ to determine the
|
||||||
|
parameters and charge distribution in how generic or specific they are
|
||||||
|
which in turn has an impact on the accuracy (compare for example
|
||||||
|
CGenFF to CHARMM and GAFF to Amber). Because of the different
|
||||||
|
strategies, it is not a good idea to use a mix of parameters from
|
||||||
|
different force field *families* (like CHARMM, Amber, or GROMOS)
|
||||||
|
and that extends to the parameters for the solvent, especially
|
||||||
|
water. The publication describing the parameterization of a force
|
||||||
|
field will describe which water model to use. Changing the water
|
||||||
|
model usually leads to overall worse results (even if it may improve
|
||||||
|
on the water itself).
|
||||||
|
|
||||||
|
In addition, one has to consider that *families* of force fields like
|
||||||
|
CHARMM, Amber, OPLS, or GROMOS have evolved over time and thus provide
|
||||||
|
different *revisions* of the force field parameters. These often
|
||||||
|
corresponds to changes in the functional form or the parameterization
|
||||||
|
strategies. This may also result in changes required for simulation
|
||||||
|
settings like the preferred cutoff or how Coulomb interactions are
|
||||||
|
computed (cutoff, smoothed/shifted cutoff, or long-range with Ewald
|
||||||
|
summation or equivalent). Unless explicitly stated in the publication
|
||||||
|
describing the force field, the Coulomb interaction cannot be chosen at
|
||||||
|
will but must match the revision of the force field. That said,
|
||||||
|
liberties may be taken during the initial equilibration of a system to
|
||||||
|
speed up the process, but not for production simulations.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. _Typelabel2:
|
||||||
|
|
||||||
|
**(Gissinger)** J. R. Gissinger, I. Nikiforov, Y. Afshar, B. Waters, M. Choi, D. S. Karls, A. Stukowski, W. Im, H. Heinz, A. Kohlmeyer, and E. B. Tadmor, J Phys Chem B, 128, 3282-3297 (2024).
|
||||||
|
|
||||||
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,22 +1,16 @@
|
|||||||
CHARMM, AMBER, COMPASS, DREIDING, and OPLS force fields
|
CHARMM, AMBER, COMPASS, DREIDING, and OPLS force fields
|
||||||
=======================================================
|
=======================================================
|
||||||
|
|
||||||
A compact summary of the concepts, definitions, and properties of
|
Here we only discuss formulas implemented in LAMMPS that correspond to
|
||||||
force fields with explicit bonded interactions (like the ones discussed
|
formulas commonly used in the CHARMM, AMBER, COMPASS, and DREIDING force
|
||||||
in this HowTo) is given in :ref:`(Gissinger) <Typelabel2>`.
|
fields. Setting coefficients is done either from special sections in an
|
||||||
|
input data file via the :doc:`read_data <read_data>` command or in the
|
||||||
A force field has 2 parts: the formulas that define it and the
|
input script with commands like :doc:`pair_coeff <pair_coeff>` or
|
||||||
coefficients used for a particular system. Here we only discuss
|
:doc:`bond_coeff <bond_coeff>` and so on. See the :doc:`Tools <Tools>`
|
||||||
formulas implemented in LAMMPS that correspond to formulas commonly used
|
doc page for additional tools that can use CHARMM, AMBER, or Materials
|
||||||
in the CHARMM, AMBER, COMPASS, and DREIDING force fields. Setting
|
Studio generated files to assign force field coefficients and convert
|
||||||
coefficients is done either from special sections in an input data file
|
their output into LAMMPS input. LAMMPS input scripts can also be
|
||||||
via the :doc:`read_data <read_data>` command or in the input script with
|
generated by `charmm-gui.org <https://charmm-gui.org/>`_.
|
||||||
commands like :doc:`pair_coeff <pair_coeff>` or :doc:`bond_coeff
|
|
||||||
<bond_coeff>` and so on. See the :doc:`Tools <Tools>` doc page for
|
|
||||||
additional tools that can use CHARMM, AMBER, or Materials Studio
|
|
||||||
generated files to assign force field coefficients and convert their
|
|
||||||
output into LAMMPS input. LAMMPS input scripts can also be generated by
|
|
||||||
`charmm-gui.org <https://charmm-gui.org/>`_.
|
|
||||||
|
|
||||||
CHARMM and AMBER
|
CHARMM and AMBER
|
||||||
----------------
|
----------------
|
||||||
@ -203,9 +197,11 @@ rather than individual force constants and geometric parameters that
|
|||||||
depend on the particular combinations of atoms involved in the bond,
|
depend on the particular combinations of atoms involved in the bond,
|
||||||
angle, or torsion terms. DREIDING has an :doc:`explicit hydrogen bond
|
angle, or torsion terms. DREIDING has an :doc:`explicit hydrogen bond
|
||||||
term <pair_hbond_dreiding>` to describe interactions involving a
|
term <pair_hbond_dreiding>` to describe interactions involving a
|
||||||
hydrogen atom on very electronegative atoms (N, O, F). Unlike CHARMM
|
hydrogen atom on very electronegative atoms (N, O, F). Unlike CHARMM or
|
||||||
or AMBER, the DREIDING force field has not been parameterized for
|
AMBER, the DREIDING force field has not been parameterized for
|
||||||
considering solvents (like water).
|
considering solvents (like water) and has no rules for assigning
|
||||||
|
(partial) charges. That will seriously limit its accuracy when used for
|
||||||
|
simulating systems where those matter.
|
||||||
|
|
||||||
See :ref:`(Mayo) <howto-Mayo>` for a description of the DREIDING force field
|
See :ref:`(Mayo) <howto-Mayo>` for a description of the DREIDING force field
|
||||||
|
|
||||||
@ -272,10 +268,6 @@ compatible with a subset of OPLS interactions.
|
|||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
.. _Typelabel2:
|
|
||||||
|
|
||||||
**(Gissinger)** J. R. Gissinger, I. Nikiforov, Y. Afshar, B. Waters, M. Choi, D. S. Karls, A. Stukowski, W. Im, H. Heinz, A. Kohlmeyer, and E. B. Tadmor, J Phys Chem B, 128, 3282-3297 (2024).
|
|
||||||
|
|
||||||
.. _howto-MacKerell:
|
.. _howto-MacKerell:
|
||||||
|
|
||||||
**(MacKerell)** MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field, Fischer, Gao, Guo, Ha, et al (1998). J Phys Chem, 102, 3586 . https://doi.org/10.1021/jp973084f
|
**(MacKerell)** MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field, Fischer, Gao, Guo, Ha, et al (1998). J Phys Chem, 102, 3586 . https://doi.org/10.1021/jp973084f
|
||||||
|
|||||||
@ -42,12 +42,14 @@ such as those created by pouring grains using :doc:`fix pour
|
|||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
Currently, there are two types of bonds included in the BPM package. The
|
Currently, there are three types of bonds included in the BPM package. The
|
||||||
first bond style, :doc:`bond bpm/spring <bond_bpm_spring>`, only applies
|
first bond style, :doc:`bond bpm/spring <bond_bpm_spring>`, only applies
|
||||||
pairwise, central body forces. Point particles must have :doc:`bond atom
|
pairwise, central body forces. Point particles must have :doc:`bond atom
|
||||||
style <atom_style>` and may be thought of as nodes in a spring
|
style <atom_style>` and may be thought of as nodes in a spring
|
||||||
network. An optional multibody term can be used to adjust the network's
|
network. An optional multibody term can be used to adjust the network's
|
||||||
Poisson's ratio. Alternatively, the second bond style, :doc:`bond bpm/rotational
|
Poisson's ratio. The :doc:`bpm/spring/plastic <bond_bpm_spring_plastic>`
|
||||||
|
bond style is similar except it adds a plastic yield strain.
|
||||||
|
Alternatively, the third bond style, :doc:`bond bpm/rotational
|
||||||
<bond_bpm_rotational>`, resolves tangential forces and torques arising
|
<bond_bpm_rotational>`, resolves tangential forces and torques arising
|
||||||
with the shearing, bending, and twisting of the bond due to rotation or
|
with the shearing, bending, and twisting of the bond due to rotation or
|
||||||
displacement of particles. Particles are similar to those used in the
|
displacement of particles. Particles are similar to those used in the
|
||||||
|
|||||||
160
doc/src/Howto_bulk2slab.rst
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
===========================
|
||||||
|
Convert bulk system to slab
|
||||||
|
===========================
|
||||||
|
|
||||||
|
A regularly encountered simulation problem is how to convert a bulk
|
||||||
|
system that has been run for a while to equilibrate into a slab system
|
||||||
|
with some vacuum space and free surfaces. The challenge here is that
|
||||||
|
one cannot just change the box dimensions with the :doc:`change_box
|
||||||
|
command <change_box>` or edit the box boundaries in a data file because
|
||||||
|
some atoms will have non-zero image flags from diffusing around.
|
||||||
|
|
||||||
|
Changing the box dimensions results in an undesired displacement of
|
||||||
|
those atoms, since the image flags indicate how many times the box
|
||||||
|
length in x-, y-, or z-direction needs to be added or subtracted to get
|
||||||
|
the "unwrapped" coordinates. By changing the box dimension this
|
||||||
|
distance is changed and thus those atoms move unphysically relative to
|
||||||
|
their neighbors with zero image flags. Setting image flags forcibly to
|
||||||
|
zero creates problems because that could break apart molecules by having
|
||||||
|
one atom of a bond on the top of the system and the other at the bottom.
|
||||||
|
|
||||||
|
.. _bulk2slab:
|
||||||
|
.. figure:: JPG/rhodo-both.jpg
|
||||||
|
:figwidth: 80%
|
||||||
|
:figclass: align-center
|
||||||
|
|
||||||
|
Snapshots of the bulk Rhodopsin in lipid layer and water system (right)
|
||||||
|
and the generated slab geometry (left)
|
||||||
|
|
||||||
|
.. admonition:: Disclaimer
|
||||||
|
:class: note
|
||||||
|
|
||||||
|
The following workflow will work for many bulk systems, but not all.
|
||||||
|
Some systems cannot be converted (e.g. polymers with bonds to the
|
||||||
|
same molecule across periodic boundaries, sometimes called "infinite
|
||||||
|
polymers"). The amount of vacuum that needs to be added depends on
|
||||||
|
the length of the molecules where the system is split (the example
|
||||||
|
here splits where there is water with short molecules). In some
|
||||||
|
cases, the system may need to be re-centered in the box first using
|
||||||
|
the :doc:`displace_atoms command <displace_atoms>`. Also, the time
|
||||||
|
spent on strong thermalization and equilibration will depend on the
|
||||||
|
specific system and its thermodynamic conditions.
|
||||||
|
|
||||||
|
Below is a suggested workflow using the :doc:`Rhodopsin benchmark input
|
||||||
|
<Speed_bench>` for demonstration. The figure shows the state *before*
|
||||||
|
the procedure on the left (with unwrapped atoms that have diffused out
|
||||||
|
of the box) and *after* on the right (with the vacuum added above and
|
||||||
|
below). The procedure is implemented by modifying a copy of the
|
||||||
|
``in.rhodo`` input file. The first lines up to and including the
|
||||||
|
:doc:`read_data command <read_data>` remain unchanged. Then we insert
|
||||||
|
the following lines to add vacuum to the z direction above and below the
|
||||||
|
system:
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
variable delta index 10.0
|
||||||
|
reset_atoms image all
|
||||||
|
write_dump all custom rhodo-unwrap.lammpstrj id xu yu zu
|
||||||
|
change_box all z final $(zlo-2.0*v_delta) $(zhi+2.0*v_delta) &
|
||||||
|
boundary p p f
|
||||||
|
read_dump rhodo-unwrap.lammpstrj 0 x y z box no replace yes
|
||||||
|
kspace_modify slab 3.0
|
||||||
|
|
||||||
|
Specifically, the :doc:`variable delta <variable>` (set to 10.0)
|
||||||
|
represents a distance that determines the amount of vacuum added: we add
|
||||||
|
twice its value in each direction to the z-dimension; thus in total
|
||||||
|
:math:`40 \AA` get added. The :doc:`reset_atoms image all
|
||||||
|
<reset_atoms>` command shall reset any image flags to become either 0 or
|
||||||
|
:math:`\pm 1` and thus have the minimum distance from the center of the
|
||||||
|
simulation box, but the correct relative distance for bonded atoms.
|
||||||
|
|
||||||
|
The :doc:`write_dump command <write_dump>` then writes out the resulting
|
||||||
|
*unwrapped* coordinates of the system. After expanding the box,
|
||||||
|
coordinates that were outside the box should now be inside and the
|
||||||
|
unwrapped coordinates will become "wrapped", while atoms outside the
|
||||||
|
periodic boundaries will be wrapped back into the box and their image
|
||||||
|
flags in those directions restored.
|
||||||
|
|
||||||
|
The :doc:`change_box command <change_box>` adds the desired
|
||||||
|
distance to the low and high box boundary in z-direction and then changes
|
||||||
|
the :doc:`boundary to "p p f" <boundary>` which will force the image
|
||||||
|
flags in z-direction to zero and create an undesired displacement for
|
||||||
|
the atoms with non-zero image flags.
|
||||||
|
|
||||||
|
With the :doc:`read_dump command <read_dump>` we read back and replace
|
||||||
|
partially incorrect coordinates with the previously saved, unwrapped
|
||||||
|
coordinates. It is important to ignore the box dimensions stored in the
|
||||||
|
dump file. We want to preserve the expanded box. Finally, we turn on
|
||||||
|
the slab correction for the PPPM long-range solver with the
|
||||||
|
:doc:`kspace_modify command <kspace_modify>` as required when using a
|
||||||
|
long range Coulomb solver for non-periodic z-dimension.
|
||||||
|
|
||||||
|
Next we replace the :doc:`fix npt command <fix_nh>` with:
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
fix 2 nvt temp 300.0 300.0 10.0
|
||||||
|
|
||||||
|
We now have an open system and thus the adjustment of the cell in
|
||||||
|
z-direction is no longer required. Since splitting the bulk water
|
||||||
|
region where the vacuum is inserted, creates surface atoms with high
|
||||||
|
potential energy, we reduce the thermostat time constant from 100.0 to
|
||||||
|
10.0 to remove excess kinetic energy resulting from that change faster.
|
||||||
|
|
||||||
|
Also the high potential energy of the surface atoms can cause that some
|
||||||
|
of them are ejected from the slab. In order to suppress that, we add
|
||||||
|
soft harmonic walls to push back any atoms that want to leave the slab.
|
||||||
|
To determine the position of the wall, we first need to to determine the
|
||||||
|
extent of the atoms in z-direction and then place the harmonic walls
|
||||||
|
based on that information:
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
compute zmin all reduce min z
|
||||||
|
compute zmax all reduce max z
|
||||||
|
thermo_style custom zlo c_zmin zhi c_zmax
|
||||||
|
run 0 post no
|
||||||
|
fix 3 all wall/harmonic zhi $(c_zmax+v_delta) 10.0 0.0 ${delta} &
|
||||||
|
zlo $(c_zmin-v_delta) 10.0 0.0 ${delta}
|
||||||
|
|
||||||
|
The two :doc:`compute reduce <compute_reduce>` command determine the
|
||||||
|
minimum and maximum z-coordinate across all atoms. In order to trigger
|
||||||
|
the execution of the compute commands we need to "consume" them. This
|
||||||
|
is done with the :doc:`thermo_style custom <thermo_style>` command
|
||||||
|
followed by the :doc:`run 0 <run>` command. This avoids and error
|
||||||
|
accessing the min/max values determined by the compute commands to
|
||||||
|
compute the location of the wall in lower and upper direction. This
|
||||||
|
uses the previously defined *delta* variable to determine the distance
|
||||||
|
of the wall from the extent of the system and the cutoff for the wall
|
||||||
|
interaction. This way only atoms that move beyond the min/max values in
|
||||||
|
z-direction will experience a restoring force, nudging them back to the
|
||||||
|
slab. The force constant of :math:`10.0 \frac{\mathrm{kcal/mol}}{\AA}`
|
||||||
|
was determined empirically.
|
||||||
|
|
||||||
|
Adding these "restoring" soft walls assist in making the free surfaces
|
||||||
|
above and below the slab flat, instead of having rugged or ondulated
|
||||||
|
surfaces. The impact of the walls can be changed by adjusting the force
|
||||||
|
constant, cutoff, and position of the wall.
|
||||||
|
|
||||||
|
Finally, we replace the :doc:`run 100 <run>` of the original input with:
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
run 1000 post no
|
||||||
|
|
||||||
|
unfix 3
|
||||||
|
fix 2 all nvt temp 300.0 300.0 100.0
|
||||||
|
run 1000 post no
|
||||||
|
|
||||||
|
write_data data.rhodo-slab
|
||||||
|
|
||||||
|
This runs the system converted to a slab first for 1000 MD steps using
|
||||||
|
the walls and stronger Nose-Hoover thermostat. Then the walls are
|
||||||
|
removed with :doc:`unfix 3 <unfix>` and the thermostat time constant
|
||||||
|
reset to 100.0 and the system run for another 1000 steps. Finally the
|
||||||
|
resulting slab geometry is written to a new data file
|
||||||
|
``data.rhodo-slab`` with a :doc:`write_data command <write_data>`. The
|
||||||
|
number of MD steps required to reach a proper equilibrium state is very
|
||||||
|
likely larger. The number of 1000 steps (corresponding to 2
|
||||||
|
picoseconds) was chosen for demonstration purposes, so that the
|
||||||
|
procedure can be easily and quickly tested.
|
||||||
@ -285,7 +285,7 @@ when used before the CMake directory, there may be a space between the
|
|||||||
can have boolean values (on/off, yes/no, or 1/0 are all valid) or are
|
can have boolean values (on/off, yes/no, or 1/0 are all valid) or are
|
||||||
strings representing a choice, or a path, or are free format. If the
|
strings representing a choice, or a path, or are free format. If the
|
||||||
string would contain whitespace, it must be put in quotes, for example
|
string would contain whitespace, it must be put in quotes, for example
|
||||||
``-D CMAKE_TUNE_FLAGS="-ftree-vectorize -ffast-math"``.
|
``-D CMAKE_CXX_FLAGS="-O3 -Wall -ftree-vectorize -ffast-math"``.
|
||||||
|
|
||||||
CMake variables fall into two categories: 1) common CMake variables that
|
CMake variables fall into two categories: 1) common CMake variables that
|
||||||
are used by default for any CMake configuration setup and 2) project
|
are used by default for any CMake configuration setup and 2) project
|
||||||
@ -341,8 +341,6 @@ Some common LAMMPS specific variables
|
|||||||
- compile some additional executables from the ``tools`` folder (default: ``off``)
|
- compile some additional executables from the ``tools`` folder (default: ``off``)
|
||||||
* - ``BUILD_DOC``
|
* - ``BUILD_DOC``
|
||||||
- include building the HTML format documentation for packaging/installing (default: ``off``)
|
- include building the HTML format documentation for packaging/installing (default: ``off``)
|
||||||
* - ``CMAKE_TUNE_FLAGS``
|
|
||||||
- common compiler flags, for optimization or instrumentation (default:)
|
|
||||||
* - ``LAMMPS_MACHINE``
|
* - ``LAMMPS_MACHINE``
|
||||||
- when set to ``name`` the LAMMPS executable and library will be called ``lmp_name`` and ``liblammps_name.a``
|
- when set to ``name`` the LAMMPS executable and library will be called ``lmp_name`` and ``liblammps_name.a``
|
||||||
* - ``FFT``
|
* - ``FFT``
|
||||||
|
|||||||
@ -487,10 +487,10 @@ updates are back-ported from the *develop* branch to the *maintenance*
|
|||||||
branch and occasionally merged to *stable* as an update release.
|
branch and occasionally merged to *stable* as an update release.
|
||||||
|
|
||||||
Furthermore, the naming of the release tags now follow the pattern
|
Furthermore, the naming of the release tags now follow the pattern
|
||||||
"patch_<Day><Month><Year>" to simplify comparisons between releases.
|
"patch\_<Day><Month><Year>" to simplify comparisons between releases.
|
||||||
For stable releases additional "stable_<Day><Month><Year>" tags are
|
For stable releases additional "stable\_<Day><Month><Year>" tags are
|
||||||
applied and update releases are tagged with
|
applied and update releases are tagged with
|
||||||
"stable_<Day><Month><Year>_update<Number>", Finally, all releases and
|
"stable\_<Day><Month><Year>\_update<Number>", Finally, all releases and
|
||||||
submissions are subject to automatic testing and code checks to make
|
submissions are subject to automatic testing and code checks to make
|
||||||
sure they compile with a variety of compilers and popular operating
|
sure they compile with a variety of compilers and popular operating
|
||||||
systems. Some unit and regression testing is applied as well.
|
systems. Some unit and regression testing is applied as well.
|
||||||
@ -498,3 +498,7 @@ systems. Some unit and regression testing is applied as well.
|
|||||||
A detailed discussion of the LAMMPS developer GitHub workflow can be
|
A detailed discussion of the LAMMPS developer GitHub workflow can be
|
||||||
found in the file `doc/github-development-workflow.md
|
found in the file `doc/github-development-workflow.md
|
||||||
<https://github.com/lammps/lammps/blob/develop/doc/github-development-workflow.md>`_
|
<https://github.com/lammps/lammps/blob/develop/doc/github-development-workflow.md>`_
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|||||||
@ -1,47 +1,45 @@
|
|||||||
Using LAMMPS-GUI
|
Using LAMMPS-GUI
|
||||||
================
|
================
|
||||||
|
|
||||||
This document describes **LAMMPS-GUI version 1.6**.
|
.. 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 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*,
|
||||||
|
display visualizations created with the :doc:`dump image command
|
||||||
|
<dump_image>`, can launch the online LAMMPS documentation for known
|
||||||
|
LAMMPS commands and styles, and directly integrates with a collection
|
||||||
|
of LAMMPS tutorials (:ref:`Gravelle1 <Gravelle1>`).
|
||||||
|
|
||||||
|
This document describes **LAMMPS-GUI version 1.7**.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
LAMMPS-GUI is a graphical text editor customized for editing LAMMPS
|
.. contents::
|
||||||
input files that 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. It can retrieve and display information from LAMMPS
|
|
||||||
while it is running, display visualizations created with the :doc:`dump
|
|
||||||
image command <dump_image>`, and is adapted specifically for editing
|
|
||||||
LAMMPS input files through text completion and reformatting, and linking
|
|
||||||
to the online LAMMPS documentation for known LAMMPS commands and styles.
|
|
||||||
|
|
||||||
.. note::
|
----
|
||||||
|
|
||||||
Pre-compiled, ready-to-use LAMMPS-GUI executables for Linux x86\_64
|
LAMMPS-GUI aims to provide the traditional experience of running LAMMPS
|
||||||
(Ubuntu 20.04LTS or later and compatible), macOS (version 11 aka Big
|
using a text editor, a command-line window, and launching the LAMMPS
|
||||||
Sur or later), and Windows (version 10 or later) :ref:`are available
|
text-mode executable printing output to the screen, but just integrated
|
||||||
<lammps_gui_install>` for download. Non-MPI LAMMPS executables (as
|
into a single application:
|
||||||
``lmp``) for running LAMMPS from the command-line and :doc:`some
|
|
||||||
LAMMPS tools <Tools>` compiled executables are also included.
|
|
||||||
Also, the pre-compiled LAMMPS-GUI packages include the WHAM executables
|
|
||||||
from http://membrane.urmc.rochester.edu/content/wham/ for use with
|
|
||||||
LAMMPS tutorials.
|
|
||||||
|
|
||||||
The source code for LAMMPS-GUI is included in the LAMMPS source code
|
- Write and edit LAMMPS input files using the built-in text editor.
|
||||||
distribution and can be found in the ``tools/lammps-gui`` folder. It
|
- Run LAMMPS on those input file with command-line flags to enable a
|
||||||
can be compiled alongside LAMMPS when :doc:`compiling with CMake
|
specific accelerator package (or none).
|
||||||
<Build_cmake>`.
|
- Extract data from the created files (like trajectory files, log files
|
||||||
|
with thermodynamic data, or images) and visualize it using external
|
||||||
|
software.
|
||||||
|
|
||||||
LAMMPS-GUI tries to provide an experience similar to what people
|
That traditional procedure is effective for people proficient in using the
|
||||||
traditionally would have running LAMMPS using a command-line window and
|
command-line, as it allows them to use the tools for the individual steps
|
||||||
the console LAMMPS executable but just rolled into a single executable:
|
|
||||||
|
|
||||||
- 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
|
|
||||||
|
|
||||||
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 they are most comfortable with. In fact, it is often *required* to
|
that they are most comfortable with. In fact, it is often *required* to
|
||||||
adopt this workflow when running LAMMPS simulations on high-performance
|
adopt this workflow when running LAMMPS simulations on high-performance
|
||||||
computing facilities.
|
computing facilities.
|
||||||
@ -52,37 +50,69 @@ window or using external programs, let alone writing scripts to extract
|
|||||||
data from the generated output. It also integrates well with graphical
|
data from the generated output. It also integrates well with graphical
|
||||||
desktop environments where the `.lmp` filename extension can be
|
desktop environments where the `.lmp` filename extension can be
|
||||||
registered with LAMMPS-GUI as the executable to launch when double
|
registered with LAMMPS-GUI as the executable to launch when double
|
||||||
clicking on such files. Also, LAMMPS-GUI has support for drag-n-drop,
|
clicking on such files using a file manager. LAMMPS-GUI also has
|
||||||
i.e. an input file can be selected and then moved and dropped on the
|
support for 'drag and drop' for opening inputs: an input file can
|
||||||
LAMMPS-GUI executable, and LAMMPS-GUI will launch and read the file into
|
be selected and then moved and dropped on the LAMMPS-GUI executable;
|
||||||
its buffer. In many cases LAMMPS-GUI will be integrated into the
|
LAMMPS-GUI will launch and read the file into its buffer. Input files
|
||||||
graphical desktop environment and can be launched like other
|
also can be dropped into the editor window of the running LAMMPS-GUI
|
||||||
applications.
|
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
|
LAMMPS-GUI thus makes it easier for beginners to get started running
|
||||||
simple LAMMPS simulations. It is very suitable for tutorials on LAMMPS
|
LAMMPS and is well-suited for LAMMPS tutorials, since you only need to
|
||||||
since you only need to learn how to use a single program for most tasks
|
work with a single, ready-to-use program for most of the tasks. Plus it
|
||||||
and thus time can be saved and people can focus on learning LAMMPS.
|
is available for download as pre-compiled package for popular operating
|
||||||
The tutorials at https://lammpstutorials.github.io/ are specifically
|
systems (Linux, macOS, Windows). This saves time and allows users to
|
||||||
updated for use with LAMMPS-GUI and can their tutorial materials can
|
focus on learning LAMMPS itself, without the need to learn how to
|
||||||
be downloaded and loaded directly from the GUI.
|
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 tutorials at https://lammpstutorials.github.io/ are specifically
|
||||||
the functionality of LAMMPS-GUI with external tools. That said, LAMMPS-GUI
|
updated for use with LAMMPS-GUI and their tutorial materials can be
|
||||||
has some unique functionality that is not found elsewhere:
|
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-adapting to features available in the integrated LAMMPS library
|
||||||
- auto-completion for LAMMPS commands and options
|
- auto-completion for available LAMMPS commands and options only
|
||||||
- context-sensitive online help
|
- context-sensitive online help for known LAMMPS commands
|
||||||
- start and stop of simulations via mouse or keyboard
|
- start and stop of simulations via mouse or keyboard
|
||||||
- monitoring of simulation progress
|
- monitoring of simulation progress and CPU use
|
||||||
- interactive visualization using the :doc:`dump image <dump_image>`
|
- interactive visualization using the LAMMPS :doc:`dump image feature <dump_image>`
|
||||||
command with the option to copy-paste the resulting settings
|
command with the option to copy-paste the resulting settings
|
||||||
- automatic slide show generation from dump image out at runtime
|
- automatic slide show generation from dump image output at runtime
|
||||||
- automatic plotting of thermodynamics data at runtime
|
- automatic plotting of thermodynamic data at runtime
|
||||||
- inspection of binary restart files
|
- inspection of binary restart files
|
||||||
|
- integration will a set of LAMMPS tutorials
|
||||||
|
|
||||||
The following text provides a detailed tour of the features and
|
.. admonition:: Download LAMMPS-GUI for your platform
|
||||||
|
:class: Hint
|
||||||
|
|
||||||
|
Pre-compiled, ready-to-use LAMMPS-GUI executables for Linux x86\_64
|
||||||
|
(Ubuntu 20.04LTS or later and compatible), macOS (version 11 aka Big
|
||||||
|
Sur or later), and Windows (version 10 or later) :ref:`are available
|
||||||
|
<lammps_gui_install>` for download. Non-MPI LAMMPS executables (as
|
||||||
|
``lmp``) for running LAMMPS from the command-line and :doc:`some
|
||||||
|
LAMMPS tools <Tools>` compiled executables are also included. Also,
|
||||||
|
the pre-compiled LAMMPS-GUI packages include the WHAM executables
|
||||||
|
from http://membrane.urmc.rochester.edu/content/wham/ for use with
|
||||||
|
LAMMPS tutorials documented in this paper (:ref:`Gravelle1
|
||||||
|
<Gravelle1>`).
|
||||||
|
|
||||||
|
The source code for LAMMPS-GUI is included in the LAMMPS source code
|
||||||
|
distribution and can be found in the ``tools/lammps-gui`` folder. It
|
||||||
|
can be compiled alongside LAMMPS when :doc:`compiling with CMake
|
||||||
|
<Build_cmake>`.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
The following text provides a documentation of the features and
|
||||||
functionality of LAMMPS-GUI. Suggestions for new features and
|
functionality of LAMMPS-GUI. Suggestions for new features and
|
||||||
reports of bugs are always welcome. You can use the :doc:`the same
|
reports of bugs are always welcome. You can use the :doc:`the same
|
||||||
channels as for LAMMPS itself <Errors_bugs>` for that purpose.
|
channels as for LAMMPS itself <Errors_bugs>` for that purpose.
|
||||||
@ -92,9 +122,12 @@ channels as for LAMMPS itself <Errors_bugs>` for that purpose.
|
|||||||
Installing Pre-compiled LAMMPS-GUI Packages
|
Installing Pre-compiled LAMMPS-GUI Packages
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
|
|
||||||
LAMMPS-GUI is available as pre-compiled binary packages for Linux
|
LAMMPS-GUI is available for download as pre-compiled binary packages for
|
||||||
x86\_64, macOS 11 and later, and Windows 10 and later. Alternately, it
|
Linux x86\_64 (Ubuntu 20.04LTS or later and compatible), macOS (version
|
||||||
can be compiled from source.
|
11 aka Big Sur or later), and Windows (version 10 or later) from the
|
||||||
|
`LAMMPS release pages on GitHub <https://github.com/lammps/lammps/releases/>`_.
|
||||||
|
A backup download location is at https://download.lammps.org/static/
|
||||||
|
Alternately, LAMMPS-GUI can be compiled from source when building LAMMPS.
|
||||||
|
|
||||||
Windows 10 and later
|
Windows 10 and later
|
||||||
^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
@ -216,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
|
LAMMPS runs in a separate thread, so the GUI stays responsive and is
|
||||||
able to interact with the running calculation and access data it
|
able to interact with the running calculation and access data it
|
||||||
produces. It is important to note that running LAMMPS this way is
|
produces. It is important to note that running LAMMPS this way is using
|
||||||
using the contents of the input buffer for the run (via the
|
the contents of the input buffer for the run (via the
|
||||||
:cpp:func:`lammps_commands_string()` function of the LAMMPS C-library
|
:cpp:func:`lammps_commands_string()` function of the LAMMPS C-library
|
||||||
interface), and **not** the original file it was read from. Thus, if
|
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
|
there are unsaved changes in the buffer, they *will* be used. As an
|
||||||
@ -226,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
|
`Ctrl-Shift-Enter`. This option may be required in some rare cases
|
||||||
where the input uses some functionality that is not compatible with
|
where the input uses some functionality that is not compatible with
|
||||||
running LAMMPS from a string buffer. For consistency, any unsaved
|
running LAMMPS from a string buffer. For consistency, any unsaved
|
||||||
changes in the buffer must be either saved to the file or undone
|
changes in the buffer must be either saved to the file or undone before
|
||||||
before LAMMPS can be run from a file.
|
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
|
.. image:: JPG/lammps-gui-running.png
|
||||||
:align: center
|
:align: center
|
||||||
:scale: 75%
|
:scale: 75%
|
||||||
|
|
||||||
While LAMMPS is running, the contents of the status bar change. On
|
While LAMMPS is running, the contents of the status bar change. The
|
||||||
the left side there is a text indicating that LAMMPS is running, which
|
text fields that normally show "Ready." and the current working
|
||||||
also indicates the number of active threads, when thread-parallel
|
directory, change into an area showing the CPU utilization in percent.
|
||||||
acceleration was selected in the *Preferences* dialog. On the right
|
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
|
side, a progress bar is shown that displays the estimated progress for
|
||||||
the current :doc:`run <run>` or :doc:`minimize <minimize>` command.
|
the current :doc:`run <run>` or :doc:`minimize <minimize>` command.
|
||||||
|
|
||||||
Also, the line number of the currently executed command is highlighted
|
.. admonition:: CPU Utilization
|
||||||
in green.
|
: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
|
If an error occurs (in the example below the command :doc:`label
|
||||||
<label>` was incorrectly capitalized as "Label"), an error message
|
<label>` was incorrectly capitalized as "Label"), an error message
|
||||||
dialog is shown and the line of the input which triggered the error is
|
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."
|
highlighted in red. The state of LAMMPS in the status bar is set to
|
||||||
instead of "Ready."
|
"Failed." instead of "Ready."
|
||||||
|
|
||||||
.. image:: JPG/lammps-gui-run-error.png
|
.. image:: JPG/lammps-gui-run-error.png
|
||||||
:align: center
|
:align: center
|
||||||
@ -294,7 +354,10 @@ of the *Output* window showing how many warnings and errors were
|
|||||||
detected and how many lines the entire output has. By clicking on the
|
detected and how many lines the entire output has. By clicking on the
|
||||||
button on the right with the warning symbol or by using the keyboard
|
button on the right with the warning symbol or by using the keyboard
|
||||||
shortcut `Ctrl-N` (`Command-N` on macOS), you can jump to the next
|
shortcut `Ctrl-N` (`Command-N` on macOS), you can jump to the next
|
||||||
line with a warning or error.
|
line with a warning or error. If there is a URL pointing to additional
|
||||||
|
explanations in the online manual, that URL will be highlighted and
|
||||||
|
double-clicking on it shall open the corresponding manual page in
|
||||||
|
the web browser. The option is also available from the context menu.
|
||||||
|
|
||||||
By default, the *Output* window is replaced each time a run is started.
|
By default, the *Output* window is replaced each time a run is started.
|
||||||
The runs are counted and the run number for the current run is displayed
|
The runs are counted and the run number for the current run is displayed
|
||||||
@ -334,27 +397,28 @@ plot of thermodynamic output of the LAMMPS calculation as shown below.
|
|||||||
:align: center
|
:align: center
|
||||||
:scale: 33%
|
:scale: 33%
|
||||||
|
|
||||||
The drop down menu on the top right allows selection of different
|
The "Data:" drop down menu on the top right allows selection of
|
||||||
properties that are computed and written to thermo output. Only one
|
different properties that are computed and written as thermodynamic
|
||||||
property can be shown at a time. The plots are updated regularly with
|
output to the output window. Only one property can be shown at a time.
|
||||||
new data as the run progresses, so they can be used to visually monitor
|
The plots are updated regularly with new data as the run progresses, so
|
||||||
the evolution of available properties. The update interval can be set
|
they can be used to visually monitor the evolution of available
|
||||||
in the *Preferences* dialog. By default, the raw data for the selected
|
properties. The update interval can be set in the *Preferences* dialog.
|
||||||
property is plotted as a blue graph. As soon as there are a sufficient
|
By default, the raw data for the selected property is plotted as a blue
|
||||||
number of data points, there will be a second graph shown in red with a
|
graph. From the "Plot:" drop menu on the second row and on the left,
|
||||||
smoothed version of the data. From the drop down menu on the top left,
|
you can select whether to plot only raw data graph, only a smoothed data
|
||||||
you can select whether to plot only the raw data, only the smoothed
|
graph, or both graphs on top of each other. The smoothing process uses
|
||||||
data or both. The smoothing uses a `Savitzky-Golay convolution filter
|
a `Savitzky-Golay convolution filter
|
||||||
<https://en.wikipedia.org/wiki/Savitzky%E2%80%93Golay_filter>`_ The
|
<https://en.wikipedia.org/wiki/Savitzky%E2%80%93Golay_filter>`_. The
|
||||||
window width (left) and order (right) parameters can be set in the boxes
|
convolution window width (left) and order (right) parameters can be set
|
||||||
next to the drop down menu. Default settings are 10 and 4 which means
|
in the boxes next to the drop down menu. Default settings are 10 and 4
|
||||||
that the smoothing window includes 10 points each to the left and the
|
which means that the smoothing window includes 10 points each to the
|
||||||
right of the current data point and a fourth order polynomial is fit to
|
left and the right of the current data point for a total of 21 points
|
||||||
the data in the window.
|
and a fourth order polynomial is fitted to the data in the window.
|
||||||
|
|
||||||
You can use the mouse to zoom into the graph (hold the left button and
|
The "Title:" and "Y:" input boxes allow to edit the text shown as the
|
||||||
drag to mark an area) or zoom out (right click) and you can reset the
|
plot title and the y-axis label, respectively. The text entered in the
|
||||||
view with a click to the "lens" button next to the data drop down menu.
|
"Title:" box is applied to *all* charts, while the "Y:" text changes
|
||||||
|
only the y-axis label of the currently *selected* plot.
|
||||||
|
|
||||||
The window title shows the current run number that this chart window
|
The window title shows the current run number that this chart window
|
||||||
corresponds to. Same as for the *Output* window, the chart window is
|
corresponds to. Same as for the *Output* window, the chart window is
|
||||||
@ -382,6 +446,40 @@ here you get the compounded data set starting with the last change of
|
|||||||
output fields or timestep setting, while the export from the log will
|
output fields or timestep setting, while the export from the log will
|
||||||
contain *all* YAML output but *segmented* into individual runs.
|
contain *all* YAML output but *segmented* into individual runs.
|
||||||
|
|
||||||
|
The *Preferences* dialog has a *Charts* tab, where you can configure
|
||||||
|
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
|
Image Slide Show
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
@ -461,11 +559,11 @@ correspond to (via their mass) and then colorize them in the image and
|
|||||||
set their atom diameters accordingly. If this is not possible, for
|
set their atom diameters accordingly. If this is not possible, for
|
||||||
instance when using reduced (= 'lj') :doc:`units <units>`, then
|
instance when using reduced (= 'lj') :doc:`units <units>`, then
|
||||||
LAMMPS-GUI will check the current pair style and if it is a
|
LAMMPS-GUI will check the current pair style and if it is a
|
||||||
Lennard-Jones type potential, it will extract the *sigma* parameter
|
Lennard-Jones type potential, it will extract the *sigma* parameter for
|
||||||
for each atom type and assign atom diameters from those numbers.
|
each atom type and assign atom diameters from those numbers. For cases
|
||||||
For cases where atom diameters are not auto-detected, the *Atom size* field
|
where atom diameters are not auto-detected, the *Atom size* field can be
|
||||||
can be edited and a suitable value set manually. The default value
|
edited and a suitable value set manually. The default value is inferred
|
||||||
is inferred from the x-direction lattice spacing.
|
from the x-direction lattice spacing.
|
||||||
|
|
||||||
If elements cannot be detected the default sequence of colors of the
|
If elements cannot be detected the default sequence of colors of the
|
||||||
:doc:`dump image <dump_image>` command is assigned to the different atom
|
:doc:`dump image <dump_image>` command is assigned to the different atom
|
||||||
@ -480,22 +578,31 @@ types.
|
|||||||
|gui-image1| |gui-image2|
|
|gui-image1| |gui-image2|
|
||||||
|
|
||||||
The default image size, some default image quality settings, the view
|
The default image size, some default image quality settings, the view
|
||||||
style and some colors can be changed in the *Preferences* dialog
|
style and some colors can be changed in the *Preferences* dialog window.
|
||||||
window. From the image viewer window further adjustments can be made:
|
From the image viewer window further adjustments can be made: actual
|
||||||
actual image size, high-quality (SSAO) rendering, anti-aliasing, view
|
image size, high-quality (SSAO) rendering, anti-aliasing, view style,
|
||||||
style, display of box or axes, zoom factor. The view of the system can
|
display of box or axes, zoom factor. The view of the system can be
|
||||||
be rotated horizontally and vertically. It is also possible to only
|
rotated horizontally and vertically.
|
||||||
display the atoms within a group defined in the input script (default is
|
|
||||||
"all"). The image can also be re-centered on the center of mass of the
|
It is also possible to display only the atoms within a :doc:`group
|
||||||
selected group. After each change, the image is rendered again and the
|
defined in the input script <group>` (default is "all"). The available
|
||||||
display updated. The small palette icon on the top left is colored
|
groups can be selected from the drop down list next to the "Group:"
|
||||||
while LAMMPS is running to render the new image; it is grayed out when
|
label. Similarly, if there are :doc:`molecules defined in the input
|
||||||
LAMMPS is finished. When there are many atoms to render and high
|
<molecule>`, it is possible to select one of them (default is "none")
|
||||||
quality images with anti-aliasing are requested, re-rendering may take
|
and visualize it (it will be shown at the center of the simulation box).
|
||||||
several seconds. From the *File* menu of the image window, the
|
While a molecule is selected, the group selection is disabled. It can
|
||||||
current image can be saved to a file (keyboard shortcut `Ctrl-S`) or
|
be restored by selecting the molecule "none".
|
||||||
copied to the clipboard (keyboard shortcut `Ctrl-C`) for pasting the
|
|
||||||
image into another application.
|
The image can also be re-centered on the center of mass of the selected
|
||||||
|
group. After each change, the image is rendered again and the display
|
||||||
|
updated. The small palette icon on the top left is colored while LAMMPS
|
||||||
|
is running to render the new image; it is grayed out when LAMMPS is
|
||||||
|
finished. When there are many atoms to render and high quality images
|
||||||
|
with anti-aliasing are requested, re-rendering may take several seconds.
|
||||||
|
From the *File* menu of the image window, the current image can be saved
|
||||||
|
to a file (keyboard shortcut `Ctrl-S`) or copied to the clipboard
|
||||||
|
(keyboard shortcut `Ctrl-C`) for pasting the image into another
|
||||||
|
application.
|
||||||
|
|
||||||
From the *File* menu it is also possible to copy the current
|
From the *File* menu it is also possible to copy the current
|
||||||
:doc:`dump image <dump_image>` and :doc:`dump_modify <dump_image>`
|
:doc:`dump image <dump_image>` and :doc:`dump_modify <dump_image>`
|
||||||
@ -604,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
|
window is a :ref:`Snapshot Image Viewer <snapshot_viewer>` containing a
|
||||||
visualization of the system in the restart.
|
visualization of the system in the restart.
|
||||||
|
|
||||||
If the restart file is larger than 250 MBytes, a dialog will ask
|
.. |inspect1| image:: JPG/lammps-gui-inspect-data.png
|
||||||
for confirmation before continuing, since large restart files
|
:width: 32%
|
||||||
may require large amounts of RAM since the entire system must
|
|
||||||
be read into RAM. Thus restart file for large simulations that
|
.. |inspect2| image:: JPG/lammps-gui-inspect-info.png
|
||||||
have been run on an HPC cluster may overload a laptop or local
|
:width: 32%
|
||||||
workstation. The *Show Details...* button will display a rough
|
|
||||||
estimate of the additional memory required.
|
.. |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
|
Menu
|
||||||
----
|
----
|
||||||
@ -682,6 +803,12 @@ timestep. The *Stop LAMMPS* entry will do this by calling the
|
|||||||
:cpp:func:`lammps_force_timeout` library function, which is equivalent
|
:cpp:func:`lammps_force_timeout` library function, which is equivalent
|
||||||
to a :doc:`timer timeout 0 <timer>` command.
|
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
|
The *Set Variables...* entry opens a dialog box where
|
||||||
:doc:`index style variables <variable>` can be set. Those variables
|
:doc:`index style variables <variable>` can be set. Those variables
|
||||||
are passed to the LAMMPS instance when it is created and are thus
|
are passed to the LAMMPS instance when it is created and are thus
|
||||||
@ -720,6 +847,26 @@ output, charts, slide show, variables, or snapshot images. The
|
|||||||
default settings for their visibility can be changed in the
|
default settings for their visibility can be changed in the
|
||||||
*Preferences* dialog.
|
*Preferences* dialog.
|
||||||
|
|
||||||
|
Tutorials
|
||||||
|
^^^^^^^^^
|
||||||
|
|
||||||
|
The *Tutorials* menu is to support the set of LAMMPS tutorials for
|
||||||
|
beginners and intermediate LAMMPS users documented in (:ref:`Gravelle1
|
||||||
|
<Gravelle1>`). From the drop down menu you can select which of the
|
||||||
|
eight currently available tutorial sessions you want to begin. This
|
||||||
|
opens a 'wizard' dialog where you can choose in which folder you want to
|
||||||
|
work, whether you want that folder to be wiped from *any* files, whether
|
||||||
|
you want to download the solutions files (which can be large) to a
|
||||||
|
``solution`` sub-folder, and whether you want the corresponding
|
||||||
|
tutorial's online version opened in your web browser. The dialog will
|
||||||
|
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
|
About
|
||||||
^^^^^
|
^^^^^
|
||||||
|
|
||||||
@ -783,18 +930,21 @@ look of LAMMPS-GUI. The settings are grouped and each group is
|
|||||||
displayed within a tab.
|
displayed within a tab.
|
||||||
|
|
||||||
.. |guiprefs1| image:: JPG/lammps-gui-prefs-general.png
|
.. |guiprefs1| image:: JPG/lammps-gui-prefs-general.png
|
||||||
:width: 24%
|
:width: 19%
|
||||||
|
|
||||||
.. |guiprefs2| image:: JPG/lammps-gui-prefs-accel.png
|
.. |guiprefs2| image:: JPG/lammps-gui-prefs-accel.png
|
||||||
:width: 24%
|
:width: 19%
|
||||||
|
|
||||||
.. |guiprefs3| image:: JPG/lammps-gui-prefs-image.png
|
.. |guiprefs3| image:: JPG/lammps-gui-prefs-image.png
|
||||||
:width: 24%
|
:width: 19%
|
||||||
|
|
||||||
.. |guiprefs4| image:: JPG/lammps-gui-prefs-editor.png
|
.. |guiprefs4| image:: JPG/lammps-gui-prefs-editor.png
|
||||||
:width: 24%
|
:width: 19%
|
||||||
|
|
||||||
|guiprefs1| |guiprefs2| |guiprefs3| |guiprefs4|
|
.. |guiprefs5| image:: JPG/lammps-gui-prefs-charts.png
|
||||||
|
:width: 19%
|
||||||
|
|
||||||
|
|guiprefs1| |guiprefs2| |guiprefs3| |guiprefs4| |guiprefs5|
|
||||||
|
|
||||||
General Settings:
|
General Settings:
|
||||||
^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^
|
||||||
@ -823,13 +973,12 @@ General Settings:
|
|||||||
- *Replace image window on new render:* when checked, an existing
|
- *Replace image window on new render:* when checked, an existing
|
||||||
chart window will be replaced when a new snapshot image is requested,
|
chart window will be replaced when a new snapshot image is requested,
|
||||||
otherwise each command will create a new image window.
|
otherwise each command will create a new image window.
|
||||||
- *Path to LAMMPS Shared Library File:* this option is only visible
|
- *Download tutorial solutions enabled* this controls whether the
|
||||||
when LAMMPS-GUI was compiled to load the LAMMPS library at run time
|
"Download solutions" option is enabled by default when setting up
|
||||||
instead of being linked to it directly. With the *Browse..* button
|
a tutorial.
|
||||||
or by changing the text, a different shared library file with a
|
- *Open tutorial webpage enabled* this controls whether the "Open
|
||||||
different compilation of LAMMPS with different settings or from a
|
tutorial webpage in web browser" option is enabled by default when
|
||||||
different version can be loaded. After this setting was changed,
|
setting up a tutorial.
|
||||||
LAMMPS-GUI needs to be re-launched.
|
|
||||||
- *Select Default Font:* Opens a font selection dialog where the type
|
- *Select Default Font:* Opens a font selection dialog where the type
|
||||||
and size for the default font (used for everything but the editor and
|
and size for the default font (used for everything but the editor and
|
||||||
log) of the application can be set.
|
log) of the application can be set.
|
||||||
@ -848,16 +997,36 @@ General Settings:
|
|||||||
the plots in the *Charts* window in milliseconds. The default is to
|
the plots in the *Charts* window in milliseconds. The default is to
|
||||||
redraw the plots every 500 milliseconds. This is just for the drawing,
|
redraw the plots every 500 milliseconds. This is just for the drawing,
|
||||||
data collection is managed with the previous setting.
|
data collection is managed with the previous setting.
|
||||||
|
- *HTTPS proxy setting:* Allows to enter a URL for an HTTPS proxy. This
|
||||||
|
may be needed when the LAMMPS input contains :doc:`geturl commands <geturl>`
|
||||||
|
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:
|
Accelerators:
|
||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
This tab enables selection of an accelerator package for LAMMPS to use
|
This tab enables selection of an accelerator package and modify some of
|
||||||
and is equivalent to using the `-suffix` and `-package` flags on the
|
its settings to use for running LAMMPS and is equivalent to using the
|
||||||
command-line. Only settings supported by the LAMMPS library and local
|
:doc:`-sf <suffix>` and :doc:`-pk <package>` flags :doc:`on the
|
||||||
hardware are available. The `Number of threads` field allows setting
|
command-line <Run_options>`. Only settings supported by the LAMMPS
|
||||||
the maximum number of threads for the accelerator packages that use
|
library and local hardware are available. The `Number of threads` field
|
||||||
threads.
|
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:
|
Snapshot Image:
|
||||||
^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^
|
||||||
@ -884,7 +1053,7 @@ lists to select the background and box colors.
|
|||||||
Editor Settings:
|
Editor Settings:
|
||||||
^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
This tab allows tweaking settings of the editor window. Specifically
|
This tab allows tweaking settings of the editor window. Specifically,
|
||||||
the amount of padding to be added to LAMMPS commands, types or type
|
the amount of padding to be added to LAMMPS commands, types or type
|
||||||
ranges, IDs (e.g. for fixes), and names (e.g. for groups). The value
|
ranges, IDs (e.g. for fixes), and names (e.g. for groups). The value
|
||||||
set is the minimum width for the text element and it can be chosen in
|
set is the minimum width for the text element and it can be chosen in
|
||||||
@ -896,6 +1065,16 @@ the completion pop-up window, and whether auto-save mode is enabled.
|
|||||||
In auto-save mode the editor buffer is saved before a run or before
|
In auto-save mode the editor buffer is saved before a run or before
|
||||||
exiting LAMMPS-GUI.
|
exiting LAMMPS-GUI.
|
||||||
|
|
||||||
|
Charts Settings:
|
||||||
|
----------------
|
||||||
|
|
||||||
|
This tab allows tweaking settings of the *Charts* window. Specifically,
|
||||||
|
one can set the default chart title (if the title contains '%f' it will
|
||||||
|
be replaced with the name of the current input file), one can select
|
||||||
|
whether by default the raw data, the smoothed data or both will be
|
||||||
|
plotted, one can set the colors for the two lines, the default smoothing
|
||||||
|
parameters, and the default size of the chart graph in pixels.
|
||||||
|
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
Keyboard Shortcuts
|
Keyboard Shortcuts
|
||||||
@ -976,10 +1155,25 @@ available (On macOS use the Command key instead of Ctrl/Control).
|
|||||||
- Ctrl+Shift+T
|
- Ctrl+Shift+T
|
||||||
- LAMMPS Tutorial
|
- LAMMPS Tutorial
|
||||||
|
|
||||||
Further editing keybindings `are documented with the Qt documentation
|
Further keybindings of the editor window `are documented with the Qt
|
||||||
|
documentation
|
||||||
<https://doc.qt.io/qt-5/qplaintextedit.html#editing-key-bindings>`_. In
|
<https://doc.qt.io/qt-5/qplaintextedit.html#editing-key-bindings>`_. In
|
||||||
case of conflicts the list above takes precedence.
|
case of conflicts the list above takes precedence.
|
||||||
|
|
||||||
All other windows only support a subset of keyboard shortcuts listed
|
All other windows only support a subset of keyboard shortcuts listed
|
||||||
above. Typically, the shortcuts `Ctrl-/` (Stop Run), `Ctrl-W` (Close
|
above. Typically, the shortcuts `Ctrl-/` (Stop Run), `Ctrl-W` (Close
|
||||||
Window), and `Ctrl-Q` (Quit Application) are supported.
|
Window), and `Ctrl-Q` (Quit Application) are supported.
|
||||||
|
|
||||||
|
-------------
|
||||||
|
|
||||||
|
.. _Gravelle1:
|
||||||
|
|
||||||
|
**(Gravelle1)** Gravelle, Gissinger, Kohlmeyer, `arXiv:2503.14020 \[physics.comp-ph\] <https://doi.org/10.48550/arXiv.2503.14020>`_ (2025)
|
||||||
|
|
||||||
|
.. _Gravelle2:
|
||||||
|
|
||||||
|
**(Gravelle2)** Gravelle https://lammpstutorials.github.io/
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|||||||
@ -2,14 +2,18 @@ Moltemplate Tutorial
|
|||||||
====================
|
====================
|
||||||
|
|
||||||
In this tutorial, we are going to use the tool :ref:`Moltemplate
|
In this tutorial, we are going to use the tool :ref:`Moltemplate
|
||||||
<moltemplate>` to set up a classical molecular dynamic simulation using
|
<Moltemplate1>` from https://moltemplate.org/ to set up a classical
|
||||||
the :ref:`OPLS-AA force field <OPLSAA96>`. The first
|
molecular dynamic simulation using the :ref:`OPLS-AA force field
|
||||||
task is to describe an organic compound and create a complete input deck
|
<oplsaa2024>`. The first task is to describe an organic compound and
|
||||||
for LAMMPS. The second task is to map the OPLS-AA force field to a
|
create a complete input deck for LAMMPS. The second task is to use
|
||||||
molecular sample created with an external tool, e.g. PACKMOL, and
|
moltemplate to build a polymer. The third task is to map the OPLS-AA
|
||||||
exported as a PDB file. The files used in this tutorial can be found
|
force field to a molecular sample created with an external tool,
|
||||||
in the ``tools/moltemplate/tutorial-files`` folder of the LAMMPS
|
e.g. PACKMOL, and exported as a PDB file. The files used in this
|
||||||
source code distribution.
|
tutorial can be found in the ``tools/moltemplate/tutorial-files`` folder
|
||||||
|
of the LAMMPS source code distribution.
|
||||||
|
|
||||||
|
Many more examples can be found here: https://moltemplate.org/examples.html
|
||||||
|
|
||||||
|
|
||||||
Simulating an organic solvent
|
Simulating an organic solvent
|
||||||
"""""""""""""""""""""""""""""
|
"""""""""""""""""""""""""""""
|
||||||
@ -17,14 +21,13 @@ Simulating an organic solvent
|
|||||||
This example aims to create a cubic box of the organic solvent
|
This example aims to create a cubic box of the organic solvent
|
||||||
formamide.
|
formamide.
|
||||||
|
|
||||||
The first step is to create a molecular topology in the
|
The first step is to create a molecular topology in the LAMMPS-template
|
||||||
LAMMPS-template (LT) file format representing a single molecule, which
|
(LT) file format representing a single molecule, which will be
|
||||||
will be stored in a Moltemplate object called ``_FAM inherits OPLSAA {}``.
|
stored in a Moltemplate object called ``_FAM inherits OPLSAA {}``.
|
||||||
This command states that the object ``_FAM`` is based on an existing
|
This command states that the object ``_FAM`` is based on an existing
|
||||||
object called ``OPLSAA``, which contains OPLS-AA parameters, atom type
|
object called ``OPLSAA``, which contains OPLS-AA parameters, atom type
|
||||||
definitions, partial charges, masses and bond-angle rules for many organic
|
definitions, partial charges, masses and bond-angle rules for many organic
|
||||||
and biological compounds.
|
and biological compounds.
|
||||||
|
|
||||||
The atomic structure is the starting point to populate the command
|
The atomic structure is the starting point to populate the command
|
||||||
``write('Data Atoms') {}``, which will write the ``Atoms`` section in the
|
``write('Data Atoms') {}``, which will write the ``Atoms`` section in the
|
||||||
LAMMPS data file. The OPLS-AA force field uses the ``atom_style full``,
|
LAMMPS data file. The OPLS-AA force field uses the ``atom_style full``,
|
||||||
@ -36,21 +39,23 @@ to the ``molID``, except that the same variable is used for the whole
|
|||||||
molecule. The atom types are assigned using ``@``-type variables. The
|
molecule. The atom types are assigned using ``@``-type variables. The
|
||||||
assignment of atom types (e.g. ``@atom:177``, ``@atom:178``) is done using
|
assignment of atom types (e.g. ``@atom:177``, ``@atom:178``) is done using
|
||||||
the OPLS-AA atom types defined in the "In Charges" section of the file
|
the OPLS-AA atom types defined in the "In Charges" section of the file
|
||||||
``oplsaa.lt``, looking for a reasonable match with the description of the atom.
|
``oplsaa2024.lt``, looking for a reasonable match with the description of the atom.
|
||||||
The resulting file (``formamide.lt``) follows:
|
The resulting file (``formamide.lt``) follows:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
|
import /usr/local/moltemplate/moltemplate/force_fields/oplsaa2024.lt # defines OPLSAA
|
||||||
|
|
||||||
_FAM inherits OPLSAA {
|
_FAM inherits OPLSAA {
|
||||||
|
|
||||||
# atomID molID atomType charge coordX coordY coordZ
|
# atomID molID atomType charge coordX coordY coordZ
|
||||||
write('Data Atoms') {
|
write('Data Atoms') {
|
||||||
$atom:C00 $mol @atom:177 0.00 0.100 0.490 0.0
|
$atom:C00 $mol @atom:235 0.00 0.100 0.490 0.0
|
||||||
$atom:O01 $mol @atom:178 0.00 1.091 -0.250 0.0
|
$atom:O01 $mol @atom:236 0.00 1.091 -0.250 0.0
|
||||||
$atom:N02 $mol @atom:179 0.00 -1.121 -0.181 0.0
|
$atom:N02 $mol @atom:237 0.00 -1.121 -0.181 0.0
|
||||||
$atom:H03 $mol @atom:182 0.00 -2.013 0.272 0.0
|
$atom:H03 $mol @atom:240 0.00 -2.013 0.272 0.0
|
||||||
$atom:H04 $mol @atom:182 0.00 -1.056 -1.190 0.0
|
$atom:H04 $mol @atom:240 0.00 -1.056 -1.190 0.0
|
||||||
$atom:H05 $mol @atom:221 0.00 0.144 1.570 0.0
|
$atom:H05 $mol @atom:279 0.00 0.144 1.570 0.0
|
||||||
}
|
}
|
||||||
|
|
||||||
# A list of the bonds in the molecule:
|
# A list of the bonds in the molecule:
|
||||||
@ -64,16 +69,17 @@ The resulting file (``formamide.lt``) follows:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
You don't have to specify the charge in this example because they will
|
You don't have to specify the charge in this example because the OPLSAA
|
||||||
be assigned according to the atom type. Analogously, only a
|
force-field assigns charge according to the atom type. (This is not true
|
||||||
"Data Bond List" section is needed as the atom type will determine the
|
when using other force fields.) A "Data Bond List" section is needed as
|
||||||
bond type. The other bonded interactions (e.g. angles,
|
the atom type will determine the bond type. The other bonded interactions
|
||||||
dihedrals, and impropers) will be automatically generated by
|
(e.g. angles, dihedrals, and impropers) will be automatically generated by
|
||||||
Moltemplate.
|
Moltemplate.
|
||||||
|
|
||||||
If the simulation is non-neutral, or Moltemplate complains that you have
|
If the simulation is not charge-neutral, or Moltemplate complains that
|
||||||
missing bond, angle, or dihedral types, this means at least one of your
|
you have missing bond, angle, or dihedral types, this probably means that
|
||||||
atom types is incorrect.
|
at least one of your atom types is incorrect (or that perhaps there is no
|
||||||
|
suitable atom type currently defined in the ``oplsaa2024.lt`` file).
|
||||||
|
|
||||||
The second step is to create a master file with instructions to build a
|
The second step is to create a master file with instructions to build a
|
||||||
starting structure and the LAMMPS commands to run an NPT simulation. The
|
starting structure and the LAMMPS commands to run an NPT simulation. The
|
||||||
@ -81,11 +87,9 @@ master file (``solv_01.lt``) follows:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# Import the force field.
|
import formamide.lt # Defines "_FAM" and OPLSAA
|
||||||
import /usr/local/moltemplate/moltemplate/force_fields/oplsaa.lt
|
|
||||||
import formamide.lt # after oplsaa.lt, as it depends on it.
|
|
||||||
|
|
||||||
# Create the input sample.
|
# Distribute the molecules on a 5x5x5 cubic grid with spacing 4.6
|
||||||
solv = new _FAM [5].move( 4.6, 0, 0)
|
solv = new _FAM [5].move( 4.6, 0, 0)
|
||||||
[5].move( 0, 4.6, 0)
|
[5].move( 0, 4.6, 0)
|
||||||
[5].move( 0, 0, 4.6)
|
[5].move( 0, 0, 4.6)
|
||||||
@ -98,8 +102,11 @@ master file (``solv_01.lt``) follows:
|
|||||||
-11.5 11.5 zlo zhi
|
-11.5 11.5 zlo zhi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Create an input deck for LAMMPS.
|
# Note: The lines below in the "In Run" section are often omitted.
|
||||||
write_once("In Init"){
|
|
||||||
|
write_once("In Run"){
|
||||||
|
# Create an input deck for LAMMPS.
|
||||||
|
# Run an NPT simulation.
|
||||||
# Input variables.
|
# Input variables.
|
||||||
variable run string solv_01 # output name
|
variable run string solv_01 # output name
|
||||||
variable ts equal 1 # timestep
|
variable ts equal 1 # timestep
|
||||||
@ -109,12 +116,6 @@ master file (``solv_01.lt``) follows:
|
|||||||
variable equi equal 5000 # Equilibration steps
|
variable equi equal 5000 # Equilibration steps
|
||||||
variable prod equal 30000 # Production steps
|
variable prod equal 30000 # Production steps
|
||||||
|
|
||||||
# PBC (set them before the creation of the box).
|
|
||||||
boundary p p p
|
|
||||||
}
|
|
||||||
|
|
||||||
# Run an NPT simulation.
|
|
||||||
write_once("In Run"){
|
|
||||||
# Derived variables.
|
# Derived variables.
|
||||||
variable tcouple equal \$\{ts\}*100
|
variable tcouple equal \$\{ts\}*100
|
||||||
variable pcouple equal \$\{ts\}*1000
|
variable pcouple equal \$\{ts\}*1000
|
||||||
@ -143,7 +144,7 @@ master file (``solv_01.lt``) follows:
|
|||||||
unfix NPT
|
unfix NPT
|
||||||
}
|
}
|
||||||
|
|
||||||
The first two commands insert the content of files ``oplsaa.lt`` and
|
The first two commands insert the content of files ``oplsaa2024.lt`` and
|
||||||
``formamide.lt`` into the master file. At this point, we can use the
|
``formamide.lt`` into the master file. At this point, we can use the
|
||||||
command ``solv = new _FAM [N]`` to create N copies of a molecule of type
|
command ``solv = new _FAM [N]`` to create N copies of a molecule of type
|
||||||
``_FAM``. In this case, we create an array of 5*5*5 molecules on a cubic
|
``_FAM``. In this case, we create an array of 5*5*5 molecules on a cubic
|
||||||
@ -153,21 +154,37 @@ the sample was created from scratch, we also specify the simulation box
|
|||||||
size in the "Data Boundary" section.
|
size in the "Data Boundary" section.
|
||||||
|
|
||||||
The LAMMPS setting for the force field are specified in the file
|
The LAMMPS setting for the force field are specified in the file
|
||||||
``oplsaa.lt`` and are written automatically in the input deck. We also
|
``oplsaa2024.lt`` and are written automatically in the input deck. We also
|
||||||
specify the boundary conditions and a set of variables in
|
specify the boundary conditions and a set of variables in
|
||||||
the "In Init" section. The remaining commands to run an NPT simulation
|
the "In Init" section.
|
||||||
|
|
||||||
|
The remaining commands to run an NPT simulation
|
||||||
are written in the "In Run" section. Note that in this script, LAMMPS
|
are written in the "In Run" section. Note that in this script, LAMMPS
|
||||||
variables are protected with the escape character ``\`` to distinguish
|
variables are protected with the escape character ``\`` to distinguish
|
||||||
them from Moltemplate variables, e.g. ``\$\{run\}`` is a LAMMPS
|
them from Moltemplate variables, e.g. ``\$\{run\}`` is a LAMMPS
|
||||||
variable that is written in the input deck as ``${run}``.
|
variable that is written in the input deck as ``${run}``.
|
||||||
|
|
||||||
|
(Note: Moltemplate can be slow to run, so you need to change you run
|
||||||
|
settings frequently, I recommended moving those commands (from "In Run")
|
||||||
|
out of your .lt files and into a separate file. Moltemplate creates a
|
||||||
|
file named ``run.in.EXAMPLE`` for this purpose. You can put your run
|
||||||
|
settings and fixes that file and then invoke LAMMPS using
|
||||||
|
``mpirun -np 4 lmp -in run.in.EXAMPLE`` instead.)
|
||||||
|
|
||||||
|
|
||||||
Compile the master file with:
|
Compile the master file with:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
moltemplate.sh -overlay-all solv_01.lt
|
moltemplate.sh solv_01.lt
|
||||||
|
cleanup_moltemplate.sh # <-- optional: see below
|
||||||
|
|
||||||
And execute the simulation with the following:
|
(Note: The optional "cleanup_moltemplate.sh" command deletes
|
||||||
|
unused atom types, which sometimes makes LAMMPS run faster.
|
||||||
|
But it does not work with many-body pair styles or dreiding-style h-bonds.
|
||||||
|
Fortunately most force fields, including OPLSAA, don't use those features.)
|
||||||
|
|
||||||
|
Then execute the simulation with the following:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -180,15 +197,116 @@ And execute the simulation with the following:
|
|||||||
Snapshot of the sample at the beginning and end of the simulation.
|
Snapshot of the sample at the beginning and end of the simulation.
|
||||||
Rendered with Ovito.
|
Rendered with Ovito.
|
||||||
|
|
||||||
|
|
||||||
|
Building a simple polymer
|
||||||
|
"""""""""""""""""""""""""
|
||||||
|
Moltemplate is particularly useful for building polymers (and other molecules
|
||||||
|
with sub-units). As an simple example, consider butane:
|
||||||
|
|
||||||
|
.. figure:: JPG/butane.jpg
|
||||||
|
|
||||||
|
The ``butane.lt`` file below defines Butane as a polymer containing
|
||||||
|
4 monomers (of type ``CH3``, ``CH2``, ``CH2``, ``CH3``).
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
import /usr/local/moltemplate/moltemplate/force_fields/oplsaa2024.lt # defines OPLSAA
|
||||||
|
|
||||||
|
CH3 inherits OPLSAA {
|
||||||
|
|
||||||
|
# atomID molID atomType charge coordX coordY coordZ
|
||||||
|
write("Data Atoms") {
|
||||||
|
$atom:c $mol:... @atom:54 0.0 0.000000 0.4431163 0.000000
|
||||||
|
$atom:h1 $mol:... @atom:60 0.0 0.000000 1.0741603 0.892431
|
||||||
|
$atom:h2 $mol:... @atom:60 0.0 0.000000 1.0741603 -0.892431
|
||||||
|
$atom:h3 $mol:... @atom:60 0.0 -0.892431 -0.1879277 0.000000
|
||||||
|
}
|
||||||
|
# (Using "$mol:..." indicates this object ("CH3") is part of a larger
|
||||||
|
# molecule. Moltemplate will share the molecule-ID with that molecule.)
|
||||||
|
|
||||||
|
# A list of the bonds within the "CH3" molecular sub-unit:
|
||||||
|
# BondID AtomID1 AtomID2
|
||||||
|
write('Data Bond List') {
|
||||||
|
$bond:ch1 $atom:c $atom:h1
|
||||||
|
$bond:ch2 $atom:c $atom:h2
|
||||||
|
$bond:ch3 $atom:c $atom:h3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CH2 inherits OPLSAA {
|
||||||
|
|
||||||
|
# atomID molID atomType charge coordX coordY coordZ
|
||||||
|
write("Data Atoms") {
|
||||||
|
$atom:c $mol:... @atom:57 0.0 0.000000 0.4431163 0.000000
|
||||||
|
$atom:h1 $mol:... @atom:60 0.0 0.000000 1.0741603 0.892431
|
||||||
|
$atom:h2 $mol:... @atom:60 0.0 0.000000 1.0741603 -0.892431
|
||||||
|
}
|
||||||
|
|
||||||
|
# A list of the bonds within the "CH2" molecular sub-unit:
|
||||||
|
# BondID AtomID1 AtomID2
|
||||||
|
write('Data Bond List') {
|
||||||
|
$bond:ch1 $atom:c $atom:h1
|
||||||
|
$bond:ch2 $atom:c $atom:h2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Butane inherits OPLSAA {
|
||||||
|
|
||||||
|
create_var {$mol} # optional:force all monomers to share the same molecule-ID
|
||||||
|
|
||||||
|
# - Create 4 monomers
|
||||||
|
# - Move them along the X axis using ".move()",
|
||||||
|
# - Rotate them 180 degrees with respect to the previous monomer
|
||||||
|
monomer1 = new CH3
|
||||||
|
monomer2 = new CH2.rot(180,1,0,0).move(1.2533223,0,0)
|
||||||
|
monomer3 = new CH2.move(2.5066446,0,0)
|
||||||
|
monomer4 = new CH3.rot(180,0,0,1).move(3.7599669,0,0)
|
||||||
|
|
||||||
|
# A list of the bonds connecting different monomers together:
|
||||||
|
write('Data Bond List') {
|
||||||
|
$bond:b1 $atom:monomer1/c $atom:monomer2/c
|
||||||
|
$bond:b2 $atom:monomer2/c $atom:monomer3/c
|
||||||
|
$bond:b3 $atom:monomer3/c $atom:monomer4/c
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Again, you don't have to specify the charge in this example because OPLSAA
|
||||||
|
assigns charges according to the atom type.
|
||||||
|
|
||||||
|
This ``Butane`` object is a molecule which can be used anywhere other molecules
|
||||||
|
can be used. (You can arrange ``Butane`` molecules on a lattice, as we did previously.
|
||||||
|
You can also modify individual butane molecules by adding or deleting atoms or bonds.
|
||||||
|
You can add bonds between specific butane molecules or use ``Butane`` as a
|
||||||
|
sub-unit to define even larger molecules. See the moltemplate manual for details.)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
How to build a complex polymer
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
A similar procedure can be used to create more complicated polymers,
|
||||||
|
such as the NIPAM polymer example shown below. For details, see:
|
||||||
|
|
||||||
|
https://github.com/jewettaij/moltemplate/tree/master/examples/all_atom/force_field_OPLSAA/NIPAM_polymer+water+ions
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Mapping an existing structure
|
Mapping an existing structure
|
||||||
"""""""""""""""""""""""""""""
|
"""""""""""""""""""""""""""""
|
||||||
|
|
||||||
Another helpful way to use Moltemplate is mapping an existing molecular
|
Another helpful way to use Moltemplate is mapping an existing molecular
|
||||||
sample to a force field. This is useful when a complex sample is
|
sample to a force field. This is useful when a complex sample is assembled
|
||||||
assembled from different simulations or created with specialized
|
from different simulations or created with specialized software (e.g. PACKMOL).
|
||||||
software (e.g. PACKMOL). As in the previous example, all molecular
|
(Note: The previous link shows how to build this entire system from scratch
|
||||||
species in the sample must be defined using single-molecule Moltemplate
|
using only moltemplate. However here we will assume instead that we obtained
|
||||||
objects. For this example, we use a short polymer in a box containing
|
a PDB file for this system using PACKMOL.)
|
||||||
|
|
||||||
|
As in the previous examples, all molecular species in the sample
|
||||||
|
are defined using single-molecule Moltemplate objects.
|
||||||
|
For this example, we use a short polymer in a box containing
|
||||||
water molecules and ions in the PDB file ``model.pdb``.
|
water molecules and ions in the PDB file ``model.pdb``.
|
||||||
|
|
||||||
It is essential to understand that the order of atoms in the PDB file
|
It is essential to understand that the order of atoms in the PDB file
|
||||||
@ -246,25 +364,25 @@ The resulting master LT file defining short annealing at a fixed volume
|
|||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# Use the OPLS-AA force field for all species.
|
# Use the OPLS-AA force field for all species.
|
||||||
import /usr/local/moltemplate/moltemplate/force_fields/oplsaa.lt
|
import /usr/local/moltemplate/moltemplate/force_fields/oplsaa2024.lt
|
||||||
import PolyNIPAM.lt
|
import PolyNIPAM.lt
|
||||||
|
|
||||||
# Define the SPC water and ions as in the OPLS-AA
|
# Define the SPC water and ions as in the OPLS-AA
|
||||||
Ca inherits OPLSAA {
|
Ca inherits OPLSAA {
|
||||||
write("Data Atoms"){
|
write("Data Atoms"){
|
||||||
$atom:a1 $mol:. @atom:354 0.0 0.00000 0.00000 0.000000
|
$atom:a1 $mol:. @atom:412 0.0 0.00000 0.00000 0.000000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Cl inherits OPLSAA {
|
Cl inherits OPLSAA {
|
||||||
write("Data Atoms"){
|
write("Data Atoms"){
|
||||||
$atom:a1 $mol:. @atom:344 0.0 0.00000 0.00000 0.000000
|
$atom:a1 $mol:. @atom:401 0.0 0.00000 0.00000 0.000000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SPC inherits OPLSAA {
|
SPC inherits OPLSAA {
|
||||||
write("Data Atoms"){
|
write("Data Atoms"){
|
||||||
$atom:O $mol:. @atom:76 0. 0.0000000 0.00000 0.000000
|
$atom:O $mol:. @atom:9991 0. 0.0000000 0.00000 0.0000000
|
||||||
$atom:H1 $mol:. @atom:77 0. 0.8164904 0.00000 0.5773590
|
$atom:H1 $mol:. @atom:9990 0. 0.8164904 0.00000 0.5773590
|
||||||
$atom:H2 $mol:. @atom:77 0. -0.8164904 0.00000 0.5773590
|
$atom:H2 $mol:. @atom:9990 0. -0.8164904 0.00000 0.5773590
|
||||||
}
|
}
|
||||||
write("Data Bond List") {
|
write("Data Bond List") {
|
||||||
$bond:OH1 $atom:O $atom:H1
|
$bond:OH1 $atom:O $atom:H1
|
||||||
@ -285,8 +403,15 @@ The resulting master LT file defining short annealing at a fixed volume
|
|||||||
0 26 zlo zhi
|
0 26 zlo zhi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Define the input variables.
|
|
||||||
write_once("In Init"){
|
write_once("In Init"){
|
||||||
|
boundary p p p # "p p p" is the default. This line is optional.
|
||||||
|
neighbor 3 bin # (This line is also optional in this example.)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Note: The lines below in the "In Run" section are often omitted.
|
||||||
|
|
||||||
|
# Run an NVT simulation.
|
||||||
|
write_once("In Run"){
|
||||||
# Input variables.
|
# Input variables.
|
||||||
variable run string sample01 # output name
|
variable run string sample01 # output name
|
||||||
variable ts equal 2 # timestep
|
variable ts equal 2 # timestep
|
||||||
@ -294,13 +419,6 @@ The resulting master LT file defining short annealing at a fixed volume
|
|||||||
variable p equal 1. # equilibrium pressure
|
variable p equal 1. # equilibrium pressure
|
||||||
variable equi equal 30000 # equilibration steps
|
variable equi equal 30000 # equilibration steps
|
||||||
|
|
||||||
# PBC (set them before the creation of the box).
|
|
||||||
boundary p p p
|
|
||||||
neighbor 3 bin
|
|
||||||
}
|
|
||||||
|
|
||||||
# Run an NVT simulation.
|
|
||||||
write_once("In Run"){
|
|
||||||
# Set the output.
|
# Set the output.
|
||||||
thermo 1000
|
thermo 1000
|
||||||
thermo_style custom step etotal evdwl ecoul elong ebond eangle &
|
thermo_style custom step etotal evdwl ecoul elong ebond eangle &
|
||||||
@ -314,8 +432,8 @@ The resulting master LT file defining short annealing at a fixed volume
|
|||||||
write_data \$\{run\}.min
|
write_data \$\{run\}.min
|
||||||
|
|
||||||
# Set the constrains.
|
# Set the constrains.
|
||||||
group watergroup type @atom:76 @atom:77
|
group watergroup type @atom:9991 @atom:9990
|
||||||
fix 0 watergroup shake 0.0001 10 0 b @bond:042_043 a @angle:043_042_043
|
fix 0 watergroup shake 0.0001 10 0 b @bond:spcO_spcH a @angle:spcH_spcO_spcH
|
||||||
|
|
||||||
# Short annealing.
|
# Short annealing.
|
||||||
timestep \$\{ts\}
|
timestep \$\{ts\}
|
||||||
@ -327,7 +445,7 @@ The resulting master LT file defining short annealing at a fixed volume
|
|||||||
|
|
||||||
|
|
||||||
In this example, the water model is SPC and it is defined in the
|
In this example, the water model is SPC and it is defined in the
|
||||||
``oplsaa.lt`` file with atom types ``@atom:76`` and ``@atom:77``. For
|
``oplsaa2024.lt`` file with atom types ``@atom:9991`` and ``@atom:9990``. For
|
||||||
water we also use the ``group`` and ``fix shake`` commands with
|
water we also use the ``group`` and ``fix shake`` commands with
|
||||||
Moltemplate ``@``-type variables, to ensure consistency with the
|
Moltemplate ``@``-type variables, to ensure consistency with the
|
||||||
numerical values assigned during compilation. To identify the bond and
|
numerical values assigned during compilation. To identify the bond and
|
||||||
@ -336,19 +454,20 @@ are:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
replace{ @atom:76 @atom:76_b042_a042_d042_i042 }
|
replace{ @atom:9991 @atom:9991_bspcO_aspcO_dspcO_ispcO }
|
||||||
replace{ @atom:77 @atom:77_b043_a043_d043_i043 }
|
replace{ @atom:9990 @atom:9990_bspcH_aspcH_dspcH_ispcH }
|
||||||
|
|
||||||
From which we can identify the following "Data Bonds By Type":
|
From which we can identify the following "Data Bonds By Type":
|
||||||
``@bond:042_043 @atom:*_b042*_a*_d*_i* @atom:*_b043*_a*_d*_i*`` and
|
``@bond:spcO_spcH @atom:*_bspcO*_a*_d*_i* @atom:*_bspcH*_a*_d*_i*``
|
||||||
"Data Angles By Type": ``@angle:043_042_043 @atom:*_b*_a043*_d*_i*
|
and "Data Angles By Type":
|
||||||
@atom:*_b*_a042*_d*_i* @atom:*_b*_a043*_d*_i*``
|
``@angle:spcH_spcO_spcH @atom:*_b*_aspcH*_d*_i* @atom:*_b*_aspcO*_d*_i* @atom:*_b*_aspcH*_d*_i*``
|
||||||
|
|
||||||
Compile the master file with:
|
Compile the master file with:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
moltemplate.sh -overlay-all -pdb model.pdb sample01.lt
|
moltemplate.sh -pdb model.pdb sample01.lt
|
||||||
|
cleanup_moltemplate.sh
|
||||||
|
|
||||||
And execute the simulation with the following:
|
And execute the simulation with the following:
|
||||||
|
|
||||||
@ -363,8 +482,13 @@ And execute the simulation with the following:
|
|||||||
Sample visualized with Ovito loading the trajectory into the DATA
|
Sample visualized with Ovito loading the trajectory into the DATA
|
||||||
file written after minimization.
|
file written after minimization.
|
||||||
|
|
||||||
|
|
||||||
------------
|
------------
|
||||||
|
|
||||||
.. _OPLSAA96:
|
.. _oplsaa2024:
|
||||||
|
|
||||||
**(OPLS-AA)** Jorgensen, Maxwell, Tirado-Rives, J Am Chem Soc, 118(45), 11225-11236 (1996).
|
**(OPLS-AA)** Jorgensen, W.L., Ghahremanpour, M.M., Saar, A., Tirado-Rives, J., J. Phys. Chem. B, 128(1), 250-262 (2024).
|
||||||
|
|
||||||
|
.. _Moltemplate1:
|
||||||
|
|
||||||
|
**(Moltemplate)** Jewett et al., J. Mol. Biol., 433(11), 166841 (2021)
|
||||||
|
|||||||
@ -197,7 +197,7 @@ The LPS model has a force scalar state
|
|||||||
.. math::
|
.. math::
|
||||||
|
|
||||||
\underline{t} = \frac{3K\theta}{m}\underline{\omega}\,\underline{x} +
|
\underline{t} = \frac{3K\theta}{m}\underline{\omega}\,\underline{x} +
|
||||||
\alpha \underline{\omega}\,\underline{e}^{\rm d}, \qquad\qquad\textrm{(3)}
|
\alpha \underline{\omega}\,\underline{e}^\mathrm{d}, \qquad\qquad\textrm{(3)}
|
||||||
|
|
||||||
with :math:`K` the bulk modulus and :math:`\alpha` related to the shear
|
with :math:`K` the bulk modulus and :math:`\alpha` related to the shear
|
||||||
modulus :math:`G` as
|
modulus :math:`G` as
|
||||||
@ -242,14 +242,14 @@ scalar state are defined, respectively, as
|
|||||||
|
|
||||||
.. math::
|
.. math::
|
||||||
|
|
||||||
\underline{e}^{\rm i}=\frac{\theta \underline{x}}{3}, \qquad
|
\underline{e}^\mathrm{i}=\frac{\theta \underline{x}}{3}, \qquad
|
||||||
\underline{e}^{\rm d} = \underline{e}- \underline{e}^{\rm i},
|
\underline{e}^\mathrm{d} = \underline{e}- \underline{e}^\mathrm{i},
|
||||||
|
|
||||||
|
|
||||||
where the arguments of the state functions and the vectors on which they
|
where the arguments of the state functions and the vectors on which they
|
||||||
operate are omitted for simplicity. We note that the LPS model is linear
|
operate are omitted for simplicity. We note that the LPS model is linear
|
||||||
in the dilatation :math:`\theta`, and in the deviatoric part of the
|
in the dilatation :math:`\theta`, and in the deviatoric part of the
|
||||||
extension :math:`\underline{e}^{\rm d}`.
|
extension :math:`\underline{e}^\mathrm{d}`.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
|||||||
@ -62,17 +62,17 @@ with :ref:`PNG, JPEG and FFMPEG output support <graphics>` enabled.
|
|||||||
|
|
||||||
cd $LAMMPS_DIR/src
|
cd $LAMMPS_DIR/src
|
||||||
|
|
||||||
# add packages if necessary
|
# add LAMMPS packages if necessary
|
||||||
make yes-MOLECULE
|
make yes-MOLECULE
|
||||||
make yes-PYTHON
|
make yes-PYTHON
|
||||||
|
|
||||||
# compile shared library using Makefile
|
# compile shared library using Makefile
|
||||||
make mpi mode=shlib LMP_INC="-DLAMMPS_PNG -DLAMMPS_JPEG -DLAMMPS_FFMPEG" JPG_LIB="-lpng -ljpeg"
|
make mpi mode=shlib LMP_INC="-DLAMMPS_PNG -DLAMMPS_JPEG -DLAMMPS_FFMPEG" JPG_LIB="-lpng -ljpeg"
|
||||||
|
|
||||||
Step 2: Installing the LAMMPS Python package
|
Step 2: Installing the LAMMPS Python module
|
||||||
""""""""""""""""""""""""""""""""""""""""""""
|
"""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
Next install the LAMMPS Python package into your current Python installation with:
|
Next install the LAMMPS Python module into your current Python installation with:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -89,6 +89,29 @@ privileges) or into your personal Python module folder.
|
|||||||
Recompiling the shared library requires re-installing the Python
|
Recompiling the shared library requires re-installing the Python
|
||||||
package.
|
package.
|
||||||
|
|
||||||
|
.. _externally_managed:
|
||||||
|
|
||||||
|
.. admonition:: Handling an "externally-managed-environment" Error
|
||||||
|
:class: Hint
|
||||||
|
|
||||||
|
Some Python installations made through Linux distributions
|
||||||
|
(e.g. Ubuntu 24.04LTS or later) will prevent installing the LAMMPS
|
||||||
|
Python module into a system folder or a corresponding folder of the
|
||||||
|
individual user as attempted by ``make install-python`` with an error
|
||||||
|
stating that an *externally managed* python installation must be only
|
||||||
|
managed by the same package package management tool. This is an
|
||||||
|
optional setting, so not all Linux distributions follow it currently
|
||||||
|
(Spring 2025). The reasoning and explanations for this error can be
|
||||||
|
found in the `Python Packaging User Guide
|
||||||
|
<https://packaging.python.org/en/latest/specifications/externally-managed-environments/>`_
|
||||||
|
|
||||||
|
These guidelines suggest to create a virtual environment and install
|
||||||
|
the LAMMPS Python module there (see below). This is generally a good
|
||||||
|
idea and the LAMMPS developers recommend this, too. If, however, you
|
||||||
|
want to proceed and install the LAMMPS Python module regardless, you
|
||||||
|
can install the "wheel" file (see above) manually with the ``pip``
|
||||||
|
command by adding the ``--break-system-packages`` flag.
|
||||||
|
|
||||||
Installation inside of a virtual environment
|
Installation inside of a virtual environment
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
SPC water model
|
SPC and SPC/E water model
|
||||||
===============
|
=========================
|
||||||
|
|
||||||
The SPC water model specifies a 3-site rigid water molecule with
|
The SPC water model specifies a 3-site rigid water molecule with
|
||||||
charges and Lennard-Jones parameters assigned to each of the three atoms.
|
charges and Lennard-Jones parameters assigned to each of the three atoms.
|
||||||
@ -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
|
*harmonic* and an angle style of *harmonic* or *charmm* should also be
|
||||||
used.
|
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
|
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.
|
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
|
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
|
(``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
|
<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
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
|||||||
@ -21,9 +21,14 @@ can be invoked via the *dpd/tstat* pair style:
|
|||||||
* :doc:`fix nvt/sllod <fix_nvt_sllod>`
|
* :doc:`fix nvt/sllod <fix_nvt_sllod>`
|
||||||
* :doc:`fix temp/berendsen <fix_temp_berendsen>`
|
* :doc:`fix temp/berendsen <fix_temp_berendsen>`
|
||||||
* :doc:`fix temp/csvr <fix_temp_csvr>`
|
* :doc:`fix temp/csvr <fix_temp_csvr>`
|
||||||
|
* :doc:`fix ffl <fix_ffl>`
|
||||||
|
* :doc:`fix gjf <fix_gjf>`
|
||||||
|
* :doc:`fix gld <fix_gld>`
|
||||||
|
* :doc:`fix gle <fix_gle>`
|
||||||
* :doc:`fix langevin <fix_langevin>`
|
* :doc:`fix langevin <fix_langevin>`
|
||||||
* :doc:`fix temp/rescale <fix_temp_rescale>`
|
* :doc:`fix temp/rescale <fix_temp_rescale>`
|
||||||
* :doc:`pair_style dpd/tstat <pair_dpd>`
|
* :doc:`pair_style dpd/tstat <pair_dpd>`
|
||||||
|
* :doc:`pair_style dpd/ext/tstat <pair_dpd_ext>`
|
||||||
|
|
||||||
:doc:`Fix nvt <fix_nh>` only thermostats the translational velocity of
|
:doc:`Fix nvt <fix_nh>` only thermostats the translational velocity of
|
||||||
particles. :doc:`Fix nvt/sllod <fix_nvt_sllod>` also does this,
|
particles. :doc:`Fix nvt/sllod <fix_nvt_sllod>` also does this,
|
||||||
@ -82,10 +87,10 @@ that:
|
|||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
Only the nvt fixes perform time integration, meaning they update
|
Not all thermostat fixes perform time integration, meaning they update
|
||||||
the velocities and positions of particles due to forces and velocities
|
the velocities and positions of particles due to forces and velocities
|
||||||
respectively. The other thermostat fixes only adjust velocities; they
|
respectively. The other thermostat fixes only adjust velocities; they
|
||||||
do NOT perform time integration updates. Thus they should be used in
|
do NOT perform time integration updates. Thus, they should be used in
|
||||||
conjunction with a constant NVE integration fix such as these:
|
conjunction with a constant NVE integration fix such as these:
|
||||||
|
|
||||||
* :doc:`fix nve <fix_nve>`
|
* :doc:`fix nve <fix_nve>`
|
||||||
|
|||||||
@ -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
|
<howto-tip3p>` specifies a 3-site rigid water molecule with charges and
|
||||||
Lennard-Jones parameters assigned to each of the three atoms.
|
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>`
|
* :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 <pair_lj_cut_coul>`
|
||||||
* :doc:`pair_style lj/cut/coul/long/soft <pair_fep_soft>`
|
* :doc:`pair_style lj/cut/coul/long/soft <pair_fep_soft>`
|
||||||
* :doc:`kspace_style pppm <kspace_style>`
|
* :doc:`kspace_style pppm <kspace_style>`
|
||||||
|
* :doc:`pair_style lj/long/coul/long <pair_lj_long>`
|
||||||
* :doc:`kspace_style pppm/disp <kspace_style>`
|
* :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
|
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
|
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
|
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
|
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
|
(``tip3p.mol``) of TIP3P water for use with the :doc:`molecule command
|
||||||
<molecule>` demonstrating how to set up a small bulk water system for
|
<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
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
TIP4P water model
|
TIP4P and OPC water models
|
||||||
=================
|
==========================
|
||||||
|
|
||||||
The four-point TIP4P rigid water model extends the traditional
|
The four-point TIP4P rigid water model extends the traditional
|
||||||
:doc:`three-point TIP3P <Howto_tip3p>` model by adding an additional
|
:doc:`three-point TIP3P <Howto_tip3p>` model by adding an additional
|
||||||
@ -9,9 +9,11 @@ the oxygen along the bisector of the HOH bond angle. A bond style of
|
|||||||
:doc:`harmonic <bond_harmonic>` and an angle style of :doc:`harmonic
|
:doc:`harmonic <bond_harmonic>` and an angle style of :doc:`harmonic
|
||||||
<angle_harmonic>` or :doc:`charmm <angle_charmm>` should also be used.
|
<angle_harmonic>` or :doc:`charmm <angle_charmm>` should also be used.
|
||||||
In case of rigid bonds also bond style :doc:`zero <bond_zero>` and angle
|
In case of rigid bonds also bond style :doc:`zero <bond_zero>` and angle
|
||||||
style :doc:`zero <angle_zero>` can be used.
|
style :doc:`zero <angle_zero>` can be used. Very similar to the TIP4P
|
||||||
|
model is the OPC water model. It can be realized the same way as TIP4P
|
||||||
|
but has different geometry and force field parameters.
|
||||||
|
|
||||||
There are two ways to implement TIP4P water in LAMMPS:
|
There are two ways to implement TIP4P-like water in LAMMPS:
|
||||||
|
|
||||||
#. Use a specially written pair style that uses the :ref:`TIP3P geometry
|
#. Use a specially written pair style that uses the :ref:`TIP3P geometry
|
||||||
<tip3p_molecule>` without the point M. The point M location is then
|
<tip3p_molecule>` without the point M. The point M location is then
|
||||||
@ -21,7 +23,10 @@ There are two ways to implement TIP4P water in LAMMPS:
|
|||||||
computationally very efficient, but the charge distribution in space
|
computationally very efficient, but the charge distribution in space
|
||||||
is only correct within the tip4p labeled styles. So all other
|
is only correct within the tip4p labeled styles. So all other
|
||||||
computations using charges will "see" the negative charge incorrectly
|
computations using charges will "see" the negative charge incorrectly
|
||||||
on the oxygen atom.
|
located on the oxygen atom unless they are specially written for using
|
||||||
|
the TIP4P geometry internally as well, e.g. :doc:`compute dipole/tip4p
|
||||||
|
<compute_dipole>`, :doc:`fix efield/tip4p <fix_efield>`, or
|
||||||
|
:doc:`kspace_style pppm/tip4p <kspace_style>`.
|
||||||
|
|
||||||
This can be done with the following pair styles for Coulomb with a cutoff:
|
This can be done with the following pair styles for Coulomb with a cutoff:
|
||||||
|
|
||||||
@ -68,77 +73,90 @@ TIP4P/2005 model :ref:`(Abascal2) <Abascal2>` and a version of TIP4P
|
|||||||
parameters adjusted for use with a long-range Coulombic solver
|
parameters adjusted for use with a long-range Coulombic solver
|
||||||
(e.g. Ewald or PPPM in LAMMPS). Note that for implicit TIP4P models the
|
(e.g. Ewald or PPPM in LAMMPS). Note that for implicit TIP4P models the
|
||||||
OM distance is specified in the :doc:`pair_style <pair_style>` command,
|
OM distance is specified in the :doc:`pair_style <pair_style>` command,
|
||||||
not as part of the pair coefficients.
|
not as part of the pair coefficients. Also parameters for the OPC
|
||||||
|
model (:ref:`Izadi <Izadi>`) are provided.
|
||||||
|
|
||||||
.. list-table::
|
.. list-table::
|
||||||
:header-rows: 1
|
:header-rows: 1
|
||||||
:widths: 36 19 13 15 17
|
:widths: 40 12 12 14 11 11
|
||||||
|
|
||||||
* - Parameter
|
* - Parameter
|
||||||
- TIP4P (original)
|
- TIP4P (original)
|
||||||
- TIP4P/Ice
|
- TIP4P/Ice
|
||||||
- TIP4P/2005
|
- TIP4P/2005
|
||||||
- TIP4P (Ewald)
|
- TIP4P (Ewald)
|
||||||
|
- OPC
|
||||||
* - O mass (amu)
|
* - O mass (amu)
|
||||||
- 15.9994
|
- 15.9994
|
||||||
- 15.9994
|
- 15.9994
|
||||||
- 15.9994
|
- 15.9994
|
||||||
- 15.9994
|
- 15.9994
|
||||||
|
- 15.9994
|
||||||
* - H mass (amu)
|
* - H mass (amu)
|
||||||
- 1.008
|
- 1.008
|
||||||
- 1.008
|
- 1.008
|
||||||
- 1.008
|
- 1.008
|
||||||
- 1.008
|
- 1.008
|
||||||
|
- 1.008
|
||||||
* - O or M charge (:math:`e`)
|
* - O or M charge (:math:`e`)
|
||||||
- -1.040
|
- -1.040
|
||||||
- -1.1794
|
- -1.1794
|
||||||
- -1.1128
|
- -1.1128
|
||||||
- -1.04844
|
- -1.04844
|
||||||
|
- -1.3582
|
||||||
* - H charge (:math:`e`)
|
* - H charge (:math:`e`)
|
||||||
- 0.520
|
- 0.520
|
||||||
- 0.5897
|
- 0.5897
|
||||||
- 0.5564
|
- 0.5564
|
||||||
- 0.52422
|
- 0.52422
|
||||||
|
- 0.6791
|
||||||
* - LJ :math:`\epsilon` of OO (kcal/mole)
|
* - LJ :math:`\epsilon` of OO (kcal/mole)
|
||||||
- 0.1550
|
- 0.1550
|
||||||
- 0.21084
|
- 0.21084
|
||||||
- 0.1852
|
- 0.1852
|
||||||
- 0.16275
|
- 0.16275
|
||||||
|
- 0.21280
|
||||||
* - LJ :math:`\sigma` of OO (:math:`\AA`)
|
* - LJ :math:`\sigma` of OO (:math:`\AA`)
|
||||||
- 3.1536
|
- 3.1536
|
||||||
- 3.1668
|
- 3.1668
|
||||||
- 3.1589
|
- 3.1589
|
||||||
- 3.16435
|
- 3.16435
|
||||||
|
- 3.1660
|
||||||
* - LJ :math:`\epsilon` of HH, MM, OH, OM, HM (kcal/mole)
|
* - LJ :math:`\epsilon` of HH, MM, OH, OM, HM (kcal/mole)
|
||||||
- 0.0
|
- 0.0
|
||||||
- 0.0
|
- 0.0
|
||||||
- 0.0
|
- 0.0
|
||||||
- 0.0
|
- 0.0
|
||||||
|
- 0.0
|
||||||
* - LJ :math:`\sigma` of HH, MM, OH, OM, HM (:math:`\AA`)
|
* - LJ :math:`\sigma` of HH, MM, OH, OM, HM (:math:`\AA`)
|
||||||
- 1.0
|
- 1.0
|
||||||
- 1.0
|
- 1.0
|
||||||
- 1.0
|
- 1.0
|
||||||
- 1.0
|
- 1.0
|
||||||
|
- 1.0
|
||||||
* - :math:`r_0` of OH bond (:math:`\AA`)
|
* - :math:`r_0` of OH bond (:math:`\AA`)
|
||||||
- 0.9572
|
- 0.9572
|
||||||
- 0.9572
|
- 0.9572
|
||||||
- 0.9572
|
- 0.9572
|
||||||
- 0.9572
|
- 0.9572
|
||||||
|
- 0.8724
|
||||||
* - :math:`\theta_0` of HOH angle
|
* - :math:`\theta_0` of HOH angle
|
||||||
- 104.52\ :math:`^{\circ}`
|
- 104.52\ :math:`^{\circ}`
|
||||||
- 104.52\ :math:`^{\circ}`
|
- 104.52\ :math:`^{\circ}`
|
||||||
- 104.52\ :math:`^{\circ}`
|
- 104.52\ :math:`^{\circ}`
|
||||||
- 104.52\ :math:`^{\circ}`
|
- 104.52\ :math:`^{\circ}`
|
||||||
|
- 103.60\ :math:`^{\circ}`
|
||||||
* - OM distance (:math:`\AA`)
|
* - OM distance (:math:`\AA`)
|
||||||
- 0.15
|
- 0.15
|
||||||
- 0.1577
|
- 0.1577
|
||||||
- 0.1546
|
- 0.1546
|
||||||
- 0.1250
|
- 0.1250
|
||||||
|
- 0.1594
|
||||||
|
|
||||||
Note that the when using the TIP4P pair style, the neighbor list cutoff
|
Note that the when using a TIP4P pair style, the neighbor list cutoff
|
||||||
for Coulomb interactions is effectively extended by a distance 2 \* (OM
|
for Coulomb interactions is effectively extended by a distance 2 \* (OM
|
||||||
distance), to account for the offset distance of the fictitious charges
|
distance), to account for the offset distance of the fictitious charges
|
||||||
on O atoms in water molecules. Thus it is typically best in an
|
on O atoms in water molecules. Thus, it is typically best in an
|
||||||
efficiency sense to use a LJ cutoff >= Coulomb cutoff + 2\*(OM
|
efficiency sense to use a LJ cutoff >= Coulomb cutoff + 2\*(OM
|
||||||
distance), to shrink the size of the neighbor list. This leads to
|
distance), to shrink the size of the neighbor list. This leads to
|
||||||
slightly larger cost for the long-range calculation, so you can test the
|
slightly larger cost for the long-range calculation, so you can test the
|
||||||
@ -149,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
|
Below is the code for a LAMMPS input file using the implicit method and
|
||||||
the :ref:`TIP3P molecule file <tip3p_molecule>`. Because the TIP4P
|
the :ref:`TIP3P molecule file <tip3p_molecule>`. Because the TIP4P
|
||||||
charges are different from TIP3P they need to be reset (or the molecule
|
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
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
@ -192,6 +212,94 @@ file changed):
|
|||||||
run 20000
|
run 20000
|
||||||
write_data tip4p-implicit.data nocoeff
|
write_data tip4p-implicit.data nocoeff
|
||||||
|
|
||||||
|
When constructing an OPC model, we cannot use the ``tip3p.mol`` file due
|
||||||
|
to the different geometry. Below is a molecule file providing the 3
|
||||||
|
sites of an implicit OPC geometry for use with TIP4P styles. Note, that
|
||||||
|
the "Shake" and "Special" sections are missing here. Those will be
|
||||||
|
auto-generated by LAMMPS when the molecule file is loaded *after* the
|
||||||
|
simulation box has been created. These sections are required only when
|
||||||
|
the molecule file is loaded *before*.
|
||||||
|
|
||||||
|
.. _opc3p_molecule:
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
# Water molecule. 3 point geometry for OPC model
|
||||||
|
|
||||||
|
3 atoms
|
||||||
|
2 bonds
|
||||||
|
1 angles
|
||||||
|
|
||||||
|
Coords
|
||||||
|
|
||||||
|
1 0.00000 -0.06037 0.00000
|
||||||
|
2 0.68558 0.50250 0.00000
|
||||||
|
3 -0.68558 0.50250 0.00000
|
||||||
|
|
||||||
|
Types
|
||||||
|
|
||||||
|
1 1 # O
|
||||||
|
2 2 # H
|
||||||
|
3 2 # H
|
||||||
|
|
||||||
|
Charges
|
||||||
|
|
||||||
|
1 -1.3582
|
||||||
|
2 0.6791
|
||||||
|
3 0.6791
|
||||||
|
|
||||||
|
Bonds
|
||||||
|
|
||||||
|
1 1 1 2
|
||||||
|
2 1 1 3
|
||||||
|
|
||||||
|
Angles
|
||||||
|
|
||||||
|
1 1 2 1 3
|
||||||
|
|
||||||
|
Below is a LAMMPS input file using the implicit method to implement
|
||||||
|
the OPC model using the molecule file from above and including the
|
||||||
|
PPPM long-range Coulomb solver.
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
units real
|
||||||
|
atom_style full
|
||||||
|
region box block -5 5 -5 5 -5 5
|
||||||
|
create_box 2 box bond/types 1 angle/types 1 &
|
||||||
|
extra/bond/per/atom 2 extra/angle/per/atom 1 extra/special/per/atom 2
|
||||||
|
|
||||||
|
mass 1 15.9994
|
||||||
|
mass 2 1.008
|
||||||
|
|
||||||
|
pair_style lj/cut/tip4p/long 1 2 1 1 0.1594 12.0
|
||||||
|
pair_coeff 1 1 0.2128 3.166
|
||||||
|
pair_coeff 2 2 0.0 1.0
|
||||||
|
|
||||||
|
bond_style zero
|
||||||
|
bond_coeff 1 0.8724
|
||||||
|
|
||||||
|
angle_style zero
|
||||||
|
angle_coeff 1 103.6
|
||||||
|
|
||||||
|
kspace_style pppm/tip4p 1.0e-5
|
||||||
|
|
||||||
|
molecule water opc3p.mol # this file has the OPC geometry but is without M
|
||||||
|
create_atoms 0 random 33 34564 NULL mol water 25367 overlap 1.33
|
||||||
|
|
||||||
|
fix rigid all shake 0.001 10 10000 b 1 a 1
|
||||||
|
minimize 0.0 0.0 1000 10000
|
||||||
|
|
||||||
|
reset_timestep 0
|
||||||
|
timestep 1.0
|
||||||
|
velocity all create 300.0 5463576
|
||||||
|
fix integrate all nvt temp 300 300 100.0
|
||||||
|
|
||||||
|
thermo_style custom step temp press etotal pe
|
||||||
|
|
||||||
|
thermo 1000
|
||||||
|
run 20000
|
||||||
|
write_data opc-implicit.data nocoeff
|
||||||
|
|
||||||
Below is the code for a LAMMPS input file using the explicit method and
|
Below is the code for a LAMMPS input file using the explicit method and
|
||||||
a TIP4P molecule file. Because of using :doc:`fix rigid/small
|
a TIP4P molecule file. Because of using :doc:`fix rigid/small
|
||||||
<fix_rigid>` no bonds need to be defined and thus no extra storage needs
|
<fix_rigid>` no bonds need to be defined and thus no extra storage needs
|
||||||
@ -279,3 +387,8 @@ Phys, 79, 926 (1983).
|
|||||||
|
|
||||||
**(Abascal2)** Abascal, J Chem Phys, 123, 234505 (2005)
|
**(Abascal2)** Abascal, J Chem Phys, 123, 234505 (2005)
|
||||||
https://doi.org/10.1063/1.2121687
|
https://doi.org/10.1063/1.2121687
|
||||||
|
|
||||||
|
.. _Izadi:
|
||||||
|
|
||||||
|
**(Izadi)** Izadi, Anandakrishnan, Onufriev, J. Phys. Chem. Lett., 5, 21, 3863 (2014)
|
||||||
|
https://doi.org/10.1021/jz501780a
|
||||||
|
|||||||
@ -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.
|
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
|
Also a :doc:`neigh_modify exclude <neigh_modify>` command is added to
|
||||||
exclude computing intramolecular non-bonded interactions, since those
|
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
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
|||||||
@ -249,23 +249,23 @@ as follows:
|
|||||||
|
|
||||||
.. math::
|
.. math::
|
||||||
|
|
||||||
a = & {\rm lx} \\
|
a = & \mathrm{lx} \\
|
||||||
b^2 = & {\rm ly}^2 + {\rm xy}^2 \\
|
b^2 = & \mathrm{ly}^2 + \mathrm{xy}^2 \\
|
||||||
c^2 = & {\rm lz}^2 + {\rm xz}^2 + {\rm yz}^2 \\
|
c^2 = & \mathrm{lz}^2 + \mathrm{xz}^2 + \mathrm{yz}^2 \\
|
||||||
\cos{\alpha} = & \frac{{\rm xy}*{\rm xz} + {\rm ly}*{\rm yz}}{b*c} \\
|
\cos{\alpha} = & \frac{\mathrm{xy}*\mathrm{xz} + \mathrm{ly}*\mathrm{yz}}{b*c} \\
|
||||||
\cos{\beta} = & \frac{\rm xz}{c} \\
|
\cos{\beta} = & \frac{\mathrm{xz}}{c} \\
|
||||||
\cos{\gamma} = & \frac{\rm xy}{b} \\
|
\cos{\gamma} = & \frac{\mathrm{xy}}{b} \\
|
||||||
|
|
||||||
The inverse relationship can be written as follows:
|
The inverse relationship can be written as follows:
|
||||||
|
|
||||||
.. math::
|
.. math::
|
||||||
|
|
||||||
{\rm lx} = & a \\
|
\mathrm{lx} = & a \\
|
||||||
{\rm xy} = & b \cos{\gamma} \\
|
\mathrm{xy} = & b \cos{\gamma} \\
|
||||||
{\rm xz} = & c \cos{\beta}\\
|
\mathrm{xz} = & c \cos{\beta}\\
|
||||||
{\rm ly}^2 = & b^2 - {\rm xy}^2 \\
|
\mathrm{ly}^2 = & b^2 - \mathrm{xy}^2 \\
|
||||||
{\rm yz} = & \frac{b*c \cos{\alpha} - {\rm xy}*{\rm xz}}{\rm ly} \\
|
\mathrm{yz} = & \frac{b*c \cos{\alpha} - \mathrm{xy}*\mathrm{xz}}{\mathrm{ly}} \\
|
||||||
{\rm lz}^2 = & c^2 - {\rm xz}^2 - {\rm yz}^2 \\
|
\mathrm{lz}^2 = & c^2 - \mathrm{xz}^2 - \mathrm{yz}^2 \\
|
||||||
|
|
||||||
The values of *a*, *b*, *c*, :math:`\alpha` , :math:`\beta`, and
|
The values of *a*, *b*, *c*, :math:`\alpha` , :math:`\beta`, and
|
||||||
:math:`\gamma` can be printed out or accessed by computes using the
|
:math:`\gamma` can be printed out or accessed by computes using the
|
||||||
|
|||||||
@ -12,26 +12,17 @@ several advantages:
|
|||||||
LAMMPS. For that, you should first create your own :doc:`fork on
|
LAMMPS. For that, you should first create your own :doc:`fork on
|
||||||
GitHub <Howto_github>`, though.
|
GitHub <Howto_github>`, though.
|
||||||
|
|
||||||
You must have `git <git_>`_ installed on your system to use the
|
You must have `git <git_>`_ installed on your system to use the commands
|
||||||
commands explained below to communicate with the git servers on
|
explained below to communicate with the git servers on GitHub.
|
||||||
GitHub. For people still using subversion (svn), GitHub also
|
|
||||||
provides `limited support for subversion clients <svn_>`_.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
As of October 2016, the official home of public LAMMPS development is
|
|
||||||
on GitHub. The previously advertised LAMMPS git repositories on
|
|
||||||
git.lammps.org and bitbucket.org are now offline or deprecated.
|
|
||||||
|
|
||||||
.. _git: https://git-scm.com
|
.. _git: https://git-scm.com
|
||||||
.. _svn: https://help.github.com/en/github/importing-your-projects-to-github/working-with-subversion-on-github
|
|
||||||
|
|
||||||
You can follow the LAMMPS development on 4 different git branches:
|
You can follow the LAMMPS development on 4 different git branches:
|
||||||
|
|
||||||
* **develop** : this branch follows the ongoing development and is
|
* **develop** : this branch follows the ongoing development and is
|
||||||
updated with every merge commit of a pull request
|
updated with every merge commit of a pull request
|
||||||
* **release** : this branch is updated with every "feature release";
|
* **release** : this branch is updated with every "feature release"
|
||||||
updates are always "fast-forward" merges from *develop*
|
and updates are always "fast-forward" merges from *develop*
|
||||||
* **maintenance** : this branch collects back-ported bug fixes from the
|
* **maintenance** : this branch collects back-ported bug fixes from the
|
||||||
*develop* branch to the *stable* branch. It is used to update the
|
*develop* branch to the *stable* branch. It is used to update the
|
||||||
*stable* branch for "stable update releases".
|
*stable* branch for "stable update releases".
|
||||||
|
|||||||
@ -5,8 +5,7 @@ LAMMPS can be downloaded, built, and configured for macOS with `Homebrew
|
|||||||
<homebrew_>`_. (Alternatively, see the installation instructions for
|
<homebrew_>`_. (Alternatively, see the installation instructions for
|
||||||
:doc:`downloading an executable via Conda <Install_conda>`.) The
|
:doc:`downloading an executable via Conda <Install_conda>`.) The
|
||||||
following LAMMPS packages are unavailable at this time because of
|
following LAMMPS packages are unavailable at this time because of
|
||||||
additional requirements not yet met: GPU, KOKKOS, MSCG, POEMS,
|
additional requirements not yet met: GPU, KOKKOS.
|
||||||
VORONOI.
|
|
||||||
|
|
||||||
After installing Homebrew, you can install LAMMPS on your system with
|
After installing Homebrew, you can install LAMMPS on your system with
|
||||||
the following commands:
|
the following commands:
|
||||||
|
|||||||
@ -84,8 +84,9 @@ lammps.org". General questions about LAMMPS should be posted in the
|
|||||||
|
|
||||||
\normalsize
|
\normalsize
|
||||||
|
|
||||||
Past developers include Paul Crozier and Mark Stevens, both at SNL,
|
Past core developers include Paul Crozier and Mark Stevens, both at SNL,
|
||||||
and Ray Shan, now at Materials Design.
|
and Ray Shan while at SNL and later at Materials Design, now at Thermo
|
||||||
|
Fisher Scientific.
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
|||||||
@ -20,13 +20,21 @@ acceleration.
|
|||||||
.. _lws: https://www.lammps.org
|
.. _lws: https://www.lammps.org
|
||||||
.. _omp: https://www.openmp.org
|
.. _omp: https://www.openmp.org
|
||||||
|
|
||||||
LAMMPS is written in C++ and requires a compiler that is at least
|
LAMMPS is written in C++ and currently requires a compiler that is at
|
||||||
compatible with the C++-11 standard. Earlier versions were written in
|
least compatible with the C++-11 standard. Earlier versions were
|
||||||
F77, F90, and C++-98. See the `History page
|
written in F77, F90, and C++-98. See the `History page
|
||||||
<https://www.lammps.org/history.html>`_ of the website for details. All
|
<https://www.lammps.org/history.html>`_ of the website for details. All
|
||||||
versions can be downloaded as source code from the `LAMMPS website
|
versions can be downloaded as source code from the `LAMMPS website
|
||||||
<lws_>`_.
|
<lws_>`_.
|
||||||
|
|
||||||
|
Through a :ref:`C language API <lammps_c_api>` LAMMPS functionality can
|
||||||
|
be accessed and managed from other programming languages rather than
|
||||||
|
running the LAMMPS executable. Ready to use modules for :ref:`Python
|
||||||
|
<lammps_python_api>` and :ref:`Fortran <lammps_fortran_api>` exist, and
|
||||||
|
an example :ref:`SWIG interface file <swig>` as well as example C files
|
||||||
|
for dynamically loading LAMMPS as a shared library into other
|
||||||
|
executables are provided.
|
||||||
|
|
||||||
LAMMPS is designed to be easy to modify or extend with new capabilities,
|
LAMMPS is designed to be easy to modify or extend with new capabilities,
|
||||||
such as new force fields, atom types, boundary conditions, or
|
such as new force fields, atom types, boundary conditions, or
|
||||||
diagnostics. See the :doc:`Modify` section of for more details.
|
diagnostics. See the :doc:`Modify` section of for more details.
|
||||||
|
|||||||
@ -13,10 +13,14 @@ Programming language standards
|
|||||||
|
|
||||||
Most of the C++ code currently requires a compiler compatible with the
|
Most of the C++ code currently requires a compiler compatible with the
|
||||||
C++11 standard, the KOKKOS package currently requires C++17. Most of
|
C++11 standard, the KOKKOS package currently requires C++17. Most of
|
||||||
the Python code is written to be compatible with Python 3.5 or later or
|
the Python code is written to be compatible with Python 3.6 or later.
|
||||||
Python 2.7. Some Python scripts *require* Python 3 and a few others
|
|
||||||
still need to be ported from Python 2 to Python 3.
|
|
||||||
|
|
||||||
|
.. deprecated:: 2Apr2025
|
||||||
|
|
||||||
|
Python 2.x is no longer supported and trying to use it, e.g. for the
|
||||||
|
LAMMPS Python module should result in an error. If you come across
|
||||||
|
some part of the LAMMPS distribution that is not (yet) compatible with
|
||||||
|
Python 3, please notify the LAMMPS developers.
|
||||||
|
|
||||||
Build systems
|
Build systems
|
||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
@ -24,8 +28,9 @@ Build systems
|
|||||||
LAMMPS can be compiled from source code using a (traditional) build
|
LAMMPS can be compiled from source code using a (traditional) build
|
||||||
system based on shell scripts, a few shell utilities (grep, sed, cat,
|
system based on shell scripts, a few shell utilities (grep, sed, cat,
|
||||||
tr) and the GNU make program. This requires running within a Bourne
|
tr) and the GNU make program. This requires running within a Bourne
|
||||||
shell (``/bin/sh``). Alternatively, a build system with different back ends
|
shell (``/bin/sh`` or ``/bin/bash``). Alternatively, a build system
|
||||||
can be created using CMake. CMake must be at least version 3.16.
|
with different back ends can be created using CMake. CMake must be
|
||||||
|
at least version 3.16.
|
||||||
|
|
||||||
Operating systems
|
Operating systems
|
||||||
^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^
|
||||||
@ -36,11 +41,18 @@ Also, compilation and correct execution on macOS and Windows (using
|
|||||||
Microsoft Visual C++) is checked automatically for the largest part of
|
Microsoft Visual C++) is checked automatically for the largest part of
|
||||||
the source code. Some (optional) features are not compatible with all
|
the source code. Some (optional) features are not compatible with all
|
||||||
operating systems, either through limitations of the corresponding
|
operating systems, either through limitations of the corresponding
|
||||||
LAMMPS source code or through incompatibilities of source code or
|
LAMMPS source code or through incompatibilities or build system
|
||||||
build system of required external libraries or packages.
|
limitations of required external libraries or packages.
|
||||||
|
|
||||||
Executables for Windows may be created natively using either Cygwin or
|
Executables for Windows may be created either natively using Cygwin,
|
||||||
Visual Studio or with a Linux to Windows MinGW cross-compiler.
|
MinGW, Intel, Clang, or Microsoft Visual C++ compilers, or with a Linux
|
||||||
|
to Windows MinGW cross-compiler. Native compilation is supported using
|
||||||
|
Microsoft Visual Studio or a terminal window (using the CMake build
|
||||||
|
system).
|
||||||
|
|
||||||
|
Executables for macOS may be created either using Xcode or GNU compilers
|
||||||
|
installed with Homebrew. In the latter case, building of LAMMPS through
|
||||||
|
Homebrew instead of a manual compile is also possible.
|
||||||
|
|
||||||
Additionally, FreeBSD and Solaris have been tested successfully to
|
Additionally, FreeBSD and Solaris have been tested successfully to
|
||||||
run LAMMPS and produce results consistent with those on Linux.
|
run LAMMPS and produce results consistent with those on Linux.
|
||||||
@ -57,8 +69,9 @@ CPU architectures
|
|||||||
^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The primary CPU architecture for running LAMMPS is 64-bit x86, but also
|
The primary CPU architecture for running LAMMPS is 64-bit x86, but also
|
||||||
32-bit x86, and 64-bit ARM and PowerPC (64-bit, Little Endian) are
|
64-bit ARM and PowerPC (64-bit, Little Endian) are currently regularly
|
||||||
regularly tested.
|
tested. Further architectures are tested by Linux distributions that
|
||||||
|
bundle LAMMPS.
|
||||||
|
|
||||||
Portability compliance
|
Portability compliance
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 94 KiB |
BIN
doc/src/JPG/butane.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
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: 106 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 |