Compare commits
734 Commits
patch_15Ma
...
patch_31Ju
| Author | SHA1 | Date | |
|---|---|---|---|
| 8803183b8b | |||
| 11a3fd6ce4 | |||
| e3b1673c8c | |||
| 69a5ff2240 | |||
| 2b288bc9e0 | |||
| 882b2301bb | |||
| 528ec75f88 | |||
| f5bf86b32d | |||
| d4503a05a4 | |||
| 47fc31d005 | |||
| 2d93a713e2 | |||
| 6d94fc1b3d | |||
| 602b4a47c0 | |||
| 8fa4efa08e | |||
| 3eadfa15ef | |||
| 3548551479 | |||
| d1e8d7cbf8 | |||
| b0bccfd8a1 | |||
| 3559c25bd9 | |||
| 3fdadb5875 | |||
| 7ab7691c51 | |||
| 3ee86470bb | |||
| d201d6c2d1 | |||
| 88523fdd6e | |||
| c9f3f99ee8 | |||
| 4289dbb78d | |||
| d2c4989dbf | |||
| edf64ed16c | |||
| 9004ebc3fe | |||
| 90c678849a | |||
| 9f276be0e5 | |||
| 6833d6def6 | |||
| 5cb02781c2 | |||
| 180c90acfb | |||
| 2e6850835f | |||
| 7043b9f620 | |||
| 91e0bebdfa | |||
| d688624335 | |||
| 191044ab94 | |||
| c03e9c9711 | |||
| 2ffc35297b | |||
| 514608b82f | |||
| ea4107c4b4 | |||
| 0f059c56f9 | |||
| 0820ebc143 | |||
| 0beb39c1af | |||
| 2afc498a2b | |||
| e0b20c4fd4 | |||
| 6a1b61637b | |||
| 96e0b03ede | |||
| 5307558727 | |||
| a0abd270b5 | |||
| 838ea2eca1 | |||
| 2fba3d027a | |||
| 0f10c55c1c | |||
| 9477df4244 | |||
| 863ae35658 | |||
| 94126e5424 | |||
| a0e005f93c | |||
| a5a1e27fb1 | |||
| 35cee904d7 | |||
| f2dbe186ca | |||
| e816f0e7a6 | |||
| 0ba854b4ab | |||
| f4a984175c | |||
| 17d6b317a7 | |||
| 6a5902ec48 | |||
| 010cb0edf3 | |||
| 0bb9df76c2 | |||
| 8d4f189699 | |||
| ca1fece850 | |||
| e8d891c0dd | |||
| 47689b4ad3 | |||
| 179b507107 | |||
| 9bedd0d0d0 | |||
| 52e1755464 | |||
| 60dfa7daf8 | |||
| fe83e4de2e | |||
| fadb40051b | |||
| ab74bfef20 | |||
| 7c1fedff18 | |||
| 081780706c | |||
| d0b442aca1 | |||
| df139bf32b | |||
| ca291f1015 | |||
| 183d92cad7 | |||
| 4586fd50af | |||
| 18730e0f92 | |||
| f86d2c9934 | |||
| 5ca93e3651 | |||
| b1a5444815 | |||
| 114a754a72 | |||
| 6710cc4052 | |||
| 6e9252c847 | |||
| 1cebc5516e | |||
| 0be034ea46 | |||
| aec43304f4 | |||
| b5a066ecd0 | |||
| d08477cc5f | |||
| c098582df8 | |||
| eaf2b59b1b | |||
| 3c53efb1ca | |||
| d59737299c | |||
| 6ee38d4887 | |||
| 24d9c537c0 | |||
| cb9facea8b | |||
| afab7d99c1 | |||
| 1d310ad73e | |||
| 20843f7476 | |||
| be1522d16d | |||
| 985c959a91 | |||
| 4760cf868d | |||
| 4400257783 | |||
| 3887a7f3d7 | |||
| 2d2c1954db | |||
| 3bc4a07c74 | |||
| be86db9dd9 | |||
| dd4368dd1b | |||
| ce9c5e41a8 | |||
| b6b802d0b1 | |||
| 320be3bcef | |||
| 72797b3063 | |||
| 36ac47c2c6 | |||
| f5beb418e8 | |||
| 243ce8dbfc | |||
| c831cee21d | |||
| f2978475af | |||
| 03d26f6f6f | |||
| f4df51763d | |||
| 9239c9dedb | |||
| d52540ea31 | |||
| a50d57bceb | |||
| 981b9a1f7a | |||
| 895d4fa927 | |||
| 502fbfb78a | |||
| 276e3b2df1 | |||
| ceb2ce5814 | |||
| 67b74aea63 | |||
| e72aef2a96 | |||
| c7bccc5e7a | |||
| d730ef5b19 | |||
| 44c9d3c1be | |||
| 1de00aaab0 | |||
| 8526e7a4cd | |||
| 4f7c95d87e | |||
| 4c328bf846 | |||
| babbdaff2c | |||
| c2643a519e | |||
| 0ee0ea109c | |||
| 57fd9723a5 | |||
| e2a7cdc4f7 | |||
| 92b53c7bc2 | |||
| 7bf9757755 | |||
| 3acb09e3b1 | |||
| e5fffa59ef | |||
| 87154da7f5 | |||
| 8cf1084dec | |||
| 92518e53f4 | |||
| 22b73a316f | |||
| 60ebc08d0f | |||
| 856efa28aa | |||
| 02b0fb454f | |||
| bcf600d781 | |||
| 06275b03c0 | |||
| 354f4d19fd | |||
| 5b4f77b919 | |||
| b61b48235b | |||
| 658cda9b67 | |||
| 0a90032b4c | |||
| 2b5a6d3b7f | |||
| 68626f577b | |||
| 6742f371ad | |||
| 61220f9b6c | |||
| 3e90b82c8e | |||
| 3d157e5ab4 | |||
| a1f0c0079d | |||
| e832b5d50b | |||
| a51479a62b | |||
| 08ed046a69 | |||
| 2f64615087 | |||
| 3a10486a40 | |||
| b4f60ef477 | |||
| 944c3bc91d | |||
| 48c7356743 | |||
| 9718b99af9 | |||
| 9f6bbe1d8e | |||
| 3349ed0013 | |||
| 358cec9a0c | |||
| 8e2f3e4883 | |||
| dbd0158d3f | |||
| b1f8c3f38a | |||
| b5fea1f4a7 | |||
| 01524d9850 | |||
| ca4b26ddf8 | |||
| d05787ab99 | |||
| 7109c1013a | |||
| 1a0662c386 | |||
| 789d6a991e | |||
| 39873fb7a3 | |||
| 956d21ec0e | |||
| ea68db964a | |||
| 2ca2d053fd | |||
| a1a7754961 | |||
| 941607595a | |||
| 89af88bd10 | |||
| c5044d6484 | |||
| 872d43f02f | |||
| 0eba1c1cbc | |||
| 0f691de031 | |||
| 054ff97a51 | |||
| 93748a18ae | |||
| d6ed4ee1b1 | |||
| 39315268e8 | |||
| 5236497932 | |||
| 2fd327d057 | |||
| c2dc624ec9 | |||
| 06dcc9e283 | |||
| 691fc357a4 | |||
| 53b8e329a1 | |||
| 64faa6c667 | |||
| 0d15c57fee | |||
| 5013fd699f | |||
| 30086950b8 | |||
| 39c8a7de6e | |||
| 7a62717051 | |||
| 74414afdea | |||
| 1f47da6c51 | |||
| cbdc5dba13 | |||
| cfaa537296 | |||
| 31e19e0824 | |||
| 03418be645 | |||
| 60a808d25b | |||
| 5b7ae3713b | |||
| 65e281d661 | |||
| 13d4fbdcfb | |||
| b469ff6791 | |||
| 15e1b39531 | |||
| 57a5588549 | |||
| e5af9db84c | |||
| 35e2401099 | |||
| 61ed3b65b7 | |||
| 316554297c | |||
| a00d38572e | |||
| 4db4833395 | |||
| c00f2adb42 | |||
| e123b6f02e | |||
| b6bb980980 | |||
| 9f15ed1e61 | |||
| 2c0eeeb976 | |||
| 5d4016c285 | |||
| 5fffccb076 | |||
| 66390882fd | |||
| 46a9772a6d | |||
| d07a49aeea | |||
| 7efb42f0d3 | |||
| 0d4bb86183 | |||
| 8dcb42d49c | |||
| 2f72b9f120 | |||
| ce6fa0118a | |||
| b4cf4b1ed7 | |||
| 732bd937e0 | |||
| 49f27573a7 | |||
| fa15bf5edd | |||
| e63fe1fe84 | |||
| 95cb995336 | |||
| 416911aa7e | |||
| 6cf3bb3e4e | |||
| 5b3a15bd94 | |||
| 256531a29a | |||
| bb5a1c5205 | |||
| 00d820dcf9 | |||
| 63dcd999d8 | |||
| 7967cb1133 | |||
| 0c4af8b820 | |||
| 11708c8f96 | |||
| 9984cbc99a | |||
| 350d8f5812 | |||
| fc1d8f2cbf | |||
| 0761c4dbb9 | |||
| 968335d4fd | |||
| 6fc5810bb4 | |||
| 41e8cf3d69 | |||
| b727f0b126 | |||
| 63fa63fb1c | |||
| f7329c0f43 | |||
| 7547e1dae6 | |||
| 42c31227d9 | |||
| 559c187964 | |||
| 61a7730bb5 | |||
| a8d4ac74fa | |||
| e91539d4b5 | |||
| 2443c8ad13 | |||
| 32728375b9 | |||
| fb5e7e6f3b | |||
| e9e7d995b2 | |||
| 39f5b8c734 | |||
| af8103433c | |||
| 62bddd47ee | |||
| 483b1dbef5 | |||
| 44372f5236 | |||
| e0c04355bb | |||
| e8487ec0b9 | |||
| 78af594381 | |||
| e29361523f | |||
| 3e88dacd3f | |||
| 33d3bd7a8d | |||
| 8fdba2ded1 | |||
| 96744c4933 | |||
| 31cbccda85 | |||
| a720aedabc | |||
| 5e3a705911 | |||
| ea2e73119d | |||
| 5eabc82024 | |||
| d918432047 | |||
| 73968f10d5 | |||
| 400af0edac | |||
| 557a1274e4 | |||
| df7c56d881 | |||
| 378474c4e6 | |||
| a5cb6ddd4a | |||
| 2c119551f7 | |||
| 123bd57376 | |||
| 4ec3a508fc | |||
| 86a9e4fca2 | |||
| 9c53a5ca3f | |||
| 932f052cbf | |||
| 2c0a66b7f8 | |||
| 03099d6e54 | |||
| 121947e79d | |||
| 48220b39b5 | |||
| 1e2aeed2ac | |||
| 60adaa24cb | |||
| 333bec0222 | |||
| 84e156d380 | |||
| 312a1fa004 | |||
| 08ac695a06 | |||
| 17602b4c26 | |||
| f7507512b1 | |||
| ff36bad099 | |||
| 7f342b1cd0 | |||
| 2be0fd6180 | |||
| 8c3d18520d | |||
| f1dfcaf514 | |||
| f6319146b0 | |||
| e08146c31f | |||
| 2fd924562b | |||
| 61ddc98a5a | |||
| 6a6d08e18e | |||
| 8fd1aaba7e | |||
| 50e76ff7a1 | |||
| 423eebda25 | |||
| f6842e643e | |||
| 5f7c4fb668 | |||
| 483353a017 | |||
| 86d878a7eb | |||
| 4284a4fac4 | |||
| b653536750 | |||
| 1047d8f80e | |||
| c8a2f61c16 | |||
| 0ddcc023a5 | |||
| f2380a24ef | |||
| 13237155c8 | |||
| 7f26862f98 | |||
| 826a14f54a | |||
| 7afcfccf48 | |||
| a36d2573cf | |||
| 8b49cac86a | |||
| 2159a8c44a | |||
| 3e93881e44 | |||
| bfd0c4228d | |||
| cf008c163d | |||
| d150feb41a | |||
| db13fedb89 | |||
| 94e1f87cb8 | |||
| 881f9ff043 | |||
| b5d4cf4bfd | |||
| d10fdda676 | |||
| 6d54cf6a07 | |||
| bfe6cc29e8 | |||
| 36649f0534 | |||
| 171d74f2f2 | |||
| e42e1e64a8 | |||
| c9160e66f2 | |||
| b2ba0550d7 | |||
| f31faafeec | |||
| 493269431c | |||
| 3b6cc29f64 | |||
| c6d0f807b5 | |||
| 27d1f79fe3 | |||
| 065638edba | |||
| c557c7492b | |||
| ac82aa754b | |||
| c9cb6e3658 | |||
| 7f00cf8c12 | |||
| a6f6c9bed0 | |||
| 22e036a645 | |||
| d08867ce0a | |||
| c11caf4509 | |||
| 33be7f259b | |||
| 27d83b878d | |||
| 17fa2f787b | |||
| 4a22e3bf70 | |||
| f81c9c5322 | |||
| 58f9380c45 | |||
| dbfd1fd0e7 | |||
| f190647ab4 | |||
| 08cee18f32 | |||
| 88994d813a | |||
| 7a56a4be24 | |||
| 1bb18ebde4 | |||
| c79044c361 | |||
| c460d05bc6 | |||
| 0613c10395 | |||
| a01421db99 | |||
| 128d021c10 | |||
| f1034e982d | |||
| 6760866f44 | |||
| 17bfed3590 | |||
| bc224bc66e | |||
| c9fc83ef6f | |||
| f54ad09668 | |||
| 599ef78161 | |||
| 26347ec80c | |||
| 959da9de01 | |||
| f8f8e441b9 | |||
| bb11344424 | |||
| e754fb80a4 | |||
| 98fbaef406 | |||
| d98c105d34 | |||
| 961dcfc261 | |||
| 81cdce9b04 | |||
| 995b6b31a2 | |||
| e9666f585f | |||
| f4f4a7c850 | |||
| 5fc3081a55 | |||
| a39a35af20 | |||
| 1452d3d25b | |||
| 2dea4eb0e9 | |||
| 5d73b0790f | |||
| 93fd33aad9 | |||
| 6536399fc3 | |||
| 2f29bd29f4 | |||
| b1458ceebf | |||
| 92615bda3a | |||
| 4c0cd0a019 | |||
| fd93c27dcb | |||
| 4178c5167b | |||
| fd20a0606a | |||
| 75e2981bda | |||
| 98d9a9a4d2 | |||
| e73b34a5b1 | |||
| 3611cfdaf8 | |||
| 7fab12c36f | |||
| ac57b41b4d | |||
| 43e3c1520b | |||
| e7116c8680 | |||
| 4d7d3a5d53 | |||
| c1550ba29b | |||
| 5fb505ca8c | |||
| 67a1a63f5f | |||
| 65b87fa278 | |||
| c5c03230cb | |||
| be5d3d6a19 | |||
| f8e257d219 | |||
| 3f523ea906 | |||
| a973700295 | |||
| daa53e3008 | |||
| 7a33d1e328 | |||
| 0559e155f2 | |||
| 0b25d2feef | |||
| 1c1491eebf | |||
| 400751f30f | |||
| 4fbf96a353 | |||
| 1dc8bb163d | |||
| bb0240d8eb | |||
| fd592d510f | |||
| dbafb92dd5 | |||
| 83060f0902 | |||
| fd55d7d367 | |||
| 3d5db63381 | |||
| 42b0cb5e3e | |||
| 4cee333c07 | |||
| 7f4c611e21 | |||
| fe29572737 | |||
| 9421466f57 | |||
| 8d985e53f4 | |||
| e72ac92a7f | |||
| 3e2f3a8058 | |||
| 72b295d7f4 | |||
| fa76472135 | |||
| 664b938ed1 | |||
| 9a428217d9 | |||
| 22fd12b56c | |||
| b368b11d60 | |||
| 591e6836fd | |||
| 4ac100fe69 | |||
| 4ecd81f81b | |||
| 203c6d122b | |||
| e788d32678 | |||
| ae59ffe83e | |||
| 99a8d3c2ed | |||
| ca1445788e | |||
| 0908bd7aaf | |||
| 239dfe163c | |||
| cea1bd9cd9 | |||
| 31dc5dbb51 | |||
| 9e3dc26599 | |||
| 8da75c2040 | |||
| 85999fc4a7 | |||
| 73fa8d4055 | |||
| bd237a05b8 | |||
| 4941f11ad4 | |||
| afab5ef303 | |||
| a7c02e699e | |||
| 8fed39d726 | |||
| b9e10d55e2 | |||
| 1f1a0f95b2 | |||
| 61e9dc4c8d | |||
| b53df3dd63 | |||
| 56e3b1d1f4 | |||
| fde7e2de3c | |||
| e2391edce6 | |||
| f7026491f1 | |||
| 40a2f275c2 | |||
| e549f911f7 | |||
| 34dca6dc79 | |||
| 2ebc40deb3 | |||
| e9b4ab7363 | |||
| 8e43a45925 | |||
| 92f078cfff | |||
| 708052dc81 | |||
| 0849e03d1b | |||
| 045c312c49 | |||
| 47c6cd86f2 | |||
| 27cd78b96d | |||
| dd97a7540e | |||
| 272c536326 | |||
| 0b13fbe733 | |||
| 960a975e2a | |||
| 021f0c1fc6 | |||
| 5d96ecff25 | |||
| c76b79f021 | |||
| a981626948 | |||
| 5f79a9ef80 | |||
| 674e3975a8 | |||
| d0286b3de1 | |||
| 983f3adbb4 | |||
| 58a88dff95 | |||
| 0ba38aa072 | |||
| 2e63280f87 | |||
| 68eab23cf8 | |||
| 3b7c15a8b2 | |||
| 6175f2dce8 | |||
| dc1e31506e | |||
| 68d69955d0 | |||
| 5f657b9184 | |||
| 76900b8325 | |||
| 3e4fd3dade | |||
| 3e05b983c1 | |||
| d8a30a9697 | |||
| 972a7a5c4d | |||
| 311aebf7ff | |||
| 16a254f6bd | |||
| 80d906d445 | |||
| 8b169d97f5 | |||
| f73c848ee4 | |||
| 4243af30d7 | |||
| 9d51ee17b0 | |||
| edecd2b760 | |||
| df1308ad92 | |||
| c9fe5810c1 | |||
| 24a63f0f31 | |||
| c903a110fe | |||
| 113b8b4be2 | |||
| 02e7dd5716 | |||
| 1a5c3c6dcb | |||
| daac3f7102 | |||
| 3bf0a4ba63 | |||
| 9cc16c4f33 | |||
| 8dcd6fc48c | |||
| a48f1cbf00 | |||
| d3cbccff35 | |||
| 29d36ffec0 | |||
| fec2f8f69b | |||
| c0cfceb95c | |||
| 12fcf5f5ef | |||
| cb8d89855d | |||
| b88158fc3b | |||
| 3b60686827 | |||
| c8d50c04a4 | |||
| e3e5a962b0 | |||
| 35be1724e3 | |||
| d717101e94 | |||
| e44c877738 | |||
| b3a01694b7 | |||
| eb6287d2e8 | |||
| 4619018ead | |||
| e133c60ff5 | |||
| 97be57be7b | |||
| 5523c9e7f6 | |||
| c2a200fe85 | |||
| 264f6e1630 | |||
| c3897212e2 | |||
| 5a929aff6e | |||
| ee5fa04732 | |||
| e82e1c695a | |||
| fc8a639d58 | |||
| 2ee02cfadd | |||
| b91b3c18cf | |||
| ce46d52c8a | |||
| eea67bf3bf | |||
| cfad0634ac | |||
| bd05228c71 | |||
| 0f1e4b0504 | |||
| 1e2ceb88da | |||
| 439e7da03f | |||
| ed7c09ac81 | |||
| 0ee1daa46d | |||
| 2fbc4f504d | |||
| 95ab056576 | |||
| a0bc619550 | |||
| 82b50706bd | |||
| e90eed9120 | |||
| 5f2f7d1575 | |||
| 3e60ec9be1 | |||
| 92b042552e | |||
| 38a8c765f0 | |||
| d0c6484fb0 | |||
| 0349e9fee9 | |||
| 55116db8fb | |||
| 56cf97e497 | |||
| 1041934568 | |||
| b779bf524a | |||
| 32379d2d84 | |||
| 50082c287d | |||
| e3823a521c | |||
| dc8b43a95f | |||
| 601746b565 | |||
| 35bb2ac2a3 | |||
| fbb78e7b78 | |||
| c7eb9a8626 | |||
| 803e0631c5 | |||
| 51a6bfd579 | |||
| 5b71b3fc57 | |||
| e2ed9330b7 | |||
| 41872e37e6 | |||
| fb8d31422d | |||
| 27a2d0cbd4 | |||
| 0c0b106924 | |||
| 98d9c45ad9 | |||
| 7b264d35fa | |||
| 084bb3c35b | |||
| 31789ad03b | |||
| fd168068a1 | |||
| a0cc6b5b59 | |||
| f2d881470d | |||
| e13c661f77 | |||
| a1f421cd54 | |||
| 6d84bd6138 | |||
| 11407a165b | |||
| 99430767df | |||
| cb6b498127 | |||
| a243be2dc9 | |||
| a696b26301 | |||
| 4a4297591e | |||
| 1f43efc111 | |||
| c55009a0ac | |||
| 80431612c7 | |||
| e4e2249b63 | |||
| cf35ebe5fa | |||
| 073f003470 | |||
| 618547b72e | |||
| a01bce46bb | |||
| 82be3ee32c | |||
| 16b17f812c | |||
| 22b7e12baf | |||
| b8d3c9e01b | |||
| 149a57f3ae | |||
| db74f14f33 | |||
| 69c1a7954a | |||
| 7f2c81657b | |||
| f2113ab04a | |||
| dc40886d23 | |||
| 6ee002d6cf | |||
| d640c712f8 | |||
| 9166001041 | |||
| 2fbf86a58d | |||
| f2ef02b6d9 | |||
| c3adfcbc15 | |||
| 744a8215dd | |||
| 1f44dc2498 | |||
| d1e751d717 | |||
| 08273c40d7 | |||
| e2d28f5160 | |||
| b50ef59a19 | |||
| 36836598b1 | |||
| 8c4baac3f1 | |||
| 179026dd44 | |||
| 71a6227240 | |||
| aecef752e8 | |||
| e422e886de | |||
| 069853fd10 | |||
| 84773f9d1d | |||
| ff7276e494 | |||
| 553714b0bb | |||
| 5d8e3c6cb4 | |||
| 29073f7d0e | |||
| 38c6c1907b | |||
| 85a14ebcb8 | |||
| 0a02097e20 | |||
| a72f3cfb58 | |||
| 58905525bf | |||
| 7a2d326103 | |||
| ddd5e61254 | |||
| d66a1ac054 | |||
| 9727fdc473 | |||
| d5fe8857cc | |||
| a745a0aed0 | |||
| 19aaf294e5 | |||
| 6b4303c405 | |||
| 53a779067e | |||
| cce9fe4a34 | |||
| 407392f6bf | |||
| cdde878d60 | |||
| b9e33e631f | |||
| 82a5346ab1 | |||
| a76457ef22 | |||
| e6b5112ddc | |||
| 16911adcea | |||
| cf1d421e10 | |||
| 8d79db03d3 | |||
| 5e287033f7 | |||
| e1ab38439b | |||
| 062c1a04fc |
1301
cmake/CMakeLists.txt
28
cmake/Modules/CodeCoverage.cmake
Normal file
@ -0,0 +1,28 @@
|
||||
###############################################################################
|
||||
# Coverage
|
||||
#
|
||||
# Requires latest gcovr (for GCC 8.1 support):#
|
||||
# pip install git+https://github.com/gcovr/gcovr.git
|
||||
###############################################################################
|
||||
if(ENABLE_COVERAGE)
|
||||
find_program(GCOVR_BINARY gcovr)
|
||||
find_package_handle_standard_args(GCOVR DEFAULT_MSG GCOVR_BINARY)
|
||||
|
||||
if(GCOVR_FOUND)
|
||||
get_filename_component(ABSOLUTE_LAMMPS_SOURCE_DIR ${LAMMPS_SOURCE_DIR} ABSOLUTE)
|
||||
|
||||
add_custom_target(
|
||||
gen_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}
|
||||
COMMENT "Generating XML Coverage Report..."
|
||||
)
|
||||
|
||||
add_custom_target(
|
||||
gen_coverage_html
|
||||
COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.html
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
COMMENT "Generating HTML Coverage Report..."
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
59
cmake/Modules/Documentation.cmake
Normal file
@ -0,0 +1,59 @@
|
||||
###############################################################################
|
||||
# Build documentation
|
||||
###############################################################################
|
||||
option(BUILD_DOC "Build LAMMPS documentation" OFF)
|
||||
if(BUILD_DOC)
|
||||
include(ProcessorCount)
|
||||
ProcessorCount(NPROCS)
|
||||
find_package(PythonInterp 3 REQUIRED)
|
||||
|
||||
set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv)
|
||||
|
||||
file(GLOB DOC_SOURCES ${LAMMPS_DOC_DIR}/src/[^.]*.txt)
|
||||
file(GLOB PDF_EXTRA_SOURCES ${LAMMPS_DOC_DIR}/src/lammps_commands*.txt ${LAMMPS_DOC_DIR}/src/lammps_support.txt ${LAMMPS_DOC_DIR}/src/lammps_tutorials.txt)
|
||||
list(REMOVE_ITEM DOC_SOURCES ${PDF_EXTRA_SOURCES})
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT docenv
|
||||
COMMAND ${VIRTUALENV} docenv
|
||||
)
|
||||
|
||||
set(DOCENV_BINARY_DIR ${CMAKE_BINARY_DIR}/docenv/bin)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT requirements.txt
|
||||
DEPENDS docenv
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${LAMMPS_DOC_DIR}/utils/requirements.txt requirements.txt
|
||||
COMMAND ${DOCENV_BINARY_DIR}/pip install -r requirements.txt --upgrade
|
||||
COMMAND ${DOCENV_BINARY_DIR}/pip install --upgrade ${LAMMPS_DOC_DIR}/utils/converters
|
||||
)
|
||||
|
||||
set(RST_FILES "")
|
||||
set(RST_DIR ${CMAKE_BINARY_DIR}/rst)
|
||||
file(MAKE_DIRECTORY ${RST_DIR})
|
||||
foreach(TXT_FILE ${DOC_SOURCES})
|
||||
get_filename_component(FILENAME ${TXT_FILE} NAME_WE)
|
||||
set(RST_FILE ${RST_DIR}/${FILENAME}.rst)
|
||||
list(APPEND RST_FILES ${RST_FILE})
|
||||
add_custom_command(
|
||||
OUTPUT ${RST_FILE}
|
||||
DEPENDS requirements.txt docenv ${TXT_FILE}
|
||||
COMMAND ${DOCENV_BINARY_DIR}/txt2rst -o ${RST_DIR} ${TXT_FILE}
|
||||
)
|
||||
endforeach()
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT html
|
||||
DEPENDS ${RST_FILES}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LAMMPS_DOC_DIR}/src ${RST_DIR}
|
||||
COMMAND ${DOCENV_BINARY_DIR}/sphinx-build -j ${NPROCS} -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${RST_DIR} html
|
||||
)
|
||||
|
||||
add_custom_target(
|
||||
doc ALL
|
||||
DEPENDS html
|
||||
SOURCES ${LAMMPS_DOC_DIR}/utils/requirements.txt ${DOC_SOURCES}
|
||||
)
|
||||
|
||||
install(DIRECTORY ${CMAKE_BINARY_DIR}/html DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||
endif()
|
||||
71
cmake/Modules/LAMMPSUtils.cmake
Normal file
@ -0,0 +1,71 @@
|
||||
# Utility functions
|
||||
function(list_to_bulletpoints result)
|
||||
list(REMOVE_AT ARGV 0)
|
||||
set(temp "")
|
||||
foreach(item ${ARGV})
|
||||
set(temp "${temp}* ${item}\n")
|
||||
endforeach()
|
||||
set(${result} "${temp}" PARENT_SCOPE)
|
||||
endfunction(list_to_bulletpoints)
|
||||
|
||||
function(validate_option name values)
|
||||
string(TOLOWER ${${name}} needle_lower)
|
||||
string(TOUPPER ${${name}} needle_upper)
|
||||
list(FIND ${values} ${needle_lower} IDX_LOWER)
|
||||
list(FIND ${values} ${needle_upper} IDX_UPPER)
|
||||
if(${IDX_LOWER} LESS 0 AND ${IDX_UPPER} LESS 0)
|
||||
list_to_bulletpoints(POSSIBLE_VALUE_LIST ${${values}})
|
||||
message(FATAL_ERROR "\n########################################################################\n"
|
||||
"Invalid value '${${name}}' for option ${name}\n"
|
||||
"\n"
|
||||
"Possible values are:\n"
|
||||
"${POSSIBLE_VALUE_LIST}"
|
||||
"########################################################################")
|
||||
endif()
|
||||
endfunction(validate_option)
|
||||
|
||||
function(get_lammps_version version_header variable)
|
||||
file(READ ${version_header} line)
|
||||
set(MONTHS x Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
|
||||
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\1" day "${line}")
|
||||
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\2" month "${line}")
|
||||
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\3" year "${line}")
|
||||
string(STRIP ${day} day)
|
||||
string(STRIP ${month} month)
|
||||
string(STRIP ${year} year)
|
||||
list(FIND MONTHS "${month}" month)
|
||||
string(LENGTH ${day} day_length)
|
||||
string(LENGTH ${month} month_length)
|
||||
if(day_length EQUAL 1)
|
||||
set(day "0${day}")
|
||||
endif()
|
||||
if(month_length EQUAL 1)
|
||||
set(month "0${month}")
|
||||
endif()
|
||||
set(${variable} "${year}${month}${day}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(check_for_autogen_files source_dir)
|
||||
message(STATUS "Running check for auto-generated files from make-based build system")
|
||||
file(GLOB SRC_AUTOGEN_FILES ${source_dir}/style_*.h)
|
||||
file(GLOB SRC_AUTOGEN_PACKAGES ${source_dir}/packages_*.h)
|
||||
list(APPEND SRC_AUTOGEN_FILES ${SRC_AUTOGEN_PACKAGES} ${source_dir}/lmpinstalledpkgs.h ${source_dir}/lmpgitversion.h)
|
||||
foreach(_SRC ${SRC_AUTOGEN_FILES})
|
||||
get_filename_component(FILENAME "${_SRC}" NAME)
|
||||
if(EXISTS ${source_dir}/${FILENAME})
|
||||
message(FATAL_ERROR "\n########################################################################\n"
|
||||
"Found header file(s) generated by the make-based build system\n"
|
||||
"\n"
|
||||
"Please run\n"
|
||||
"make -C ${source_dir} purge\n"
|
||||
"to remove\n"
|
||||
"########################################################################")
|
||||
endif()
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
macro(pkg_depends PKG1 PKG2)
|
||||
if(PKG_${PKG1} AND NOT (PKG_${PKG2} OR BUILD_${PKG2}))
|
||||
message(FATAL_ERROR "${PKG1} package needs LAMMPS to be build with ${PKG2}")
|
||||
endif()
|
||||
endmacro()
|
||||
5
cmake/Modules/Packages/COMPRESS.cmake
Normal file
@ -0,0 +1,5 @@
|
||||
if(PKG_COMPRESS)
|
||||
find_package(ZLIB REQUIRED)
|
||||
include_directories(${ZLIB_INCLUDE_DIRS})
|
||||
list(APPEND LAMMPS_LINK_LIBS ${ZLIB_LIBRARIES})
|
||||
endif()
|
||||
13
cmake/Modules/Packages/CORESHELL.cmake
Normal file
@ -0,0 +1,13 @@
|
||||
if(PKG_CORESHELL)
|
||||
set(CORESHELL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/CORESHELL)
|
||||
set(CORESHELL_SOURCES)
|
||||
set_property(GLOBAL PROPERTY "CORESHELL_SOURCES" "${CORESHELL_SOURCES}")
|
||||
|
||||
# detects styles which have a CORESHELL version
|
||||
RegisterStylesExt(${CORESHELL_SOURCES_DIR} cs CORESHELL_SOURCES)
|
||||
|
||||
get_property(CORESHELL_SOURCES GLOBAL PROPERTY CORESHELL_SOURCES)
|
||||
|
||||
list(APPEND LIB_SOURCES ${CORESHELL_SOURCES})
|
||||
include_directories(${CORESHELL_SOURCES_DIR})
|
||||
endif()
|
||||
194
cmake/Modules/Packages/GPU.cmake
Normal file
@ -0,0 +1,194 @@
|
||||
if(PKG_GPU)
|
||||
if (CMAKE_VERSION VERSION_LESS "3.1")
|
||||
message(FATAL_ERROR "For the GPU package you need at least cmake-3.1")
|
||||
endif()
|
||||
set(GPU_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/GPU)
|
||||
set(GPU_SOURCES ${GPU_SOURCES_DIR}/gpu_extra.h
|
||||
${GPU_SOURCES_DIR}/fix_gpu.h
|
||||
${GPU_SOURCES_DIR}/fix_gpu.cpp)
|
||||
|
||||
set(GPU_API "opencl" CACHE STRING "API used by GPU package")
|
||||
set(GPU_API_VALUES opencl cuda)
|
||||
set_property(CACHE GPU_API PROPERTY STRINGS ${GPU_API_VALUES})
|
||||
validate_option(GPU_API GPU_API_VALUES)
|
||||
string(TOUPPER ${GPU_API} GPU_API)
|
||||
|
||||
set(GPU_PREC "mixed" CACHE STRING "LAMMPS GPU precision")
|
||||
set(GPU_PREC_VALUES double mixed single)
|
||||
set_property(CACHE GPU_PREC PROPERTY STRINGS ${GPU_PREC_VALUES})
|
||||
validate_option(GPU_PREC GPU_PREC_VALUES)
|
||||
string(TOUPPER ${GPU_PREC} GPU_PREC)
|
||||
|
||||
if(GPU_PREC STREQUAL "DOUBLE")
|
||||
set(GPU_PREC_SETTING "DOUBLE_DOUBLE")
|
||||
elseif(GPU_PREC STREQUAL "MIXED")
|
||||
set(GPU_PREC_SETTING "SINGLE_DOUBLE")
|
||||
elseif(GPU_PREC STREQUAL "SINGLE")
|
||||
set(GPU_PREC_SETTING "SINGLE_SINGLE")
|
||||
endif()
|
||||
|
||||
file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp)
|
||||
file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu)
|
||||
|
||||
if(GPU_API STREQUAL "CUDA")
|
||||
find_package(CUDA REQUIRED)
|
||||
find_program(BIN2C bin2c)
|
||||
if(NOT BIN2C)
|
||||
message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.")
|
||||
endif()
|
||||
option(CUDPP_OPT "Enable CUDPP_OPT" ON)
|
||||
option(CUDA_MPS_SUPPORT "Enable tweaks to support CUDA Multi-process service (MPS)" OFF)
|
||||
if(CUDA_MPS_SUPPORT)
|
||||
set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY")
|
||||
endif()
|
||||
|
||||
set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)")
|
||||
|
||||
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu)
|
||||
list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu)
|
||||
|
||||
cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu ${LAMMPS_LIB_BINARY_DIR}/gpu)
|
||||
|
||||
if(CUDPP_OPT)
|
||||
cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini)
|
||||
file(GLOB GPU_LIB_CUDPP_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cpp)
|
||||
file(GLOB GPU_LIB_CUDPP_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cu)
|
||||
endif()
|
||||
|
||||
# build arch/gencode commands for nvcc based on CUDA toolkit version and use choice
|
||||
# --arch translates directly instead of JIT, so this should be for the preferred or most common architecture
|
||||
set(GPU_CUDA_GENCODE "-arch=${GPU_ARCH} ")
|
||||
# Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0
|
||||
if((CUDA_VERSION VERSION_GREATER "3.1") AND (CUDA_VERSION VERSION_LESS "9.0"))
|
||||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_20,code=[sm_20,compute_20] ")
|
||||
endif()
|
||||
# Kepler (GPU Arch 3.x) is supported by CUDA 5 and later
|
||||
if(CUDA_VERSION VERSION_GREATER "4.9")
|
||||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_30,code=[sm_30,compute_30] -gencode arch=compute_35,code=[sm_35,compute_35] ")
|
||||
endif()
|
||||
# Maxwell (GPU Arch 5.x) is supported by CUDA 6 and later
|
||||
if(CUDA_VERSION VERSION_GREATER "5.9")
|
||||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] ")
|
||||
endif()
|
||||
# Pascal (GPU Arch 6.x) is supported by CUDA 8 and later
|
||||
if(CUDA_VERSION VERSION_GREATER "7.9")
|
||||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61] ")
|
||||
endif()
|
||||
# Volta (GPU Arch 7.0) is supported by CUDA 9 and later
|
||||
if(CUDA_VERSION VERSION_GREATER "8.9")
|
||||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_70,code=[sm_70,compute_70] ")
|
||||
endif()
|
||||
# Turing (GPU Arch 7.5) is supported by CUDA 10 and later
|
||||
if(CUDA_VERSION VERSION_GREATER "9.9")
|
||||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_75,code=[sm_75,compute_75] ")
|
||||
endif()
|
||||
|
||||
cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS
|
||||
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING})
|
||||
|
||||
cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC}
|
||||
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING})
|
||||
|
||||
foreach(CU_OBJ ${GPU_GEN_OBJS})
|
||||
get_filename_component(CU_NAME ${CU_OBJ} NAME_WE)
|
||||
string(REGEX REPLACE "^.*_lal_" "" CU_NAME "${CU_NAME}")
|
||||
add_custom_command(OUTPUT ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h
|
||||
COMMAND ${BIN2C} -c -n ${CU_NAME} ${CU_OBJ} > ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h
|
||||
DEPENDS ${CU_OBJ}
|
||||
COMMENT "Generating ${CU_NAME}_cubin.h")
|
||||
list(APPEND GPU_LIB_SOURCES ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h)
|
||||
endforeach()
|
||||
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h")
|
||||
|
||||
|
||||
add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS})
|
||||
target_link_libraries(gpu ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
|
||||
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS})
|
||||
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS})
|
||||
if(CUDPP_OPT)
|
||||
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini)
|
||||
target_compile_definitions(gpu PRIVATE -DUSE_CUDPP)
|
||||
endif()
|
||||
|
||||
list(APPEND LAMMPS_LINK_LIBS gpu)
|
||||
|
||||
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_link_libraries(nvc_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
|
||||
target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS})
|
||||
|
||||
|
||||
elseif(GPU_API STREQUAL "OPENCL")
|
||||
find_package(OpenCL REQUIRED)
|
||||
set(OCL_TUNE "generic" CACHE STRING "OpenCL Device Tuning")
|
||||
set(OCL_TUNE_VALUES intel fermi kepler cypress generic)
|
||||
set_property(CACHE OCL_TUNE PROPERTY STRINGS ${OCL_TUNE_VALUES})
|
||||
validate_option(OCL_TUNE OCL_TUNE_VALUES)
|
||||
string(TOUPPER ${OCL_TUNE} OCL_TUNE)
|
||||
|
||||
include(OpenCLUtils)
|
||||
set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h)
|
||||
|
||||
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu)
|
||||
list(REMOVE_ITEM GPU_LIB_CU
|
||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu
|
||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu
|
||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu
|
||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu
|
||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu
|
||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu
|
||||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu
|
||||
)
|
||||
|
||||
foreach(GPU_KERNEL ${GPU_LIB_CU})
|
||||
get_filename_component(basename ${GPU_KERNEL} NAME_WE)
|
||||
string(SUBSTRING ${basename} 4 -1 KERNEL_NAME)
|
||||
GenerateOpenCLHeader(${KERNEL_NAME} ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h ${OCL_COMMON_HEADERS} ${GPU_KERNEL})
|
||||
list(APPEND GPU_LIB_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h)
|
||||
endforeach()
|
||||
|
||||
GenerateOpenCLHeader(gayberne ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu)
|
||||
GenerateOpenCLHeader(gayberne_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu)
|
||||
GenerateOpenCLHeader(re_squared ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu)
|
||||
GenerateOpenCLHeader(re_squared_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu)
|
||||
GenerateOpenCLHeader(tersoff ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu)
|
||||
GenerateOpenCLHeader(tersoff_zbl ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu)
|
||||
GenerateOpenCLHeader(tersoff_mod ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu)
|
||||
|
||||
list(APPEND GPU_LIB_SOURCES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h
|
||||
)
|
||||
|
||||
add_library(gpu STATIC ${GPU_LIB_SOURCES})
|
||||
target_link_libraries(gpu ${OpenCL_LIBRARIES})
|
||||
target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu ${OpenCL_INCLUDE_DIRS})
|
||||
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT)
|
||||
target_compile_definitions(gpu PRIVATE -DUSE_OPENCL)
|
||||
|
||||
list(APPEND LAMMPS_LINK_LIBS gpu)
|
||||
|
||||
add_executable(ocl_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp)
|
||||
target_compile_definitions(ocl_get_devices PRIVATE -DUCL_OPENCL)
|
||||
target_link_libraries(ocl_get_devices PRIVATE ${OpenCL_LIBRARIES})
|
||||
target_include_directories(ocl_get_devices PRIVATE ${OpenCL_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
# GPU package
|
||||
FindStyleHeaders(${GPU_SOURCES_DIR} FIX_CLASS fix_ FIX)
|
||||
|
||||
set_property(GLOBAL PROPERTY "GPU_SOURCES" "${GPU_SOURCES}")
|
||||
|
||||
# detects styles which have GPU version
|
||||
RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES)
|
||||
|
||||
get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES)
|
||||
|
||||
list(APPEND LIB_SOURCES ${GPU_SOURCES})
|
||||
include_directories(${GPU_SOURCES_DIR})
|
||||
endif()
|
||||
45
cmake/Modules/Packages/KIM.cmake
Normal file
@ -0,0 +1,45 @@
|
||||
if(PKG_KIM)
|
||||
find_package(CURL)
|
||||
if(CURL_FOUND)
|
||||
include_directories(${CURL_INCLUDE_DIRS})
|
||||
list(APPEND LAMMPS_LINK_LIBS ${CURL_LIBRARIES})
|
||||
add_definitions(-DLMP_KIM_CURL)
|
||||
endif()
|
||||
find_package(KIM-API QUIET)
|
||||
if(KIM-API_FOUND)
|
||||
set(DOWNLOAD_KIM_DEFAULT OFF)
|
||||
else()
|
||||
if (NOT DOWNLOAD_KIM)
|
||||
message(WARNING "KIM-API package not found. We will download and build our own")
|
||||
endif()
|
||||
set(DOWNLOAD_KIM_DEFAULT ON)
|
||||
endif()
|
||||
option(DOWNLOAD_KIM "Download KIM-API from OpenKIM instead of using an already installed one" ${DOWNLOAD_KIM_DEFAULT})
|
||||
if(DOWNLOAD_KIM)
|
||||
if(CMAKE_GENERATOR STREQUAL "Ninja")
|
||||
message(FATAL_ERROR "Cannot build downloaded KIM-API library with Ninja build tool")
|
||||
endif()
|
||||
message(STATUS "KIM-API download requested - we will build our own")
|
||||
enable_language(C)
|
||||
enable_language(Fortran)
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(kim_build
|
||||
URL https://s3.openkim.org/kim-api/kim-api-2.1.2.txz
|
||||
URL_MD5 6ac52e14ef52967fc7858220b208cba5
|
||||
BINARY_DIR build
|
||||
CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||
)
|
||||
ExternalProject_get_property(kim_build INSTALL_DIR)
|
||||
set(KIM-API_INCLUDE_DIRS ${INSTALL_DIR}/include/kim-api)
|
||||
set(KIM-API_LDFLAGS ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
list(APPEND LAMMPS_DEPS kim_build)
|
||||
else()
|
||||
find_package(KIM-API REQUIRED)
|
||||
endif()
|
||||
list(APPEND LAMMPS_LINK_LIBS "${KIM-API_LDFLAGS}")
|
||||
include_directories(${KIM-API_INCLUDE_DIRS})
|
||||
endif()
|
||||
53
cmake/Modules/Packages/KOKKOS.cmake
Normal file
@ -0,0 +1,53 @@
|
||||
if(PKG_KOKKOS)
|
||||
set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos)
|
||||
set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos)
|
||||
add_definitions(-DLMP_KOKKOS)
|
||||
add_subdirectory(${LAMMPS_LIB_KOKKOS_SRC_DIR} ${LAMMPS_LIB_KOKKOS_BIN_DIR})
|
||||
|
||||
set(Kokkos_INCLUDE_DIRS ${LAMMPS_LIB_KOKKOS_SRC_DIR}/core/src
|
||||
${LAMMPS_LIB_KOKKOS_SRC_DIR}/containers/src
|
||||
${LAMMPS_LIB_KOKKOS_SRC_DIR}/algorithms/src
|
||||
${LAMMPS_LIB_KOKKOS_BIN_DIR})
|
||||
include_directories(${Kokkos_INCLUDE_DIRS})
|
||||
list(APPEND LAMMPS_LINK_LIBS kokkos)
|
||||
|
||||
set(KOKKOS_PKG_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/KOKKOS)
|
||||
set(KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/kokkos.cpp
|
||||
${KOKKOS_PKG_SOURCES_DIR}/atom_kokkos.cpp
|
||||
${KOKKOS_PKG_SOURCES_DIR}/atom_vec_kokkos.cpp
|
||||
${KOKKOS_PKG_SOURCES_DIR}/comm_kokkos.cpp
|
||||
${KOKKOS_PKG_SOURCES_DIR}/comm_tiled_kokkos.cpp
|
||||
${KOKKOS_PKG_SOURCES_DIR}/neighbor_kokkos.cpp
|
||||
${KOKKOS_PKG_SOURCES_DIR}/neigh_list_kokkos.cpp
|
||||
${KOKKOS_PKG_SOURCES_DIR}/neigh_bond_kokkos.cpp
|
||||
${KOKKOS_PKG_SOURCES_DIR}/fix_nh_kokkos.cpp
|
||||
${KOKKOS_PKG_SOURCES_DIR}/nbin_kokkos.cpp
|
||||
${KOKKOS_PKG_SOURCES_DIR}/npair_kokkos.cpp
|
||||
${KOKKOS_PKG_SOURCES_DIR}/domain_kokkos.cpp
|
||||
${KOKKOS_PKG_SOURCES_DIR}/modify_kokkos.cpp)
|
||||
|
||||
if(PKG_KSPACE)
|
||||
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/gridcomm_kokkos.cpp)
|
||||
endif()
|
||||
|
||||
set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}")
|
||||
|
||||
# detects styles which have KOKKOS version
|
||||
RegisterStylesExt(${KOKKOS_PKG_SOURCES_DIR} kokkos KOKKOS_PKG_SOURCES)
|
||||
|
||||
# register kokkos-only styles
|
||||
RegisterNBinStyle(${KOKKOS_PKG_SOURCES_DIR}/nbin_kokkos.h)
|
||||
RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_kokkos.h)
|
||||
|
||||
if(PKG_USER-DPD)
|
||||
get_property(KOKKOS_PKG_SOURCES GLOBAL PROPERTY KOKKOS_PKG_SOURCES)
|
||||
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/npair_ssa_kokkos.cpp)
|
||||
RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_ssa_kokkos.h)
|
||||
set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}")
|
||||
endif()
|
||||
|
||||
get_property(KOKKOS_PKG_SOURCES GLOBAL PROPERTY KOKKOS_PKG_SOURCES)
|
||||
|
||||
list(APPEND LIB_SOURCES ${KOKKOS_PKG_SOURCES})
|
||||
include_directories(${KOKKOS_PKG_SOURCES_DIR})
|
||||
endif()
|
||||
42
cmake/Modules/Packages/KSPACE.cmake
Normal file
@ -0,0 +1,42 @@
|
||||
if(PKG_KSPACE)
|
||||
option(FFT_SINGLE "Use single precision FFTs instead of double precision FFTs" OFF)
|
||||
set(FFTW "FFTW3")
|
||||
if(FFT_SINGLE)
|
||||
set(FFTW "FFTW3F")
|
||||
add_definitions(-DFFT_SINGLE)
|
||||
endif()
|
||||
find_package(${FFTW} QUIET)
|
||||
if(${FFTW}_FOUND)
|
||||
set(FFT "FFTW3" CACHE STRING "FFT library for KSPACE package")
|
||||
else()
|
||||
set(FFT "KISS" CACHE STRING "FFT library for KSPACE package")
|
||||
endif()
|
||||
set(FFT_VALUES KISS FFTW3 MKL)
|
||||
set_property(CACHE FFT PROPERTY STRINGS ${FFT_VALUES})
|
||||
validate_option(FFT FFT_VALUES)
|
||||
string(TOUPPER ${FFT} FFT)
|
||||
|
||||
if(FFT STREQUAL "FFTW3")
|
||||
find_package(${FFTW} REQUIRED)
|
||||
add_definitions(-DFFT_FFTW3)
|
||||
include_directories(${${FFTW}_INCLUDE_DIRS})
|
||||
list(APPEND LAMMPS_LINK_LIBS ${${FFTW}_LIBRARIES})
|
||||
elseif(FFT STREQUAL "MKL")
|
||||
find_package(MKL REQUIRED)
|
||||
add_definitions(-DFFT_MKL)
|
||||
include_directories(${MKL_INCLUDE_DIRS})
|
||||
list(APPEND LAMMPS_LINK_LIBS ${MKL_LIBRARIES})
|
||||
else()
|
||||
# last option is KISSFFT
|
||||
add_definitions(-DFFT_KISS)
|
||||
endif()
|
||||
|
||||
set(FFT_PACK "array" CACHE STRING "Optimization for FFT")
|
||||
set(FFT_PACK_VALUES array pointer memcpy)
|
||||
set_property(CACHE FFT_PACK PROPERTY STRINGS ${FFT_PACK_VALUES})
|
||||
validate_option(FFT_PACK FFT_PACK_VALUES)
|
||||
if(NOT FFT_PACK STREQUAL "array")
|
||||
string(TOUPPER ${FFT_PACK} FFT_PACK)
|
||||
add_definitions(-DFFT_PACK_${FFT_PACK})
|
||||
endif()
|
||||
endif()
|
||||
38
cmake/Modules/Packages/LATTE.cmake
Normal file
@ -0,0 +1,38 @@
|
||||
if(PKG_LATTE)
|
||||
enable_language(Fortran)
|
||||
find_package(LATTE)
|
||||
if(LATTE_FOUND)
|
||||
set(DOWNLOAD_LATTE_DEFAULT OFF)
|
||||
else()
|
||||
set(DOWNLOAD_LATTE_DEFAULT ON)
|
||||
endif()
|
||||
option(DOWNLOAD_LATTE "Download the LATTE library instead of using an already installed one" ${DOWNLOAD_LATTE_DEFAULT})
|
||||
if(DOWNLOAD_LATTE)
|
||||
if (CMAKE_VERSION VERSION_LESS "3.7") # due to SOURCE_SUBDIR
|
||||
message(FATAL_ERROR "For downlading LATTE you need at least cmake-3.7")
|
||||
endif()
|
||||
if(CMAKE_GENERATOR STREQUAL "Ninja")
|
||||
message(FATAL_ERROR "Cannot build downloaded LATTE library with Ninja build tool")
|
||||
endif()
|
||||
message(STATUS "LATTE download requested - we will build our own")
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(latte_build
|
||||
URL https://github.com/lanl/LATTE/archive/v1.2.1.tar.gz
|
||||
URL_MD5 85ac414fdada2d04619c8f936344df14
|
||||
SOURCE_SUBDIR cmake
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> ${CMAKE_REQUEST_PIC}
|
||||
-DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES}
|
||||
-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DCMAKE_Fortran_FLAGS=${CMAKE_Fortran_FLAGS}
|
||||
-DCMAKE_Fortran_FLAGS_${BTYPE}=${CMAKE_Fortran_FLAGS_${BTYPE}} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||
)
|
||||
ExternalProject_get_property(latte_build INSTALL_DIR)
|
||||
set(LATTE_LIBRARIES ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/liblatte.a)
|
||||
list(APPEND LAMMPS_DEPS latte_build)
|
||||
else()
|
||||
find_package(LATTE)
|
||||
if(NOT LATTE_FOUND)
|
||||
message(FATAL_ERROR "LATTE library not found, help CMake to find it by setting LATTE_LIBRARY, or set DOWNLOAD_LATTE=ON to download it")
|
||||
endif()
|
||||
endif()
|
||||
list(APPEND LAMMPS_LINK_LIBS ${LATTE_LIBRARIES} ${LAPACK_LIBRARIES})
|
||||
endif()
|
||||
29
cmake/Modules/Packages/MESSAGE.cmake
Normal file
@ -0,0 +1,29 @@
|
||||
if(PKG_MESSAGE)
|
||||
option(MESSAGE_ZMQ "Use ZeroMQ in MESSAGE package" OFF)
|
||||
file(GLOB_RECURSE cslib_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.F
|
||||
${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.c
|
||||
${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.cpp)
|
||||
|
||||
add_library(cslib STATIC ${cslib_SOURCES})
|
||||
if(BUILD_MPI)
|
||||
target_compile_definitions(cslib PRIVATE -DMPI_YES)
|
||||
set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi")
|
||||
else()
|
||||
target_compile_definitions(cslib PRIVATE -DMPI_NO)
|
||||
target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_MPI)
|
||||
set_target_properties(cslib PROPERTIES OUTPUT_NAME "csnompi")
|
||||
endif()
|
||||
|
||||
if(MESSAGE_ZMQ)
|
||||
target_compile_definitions(cslib PRIVATE -DZMQ_YES)
|
||||
find_package(ZMQ REQUIRED)
|
||||
target_include_directories(cslib PRIVATE ${ZMQ_INCLUDE_DIRS})
|
||||
target_link_libraries(cslib PUBLIC ${ZMQ_LIBRARIES})
|
||||
else()
|
||||
target_compile_definitions(cslib PRIVATE -DZMQ_NO)
|
||||
target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_ZMQ)
|
||||
endif()
|
||||
|
||||
list(APPEND LAMMPS_LINK_LIBS cslib)
|
||||
include_directories(${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src)
|
||||
endif()
|
||||
45
cmake/Modules/Packages/MSCG.cmake
Normal file
@ -0,0 +1,45 @@
|
||||
if(PKG_MSCG)
|
||||
find_package(GSL REQUIRED)
|
||||
find_package(MSCG QUIET)
|
||||
if(MSGC_FOUND)
|
||||
set(DOWNLOAD_MSCG_DEFAULT OFF)
|
||||
else()
|
||||
set(DOWNLOAD_MSCG_DEFAULT ON)
|
||||
endif()
|
||||
option(DOWNLOAD_MSCG "Download MSCG library instead of using an already installed one)" ${DOWNLOAD_MSCG_DEFAULT})
|
||||
if(DOWNLOAD_MSCG)
|
||||
if (CMAKE_VERSION VERSION_LESS "3.7") # due to SOURCE_SUBDIR
|
||||
message(FATAL_ERROR "For downlading MSCG you need at least cmake-3.7")
|
||||
endif()
|
||||
if(CMAKE_GENERATOR STREQUAL "Ninja")
|
||||
message(FATAL_ERROR "Cannot build downloaded MSCG library with Ninja build tool")
|
||||
endif()
|
||||
include(ExternalProject)
|
||||
if(NOT LAPACK_FOUND)
|
||||
set(EXTRA_MSCG_OPTS "-DLAPACK_LIBRARIES=${CMAKE_CURRENT_BINARY_DIR}/liblinalg.a")
|
||||
endif()
|
||||
ExternalProject_Add(mscg_build
|
||||
URL https://github.com/uchicago-voth/MSCG-release/archive/1.7.3.1.tar.gz
|
||||
URL_MD5 8c45e269ee13f60b303edd7823866a91
|
||||
SOURCE_SUBDIR src/CMake
|
||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> ${CMAKE_REQUEST_PIC} ${EXTRA_MSCG_OPTS}
|
||||
BUILD_COMMAND make mscg INSTALL_COMMAND ""
|
||||
)
|
||||
ExternalProject_get_property(mscg_build BINARY_DIR)
|
||||
set(MSCG_LIBRARIES ${BINARY_DIR}/libmscg.a)
|
||||
ExternalProject_get_property(mscg_build SOURCE_DIR)
|
||||
set(MSCG_INCLUDE_DIRS ${SOURCE_DIR}/src)
|
||||
list(APPEND LAMMPS_DEPS mscg_build)
|
||||
if(NOT LAPACK_FOUND)
|
||||
file(MAKE_DIRECTORY ${MSCG_INCLUDE_DIRS})
|
||||
add_dependencies(mscg_build linalg)
|
||||
endif()
|
||||
else()
|
||||
find_package(MSCG)
|
||||
if(NOT MSCG_FOUND)
|
||||
message(FATAL_ERROR "MSCG not found, help CMake to find it by setting MSCG_LIBRARY and MSCG_INCLUDE_DIRS, or set DOWNLOAD_MSCG=ON to download it")
|
||||
endif()
|
||||
endif()
|
||||
list(APPEND LAMMPS_LINK_LIBS ${MSCG_LIBRARIES} ${GSL_LIBRARIES} ${LAPACK_LIBRARIES})
|
||||
include_directories(${MSCG_INCLUDE_DIRS})
|
||||
endif()
|
||||
13
cmake/Modules/Packages/OPT.cmake
Normal file
@ -0,0 +1,13 @@
|
||||
if(PKG_OPT)
|
||||
set(OPT_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/OPT)
|
||||
set(OPT_SOURCES)
|
||||
set_property(GLOBAL PROPERTY "OPT_SOURCES" "${OPT_SOURCES}")
|
||||
|
||||
# detects styles which have OPT version
|
||||
RegisterStylesExt(${OPT_SOURCES_DIR} opt OPT_SOURCES)
|
||||
|
||||
get_property(OPT_SOURCES GLOBAL PROPERTY OPT_SOURCES)
|
||||
|
||||
list(APPEND LIB_SOURCES ${OPT_SOURCES})
|
||||
include_directories(${OPT_SOURCES_DIR})
|
||||
endif()
|
||||
6
cmake/Modules/Packages/PYTHON.cmake
Normal file
@ -0,0 +1,6 @@
|
||||
if(PKG_PYTHON)
|
||||
find_package(PythonLibs REQUIRED)
|
||||
add_definitions(-DLMP_PYTHON)
|
||||
include_directories(${PYTHON_INCLUDE_DIR})
|
||||
list(APPEND LAMMPS_LINK_LIBS ${PYTHON_LIBRARY})
|
||||
endif()
|
||||
20
cmake/Modules/Packages/QEQ.cmake
Normal file
@ -0,0 +1,20 @@
|
||||
# Fix qeq/fire requires MANYBODY (i.e. COMB and COMB3) to be installed
|
||||
if(PKG_QEQ)
|
||||
set(QEQ_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/QEQ)
|
||||
file(GLOB QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix*.h)
|
||||
file(GLOB QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix*.cpp)
|
||||
|
||||
if(NOT PKG_MANYBODY)
|
||||
list(REMOVE_ITEM QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix_qeq_fire.h)
|
||||
list(REMOVE_ITEM QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix_qeq_fire.cpp)
|
||||
endif()
|
||||
set_property(GLOBAL PROPERTY "QEQ_SOURCES" "${QEQ_SOURCES}")
|
||||
|
||||
foreach(MY_HEADER ${QEQ_HEADERS})
|
||||
AddStyleHeader(${MY_HEADER} FIX)
|
||||
endforeach()
|
||||
|
||||
get_property(QEQ_SOURCES GLOBAL PROPERTY QEQ_SOURCES)
|
||||
list(APPEND LIB_SOURCES ${QEQ_SOURCES})
|
||||
include_directories(${QEQ_SOURCES_DIR})
|
||||
endif()
|
||||
8
cmake/Modules/Packages/USER-H5MD.cmake
Normal file
@ -0,0 +1,8 @@
|
||||
if(PKG_USER-H5MD)
|
||||
enable_language(C)
|
||||
|
||||
find_package(HDF5 REQUIRED)
|
||||
target_link_libraries(h5md ${HDF5_LIBRARIES})
|
||||
target_include_directories(h5md PRIVATE ${HDF5_INCLUDE_DIRS})
|
||||
include_directories(${HDF5_INCLUDE_DIRS})
|
||||
endif()
|
||||
118
cmake/Modules/Packages/USER-INTEL.cmake
Normal file
@ -0,0 +1,118 @@
|
||||
if(PKG_USER-INTEL)
|
||||
check_include_file_cxx(immintrin.h FOUND_IMMINTRIN)
|
||||
if(NOT FOUND_IMMINTRIN)
|
||||
message(FATAL_ERROR "immintrin.h header not found, Intel package won't work without it")
|
||||
endif()
|
||||
|
||||
add_definitions(-DLMP_USER_INTEL)
|
||||
|
||||
set(INTEL_ARCH "cpu" CACHE STRING "Architectures used by USER-INTEL (cpu or knl)")
|
||||
set(INTEL_ARCH_VALUES cpu knl)
|
||||
set_property(CACHE INTEL_ARCH PROPERTY STRINGS ${INTEL_ARCH_VALUES})
|
||||
validate_option(INTEL_ARCH INTEL_ARCH_VALUES)
|
||||
string(TOUPPER ${INTEL_ARCH} INTEL_ARCH)
|
||||
|
||||
find_package(Threads QUIET)
|
||||
if(Threads_FOUND)
|
||||
set(INTEL_LRT_MODE "threads" CACHE STRING "Long-range threads mode (none, threads, or c++11)")
|
||||
else()
|
||||
set(INTEL_LRT_MODE "none" CACHE STRING "Long-range threads mode (none, threads, or c++11)")
|
||||
endif()
|
||||
set(INTEL_LRT_VALUES none threads c++11)
|
||||
set_property(CACHE INTEL_LRT_MODE PROPERTY STRINGS ${INTEL_LRT_VALUES})
|
||||
validate_option(INTEL_LRT_MODE INTEL_LRT_VALUES)
|
||||
string(TOUPPER ${INTEL_LRT_MODE} INTEL_LRT_MODE)
|
||||
if(INTEL_LRT_MODE STREQUAL "THREADS")
|
||||
if(Threads_FOUND)
|
||||
add_definitions(-DLMP_INTEL_USELRT)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${CMAKE_THREAD_LIBS_INIT})
|
||||
else()
|
||||
message(FATAL_ERROR "Must have working threads library for Long-range thread support")
|
||||
endif()
|
||||
endif()
|
||||
if(INTEL_LRT_MODE STREQUAL "C++11")
|
||||
add_definitions(-DLMP_INTEL_USERLRT -DLMP_INTEL_LRT11)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
|
||||
message(FATAL_ERROR "USER-INTEL needs at least a 2016 Intel compiler, found ${CMAKE_CXX_COMPILER_VERSION}")
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "USER-INTEL gives best performance with Intel compilers")
|
||||
endif()
|
||||
|
||||
find_package(TBB QUIET)
|
||||
if(TBB_FOUND)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${TBB_MALLOC_LIBRARIES})
|
||||
else()
|
||||
add_definitions(-DLMP_INTEL_NO_TBB)
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||
message(WARNING "USER-INTEL with Intel compilers should use TBB malloc libraries")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(MKL QUIET)
|
||||
if(MKL_FOUND)
|
||||
add_definitions(-DLMP_USE_MKL_RNG)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${MKL_LIBRARIES})
|
||||
else()
|
||||
message(STATUS "Pair style dpd/intel will be faster with MKL libraries")
|
||||
endif()
|
||||
|
||||
if((NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "64") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "128") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "256"))
|
||||
message(FATAL_ERROR "USER-INTEL only supports memory alignment of 64, 128 or 256 on this platform")
|
||||
endif()
|
||||
|
||||
if(INTEL_ARCH STREQUAL "KNL")
|
||||
if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||
message(FATAL_ERROR "Must use Intel compiler with USER-INTEL for KNL architecture")
|
||||
endif()
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload")
|
||||
set(MIC_OPTIONS "-qoffload-option,mic,compiler,\"-fp-model fast=2 -mGLOB_default_function_attrs=\\\"gather_scatter_loop_unroll=4\\\"\"")
|
||||
add_compile_options(-xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS})
|
||||
add_definitions(-DLMP_INTEL_OFFLOAD)
|
||||
else()
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xCOMMON-AVX512")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHost")
|
||||
endif()
|
||||
include(CheckCXXCompilerFlag)
|
||||
foreach(_FLAG -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high -qno-offload -fno-alias -ansi-alias -restrict)
|
||||
check_cxx_compiler_flag("${__FLAG}" COMPILER_SUPPORTS${_FLAG})
|
||||
if(COMPILER_SUPPORTS${_FLAG})
|
||||
add_compile_options(${_FLAG})
|
||||
endif()
|
||||
endforeach()
|
||||
else()
|
||||
add_compile_options(-O3 -ffast-math)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# collect sources
|
||||
set(USER-INTEL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-INTEL)
|
||||
set(USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/fix_intel.cpp
|
||||
${USER-INTEL_SOURCES_DIR}/fix_nh_intel.cpp
|
||||
${USER-INTEL_SOURCES_DIR}/intel_buffers.cpp
|
||||
${USER-INTEL_SOURCES_DIR}/nbin_intel.cpp
|
||||
${USER-INTEL_SOURCES_DIR}/npair_intel.cpp)
|
||||
|
||||
set_property(GLOBAL PROPERTY "USER-INTEL_SOURCES" "${USER-INTEL_SOURCES}")
|
||||
|
||||
# detect styles which have a USER-INTEL version
|
||||
RegisterStylesExt(${USER-INTEL_SOURCES_DIR} intel USER-INTEL_SOURCES)
|
||||
RegisterNBinStyle(${USER-INTEL_SOURCES_DIR}/nbin_intel.h)
|
||||
RegisterNPairStyle(${USER-INTEL_SOURCES_DIR}/npair_intel.h)
|
||||
RegisterFixStyle(${USER-INTEL_SOURCES_DIR}/fix_intel.h)
|
||||
|
||||
get_property(USER-INTEL_SOURCES GLOBAL PROPERTY USER-INTEL_SOURCES)
|
||||
if(PKG_KSPACE)
|
||||
list(APPEND USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.cpp)
|
||||
RegisterIntegrateStyle(${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.h)
|
||||
endif()
|
||||
|
||||
list(APPEND LIB_SOURCES ${USER-INTEL_SOURCES})
|
||||
include_directories(${USER-INTEL_SOURCES_DIR})
|
||||
endif()
|
||||
10
cmake/Modules/Packages/USER-MOLFILE.cmake
Normal file
@ -0,0 +1,10 @@
|
||||
if(PKG_USER-MOLFILE)
|
||||
set(MOLFILE_INCLUDE_DIRS "${LAMMPS_LIB_SOURCE_DIR}/molfile" CACHE STRING "Path to VMD molfile plugin headers")
|
||||
add_library(molfile INTERFACE)
|
||||
target_include_directories(molfile INTERFACE ${MOLFILE_INCLUDE_DIRS})
|
||||
# no need to link with -ldl on windows
|
||||
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
target_link_libraries(molfile INTERFACE ${CMAKE_DL_LIBS})
|
||||
endif()
|
||||
list(APPEND LAMMPS_LINK_LIBS molfile)
|
||||
endif()
|
||||
6
cmake/Modules/Packages/USER-NETCDF.cmake
Normal file
@ -0,0 +1,6 @@
|
||||
if(PKG_USER-NETCDF)
|
||||
find_package(NetCDF REQUIRED)
|
||||
include_directories(${NETCDF_INCLUDE_DIRS})
|
||||
list(APPEND LAMMPS_LINK_LIBS ${NETCDF_LIBRARIES})
|
||||
add_definitions(-DLMP_HAS_NETCDF -DNC_64BIT_DATA=0x0020)
|
||||
endif()
|
||||
42
cmake/Modules/Packages/USER-OMP.cmake
Normal file
@ -0,0 +1,42 @@
|
||||
if(PKG_USER-OMP)
|
||||
set(USER-OMP_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-OMP)
|
||||
set(USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/thr_data.cpp
|
||||
${USER-OMP_SOURCES_DIR}/thr_omp.cpp
|
||||
${USER-OMP_SOURCES_DIR}/fix_omp.cpp
|
||||
${USER-OMP_SOURCES_DIR}/fix_nh_omp.cpp
|
||||
${USER-OMP_SOURCES_DIR}/fix_nh_sphere_omp.cpp
|
||||
${USER-OMP_SOURCES_DIR}/domain_omp.cpp)
|
||||
add_definitions(-DLMP_USER_OMP)
|
||||
set_property(GLOBAL PROPERTY "OMP_SOURCES" "${USER-OMP_SOURCES}")
|
||||
|
||||
# detects styles which have USER-OMP version
|
||||
RegisterStylesExt(${USER-OMP_SOURCES_DIR} omp OMP_SOURCES)
|
||||
RegisterFixStyle(${USER-OMP_SOURCES_DIR}/fix_omp.h)
|
||||
|
||||
get_property(USER-OMP_SOURCES GLOBAL PROPERTY OMP_SOURCES)
|
||||
|
||||
# manually add package dependent source files from USER-OMP that do not provide styles
|
||||
|
||||
if(PKG_ASPHERE)
|
||||
list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_nh_asphere_omp.cpp)
|
||||
endif()
|
||||
|
||||
if(PKG_RIGID)
|
||||
list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_rigid_nh_omp.cpp)
|
||||
endif()
|
||||
|
||||
if(PKG_USER-REAXC)
|
||||
list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/reaxc_bond_orders_omp.cpp
|
||||
${USER-OMP_SOURCES_DIR}/reaxc_hydrogen_bonds_omp.cpp
|
||||
${USER-OMP_SOURCES_DIR}/reaxc_nonbonded_omp.cpp
|
||||
${USER-OMP_SOURCES_DIR}/reaxc_bonds_omp.cpp
|
||||
${USER-OMP_SOURCES_DIR}/reaxc_init_md_omp.cpp
|
||||
${USER-OMP_SOURCES_DIR}/reaxc_torsion_angles_omp.cpp
|
||||
${USER-OMP_SOURCES_DIR}/reaxc_forces_omp.cpp
|
||||
${USER-OMP_SOURCES_DIR}/reaxc_multi_body_omp.cpp
|
||||
${USER-OMP_SOURCES_DIR}/reaxc_valence_angles_omp.cpp)
|
||||
endif()
|
||||
|
||||
list(APPEND LIB_SOURCES ${USER-OMP_SOURCES})
|
||||
include_directories(${USER-OMP_SOURCES_DIR})
|
||||
endif()
|
||||
91
cmake/Modules/Packages/USER-PLUMED.cmake
Normal file
@ -0,0 +1,91 @@
|
||||
if(PKG_USER-PLUMED)
|
||||
set(PLUMED_MODE "static" CACHE STRING "Linkage mode for Plumed2 library")
|
||||
set(PLUMED_MODE_VALUES static shared runtime)
|
||||
set_property(CACHE PLUMED_MODE PROPERTY STRINGS ${PLUMED_MODE_VALUES})
|
||||
validate_option(PLUMED_MODE PLUMED_MODE_VALUES)
|
||||
string(TOUPPER ${PLUMED_MODE} PLUMED_MODE)
|
||||
|
||||
set(PLUMED_LINK_LIBS "")
|
||||
if(PLUMED_MODE STREQUAL "STATIC")
|
||||
find_package(LAPACK REQUIRED)
|
||||
find_package(BLAS REQUIRED)
|
||||
find_package(GSL REQUIRED)
|
||||
list(APPEND LAPACK_LIBRARIES ${BLAS_LIBRARIES})
|
||||
list(APPEND PLUMED_LINK_LIBS ${LAPACK_LIBRARIES} ${GSL_LIBRARIES})
|
||||
find_package(ZLIB QUIET)
|
||||
if(ZLIB_FOUND)
|
||||
list(APPEND PLUMED_LINK_LIBS ${ZLIB_LIBRARIES})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(PkgConfig QUIET)
|
||||
set(DOWNLOAD_PLUMED_DEFAULT ON)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(PLUMED QUIET plumed)
|
||||
if(PLUMED_FOUND)
|
||||
set(DOWNLOAD_PLUMED_DEFAULT OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
option(DOWNLOAD_PLUMED "Download Plumed package instead of using an already installed one" ${DOWNLOAD_PLUMED_DEFAULT})
|
||||
if(DOWNLOAD_PLUMED)
|
||||
if(CMAKE_GENERATOR STREQUAL "Ninja")
|
||||
message(FATAL_ERROR "Cannot build downloaded Plumed library with Ninja build tool")
|
||||
endif()
|
||||
if(BUILD_MPI)
|
||||
set(PLUMED_CONFIG_MPI "--enable-mpi")
|
||||
set(PLUMED_CONFIG_CC ${CMAKE_MPI_C_COMPILER})
|
||||
set(PLUMED_CONFIG_CXX ${CMAKE_MPI_CXX_COMPILER})
|
||||
else()
|
||||
set(PLUMED_CONFIG_MPI "--disable-mpi")
|
||||
set(PLUMED_CONFIG_CC ${CMAKE_C_COMPILER})
|
||||
set(PLUMED_CONFIG_CXX ${CMAKE_CXX_COMPILER})
|
||||
endif()
|
||||
if(BUILD_OMP)
|
||||
set(PLUMED_CONFIG_OMP "--enable-openmp")
|
||||
else()
|
||||
set(PLUMED_CONFIG_OMP "--disable-openmp")
|
||||
endif()
|
||||
message(STATUS "PLUMED download requested - we will build our own")
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(plumed_build
|
||||
URL https://github.com/plumed/plumed2/releases/download/v2.5.2/plumed-src-2.5.2.tgz
|
||||
URL_MD5 bd2f18346c788eb54e1e52f4f6acf41a
|
||||
BUILD_IN_SOURCE 1
|
||||
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
|
||||
${CONFIGURE_REQUEST_PIC}
|
||||
--enable-modules=all
|
||||
${PLUMED_CONFIG_MPI}
|
||||
${PLUMED_CONFIG_OMP}
|
||||
CXX=${PLUMED_CONFIG_CXX}
|
||||
CC=${PLUMED_CONFIG_CC}
|
||||
)
|
||||
ExternalProject_get_property(plumed_build INSTALL_DIR)
|
||||
set(PLUMED_INSTALL_DIR ${INSTALL_DIR})
|
||||
list(APPEND LAMMPS_DEPS plumed_build)
|
||||
if(PLUMED_MODE STREQUAL "STATIC")
|
||||
add_definitions(-D__PLUMED_WRAPPER_CXX=1)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.a ${PLUMED_LINK_LIBS} ${CMAKE_DL_LIBS})
|
||||
elseif(PLUMED_MODE STREQUAL "SHARED")
|
||||
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} ${PLUMED_INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX} ${CMAKE_DL_LIBS})
|
||||
elseif(PLUMED_MODE STREQUAL "RUNTIME")
|
||||
add_definitions(-D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumedWrapper.a -rdynamic ${CMAKE_DL_LIBS})
|
||||
endif()
|
||||
set(PLUMED_INCLUDE_DIRS "${PLUMED_INSTALL_DIR}/include")
|
||||
else()
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(PLUMED REQUIRED plumed)
|
||||
if(PLUMED_MODE STREQUAL "STATIC")
|
||||
add_definitions(-D__PLUMED_WRAPPER_CXX=1)
|
||||
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.static)
|
||||
elseif(PLUMED_MODE STREQUAL "SHARED")
|
||||
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.shared)
|
||||
elseif(PLUMED_MODE STREQUAL "RUNTIME")
|
||||
add_definitions(-D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.runtime)
|
||||
endif()
|
||||
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_LOAD})
|
||||
endif()
|
||||
include_directories(${PLUMED_INCLUDE_DIRS})
|
||||
endif()
|
||||
9
cmake/Modules/Packages/USER-QMMM.cmake
Normal file
@ -0,0 +1,9 @@
|
||||
if(PKG_USER-QMMM)
|
||||
enable_language(Fortran)
|
||||
enable_language(C)
|
||||
|
||||
message(WARNING "Building QMMM with CMake is still experimental")
|
||||
find_package(QE REQUIRED)
|
||||
include_directories(${QE_INCLUDE_DIRS})
|
||||
list(APPEND LAMMPS_LINK_LIBS ${QE_LIBRARIES})
|
||||
endif()
|
||||
5
cmake/Modules/Packages/USER-QUIP.cmake
Normal file
@ -0,0 +1,5 @@
|
||||
if(PKG_USER-QUIP)
|
||||
enable_language(Fortran)
|
||||
find_package(QUIP REQUIRED)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${QUIP_LIBRARIES} ${LAPACK_LIBRARIES})
|
||||
endif()
|
||||
62
cmake/Modules/Packages/USER-SCAFACOS.cmake
Normal file
@ -0,0 +1,62 @@
|
||||
if(PKG_USER-SCAFACOS)
|
||||
enable_language(Fortran)
|
||||
enable_language(C)
|
||||
|
||||
find_package(GSL REQUIRED)
|
||||
find_package(PkgConfig QUIET)
|
||||
set(DOWNLOAD_SCAFACOS_DEFAULT ON)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(SCAFACOS QUIET scafacos)
|
||||
if(SCAFACOS_FOUND)
|
||||
set(DOWNLOAD_SCAFACOS_DEFAULT OFF)
|
||||
endif()
|
||||
endif()
|
||||
option(DOWNLOAD_SCAFACOS "Download ScaFaCoS library instead of using an already installed one" ${DOWNLOAD_SCAFACOS_DEFAULT})
|
||||
if(DOWNLOAD_SCAFACOS)
|
||||
if(CMAKE_GENERATOR STREQUAL "Ninja")
|
||||
message(FATAL_ERROR "Cannot build downloaded ScaFaCoS library with Ninja build tool")
|
||||
endif()
|
||||
message(STATUS "ScaFaCoS download requested - we will build our own")
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(scafacos_build
|
||||
URL https://github.com/scafacos/scafacos/releases/download/v1.0.1/scafacos-1.0.1.tar.gz
|
||||
URL_MD5 bd46d74e3296bd8a444d731bb10c1738
|
||||
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --disable-doc
|
||||
--enable-fcs-solvers=fmm,p2nfft,direct,ewald,p3m
|
||||
--with-internal-fftw --with-internal-pfft
|
||||
--with-internal-pnfft ${CONFIGURE_REQUEST_PIC}
|
||||
FC=${CMAKE_MPI_Fortran_COMPILER}
|
||||
CXX=${CMAKE_MPI_CXX_COMPILER}
|
||||
CC=${CMAKE_MPI_C_COMPILER}
|
||||
F77=
|
||||
)
|
||||
ExternalProject_get_property(scafacos_build INSTALL_DIR)
|
||||
set(SCAFACOS_BUILD_DIR ${INSTALL_DIR})
|
||||
set(SCAFACOS_INCLUDE_DIRS ${SCAFACOS_BUILD_DIR}/include)
|
||||
list(APPEND LAMMPS_DEPS scafacos_build)
|
||||
# list and order from pkg_config file of ScaFaCoS build
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_direct.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_ewald.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_fmm.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_p2nfft.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_p3m.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${GSL_LIBRARIES})
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_near.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_gridsort.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_resort.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_redist.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_common.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_pnfft.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_pfft.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_fftw3_mpi.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_fftw3.a)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${MPI_Fortran_LIBRARIES})
|
||||
list(APPEND LAMMPS_LINK_LIBS ${MPI_C_LIBRARIES})
|
||||
else()
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(SCAFACOS REQUIRED scafacos)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_LDFLAGS})
|
||||
endif()
|
||||
include_directories(${SCAFACOS_INCLUDE_DIRS})
|
||||
endif()
|
||||
13
cmake/Modules/Packages/USER-SDPD.cmake
Normal file
@ -0,0 +1,13 @@
|
||||
# Fix rigid/meso requires RIGID to be installed
|
||||
if(PKG_USER-SDPD)
|
||||
set(USER-SDPD_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-SDPD)
|
||||
|
||||
get_property(hlist GLOBAL PROPERTY FIX)
|
||||
if(NOT PKG_RIGID)
|
||||
list(REMOVE_ITEM hlist ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.h)
|
||||
list(REMOVE_ITEM LIB_SOURCES ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.cpp)
|
||||
endif()
|
||||
set_property(GLOBAL PROPERTY FIX "${hlist}")
|
||||
|
||||
include_directories(${USER-SDPD_SOURCES_DIR})
|
||||
endif()
|
||||
28
cmake/Modules/Packages/USER-SMD.cmake
Normal file
@ -0,0 +1,28 @@
|
||||
if(PKG_USER-SMD)
|
||||
find_package(Eigen3 NO_MODULE)
|
||||
if(EIGEN3_FOUND)
|
||||
set(DOWNLOAD_EIGEN3_DEFAULT OFF)
|
||||
else()
|
||||
set(DOWNLOAD_EIGEN3_DEFAULT ON)
|
||||
endif()
|
||||
option(DOWNLOAD_EIGEN3 "Download Eigen3 instead of using an already installed one)" ${DOWNLOAD_EIGEN3_DEFAULT})
|
||||
if(DOWNLOAD_EIGEN3)
|
||||
message(STATUS "Eigen3 download requested - we will build our own")
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(Eigen3_build
|
||||
URL http://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz
|
||||
URL_MD5 f2a417d083fe8ca4b8ed2bc613d20f07
|
||||
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
|
||||
)
|
||||
ExternalProject_get_property(Eigen3_build SOURCE_DIR)
|
||||
set(EIGEN3_INCLUDE_DIR ${SOURCE_DIR})
|
||||
list(APPEND LAMMPS_DEPS Eigen3_build)
|
||||
else()
|
||||
find_package(Eigen3 NO_MODULE)
|
||||
mark_as_advanced(Eigen3_DIR)
|
||||
if(NOT EIGEN3_FOUND)
|
||||
message(FATAL_ERROR "Eigen3 not found, help CMake to find it by setting EIGEN3_INCLUDE_DIR, or set DOWNLOAD_EIGEN3=ON to download it")
|
||||
endif()
|
||||
endif()
|
||||
include_directories(${EIGEN3_INCLUDE_DIR})
|
||||
endif()
|
||||
6
cmake/Modules/Packages/USER-VTK.cmake
Normal file
@ -0,0 +1,6 @@
|
||||
if(PKG_USER-VTK)
|
||||
find_package(VTK REQUIRED NO_MODULE)
|
||||
include(${VTK_USE_FILE})
|
||||
add_definitions(-DLAMMPS_VTK)
|
||||
list(APPEND LAMMPS_LINK_LIBS ${VTK_LIBRARIES})
|
||||
endif()
|
||||
41
cmake/Modules/Packages/VORONOI.cmake
Normal file
@ -0,0 +1,41 @@
|
||||
if(PKG_VORONOI)
|
||||
find_package(VORO)
|
||||
if(VORO_FOUND)
|
||||
set(DOWNLOAD_VORO_DEFAULT OFF)
|
||||
else()
|
||||
set(DOWNLOAD_VORO_DEFAULT ON)
|
||||
endif()
|
||||
option(DOWNLOAD_VORO "Download and compile the Voro++ library instead of using an already installed one" ${DOWNLOAD_VORO_DEFAULT})
|
||||
if(DOWNLOAD_VORO)
|
||||
if(CMAKE_GENERATOR STREQUAL "Ninja")
|
||||
message(FATAL_ERROR "Cannot build downloaded Voro++ library with Ninja build tool")
|
||||
endif()
|
||||
message(STATUS "Voro++ download requested - we will build our own")
|
||||
include(ExternalProject)
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
set(VORO_BUILD_CFLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}")
|
||||
else()
|
||||
set(VORO_BUILD_CFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}")
|
||||
endif()
|
||||
string(APPEND VORO_BUILD_CFLAGS ${CMAKE_CXX_FLAGS})
|
||||
set(VORO_BUILD_OPTIONS CXX=${CMAKE_CXX_COMPILER} CFLAGS=${VORO_BUILD_CFLAGS})
|
||||
|
||||
ExternalProject_Add(voro_build
|
||||
URL https://download.lammps.org/thirdparty/voro++-0.4.6.tar.gz
|
||||
URL_MD5 2338b824c3b7b25590e18e8df5d68af9
|
||||
CONFIGURE_COMMAND "" BUILD_COMMAND make ${VORO_BUILD_OPTIONS} BUILD_IN_SOURCE 1 INSTALL_COMMAND ""
|
||||
)
|
||||
ExternalProject_get_property(voro_build SOURCE_DIR)
|
||||
set(VORO_LIBRARIES ${SOURCE_DIR}/src/libvoro++.a)
|
||||
set(VORO_INCLUDE_DIRS ${SOURCE_DIR}/src)
|
||||
list(APPEND LAMMPS_DEPS voro_build)
|
||||
else()
|
||||
find_package(VORO)
|
||||
if(NOT VORO_FOUND)
|
||||
message(FATAL_ERROR "Voro++ library not found. Help CMake to find it by setting VORO_LIBRARY and VORO_INCLUDE_DIR, or set DOWNLOAD_VORO=ON to download it")
|
||||
endif()
|
||||
endif()
|
||||
include_directories(${VORO_INCLUDE_DIRS})
|
||||
list(APPEND LAMMPS_LINK_LIBS ${VORO_LIBRARIES})
|
||||
endif()
|
||||
@ -181,3 +181,88 @@ function(DetectBuildSystemConflict lammps_src_dir)
|
||||
endforeach()
|
||||
endif()
|
||||
endfunction(DetectBuildSystemConflict)
|
||||
|
||||
|
||||
function(FindPackagesHeaders path style_class file_pattern headers)
|
||||
file(GLOB files "${path}/${file_pattern}*.h")
|
||||
get_property(plist GLOBAL PROPERTY ${headers})
|
||||
|
||||
foreach(file_name ${files})
|
||||
file(STRINGS ${file_name} is_style LIMIT_COUNT 1 REGEX ${style_class})
|
||||
if(is_style)
|
||||
list(APPEND plist ${file_name})
|
||||
endif()
|
||||
endforeach()
|
||||
set_property(GLOBAL PROPERTY ${headers} "${plist}")
|
||||
endfunction(FindPackagesHeaders)
|
||||
|
||||
function(RegisterPackages search_path)
|
||||
FindPackagesHeaders(${search_path} ANGLE_CLASS angle_ PKGANGLE ) # angle ) # force
|
||||
FindPackagesHeaders(${search_path} ATOM_CLASS atom_vec_ PKGATOM_VEC ) # atom ) # atom atom_vec_hybrid
|
||||
FindPackagesHeaders(${search_path} BODY_CLASS body_ PKGBODY ) # body ) # atom_vec_body
|
||||
FindPackagesHeaders(${search_path} BOND_CLASS bond_ PKGBOND ) # bond ) # force
|
||||
FindPackagesHeaders(${search_path} COMMAND_CLASS "[^.]" PKGCOMMAND ) # command ) # input
|
||||
FindPackagesHeaders(${search_path} COMPUTE_CLASS compute_ PKGCOMPUTE ) # compute ) # modify
|
||||
FindPackagesHeaders(${search_path} DIHEDRAL_CLASS dihedral_ PKGDIHEDRAL ) # dihedral ) # force
|
||||
FindPackagesHeaders(${search_path} DUMP_CLASS dump_ PKGDUMP ) # dump ) # output write_dump
|
||||
FindPackagesHeaders(${search_path} FIX_CLASS fix_ PKGFIX ) # fix ) # modify
|
||||
FindPackagesHeaders(${search_path} IMPROPER_CLASS improper_ PKGIMPROPER ) # improper ) # force
|
||||
FindPackagesHeaders(${search_path} INTEGRATE_CLASS "[^.]" PKGINTEGRATE ) # integrate ) # update
|
||||
FindPackagesHeaders(${search_path} KSPACE_CLASS "[^.]" PKGKSPACE ) # kspace ) # force
|
||||
FindPackagesHeaders(${search_path} MINIMIZE_CLASS min_ PKGMINIMIZE ) # minimize ) # update
|
||||
FindPackagesHeaders(${search_path} NBIN_CLASS nbin_ PKGNBIN ) # nbin ) # neighbor
|
||||
FindPackagesHeaders(${search_path} NPAIR_CLASS npair_ PKGNPAIR ) # npair ) # neighbor
|
||||
FindPackagesHeaders(${search_path} NSTENCIL_CLASS nstencil_ PKGNSTENCIL ) # nstencil ) # neighbor
|
||||
FindPackagesHeaders(${search_path} NTOPO_CLASS ntopo_ PKGNTOPO ) # ntopo ) # neighbor
|
||||
FindPackagesHeaders(${search_path} PAIR_CLASS pair_ PKGPAIR ) # pair ) # force
|
||||
FindPackagesHeaders(${search_path} READER_CLASS reader_ PKGREADER ) # reader ) # read_dump
|
||||
FindPackagesHeaders(${search_path} REGION_CLASS region_ PKGREGION ) # region ) # domain
|
||||
endfunction(RegisterPackages)
|
||||
|
||||
function(CreatePackagesHeader path filename)
|
||||
set(temp "")
|
||||
if(ARGC GREATER 2)
|
||||
list(REMOVE_AT ARGV 0 1)
|
||||
foreach(FNAME ${ARGV})
|
||||
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${FNAME}")
|
||||
get_filename_component(DNAME ${FNAME} DIRECTORY)
|
||||
get_filename_component(DNAME ${DNAME} NAME)
|
||||
get_filename_component(FNAME ${FNAME} NAME)
|
||||
set(temp "${temp}#undef PACKAGE\n#define PACKAGE \"${DNAME}\"\n")
|
||||
set(temp "${temp}#include \"${DNAME}/${FNAME}\"\n")
|
||||
endforeach()
|
||||
endif()
|
||||
message(STATUS "Generating ${filename}...")
|
||||
file(WRITE "${path}/${filename}.tmp" "${temp}" )
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${path}/${filename}.tmp" "${path}/${filename}")
|
||||
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${path}/${filename}")
|
||||
endfunction(CreatePackagesHeader)
|
||||
|
||||
function(GeneratePackagesHeader path property style)
|
||||
get_property(files GLOBAL PROPERTY ${property})
|
||||
CreatePackagesHeader("${path}" "packages_${style}.h" ${files})
|
||||
endfunction(GeneratePackagesHeader)
|
||||
|
||||
function(GeneratePackagesHeaders output_path)
|
||||
GeneratePackagesHeader(${output_path} PKGANGLE angle ) # force
|
||||
GeneratePackagesHeader(${output_path} PKGATOM_VEC atom ) # atom atom_vec_hybrid
|
||||
GeneratePackagesHeader(${output_path} PKGBODY body ) # atom_vec_body
|
||||
GeneratePackagesHeader(${output_path} PKGBOND bond ) # force
|
||||
GeneratePackagesHeader(${output_path} PKGCOMMAND command ) # input
|
||||
GeneratePackagesHeader(${output_path} PKGCOMPUTE compute ) # modify
|
||||
GeneratePackagesHeader(${output_path} PKGDIHEDRAL dihedral ) # force
|
||||
GeneratePackagesHeader(${output_path} PKGDUMP dump ) # output write_dump
|
||||
GeneratePackagesHeader(${output_path} PKGFIX fix ) # modify
|
||||
GeneratePackagesHeader(${output_path} PKGIMPROPER improper ) # force
|
||||
GeneratePackagesHeader(${output_path} PKGINTEGRATE integrate ) # update
|
||||
GeneratePackagesHeader(${output_path} PKGKSPACE kspace ) # force
|
||||
GeneratePackagesHeader(${output_path} PKGMINIMIZE minimize ) # update
|
||||
GeneratePackagesHeader(${output_path} PKGNBIN nbin ) # neighbor
|
||||
GeneratePackagesHeader(${output_path} PKGNPAIR npair ) # neighbor
|
||||
GeneratePackagesHeader(${output_path} PKGNSTENCIL nstencil ) # neighbor
|
||||
GeneratePackagesHeader(${output_path} PKGNTOPO ntopo ) # neighbor
|
||||
GeneratePackagesHeader(${output_path} PKGPAIR pair ) # force
|
||||
GeneratePackagesHeader(${output_path} PKGREADER reader ) # read_dump
|
||||
GeneratePackagesHeader(${output_path} PKGREGION region ) # domain
|
||||
endfunction(GeneratePackagesHeaders)
|
||||
|
||||
|
||||
52
cmake/Modules/Testing.cmake
Normal file
@ -0,0 +1,52 @@
|
||||
###############################################################################
|
||||
# Testing
|
||||
###############################################################################
|
||||
option(ENABLE_TESTING "Enable testing" OFF)
|
||||
if(ENABLE_TESTING AND BUILD_EXE)
|
||||
enable_testing()
|
||||
option(LAMMPS_TESTING_SOURCE_DIR "Location of lammps-testing source directory" "")
|
||||
option(LAMMPS_TESTING_GIT_TAG "Git tag of lammps-testing" "master")
|
||||
mark_as_advanced(LAMMPS_TESTING_SOURCE_DIR LAMMPS_TESTING_GIT_TAG)
|
||||
|
||||
if (CMAKE_VERSION VERSION_GREATER "3.10.3" AND NOT LAMMPS_TESTING_SOURCE_DIR)
|
||||
include(FetchContent)
|
||||
|
||||
FetchContent_Declare(lammps-testing
|
||||
GIT_REPOSITORY https://github.com/lammps/lammps-testing.git
|
||||
GIT_TAG ${LAMMPS_TESTING_GIT_TAG}
|
||||
)
|
||||
|
||||
FetchContent_GetProperties(lammps-testing)
|
||||
if(NOT lammps-testing_POPULATED)
|
||||
message(STATUS "Downloading tests...")
|
||||
FetchContent_Populate(lammps-testing)
|
||||
endif()
|
||||
|
||||
set(LAMMPS_TESTING_SOURCE_DIR ${lammps-testing_SOURCE_DIR})
|
||||
elseif(NOT LAMMPS_TESTING_SOURCE_DIR)
|
||||
message(WARNING "Full test-suite requires CMake >= 3.11 or copy of\n"
|
||||
"https://github.com/lammps/lammps-testing in LAMMPS_TESTING_SOURCE_DIR")
|
||||
endif()
|
||||
|
||||
add_test(ShowHelp ${CMAKE_BINARY_DIR}/${LAMMPS_BINARY} -help)
|
||||
|
||||
if(EXISTS ${LAMMPS_TESTING_SOURCE_DIR})
|
||||
message(STATUS "Running test discovery...")
|
||||
|
||||
file(GLOB_RECURSE TEST_SCRIPTS ${LAMMPS_TESTING_SOURCE_DIR}/tests/core/*/in.*)
|
||||
foreach(script_path ${TEST_SCRIPTS})
|
||||
get_filename_component(TEST_NAME ${script_path} EXT)
|
||||
get_filename_component(SCRIPT_NAME ${script_path} NAME)
|
||||
get_filename_component(PARENT_DIR ${script_path} DIRECTORY)
|
||||
string(SUBSTRING ${TEST_NAME} 1 -1 TEST_NAME)
|
||||
string(REPLACE "-" "_" TEST_NAME ${TEST_NAME})
|
||||
string(REPLACE "+" "_" TEST_NAME ${TEST_NAME})
|
||||
set(TEST_NAME "test_core_${TEST_NAME}_serial")
|
||||
add_test(${TEST_NAME} ${CMAKE_BINARY_DIR}/${LAMMPS_BINARY} -in ${SCRIPT_NAME})
|
||||
set_tests_properties(${TEST_NAME} PROPERTIES WORKING_DIRECTORY ${PARENT_DIR})
|
||||
endforeach()
|
||||
list(LENGTH TEST_SCRIPTS NUM_TESTS)
|
||||
|
||||
message(STATUS "Found ${NUM_TESTS} tests.")
|
||||
endif()
|
||||
endif()
|
||||
@ -1,4 +1,4 @@
|
||||
# set environment for LAMMPS and msi2lmp executables
|
||||
# to find potential and force field files
|
||||
if ( "$?LAMMPS_POTENTIALS" == 0 ) setenv LAMMPS_POTENTIALS @LAMMPS_POTENTIALS_DIR@
|
||||
if ( "$?MSI2LMP_LIBRARY" == 0 ) setenv MSI2LMP_LIBRARY @LAMMPS_FRC_FILES_DIR@
|
||||
if ( "$?LAMMPS_POTENTIALS" == 0 ) setenv LAMMPS_POTENTIALS @LAMMPS_INSTALL_DATADIR@/potentials
|
||||
if ( "$?MSI2LMP_LIBRARY" == 0 ) setenv MSI2LMP_LIBRARY @LAMMPS_INSTALL_DATADIR@/frc_files
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
# set environment for LAMMPS and msi2lmp executables
|
||||
# to find potential and force field files
|
||||
LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS-@LAMMPS_POTENTIALS_DIR@}
|
||||
MSI2LMP_LIBRARY=${MSI2LMP_LIBRARY-@LAMMPS_FRC_FILES_DIR@}
|
||||
LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS-@LAMMPS_INSTALL_DATADIR@/potentials}
|
||||
MSI2LMP_LIBRARY=${MSI2LMP_LIBRARY-@LAMMPS_INSTALL_DATADIR@/frc_files}
|
||||
export LAMMPS_POTENTIALS MSI2LMP_LIBRARY
|
||||
|
||||
@ -211,7 +211,7 @@ $(VENV):
|
||||
@( \
|
||||
$(VIRTUALENV) -p $(PYTHON) $(VENV); \
|
||||
. $(VENV)/bin/activate; \
|
||||
pip install Sphinx==1.7.6; \
|
||||
pip install Sphinx; \
|
||||
deactivate;\
|
||||
)
|
||||
|
||||
|
||||
133
doc/include-file-conventions.md
Normal file
@ -0,0 +1,133 @@
|
||||
# Outline of include file conventions in LAMMPS
|
||||
|
||||
This purpose of this document is to provide a point of reference
|
||||
for LAMMPS developers and contributors as to what include files
|
||||
and definitions to put where into LAMMPS source.
|
||||
Last change 2019-07-05
|
||||
|
||||
## Table of Contents
|
||||
|
||||
* [Motivation](#motivation)
|
||||
* [Rules](#rules)
|
||||
* [Tools](#tools)
|
||||
* [Legacy Code](#legacy-code)
|
||||
|
||||
## Motivation
|
||||
|
||||
The conventions outlined in this document are supposed to help make
|
||||
maintenance of the LAMMPS software easier. By trying to achieve
|
||||
consistency across files contributed by different developers, it will
|
||||
become easier for the code maintainers to modify and adjust files and,
|
||||
overall, the chance for errors or portability issues will be reduced.
|
||||
The rules employed are supposed to minimize naming conflicts and
|
||||
simplify dependencies between files and thus speed up compilation. They
|
||||
may, as well, make otherwise hidden dependencies visible.
|
||||
|
||||
## Rules
|
||||
|
||||
Below are the various rules that are applied. Not all are enforced
|
||||
strictly and automatically. If there are no significant side effects,
|
||||
exceptions may be possible for cases where a full compliance to the
|
||||
rules may require a large effort compared to the benefit.
|
||||
|
||||
### Core Files Versus Package Files
|
||||
|
||||
All rules listed below are most strictly observed for core LAMMPS files,
|
||||
which are the files that are not part of a package, and the files of the
|
||||
packages MOLECULE, MANYBODY, KSPACE, and RIGID. On the other end of
|
||||
the spectrum are USER packages and legacy packages that predate these
|
||||
rules and thus may not be fully compliant. Also, new contributions
|
||||
will be checked more closely, while existing code will be incrementally
|
||||
adapted to the rules as time and required effort permits.
|
||||
|
||||
### System Versus Local Header Files
|
||||
|
||||
All system- or library-provided include files are included with angular
|
||||
brackets (examples: `#include <cstring>` or `#include <mpi.h>`) while
|
||||
include files provided with LAMMPS are included with double quotes
|
||||
(examples: `#include "pointers.h"` or `#include "compute_temp.h"`).
|
||||
|
||||
For headers declaring functions of the C-library, the corresponding
|
||||
C++ versions should be included (examples: `#include <cstdlib>` or
|
||||
`#include <cctypes>`). However, these includes are limited to those defined
|
||||
in the C++98 standard. Some files thus must use the older style until
|
||||
the minimum C++ standard requirement of LAMMPS is lifted to C++11 or
|
||||
even beyond (examples: `#include <stdint.h>` versus `#include <cstdint>`
|
||||
or `#include <inttypes.h>` versus `#include <cinttypes>`).
|
||||
|
||||
### C++ Standard Compliance
|
||||
|
||||
LAMMPS core files currently correspond to the C++98 standard. Files
|
||||
requiring C++11 or later are only permitted in (optional) packages
|
||||
and particularly packages that are not part of the list of commonly
|
||||
used packages such as MOLECULE, KSPACE, MANYBODY, or RIGID.
|
||||
|
||||
Also, LAMMPS uses the C-style stdio library for I/O instead of iostreams.
|
||||
Since using both at the same time can cause problems, iostreams should
|
||||
be avoided where possible.
|
||||
|
||||
### Lean Header Files
|
||||
|
||||
Header files will typically contain the definition of a (single) class.
|
||||
These header files should have as few include statements as possible.
|
||||
This is particularly important for classes that implement a "style" and
|
||||
thus use a macro of the kind `SomeStyle(some/name,SomeName)`. These will
|
||||
all be included in the auto-generated `"some_style.h"` files which
|
||||
results in a high potential for direct or indirect symbol name clashes.
|
||||
|
||||
In the ideal case, the header would only include one file defining the
|
||||
parent class. That would typically be either `#include "pointers.h"` for
|
||||
the `Pointers` class, or a header of a class derived from it like
|
||||
`#include "pair.h"` for the `Pair` class and so on. References to other
|
||||
classes inside the class should be make through pointers, for which forward
|
||||
declarations (inside the `LAMMPS_NS` or the new class' namespace) can
|
||||
be employed. The full definition will then be included into the corresponding
|
||||
implementation file. In the given example from above, the header file
|
||||
would be called `some_name.h` and the implementation `some_name.cpp` (all
|
||||
lower case with underscores, while the class itself would be in camel case
|
||||
and no underscores `SomeName`, and the style name with lower case names separated by
|
||||
a forward slash).
|
||||
|
||||
### Implementation Files
|
||||
|
||||
In the implementation files (typically, those would have the same base name
|
||||
as the corresponding header with a .cpp extension instead of .h) include
|
||||
statements should follow the "include what you use" principle.
|
||||
|
||||
### Order of Include Statements
|
||||
|
||||
Include files should be included in this order:
|
||||
* the header matching the implementation (`some_class.h` for file `some_class.cpp`)
|
||||
* mpi.h
|
||||
* system and library headers (anything that is using angular brackets; C-library headers first, then C++)
|
||||
* LAMMPS local headers (preferably in alphabetical order)
|
||||
|
||||
### Special Cases and Exceptions
|
||||
|
||||
#### pointers.h
|
||||
|
||||
The `pointer.h` header file also includes `cstdio` and `lmptype.h`
|
||||
(and through it `stdint.h`, `intttypes.h`, cstdlib, and `climits`).
|
||||
This means any header including `pointers.h` can assume that `FILE`,
|
||||
`NULL`, `INT_MAX` are defined.
|
||||
|
||||
## Tools
|
||||
|
||||
The [Include What You Use tool](https://include-what-you-use.org/)
|
||||
can be used to provide supporting information about compliance with
|
||||
the rules listed here. There are some limitations and the IWYU tool
|
||||
may give incorrect advice. The tools is activated by setting the
|
||||
CMake variable `CMAKE_CXX_INCLUDE_WHAT_YOU_USE` variable to the
|
||||
path of the `include-what-you-use` command. When activated, the
|
||||
tool will be run after each compilation and provide suggestions for
|
||||
which include files should be added or removed.
|
||||
|
||||
## Legacy Code
|
||||
|
||||
A lot of code predates the application of the rules in this document
|
||||
and the rules themselves are a moving target. So there are going to be
|
||||
significant chunks of code that do not fully comply. This applies
|
||||
for example to the USER-REAXC, or the USER-ATC package. The LAMMPS
|
||||
developers are dedicated to make an effort to improve the compliance
|
||||
and welcome volunteers wanting to help with the process.
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
.TH LAMMPS "15 May 2019" "2019-05-15"
|
||||
.TH LAMMPS "31 July 2019" "2019-07-31"
|
||||
.SH NAME
|
||||
.B LAMMPS
|
||||
\- Molecular Dynamics Simulator.
|
||||
|
||||
@ -32,10 +32,18 @@ cmake \[options ...\] ../cmake # configuration with (command-line) cmake
|
||||
make # compilation :pre
|
||||
|
||||
The cmake command will detect available features, enable selected
|
||||
packages and options, and will generate the build environment. The make
|
||||
command will then compile and link LAMMPS, producing (by default) an
|
||||
executable called "lmp" and a library called "liblammps.a" in the
|
||||
"build" folder.
|
||||
packages and options, and will generate the build environment. By default
|
||||
this build environment will be created for "Unix Makefiles" on most
|
||||
platforms and particularly on Linux. However, alternate build tools
|
||||
(e.g. Ninja) and support files for Integrated Development Environments
|
||||
(IDE) like Eclipse, CodeBlocks, or Kate can be generated, too. This is
|
||||
selected via the "-G" command line flag. For the rest of the documentation
|
||||
we will assume that the build environment is generated for makefiles
|
||||
and thus the make command will be used to compile and link LAMMPS as
|
||||
indicated above, producing (by default) an executable called "lmp" and
|
||||
a library called "liblammps.a" in the "build" folder. When generating
|
||||
a build environment for the "Ninja" build tool, the build command would
|
||||
be "ninja" instead of "make".
|
||||
|
||||
If your machine has multiple CPU cores (most do these days), using a
|
||||
command like "make -jN" (with N being the number of available local
|
||||
@ -44,11 +52,17 @@ LAMMPS or need to re-compile LAMMPS repeatedly, installation of the
|
||||
ccache (= Compiler Cache) software may speed up repeated compilation
|
||||
even more.
|
||||
|
||||
After compilation, you can optionally copy the LAMMPS executable and
|
||||
library into your system folders (by default under $HOME/.local) with:
|
||||
After compilation, you may optionally install the LAMMPS executable into
|
||||
your system with:
|
||||
|
||||
make install # optional, copy LAMMPS executable & library elsewhere :pre
|
||||
|
||||
This will install the lammps executable and library (if requested), some
|
||||
tools (if configured) and additional files like library API headers,
|
||||
manpages, potential and force field files. The location of the installation
|
||||
tree is set by the CMake variable "CMAKE_INSTALL_PREFIX" which defaults
|
||||
to $\{HOME\}/.local
|
||||
|
||||
:line
|
||||
|
||||
There are 3 variants of CMake: a command-line version (cmake), a text mode
|
||||
|
||||
@ -30,7 +30,6 @@ This is the list of packages that may require additional steps.
|
||||
"KIM"_#kim,
|
||||
"KOKKOS"_#kokkos,
|
||||
"LATTE"_#latte,
|
||||
"MEAM"_#meam,
|
||||
"MESSAGE"_#message,
|
||||
"MSCG"_#mscg,
|
||||
"OPT"_#opt,
|
||||
@ -173,22 +172,17 @@ KIM package :h4,link(kim)
|
||||
|
||||
To build with this package, the KIM library with API v2 must be downloaded
|
||||
and built on your system. It must include the KIM models that you want to
|
||||
use with LAMMPS. If you want to use the "kim_query"_kim_query.html
|
||||
use with LAMMPS. If you want to use the "kim_query"_kim_commands.html
|
||||
command, you also need to have libcurl installed with the matching
|
||||
development headers and the curl-config tool.
|
||||
|
||||
Note that in LAMMPS lingo, a KIM model driver is a pair style
|
||||
(e.g. EAM or Tersoff). A KIM model is a pair style for a particular
|
||||
element or alloy and set of parameters, e.g. EAM for Cu with a
|
||||
specific EAM potential file. Also note that downloading and installing
|
||||
the KIM API library with all its models, may take a long time (10s of
|
||||
minutes to hours) to build. Of course you only need to do that once.
|
||||
See "Obtaining KIM Models"_http://openkim.org/doc/usage/obtaining-models to
|
||||
learn how to install a pre-build binary of the OpenKIM Repository of Models.
|
||||
See the list of all KIM models here: https://openkim.org/browse/models
|
||||
|
||||
See the list of KIM model drivers here:
|
||||
https://openkim.org/browse/model-drivers/alphabetical
|
||||
|
||||
See the list of all KIM models here:
|
||||
https://openkim.org/browse/models/by-model-drivers
|
||||
(Also note that when downloading and installing from source
|
||||
the KIM API library with all its models, may take a long time (tens of
|
||||
minutes to hours) to build. Of course you only need to do that once.)
|
||||
|
||||
[CMake build]:
|
||||
|
||||
@ -351,49 +345,6 @@ the compiler you use on your system to build LATTE.
|
||||
|
||||
:line
|
||||
|
||||
MEAM package :h4,link(meam)
|
||||
|
||||
NOTE: the use of the MEAM package is discouraged, as it has been
|
||||
superseded by the USER-MEAMC package, which is a direct translation of
|
||||
the Fortran code in the MEAM library to C++. The code in USER-MEAMC
|
||||
should be functionally equivalent to the MEAM package, fully supports
|
||||
use of "pair_style hybrid"_pair_hybrid.html (the MEAM package does
|
||||
not), and has optimizations that make it significantly faster than the
|
||||
MEAM package.
|
||||
|
||||
[CMake build]:
|
||||
|
||||
No additional settings are needed besides "-D PKG_MEAM=yes".
|
||||
|
||||
[Traditional make]:
|
||||
|
||||
Before building LAMMPS, you must build the MEAM library in lib/meam.
|
||||
You can build the MEAM library manually if you prefer; follow the
|
||||
instructions in lib/meam/README. You can also do it in one step from
|
||||
the lammps/src dir, using a command like these, which simply invoke
|
||||
the lib/meam/Install.py script with the specified args:
|
||||
|
||||
make lib-meam # print help message
|
||||
make lib-meam args="-m mpi" # build with default Fortran compiler compatible with your MPI library
|
||||
make lib-meam args="-m serial" # build with compiler compatible with "make serial" (GNU Fortran)
|
||||
make lib-meam args="-m ifort" # build with Intel Fortran compiler using Makefile.ifort :pre
|
||||
|
||||
NOTE: You should test building the MEAM library with both the Intel
|
||||
and GNU compilers to see if a simulation runs faster with one versus
|
||||
the other on your system.
|
||||
|
||||
The build should produce two files: lib/meam/libmeam.a and
|
||||
lib/meam/Makefile.lammps. The latter is copied from an existing
|
||||
Makefile.lammps.* and has settings needed to link C++ (LAMMPS) with
|
||||
Fortran (MEAM library). Typically the two compilers used for LAMMPS
|
||||
and the MEAM library need to be consistent (e.g. both Intel or both
|
||||
GNU compilers). If necessary, you can edit/create a new
|
||||
lib/meam/Makefile.machine file for your system, which should define an
|
||||
EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
|
||||
file.
|
||||
|
||||
:line
|
||||
|
||||
MESSAGE package :h4,link(message)
|
||||
|
||||
This package can optionally include support for messaging via sockets,
|
||||
|
||||
@ -41,7 +41,6 @@ packages:
|
||||
"KIM"_Build_extras.html#kim,
|
||||
"KOKKOS"_Build_extras.html#kokkos,
|
||||
"LATTE"_Build_extras.html#latte,
|
||||
"MEAM"_Build_extras.html#meam,
|
||||
"MESSAGE"_Build_extras.html#message,
|
||||
"MSCG"_Build_extras.html#mscg,
|
||||
"OPT"_Build_extras.html#opt,
|
||||
|
||||
@ -33,6 +33,11 @@ commands in it are used to define a LAMMPS simulation.
|
||||
Commands_bond
|
||||
Commands_kspace
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
Commands_removed
|
||||
|
||||
END_RST -->
|
||||
|
||||
<!-- HTML_ONLY -->
|
||||
@ -49,5 +54,7 @@ END_RST -->
|
||||
"Bond, angle, dihedral, improper commands"_Commands_bond.html
|
||||
"KSpace solvers"_Commands_kspace.html :all(b)
|
||||
|
||||
"Removed commands and packages"_Commands_removed.html :all(b)
|
||||
|
||||
<!-- END_HTML_ONLY -->
|
||||
|
||||
|
||||
@ -50,11 +50,11 @@ An alphabetic list of all general LAMMPS commands.
|
||||
"dump"_dump.html,
|
||||
"dump adios"_dump_adios.html,
|
||||
"dump image"_dump_image.html,
|
||||
"dump_modify"_dump_modify.html,
|
||||
"dump movie"_dump_image.html,
|
||||
"dump netcdf"_dump_netcdf.html,
|
||||
"dump netcdf/mpiio"_dump_netcdf.html,
|
||||
"dump vtk"_dump_vtk.html,
|
||||
"dump_modify"_dump_modify.html,
|
||||
"dynamical_matrix"_dynamical_matrix.html,
|
||||
"echo"_echo.html,
|
||||
"fix"_fix.html,
|
||||
@ -68,7 +68,9 @@ An alphabetic list of all general LAMMPS commands.
|
||||
"improper_style"_improper_style.html,
|
||||
"include"_include.html,
|
||||
"jump"_jump.html,
|
||||
"kim_query"_kim_query.html,
|
||||
"kim_init"_kim_commands.html,
|
||||
"kim_interactions"_kim_commands.html,
|
||||
"kim_query"_kim_commands.html,
|
||||
"kspace_modify"_kspace_modify.html,
|
||||
"kspace_style"_kspace_style.html,
|
||||
"label"_label.html,
|
||||
|
||||
@ -28,8 +28,12 @@ OPT.
|
||||
|
||||
"none"_bond_none.html,
|
||||
"zero"_bond_zero.html,
|
||||
"hybrid"_bond_hybrid.html :tb(c=3,ea=c)
|
||||
|
||||
"hybrid"_bond_hybrid.html,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
"class2 (ko)"_bond_class2.html,
|
||||
"fene (iko)"_bond_fene.html,
|
||||
"fene/expand (o)"_bond_fene_expand.html,
|
||||
@ -56,8 +60,12 @@ OPT.
|
||||
|
||||
"none"_angle_none.html,
|
||||
"zero"_angle_zero.html,
|
||||
"hybrid"_angle_hybrid.html :tb(c=3,ea=c)
|
||||
|
||||
"hybrid"_angle_hybrid.html,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
"charmm (iko)"_angle_charmm.html,
|
||||
"class2 (ko)"_angle_class2.html,
|
||||
"class2/p6"_angle_class2.html,
|
||||
@ -89,8 +97,12 @@ OPT.
|
||||
|
||||
"none"_dihedral_none.html,
|
||||
"zero"_dihedral_zero.html,
|
||||
"hybrid"_dihedral_hybrid.html :tb(c=3,ea=c)
|
||||
|
||||
"hybrid"_dihedral_hybrid.html,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
"charmm (iko)"_dihedral_charmm.html,
|
||||
"charmmfsw"_dihedral_charmm.html,
|
||||
"class2 (ko)"_dihedral_class2.html,
|
||||
@ -117,8 +129,12 @@ OPT.
|
||||
|
||||
"none"_improper_none.html,
|
||||
"zero"_improper_zero.html,
|
||||
"hybrid"_improper_hybrid.html :tb(c=3,ea=c)
|
||||
|
||||
"hybrid"_improper_hybrid.html,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
"class2 (ko)"_improper_class2.html,
|
||||
"cossq (o)"_improper_cossq.html,
|
||||
"cvff (io)"_improper_cvff.html,
|
||||
|
||||
@ -66,6 +66,7 @@ KOKKOS, o = USER-OMP, t = OPT.
|
||||
"group/group"_compute_group_group.html,
|
||||
"gyration"_compute_gyration.html,
|
||||
"gyration/chunk"_compute_gyration_chunk.html,
|
||||
"gyration/shape"_compute_gyration_shape.html,
|
||||
"heat/flux"_compute_heat_flux.html,
|
||||
"heat/flux/tally"_compute_tally.html,
|
||||
"hexorder/atom"_compute_hexorder_atom.html,
|
||||
@ -80,6 +81,7 @@ KOKKOS, o = USER-OMP, t = OPT.
|
||||
"meso/e/atom"_compute_meso_e_atom.html,
|
||||
"meso/rho/atom"_compute_meso_rho_atom.html,
|
||||
"meso/t/atom"_compute_meso_t_atom.html,
|
||||
"momentum"_compute_momentum.html,
|
||||
"msd"_compute_msd.html,
|
||||
"msd/chunk"_compute_msd_chunk.html,
|
||||
"msd/nongauss"_compute_msd_nongauss.html,
|
||||
|
||||
@ -27,8 +27,11 @@ OPT.
|
||||
"none"_pair_none.html,
|
||||
"zero"_pair_zero.html,
|
||||
"hybrid (k)"_pair_hybrid.html,
|
||||
"hybrid/overlay (k)"_pair_hybrid.html :tb(c=4,ea=c)
|
||||
|
||||
"hybrid/overlay (k)"_pair_hybrid.html,
|
||||
,
|
||||
,
|
||||
,
|
||||
,
|
||||
"adp (o)"_pair_adp.html,
|
||||
"agni (o)"_pair_agni.html,
|
||||
"airebo (io)"_pair_airebo.html,
|
||||
@ -219,6 +222,8 @@ OPT.
|
||||
"sph/rhosum"_pair_sph_rhosum.html,
|
||||
"sph/taitwater"_pair_sph_taitwater.html,
|
||||
"sph/taitwater/morris"_pair_sph_taitwater_morris.html,
|
||||
"spin/dipole/cut"_pair_spin_dipole.html,
|
||||
"spin/dipole/long"_pair_spin_dipole.html,
|
||||
"spin/dmi"_pair_spin_dmi.html,
|
||||
"spin/exchange"_pair_spin_exchange.html,
|
||||
"spin/magelec"_pair_spin_magelec.html,
|
||||
|
||||
66
doc/src/Commands_removed.txt
Normal file
@ -0,0 +1,66 @@
|
||||
"Higher level section"_Commands.html - "LAMMPS WWW Site"_lws - "LAMMPS
|
||||
Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Commands.html)
|
||||
|
||||
:line
|
||||
|
||||
Removed commands and packages :h3
|
||||
|
||||
This page lists LAMMPS commands and packages that have been removed from
|
||||
the distribution and provides suggestions for alternatives or replacements.
|
||||
LAMMPS has special dummy styles implemented, that will stop LAMMPS and
|
||||
print a suitable error message in most cases, when a style/command is used
|
||||
that has been removed.
|
||||
|
||||
Fix ave/spatial and fix ave/spatial/sphere :h4
|
||||
|
||||
The fixes ave/spatial and ave/spatial/sphere have been removed from LAMMPS
|
||||
since they were superseded by the more general and extensible "chunk
|
||||
infrastructure". Here the system is partitioned in one of many possible
|
||||
ways through the "compute chunk/atom"_compute_chunk_atom.html command
|
||||
and then averaging is done using "fix ave/chunk"_fix_ave_chunk.html.
|
||||
Please refer to the "chunk HOWTO"_Howto_chunk.html section for an overview.
|
||||
|
||||
MEAM package :h4
|
||||
|
||||
The MEAM package has been removed since it was superseded by the
|
||||
"USER-MEAMC package"_Package_details.html#PKG-USER-MEAMC. The code in
|
||||
the USER-MEAMC package is a translation of the Fortran code of MEAM into C++,
|
||||
which removes several restrictions (e.g. there can be multiple instances
|
||||
in hybrid pair styles) and allows for some optimizations leading
|
||||
to better performance. The new pair style "meam/c"_pair_meamc.html has
|
||||
the exact same syntax as the old "meam" pair style and thus pair style
|
||||
"meam"_pair_meamc.html is an alias to the new style and backward
|
||||
compatibility of old inputs is preserved.
|
||||
|
||||
REAX package :h4
|
||||
|
||||
The REAX package has been removed since it was superseded by the
|
||||
"USER-REAXC package"_Package_details.html#PKG-USER-REAXC. The USER-REAXC
|
||||
package has been tested to yield equivalent results to the REAX package,
|
||||
offers better performance, supports OpenMP multi-threading via USER-OMP,
|
||||
and GPU and threading parallelization through KOKKOS. The new pair styles
|
||||
are not syntax compatible with the removed reax pair style, so input
|
||||
files will have to be adapted.
|
||||
|
||||
USER-CUDA package :h4
|
||||
|
||||
The USER-CUDA package had been removed, since it had been unmaintained
|
||||
for a long time and had known bugs and problems. Significant parts of
|
||||
the design were transferred to the
|
||||
"KOKKOS package"_Package_details.html#PKG-KOKKOS, which has similar
|
||||
performance characteristics on Nvidia GPUs. Both, the KOKKOS
|
||||
and the "GPU package"_Package_details.html#PKG-GPU are maintained
|
||||
and allow running LAMMPS with GPU acceleration.
|
||||
|
||||
restart2data tool :h4
|
||||
|
||||
The functionality of the restart2data tool has been folded into the
|
||||
LAMMPS executable directly instead of having a separate tool. A
|
||||
combination of the commands "read_restart"_read_restart.html and
|
||||
"write_data"_write_data.html can be used to the same effect. For added
|
||||
convenience this conversion can also be triggered by "command line
|
||||
flags"_Run_options.html
|
||||
15
doc/src/Eqs/angle_class2_p6.tex
Normal file
@ -0,0 +1,15 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\pagestyle{empty}
|
||||
\begin{document}
|
||||
|
||||
$$
|
||||
E_{a} = K_2\left(\theta - \theta_0\right)^2 + K_3\left(\theta - \theta_0\right)^3 + K_4\left(\theta - \theta_0\right)^4 + K_5\left(\theta - \theta_0\right)^5 + K_6\left(\theta - \theta_0\right)^6
|
||||
$$
|
||||
|
||||
\end{document}
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: t
|
||||
%%% End:
|
||||
15
doc/src/Eqs/angle_cosine_buck6d.tex
Normal file
@ -0,0 +1,15 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\pagestyle{empty}
|
||||
\begin{document}
|
||||
|
||||
$$
|
||||
E = K \left[ 1 + \cos(n\theta - \theta_0)\right]
|
||||
$$
|
||||
|
||||
\end{document}
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: t
|
||||
%%% End:
|
||||
BIN
doc/src/Eqs/compute_shape_parameters.jpg
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
13
doc/src/Eqs/compute_shape_parameters.tex
Normal file
@ -0,0 +1,13 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\pagestyle{empty}
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
c = l_z - 0.5(l_y+l_x) \\
|
||||
b = l_y - l_x \\
|
||||
k = \frac{3}{2} \frac{l_x^2+l_y^2+l_z^2}{(l_x+l_y+l_z)^2} - \frac{1}{2}
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
|
||||
15
doc/src/Eqs/improper_inversion_harmonic.tex
Normal file
@ -0,0 +1,15 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\pagestyle{empty}
|
||||
\begin{document}
|
||||
|
||||
$$
|
||||
E = K \left(\theta - \theta_0\right)^2
|
||||
$$
|
||||
|
||||
\end{document}
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: t
|
||||
%%% End:
|
||||
18
doc/src/Eqs/pair_agni.tex
Normal file
@ -0,0 +1,18 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\pagestyle{empty}
|
||||
\begin{document}
|
||||
|
||||
\begin{eqnarray*}
|
||||
F_i^u & = & \sum_t^{N_t}\alpha_t \cdot \exp\left[-\frac{\left(d_{i,t}^u\right)^2}{2l^2}\right] \\
|
||||
d_{i,t}^u & = & \left|\left| V_i^u(\eta) - V_t^u(\eta) \right|\right| \\
|
||||
V_i^u(\eta) & = & \sum_{j \neq i}\frac{r^u_{ij}}{r_{ij}} \cdot e^{-\left(\frac{r_{ij}}{\eta} \right)^2} \cdot f_d\left(r_{ij}\right) \\
|
||||
f_d\left(r_{ij}\right) & = & \frac{1}{2} \left[\cos\left(\frac{\pi r_{ij}}{R_c}\right) + 1 \right]
|
||||
\end{eqnarray*}
|
||||
|
||||
\end{document}
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: t
|
||||
%%% End:
|
||||
@ -1,6 +1,7 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\begin{document}
|
||||
\pagestyle{empty}
|
||||
|
||||
\begin{eqnarray*}
|
||||
E = A e^{-\kappa r} - \frac{C}{r^6} \cdot \frac{1}{1 + D r^{14}} \qquad r < r_c \\
|
||||
15
doc/src/Eqs/pair_coul_gauss.tex
Normal file
@ -0,0 +1,15 @@
|
||||
\documentclass[12pt]{article}
|
||||
|
||||
\pagestyle{empty}
|
||||
\begin{document}
|
||||
|
||||
$$
|
||||
E = \frac{C_{q_i q_j}}{\epsilon r_{ij}}\,\, \textrm{erf}\left(\alpha_{ij} r_{ij}\right)\quad\quad\quad r < r_c
|
||||
$$
|
||||
|
||||
\end{document}
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: t
|
||||
%%% End:
|
||||
BIN
doc/src/Eqs/pair_spin_dipole.jpg
Normal file
|
After Width: | Height: | Size: 38 KiB |
42
doc/src/Eqs/pair_spin_dipole.tex
Normal file
@ -0,0 +1,42 @@
|
||||
\documentclass[preview]{standalone}
|
||||
\usepackage{varwidth}
|
||||
\usepackage[utf8x]{inputenc}
|
||||
\usepackage{amsmath,amssymb,graphics,bm,setspace}
|
||||
|
||||
\begin{document}
|
||||
\begin{varwidth}{50in}
|
||||
\begin{equation}
|
||||
\mathcal{H}_{\rm long}=
|
||||
-\frac{\mu_{0} \left( \mu_B\right)^2}{4\pi}
|
||||
\sum_{i,j,i\neq j}^{N}
|
||||
\frac{g_i g_j}{r_{ij}^3}
|
||||
\Big(3
|
||||
\left(\bm{e}_{ij}\cdot \bm{s}_{i}\right)
|
||||
\left(\bm{e}_{ij}\cdot \bm{s}_{j}\right)
|
||||
-\bm{s}_i\cdot\bm{s}_j \Big)
|
||||
\nonumber
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
\bm{\omega}_i =
|
||||
\frac{\mu_0 (\mu_B)^2}{4\pi\hbar}\sum_{j}
|
||||
\frac{g_i g_j}{r_{ij}^3}
|
||||
\, \Big(
|
||||
3\,(\bm{e}_{ij}\cdot\bm{s}_{j})\bm{e}_{ij}
|
||||
-\bm{s}_{j} \Big) \nonumber
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
\bm{F}_i =
|
||||
\frac{3\, \mu_0 (\mu_B)^2}{4\pi} \sum_j
|
||||
\frac{g_i g_j}{r_{ij}^4}
|
||||
\Big[\big( (\bm{s}_i\cdot\bm{s}_j)
|
||||
-5(\bm{e}_{ij}\cdot\bm{s}_i)
|
||||
(\bm{e}_{ij}\cdot\bm{s}_j)\big) \bm{e}_{ij}+
|
||||
\big(
|
||||
(\bm{e}_{ij}\cdot\bm{s}_i)\bm{s}_j+
|
||||
(\bm{e}_{ij}\cdot\bm{s}_j)\bm{s}_i
|
||||
\big)
|
||||
\Big]
|
||||
\nonumber
|
||||
\end{equation}
|
||||
\end{varwidth}
|
||||
\end{document}
|
||||
BIN
doc/src/Eqs/pair_spin_long_range.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
20
doc/src/Eqs/pair_spin_long_range.tex
Normal file
@ -0,0 +1,20 @@
|
||||
\documentclass[preview]{standalone}
|
||||
\usepackage{varwidth}
|
||||
\usepackage[utf8x]{inputenc}
|
||||
\usepackage{amsmath,amssymb,graphics,bm,setspace}
|
||||
|
||||
\begin{document}
|
||||
\begin{varwidth}{50in}
|
||||
\begin{equation}
|
||||
\mathcal{H}_{\rm long}=
|
||||
-\frac{\mu_{0} \left( \mu_B\right)^2}{4\pi}
|
||||
\sum_{i,j,i\neq j}^{N}
|
||||
\frac{g_i g_j}{r_{ij}^3}
|
||||
\Big(3
|
||||
\left(\bm{e}_{ij}\cdot \bm{s}_{i}\right)
|
||||
\left(\bm{e}_{ij}\cdot \bm{s}_{j}\right)
|
||||
-\bm{s}_i\cdot\bm{s}_j \Big)
|
||||
\nonumber
|
||||
\end{equation}
|
||||
\end{varwidth}
|
||||
\end{document}
|
||||
BIN
doc/src/Eqs/pair_spin_long_range_force.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
23
doc/src/Eqs/pair_spin_long_range_force.tex
Normal file
@ -0,0 +1,23 @@
|
||||
\documentclass[preview]{standalone}
|
||||
\usepackage{varwidth}
|
||||
\usepackage[utf8x]{inputenc}
|
||||
\usepackage{amsmath,amssymb,graphics,bm,setspace}
|
||||
|
||||
\begin{document}
|
||||
\begin{varwidth}{50in}
|
||||
\begin{equation}
|
||||
\bm{F}_i =
|
||||
\frac{\mu_0 (\mu_B)^2}{4\pi} \sum_j
|
||||
\frac{g_i g_j}{r_{ij}^4}
|
||||
\Big[\big( (\bm{s}_i\cdot\bm{s}_j)
|
||||
-5(\bm{e}_{ij}\cdot\bm{s}_i)
|
||||
(\bm{e}_{ij}\cdot\bm{s}_j)\big) \bm{e}_{ij}+
|
||||
\big(
|
||||
(\bm{e}_{ij}\cdot\bm{s}_i)\bm{s}_j+
|
||||
(\bm{e}_{ij}\cdot\bm{s}_j)\bm{s}_i
|
||||
\big)
|
||||
\Big]
|
||||
\nonumber
|
||||
\end{equation}
|
||||
\end{varwidth}
|
||||
\end{document}
|
||||
BIN
doc/src/Eqs/pair_spin_long_range_magforce.jpg
Normal file
|
After Width: | Height: | Size: 9.2 KiB |
17
doc/src/Eqs/pair_spin_long_range_magforce.tex
Normal file
@ -0,0 +1,17 @@
|
||||
\documentclass[preview]{standalone}
|
||||
\usepackage{varwidth}
|
||||
\usepackage[utf8x]{inputenc}
|
||||
\usepackage{amsmath,amssymb,graphics,bm,setspace}
|
||||
|
||||
\begin{document}
|
||||
\begin{varwidth}{50in}
|
||||
\begin{equation}
|
||||
\bm{\omega}_i =
|
||||
\frac{\mu_0 (\mu_B)^2}{4\pi\hbar}\sum_{j}
|
||||
\frac{g_i g_j}{r_{ij}^3}
|
||||
\, \Big(
|
||||
3\,(\bm{e}_{ij}\cdot\bm{s}_{j})\bm{e}_{ij}
|
||||
-\bm{s}_{j} \Big) \nonumber
|
||||
\end{equation}
|
||||
\end{varwidth}
|
||||
\end{document}
|
||||
@ -610,6 +610,62 @@ This means there is something invalid about the topology definitions. :dd
|
||||
|
||||
The data file header lists bonds but no bond types. :dd
|
||||
|
||||
{Bond/react: Cannot use fix bond/react with non-molecular systems} :dt
|
||||
|
||||
Only systems with bonds that can be changed can be used. Atom_style
|
||||
template does not qualify. :dd
|
||||
|
||||
{Bond/react: Rmax cutoff is longer than pairwise cutoff} :dt
|
||||
|
||||
This is not allowed because bond creation is done using the pairwise
|
||||
neighbor list. :dd
|
||||
|
||||
{Bond/react: Molecule template ID for fix bond/react does not exist} :dt
|
||||
|
||||
A valid molecule template must have been created with the molecule
|
||||
command. :dd
|
||||
|
||||
{Bond/react: Reaction templates must contain the same number of atoms} :dt
|
||||
|
||||
There should be a one-to-one correspondence between atoms in the
|
||||
pre-reacted and post-reacted templates, as specified by the map file. :dd
|
||||
|
||||
{Bond/react: Unknown section in map file} :dt
|
||||
|
||||
Please ensure reaction map files are properly formatted. :dd
|
||||
|
||||
{Bond/react: Atom affected by reaction too close to template edge} :dt
|
||||
|
||||
This means an atom which changes type or connectivity during the
|
||||
reaction is too close to an 'edge' atom defined in the superimpose
|
||||
file. This could cause incorrect assignment of bonds, angle, etc.
|
||||
Generally, this means you must include more atoms in your templates,
|
||||
such that there are at least two atoms between each atom involved in
|
||||
the reaction and an edge atom. :dd
|
||||
|
||||
{Bond/react: Fix bond/react needs ghost atoms from farther away} :dt
|
||||
|
||||
This is because a processor needs to superimpose the entire unreacted
|
||||
molecule template onto simulation atoms it knows about. The
|
||||
comm_modify cutoff command can be used to extend the communication
|
||||
range. :dd
|
||||
|
||||
{Bond/react: A deleted atom cannot remain bonded to an atom that is not deleted} :dt
|
||||
|
||||
Self-explanatory. :dd
|
||||
|
||||
{Bond/react special bond generation overflow} :dt
|
||||
|
||||
The number of special bonds per-atom created by a reaction exceeds the
|
||||
system setting. See the read_data or create_box command for how to
|
||||
specify this value. :dd
|
||||
|
||||
{Bond/react topology/atom exceed system topology/atom} :dt
|
||||
|
||||
The number of bonds, angles etc per-atom created by a reaction exceeds
|
||||
the system setting. See the read_data or create_box command for how to
|
||||
specify this value. :dd
|
||||
|
||||
{Both restart files must use % or neither} :dt
|
||||
|
||||
Self-explanatory. :dd
|
||||
@ -2146,10 +2202,6 @@ Self-explanatory. :dd
|
||||
|
||||
This is a current restriction in LAMMPS. :dd
|
||||
|
||||
{Cannot use pair hybrid with GPU neighbor list builds} :dt
|
||||
|
||||
Neighbor list builds must be done on the CPU for this pair style. :dd
|
||||
|
||||
{Cannot use pair tail corrections with 2d simulations} :dt
|
||||
|
||||
The correction factors are only currently defined for 3d systems. :dd
|
||||
@ -2386,6 +2438,14 @@ Self-explanatory. :dd
|
||||
|
||||
Self-explanatory. :dd
|
||||
|
||||
{Compute gyration ID does not exist for compute gyration/shape} :dt
|
||||
|
||||
Self-explanatory. Provide a valid compute ID. :dd
|
||||
|
||||
{Compute gyration/shape compute ID does not point to a gyration compute} :dt
|
||||
|
||||
Self-explanatory. Provide and ID of a compute gyration command. :dd
|
||||
|
||||
{Compute ID for compute reduce does not exist} :dt
|
||||
|
||||
Self-explanatory. :dd
|
||||
@ -5467,10 +5527,6 @@ Self-explanatory. :dd
|
||||
For this pair style, you cannot run part of the force calculation on
|
||||
the host. See the package command. :dd
|
||||
|
||||
{GPU split param must be positive for hybrid pair styles} :dt
|
||||
|
||||
See the package gpu command. :dd
|
||||
|
||||
{GPUs are requested but Kokkos has not been compiled for CUDA} :dt
|
||||
|
||||
Re-compile Kokkos with CUDA support to use GPUs. :dd
|
||||
@ -5729,6 +5785,16 @@ definitions. :dd
|
||||
|
||||
The data file header lists improper but no improper types. :dd
|
||||
|
||||
{Incompatible KIM Simulator Model} :dt
|
||||
|
||||
The requested KIM Simulator Model was defined for a different MD code
|
||||
and thus is not compatible with LAMMPS. :dd
|
||||
|
||||
{Incompatible units for KIM Simulator Model} :dt
|
||||
|
||||
The selected unit style is not compatible with the requested KIM
|
||||
Simulator Model. :dd
|
||||
|
||||
{Incomplete use of variables in create_atoms command} :dt
|
||||
|
||||
The var and set options must be used together. :dd
|
||||
@ -5828,6 +5894,12 @@ Must have periodic x,y dimensions and non-periodic z dimension to use
|
||||
Must have periodic x,y dimensions and non-periodic z dimension to use
|
||||
2d slab option with pppm/disp. :dd
|
||||
|
||||
{Incorrect conversion in format string} :dt
|
||||
|
||||
A format style variable was not using either a %f, a %g, or a %e conversion.
|
||||
Or an immediate variable with format suffix was not using either
|
||||
a %f, a %g or a %e conversion in the format suffix. :dd
|
||||
|
||||
{Incorrect element names in ADP potential file} :dt
|
||||
|
||||
The element names in the ADP file do not match those requested. :dd
|
||||
@ -5836,6 +5908,11 @@ The element names in the ADP file do not match those requested. :dd
|
||||
|
||||
The element names in the EAM file do not match those requested. :dd
|
||||
|
||||
{Incorrect format of ... section in data file} :dt
|
||||
|
||||
Number or type of values per line in the given section of the data file
|
||||
is not consistent with the requirements for this section. :dd
|
||||
|
||||
{Incorrect format in COMB potential file} :dt
|
||||
|
||||
Incorrect number of words per line in the potential file. :dd
|
||||
@ -6988,6 +7065,12 @@ The atom style defined does not have this attribute. :dd
|
||||
|
||||
The atom style defined does not have these attributes. :dd
|
||||
|
||||
{KIM Simulator Model has no Model definition} :dt
|
||||
|
||||
There is no model definition (key: model-defn) in the KIM Simulator
|
||||
Model. Please contact the OpenKIM database maintainers to verify
|
||||
and potentially correct this. :dd
|
||||
|
||||
{KOKKOS package does not yet support comm_style tiled} :dt
|
||||
|
||||
Self-explanatory. :dd
|
||||
@ -7035,6 +7118,18 @@ Self-explanatory. :dd
|
||||
|
||||
One or more GPUs must be used when Kokkos is compiled for CUDA. :dd
|
||||
|
||||
{Kspace_modify mesh parameter must be all zero or all positive} :dt
|
||||
|
||||
Valid kspace mesh parameters are >0. The code will try to auto-detect
|
||||
suitable values when all three mesh sizes are set to zero (the default). :dd
|
||||
|
||||
{Kspace_modify mesh/disp parameter must be all zero or all positive} :dt
|
||||
|
||||
Valid kspace mesh/disp parameters are >0. The code will try to auto-detect
|
||||
suitable values when all three mesh sizes are set to zero [and]
|
||||
the required accuracy via {force/disp/real} as well as
|
||||
{force/disp/kspace} is set. :dd
|
||||
|
||||
{Kspace style does not support compute group/group} :dt
|
||||
|
||||
Self-explanatory. :dd
|
||||
@ -7448,6 +7543,11 @@ The Atoms section of a data file must come before a Triangles section. :dd
|
||||
The Atoms section of a data file must come before a Velocities
|
||||
section. :dd
|
||||
|
||||
{Must re-specify non-restarted pair style (xxx) after read_restart} :dt
|
||||
|
||||
For pair styles, that do not store their settings in a restart file,
|
||||
it must be defined with a new 'pair_style' command after read_restart. :dd
|
||||
|
||||
{Must set both respa inner and outer} :dt
|
||||
|
||||
Cannot use just the inner or outer option with respa without using the
|
||||
@ -7475,6 +7575,18 @@ Self-explanatory. :dd
|
||||
|
||||
Self-explanatory. :dd
|
||||
|
||||
{Must use 'kim_style init' command before simulation box is defined} :dt
|
||||
|
||||
Self-explanatory. :dd
|
||||
|
||||
{Must use 'kim_style define' command after simulation box is defined} :dt
|
||||
|
||||
Self-explanatory. :dd
|
||||
|
||||
{Must use 'kim_style init' command before 'kim_style define'} :dt
|
||||
|
||||
Self-explanatory. :dd
|
||||
|
||||
{Must use 'kspace_modify pressure/scalar no' for rRESPA with kspace_style MSM} :dt
|
||||
|
||||
The kspace scalar pressure option cannot (yet) be used with rRESPA. :dd
|
||||
@ -9418,6 +9530,11 @@ See the "read_data extra/special/per/atom" command
|
||||
for info on how to leave space in the special bonds
|
||||
list to allow for additional bonds to be formed. :dd
|
||||
|
||||
{Species XXX is not supported by this KIM Simulator Model} :dt
|
||||
|
||||
The kim_style define command was referencing a species that is not
|
||||
present in the requested KIM Simulator Model. :dd
|
||||
|
||||
{Specified processors != physical processors} :dt
|
||||
|
||||
The 3d grid of processors defined by the processors command does not
|
||||
@ -9990,25 +10107,25 @@ quote. :dd
|
||||
|
||||
Self-explanatory. :dd
|
||||
|
||||
{Unexpected end of AngleCoeffs section} :dt
|
||||
{Unexpected empty line in AngleCoeffs section} :dt
|
||||
|
||||
Read a blank line. :dd
|
||||
Read a blank line where there should be coefficient data. :dd
|
||||
|
||||
{Unexpected end of BondCoeffs section} :dt
|
||||
{Unexpected empty line in BondCoeffs section} :dt
|
||||
|
||||
Read a blank line. :dd
|
||||
Read a blank line where there should be coefficient data. :dd
|
||||
|
||||
{Unexpected end of DihedralCoeffs section} :dt
|
||||
{Unexpected empty line in DihedralCoeffs section} :dt
|
||||
|
||||
Read a blank line. :dd
|
||||
Read a blank line where there should be coefficient data. :dd
|
||||
|
||||
{Unexpected end of ImproperCoeffs section} :dt
|
||||
{Unexpected empty line in ImproperCoeffs section} :dt
|
||||
|
||||
Read a blank line. :dd
|
||||
Read a blank line where there should be coefficient data. :dd
|
||||
|
||||
{Unexpected end of PairCoeffs section} :dt
|
||||
{Unexpected empty line in PairCoeffs section} :dt
|
||||
|
||||
Read a blank line. :dd
|
||||
Read a blank line where there should be coefficient data. :dd
|
||||
|
||||
{Unexpected end of custom file} :dt
|
||||
|
||||
@ -10049,19 +10166,19 @@ create_box command. :dd
|
||||
A universe or uloop style variable must specify a number of values >= to the
|
||||
number of processor partitions. :dd
|
||||
|
||||
{Unknown angle style} :dt
|
||||
{Unrecognized angle style} :dt
|
||||
|
||||
The choice of angle style is unknown. :dd
|
||||
|
||||
{Unknown atom style} :dt
|
||||
{Unrecognized atom style} :dt
|
||||
|
||||
The choice of atom style is unknown. :dd
|
||||
|
||||
{Unknown body style} :dt
|
||||
{Unrecognized body style} :dt
|
||||
|
||||
The choice of body style is unknown. :dd
|
||||
|
||||
{Unknown bond style} :dt
|
||||
{Unrecognized bond style} :dt
|
||||
|
||||
The choice of bond style is unknown. :dd
|
||||
|
||||
@ -10077,23 +10194,23 @@ Self-explanatory. :dd
|
||||
|
||||
Self-explanatory. :dd
|
||||
|
||||
{Unknown command: %s} :dt
|
||||
{Unrecognized command: %s} :dt
|
||||
|
||||
The command is not known to LAMMPS. Check the input script. :dd
|
||||
|
||||
{Unknown compute style} :dt
|
||||
{Unrecognized compute style} :dt
|
||||
|
||||
The choice of compute style is unknown. :dd
|
||||
|
||||
{Unknown dihedral style} :dt
|
||||
{Unrecognized dihedral style} :dt
|
||||
|
||||
The choice of dihedral style is unknown. :dd
|
||||
|
||||
{Unknown dump reader style} :dt
|
||||
{Unrecognized dump reader style} :dt
|
||||
|
||||
The choice of dump reader style via the format keyword is unknown. :dd
|
||||
|
||||
{Unknown dump style} :dt
|
||||
{Unrecognized dump style} :dt
|
||||
|
||||
The choice of dump style is unknown. :dd
|
||||
|
||||
@ -10101,7 +10218,7 @@ The choice of dump style is unknown. :dd
|
||||
|
||||
Self-explanatory. :dd
|
||||
|
||||
{Unknown fix style} :dt
|
||||
{Unrecognized fix style} :dt
|
||||
|
||||
The choice of fix style is unknown. :dd
|
||||
|
||||
@ -10109,7 +10226,7 @@ The choice of fix style is unknown. :dd
|
||||
|
||||
A section of the data file cannot be read by LAMMPS. :dd
|
||||
|
||||
{Unknown improper style} :dt
|
||||
{Unrecognized improper style} :dt
|
||||
|
||||
The choice of improper style is unknown. :dd
|
||||
|
||||
@ -10117,7 +10234,7 @@ The choice of improper style is unknown. :dd
|
||||
|
||||
One or more specified keywords are not recognized. :dd
|
||||
|
||||
{Unknown kspace style} :dt
|
||||
{Unrecognized kspace style} :dt
|
||||
|
||||
The choice of kspace style is unknown. :dd
|
||||
|
||||
@ -10133,7 +10250,7 @@ Self-explanatory. :dd
|
||||
|
||||
Self-explanatory. :dd
|
||||
|
||||
{Unknown pair style} :dt
|
||||
{Unrecognized pair style} :dt
|
||||
|
||||
The choice of pair style is unknown. :dd
|
||||
|
||||
@ -10141,7 +10258,7 @@ The choice of pair style is unknown. :dd
|
||||
|
||||
The choice of sub-style is unknown. :dd
|
||||
|
||||
{Unknown region style} :dt
|
||||
{Unrecognized region style} :dt
|
||||
|
||||
The choice of region style is unknown. :dd
|
||||
|
||||
|
||||
@ -82,6 +82,15 @@ bond/angle/dihedral. LAMMPS computes this by taking the maximum bond
|
||||
length, multiplying by the number of bonds in the interaction (e.g. 3
|
||||
for a dihedral) and adding a small amount of stretch. :dd
|
||||
|
||||
{Bond/react: Atom affected by reaction too close to template edge} :dt
|
||||
|
||||
This means an atom which changes type or connectivity during the
|
||||
reaction is too close to an 'edge' atom defined in the superimpose
|
||||
file. This could cause incorrect assignment of bonds, angle, etc.
|
||||
Generally, this means you must include more atoms in your templates,
|
||||
such that there are at least two atoms between each atom involved in
|
||||
the reaction and an edge atom. :dd
|
||||
|
||||
{Both groups in compute group/group have a net charge; the Kspace boundary correction to energy will be non-zero} :dt
|
||||
|
||||
Self-explanatory. :dd
|
||||
@ -120,6 +129,16 @@ Self-explanatory. :dd
|
||||
|
||||
Self-explanatory. :dd
|
||||
|
||||
{Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost} :dt
|
||||
|
||||
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
|
||||
via "comm_modify cutoff"_comm_modify.html (defaults to 0.0). If this results
|
||||
to 0.0, no ghost atoms will be generated and LAMMPS may lose atoms or use
|
||||
incorrect periodic images of atoms in interaction lists. To avoid, either use
|
||||
"pair style zero"_pair_zero.html with a suitable cutoff or use "comm_modify
|
||||
cutoff"_comm_modify.html. :dd
|
||||
|
||||
{Communication cutoff is too small for SNAP micro load balancing, increased to %lf} :dt
|
||||
|
||||
Self-explanatory. :dd
|
||||
|
||||
@ -52,13 +52,14 @@ Lowercase directories :h4
|
||||
|
||||
accelerate: run with various acceleration options (OpenMP, GPU, Phi)
|
||||
airebo: polyethylene with AIREBO potential
|
||||
atm: Axilrod-Teller-Muto potential example
|
||||
balance: dynamic load balancing, 2d system
|
||||
body: body particles, 2d system
|
||||
cmap: CMAP 5-body contributions to CHARMM force field
|
||||
colloid: big colloid particles in a small particle solvent, 2d system
|
||||
comb: models using the COMB potential
|
||||
coreshell: core/shell model using CORESHELL package
|
||||
controller: use of fix controller as a thermostat
|
||||
coreshell: core/shell model using CORESHELL package
|
||||
crack: crack propagation in a 2d solid
|
||||
deposit: deposit atoms and molecules on a surface
|
||||
dipole: point dipolar particles, 2d system
|
||||
@ -70,10 +71,13 @@ friction: frictional contact of spherical asperities between 2d surfaces
|
||||
gcmc: Grand Canonical Monte Carlo (GCMC) via the fix gcmc command
|
||||
granregion: use of fix wall/region/gran as boundary on granular particles
|
||||
hugoniostat: Hugoniostat shock dynamics
|
||||
hyper: global and local hyperdynamics of diffusion on Pt surface
|
||||
indent: spherical indenter into a 2d solid
|
||||
kim: use of potentials in Knowledge Base for Interatomic Models (KIM)
|
||||
kim: use of potentials from the "OpenKIM Repository"_openkim
|
||||
latte: examples for using fix latte for DFTB via the LATTE library
|
||||
meam: MEAM test for SiC and shear (same as shear examples)
|
||||
melt: rapid melt of 3d LJ system
|
||||
message: demos for LAMMPS client/server coupling with the MESSAGE package
|
||||
micelle: self-assembly of small lipid-like molecules into 2d bilayers
|
||||
min: energy minimization of 2d LJ melt
|
||||
mscg: parameterize a multi-scale coarse-graining (MSCG) model
|
||||
@ -88,6 +92,7 @@ pour: pouring of granular particles into a 3d box, then chute flow
|
||||
prd: parallel replica dynamics of vacancy diffusion in bulk Si
|
||||
python: using embedded Python in a LAMMPS input script
|
||||
qeq: use of the QEQ package for charge equilibration
|
||||
rdf-adf: computing radial and angle distribution functions for water
|
||||
reax: RDX and TATB models using the ReaxFF
|
||||
rigid: rigid bodies modeled as independent or coupled
|
||||
shear: sideways shear applied to 2d solid, with and without a void
|
||||
@ -95,6 +100,7 @@ snap: NVE dynamics for BCC tantalum crystal using SNAP potential
|
||||
srd: stochastic rotation dynamics (SRD) particles as solvent
|
||||
streitz: use of Streitz/Mintmire potential with charge equilibration
|
||||
tad: temperature-accelerated dynamics of vacancy diffusion in bulk Si
|
||||
threebody: regression test input for a variety of manybody potentials
|
||||
vashishta: use of the Vashishta potential
|
||||
voronoi: Voronoi tesselation via compute voronoi/atom command :tb(s=:)
|
||||
|
||||
@ -131,8 +137,10 @@ COUPLE: examples of how to use LAMMPS as a library
|
||||
DIFFUSE: compute diffusion coefficients via several methods
|
||||
ELASTIC: compute elastic constants at zero temperature
|
||||
ELASTIC_T: compute elastic constants at finite temperature
|
||||
HEAT: compute thermal conductivity for LJ and water via fix ehex
|
||||
KAPPA: compute thermal conductivity via several methods
|
||||
MC: using LAMMPS in a Monte Carlo mode to relax the energy of a system
|
||||
SPIN: examples for features of the SPIN package
|
||||
USER: examples for USER packages and USER-contributed commands
|
||||
VISCOSITY: compute viscosity via several methods :tb(s=:)
|
||||
|
||||
@ -145,3 +153,5 @@ illustrate how to use the command(s) provided in that package. Many
|
||||
of the sub-directories have their own README files which give further
|
||||
instructions. See the "Packages_details"_Packages_details.html doc
|
||||
page for more info on specific USER packages.
|
||||
|
||||
:link(openkim,https://openkim.org)
|
||||
|
||||
@ -15,7 +15,8 @@ Binaries are available for different versions of Linux:
|
||||
"Pre-built Fedora Linux executables"_#fedora
|
||||
"Pre-built EPEL Linux executables (RHEL, CentOS)"_#epel
|
||||
"Pre-built OpenSuse Linux executables"_#opensuse
|
||||
"Gentoo Linux executable"_#gentoo :all(b)
|
||||
"Gentoo Linux executable"_#gentoo
|
||||
"Arch Linux build-script"_#arch :all(b)
|
||||
|
||||
:line
|
||||
|
||||
@ -168,3 +169,31 @@ for details.
|
||||
|
||||
Thanks to Nicolas Bock and Christoph Junghans (LANL) for setting up
|
||||
this Gentoo capability.
|
||||
|
||||
:line
|
||||
|
||||
Archlinux build-script :h4,link(arch)
|
||||
|
||||
LAMMPS is available via Arch's unofficial Arch User repository (AUR).
|
||||
|
||||
There are three scripts available, named lammps, lammps-beta and lammps-git.
|
||||
They respectively package the stable, patch and git releases.
|
||||
|
||||
To install, you will need to have the git package installed. You may use
|
||||
any of the above names in-place of lammps.
|
||||
|
||||
$ git clone https://aur.archlinux.org/lammps.git :pre
|
||||
$ cd lammps :pre
|
||||
$ makepkg -s :pre
|
||||
# makepkg -i :pre
|
||||
|
||||
To update, you may repeat the above, or change into the cloned directory,
|
||||
and execute the following, after which, if there are any changes, you may
|
||||
use makepkg as above.
|
||||
|
||||
$ git pull :pre
|
||||
|
||||
Alternatively, you may use an AUR helper to install these packages.
|
||||
|
||||
Note that the AUR provides build-scripts that download the source and
|
||||
the build the package on your machine.
|
||||
|
||||
@ -10,47 +10,34 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
Download an executable for Mac :h3
|
||||
|
||||
LAMMPS can be downloaded, built, and configured for OS X on a Mac with
|
||||
"Homebrew"_homebrew. Only four of the LAMMPS packages are unavailable
|
||||
at this time because of additional needs not yet met: KIM, GPU,
|
||||
USER-INTEL, USER-ATC.
|
||||
"Homebrew"_homebrew. The following LAMMPS packages are unavailable at this
|
||||
time because of additional needs not yet met: GPU, KOKKOS, LATTE, MSCG,
|
||||
MESSAGE, MPIIO POEMS VORONOI.
|
||||
|
||||
After installing Homebrew, you can install LAMMPS on your system with
|
||||
the following commands:
|
||||
|
||||
% brew tap homebrew/science
|
||||
% brew install lammps # serial version
|
||||
% brew install lammps --with-mpi # mpi support :pre
|
||||
% brew install lammps :pre
|
||||
|
||||
This will install the executable "lammps", a python module named
|
||||
"lammps", and additional resources with all the standard packages. To
|
||||
get the location of the additional resources type this:
|
||||
|
||||
% brew info lammps :pre
|
||||
|
||||
This command also tells you additional installation options available.
|
||||
The user-packages are available as options, just install them like
|
||||
this example for the USER-OMP package:
|
||||
|
||||
% brew install lammps --enable-user-omp :pre
|
||||
|
||||
It is usually best to install LAMMPS with the most up to date source
|
||||
files, which can be done with the "--HEAD" option:
|
||||
|
||||
% brew install lammps --HEAD :pre
|
||||
|
||||
To re-install the LAMMPS HEAD, run this command occasionally (make sure
|
||||
to use the desired options).
|
||||
|
||||
% brew install --force lammps --HEAD $\{options\} :pre
|
||||
This will install the executables "lammps_serial" and "lammps_mpi", as well as
|
||||
the LAMMPS "doc", "potentials", "tools", "bench", and "examples" directories.
|
||||
|
||||
Once LAMMPS is installed, you can test the installation with the
|
||||
Lennard-Jones benchmark file:
|
||||
|
||||
% brew test lammps -v :pre
|
||||
|
||||
The LAMMPS binary is built with the "KIM package"_Build_extras#kim which
|
||||
results in Homebrew also installing the `kim-api` binaries when LAMMPS is
|
||||
installed. In order to use potentials from "openkim.org"_openkim, you can
|
||||
install the `openkim-models` package
|
||||
|
||||
% brew install openkim-models :pre
|
||||
|
||||
If you have problems with the installation you can post issues to
|
||||
"this link"_homebrew.
|
||||
|
||||
Thanks to Derek Thomas (derekt at cello.t.u-tokyo.ac.jp) for setting
|
||||
up the Homebrew capability.
|
||||
:link(homebrew,https://github.com/Homebrew/homebrew-science/issues)
|
||||
:link(homebrew,https://github.com/Homebrew/homebrew-core/issues)
|
||||
:link(openkim,https://openkim.org)
|
||||
|
||||
@ -92,8 +92,8 @@ commands)
|
||||
implicit solvent potentials: hydrodynamic lubrication, Debye
|
||||
force-field compatibility with common CHARMM, AMBER, DREIDING, \
|
||||
OPLS, GROMACS, COMPASS options
|
||||
access to "KIM archive"_http://openkim.org of potentials via \
|
||||
"pair kim"_pair_kim.html
|
||||
access to the "OpenKIM Repository"_http://openkim.org of potentials via \
|
||||
"kim_init, kim_interactions, and kim_query"_kim_commands.html commands
|
||||
hybrid potentials: multiple pair, bond, angle, dihedral, improper \
|
||||
potentials can be used in one simulation
|
||||
overlaid potentials: superposition of multiple pair potentials :ul
|
||||
|
||||
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
@ -1,7 +1,7 @@
|
||||
<!-- HTML_ONLY -->
|
||||
<HEAD>
|
||||
<TITLE>LAMMPS Users Manual</TITLE>
|
||||
<META NAME="docnumber" CONTENT="15 May 2019 version">
|
||||
<META NAME="docnumber" CONTENT="31 Jul 2019 version">
|
||||
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
|
||||
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
|
||||
</HEAD>
|
||||
@ -21,7 +21,7 @@
|
||||
:line
|
||||
|
||||
LAMMPS Documentation :c,h1
|
||||
15 May 2019 version :c,h2
|
||||
31 Jul 2019 version :c,h2
|
||||
|
||||
"What is a LAMMPS version?"_Manual_version.html
|
||||
|
||||
|
||||
@ -208,7 +208,7 @@ available on your system.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#compress on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -338,35 +338,51 @@ KIM package :link(PKG-KIM),h4
|
||||
|
||||
[Contents:]
|
||||
|
||||
A "pair_style kim"_pair_kim.html command which is a wrapper on the
|
||||
Knowledge Base for Interatomic Models (KIM) repository of interatomic
|
||||
potentials, enabling any of them to be used in LAMMPS simulations.
|
||||
Also a "kim_query"_kim_query.html command, which allows to query
|
||||
the OpenKIM database for stored properties.
|
||||
This package contains a set of commands that serve as a wrapper on the
|
||||
"Open Knowledgebase of Interatomic Models (OpenKIM)"_https://openkim.org
|
||||
repository of interatomic models (IMs)
|
||||
enabling compatible ones to be used in LAMMPS simulations.
|
||||
This includes "kim_init and kim_interactions"_kim_commands.html
|
||||
commands to select, initialize and instantiate the IM, and a
|
||||
"kim_query"_kim_commands.html command to perform web queries
|
||||
for material property predictions of OpenKIM IMs.
|
||||
Support for KIM IMs that conform to the
|
||||
"KIM Application Programming Interface (API)"_https://openkim.org/kim-api/
|
||||
is provided by the "pair_style kim"_pair_kim.html command.
|
||||
|
||||
To use this package you must have the KIM library available on your
|
||||
system.
|
||||
NOTE: The command {pair_style kim} is called by {kim_interactions} and
|
||||
is not recommended to be directly used in input scripts.
|
||||
|
||||
To use this package you must have the KIM API library available on your
|
||||
system. The KIM API is available for download on the
|
||||
"OpenKIM website"_https://openkim.org/kim-api/.
|
||||
When installing LAMMPS from binary, the kim-api package
|
||||
is a dependency that is automatically downloaded and installed.
|
||||
|
||||
Information about the KIM project can be found at its website:
|
||||
https://openkim.org. The KIM project is led by Ellad Tadmor and Ryan
|
||||
Elliott (U Minnesota).
|
||||
"https://openkim.org"_https://openkim.org.
|
||||
The KIM project is led by Ellad Tadmor and Ryan Elliott (U Minnesota)
|
||||
and is funded by the "National Science Foundation"_https://www.nsf.gov/.
|
||||
|
||||
[Authors:] Ryan Elliott (U Minnesota) is the main developer for the KIM
|
||||
API which the "pair_style kim"_pair_kim.html command uses. He
|
||||
developed the pair style.
|
||||
API and the {pair_style kim} command. Axel Kohlmeyer (Temple U) and
|
||||
Ellad Tadmor (U Minnesota) contributed to the "kim_commands"_kim_commands.html
|
||||
interface in close collaboration with Ryan Elliott.
|
||||
|
||||
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#kim on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
|
||||
"kim_commands"_kim_commands.html
|
||||
"pair_style kim"_pair_kim.html
|
||||
src/KIM: filenames -> commands
|
||||
src/KIM/README
|
||||
lib/kim/README
|
||||
"pair_style kim"_pair_kim.html
|
||||
examples/kim :ul
|
||||
|
||||
:line
|
||||
@ -404,7 +420,7 @@ lib/kokkos.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#kokkos on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -477,7 +493,7 @@ Cawkwell, Anders Niklasson, and Christian Negre.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#latte on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -654,7 +670,7 @@ University of Chicago.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#mscg on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -686,7 +702,7 @@ and Vincent Natoli (Stone Ridge Technolgy).
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#opt on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -743,7 +759,7 @@ connections at hinge points.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#poems on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -775,7 +791,7 @@ lib/python/README for more details.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#python on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -911,6 +927,8 @@ the usual manner via MD. Various pair, fix, and compute styles.
|
||||
|
||||
src/SPIN: filenames -> commands
|
||||
"Howto spins"_Howto_spins.html
|
||||
"pair_style spin/dipole/cut"_pair_spin_dipole.html
|
||||
"pair_style spin/dipole/long"_pair_spin_dipole.html
|
||||
"pair_style spin/dmi"_pair_spin_dmi.html
|
||||
"pair_style spin/exchange"_pair_spin_exchange.html
|
||||
"pair_style spin/magelec"_pair_spin_magelec.html
|
||||
@ -965,7 +983,7 @@ and LBNL.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#voronoi on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -982,9 +1000,9 @@ USER-ADIOS package :link(PKG-USER-ADIOS),h4
|
||||
|
||||
[Contents:]
|
||||
|
||||
ADIOS is a high-performance I/O library. This package implements the
|
||||
ADIOS is a high-performance I/O library. This package implements the
|
||||
dump "atom/adios" and dump "custom/adios" commands to write data using
|
||||
the ADIOS library.
|
||||
the ADIOS library.
|
||||
|
||||
[Authors:] Norbert Podhorszki (ORNL) from the ADIOS developer team.
|
||||
|
||||
@ -1017,7 +1035,7 @@ atomic information to continuum fields.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#user-atc on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -1044,7 +1062,7 @@ model.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#user-awpmd on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -1184,7 +1202,7 @@ Tribello.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#user-plumed on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -1362,7 +1380,7 @@ H5MD format.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#user-h5md on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -1400,7 +1418,7 @@ NOTE: the USER-INTEL package contains styles that require using the
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#user-intel on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -1620,7 +1638,7 @@ at
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#user-molfile on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -1660,7 +1678,7 @@ tools:
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#user-netcdf on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -1704,7 +1722,7 @@ install/un-install the package and build LAMMPS in the usual manner:
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#user-omp on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -1788,7 +1806,7 @@ without changes to LAMMPS itself.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#user-qmmm on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -1846,7 +1864,7 @@ on your system.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#user-quip on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -1964,7 +1982,7 @@ Dynamics, Ernst Mach Institute, Germany).
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#user-smd on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
@ -2090,7 +2108,7 @@ system.
|
||||
[Install:]
|
||||
|
||||
This package has "specific installation
|
||||
instructions"_Build_extras.html#gpu on the "Build
|
||||
instructions"_Build_extras.html#user-vtk on the "Build
|
||||
extras"_Build_extras.html doc page.
|
||||
|
||||
[Supporting info:]
|
||||
|
||||
@ -104,7 +104,7 @@ code (with a performance penalty due to having data transfers between
|
||||
host and GPU). :ulb,l
|
||||
|
||||
The GPU package requires neighbor lists to be built on the CPU when using
|
||||
exclusion lists, hybrid pair styles, or a triclinic simulation box. :l
|
||||
exclusion lists, or a triclinic simulation box. :l
|
||||
|
||||
The GPU package can be compiled for CUDA or OpenCL and thus supports
|
||||
both, Nvidia and AMD GPUs well. On Nvidia hardware, using CUDA is typically
|
||||
|
||||
@ -46,16 +46,15 @@ software version 7.5 or later must be installed on your system. See
|
||||
the discussion for the "GPU package"_Speed_gpu.html for details of how
|
||||
to check and do this.
|
||||
|
||||
NOTE: Kokkos with CUDA currently implicitly assumes, that the MPI
|
||||
library is CUDA-aware and has support for GPU-direct. This is not
|
||||
always the case, especially when using pre-compiled MPI libraries
|
||||
provided by a Linux distribution. This is not a problem when using
|
||||
only a single GPU and a single MPI rank on a desktop. When running
|
||||
with multiple MPI ranks, you may see segmentation faults without
|
||||
GPU-direct support. These can be avoided by adding the flags "-pk
|
||||
kokkos gpu/direct off"_Run_options.html to the LAMMPS command line or
|
||||
by using the command "package kokkos gpu/direct off"_package.html in
|
||||
the input file.
|
||||
NOTE: Kokkos with CUDA currently implicitly assumes that the MPI library
|
||||
is CUDA-aware. This is not always the case, especially when using
|
||||
pre-compiled MPI libraries provided by a Linux distribution. This is not
|
||||
a problem when using only a single GPU with a single MPI rank. When
|
||||
running with multiple MPI ranks, you may see segmentation faults without
|
||||
CUDA-aware MPI support. These can be avoided by adding the flags "-pk
|
||||
kokkos cuda/aware off"_Run_options.html to the LAMMPS command line or by
|
||||
using the command "package kokkos cuda/aware off"_package.html in the
|
||||
input file.
|
||||
|
||||
[Building LAMMPS with the KOKKOS package:]
|
||||
|
||||
@ -207,19 +206,20 @@ supports.
|
||||
|
||||
[Running on GPUs:]
|
||||
|
||||
Use the "-k" "command-line switch"_Run_options.html to
|
||||
specify the number of GPUs per node. Typically the -np setting of the
|
||||
mpirun command should set the number of MPI tasks/node to be equal to
|
||||
the number of physical GPUs on the node. You can assign multiple MPI
|
||||
tasks to the same GPU with the KOKKOS package, but this is usually
|
||||
only faster if significant portions of the input script have not
|
||||
been ported to use Kokkos. Using CUDA MPS is recommended in this
|
||||
scenario. Using a CUDA-aware MPI library with support for GPU-direct
|
||||
is highly recommended. GPU-direct use can be avoided by using
|
||||
"-pk kokkos gpu/direct no"_package.html.
|
||||
As above for multi-core CPUs (and no GPU), if N is the number of
|
||||
physical cores/node, then the number of MPI tasks/node should not
|
||||
exceed N.
|
||||
Use the "-k" "command-line switch"_Run_options.html to specify the
|
||||
number of GPUs per node. Typically the -np setting of the mpirun command
|
||||
should set the number of MPI tasks/node to be equal to the number of
|
||||
physical GPUs on the node. You can assign multiple MPI tasks to the same
|
||||
GPU with the KOKKOS package, but this is usually only faster if some
|
||||
portions of the input script have not been ported to use Kokkos. In this
|
||||
case, also packing/unpacking communication buffers on the host may give
|
||||
speedup (see the KOKKOS "package"_package.html command). Using CUDA MPS
|
||||
is recommended in this scenario.
|
||||
|
||||
Using a CUDA-aware MPI library is highly recommended. CUDA-aware MPI use can be
|
||||
avoided by using "-pk kokkos cuda/aware no"_package.html. As above for
|
||||
multi-core CPUs (and no GPU), if N is the number of physical cores/node,
|
||||
then the number of MPI tasks/node should not exceed N.
|
||||
|
||||
-k on g Ng :pre
|
||||
|
||||
|
||||
@ -143,6 +143,16 @@ instructions on how to use the accelerated styles effectively.
|
||||
|
||||
:line
|
||||
|
||||
[Restart info:]
|
||||
|
||||
This angle style writes the settings for the "angle_style table"
|
||||
command to "binary restart files"_restart.html, so a angle_style
|
||||
command does not need to specified in an input script that reads a
|
||||
restart file. However, the coefficient information is not stored in
|
||||
the restart file, since it is tabulated in the potential files. Thus,
|
||||
angle_coeff commands do need to be specified in the restart input
|
||||
script.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This angle style can only be used if LAMMPS was built with the
|
||||
|
||||
@ -140,6 +140,16 @@ instructions on how to use the accelerated styles effectively.
|
||||
|
||||
:line
|
||||
|
||||
[Restart info:]
|
||||
|
||||
This bond style writes the settings for the "bond_style table"
|
||||
command to "binary restart files"_restart.html, so a bond_style
|
||||
command does not need to specified in an input script that reads a
|
||||
restart file. However, the coefficient information is not stored in
|
||||
the restart file, since it is tabulated in the potential files. Thus,
|
||||
bond_coeff commands do need to be specified in the restart input
|
||||
script.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This bond style can only be used if LAMMPS was built with the MOLECULE
|
||||
|
||||
@ -69,9 +69,15 @@ processors. By default the ghost cutoff = neighbor cutoff = pairwise
|
||||
force cutoff + neighbor skin. See the "neighbor"_neighbor.html command
|
||||
for more information about the skin distance. If the specified Rcut is
|
||||
greater than the neighbor cutoff, then extra ghost atoms will be acquired.
|
||||
If the provided cutoff is smaller, the provided value will be ignored
|
||||
and the ghost cutoff is set to the neighbor cutoff. Specifying a
|
||||
cutoff value of 0.0 will reset any previous value to the default.
|
||||
If the provided cutoff is smaller, the provided value will be ignored,
|
||||
the ghost cutoff is set to the neighbor cutoff and a warning will be
|
||||
printed. Specifying a cutoff value of 0.0 will reset any previous value
|
||||
to the default. If bonded interactions exist and equilibrium bond length
|
||||
information is available, then also a heuristic based on that bond length
|
||||
is computed. It is used as communication cutoff, if there is no pair
|
||||
style present and no {comm_modify cutoff} command used. Otherwise a
|
||||
warning is printed, if this bond based estimate is larger than the
|
||||
communication cutoff used. A
|
||||
|
||||
The {cutoff/multi} option is equivalent to {cutoff}, but applies to
|
||||
communication mode {multi} instead. Since in this case the communication
|
||||
|
||||
@ -53,7 +53,7 @@ Commands :h1
|
||||
include
|
||||
info
|
||||
jump
|
||||
kim_query
|
||||
kim_commands
|
||||
kspace_modify
|
||||
kspace_style
|
||||
label
|
||||
|
||||
@ -171,42 +171,40 @@ The individual style names on the "Commands
|
||||
compute"_Commands_compute.html doc page are followed by one or more of
|
||||
(g,i,k,o,t) to indicate which accelerated styles exist.
|
||||
|
||||
"ackland/atom"_compute_ackland_atom.html -
|
||||
"ackland/atom"_compute_ackland_atom.html - determines the local lattice structure based on the Ackland formulation
|
||||
"adf"_compute_adf.html - angular distribution function of triples of atoms
|
||||
"aggregate/atom"_compute_cluster_atom.html - aggregate ID for each atom
|
||||
"angle"_compute_angle.html -
|
||||
"angle/local"_compute_angle_local.html -
|
||||
"angle/local"_compute_bond_local.html - theta and energy of each angle
|
||||
"angle"_compute_angle.html - energy of each angle sub-style
|
||||
"angle/local"_compute_angle_local.html - theta and energy of each angle
|
||||
"angmom/chunk"_compute_angmom_chunk.html - angular momentum for each chunk
|
||||
"basal/atom"_compute_basal_atom.html -
|
||||
"basal/atom"_compute_basal_atom.html - calculates the hexagonal close-packed "c" lattice vector of each atom
|
||||
"body/local"_compute_body_local.html - attributes of body sub-particles
|
||||
"bond"_compute_bond.html - values computed by a bond style
|
||||
"bond"_compute_bond.html - energy of each bond sub-style
|
||||
"bond/local"_compute_bond_local.html - distance and energy of each bond
|
||||
"centro/atom"_compute_centro_atom.html - centro-symmetry parameter for each atom
|
||||
"chunk/atom"_compute_chunk_atom.html - assign chunk IDs to each atom
|
||||
"chunk/spread/atom"_compute_chunk_spread_atom.html - spreads chunk values to each atom in chunk
|
||||
"cluster/atom"_compute_cluster_atom.html - cluster ID for each atom
|
||||
"cna/atom"_compute_cna_atom.html - common neighbor analysis (CNA) for each atom
|
||||
"cnp/atom"_compute_cnp_atom.html -
|
||||
"cnp/atom"_compute_cnp_atom.html - common neighborhood parameter (CNP) for each atom
|
||||
"com"_compute_com.html - center-of-mass of group of atoms
|
||||
"com/chunk"_compute_com_chunk.html - center-of-mass for each chunk
|
||||
"contact/atom"_compute_contact_atom.html - contact count for each spherical particle
|
||||
"coord/atom"_compute_coord_atom.html - coordination number for each atom
|
||||
"damage/atom"_compute_damage_atom.html - Peridynamic damage for each atom
|
||||
"dihedral"_compute_dihedral.html -
|
||||
"dihedral"_compute_dihedral.html - energy of each dihedral sub-style
|
||||
"dihedral/local"_compute_dihedral_local.html - angle of each dihedral
|
||||
"dilatation/atom"_compute_dilatation_atom.html - Peridynamic dilatation for each atom
|
||||
"dipole/chunk"_compute_dipole_chunk.html -
|
||||
"dipole/chunk"_compute_dipole_chunk.html - dipole vector and total dipole for each chunk
|
||||
"displace/atom"_compute_displace_atom.html - displacement of each atom
|
||||
"dpd"_compute_dpd.html -
|
||||
"dpd/atom"_compute_dpd_atom.html -
|
||||
"edpd/temp/atom"_compute_edpd_temp_atom.html -
|
||||
"entropy/atom"_compute_entropy_atom.html -
|
||||
"edpd/temp/atom"_compute_edpd_temp_atom.html - per-atom temperature for each eDPD particle in a group
|
||||
"entropy/atom"_compute_entropy_atom.html - pair entropy fingerprint of each atom
|
||||
"erotate/asphere"_compute_erotate_asphere.html - rotational energy of aspherical particles
|
||||
"erotate/rigid"_compute_erotate_rigid.html - rotational energy of rigid bodies
|
||||
"erotate/sphere"_compute_erotate_sphere.html - rotational energy of spherical particles
|
||||
"erotate/sphere/atom"_compute_erotate_sphere.html - rotational energy for each spherical particle
|
||||
"erotate/sphere/atom"_compute_erotate_sphere_atom.html -
|
||||
"erotate/sphere/atom"_compute_erotate_sphere_atom.html - rotational energy for each spherical particle
|
||||
"event/displace"_compute_event_displace.html - detect event on atom displacement
|
||||
"fep"_compute_fep.html -
|
||||
"force/tally"_compute_tally.html -
|
||||
@ -215,20 +213,22 @@ compute"_Commands_compute.html doc page are followed by one or more of
|
||||
"group/group"_compute_group_group.html - energy/force between two groups of atoms
|
||||
"gyration"_compute_gyration.html - radius of gyration of group of atoms
|
||||
"gyration/chunk"_compute_gyration_chunk.html - radius of gyration for each chunk
|
||||
"gyration/shape"_compute_gyration_shape.html - compute shape parameters from radius of gyration tensor
|
||||
"heat/flux"_compute_heat_flux.html - heat flux through a group of atoms
|
||||
"heat/flux/tally"_compute_tally.html -
|
||||
"hexorder/atom"_compute_hexorder_atom.html - bond orientational order parameter q6
|
||||
"improper"_compute_improper.html -
|
||||
"improper"_compute_improper.html - energy of each improper sub-style
|
||||
"improper/local"_compute_improper_local.html - angle of each improper
|
||||
"inertia/chunk"_compute_inertia_chunk.html - inertia tensor for each chunk
|
||||
"ke"_compute_ke.html - translational kinetic energy
|
||||
"ke/atom"_compute_ke_atom.html - kinetic energy for each atom
|
||||
"ke/atom/eff"_compute_ke_atom_eff.html -
|
||||
"ke/eff"_compute_ke_eff.html -
|
||||
"ke/atom/eff"_compute_ke_atom_eff.html - per-atom translational and radial kinetic energy in the electron force field model
|
||||
"ke/eff"_compute_ke_eff.html - kinetic energy of a group of nuclei and electrons in the electron force field model
|
||||
"ke/rigid"_compute_ke_rigid.html - translational kinetic energy of rigid bodies
|
||||
"meso/e/atom"_compute_meso_e_atom.html -
|
||||
"meso/rho/atom"_compute_meso_rho_atom.html -
|
||||
"meso/t/atom"_compute_meso_t_atom.html -
|
||||
"meso/e/atom"_compute_meso_e_atom.html - per-atom internal energy of Smooth-Particle Hydrodynamics atoms
|
||||
"meso/rho/atom"_compute_meso_rho_atom.html - per-atom mesoscopic density of Smooth-Particle Hydrodynamics atoms
|
||||
"meso/t/atom"_compute_meso_t_atom.html - per-atom internal temperature of Smooth-Particle Hydrodynamics atoms
|
||||
"momentum"_compute_momentum.html - translational momentum
|
||||
"msd"_compute_msd.html - mean-squared displacement of group of atoms
|
||||
"msd/chunk"_compute_msd_chunk.html - mean-squared displacement for each chunk
|
||||
"msd/nongauss"_compute_msd_nongauss.html - MSD and non-Gaussian parameter of group of atoms
|
||||
@ -242,73 +242,72 @@ compute"_Commands_compute.html doc page are followed by one or more of
|
||||
"pe/tally"_compute_tally.html -
|
||||
"plasticity/atom"_compute_plasticity_atom.html - Peridynamic plasticity for each atom
|
||||
"pressure"_compute_pressure.html - total pressure and pressure tensor
|
||||
"pressure/cylinder"_compute_pressure_cylinder.html -
|
||||
"pressure/uef"_compute_pressure_uef.html -
|
||||
"pressure/cylinder"_compute_pressure_cylinder.html - pressure tensor in cylindrical coordinates
|
||||
"pressure/uef"_compute_pressure_uef.html - pressure tensor in the reference frame of an applied flow field
|
||||
"property/atom"_compute_property_atom.html - convert atom attributes to per-atom vectors/arrays
|
||||
"property/chunk"_compute_property_chunk.html - extract various per-chunk attributes
|
||||
"property/local"_compute_property_local.html - convert local attributes to localvectors/arrays
|
||||
"ptm/atom"_compute_ptm_atom.html -
|
||||
"ptm/atom"_compute_ptm_atom.html - determines the local lattice structure based on the Polyhedral Template Matching method
|
||||
"rdf"_compute_rdf.html - radial distribution function g(r) histogram of group of atoms
|
||||
"reduce"_compute_reduce.html - combine per-atom quantities into a single global value
|
||||
"reduce/chunk"_compute_reduce_chunk.html - reduce per-atom quantities within each chunk
|
||||
"reduce/region"_compute_reduce.html - same as compute reduce, within a region
|
||||
"rigid/local"_compute_rigid_local.html - extract rigid body attributes
|
||||
"saed"_compute_saed.html -
|
||||
"saed"_compute_saed.html - electron diffraction intensity on a mesh of reciprocal lattice nodes
|
||||
"slice"_compute_slice.html - extract values from global vector or array
|
||||
"smd/contact/radius"_compute_smd_contact_radius.html -
|
||||
"smd/damage"_compute_smd_damage.html -
|
||||
"smd/damage"_compute_smd_damage.html - damage status of SPH particles in Smooth Mach Dynamics
|
||||
"smd/hourglass/error"_compute_smd_hourglass_error.html -
|
||||
"smd/internal/energy"_compute_smd_internal_energy.html -
|
||||
"smd/plastic/strain"_compute_smd_plastic_strain.html -
|
||||
"smd/plastic/strain/rate"_compute_smd_plastic_strain_rate.html -
|
||||
"smd/rho"_compute_smd_rho.html -
|
||||
"smd/tlsph/defgrad"_compute_smd_tlsph_defgrad.html -
|
||||
"smd/tlsph/dt"_compute_smd_tlsph_dt.html -
|
||||
"smd/internal/energy"_compute_smd_internal_energy.html - per-particle enthalpy in Smooth Mach Dynamics
|
||||
"smd/plastic/strain"_compute_smd_plastic_strain.html - equivalent plastic strain per particle in Smooth Mach Dynamics
|
||||
"smd/plastic/strain/rate"_compute_smd_plastic_strain_rate.html - time rate of the equivalent plastic strain in Smooth Mach Dynamics
|
||||
"smd/rho"_compute_smd_rho.html - per-particle mass density in Smooth Mach Dynamics
|
||||
"smd/tlsph/defgrad"_compute_smd_tlsph_defgrad.html - deformation gradient in Smooth Mach Dynamics
|
||||
"smd/tlsph/dt"_compute_smd_tlsph_dt.html - CFL-stable time increment per particle in Smooth Mach Dynamics
|
||||
"smd/tlsph/num/neighs"_compute_smd_tlsph_num_neighs.html -
|
||||
"smd/tlsph/shape"_compute_smd_tlsph_shape.html -
|
||||
"smd/tlsph/strain"_compute_smd_tlsph_strain.html -
|
||||
"smd/tlsph/strain/rate"_compute_smd_tlsph_strain_rate.html -
|
||||
"smd/tlsph/stress"_compute_smd_tlsph_stress.html -
|
||||
"smd/triangle/vertices"_compute_smd_triangle_vertices.html -
|
||||
"smd/tlsph/stress"_compute_smd_tlsph_stress.html - per-particle Cauchy stress tensor for SPH particles
|
||||
"smd/triangle/vertices"_compute_smd_triangle_vertices.html -
|
||||
"smd/ulsph/num/neighs"_compute_smd_ulsph_num_neighs.html -
|
||||
"smd/ulsph/strain"_compute_smd_ulsph_strain.html -
|
||||
"smd/ulsph/strain/rate"_compute_smd_ulsph_strain_rate.html -
|
||||
"smd/ulsph/stress"_compute_smd_ulsph_stress.html -
|
||||
"smd/vol"_compute_smd_vol.html -
|
||||
"smd/ulsph/stress"_compute_smd_ulsph_stress.html - per-particle Cauchy stress tensor and von Mises equivalent stress in Smooth Mach Dynamics
|
||||
"smd/vol"_compute_smd_vol.html - per-particle volumes and their sum in Smooth Mach Dynamics
|
||||
"sna/atom"_compute_sna_atom.html - calculate bispectrum coefficients for each atom
|
||||
"snad/atom"_compute_sna_atom.html - derivative of bispectrum coefficients for each atom
|
||||
"snav/atom"_compute_sna_atom.html - virial contribution from bispectrum coefficients for each atom
|
||||
"spin"_compute_spin.html -
|
||||
"spin"_compute_spin.html - magnetic quantities for a system of atoms having spins
|
||||
"stress/atom"_compute_stress_atom.html - stress tensor for each atom
|
||||
"stress/mop"_compute_stress_mop.html -
|
||||
"stress/mop/profile"_compute_stress_mop.html -
|
||||
"stress/mop"_compute_stress_mop.html - normal components of the local stress tensor using the method of planes
|
||||
"stress/mop/profile"_compute_stress_mop.html - profile of the normal components of the local stress tensor using the method of planes
|
||||
"stress/tally"_compute_tally.html -
|
||||
"tdpd/cc/atom"_compute_tdpd_cc_atom.html -
|
||||
"tdpd/cc/atom"_compute_tdpd_cc_atom.html - per-atom chemical concentration of a specified species for each tDPD particle
|
||||
"temp"_compute_temp.html - temperature of group of atoms
|
||||
"temp/asphere"_compute_temp_asphere.html - temperature of aspherical particles
|
||||
"temp/body"_compute_temp_body.html - temperature of body particles
|
||||
"temp/chunk"_compute_temp_chunk.html - temperature of each chunk
|
||||
"temp/com"_compute_temp_com.html - temperature after subtracting center-of-mass velocity
|
||||
"temp/cs"_compute_temp_cs.html -
|
||||
"temp/cs"_compute_temp_cs.html - temperature based on the center-of-mass velocity of atom pairs that are bonded to each other
|
||||
"temp/deform"_compute_temp_deform.html - temperature excluding box deformation velocity
|
||||
"temp/deform/eff"_compute_temp_deform_eff.html -
|
||||
"temp/drude"_compute_temp_drude.html -
|
||||
"temp/eff"_compute_temp_eff.html -
|
||||
"temp/deform/eff"_compute_temp_deform_eff.html - temperature excluding box deformation velocity in the electron force field model
|
||||
"temp/drude"_compute_temp_drude.html - temperature of Core-Drude pairs
|
||||
"temp/eff"_compute_temp_eff.html - temperature of a group of nuclei and electrons in the electron force field model
|
||||
"temp/partial"_compute_temp_partial.html - temperature excluding one or more dimensions of velocity
|
||||
"temp/profile"_compute_temp_profile.html - temperature excluding a binned velocity profile
|
||||
"temp/ramp"_compute_temp_ramp.html - temperature excluding ramped velocity component
|
||||
"temp/region"_compute_temp_region.html - temperature of a region of atoms
|
||||
"temp/region/eff"_compute_temp_region_eff.html -
|
||||
"temp/rotate"_compute_temp_rotate.html -
|
||||
"temp/region/eff"_compute_temp_region_eff.html - temperature of a region of nuclei and electrons in the electron force field model
|
||||
"temp/rotate"_compute_temp_rotate.html - temperature of a group of atoms after subtracting out their center-of-mass and angular velocities
|
||||
"temp/sphere"_compute_temp_sphere.html - temperature of spherical particles
|
||||
"temp/uef"_compute_temp_uef.html -
|
||||
"temp/uef"_compute_temp_uef.html - kinetic energy tensor in the reference frame of an applied flow field
|
||||
"ti"_compute_ti.html - thermodynamic integration free energy values
|
||||
"torque/chunk"_compute_torque_chunk.html - torque applied on each chunk
|
||||
"vacf"_compute_vacf.html - velocity auto-correlation function of group of atoms
|
||||
"vcm/chunk"_compute_vcm_chunk.html - velocity of center-of-mass for each chunk
|
||||
"voronoi/atom"_compute_voronoi_atom.html - Voronoi volume and neighbors for each atom
|
||||
"xrd"_compute_xrd.html - :ul
|
||||
"xrd"_compute_xrd.html - x-ray diffraction intensity on a mesh of reciprocal lattice nodes :ul
|
||||
|
||||
[Restrictions:] none
|
||||
|
||||
|
||||
@ -15,8 +15,9 @@ compute ID group-ID coord/atom cstyle args ... :pre
|
||||
ID, group-ID are documented in "compute"_compute.html command :ulb,l
|
||||
coord/atom = style name of this compute command :l
|
||||
cstyle = {cutoff} or {orientorder} :l
|
||||
{cutoff} args = cutoff typeN
|
||||
{cutoff} args = cutoff \[group group2-ID\] typeN
|
||||
cutoff = distance within which to count coordination neighbors (distance units)
|
||||
group {group2-ID} = select group-ID to restrict which atoms to consider for coordination number (optional)
|
||||
typeN = atom type for Nth coordination count (see asterisk form below)
|
||||
{orientorder} args = orientorderID threshold
|
||||
orientorderID = ID of an orientorder/atom compute
|
||||
@ -28,6 +29,7 @@ cstyle = {cutoff} or {orientorder} :l
|
||||
compute 1 all coord/atom cutoff 2.0
|
||||
compute 1 all coord/atom cutoff 6.0 1 2
|
||||
compute 1 all coord/atom cutoff 6.0 2*4 5*8 *
|
||||
compute 1 solute coord/atom cutoff 2.0 group solvent
|
||||
compute 1 all coord/atom orientorder 2 0.5 :pre
|
||||
|
||||
[Description:]
|
||||
@ -38,9 +40,14 @@ meaning of the resulting value depend on the {cstyle} keyword used.
|
||||
|
||||
The {cutoff} cstyle calculates one or more traditional coordination
|
||||
numbers for each atom. A coordination number is defined as the number
|
||||
of neighbor atoms with specified atom type(s) that are within the
|
||||
specified cutoff distance from the central atom. Atoms not in the
|
||||
specified group are included in the coordination number tally.
|
||||
of neighbor atoms with specified atom type(s), and optionally within
|
||||
the specified group, that are within the specified cutoff distance from
|
||||
the central atom. The compute group selects only the central atoms; all
|
||||
neighboring atoms, unless selected by type, type range, or group option,
|
||||
are included in the coordination number tally.
|
||||
|
||||
The optional {group} keyword allows to specify from which group atoms
|
||||
contribute to the coordination number. Default setting is group 'all'.
|
||||
|
||||
The {typeN} keywords allow specification of which atom types
|
||||
contribute to each coordination number. One coordination number is
|
||||
@ -122,7 +129,9 @@ explained above.
|
||||
"compute cluster/atom"_compute_cluster_atom.html
|
||||
"compute orientorder/atom"_compute_orientorder_atom.html
|
||||
|
||||
[Default:] none
|
||||
[Default:]
|
||||
|
||||
group = all
|
||||
|
||||
:line
|
||||
|
||||
|
||||
@ -67,6 +67,7 @@ distance^2 "units"_units.html respectively.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"compute gyration/chunk"_compute_gyration_chunk.html
|
||||
"compute gyration/chunk"_compute_gyration_chunk.html,
|
||||
"compute gyration/shape"_compute_gyration_shape.html
|
||||
|
||||
[Default:] none
|
||||
|
||||
86
doc/src/compute_gyration_shape.txt
Normal file
@ -0,0 +1,86 @@
|
||||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Commands_all.html)
|
||||
|
||||
:line
|
||||
|
||||
compute gyration/shape command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
compute ID group-ID gyration compute-ID :pre
|
||||
|
||||
ID, group-ID are documented in "compute"_compute.html command
|
||||
gyration/shape = style name of this compute command
|
||||
compute-ID = ID of "compute gyration"_compute_gyration.html command :ul
|
||||
|
||||
[Examples:]
|
||||
|
||||
compute 1 molecule gyration/shape pe :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
Define a computation that calculates the eigenvalues of the gyration tensor of a
|
||||
group of atoms and three shape parameters. The computation includes all effects
|
||||
due to atoms passing thru periodic boundaries.
|
||||
|
||||
The three computed shape parameters are the asphericity, b, the acylindricity, c,
|
||||
and the relative shape anisotropy, k:
|
||||
|
||||
:c,image(Eqs/compute_shape_parameters.jpg)
|
||||
|
||||
where lx <= ly <= lz are the three eigenvalues of the gyration tensor.
|
||||
The asphericity is always non-negative and zero only when the three principal
|
||||
moments are equal. This zero condition is met when the distribution of particles
|
||||
is spherically symmetric (hence the name asphericity) but also whenever the particle
|
||||
distribution is symmetric with respect to the three coordinate axes, e.g.,
|
||||
when the particles are distributed uniformly on a cube, tetrahedron or other Platonic
|
||||
solid. The acylindricity is always non-negative and zero only when the two principal
|
||||
moments are equal. This zero condition is met when the distribution of particles is
|
||||
cylindrically symmetric (hence the name, acylindricity), but also whenever the particle
|
||||
distribution is symmetric with respect to the two coordinate axes, e.g., when the
|
||||
particles are distributed uniformly on a regular prism. the relative shape anisotropy
|
||||
is bounded between zero (if all points are spherically symmetric) and one
|
||||
(if all points lie on a line).
|
||||
|
||||
NOTE: The coordinates of an atom contribute to the gyration tensor in
|
||||
"unwrapped" form, by using the image flags associated with each atom.
|
||||
See the "dump custom"_dump.html command for a discussion of "unwrapped"
|
||||
coordinates. See the Atoms section of the "read_data"_read_data.html
|
||||
command for a discussion of image flags and how they are set for each
|
||||
atom. You can reset the image flags (e.g. to 0) before invoking this
|
||||
compute by using the "set image"_set.html command.
|
||||
|
||||
[Output info:]
|
||||
|
||||
This compute calculates a global vector of
|
||||
length 6, which can be accessed by indices 1-6. The first three values are the
|
||||
eigenvalues of the gyration tensor followed by the asphericity, the acylindricity
|
||||
and the relative shape anisotropy. The computed values can be used by any command
|
||||
that uses global vector values from a compute as input. See the "Howto
|
||||
output"_Howto_output.html doc page for an overview of LAMMPS output
|
||||
options.
|
||||
|
||||
The vector values calculated by this compute are
|
||||
"intensive". The first five vector values will be in
|
||||
distance^2 "units"_units.html while the sixth one is dimensionless.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This compute is part of the USER-MISC package. It is only enabled if
|
||||
LAMMPS was built with that package. See the "Build
|
||||
package"_Build_package.html doc page for more info.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"compute gyration"_compute_gyration.html
|
||||
|
||||
[Default:] none
|
||||
|
||||
:line
|
||||
|
||||
:link(Theodorou)
|
||||
[(Theodorou)] Theodorou, Suter, Macromolecules, 18, 1206 (1985).
|
||||
|
||||
@ -65,7 +65,7 @@ In an isotropic liquid, local neighborhoods may still exhibit
|
||||
weak hexagonal symmetry, but because the orientational correlation
|
||||
decays quickly with distance, the value of phi will be different for
|
||||
different atoms, and so when {q}6 is averaged over all the atoms
|
||||
in the system, \|<{q}6>\| << 1.
|
||||
in the system, |<{q}6>| << 1.
|
||||
|
||||
The value of {qn} is set to zero for atoms not in the
|
||||
specified compute group, as well as for atoms that have less than
|
||||
|
||||
49
doc/src/compute_momentum.txt
Normal file
@ -0,0 +1,49 @@
|
||||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Commands_all.html)
|
||||
|
||||
:line
|
||||
|
||||
compute momentum command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
compute ID group-ID momentum :pre
|
||||
|
||||
ID, group-ID are documented in "compute"_compute.html command
|
||||
momentum = style name of this compute command :ul
|
||||
|
||||
[Examples:]
|
||||
|
||||
compute 1 all momentum :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
Define a computation that calculates the translational momentum
|
||||
of a group of particles.
|
||||
|
||||
The momentum of each particles is computed as m v, where m and v are
|
||||
the mass and velocity of the particle.
|
||||
|
||||
[Output info:]
|
||||
|
||||
This compute calculates a global vector (the summed momentum) of
|
||||
length 3. This value can be used by any command that uses a global
|
||||
vector value from a compute as input. See the "Howto
|
||||
output"_Howto_output.html doc page for an overview of LAMMPS output
|
||||
options.
|
||||
|
||||
The vector value calculated by this compute is "extensive". The vector
|
||||
value will be in mass*velocity "units"_units.html.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This compute is part of the USER-MISC package. It is only enabled if
|
||||
LAMMPS was built with that package. See the "Build
|
||||
package"_Build_package.html doc page for more info.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
[Default:] none
|
||||
@ -16,12 +16,13 @@ ID, group-ID are documented in "compute"_compute.html command
|
||||
pressure = style name of this compute command
|
||||
temp-ID = ID of compute that calculates temperature, can be NULL if not needed
|
||||
zero or more keywords may be appended
|
||||
keyword = {ke} or {pair} or {bond} or {angle} or {dihedral} or {improper} or {kspace} or {fix} or {virial} :ul
|
||||
keyword = {ke} or {pair} or {bond} or {angle} or {dihedral} or {improper} or {kspace} or {fix} or {virial} or {pair/hybrid} :ul
|
||||
|
||||
[Examples:]
|
||||
|
||||
compute 1 all pressure thermo_temp
|
||||
compute 1 all pressure NULL pair bond :pre
|
||||
compute 1 all pressure NULL pair bond
|
||||
compute 1 all pressure NULL pair/hybrid lj/cut :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
@ -67,6 +68,9 @@ extra keywords are listed, then only those components are summed to
|
||||
compute temperature or ke and/or the virial. The {virial} keyword
|
||||
means include all terms except the kinetic energy {ke}.
|
||||
|
||||
The {pair/hybrid} keyword means to only include contribution
|
||||
from a sub-style in a {hybrid} or {hybrid/overlay} pair style.
|
||||
|
||||
Details of how LAMMPS computes the virial efficiently for the entire
|
||||
system, including for many-body potentials and accounting for the
|
||||
effects of periodic boundary conditions are discussed in
|
||||
|
||||
@ -24,12 +24,7 @@ twojmax = band limit for bispectrum components (non-negative integer) :l
|
||||
R_1, R_2,... = list of cutoff radii, one for each type (distance units) :l
|
||||
w_1, w_2,... = list of neighbor weights, one for each type :l
|
||||
zero or more keyword/value pairs may be appended :l
|
||||
keyword = {diagonal} or {rmin0} or {switchflag} or {bzeroflag} or {quadraticflag} :l
|
||||
{diagonal} value = {0} or {1} or {2} or {3}
|
||||
{0} = all j1, j2, j <= twojmax, j2 <= j1
|
||||
{1} = subset satisfying j1 == j2
|
||||
{2} = subset satisfying j1 == j2 == j3
|
||||
{3} = subset satisfying j2 <= j1 <= j
|
||||
keyword = {rmin0} or {switchflag} or {bzeroflag} or {quadraticflag} :l
|
||||
{rmin0} value = parameter in distance to angle conversion (distance units)
|
||||
{switchflag} value = {0} or {1}
|
||||
{0} = do not use switching function
|
||||
@ -44,7 +39,7 @@ keyword = {diagonal} or {rmin0} or {switchflag} or {bzeroflag} or {quadraticflag
|
||||
|
||||
[Examples:]
|
||||
|
||||
compute b all sna/atom 1.4 0.99363 6 2.0 2.4 0.75 1.0 diagonal 3 rmin0 0.0
|
||||
compute b all sna/atom 1.4 0.99363 6 2.0 2.4 0.75 1.0 rmin0 0.0
|
||||
compute db all sna/atom 1.4 0.95 6 2.0 1.0
|
||||
compute vb all sna/atom 1.4 0.95 6 2.0 1.0 :pre
|
||||
|
||||
@ -151,7 +146,7 @@ The argument {rfac0} and the optional keyword {rmin0} define the
|
||||
linear mapping from radial distance to polar angle {theta0} on the
|
||||
3-sphere.
|
||||
|
||||
The argument {twojmax} and the keyword {diagonal} define which
|
||||
The argument {twojmax} defines which
|
||||
bispectrum components are generated. See section below on output for a
|
||||
detailed explanation of the number of bispectrum components and the
|
||||
ordered in which they are listed.
|
||||
@ -192,23 +187,18 @@ command that includes all pairs in the neighbor list.
|
||||
Compute {sna/atom} calculates a per-atom array, each column
|
||||
corresponding to a particular bispectrum component. The total number
|
||||
of columns and the identity of the bispectrum component contained in
|
||||
each column depend on the values of {twojmax} and {diagonal}, as
|
||||
each column depend of the value of {twojmax}, as
|
||||
described by the following piece of python code:
|
||||
|
||||
for j1 in range(0,twojmax+1):
|
||||
if(diagonal==2):
|
||||
print j1/2.,j1/2.,j1/2.
|
||||
elif(diagonal==1):
|
||||
for j in range(0,min(twojmax,2*j1)+1,2):
|
||||
print j1/2.,j1/2.,j/2.
|
||||
elif(diagonal==0):
|
||||
for j2 in range(0,j1+1):
|
||||
for j in range(j1-j2,min(twojmax,j1+j2)+1,2):
|
||||
print j1/2.,j2/2.,j/2.
|
||||
elif(diagonal==3):
|
||||
for j2 in range(0,j1+1):
|
||||
for j in range(j1-j2,min(twojmax,j1+j2)+1,2):
|
||||
if (j>=j1): print j1/2.,j2/2.,j/2. :pre
|
||||
for j2 in range(0,j1+1):
|
||||
for j in range(j1-j2,min(twojmax,j1+j2)+1,2):
|
||||
if (j>=j1): print j1/2.,j2/2.,j/2. :pre
|
||||
|
||||
NOTE: the {diagonal} keyword allowing other possible choices
|
||||
for the number of bispectrum components was removed in 2019,
|
||||
since all potentials use the value of 3, corresponding to the
|
||||
above set of bispectrum components.
|
||||
|
||||
Compute {snad/atom} evaluates a per-atom array. The columns are
|
||||
arranged into {ntypes} blocks, listed in order of atom type {I}. Each
|
||||
@ -259,7 +249,7 @@ package"_Build_package.html doc page for more info.
|
||||
|
||||
[Default:]
|
||||
|
||||
The optional keyword defaults are {diagonal} = 0, {rmin0} = 0,
|
||||
The optional keyword defaults are {rmin0} = 0,
|
||||
{switchflag} = 1, {bzeroflag} = 1, {quadraticflag} = 0,
|
||||
|
||||
:line
|
||||
|
||||
@ -88,6 +88,8 @@ potentials only include the pair potential portion of the EAM
|
||||
interaction when used by this compute, not the embedding term. Also
|
||||
bonded or Kspace interactions do not contribute to this compute.
|
||||
|
||||
The computes in this package are not compatible with dynamic groups.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
{compute group/group}_compute_group_group.html, {compute
|
||||
|
||||
@ -44,6 +44,7 @@ Computes :h1
|
||||
compute_group_group
|
||||
compute_gyration
|
||||
compute_gyration_chunk
|
||||
compute_gyration_shape
|
||||
compute_heat_flux
|
||||
compute_hexorder_atom
|
||||
compute_improper
|
||||
@ -57,6 +58,7 @@ Computes :h1
|
||||
compute_meso_e_atom
|
||||
compute_meso_rho_atom
|
||||
compute_meso_t_atom
|
||||
compute_momentum
|
||||
compute_msd
|
||||
compute_msd_chunk
|
||||
compute_msd_nongauss
|
||||
|
||||
@ -242,9 +242,8 @@ write_dump all atom sinusoid.lammpstrj :pre
|
||||
|
||||
:c,image(JPG/sinusoid_small.jpg,JPG/sinusoid.jpg)
|
||||
|
||||
The {rotate} keyword can only be used with the {single} style and
|
||||
when adding a single molecule. It allows to specify the orientation
|
||||
at which the molecule is inserted. The axis of rotation is
|
||||
The {rotate} keyword allows specification of the orientation
|
||||
at which molecules are inserted. The axis of rotation is
|
||||
determined by the rotation vector (Rx,Ry,Rz) that goes through the
|
||||
insertion point. The specified {theta} determines the angle of
|
||||
rotation around that axis. Note that the direction of rotation for
|
||||
|
||||
@ -191,6 +191,16 @@ switch"_Run_options.html when you invoke LAMMPS, or you can use the
|
||||
See the "Speed packages"_Speed_packages.html doc page for more
|
||||
instructions on how to use the accelerated styles effectively.
|
||||
|
||||
[Restart info:]
|
||||
|
||||
This dihedral style writes the settings for the "dihedral_style table"
|
||||
command to "binary restart files"_restart.html, so a dihedral_style
|
||||
command does not need to specified in an input script that reads a
|
||||
restart file. However, the coefficient information is not stored in
|
||||
the restart file, since it is tabulated in the potential files. Thus,
|
||||
dihedral_coeff commands do need to be specified in the restart input
|
||||
script.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This dihedral style can only be used if LAMMPS was built with the
|
||||
|
||||
@ -189,6 +189,16 @@ Note that one file can contain many sections, each with a tabulated
|
||||
potential. LAMMPS reads the file section by section until it finds one
|
||||
that matches the specified keyword.
|
||||
|
||||
[Restart info:]
|
||||
|
||||
This dihedral style writes the settings for the "dihedral_style table/cut"
|
||||
command to "binary restart files"_restart.html, so a dihedral_style
|
||||
command does not need to specified in an input script that reads a
|
||||
restart file. However, the coefficient information is not stored in
|
||||
the restart file, since it is tabulated in the potential files. Thus,
|
||||
dihedral_coeff commands do need to be specified in the restart input
|
||||
script.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This dihedral style can only be used if LAMMPS was built with the
|
||||
|
||||
@ -149,8 +149,7 @@ meaning of these parameters:
|
||||
"spin/neel"_pair_spin_neel.html: coulombic_cutoff: type global:
|
||||
"table"_pair_table.html: table_cutoff: type pairs:
|
||||
"ufm"_pair_ufm.html: epsilon,sigma: type pairs:
|
||||
"soft"_pair_soft.html: a: type pairs:
|
||||
"kim"_pair_kim.html: PARAM_FREE_*:i,j,...: global :tb(c=3,s=:)
|
||||
"soft"_pair_soft.html: a: type pairs: :tb(c=3,s=:)
|
||||
|
||||
NOTE: It is easy to add new pairwise potentials and their parameters
|
||||
to this list. All it typically takes is adding an extract() method to
|
||||
|
||||
@ -141,11 +141,16 @@ specify if this should be done.
|
||||
|
||||
This fix writes the state of the fix to "binary restart
|
||||
files"_restart.html. This includes information about the random
|
||||
number generator seed, the next timestep for MC exchanges, etc. See
|
||||
number generator seed, the next timestep for MC exchanges, the number
|
||||
of exchange attempts and successes etc. See
|
||||
the "read_restart"_read_restart.html command for info on how to
|
||||
re-specify a fix in an input script that reads a restart file, so that
|
||||
the operation of the fix continues in an uninterrupted fashion.
|
||||
|
||||
NOTE: For this to work correctly, the timestep must [not] be changed
|
||||
after reading the restart with "reset_timestep"_reset_timestep.html.
|
||||
The fix will try to detect it and stop with an error.
|
||||
|
||||
None of the "fix_modify"_fix_modify.html options are relevant to this
|
||||
fix.
|
||||
|
||||
|
||||
@ -18,13 +18,13 @@ fix ID group-ID bond/react common_keyword values ...
|
||||
|
||||
ID, group-ID are documented in "fix"_fix.html command. Group-ID is ignored. :ulb,l
|
||||
bond/react = style name of this fix command :l
|
||||
zero or more common keyword/value pairs may be appended directly after 'bond/react' :l
|
||||
these apply to all reaction specifications (below) :l
|
||||
the common keyword/values may be appended directly after 'bond/react' :l
|
||||
this applies to all reaction specifications (below) :l
|
||||
common_keyword = {stabilization} :l
|
||||
{stabilization} values = {no} or {yes} {group-ID} {xmax}
|
||||
{no} = no reaction site stabilization
|
||||
{yes} = perform reaction site stabilization
|
||||
{group-ID} = user-assigned prefix for the dynamic group of non-reacting atoms
|
||||
{group-ID} = user-assigned prefix for the dynamic group of atoms not currently involved in a reaction
|
||||
{xmax} = xmax value that is used by an internally-created "nve/limit"_fix_nve_limit.html integrator :pre
|
||||
react = mandatory argument indicating new reaction specification :l
|
||||
react-ID = user-assigned name for the reaction :l
|
||||
@ -52,6 +52,8 @@ react = mandatory argument indicating new reaction specification :l
|
||||
|
||||
[Examples:]
|
||||
|
||||
For unabridged example scripts and files, see examples/USER/misc/bond_react.
|
||||
|
||||
molecule mol1 pre_reacted_topology.txt
|
||||
molecule mol2 post_reacted_topology.txt
|
||||
fix 5 all bond/react react myrxn1 all 1 0 3.25 mol1 mol2 map_file.txt :pre
|
||||
@ -106,6 +108,20 @@ involved in any new reactions. The {xmax} value keyword should
|
||||
typically be set to the maximum distance that non-reacting atoms move
|
||||
during the simulation.
|
||||
|
||||
Fix bond/react creates and maintains two important dynamic groups of
|
||||
atoms when using the {stabilization} keyword. The first group contains
|
||||
all atoms currently involved in a reaction; this group is
|
||||
automatically thermostatted by an internally-created
|
||||
"nve/limit"_fix_nve_limit.html integrator. The second group contains
|
||||
all atoms currently not involved in a reaction. This group should be
|
||||
used by a thermostat in order to time integrate the system. The name
|
||||
of this group of non-reacting atoms is created by appending '_REACT'
|
||||
to the group-ID argument of the {stabilization} keyword, as shown in
|
||||
the second example above.
|
||||
|
||||
NOTE: When using reaction stabilization, you should generally not have
|
||||
a separate thermostat which acts on the 'all' group.
|
||||
|
||||
The group-ID set using the {stabilization} keyword can be an existing
|
||||
static group or a previously-unused group-ID. It cannot be specified
|
||||
as 'all'. If the group-ID is previously unused, the fix bond/react
|
||||
@ -116,30 +132,29 @@ internally-created dynamic group. In both cases, this new dynamic
|
||||
group is named by appending '_REACT' to the group-ID, e.g.
|
||||
nvt_grp_REACT. By specifying an existing group, you may thermostat
|
||||
constant-topology parts of your system separately. The dynamic group
|
||||
contains only non-reacting atoms at a given timestep, and therefore
|
||||
should be used by a subsequent system-wide time integrator such as
|
||||
nvt, npt, or nve, as shown in the second example above. The time
|
||||
integration command should be placed after the fix bond/react command
|
||||
due to the internal dynamic grouping performed by fix bond/react.
|
||||
contains only atoms not involved in a reaction at a given timestep,
|
||||
and therefore should be used by a subsequent system-wide time
|
||||
integrator such as nvt, npt, or nve, as shown in the second example
|
||||
above (full examples can be found at examples/USER/misc/bond_react).
|
||||
The time integration command should be placed after the fix bond/react
|
||||
command due to the internal dynamic grouping performed by fix
|
||||
bond/react.
|
||||
|
||||
NOTE: If the group-ID is an existing static group, react-group-IDs
|
||||
should also be specified as this static group, or a subset.
|
||||
|
||||
NOTE: If the group-ID is previously unused, the internally-created
|
||||
group applies to all atoms in the system, i.e. you should generally
|
||||
not have a separate thermostat which acts on the 'all' group, or any
|
||||
other group.
|
||||
|
||||
The following comments pertain to each {react} argument (in other
|
||||
words, can be customized for each reaction, or reaction step):
|
||||
|
||||
A check for possible new reaction sites is performed every {Nevery}
|
||||
timesteps.
|
||||
|
||||
Two conditions must be met for a reaction to occur. First a bonding
|
||||
atom pair must be identified. Second, the topology surrounding the
|
||||
bonding atom pair must match the topology of the pre-reaction
|
||||
template. If both these conditions are met, the reaction site is
|
||||
Three physical conditions must be met for a reaction to occur. First,
|
||||
a bonding atom pair must be identified within the reaction distance
|
||||
cutoffs. Second, the topology surrounding the bonding atom pair must
|
||||
match the topology of the pre-reaction template. Finally, any reaction
|
||||
constraints listed in the map file (see below) must be satisfied. If
|
||||
all of these conditions are met, the reaction site is eligible to be
|
||||
modified to match the post-reaction template.
|
||||
|
||||
A bonding atom pair will be identified if several conditions are met.
|
||||
@ -203,14 +218,24 @@ new types must also be defined during the setup of a given simulation.
|
||||
A discussion of correctly handling this is also provided on the
|
||||
"molecule"_molecule.html command page.
|
||||
|
||||
NOTE: When a reaction occurs, it is possible that the resulting
|
||||
topology/atom (e.g. special bonds, dihedrals, etc.) exceeds that of
|
||||
the existing system and reaction templates. As when inserting
|
||||
molecules, enough space for this increased topology/atom must be
|
||||
reserved by using the relevant "extra" keywords to the
|
||||
"read_data"_read_data.html or "create_box"_create_box.html commands.
|
||||
|
||||
The map file is a text document with the following format:
|
||||
|
||||
A map file has a header and a body. The header of map file the
|
||||
contains one mandatory keyword and three optional keywords. The
|
||||
mandatory keyword is 'equivalences' and the optional keywords are
|
||||
'edgeIDs' and 'deleteIDs' and 'customIDs':
|
||||
contains one mandatory keyword and four optional keywords. The
|
||||
mandatory keyword is 'equivalences':
|
||||
|
||||
N {equivalences} = # of atoms N in the reaction molecule templates :pre
|
||||
|
||||
The optional keywords are 'edgeIDs', 'deleteIDs', 'customIDs' and
|
||||
'constraints':
|
||||
|
||||
N {equivalences} = # of atoms N in the reaction molecule templates
|
||||
N {edgeIDs} = # of edge atoms N in the pre-reacted molecule template
|
||||
N {deleteIDs} = # of atoms N that are specified for deletion
|
||||
N {customIDs} = # of atoms N that are specified for a custom update
|
||||
@ -244,8 +269,8 @@ A sample map file is given below:
|
||||
|
||||
# this is a map file :pre
|
||||
|
||||
2 edgeIDs
|
||||
7 equivalences :pre
|
||||
7 equivalences
|
||||
2 edgeIDs :pre
|
||||
|
||||
BondingIDs :pre
|
||||
|
||||
@ -297,26 +322,25 @@ can allow for the possibility of one or more reverse reactions.
|
||||
|
||||
The optional keywords deal with the probability of a given reaction
|
||||
occurring as well as the stable equilibration of each reaction site as
|
||||
it occurs.
|
||||
it occurs:
|
||||
|
||||
The {prob} keyword can affect whether an eligible reaction actually
|
||||
occurs. The fraction setting must be a value between 0.0 and 1.0. A
|
||||
uniform random number between 0.0 and 1.0 is generated and the
|
||||
The {prob} keyword can affect whether or not an eligible reaction
|
||||
actually occurs. The fraction setting must be a value between 0.0 and
|
||||
1.0. A uniform random number between 0.0 and 1.0 is generated and the
|
||||
eligible reaction only occurs if the random number is less than the
|
||||
fraction. Up to N reactions are permitted to occur, as optionally
|
||||
specified by the {max_rxn} keyword.
|
||||
|
||||
The {stabilize_steps} keyword allows for the specification of how many
|
||||
timesteps a reaction site is stabilized before being returned to the
|
||||
overall system thermostat.
|
||||
|
||||
In order to produce the most physical behavior, this 'reaction site
|
||||
equilibration time' should be tuned to be as small as possible while
|
||||
retaining stability for a given system or reaction step. After a
|
||||
limited number of case studies, this number has been set to a default
|
||||
of 60 timesteps. Ideally, it should be individually tuned for each fix
|
||||
reaction step. Note that in some situations, decreasing rather than
|
||||
increasing this parameter will result in an increase in stability.
|
||||
overall system thermostat. In order to produce the most physical
|
||||
behavior, this 'reaction site equilibration time' should be tuned to
|
||||
be as small as possible while retaining stability for a given system
|
||||
or reaction step. After a limited number of case studies, this number
|
||||
has been set to a default of 60 timesteps. Ideally, it should be
|
||||
individually tuned for each fix reaction step. Note that in some
|
||||
situations, decreasing rather than increasing this parameter will
|
||||
result in an increase in stability.
|
||||
|
||||
The {update_edges} keyword can increase the number of atoms whose
|
||||
atomic charges are updated, when the pre-reaction template contains
|
||||
@ -324,11 +348,11 @@ edge atoms. When the value is set to 'charges,' all atoms' atomic
|
||||
charges are updated to those specified by the post-reaction template,
|
||||
including atoms near the edge of reaction templates. When the value is
|
||||
set to 'custom,' an additional section must be included in the map
|
||||
file that specifies whether to update charges, on a per-atom basis.
|
||||
The format of this section is detailed above. Listing a pre-reaction
|
||||
atom ID with a value of 'charges' will force the update of the atom's
|
||||
charge, even if it is near a template edge. Atoms not near a template
|
||||
edge are unaffected by this setting.
|
||||
file that specifies whether or not to update charges, on a per-atom
|
||||
basis. The format of this section is detailed above. Listing a
|
||||
pre-reaction atom ID with a value of 'charges' will force the update
|
||||
of the atom's charge, even if it is near a template edge. Atoms not
|
||||
near a template edge are unaffected by this setting.
|
||||
|
||||
A few other considerations:
|
||||
|
||||
@ -341,12 +365,13 @@ an atom that is not deleted. In addition to deleting unwanted reaction
|
||||
by-products, this feature can be used to remove specific topologies,
|
||||
such as small rings, that may be otherwise indistinguishable.
|
||||
|
||||
Also, it may be beneficial to ensure reacting atoms are at a certain
|
||||
temperature before being released to the overall thermostat. For this,
|
||||
you can use the internally-created dynamic group named
|
||||
"bond_react_MASTER_group." For example, adding the following command
|
||||
would thermostat the group of all atoms currently involved in a
|
||||
reaction:
|
||||
Optionally, you can enforce additional behaviors on reacting atoms.
|
||||
For example, it may be beneficial to force reacting atoms to remain at
|
||||
a certain temperature. For this, you can use the internally-created
|
||||
dynamic group named "bond_react_MASTER_group", which consists of all
|
||||
atoms currently involved in a reaction. For example, adding the
|
||||
following command would add an additional thermostat to the group of
|
||||
all currently-reacting atoms:
|
||||
|
||||
fix 1 bond_react_MASTER_group temp/rescale 1 300 300 10 1 :pre
|
||||
|
||||
|
||||
@ -261,6 +261,10 @@ next timestep for deposition, etc. See the
|
||||
a fix in an input script that reads a restart file, so that the
|
||||
operation of the fix continues in an uninterrupted fashion.
|
||||
|
||||
NOTE: For this to work correctly, the timestep must [not] be changed
|
||||
after reading the restart with "reset_timestep"_reset_timestep.html.
|
||||
The fix will try to detect it and stop with an error.
|
||||
|
||||
None of the "fix_modify"_fix_modify.html options are relevant to this
|
||||
fix. No global or per-atom quantities are stored by this fix for
|
||||
access by various "output commands"_Howto_output.html. No parameter
|
||||
|
||||
@ -373,11 +373,16 @@ adds all inserted atoms of the specified type to the
|
||||
|
||||
This fix writes the state of the fix to "binary restart
|
||||
files"_restart.html. This includes information about the random
|
||||
number generator seed, the next timestep for MC exchanges, etc. See
|
||||
number generator seed, the next timestep for MC exchanges, the number
|
||||
of MC step attempts and successes etc. See
|
||||
the "read_restart"_read_restart.html command for info on how to
|
||||
re-specify a fix in an input script that reads a restart file, so that
|
||||
the operation of the fix continues in an uninterrupted fashion.
|
||||
|
||||
NOTE: For this to work correctly, the timestep must [not] be changed
|
||||
after reading the restart with "reset_timestep"_reset_timestep.html.
|
||||
The fix will try to detect it and stop with an error.
|
||||
|
||||
None of the "fix_modify"_fix_modify.html options are relevant to this
|
||||
fix.
|
||||
|
||||
|
||||
@ -114,5 +114,5 @@ The default options are plumedfile = NULL and outfile = NULL
|
||||
:link(PLUMED)
|
||||
[(PLUMED)] G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014)
|
||||
|
||||
:link(plumeddocs,http://www.plumed.org/documentation)
|
||||
:link(plumeddocs,http://www.plumed.org/doc.html)
|
||||
:link(plumedhome,http://www.plumed.org/)
|
||||
|
||||
@ -57,8 +57,7 @@ Boolean expression is FALSE, then no commands are executed.
|
||||
The syntax for Boolean expressions is described below.
|
||||
|
||||
Each command (t1, f1, e1, etc) can be any valid LAMMPS input script
|
||||
command, except an "include"_include.html command, which is not
|
||||
allowed. If the command is more than one word, it must enclosed in
|
||||
command. If the command is more than one word, it must enclosed in
|
||||
quotes, so it will be treated as a single argument, as in the examples
|
||||
above.
|
||||
|
||||
|
||||
@ -27,7 +27,7 @@ The {fourier} improper style uses the following potential:
|
||||
where K is the force constant and omega is the angle between the IL
|
||||
axis and the IJK plane:
|
||||
|
||||
:c,image(Eqs/umbrella.jpg)
|
||||
:c,image(JPG/umbrella.jpg)
|
||||
|
||||
If all parameter (see bellow) is not zero, the all the three possible angles will taken in account.
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@ where K is the force constant and omega is the angle evaluated for
|
||||
all three axis-plane combinations centered around the atom I. For
|
||||
the IL axis and the IJK plane omega looks as follows:
|
||||
|
||||
:c,image(Eqs/umbrella.jpg)
|
||||
:c,image(JPG/umbrella.jpg)
|
||||
|
||||
Note that the {inversion/harmonic} angle term evaluation differs to
|
||||
the "improper_umbrella"_improper_umbrella.html due to the cyclic
|
||||
|
||||