Compare commits

...

2037 Commits

Author SHA1 Message Date
ceb9466172 Merge pull request #3283 from akohlmey/next_patch_release
Step version strings for next patch release
2022-06-02 21:22:16 -04:00
2da61d69a1 Merge pull request #3289 from akohlmey/collected-small-changes
A few last minutes updates and fixes for the next patch release
2022-06-02 20:16:39 -04:00
31f7798720 Merge pull request #3278 from yury-lysogorskiy/feature/ml-pace-multispecies
ML_PACE package hybrid support and small updates
2022-06-02 19:27:53 -04:00
aad4d093b8 correctly handle the situation that the build folder may have multiple libs downloaded 2022-06-02 18:18:32 -04:00
ad97d18ac7 Merge pull request #3286 from Colvars/update-colvars-lepton
Update Colvars to 2022-05-24 and copy of Lepton library
2022-06-02 18:09:05 -04:00
4913c72795 Merge pull request #3288 from olavgal/clean_stress_cartesian
Clean stress cartesian
2022-06-02 17:19:19 -04:00
2a054c17be - set species type for NULL atom type to -1. species_type=-1 value will not reach ACE Evaluator::compute_atom, but if it will ,then error will be thrown there
- updating lib pace MD5SUM (for both make and cmake installation scenario), but use same tag name v.2021.10.25.fix2 (add override keyword to ACERadialFunctions, add check for species_type==-1, fix yaml_cpp CMakeLists.txt)
2022-06-02 23:01:54 +02:00
260a5f4d52 update false positives 2022-06-02 14:39:08 -04:00
90add188cb Merge pull request #3279 from schererc/develop
Addition of two new MANYBODY pair styles (sw/angle/table and threebody/table)
2022-06-02 14:24:44 -04:00
9d252fe0d2 remove error docs and apply clang-format 2022-06-02 12:57:45 -04:00
a74f64a737 do not allow per-atom arrays to shrink 2022-06-02 12:55:47 -04:00
fc468accf5 clang-format and removed more unused variables 2022-06-02 18:34:48 +02:00
954700dea5 Updated memory calculation and removed unused variables 2022-06-02 18:28:04 +02:00
2742517a4f Clean up of stress/cartesian 2022-06-02 18:26:09 +02:00
7a02043f18 update docs to list examples and include links to the tutorials 2022-06-02 12:11:10 -04:00
04586e634e Remove trailing whitespace from Lepton per suggestion from @akohlmey 2022-06-02 11:52:39 -04:00
6c375ffade Update PDF Colvars manual 2022-06-02 11:48:19 -04:00
3a1423dc48 Update Colvars to 2022-05-24 and copy of Lepton library
One bugfix for the Colvars library in the ABF method, and update of the copy
of the Lepton library as per the OpenMM repository.

List of relevant PR.

- 483 Update Lepton via patching procedure
  https://github.com/Colvars/colvars/pull/483 (@giacomofiorin)

- 482 Fix integer overflow in log_gradient_finite_diff and gradient_finite_diff
  https://github.com/Colvars/colvars/pull/482 (@HanatoK)
2022-06-02 11:24:04 -04:00
5a4688ed44 Update pair_pace.cpp 2022-06-02 09:05:15 -06:00
fdc8bcfbfc I removed the comment attributed to me, it is now outdated. 2022-06-02 09:03:16 -06:00
e214013a91 tweak epsilon to avoid failure on FreeBSD 2022-06-02 07:53:41 -04:00
8e415f0c00 try to enforce QUIP submodule update strategy 2022-06-01 22:26:35 -04:00
c028dcbdf7 small tweak 2022-06-01 22:14:04 -04:00
e36620059d simplify, apply clang-format 2022-06-01 22:08:35 -04:00
866391e830 modify so pair style pace will work as pair style hybrid substyle 2022-06-01 21:56:13 -04:00
9f021ba490 whitespace 2022-06-01 21:54:33 -04:00
c0bd4185f8 Merge branch 'develop' into feature/ml-pace-multispecies 2022-06-01 21:10:59 -04:00
30ae7fe66b Merge pull request #3285 from akohlmey/clang-format-clang-tidy
Apply clang-tidy and clang-format to update/modernize/simplify recently modified code
2022-06-01 19:04:43 -04:00
bf9b79b734 Merge pull request #3284 from stanmoore1/kk_3280
Port changes in #3280 to Kokkos
2022-06-01 18:54:58 -04:00
4bf90988e2 Fix bug when comparing equal tags 2022-06-01 14:52:07 -06:00
b45117655e move patch release date 2022-06-01 16:13:45 -04:00
217b070204 add unit tests 2022-06-01 15:31:49 -04:00
7d31544cc2 simplify and avoid memory access and leak issues in parallel 2022-06-01 15:04:28 -04:00
8a055fdcfa merge with third manybody table example and provide updated log files 2022-06-01 15:04:07 -04:00
b9b0d7207c apply clang-format 2022-06-01 14:24:23 -04:00
edea4fa9a2 fix memory allocation/communication issues. avoid memory leaks. 2022-06-01 14:23:30 -04:00
8e9071b01f move and update threebody/table examples 2022-06-01 14:22:53 -04:00
ee6e18f08e Merge branch 'develop' into schererc/develop 2022-06-01 12:07:06 -04:00
b85b3e1f4c fix doc file names and links 2022-06-01 12:06:56 -04:00
95a979c657 examples/PACKAGES: rename pair_sw_3b_table to pair_sw_angle_table
including all input and documentation files
2022-06-01 16:34:10 +02:00
e8d9bf0507 examples/PACKAGES: renamed pair_3b_table to pair_threebody_table
including all input and documentation files
2022-06-01 16:30:37 +02:00
3a19b1eb4b Update pair_style.rst
pair_style.rst: update due to name changes from 3b/table to threebody/table and sw/3b/table to sw/angle/table
2022-06-01 16:16:13 +02:00
f6fab8365a Update Commands_pair.rst
Commands_pair.rst: update due to name change from 3b/table to threebody/table and sw/3b/table to sw/angle/table
2022-06-01 16:14:37 +02:00
64d67f7604 Update pair_sw_angle_table.rst
pair_sw_angle_table.rst: minor correction
2022-06-01 16:12:13 +02:00
c1e301ac1a Update pair_3b_table.rst
changed documentation and file name from pair style 3b/table to threebody/table
2022-06-01 16:11:47 +02:00
a833baac80 Update pair_sw_angle_table.cpp
Minor correction in pair_sw_angle_table.cpp
2022-06-01 16:04:09 +02:00
187ccdd222 Update and rename pair_3b_table.cpp to pair_threebody_table.cpp
changed pair 3b/table to pair threebody/table including name of .cpp file
2022-06-01 16:03:06 +02:00
5756dedfed Update and rename pair_3b_table.h to pair_threebody_table.h
changed pair style and file name of header file from 3b/table to threebody/table
2022-06-01 15:52:46 +02:00
ebce66389e Update and rename pair_sw_3b_table.rst to pair_sw_angle_table.rst
changed documentation and file name from sw/3b/table to sw/angle/table
2022-06-01 14:24:40 +02:00
8dfa4a8682 Update and rename pair_sw_3b_table.cpp to pair_sw_angle_table.cpp
Changed .cpp file for pair style sw/3b/table to sw/angle/table
2022-06-01 14:20:30 +02:00
25f24fbab1 Update and rename pair_sw_3b_table.h to pair_sw_angle_table.h
Renamed header file from sw/3b/table to sw/angle/table
2022-06-01 14:11:32 +02:00
9da3dd796a delete undesired default members instead of making them inaccessible 2022-06-01 02:30:25 -04:00
5abb6c76af small tweak 2022-06-01 02:13:02 -04:00
ef6c48dad7 Whack tabs 2022-05-31 14:53:17 -06:00
b675372d99 Use MIN_SINE and add comment 2022-05-31 14:44:18 -06:00
234b9f180a use clang-tidy and clang-format to update/modernize/simplify code 2022-05-31 14:46:57 -04:00
3b4e698421 Merge branch 'develop' of github.com:lammps/lammps into kk_3280 2022-05-31 12:38:03 -06:00
77835a4258 Port changes in #3280 to Kokkos 2022-05-31 12:36:04 -06:00
7c0c7ce93c Merge pull request #3281 from akohlmey/collected-small-changes
Collected small changes for the next patch release
2022-05-31 13:10:35 -04:00
b8599ccb42 fix small local vs. ghost atom access inconsistency in pair style bop 2022-05-31 11:52:16 -04:00
de5c2629ac small tweak 2022-05-31 06:53:19 -04:00
3f332ab0c1 step version strings for next patch release 2022-05-31 06:51:13 -04:00
cc86e9e8a8 remove windows+gcc test (for now) 2022-05-29 19:56:39 -04:00
fa79a66734 feof() returns non-zero not necessarily 1 2022-05-29 19:53:11 -04:00
562cd12d82 revert github action build to LAMMPS repo and develop branch 2022-05-29 15:04:41 -04:00
90730f0d3c update windows version history 2022-05-29 02:01:21 -04:00
4c36c79652 remove feature for automatic jpeg/png/zlib library download and build
this is a post-stable feature and would require a general rewrite of offline processing
2022-05-28 15:20:22 -04:00
81c327edd8 add missing override. remove redundant functionality and disable warnings differently
this removes an inconsistent overload due to mismatch of arguments
2022-05-28 11:56:26 -04:00
d0edd7129c update workflows 2022-05-28 04:55:27 -04:00
3615639bdd Check for a working internet connection.
With this check we only do automatic downloads if the check passes
2022-05-28 04:55:10 -04:00
e2dd08a93e Better handle file- or path-names with spaces 2022-05-28 04:55:10 -04:00
5f811f852f stop with detailed parser error message with incorrect potential tables 2022-05-28 04:45:52 -04:00
886ad8359e use venv instead of virtualenv 2022-05-28 04:45:52 -04:00
0b3efa4dd6 set masses from BOP potential files, update unit tests accordingly 2022-05-28 04:45:52 -04:00
e91d1dba98 Merge pull request #3280 from athomps/reaxff-torsion-zero-sine
Eliminated bad torsion forces for sin(theta) = 0
2022-05-27 12:11:46 -04:00
cfb3d6bdf8 simplify, remove inactive code, plug memory leaks 2022-05-27 07:48:00 -04:00
3ecb6bb54a Update pair_3b_table.cpp
Added (forgotten) line "u=pm->mltable->efile[itable];" to compute energy due to read in table values
2022-05-27 12:34:53 +02:00
49a75d576e Eliminated bad torsion forces when when sin(theta) is zero 2022-05-26 17:28:05 -06:00
ab2b7a2c01 Merge pull request #3275 from akohlmey/collected-small-changes
Collected small changes and fixes
2022-05-26 18:07:43 -04:00
f09e4c7583 remove check on box size from pair style bop 2022-05-26 16:56:43 -04:00
587999fabb mention that MSM does not support shrink-wrap 2022-05-26 15:33:23 -04:00
f0f6660050 join lines 2022-05-26 12:15:27 -04:00
d9b560e70b properly integrate into manual 2022-05-26 12:08:21 -04:00
2a7407aa38 programming style updates 2022-05-26 11:41:51 -04:00
48f477e4b4 Update pair_sw_3b_table.rst
Small correction
2022-05-26 15:19:41 +02:00
e890e5718e examples/PACKAGES/pair_3b_table: added example for new pair style 3b/table 2022-05-26 14:45:22 +02:00
b8dfb23ede examples/PACKAGES/pair_sw_3b_table/README: corrections in the text 2022-05-26 14:32:12 +02:00
18c9960db0 examples/pair_sw_3b_table/README: minor correction 2022-05-26 14:25:24 +02:00
f9fbc7f94b doc/src/pair_3b_table.rst: documentation for added pair style 3b/table 2022-05-26 14:17:36 +02:00
27524742e5 src/MANYBODY/pair_3b_table.h, src/MANYBODY/pair_3b_table.cpp: added pair style for generic fully tabulated three-body forces which has been developed for simulations with Kernel-based machine learning potentials. 2022-05-26 14:16:26 +02:00
770454cb8b examples/PACKAGES/pair_sw_3b_table: added example for new pair style sw/3b/table 2022-05-26 14:00:06 +02:00
0e114b1041 doc/src/pair_sw_3b_table.rst: documentation for added pair style sw/3b/table 2022-05-26 13:35:40 +02:00
1cfba3d8bb src/MANYBODY/pair_sw_3b_table.h, src/MANYBODY/pair_sw_3b_table.cpp: added pair style sw/3b/table which is a modification of the SW pair style with tabulated angular potentials 2022-05-26 13:21:47 +02:00
1ae62793eb src/MANYBODY/pair_sw.h: made read_file(char *) virtual to allow overriding 2022-05-26 13:17:45 +02:00
dba9fdb1ef Merge branch 'develop' into collected-small-changes 2022-05-26 06:37:24 -04:00
2085c10002 update version of lib-pace to v.2021.10.25.fix2 2022-05-25 17:56:24 +02:00
f6680861a0 BUGFIX: bad array length: initialize maximum number of neighbours with max_jnum=0 2022-05-25 17:27:12 +02:00
7c2a548015 Merge pull request #3277 from erozic/feature-pylammps-verbose
Verbose object-level option for PyLammps
2022-05-25 10:57:58 -04:00
3ee209d031 update singularity definition for ubuntu22.04LTS
This now has the changes required to include the openkim-api package
2022-05-25 06:35:08 -04:00
c6c0b269ec Merge pull request #3276 from shankar1729/develop
Fixed TIP4P handling in PPPM slab correction.
2022-05-24 17:20:42 -04:00
1aaa9ca4ae Added documentation for verbose option 2022-05-24 12:02:34 +02:00
b66702c285 Added verbose class option + removed empty output lines 2022-05-24 11:37:44 +02:00
43b57b8aa5 update unit test reference data 2022-05-23 20:14:10 -04:00
ef80bb194a Fixed TIP4P handling in PPPM slab correction.
Overridded the slabcorr() function to handle the charge being on the TIP4P "M" site in the dipole calculation (and corresponding force correction). This is important for any long-range electrostatics in aqueous interfaces with the TIP4P model.
2022-05-23 17:28:32 -04:00
3662d998ee fix typo + cut-n-paste error 2022-05-23 11:53:58 -04:00
bead819070 changes missing from the previous commit 2022-05-23 11:37:00 -04:00
b461a49eee use _EXECUTABLE consistently instead of _BINARY 2022-05-23 11:14:17 -04:00
9f7833668a whitespace 2022-05-22 18:15:10 -04:00
0069c4b562 update docs for automatic jpeg/png/zlib library download and build with CMake 2022-05-22 18:10:26 -04:00
46df8abe75 rename jpeg cmake file for consistency 2022-05-22 17:49:54 -04:00
3c3c1377c8 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-05-22 17:47:58 -04:00
d905d3fbf5 reorganize build settings and presets 2022-05-22 17:46:12 -04:00
1959cd7037 download, build, and link missing png and zlib libraries with CMake 2022-05-22 17:45:42 -04:00
7d3d986d18 download, build, and link a missing jpeg library with CMake 2022-05-22 14:03:20 -04:00
cd8bef3b0b enable and apply clang-format 2022-05-22 07:04:35 -04:00
9a973e67fa enable and apply clang-format 2022-05-22 06:46:24 -04:00
b407b2f239 apply clang-format 2022-05-21 23:35:47 -04:00
93692ce308 Improved Windows and Visual Studio version detection
This now uses the CurrentBuild key to detect the Windows version and only falls back to product name, if that fails.
This is needed because Windows 11 reports itself as Windows 10 in the product name key.
2022-05-21 23:33:13 -04:00
007588f9cb use GZIP executable variable name consistently 2022-05-21 18:56:58 -04:00
e3e849b266 skip compressed file format tests if gzip executable is not found 2022-05-21 07:37:25 -04:00
18df50356e Merge pull request #3273 from stanmoore1/kk_mem
Initial refactor of view allocation in Kokkos package
2022-05-20 16:34:28 -04:00
c3ce77bc8c improve energy scaling sanity checks 2022-05-20 16:33:46 -04:00
2c5ce83d59 must set Output::next_dump_any to current step with rerun 2022-05-20 09:27:16 -04:00
7eb926c853 clarify the description of pair style none
explain that pair style none is effectively deleting any existing
pair style and that communication and neighbor list cutoff are affected.
update those explanations for changes to LAMMPS that allow adjusting
those not just with the neighbor list skin.
Also add that pair_coeff must not be used.
2022-05-20 07:14:05 -04:00
08b1034d54 enable and apply clang-format 2022-05-20 07:12:25 -04:00
a16974ca48 enable and apply clang-format 2022-05-20 06:51:36 -04:00
21c2f8a74b fix miscalculated example 2022-05-20 01:06:21 -04:00
814daf7f4f fix cut-n-paste error 2022-05-20 01:06:09 -04:00
bfb126ec7c make neighbor list searches optionally check for the request ID 2022-05-19 23:37:55 -04:00
07e93a643a spelling 2022-05-19 23:36:54 -04:00
13fc4f3588 must install wheel package before all other packages 2022-05-19 23:07:12 -04:00
36d091baeb fix underline 2022-05-19 23:06:54 -04:00
4801fa00f8 update MathJax to latest bugfix release 2022-05-19 22:53:48 -04:00
75df9d4f2c Merge pull request #3271 from akohlmey/collected-small-changes
Collected small changes and fixes
2022-05-19 13:27:28 -04:00
a9431208a2 Use c++11 variadic magic, suggested by @weinbe2 2022-05-19 10:35:10 -06:00
7b0c7c04ed address sphinx issues and make command list consistently list all min styles 2022-05-19 12:21:06 -04:00
2138aea01f Merge branch 'two-command-tables' into collected-small-changes 2022-05-19 12:16:37 -04:00
7e75b7bff5 whitespace 2022-05-19 12:16:31 -04:00
5990241fbe refactor min_style spin doc page 2022-05-19 09:13:47 -06:00
d8d6884def Remove use_count check, reduce memory use in ReaxFF 2022-05-19 09:10:20 -06:00
eb4c1cd14f update attempt to hide hwloc pci bus warnings 2022-05-19 07:28:57 -04:00
361e303177 fix cut-n-paste error 2022-05-19 04:14:31 -04:00
898eda794c minor updates 2022-05-19 00:06:11 -04:00
5ac8e5639a more information about compiling LAMMPS on windows 2022-05-19 00:06:00 -04:00
cb2126f313 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-05-18 23:21:52 -04:00
0c73c9307f Add configurations for Intel Compilers on Windows 2022-05-18 23:20:57 -04:00
c0a8458d89 remove unused class members 2022-05-18 22:06:31 -04:00
b5830aae83 suppress excessive warnings and undesired aborts with Intel LLVM compiler 2022-05-18 21:43:09 -04:00
06ad119844 Initial refactor of view allocation in Kokkos package 2022-05-18 17:15:36 -06:00
fa6c81849b split Command table into two tables 2022-05-18 16:26:58 -06:00
d323b7817d put back some whitespace 2022-05-18 14:59:15 -04:00
eb3ee96b9c also apply 2 atom minimum to balance() and packing atom IDs 2022-05-18 14:22:43 -04:00
bfd6efcedb no need to sort dump if there are less than 2 atoms 2022-05-18 13:48:06 -04:00
c16f40eb7c don't enable OpenMP together with CUDA for KOKKOS by default 2022-05-18 12:23:38 -04:00
acbeae075a no need to suppress nvcc warnings about pragmas with Clang as host compiler 2022-05-18 12:17:06 -04:00
4f45ae2ef6 improve support for intel compilers on windows 2022-05-18 09:14:18 -04:00
5559491d7b add missing overrides 2022-05-18 09:13:52 -04:00
ba0efbef31 include presets for intel compiler names on windows 2022-05-18 09:13:37 -04:00
7646592f05 recognize the new LLVM based intel compiler as intel compiler 2022-05-18 08:54:26 -04:00
02908f0468 modernize MKL FFT interface 2022-05-18 08:42:40 -04:00
6475d4b956 Skip Fortran unittests if no Fortran MPI support is found 2022-05-18 07:16:16 -04:00
d54f97736e whitespace 2022-05-18 06:32:52 -04:00
1466620750 update googletest to the latest github commit 2022-05-18 06:09:42 -04:00
baa48946e5 add comment to please CodeQL 2022-05-18 00:56:10 -04:00
e7b9d03573 crank up epsilon for tip4p/cut styles some more 2022-05-18 00:28:42 -04:00
d8b37601a8 Merge pull request #3262 from akohlmey/collected-small-changes
Collected small changes and fixes
2022-05-18 00:11:05 -04:00
d94bcd043b enforce using a single thread with Kokkos and SNAP or PACE 2022-05-17 23:42:24 -04:00
15a727a7ff avoid segfaults with Kokkos threads 2022-05-17 23:41:46 -04:00
e94275391c Merge branch 'develop' into collected-small-changes 2022-05-17 22:10:15 -04:00
935c9a02d7 Merge pull request #3267 from athomps/born-rotated
Added Python wrapper that handles rotations to and from LAMMPS frame
2022-05-17 19:52:52 -04:00
55e0af930b Merge pull request #3269 from yury-lysogorskiy/master
Update ML-PACE installation to v.2021.10.25.fix version
2022-05-17 19:50:49 -04:00
a5171beacd make lammps-shell test compatible with MULTI-CONFIG CMake builders 2022-05-17 18:26:27 -04:00
72209b0617 Merge pull request #3258 from akohlmey/create-atoms-mesh
Create atoms from STL mesh
2022-05-17 18:11:41 -04:00
899764c00c Merge pull request #3268 from akohlmey/update-kappa-example
Update KAPPA example
2022-05-17 17:18:45 -04:00
cebbd471cf tweak unit test epsilon for portability to MacOS /w ARM 2022-05-17 17:15:42 -04:00
8ffe2a206c Update ML-PACE installation to v.2021.10.25.fix version 2022-05-17 22:41:43 +02:00
f9efa426a7 Merge pull request #3256 from lammps/delete-atoms-exact
Delete atoms exactly by fraction or count
2022-05-17 16:25:21 -04:00
ae979aca4e consistently use prefactor instead of pre-factor (the former was more common) 2022-05-17 16:20:10 -04:00
38d7fcee92 correct and update create_atoms mesh documentation 2022-05-17 16:16:32 -04:00
e7d072c593 add sanity check on radscale value, set radius also for quasi-random mode 2022-05-17 16:15:46 -04:00
d487ab10e2 doc page and unittest tweaks 2022-05-17 12:00:40 -06:00
853e3ae99b fix typo and clarify error message 2022-05-17 13:52:29 -04:00
dbb3e75f24 change partial to random 2022-05-17 11:02:42 -06:00
fe4782696e silence compiler warnings 2022-05-17 06:03:01 -04:00
326b833d7f (temporarily) disable Kokkos deprecation warnings in CMake presets in preparation for stable release 2022-05-17 06:02:50 -04:00
bf98df3264 silence compiler warnings 2022-05-16 23:20:04 -04:00
df40732343 Make cast to double explicit 2022-05-16 15:00:13 -04:00
d32885fbe3 Fix compiler warnings 2022-05-16 14:48:02 -04:00
659fd82a9e Fix compiler warnings 2022-05-16 14:35:24 -04:00
db2d5b863d Improved MPI portability and added reference log files 2022-05-16 08:22:45 -06:00
ee8a8b6cd0 Added Python wrapper that handles rotations to and from LAMMPS frame 2022-05-15 17:43:18 -06:00
b1ba616470 update KAPPA example for current code, to use thermo_modify colname, and compute kappa in input 2022-05-15 18:58:50 -04:00
44f3ad5620 update singularity image descriptions for newer versions of cuda and rocm 2022-05-15 08:11:50 -04:00
c0e5a03989 update tests for delete_atoms 2022-05-15 01:56:59 -04:00
f62363516c streamline the refactored interface for delete_atoms partial some more 2022-05-15 01:56:45 -04:00
8e6b0425f7 apply clang-format 2022-05-14 18:01:34 -04:00
a79814793e improve handling of hybrid styles and their arguments and errors 2022-05-14 17:56:44 -04:00
1f30d3f140 programming style 2022-05-14 17:56:12 -04:00
1b552de1cd make default settings() functions for bonded interactions error out with arguments 2022-05-14 17:55:56 -04:00
42a4fba390 implement better checking for atom_style arguments and remove redundant code 2022-05-14 15:43:11 -04:00
173e80a970 Merge pull request #71 from jtclemm/create-atoms-mesh
Fixing typos and cleaning up quasirandom comments
2022-05-14 15:13:27 -04:00
55fef9a482 Fixing typos and cleaning up quasirandom comments 2022-05-14 11:39:20 -06:00
9a9bb749fa Merge remote-tracking branch 'github/develop' into collected-small-changes 2022-05-14 10:39:18 -04:00
223aebe3fb Merge pull request #3251 from stanmoore1/kk_update_3.6.0
Update Kokkos library in LAMMPS to v3.6.0
2022-05-14 10:38:41 -04:00
168d3bdd3c Correctly handle the case that the YAML python module is not installed 2022-05-14 10:15:40 -04:00
9661711a1e avoid out-of-bounds access in dump style cfg, update docs with simpler semantic 2022-05-14 09:39:50 -04:00
d4ea5ca49e more clang-tidy fixes after re-running it with added settings 2022-05-14 07:18:05 -04:00
2f0baa86d6 configure desired clang-tidy settings explicitly, must unset variable to turn off 2022-05-14 07:13:25 -04:00
b8a4ddc42a Merge pull request #3264 from stanmoore1/kk_pace_release
Add Kokkos version of ML-PACE
2022-05-13 23:36:05 -04:00
90797d53d9 one more batch of clang-tidy fixes 2022-05-13 23:21:14 -04:00
940e88d2ca more clang-tidy fixes 2022-05-13 21:12:48 -04:00
9c16819305 update code with clang-tidy fixes 2022-05-13 18:26:38 -04:00
3782eea7c4 must always compile MDI library with position independent code 2022-05-13 18:25:59 -04:00
056fd8be8f always build yaml-cpp included in PACE as static library 2022-05-13 17:00:37 -04:00
59560c47a7 Small tweak 2022-05-13 14:23:27 -04:00
979f84f96f Merge branch 'develop' of https://github.com/lammps/lammps into kk_update_3.6.0 2022-05-13 14:03:09 -04:00
66abc00e3c Add comment about MPI on Crusher 2022-05-13 13:33:27 -04:00
c41ad91a9d add support for reading binary STL files 2022-05-13 12:18:22 -04:00
545cec1785 Fix copy/paste issue 2022-05-13 10:15:25 -06:00
658a89e401 document .lammpsbin suffix for trajectory files 2022-05-13 11:15:06 -04:00
35dd5bc978 fix typo 2022-05-13 03:00:31 -04:00
90e2d9e966 tweak code comments 2022-05-12 16:51:24 -06:00
042564decd add deprecation info for old porosity option 2022-05-12 16:48:03 -06:00
3eea2463a1 Tweak error message 2022-05-12 16:00:22 -06:00
d207d53fd1 whitespace 2022-05-12 15:34:08 -06:00
d7bad09d35 Add Kokkos version of ML-PACE 2022-05-12 15:25:07 -06:00
58093fec99 accept .lammpsbin in addition to .bin for binary format output 2022-05-12 15:26:39 -04:00
4077c5c8ba add get_dump_by_id() API that mirrors other recent additions 2022-05-12 14:48:03 -04:00
0577bb6269 use Output::add_dump() and the dump_creator map and templates etc. 2022-05-12 14:47:16 -04:00
aff72c56a5 make Output::add_dump() return pointer to the created dump 2022-05-12 14:46:02 -04:00
c3a454370e work around "fix not computed at compatible times" errors with write_dump 2022-05-12 14:12:13 -04:00
301bd95900 small tweak 2022-05-12 13:17:51 -04:00
04537c9f22 Merge pull request #3263 from OrbitalC/compute_mliap_so3
adding so3 descriptor support for compute_mliap
2022-05-12 11:01:01 -04:00
5ad821ca5e apply clang-format 2022-05-12 09:24:37 -04:00
78d976bd36 Merge pull request #3260 from Colvars/colvars-update
Update Colvars to version 2022-05-09
2022-05-12 08:40:29 -04:00
371141f915 adding support for compute_mliap so3 2022-05-12 14:12:57 +02:00
3ea249a576 fix minor documentation issues 2022-05-11 13:23:59 -04:00
4cc3bdd35f adjust keyword/function names and command line to be simpler to use 2022-05-11 09:25:27 -04:00
227c4853f1 programming style 2022-05-11 08:13:13 -04:00
442116b305 update 2022-05-11 08:12:59 -04:00
ef3b90e838 Merge pull request #70 from jtclemm/create-atoms-mesh
Adding quasirandom mesh option
2022-05-11 08:12:18 -04:00
c9d350edc2 Adding quasirandom mesh option 2022-05-10 18:35:36 -06:00
bdbab77286 add note about re-generating optimized meshes for STL files 2022-05-10 15:23:54 -04:00
1220bea011 Update Colvars to version 2022-05-09
This update includes one new feature (neural-network based collective
variables), several small enhancements (including an automatic definition of
grid boundaries for angle-based CVs, and a normalization option for
eigenvector-based CVs), bugfixes and documentation improvements.

Usage information for specific features included in the Colvars library
(i.e. not just the library as a whole) is now also reported to the screen or
LAMMPS logfile (as is done already in other LAMMPS classes).

Notable to LAMMPS code development are the removals of duplicated code and of
ambiguously-named preprocessor defines in the Colvars headers.  Since the
last PR, the existing regression tests have also been running automatically
via GitHub Actions.

The following pull requests in the Colvars repository are relevant to LAMMPS:

- 475 Remove fatal error condition
  https://github.com/Colvars/colvars/pull/475 (@jhenin, @giacomofiorin)

- 474 Allow normalizing eigenvector vector components to deal with unit change
  https://github.com/Colvars/colvars/pull/474 (@giacomofiorin, @jhenin)

- 470 Better error handling in the initialization of NeuralNetwork CV
  https://github.com/Colvars/colvars/pull/470 (@HanatoK)

- 468 Add examples of histogram configuration, with and without explicit grid parameters
  https://github.com/Colvars/colvars/pull/468 (@giacomofiorin)

- 464 Fix #463 using more fine-grained features
  https://github.com/Colvars/colvars/pull/464 (@jhenin, @giacomofiorin)

- 447 [RFC] New option "scaledBiasingForce" for colvarbias
  https://github.com/Colvars/colvars/pull/447 (@HanatoK, @jhenin)

- 444 [RFC] Implementation of dense neural network as CV
  https://github.com/Colvars/colvars/pull/444 (@HanatoK, @giacomofiorin, @jhenin)

- 443 Fix explicit gradient dependency of sub-CVs
  https://github.com/Colvars/colvars/pull/443 (@HanatoK, @jhenin)

- 442 Persistent bias count
  https://github.com/Colvars/colvars/pull/442 (@jhenin, @giacomofiorin)

- 437 Return type of bias from scripting interface
  https://github.com/Colvars/colvars/pull/437 (@giacomofiorin)

- 434 More flexible use of boundaries from colvars by grids
  https://github.com/Colvars/colvars/pull/434 (@jhenin)

- 433 Prevent double-free in linearCombination
  https://github.com/Colvars/colvars/pull/433 (@HanatoK)

- 428 More complete documentation for index file format (NDX)
  https://github.com/Colvars/colvars/pull/428 (@giacomofiorin)

- 426 Integrate functional version of backup_file() into base proxy class
  https://github.com/Colvars/colvars/pull/426 (@giacomofiorin)

- 424 Track CVC inheritance when documenting feature usage
  https://github.com/Colvars/colvars/pull/424 (@giacomofiorin)

- 419 Generate citation report while running computations
  https://github.com/Colvars/colvars/pull/419 (@giacomofiorin, @jhenin)

- 415 Rebin metadynamics bias from explicit hills when available
  https://github.com/Colvars/colvars/pull/415 (@giacomofiorin)

- 312 Ignore a keyword if it has content to the left of it (regardless of braces)
  https://github.com/Colvars/colvars/pull/312 (@giacomofiorin)

Authors: @giacomofiorin, @HanatoK, @jhenin
2022-05-10 11:24:54 -04:00
5760c59d83 add a creator: tag to the YAML dump that allows to tell it apart 2022-05-10 08:31:02 -04:00
b6ee64dc12 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-05-09 21:58:48 -04:00
eb44cbf848 small updates 2022-05-09 15:22:48 -04:00
23e17363f9 Merge remote-tracking branch 'github/doc-variable-extract-settings' into collected-small-changes 2022-05-09 15:03:13 -04:00
6344c667a0 more doc info for variable extrat_setting() func 2022-05-09 09:33:59 -06:00
24ef021fe0 fix typo 2022-05-09 10:05:12 -04:00
1660bae22a add examples import one image to manual 2022-05-08 21:15:32 -04:00
9ec35f0235 update docs to match the latest code 2022-05-08 19:14:06 -04:00
e0bb27dbb2 make radscale and radthresh class members 2022-05-07 23:04:34 -04:00
e9b1ca16a3 correctly initialize radius and molecule id 2022-05-07 21:24:08 -04:00
60b9fd2db8 minor tweaks simplify algorithm 2022-05-07 17:08:22 -04:00
bcfb6734f3 use average vertex distance from center as particle radius 2022-05-07 16:27:03 -04:00
6722d3fb00 add simple STL binary to ASCII converter (based on Wikipedia specs) 2022-05-07 16:26:25 -04:00
559dc68197 implement revised algorithm with recursion 2022-05-07 15:40:25 -04:00
102b61ae1b Merge branch 'develop' into create-atoms-mesh 2022-05-07 09:33:40 -04:00
5d08b62622 remove unused class member 2022-05-07 03:48:54 -04:00
4737b9efb7 Merge pull request #3250 from akohlmey/collected-small-changes
Collected small changes and bugfixes
2022-05-07 00:14:32 -04:00
d21d9d95fa Merge pull request #3255 from lammps/timer-variable
Add a timer-style variable
2022-05-06 17:46:22 -04:00
00bb566893 enforce that the number of neighbors cannot be negative (e.g. w/o neighbor list) 2022-05-06 17:45:01 -04:00
56e36a5df5 Merge pull request #2988 from stanmoore1/coo_opt
Add optimized version of compute orientorder/atom from Tomas Oppelstr…
2022-05-06 17:11:24 -04:00
21d3de65e6 fix typos 2022-05-06 17:05:18 -04:00
767f512dcf add "make ni" alias to "make no-installed" 2022-05-06 17:05:03 -04:00
907bc7eaa5 switch to using wall time 2022-05-06 16:58:28 -04:00
051c243cfc small programming style upgrade, apply clang-format, silence compiler warnings 2022-05-06 16:44:13 -04:00
905034893c finished testing of new delete_atoms options 2022-05-06 14:15:41 -06:00
6432660bc9 Merge branch 'develop' of https://github.com/lammps/lammps into coo_opt 2022-05-06 13:24:14 -06:00
6e78269612 whitespace 2022-05-06 15:11:15 -04:00
81a8b0cf85 Add Kokkos HIP preset 2022-05-06 12:40:12 -06:00
613ef04357 Merge branch 'develop' into timer-variable 2022-05-06 14:27:52 -04:00
5986e11d43 Merge branch 'develop' of github.com:lammps/lammps into kk_update_3.6.0 2022-05-06 12:04:00 -06:00
97012f2aaa correct classification of electrode package, as it requires BLAS/LAPACK 2022-05-06 13:57:26 -04:00
62a819d7b6 Tweak launch bounds to improve GPU performance 2022-05-06 13:37:05 -04:00
3bb9c64f9e update .gitignore and move electrode package for dependency on KSPACE 2022-05-06 13:35:51 -04:00
78f2907cbb implement a "make no-installed" command 2022-05-06 13:35:21 -04:00
f3fcd16628 adding of timer-style variables and associated doc pages 2022-05-06 11:21:36 -06:00
580e01535a Update Kokkos AMD Makefiles 2022-05-06 13:04:58 -04:00
8e423f07c5 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-05-06 12:37:34 -04:00
2549b86d76 update/correct docs for support of compiling LAMMPS with visual studio on windows 2022-05-06 12:37:28 -04:00
ae73a9b7f7 Revert back to original code in npair_ssa_kokkos.h 2022-05-06 10:05:57 -06:00
73670dafc7 Merge branch 'develop' into collected-small-changes 2022-05-06 11:45:51 -04:00
aae44892c0 consolidate all FFT related redundant defines and typedefs in a single header 2022-05-06 11:27:17 -04:00
6ec169fa9d Fix warnings in Kokkos package 2022-05-06 08:23:45 -06:00
a35a2441ce Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-05-06 04:48:19 -04:00
abefff828d plug memory leak 2022-05-06 04:39:38 -04:00
71185b9f98 fix error message 2022-05-06 01:02:40 -04:00
8079f014bc final tweaks 2022-05-06 00:47:35 -04:00
773e3a87d9 add docs for create_atoms mesh 2022-05-06 00:47:05 -04:00
ff21142042 Merge remote-tracking branch 'github/develop' into create-atoms-mesh 2022-05-05 23:02:53 -04:00
bd373d6038 Merge pull request #3119 from erozic/feature-create-atoms-exclude
Feature create atoms overlap
2022-05-05 22:42:40 -04:00
7601a5c0fb correct/improve formatting 2022-05-05 22:20:43 -04:00
8ed401ce12 spelling 2022-05-05 21:34:31 -04:00
664943589e Merge remote-tracking branch 'github/develop' into feature-create-atoms-exclude 2022-05-05 21:09:39 -04:00
8dbfc0799c whitespace 2022-05-05 20:15:36 -04:00
46d638af0c Merge branch 'feature-create-atoms-exclude' of https://github.com/erozic/lammps into feature-create-atoms-exclude 2022-05-06 01:48:37 +02:00
ae230a33f5 Bug fix (user_quat initial value not set) 2022-05-06 01:47:45 +02:00
d4f212183e initial exact logic for delete_atoms partial 2022-05-05 17:45:42 -06:00
568e9c5878 Merge pull request #3237 from emilyviolet/hipfft
Add support for hipFFT with PPPMKokkos
2022-05-05 19:39:52 -04:00
5784fab588 starting to add timer-style variable 2022-05-05 17:04:50 -06:00
484a7c5db0 tweaked comments 2022-05-05 16:22:19 -06:00
7071f819d0 Header fix (add_molecule) 2022-05-05 23:53:14 +02:00
93c0f09c31 Logic fix in random-overlap and comment implemented 2022-05-05 23:35:11 +02:00
e5e3478afd Update CMake 2022-05-05 12:30:37 -06:00
bee7b09377 fix cut-n-paste bug 2022-05-05 14:05:22 -04:00
3b68c0ea24 Update Makefile comment 2022-05-05 14:02:29 -04:00
b79c0bc7b4 Update Kokkos library in LAMMPS to v3.6.0 2022-05-05 11:44:47 -06:00
3b9389e86c Update .gitignore 2022-05-05 12:23:52 -04:00
2c95f84acc Tweak error messages 2022-05-05 12:17:00 -04:00
c05af749df Merge branch 'develop' of https://github.com/lammps/lammps into hipfft 2022-05-05 12:15:28 -04:00
24b94551a2 Update Kokkos AMD Makefiles 2022-05-05 11:59:32 -04:00
99d4f83fa8 preliminary implementation 2022-05-05 09:56:22 -04:00
6c28b55c13 return nullptr instead of out-of-range data 2022-05-05 07:50:45 -04:00
2b1716cb3a fix more bugs with dump_modify every/time 2022-05-05 00:06:08 -04:00
bd4bbbddbe Merge pull request #3245 from akohlmey/next_patch_release
Step version strings for the next patch release
2022-05-04 19:57:23 -04:00
2aa1c6975f fix typo 2022-05-04 19:09:19 -04:00
e285ba43eb Merge branch 'develop' into next_patch_release 2022-05-04 19:08:10 -04:00
582de4f951 Merge pull request #3248 from akohlmey/add_set_time
Add time option to the "reset_timestep" command and make the "time" property restartable
2022-05-04 18:43:07 -04:00
dcd6c18e45 update indent 2022-05-04 17:50:34 -04:00
4c6cb8648b replace image with embedded latex text 2022-05-04 17:50:25 -04:00
6b47d6246b more changes and some debugging on a test script 2022-05-04 15:28:50 -06:00
cc437c78a0 some logic and syntax changes to code and doc page 2022-05-04 14:34:05 -06:00
edda6b6f70 Merge remote-tracking branch 'github/develop' into add_set_time 2022-05-04 16:29:54 -04:00
803376b1b4 Merge pull request #3241 from akohlmey/collected-small-changes
Collected small changes and fixes for the next patch release
2022-05-04 16:26:02 -04:00
e897ab7611 improve error messages 2022-05-04 16:25:12 -04:00
ba3aa8fab5 remove NULL option for reset_timestep 2022-05-04 16:21:06 -04:00
81bb4bfc23 Merge branch 'collected-small-changes' into add_set_time 2022-05-04 15:49:14 -04:00
059c84bf41 Merge branch 'develop' into add_set_time 2022-05-04 15:47:28 -04:00
eec86c8038 Merge branch 'develop' into collected-small-changes 2022-05-04 15:45:38 -04:00
ad6cebb049 Merge pull request #3246 from GenieTim/compute-abs-sum
Implement a aveabs and sumabs reduce command
2022-05-04 14:46:54 -04:00
61214b9a52 Merge pull request #3243 from akohlmey/delete-by-variable
Implement variable option for delete_atoms
2022-05-04 13:50:00 -04:00
f8742d599b merge set_time command into reset_timestep 2022-05-04 13:24:52 -04:00
d4a93ff9c7 Merge pull request #3247 from vladgl/adp-kk
Kokkos accelerated variant for adp pair style
2022-05-04 13:05:29 -04:00
517d934f7c more edits 2022-05-04 10:51:00 -06:00
87b99306ba make force_clear() a public pure function in min.h and integrate.h
these are required changes for adding NWChem couping support as a fix
2022-05-04 12:30:17 -04:00
af32267db3 Merge branch 'develop' into compute-abs-sum 2022-05-04 12:23:50 -04:00
7fa2fe134c Fix typo 2022-05-04 10:18:11 -06:00
515e2928a9 Sync with pair eam 2022-05-04 10:15:36 -06:00
8a5e7fa609 update docs 2022-05-04 12:07:59 -04:00
ed0ee913e1 Small tweaks 2022-05-04 11:18:10 -04:00
a26fa50736 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-05-04 05:47:34 -04:00
5d510ac7b3 Merge remote-tracking branch 'akohlmey/region-tests' into collected-small-changes 2022-05-04 05:46:34 -04:00
c37d5be524 Merge branch 'develop' into collected-small-changes 2022-05-04 05:45:33 -04:00
0bedff1ce0 implement set_time command 2022-05-03 13:15:52 -04:00
e7153d30c8 re-enable dynamic group support for tally computes 2022-05-03 11:22:38 -04:00
257a070666 add test for ellipsoid, check for special case of ellipsoid/prism 2022-05-03 11:02:01 -04:00
bd5858019e add minimal unit test for Region class 2022-05-02 17:06:28 -04:00
4ef8ca091d Fix virial computation in adp/kk 2022-05-02 22:16:28 +03:00
8473bc19f5 Merge branch 'develop' into adp-kk 2022-05-02 13:41:03 -04:00
df77641071 fix permissions and whitespace 2022-05-02 13:40:39 -04:00
cb345870a9 Add adp/kk to install script (fix commit #d3843db) 2022-05-02 19:24:01 +03:00
d3843dbf09 Add adp/kk to install script 2022-05-02 19:16:59 +03:00
fef6c37ea7 Merge pull request #3240 from akohlmey/ave-yaml-file-colname
Add support for custom column names and YAML format output to fix ave/time
2022-05-02 11:45:50 -04:00
0e5a66b1cd Implement a aveabs and sumabs reduce command 2022-05-02 17:34:08 +02:00
e51c51e7f9 Kokkos accelerator variant for adp pair style 2022-05-02 18:17:49 +03:00
39ee6b6a7f step version strings for the next patch release 2022-05-02 10:34:43 -04:00
89deab6a3e silence compiler warnings 2022-04-30 19:51:04 -04:00
1191d08b47 Merge branch 'develop' into collected-small-changes 2022-04-30 19:39:16 -04:00
deef9fae23 fix bug with wrong mapping of pair style classes 2022-04-30 19:15:00 -04:00
1b8641685a Merge pull request #3242 from dxhisboy/develop
Adding saip/metal/opt and ilp/tmd/opt
2022-04-30 12:59:41 -04:00
672c063fd8 add unit test for delete_atoms 2022-04-29 22:33:15 -04:00
2f599bace1 enable and apply clang-format 2022-04-29 22:01:34 -04:00
f5113aa84a better error messages 2022-04-29 21:59:37 -04:00
31d6af6114 add delete_atoms "variable" option 2022-04-29 21:59:22 -04:00
9c45af7730 avoid potential 32-bit integer overflow 2022-04-29 20:53:57 -04:00
cac9fcaf86 cannot build ELECTRODE package by default on native windows because it requires BLAS 2022-04-29 20:18:50 -04:00
4a3bcd9230 Merge branch 'develop' into collected-small-changes 2022-04-29 20:15:36 -04:00
87b0939fe7 Merge pull request #2871 from evoyiatzis/master
implementation of an "ellipsoidal" region option
2022-04-29 19:46:15 -04:00
44c4d0a4d6 Merge pull request #3194 from robeme/electrode
ELECTRODE package for constant potential method
2022-04-29 18:30:29 -04:00
ee8d8042e6 add example for YAML processing with Perl 2022-04-29 17:42:23 -04:00
514bfe77df apply changes suggested by @sjplimp 2022-04-29 17:33:37 -04:00
5e18f15435 remove unused variables 2022-04-29 15:29:04 -04:00
d0938ce398 apply clang-format 2022-04-29 15:13:47 -04:00
80c716b81f update false positives 2022-04-29 15:11:11 -04:00
f09e886fd2 remove unused function 2022-04-29 15:10:57 -04:00
47f62838db Merge branch 'develop' into electrode 2022-04-29 14:37:48 -04:00
3c71c07048 Merge pull request #3230 from athomps/snap-inner-mod
Snap inner cutoff improvements and porting to KOKKOS
2022-04-29 14:36:48 -04:00
37d2d9e013 Remove trailing spaces 2022-04-29 10:56:34 -06:00
3f44f8f50d Merge pull request #3236 from lammps/fix-adapt-angle2
bug fix for new fix adapt angle support
2022-04-29 12:50:10 -04:00
df76673bee bdim --> adim in fix adapt 2022-04-29 10:10:36 -06:00
2f8e708184 more whitespace 2022-04-29 09:37:27 -06:00
894b7810b2 whitespace 2022-04-29 09:32:24 -06:00
57098f3df7 Remove extra files 2022-04-29 09:22:14 -06:00
69a79ba082 whitespace 2022-04-29 09:17:24 -06:00
641e769bde Revert a3c6baad4c 2022-04-29 09:03:44 -06:00
435f652263 removed trailing whitespace in pair_ilp_tmd_opt and pair_saip_metal_opt 2022-04-29 22:54:41 +08:00
6ced400207 change saip and tmd to virtual public inherit, so that corresponding opt package can compile 2022-04-29 22:28:48 +08:00
f93ac86c53 updated Install.sh for OPT package to adopt new interlayer potential optimizations 2022-04-29 22:05:52 +08:00
943cb531bf Modified chunk code of pair_ilp_graphene_hbn_opt for adopting pair_saip_metal_opt and pair_ilp_tmd_opt 2022-04-29 21:56:52 +08:00
c34efcc718 fixed multielement assignment error
tested in CPU and GPU mode, gets same output for eneriges and forces as build without KOKKOS for various settings of sinner, dinner
2022-04-29 07:53:39 -06:00
2292caef38 updated sinner/dinner log output
now logmsg displays all element params for sinner, dinner on same line (replaces only first param + ...)
2022-04-29 07:48:02 -06:00
9c48a75c8e fix issues reported by coverity scan 2022-04-29 06:49:47 -04:00
b2300ba9cb Merge branch 'develop' into collected-small-changes 2022-04-29 05:51:05 -04:00
6fb3cef39f Merge pull request #3031 from Iximiel/develop
Second Moment Aproximation to the Tight Binding addes as pair style
2022-04-28 22:32:38 -04:00
cb41e354b8 Merge pull request #3238 from akohlmey/doc-math-funcs
Document special math functions
2022-04-28 22:11:09 -04:00
7d9cdc7ec4 update documentation. more examples. document fix_modify options 2022-04-28 18:34:49 -04:00
bf8f5e2f87 more compact output 2022-04-28 18:08:59 -04:00
a3e0e1a6eb fixed multielement assignment error 2022-04-28 15:57:53 -06:00
2ae9ca5073 swap rows and columns back for easier import into pandas 2022-04-28 16:03:04 -04:00
f25b60fded simplify pandas processing. add missing image with plot 2022-04-28 16:02:45 -04:00
f09556018b fix bugs reported by @jibril-b-coulibaly 2022-04-28 14:47:53 -04:00
04b46a9ce8 implement yaml output for mode vector 2022-04-28 14:33:15 -04:00
eb5d867adf Improve erfc 2022-04-28 13:45:57 +00:00
2f71c96bde add yaml format output for mode scalar 2022-04-28 07:46:47 -04:00
09ed718c14 add example to plot thermo data with pandas+matplotlib 2022-04-28 07:45:51 -04:00
cfc4dcea3d must quote keyword data to avoid issues parsing the YAML data 2022-04-28 07:34:23 -04:00
33a63e5cd3 remove dead code to silence compiler warnings 2022-04-28 03:03:29 -04:00
a05bdfa76c add override to polymorph functions 2022-04-27 18:36:00 -04:00
cd3ce8459b enable and apply clang-format 2022-04-27 18:35:44 -04:00
74afc04580 remove error comments from header 2022-04-27 18:29:41 -04:00
233d4ad349 whitespace fixes 2022-04-27 18:29:27 -04:00
8481abda05 Merge branch 'develop' into ellipsoid-region 2022-04-27 18:28:38 -04:00
55fddf3aac update (tentative) release date 2022-04-27 18:26:07 -04:00
b76594e551 enforce only newton pair on with smatb pair styles. add unit tests 2022-04-27 18:08:05 -04:00
2d45e3340f move sources and examples for smatb styles to SMTBQ package folders 2022-04-27 15:14:02 -04:00
585b14f08f fix memory leak 2022-04-27 15:10:55 -04:00
3cfae26b84 update docs and make part of SMTBQ package 2022-04-27 15:10:46 -04:00
3b1165ccdc update files to be more compatible with LAMMPS' conventions and for code changes 2022-04-27 15:02:32 -04:00
75d42a87e5 Merge branch 'develop' into Iximiel/develop 2022-04-27 14:15:10 -04:00
cdba0da780 Merge branch 'snap-inner-mod' of github.com:athomps/lammps into snap-inner-mod 2022-04-27 10:58:43 -06:00
a3c6baad4c Removed CPU specific options 2022-04-27 10:58:22 -06:00
0e1f9968c1 Merge branch 'develop' of github.com:lammps/lammps into snap-inner-mod 2022-04-27 10:48:24 -06:00
6439777406 complete documentation of the MathSpecial namespace 2022-04-27 11:59:25 -04:00
c43bc000d9 Removed unnecessary commented out code section. 2022-04-27 19:46:18 +10:00
d857600d9c start documenting functions in the MathSpecial namespace 2022-04-27 04:46:18 -04:00
385f0c6c95 Update Kokkos build documentation to include hipFFT options. 2022-04-27 10:13:03 +10:00
8cdbf380cf Add support for hipFFT backend in PPPMKokkos. 2022-04-27 09:22:59 +10:00
691ba89b6f Merge pull request #3234 from lammps/variable-vector-wildcard
add support for wildcards in variable vectors
2022-04-26 18:21:46 -04:00
1fcf82aeef Merge remote-tracking branch 'github/develop' into variable-vector-wildcard 2022-04-26 17:54:32 -04:00
56b4671cd8 Merge pull request #3233 from akohlmey/collected-small-changes
Collected small changes for the next patch release
2022-04-26 17:54:11 -04:00
d8e98cb99d make tests more complex and add vector variable expansion 2022-04-26 17:53:47 -04:00
831caaa150 Merge branch 'collected-small-changes' into variable-vector-wildcard 2022-04-26 17:26:17 -04:00
64fff417c3 test more bound variants 2022-04-26 17:25:27 -04:00
7eb6c2652f update advanced utils tests. include test for expand args 2022-04-26 16:16:44 -04:00
d04cb4ba42 edits to doc page 2022-04-26 13:58:18 -06:00
782add6943 Merge branch 'feature-create-atoms-exclude' of github.com:erozic/lammps into create-overlap 2022-04-26 13:22:10 -06:00
800e0a7357 bug fix for new fix adapt angle support 2022-04-26 09:34:27 -06:00
7663fc6256 correctly use "type" to detect executables/scripts 2022-04-26 11:08:31 -04:00
26278643d4 Port changes to Kokkos 2022-04-26 08:22:00 -06:00
407f6af1ed Merge branch 'develop' of github.com:lammps/lammps into snap-inner-mod 2022-04-26 08:13:30 -06:00
192b22a6ce Set rng init for electrode/thermo 2022-04-26 16:03:45 +02:00
837f9040d8 add tests for advanced utility functions that require a LAMMPS instance 2022-04-26 09:30:34 -04:00
4691ff06b5 format 2022-04-26 09:30:10 -04:00
ba02d90bf1 add test for new errorurl() utility function 2022-04-26 09:29:57 -04:00
a649fa3a79 detect yaml file output by file name 2022-04-26 06:20:00 -04:00
72011bf325 Updated doc (use of overlap clarified) 2022-04-26 11:55:24 +02:00
7aaa71d22e Merge remote-tracking branch 'lammps/develop' into electrode 2022-04-26 10:29:39 +02:00
66b8ab9c6e Revamped examples 2022-04-26 09:42:45 +02:00
fdb7dfdea7 also remove mode from fix ave/correlate 2022-04-25 17:04:04 -06:00
e7a9073ccd remove discussion of mode 2022-04-25 17:01:15 -06:00
65978c33b6 2 more doc pages 2022-04-25 16:06:52 -06:00
bb8e953fb5 add support for wildcards in variable vectors 2022-04-25 15:43:08 -06:00
950b175fcd remove invalid [[noreturn]] attribute 2022-04-25 16:23:48 -04:00
dc605d35ee Updated ML-IAP package 2022-04-25 13:58:41 -06:00
811e5786fe Merge branch 'develop' into feature-create-atoms-exclude 2022-04-25 19:30:52 +02:00
c1146ebdcd Resolved conflicts with develop 2022-04-25 19:11:54 +02:00
8679266db8 add container definitions for Fedora 36 and Ubuntu 22.04LTS 2022-04-25 13:05:43 -04:00
2624043ab6 Synchronisation fix 2022-04-25 17:03:07 +02:00
960d3faa5e Merge branch 'master' of github.com:z-gong/lammps into collected-small-changes 2022-04-25 02:58:17 -04:00
a5cd95d6c6 Add comment for the units in compute/viscosity 2022-04-25 06:23:54 +02:00
28900925f4 Fix the unit for fix/accelerate/cos 2022-04-25 05:59:41 +02:00
9c46acfd62 fix parallel processing bug with shell mkdir command 2022-04-24 23:23:01 -04:00
45de998aa9 Merge pull request #3231 from akohlmey/remove-error-docs-in-header
Remove error docs from header files
2022-04-24 18:30:17 -04:00
6cfbd73bcd add documentation for new error and warning policy 2022-04-23 16:40:28 -04:00
f7e7abc908 fix uninitialized pointer bug 2022-04-23 15:17:26 -04:00
b4c3c479b7 remove error docs from one more file 2022-04-23 13:52:29 -04:00
4d1bdb4741 add python tool to detect and remove (if desired) error docs from headers
also document the tools in the manual.
2022-04-23 13:52:12 -04:00
78c10bac4a clang-format update 2022-04-23 13:08:11 -04:00
115962db88 Merge branch 'develop' into remove-error-docs-in-header 2022-04-23 12:46:54 -04:00
ce5d8a578e Merge pull request #3228 from run-towards-the-future/develop
A pull request for an optimized ILP(ilp/graphene/hbn) potential
2022-04-23 12:42:27 -04:00
f970a9de6a Merge pull request #3219 from akohlmey/region-lookup-refactor
Region lookup refactor
2022-04-23 11:33:01 -04:00
67bcfe3b62 remove unused code and variables, more programming style consistency 2022-04-23 09:26:35 -04:00
b55b9f5a6a removed request for ghost neighbor list 2022-04-23 20:35:48 +08:00
ef51fb7dea Fix bugs, Derives from PairILPGrapheneHBN instead of Pair
Improve the performance of pair style, ilp/graphene/hbn/opt
Updates to the OPT package
2022-04-23 19:45:50 +08:00
8fe0231b75 Fix bugs, Derives from PairILPGrapheneHBN instead of Pair
Add a new pair style, ilp/graphene/hbn/opt
Updates to the OPT package
2022-04-23 19:43:34 +08:00
e1856dc708 cosmetic 2022-04-23 07:42:31 -04:00
5da6fae9f6 silence compiler warnings 2022-04-23 07:35:18 -04:00
69249e84e1 adjust epsilon 2022-04-23 07:35:00 -04:00
8f019f4800 doc fixes: spelling and links 2022-04-23 07:34:44 -04:00
d55e7f9e51 Merge branch 'develop' into region-lookup-refactor 2022-04-23 07:14:28 -04:00
b1546a725c Merge pull request #3093 from Bibobu/Elastic_stress
Add compute born/matrix command to compute elastic stress
2022-04-23 07:07:29 -04:00
113fc0a77a Merge pull request #3227 from akohlmey/safer-data-file-parsing
Improve data file parsing and reported error messages
2022-04-23 06:41:17 -04:00
419b0f9494 add missing curly brace 2022-04-23 06:02:14 -04:00
31470819c0 Merge branch 'develop' into Elastic_stress 2022-04-23 04:36:45 -04:00
7bfa368d8d Merge pull request #2667 from ssande7/compute_temp_profile_dof
[BUGFIX] Collection of DoF-related fixes for compute temp/profile
2022-04-23 04:31:38 -04:00
c17845276a Derives from PairILPGrapheneHBN instead of Pair
Improve the performance of pair style, ilp/graphene/hbn/opt
Updates to the OPT packages
2022-04-23 14:29:03 +08:00
b631411985 Derives from PairILPGrapheneHBN instead of Pair
Add a new pair style, ilp/graphene/hbn/opt
Updates to the OPT package
2022-04-23 14:26:13 +08:00
26ca371d93 Merge branch 'develop' into region-lookup-refactor 2022-04-22 23:47:49 -04:00
79a7d2abf6 remove error docs from header files 2022-04-22 23:31:15 -04:00
e49930df21 Merge branch 'develop' into safer-data-file-parsing 2022-04-22 23:13:39 -04:00
471c728ac4 Merge pull request #3224 from lammps/dynamic-groups
change update of dynamic groups to post_force location in timestep
2022-04-22 23:11:17 -04:00
cbefeeb677 Merge pull request #3220 from athomps/specify-verlet
Explcitly state that fix nve uses velocity-Verlet integrator
2022-04-22 23:10:48 -04:00
8115e8a5a4 Merge pull request #3226 from lammps/error-url
Add utility to print url with link to error message in online manual
2022-04-22 23:10:21 -04:00
9f9a5ca76f Merge branch 'develop' into region-lookup-refactor 2022-04-22 22:53:02 -04:00
9be8ef09a2 Merge pull request #3229 from lammps/fix-adapt-angle
Fix adapt angle
2022-04-22 22:44:18 -04:00
97bfc0bb77 avoid (unlikely) overflow 2022-04-22 22:38:46 -04:00
cf647347c9 Merge branch 'develop' into safer-data-file-parsing
# Conflicts:
#	src/atom.cpp
2022-04-22 22:25:41 -04:00
8e9cc0eb51 Merge branch 'develop' into compute_temp_profile_dof 2022-04-22 22:16:42 -04:00
47564ab6bc Merge branch 'develop' into region-lookup-refactor 2022-04-22 22:11:41 -04:00
1319cb2cf5 fix typo 2022-04-22 22:08:13 -04:00
aed7bafac0 Merge pull request #3217 from akohlmey/atomvec-strings
Refactor Atom and AtomVec classes to use std::string and std::vector for setting up per-atom data
2022-04-22 22:03:26 -04:00
3a5ab301b2 propagate changes from previous commit to other packages that were missing them 2022-04-22 21:46:24 -04:00
5aebd151b6 Update compute_temp_profile.rst 2022-04-22 18:47:13 -06:00
16dd89c641 Added qualifier to assertions + note about inhomogeneous rigid systems 2022-04-23 10:30:44 +10:00
a90c632ae2 fix bug when no other post_force fixes are defined 2022-04-22 17:10:56 -06:00
48d8094d95 Merge branch 'develop' into snap-inner-mod 2022-04-22 16:54:21 -06:00
2c71d0eea2 Ported to KOKKOS, untested 2022-04-22 16:43:19 -06:00
01e7530902 shorten URL message text 2022-04-22 17:00:55 -04:00
907bcd16a8 Update compute_temp_profile.rst 2022-04-22 14:21:57 -06:00
b40e662b10 Merge pull request #3223 from akohlmey/less-fmtlib-warnings
Reduce excessive warnings from fmtlib and assorted small changes
2022-04-22 15:03:49 -04:00
fec5538d3c fix initialization bugs 2022-04-22 13:52:15 -04:00
1568974e8e whitespace 2022-04-22 13:39:05 -04:00
c054edda6b allow larger error margin for pressure computes 2022-04-22 13:22:01 -04:00
23d39c7d02 Merge branch 'develop' into create-overlap 2022-04-22 10:37:39 -06:00
c0d0c84f7d update unit test files to implementation changes 2022-04-22 12:16:28 -04:00
da520bf8b7 integrate better into manual and traditional build system 2022-04-22 11:38:55 -04:00
68d1c856b3 fix typo 2022-04-22 11:27:08 -04:00
77b563a024 disable unknown pragma warnings for the summit machine when using CUDA 2022-04-22 11:23:54 -04:00
b4e2e2ec34 add support for angle cosine 2022-04-22 09:12:12 -06:00
a6f2f04664 Removed forgotten neighbor->ago condition in compute_born_matrix. Rewritten compute_pair loop so that newton condition does not affect results. 2022-04-22 16:59:52 +02:00
644b3f6933 clarify and remove redundant text 2022-04-22 09:32:10 -04:00
23186da560 Merge branch 'snap-inner-bug-printf' of github.com:megmcca/lammps into less-fmtlib-warnings 2022-04-22 09:26:29 -04:00
3b1021abd1 cosmetic changes. improve programming style conformance 2022-04-22 08:36:20 -04:00
55a7c341af improve data file section parsing
- avoid segfaults when dereferencing a null pointer on short files
- allow skipping over empty and comment-only lines.
2022-04-22 08:35:09 -04:00
6d56629660 improve error messages 2022-04-22 08:31:53 -04:00
dc4752ef63 add convenience function for printing a missing arguments error message 2022-04-22 08:28:14 -04:00
079d3ea067 remove extraneous printf line 2022-04-22 06:16:45 -06:00
3e9f207062 Improve the performance of pair style, ilp/graphene/hbn/opt
Updates to the OPT package
2022-04-22 20:00:28 +08:00
e0049a07f3 Add a new pair style, ilp/graphene/hbn/opt
Updates to the OPT package
2022-04-22 17:55:05 +08:00
13664a0185 add utility to print url with pointer to error message 2022-04-22 05:25:50 -04:00
4de9ab85ce Completed inner cutoff, KOKKOS still in progress 2022-04-21 17:30:12 -06:00
3f3c481554 add support to fix adapt for angle coeffs 2022-04-21 17:00:11 -06:00
0b6a689f3c Removed the domain->minimum_image() calls from dihedral_nharmonic and angle_cosine. 2022-04-22 00:37:49 +02:00
6b3c868c6e Removed commented previous nb list request. 2022-04-22 00:26:00 +02:00
5fd2311951 Pulled develop. Solved false_positives.txt bond.cpp and bond.h files conflict. 2022-04-22 00:24:50 +02:00
0b0947c167 Solved the dihedral index problem. It was actually the indices used. 2022-04-22 00:20:25 +02:00
ea66d4e73f mostly doc page edits 2022-04-21 16:00:53 -06:00
0ece11c491 add a code comment 2022-04-21 15:19:04 -06:00
8cb47c8504 change update of dynamic groups to post_force location in timestep 2022-04-21 15:02:47 -06:00
c6abc9e682 need wheel module for modern install procedure 2022-04-21 16:15:42 -04:00
09187801c1 suppress nvcc unknown pragma warnings 2022-04-21 15:01:46 -04:00
247c61c93f make portable to ubuntu 2022-04-21 13:01:13 -04:00
04afec7771 fix minor doc issues 2022-04-21 13:00:26 -04:00
05a845fafd compute_dihedral finally agrees with numdiff! 2022-04-21 18:37:26 +02:00
6dcafd693f Update fix_nve.rst 2022-04-21 10:13:05 -06:00
1df430aef4 align with doc folder makefile 2022-04-21 12:02:05 -04:00
b7a3af7bd1 update plumed version in containers and install python3-venv 2022-04-21 12:01:49 -04:00
556ad777d1 update code to use safe fread() and thus silence compiler warnings on ubuntu 2022-04-21 11:53:59 -04:00
b7d329f9b3 remove unused field in class 2022-04-21 07:58:54 -04:00
1a8ba25444 silence some excessive warning by the new Intel compilers 2022-04-21 07:58:43 -04:00
e9eb74e13a add missing override 2022-04-21 07:50:48 -04:00
c07551072d must check if externally set C++ standard is at least c++11 2022-04-21 07:50:30 -04:00
e8cacc4380 Updated example syntax 2022-04-20 18:17:23 -06:00
b4b6ba91e0 Slight adjustment to definition of Sinner and Dinner 2022-04-20 18:01:24 -06:00
9cac62401d only set the C++ standard value if it is not set externally 2022-04-20 19:32:42 -04:00
96e22b1104 disable CUDA support with Eigen3 2022-04-20 18:50:55 -04:00
5242b5557f Merge branch 'develop' into less-fmtlib-warnings 2022-04-20 18:24:06 -04:00
4544664edc comment out assertion causing many warnings 2022-04-20 18:14:10 -04:00
38093ffe47 KOKKOS doesn't require nvcc_wrapper anymore when compiling with CMake 2022-04-20 18:13:42 -04:00
c62e2ad4d1 disable warnings with PGI/NVHPC compilers and import CMAKE_TUNE_FLAGS 2022-04-20 17:39:33 -04:00
aebbd04297 Merge pull request #3222 from akohlmey/fasthtml
Add fasthtml target for faster testing of .rst to .html translation
2022-04-20 17:16:23 -04:00
da0e0359b6 Merge pull request #3221 from akohlmey/ttm_mod_fix
Fix file reader bug in fix ttm/mod
2022-04-20 16:55:10 -04:00
a8e5e0e515 use python -m venv instead of virtualenv 2022-04-20 15:49:22 -04:00
42d875a411 add fasthtml target for faster testing of .rst to html translation 2022-04-20 15:02:00 -04:00
bc0236d869 Bugfix tagint type for tags 2022-04-20 18:49:55 +02:00
a3a3354d1b fix file reader bug and add ttm/mod example 2022-04-20 11:52:36 -04:00
f6523851b5 Explcitly state that fix nve uses velocity-Verlet integrator 2022-04-20 08:58:53 -06:00
c086664c2a Per-atom vector usage 2022-04-20 16:23:44 +02:00
9d1d552fde bugfix init_list for etypes 2022-04-20 16:23:44 +02:00
df5b1a228d tweak epsilon for macos/arm64 2022-04-19 21:57:43 -04:00
71e96e8b7c Merge pull request #3212 from ndtrung81/dielectric-updates
Updates to the DIELECTRIC package
2022-04-18 09:33:28 -04:00
f40b8f5694 Merge branch 'develop' into dielectric-updates 2022-04-17 17:47:55 -04:00
9228855257 cosmetic 2022-04-17 17:47:38 -04:00
c820eeb118 re-apply clang-format 2022-04-17 17:47:31 -04:00
7c64ff6634 Improved the precision of the conversion factor epsilon0e2q, added more options for units, ensured that qqrd2e be included in efield in several pair styles, and updated the fix polarize doc page 2022-04-17 12:01:41 -05:00
44e4510251 replace vector for storing regions with unordered_set for simpler processing 2022-04-16 11:17:55 -04:00
aa4787f604 complete region handling refactor 2022-04-16 00:17:39 -04:00
cbb4abc55c improve formatting 2022-04-15 17:12:31 -04:00
69d9c5187e refactor group access, enable and apply clang-format 2022-04-15 15:29:43 -04:00
4b400fb4a6 overload count() function to pass in Region pointer directly 2022-04-14 22:00:50 -04:00
21f24ef572 Merge pull request #3218 from lammps/mdi-new-functions
MDI new functions
2022-04-14 20:48:51 -04:00
a0a82cad0b Merge pull request #3214 from stanmoore1/kk_tersoff_bugfix
Fix issues in Kokkos Tersoff and Stillinger-Weber pair styles
2022-04-14 17:28:59 -04:00
e66fb6a1c1 apply clang-format 2022-04-14 17:28:05 -04:00
64b1c45a49 update MDI library and checksum 2022-04-14 17:27:20 -04:00
56bfa90a69 adapt bpm/sphere atom style 2022-04-14 17:23:11 -04:00
20827b4105 sync with new version of MDI library 2022-04-14 15:00:09 -06:00
111111b38b Merge branch 'develop' into atomvec-strings 2022-04-14 16:52:04 -04:00
26f6976568 move errorfunction complement approximation factor into shared namespace 2022-04-14 16:47:38 -04:00
8b31edb102 programming style updates and clang-format applied 2022-04-14 16:47:10 -04:00
81e203b5fa only allow "lj" and "real" units for now 2022-04-14 16:43:59 -04:00
4380ed23d1 documentation and LAMMPS homepage URL updates 2022-04-14 15:55:22 -04:00
0cfb26799c Fix copy/paste error 2022-04-14 13:47:57 -06:00
5bd86a05b2 Merge pull request #2906 from jtclemm/BPM
Adding package for bonded particle models
2022-04-14 15:43:14 -04:00
c5565a4e02 Small tweaks 2022-04-14 13:16:44 -06:00
5c70f45feb updates to use new funcs from Python as well 2022-04-14 10:49:12 -06:00
29582f09a1 add missing update to property_atom function API 2022-04-14 12:34:58 -04:00
ac8d97d358 capture by reference 2022-04-14 12:27:45 -04:00
31178661c9 switch to C++11 compatible lambda function capture 2022-04-14 12:27:03 -04:00
095c610a3f no more need to explicitly initialize empty fields 2022-04-14 12:00:56 -04:00
b5eb5ac686 update docs for adding atom styles to refactored process 2022-04-14 11:48:18 -04:00
500a3426ed "stringify" and "vectorize" per-atom data handling in Atom class 2022-04-14 11:31:20 -04:00
198d07e905 print warning when fix property/atom is issues before reading a restart 2022-04-14 11:06:35 -04:00
b16d48aa41 "stringify" and "vectorize" processing of per-atom attributs in AtomVec classes 2022-04-14 11:06:10 -04:00
9424c2558e enable and apply clang-format. minor cosmetic changes 2022-04-13 21:05:19 -04:00
1755d06870 Merge pull request #3216 from lammps/update-citation
update a citation
2022-04-13 19:16:57 -04:00
bc2b600f09 changes to use new MDI library functions 2022-04-13 16:26:48 -06:00
0946d41c3f Merge pull request #3215 from megmcca/snap-inner-bug
fix crash with multielement inner cutoff
2022-04-13 16:17:10 -04:00
30914a73fb Update error messages 2022-04-13 14:10:52 -06:00
44f67330e2 Port changes to other flavors of Tersoff 2022-04-13 13:50:49 -06:00
21c61a5c77 Merge pull request #3213 from akohlmey/gpu-remove-legacy
Remove support for CUDA toolkits before version 8 and GPUs older than Kepler
2022-04-13 15:10:17 -04:00
bd6d7b9136 clarify CUDA versus OpenCL build and runtime restrictions 2022-04-13 14:24:43 -04:00
c9ab5ebbf5 cosmetic 2022-04-13 12:59:54 -04:00
2804de8c26 fix refactoring bug 2022-04-13 12:59:41 -04:00
fb37c86632 remove duplicate 2022-04-13 12:59:30 -04:00
0f1097d7e6 recover read_restart and read_data capability for fix property/atom 2022-04-13 12:41:40 -04:00
2d5fadd88f Switch to const ref to help compiler 2022-04-13 10:27:41 -06:00
230bed0bc4 fix crash with multielement inner cutoff 2022-04-13 09:49:13 -06:00
9e94722987 Remove full neigh option in Kokkos Tersoff and SW pair styles 2022-04-13 08:14:02 -06:00
ef4e41d2a2 programming style and format updates 2022-04-12 22:52:07 -04:00
467cae9436 permissions 2022-04-12 18:43:47 -04:00
09b08ecd85 whitespace 2022-04-12 18:36:51 -04:00
8c153adceb spelling 2022-04-12 18:36:16 -04:00
e89303c202 Fix compile error with Kokkos CUDA 2022-04-12 16:31:21 -06:00
622a4a6d51 Overallocate slightly to reduce memory reallocs 2022-04-12 16:20:21 -06:00
2998462743 Add const 2022-04-12 16:07:37 -06:00
f64d405ad8 Fixing remaining errors/warnings in doc build 2022-04-12 15:59:38 -06:00
90a6a3c125 Fix typo 2022-04-12 15:57:49 -06:00
2fa99703bf Fix issues in Kokkos Tersoff and SW pair styles 2022-04-12 15:49:28 -06:00
616349c27b Merge branch 'develop' into dielectric-updates 2022-04-12 16:33:02 -05:00
f3363070e7 remove support for CUDA toolkits before version 8 and GPUs older than Kepler 2022-04-12 15:48:16 -04:00
ca37c01476 Fixing broken links/references in documentation 2022-04-12 13:36:39 -06:00
e1a7ea38a9 update a citation 2022-04-12 12:59:25 -06:00
929e46b5c7 remove dead code 2022-04-12 11:06:28 -04:00
e1a2423f2e modernize, initialize pointers, apply clang-format 2022-04-12 11:06:18 -04:00
2ff8ac0cb2 Merge pull request #3210 from arghdos/fix_volatile
Add non-volatile version of join function to DomainKokkos
2022-04-11 19:48:43 -04:00
12d7ef541b Need both versions of join 2022-04-11 15:13:44 -06:00
804c43b33c Merge branch 'develop' of github.com:lammps/lammps into fix_volatile 2022-04-11 15:11:37 -06:00
ef53298f7c Added the omp version of pair lj/cut/coul/debye/dielectric 2022-04-11 15:45:12 -05:00
2a595713f3 Updated doc page of the set command for the local dielectric constant,
which could be used as a measure of polarizability in the future
2022-04-11 15:01:19 -05:00
b666f7324c Updated the example input script with the set command for per-atom dielectric constant 2022-04-11 14:44:02 -05:00
b05aadf877 Allowed to set the atom local dielectric values (epsilon) 2022-04-11 14:18:43 -05:00
49aebf64b9 include BPM package in multiple presets 2022-04-11 12:41:28 -04:00
9d907e31b3 recover compilation 2022-04-11 12:40:59 -04:00
36723853c9 Merge branch 'develop' into BPM 2022-04-11 12:18:34 -04:00
8161dff58a Added pair style lj/cut/coul/debye/dielectric, added conversion factor epsilon02eq for real units 2022-04-11 10:54:41 -05:00
ebc74d7428 Indice correction in EXTRA-COMPUTE/compute_born_matrix.cpp, some PBC check in EXTRA-MOLECULE/dihedral_nharmonic.cpp and MOLECULA/angle_cosine.cpp. Also added born_matrix to angle_cosine.cpp 2022-04-11 17:53:48 +02:00
236d275b2f Merge pull request #3211 from akohlmey/collected-small-changes
Collected clang-tidy updates
2022-04-11 11:07:00 -04:00
b36262cd11 cosmetic 2022-04-10 20:47:42 -04:00
d6f7570d57 avoid redundant use of boolean literals 2022-04-10 20:47:31 -04:00
74f2b67b1a no if statement required before delete[] 2022-04-10 19:55:24 -04:00
3eec2eec9a make buffer size a compile time constant and use strncpy() instead of strcpy() 2022-04-10 18:33:17 -04:00
200b4f13c7 use dynamic cast instead of c-style cast when casting from base type to derived class 2022-04-10 18:18:06 -04:00
39b316729b use auto type when assigning from cast or using new 2022-04-10 18:16:36 -04:00
6071376d42 derive ATC_Error exception class from std::exception 2022-04-10 15:25:37 -04:00
413a01ade5 apply clang-tidy updates 2022-04-10 12:07:54 -04:00
1a2d83ab01 HDF5 library may be parallel which is an error with serial LAMMPS 2022-04-10 12:07:54 -04:00
591498ab31 Updated and fixed typos in doc pages 2022-04-10 10:24:31 -05:00
a9f5a1af51 initialize class member pointers in initializer to null 2022-04-10 11:13:33 -04:00
c54fe7d97d small update 2022-04-10 08:00:47 -04:00
85b69000cd revert to use NULL instead of nullptr, so that it compiles without having to enable c++11 compatibility 2022-04-09 20:54:59 -04:00
ddf67ec42d properly use nullptr on pointers (with a little help from clang-tidy) 2022-04-09 20:27:40 -04:00
2d346638fb correctly declare and override virtual functions for desired polymorphism 2022-04-09 20:17:36 -04:00
a620f5bd7d fix pointer type bug 2022-04-09 19:59:43 -04:00
07bc76871c avoid unsafe strcpy() 2022-04-09 19:01:42 -04:00
4adeb29491 clang-tidy fixes 2022-04-09 19:00:59 -04:00
177f9cabc1 add ELECTRODE package to suitable presets 2022-04-09 18:19:55 -04:00
4e81adaf8c make buffer size for text file reader adjustable 2022-04-09 17:46:47 -04:00
fcd3e76767 skip unsupported unit tests 2022-04-09 17:45:38 -04:00
c07b06c8d1 skip unsupported unit tests 2022-04-09 17:44:40 -04:00
420dc969d3 need to set buffer size based on generated output format 2022-04-09 17:26:41 -04:00
eb9af11d64 make buffer size for text file reader adjustable 2022-04-09 17:26:03 -04:00
b20c98753f style changes 2022-04-09 10:10:33 -04:00
44ccbd2184 use internal reader/parser classes for file reading and writing 2022-04-09 10:10:19 -04:00
06fc53ac69 make timer output configurable and off by default 2022-04-09 10:08:58 -04:00
75d87383e2 one more OpenMP fix 2022-04-09 09:10:45 -04:00
a04c0077b9 silence some more compiler warnings and try to resolve issues with old compilers 2022-04-09 09:04:17 -04:00
8625a6d946 apply clang-format 2022-04-09 08:00:11 -04:00
ce62da1cca compatibility with legacy OpenMP implementations 2022-04-09 07:53:17 -04:00
71f8e11d70 join multi-line strings 2022-04-09 07:45:01 -04:00
a94fa0a840 formatting 2022-04-09 07:44:33 -04:00
23598fa658 spelling 2022-04-09 07:44:15 -04:00
7673eda947 apply clang-format 2022-04-09 07:16:22 -04:00
6dea9fa10c add missing dependency handling in GNU make build for ELECTRODE package 2022-04-09 07:10:31 -04:00
c04db4b545 modernize 2022-04-09 07:01:42 -04:00
e0c4f6164e silence compiler warnings 2022-04-09 07:01:35 -04:00
cab6fca22e update to latest upstream and modernize neighbor list request handling 2022-04-09 07:00:39 -04:00
19b42bc726 Merge branch 'develop' into electrode 2022-04-09 06:31:22 -04:00
8ce2ce8fd4 remove unused import 2022-04-09 04:02:01 -04:00
a71bf4cae5 Merge pull request #3207 from lammps/remove-message-package
remove MESSAGE package
2022-04-09 03:20:26 -04:00
8dce9f7a60 install pyyaml 2022-04-09 00:39:50 -04:00
6c87962551 fix remaining doc build issues 2022-04-09 00:39:27 -04:00
674d2a6788 Merge branch 'develop' into remove-message-package 2022-04-09 00:25:11 -04:00
8b53ff9383 Merge pull request #2921 from lammps/mdi-expand
Enhance MDI support in LAMMPS in its MDI package
2022-04-09 00:18:50 -04:00
22122092e4 Merge pull request #3206 from akohlmey/add-kimplugin
Add kimplugin source and CMake based build support
2022-04-08 23:09:13 -04:00
d0d4bbf5ae Merge pull request #3196 from akohlmey/avoid-bigint-format-scanf
Refactor code to avoid XXXINT_FORMAT defines and  xxscanf() function calls
2022-04-08 21:24:57 -04:00
5ff42d8993 simplify 2022-04-08 21:21:36 -04:00
81933b7972 silence compiler warnings 2022-04-08 21:19:32 -04:00
f3685fa8de fix bugs 2022-04-08 21:18:55 -04:00
375062d02c restore modern API usage 2022-04-08 21:18:28 -04:00
093667799d Merge branch 'develop' into mdi-expand 2022-04-08 20:58:53 -04:00
1cc913d006 Merge pull request #3205 from akohlmey/dump-style-yaml
Add dump style yaml
2022-04-08 20:55:01 -04:00
8cdce34b27 Merge branch 'develop' into dump-style-yaml 2022-04-08 18:42:28 -04:00
6849356d63 fix spelling, formatting, and cross-link/indexing issues 2022-04-08 18:35:51 -04:00
530d8c007d minor tweak 2022-04-08 18:09:10 -04:00
521d45dcc6 remove MESSAGE package from CMake 2022-04-08 18:00:36 -04:00
fbc55937fe Merge pull request #3198 from bathmatt/pair-dpd
DPD-BASIC kokkosification
2022-04-08 17:48:28 -04:00
dff3bc5656 Merge branch 'develop' into avoid-bigint-format-scanf 2022-04-08 17:39:25 -04:00
fc24cf15ce Merge pull request #3197 from akohlmey/custom-thermo-headers
add support for custom header keywords with thermo output and dump styles
2022-04-08 17:29:35 -04:00
b24d01fae6 remove broken links in the manual from removing packages 2022-04-08 17:27:01 -04:00
d0edc48a65 update purge list with removed source files from MESSAGE package 2022-04-08 17:26:16 -04:00
f405c7acc9 add deprecation handling removed commands and styles 2022-04-08 17:25:56 -04:00
ef7c6a580e simplify 2022-04-08 16:51:52 -04:00
2c509d96a6 we are not compatible with those old versions for the MDI library 2022-04-08 16:43:41 -04:00
07aecb3678 whitespace fixes and apply clang-format 2022-04-08 16:36:21 -04:00
bfaa1e9ed0 whitespace 2022-04-08 16:28:57 -04:00
a7ccb16aa8 Merge pull request #3192 from davidfir3/fep_ta
New feature compute fep/ta
2022-04-08 16:27:12 -04:00
33798b99a4 remove debug print statement 2022-04-08 14:08:51 -06:00
caa977e869 Remove redundant calls 2022-04-08 13:28:14 -06:00
f8ec0365c6 Fix a few more issues 2022-04-08 12:52:26 -06:00
d99b1258e3 remove volatile to fix build error from Kokkos commit (5574130fb333ac1745a52d4a6383ac95c64bdc0f) 2022-04-08 11:13:31 -05:00
b73437aa63 Merge pull request #3208 from arghdos/develop
Fix for building GPU backend on ROCm 5.1+
2022-04-08 07:19:27 -04:00
4efdfaa8f3 simplify and make consistent, fix time based dump bug 2022-04-08 07:05:30 -04:00
bd4d92c76d entry for mdi sub-dir in Examples.rst 2022-04-07 16:02:45 -06:00
77565add6e Add C++14 to Makefile build system
Change-Id: I24f72b4aaca93a49877775c3d181507c83cd7f82
2022-04-07 17:54:20 -04:00
ab0e5d5568 Fix for building GPU backend on ROCm 5.0+
Change-Id: I32ad9be86d6a0467ccae555a1d0272813c905e97
2022-04-07 17:48:03 -04:00
792ae5dae5 remove src/MESSAGE package and supporting dirs and doc pages 2022-04-07 15:44:48 -06:00
f40180f7fb lib README edit 2022-04-07 15:15:50 -06:00
adef9b7747 add log files to examples/mdi 2022-04-07 15:13:29 -06:00
40aa146624 Prune unused code and fix virial issue 2022-04-07 15:05:07 -06:00
0b6aa59621 updated doc pages 2022-04-07 14:42:58 -06:00
e2f25a96e1 spelling 2022-04-07 14:50:33 -04:00
ddb6350fe8 Remove unused var 2022-04-07 10:53:38 -06:00
9b969648d5 add kimplugin source and CMake based build support 2022-04-07 12:51:06 -04:00
2956aee8dc Small tweaks 2022-04-07 10:45:50 -06:00
4f67f586d0 Fix memory issue and leftover debugging 2022-04-07 10:02:58 -06:00
fdf59e6a03 more debugging for plugin library mode 2022-04-07 09:26:43 -06:00
f5add95083 fix syntax error 2022-04-07 06:08:54 -04:00
8a6e6fe523 make dump style yaml test dependent on it being available 2022-04-07 05:59:31 -04:00
3970942028 add test for yaml dump style 2022-04-07 02:44:17 -04:00
0e8e1171c6 add unit test for yaml style thermo output and updated logfile class 2022-04-07 02:07:05 -04:00
59fa0be35f update for recent changes in thermo output 2022-04-07 02:06:55 -04:00
98b908387f add unit test for yaml style thermo output and updated logfile class 2022-04-07 02:05:47 -04:00
601bdadf44 update for recent changes in thermo output 2022-04-07 02:05:05 -04:00
082254455b improve confusing error messages 2022-04-07 00:37:30 -04:00
58ecf03e5d correct yaml import 2022-04-07 00:37:18 -04:00
348ee5299e implement a dump style yaml 2022-04-06 19:11:55 -04:00
e944ecd1c2 correct docs 2022-04-06 19:10:16 -04:00
207b34ae12 allow for pre-timestepping comm with engine, e.g. for force eval 2022-04-06 16:38:58 -06:00
b1e92c9ec6 update YAML reading python example to read faster using libyaml. 2022-04-06 17:38:25 -04:00
4bd28cf920 altering how plugin mode works 2022-04-06 15:24:02 -06:00
2b8b916cba delete unused enums 2022-04-06 10:08:53 -04:00
cd7f08a8e7 support dump_modify for column headers in ADIOS dump styles 2022-04-06 09:31:01 -04:00
387b0df554 Remove gitlab pipeline 2022-04-06 08:21:12 +02:00
b4cc158981 Merge pull request #3182 from charlessievers/mliap
ML-IAP updates
2022-04-05 22:07:27 -04:00
e4f62cae9a integrated added styles into manual 2022-04-05 22:01:21 -04:00
4ad8af629d whitespace 2022-04-05 21:53:29 -04:00
f89a08985e update DPD-BASIC package examples 2022-04-05 21:50:36 -04:00
607ecf595b Add ScatterView 2022-04-05 17:04:23 -06:00
8744627059 Tiny tweaks 2022-04-05 16:04:43 -06:00
efa7116b58 Merge branch 'develop' of https://github.com/lammps/lammps into pair-dpd 2022-04-05 15:48:36 -06:00
cd0b921ed2 Merge pull request #3203 from stanmoore1/acks2_bug
Fix issues in ReaxFF QEq and ACKS2
2022-04-05 16:29:30 -04:00
65be564cd6 Review akohlmey 2022-04-05 15:35:04 +00:00
22392d226a silence compiler warnings 2022-04-04 21:11:09 -04:00
a5139d7100 make sure "NN" is initialized before it is used 2022-04-04 21:03:15 -04:00
288c154290 Merge pull request #3186 from Ruyk/kokkos-sycl-cmake
Add kokkos-sycl.cmake preset
2022-04-04 16:12:24 -04:00
c274146358 whitespace 2022-04-04 15:40:19 -04:00
3eb7194619 Merge branch 'develop' into acks2_bug 2022-04-04 15:39:44 -04:00
3e01bc48d4 Need s ghosts 2022-04-04 13:05:10 -06:00
134c77a5c6 reference kokkos-sycl.cmake in the docs 2022-04-04 14:47:53 -04:00
fd80b1bd9b Merge pull request #3201 from samueljmcameron/bugfix_dumpvtk
Bug fix in vtk dump.
2022-04-04 14:40:56 -04:00
776dc34411 Add missing vars 2022-04-04 12:28:03 -06:00
f42635a40d Should be nall not nghost 2022-04-04 12:08:38 -06:00
4fadf4c830 more debugging on plugin mode 2022-04-04 10:30:12 -06:00
b4fc86e467 Fix issues in ReaxFF QEq and ACKS2 2022-04-04 10:24:54 -06:00
02f972292c spelling 2022-04-04 12:16:28 -04:00
5d4ec45534 Merge branch 'develop' into custom-thermo-headers 2022-04-04 12:08:23 -04:00
d89ff310c1 Merge pull request #3202 from lammps/fix-deform-doc-page-edit
Fix deform doc page edit
2022-04-04 12:07:10 -04:00
a0b15c2d04 Merge pull request #3199 from lammps/misc
Misc changes
2022-04-04 11:51:59 -04:00
63a841e300 doc page edit 2022-04-04 08:59:40 -06:00
3ed011dcfb whitespace 2022-04-03 10:55:56 -04:00
028beb8da4 Merge branch 'develop' into misc 2022-04-03 10:55:24 -04:00
db00b49a50 Merge pull request #3195 from weinbe2/feature/kk-reax-ang-tors-optim
kk/reax: Preprocessing optimizations to ComputeAngular,Torsion; Modularity/Memory improvements in BuildLists
2022-04-03 09:52:08 -04:00
e5a01026a7 add unit tests for fix move 2022-04-03 03:19:47 -04:00
c9d0889f25 add "transrot" style to fix move that allows to do translation and rotation at the same time 2022-04-02 18:34:17 -04:00
584b166823 enable and apply clang-format 2022-04-02 17:20:34 -04:00
93c67a3c07 make compute msd (and msd/nongauss) error out immediately when used with a dynamic group 2022-04-02 17:13:30 -04:00
8e838c1424 Bug fix in vtk dump. 2022-04-02 12:55:51 +01:00
49abd0d269 update docs 2022-04-01 15:17:10 -04:00
fb9316701b port colname changes to MPIIO package 2022-04-01 14:57:41 -04:00
dab640220c Fix name to match code 2022-04-01 12:48:58 -06:00
ea9e3c0860 Update fix ACKS2 docs 2022-04-01 12:45:38 -06:00
2f895d63a6 Add missing variable assignment 2022-04-01 12:32:24 -06:00
fb76cb9a5c updated virtual 2022-04-01 17:54:12 +02:00
294dcc5f93 more debugging for plugin mode 2022-04-01 09:27:48 -06:00
68f27bb4cd addressing comments from Evan's review 2022-04-01 17:02:57 +02:00
ce67cb0ca1 first stab at implementing dump_modify colname 2022-04-01 07:41:13 -04:00
9c0934e82c Have ext-tstat working 2022-04-01 10:37:53 +02:00
c470c204d4 remved unused var 2022-04-01 10:35:05 +02:00
4042a52db1 rename header keyword to colname 2022-03-31 21:58:35 -04:00
4437f16e08 remove references to non-existing folders 2022-03-31 17:49:24 -04:00
335b78b4f2 Add contributing author to list 2022-03-31 15:27:05 -06:00
e3611c5d73 add support for custom keywords with thermo output 2022-03-31 17:26:46 -04:00
19a6eecfbb more debugging for plugin engine mode 2022-03-31 14:41:38 -06:00
4dc4d74056 Add back in accidentally deleted call 2022-03-31 13:10:22 -06:00
ad4701f4f7 Small tweaks 2022-03-31 12:52:36 -06:00
72874376f0 Remove #ifdef 2022-03-31 12:27:43 -06:00
79fcf18013 Remove #ifdef 2022-03-31 12:25:58 -06:00
229f0af537 enable LAMMPS as driver to use plugin engine 2022-03-31 12:09:05 -06:00
df05bbb72b moved dpd_tstat to kokkos 2022-03-31 17:20:56 +02:00
28976b8c92 recover compilation on windows with old MPICH version 2022-03-31 08:44:43 -04:00
12ddc4ad12 final set of XXXINT_FORMAT changes 2022-03-31 07:51:14 -04:00
52b563a83e modernize parsing in fix tmd, add support for comments and empty lines 2022-03-31 07:36:50 -04:00
33b6466611 add minimal fix tmd example 2022-03-31 07:31:43 -04:00
b97c30e6e7 more refactoring, modernizing, removing of debug code 2022-03-31 06:24:44 -04:00
acd9c7950e update doc and example 2022-03-31 12:25:10 +08:00
b64e90dfe0 simplify. avoid XXXINT_FORMAT macros 2022-03-30 23:43:28 -04:00
1c9dc9c0d9 correct formatting 2022-03-30 22:11:46 -04:00
65a083c83d add support for </>VELOCITIES command at nodes 2022-03-30 15:52:55 -06:00
993441b25a avoid XXXINT_FORMAT macros in fix reaxff/bonds 2022-03-30 17:52:21 -04:00
c7a9a3e2f6 simplify and replace use of XXXINT_FORMAT macros 2022-03-30 16:13:38 -04:00
f3fa04ae0a bugfix 2022-03-30 15:01:03 -04:00
c4729b39b4 replace more uses of XXXINT_FORMAT with fmtlib 2022-03-30 13:53:25 -04:00
14f54aae40 Reax: Preprocessing optimizations to ComputeAngular,Torsion. Modularity boosts + memory reductions for BuildLists 2022-03-30 08:23:41 -07:00
5003c35963 have first cut of just pair-dpd 2022-03-30 16:22:26 +02:00
ddf93eb7ba removed unused var 2022-03-30 15:42:09 +02:00
69d32f286b Stan's patch 2022-03-30 15:10:54 +02:00
2517d1fb55 Converted DPD-BASIC-EXT to use Kokkos 2022-03-30 15:10:54 +02:00
9aad583c7d more parsing updates 2022-03-30 07:38:33 -04:00
999c880dfd simplify parsing numbers and reduce usage of BIGINT_FORMAT 2022-03-30 07:12:25 -04:00
ff3ac64b7e spelling 2022-03-30 03:32:26 -04:00
faacf575b5 add support for >+FORCES command 2022-03-29 14:20:44 -06:00
b92d117524 Merge pull request #3191 from akohlmey/collected-small-changes
Collected small changes and fixes
2022-03-29 14:45:18 -04:00
385b7a77e6 Merge pull request #3193 from samueljmcameron/stable_fix_brownian_update
BROWNIAN package update
2022-03-29 13:03:11 -04:00
2a35ec2d85 Merge pull request #3187 from stanmoore1/kk_opt_neighlist
Optimize Kokkos neigh list for GPUs
2022-03-29 12:05:34 -04:00
d9880273e3 fix typo 2022-03-29 11:54:34 -04:00
b8c7a6153d whitespace 2022-03-29 09:49:48 -04:00
bfe361c576 fix doc building issues 2022-03-29 09:47:44 -04:00
5ea526728e Merge branch 'develop' into stable_fix_brownian_update 2022-03-29 08:26:11 -04:00
88ff2db715 cosmetic updates, print warnings only on MPI rank 0 2022-03-29 08:23:18 -04:00
6f1fac1c59 Updated docs. 2022-03-29 12:21:09 +01:00
c28504961d remove references to the mailing list in the manual and replace with forum link, if needed 2022-03-29 07:01:00 -04:00
dcd6bea172 one final fix in constructor of asphere. 2022-03-29 11:22:21 +01:00
27d2fab951 simplify processing for "*" in filenames for embedding timestep by using utility function 2022-03-29 06:06:48 -04:00
da61b6871a Added in check for ellipsoid in brownian_asphere 2022-03-29 10:46:05 +01:00
db5e4e05a8 fix bug that happens when fix ave/time Nfreq < thermo freq 2022-03-29 15:35:23 +08:00
0bebe6c428 First commit, things not working though. 2022-03-29 07:50:19 +01:00
015257889d flag compatibility with VTK version 9 2022-03-29 01:03:04 -04:00
b211f97efa update and improve ADIOS support
- modernize code
- remove dead code and unused definitions, enums, and includes
- create default adios2_config.xml file if it doesn't exist
- enable and apply clang-format
- update documentation
2022-03-29 01:01:57 -04:00
333e3b0491 apply clangformat 2022-03-28 22:48:00 -04:00
3ba7b8c24c add star_subst() utility function that replaces a '*' in a string with a number 2022-03-28 22:47:20 -04:00
82d0a55862 remove merge conflict message 2022-03-28 15:26:20 -06:00
6407745781 update programming style and enable/apply clang-format 2022-03-28 16:49:11 -04:00
a60e1546b2 properly integrate into build system and docs 2022-03-28 16:48:44 -04:00
60e2b84e09 Fuse loops 2022-03-28 14:43:16 -06:00
1a3c6d3dbc tweak to one MDI doc file 2022-03-28 14:33:17 -06:00
d80fe166d1 Merge branch 'develop' into collected-small-changes 2022-03-28 16:30:01 -04:00
438cba3604 update programming style to latest conventions, enable and apply clang-format 2022-03-28 16:26:55 -04:00
88c075ba90 Tune for HIP 2022-03-28 14:19:50 -06:00
48332c3b18 Rename variable 2022-03-28 14:17:44 -06:00
94645ae720 update of doc pages to match new version of MDI support 2022-03-28 13:56:16 -06:00
63caa8bb44 reorder so that kspace follows improper and comes before compute 2022-03-28 15:12:25 -04:00
120c080fc2 avoid converting a null pointer to a std::string and correct error check 2022-03-28 15:07:23 -04:00
9920b22509 programming style updates 2022-03-28 15:06:55 -04:00
cd8cdc711c Merge pull request #3189 from CDenniston/develop
remove defunct LBtype argument from lb/fluid doc
2022-03-28 14:12:00 -04:00
540cf9b6d7 Merge pull request #3188 from njzjz/kspace_plugin
support kspace style plugin
2022-03-28 11:58:40 -04:00
51c41f09bf recover unit tests for variables 2022-03-28 09:21:25 -04:00
af4afb7e03 modify error/warning message 2022-03-28 21:14:13 +08:00
ebf2b1e706 add doc for compute fep/ta 2022-03-28 20:01:59 +08:00
d7f95da8f3 add extract_setting special function to variable command 2022-03-28 08:00:29 -04:00
4545954385 reformat for wider lines 2022-03-28 07:24:51 -04:00
13228ca29a add dimension check 2022-03-28 13:34:36 +08:00
c52bffda9c remove defunct LBtype argument from lb/fluid doc 2022-03-27 11:26:23 -04:00
cf17fd2306 remap ghost atoms, no need to forward_comm() 2022-03-27 21:49:51 +08:00
603136a93b rename some function & variable, output delta area 2022-03-27 20:52:00 +08:00
7c333b8e07 include bonded eng, cancel neigh build & fix bugs 2022-03-27 20:22:16 +08:00
ff107315cb need to always extract the path to MPI include directory 2022-03-26 23:20:57 -04:00
980b6cada7 update formatting 2022-03-26 10:55:10 -04:00
36444a1db1 add DOI for 29 September 2021 version 2022-03-26 10:48:45 -04:00
356091e1e0 support kspace plugin
I need such feature in the development of deepmd-kit.
2022-03-26 03:39:07 -04:00
2e84700224 delete unused variable "pairflag" 2022-03-26 13:55:22 +08:00
dc668ed0df update to README instructions 2022-03-25 16:11:17 -06:00
55d3edef2f doc info in sequence_driver.py 2022-03-25 16:10:43 -06:00
d710d19aef Enforce pre_exchange() order for (currently) unused update option 2022-03-25 15:56:59 -06:00
4d037376af include GHub whitespace changes 2022-03-25 15:19:13 -06:00
0c1516b34d Add another missing change 2022-03-25 14:14:42 -07:00
055fefc542 finished MDI engine and test script debugging 2022-03-25 15:07:38 -06:00
d648247b80 whitespace 2022-03-25 13:03:56 -07:00
d131223161 Restore changes lost in Git shuffle 2022-03-25 12:59:45 -07:00
9f0eb2ea1a Add note about memory 2022-03-25 12:17:33 -07:00
b14086f3f9 Update docs 2022-03-25 12:12:04 -07:00
a5e22c07c7 Merge branch 'kk_npair_ghost_gpu' of github.com:stanmoore1/lammps into neigh_transpose 2022-03-25 11:49:17 -07:00
01abeda9ef Merge branch 'develop' of https://github.com/lammps/lammps into kk_npair_ghost_gpu 2022-03-25 12:08:32 -06:00
e2e046c452 add missing host overload to make Clang happy
Change-Id: Ib0bd9dec3ecc6bf13b9894b07024172a9810cd77
2022-03-25 12:05:25 -06:00
17b35878ea Add version of Kokkos Ghost neigh list optimized for GPUs 2022-03-25 12:03:20 -06:00
c3f4dac7dc Small tweak to comments 2022-03-25 09:45:05 -07:00
6dae6198a2 Add neigh transpose as Kokkos package option 2022-03-25 09:17:39 -07:00
2279b28df2 Update from upstream 2022-03-25 09:00:56 -07:00
8e9b508c88 Merge branch 'develop' of github.com:lammps/lammps into Elastic_stress 2022-03-25 16:01:35 +01:00
274db39aa5 demo of new compute style fep/ta 2022-03-25 22:41:39 +08:00
29ada4e263 Update description header 2022-03-25 11:19:59 +00:00
2ae448d9d0 Add kokkos-sycl.cmake & relevant compiler flags 2022-03-25 11:05:09 +00:00
58f59197ff silence warnings from coverity scan 2022-03-25 05:30:01 -04:00
5663a9c38b print current LAMMPS version number in configuration summary 2022-03-24 17:07:45 -04:00
4e180bc237 update URL for downloading old LAMMPS versions 2022-03-24 17:02:07 -04:00
08bdaf8ca7 Merge pull request #3184 from akohlmey/next_patch_release
Update version strings for next patch release
2022-03-24 14:27:29 -04:00
dad8fb8b06 Removing residual files 2022-03-24 11:44:44 -06:00
82f4487d4d Merge pull request #3185 from akohlmey/collected-small-changes
Final small changes for patch release
2022-03-24 13:25:01 -04:00
82c5c622b8 fix temperature initialization bug in KOKKOS nose-hoover code 2022-03-24 11:44:02 -04:00
81d0165c5c Merge pull request #3181 from jibril-b-coulibaly/new_damp
Damping fixes for finite-size particles simulations
2022-03-24 11:08:02 -04:00
4278ff8205 update threebody example 2022-03-24 07:32:30 -04:00
383f0adc94 update version strings for patch release 2022-03-23 19:44:14 -04:00
d8d12ccf1c Merge pull request #3180 from akohlmey/strtok-parsing-refactor
Refactor files to replace parsing with strtok() to use tokenizer classes
2022-03-23 19:40:39 -04:00
6e959b6f43 more robust response to >COORDS command 2022-03-23 17:21:00 -06:00
a3beb063a3 update and simplify parsing of STL mesh using LAMMPS utilities 2022-03-23 18:41:17 -04:00
66f97ef6bc whitespace 2022-03-23 17:22:46 -04:00
a4018dbb4b update MDI library to version 1.3.0 2022-03-23 17:18:19 -04:00
92a968a8a9 Resolving merge conflicts 2022-03-23 14:28:27 -06:00
07cec37786 add Note to damping/cundall documentation about fix order. Remove fix order warning from fix viscous/sphere 2022-03-23 14:59:43 -05:00
42dd772455 more work on plugin mode 2022-03-23 13:45:20 -06:00
f95aaf5898 update settings 2022-03-23 15:15:51 -04:00
d785483c4c update potential file parsing in pair style meam/spline and meam/sw/spline 2022-03-23 15:09:31 -04:00
61f28aea36 add "rewind()" member function to Text and Potential file reader classes 2022-03-23 14:44:50 -04:00
67329b6fff fix KOKKOS bug 2022-03-23 14:40:17 -04:00
9417e41676 Rename sphere/bpm, remove bond instance, add smooth option 2022-03-23 11:41:27 -06:00
c4425a1b0e debugging plugin mode 2022-03-23 11:17:51 -06:00
2ab9aa3cdc dummy commit to trigger resolving github inconsistency 2022-03-23 11:16:54 -04:00
59eca42127 synchronize format handling and fix/compute/variable checking with dump custom 2022-03-23 10:57:52 -04:00
a208f1fc39 minor tweak to one style thermo output for keeping columns straight 2022-03-23 10:48:15 -04:00
ae41996967 add support for determining damping scale factor from atom-style variable 2022-03-23 10:43:26 -04:00
ace6c67697 Copy .h & .cpp from compute_fep for comparison 2022-03-23 22:26:44 +08:00
1fd699d279 enable and apply clang-format 2022-03-23 05:06:15 -04:00
b6e37c828e move fix viscous/sphere to EXTRA-FIX package 2022-03-23 05:02:32 -04:00
e247c1a4d0 update related commands 2022-03-23 04:57:49 -04:00
4a5f5b9980 Merge remote-tracking branch 'github/develop' into new_damp 2022-03-23 04:47:52 -04:00
23461d4ba8 spelling 2022-03-23 04:47:48 -04:00
9d500280c9 more tweaks for extep potential file 2022-03-22 22:21:23 -04:00
c18236216b add MPI_Group_free() support to STUBS 2022-03-22 21:54:36 -04:00
0bd8500da3 whitespace 2022-03-22 21:47:26 -04:00
31f0d5c056 Merge remote-tracking branch 'github/develop' into strtok-parsing-refactor 2022-03-22 21:44:15 -04:00
8ef9eae60a update potential file parser in pair style extep 2022-03-22 21:43:26 -04:00
080662683d use tokenizer to read neb initial replica files 2022-03-22 20:54:42 -04:00
3e7de83e6e Merge pull request #3179 from akohlmey/thermo-refactor-plus-yaml
Refactoring of Thermo class and new thermo style yaml
2022-03-22 20:17:25 -04:00
4c13f99b04 convert to use LAMMPS' tokenizer and potential file reader classes 2022-03-22 17:59:53 -04:00
1ee40f8f8f change to tests 2022-03-22 11:11:43 -06:00
194751e800 add support for full minimizations 2022-03-22 09:32:31 -06:00
eb44b6b1fa Merge branch 'develop' into mdi-expand 2022-03-22 08:39:24 -06:00
6555c7302d debugging for series of calcs 2022-03-22 08:38:39 -06:00
d3ba1af89c rename cundamp to damping/cundall 2022-03-22 09:01:53 -05:00
2e539918c1 slight change in __init__.py to fix *.a bug 2022-03-21 22:55:28 -07:00
862e4ba67a Added different pytorch modules that allow different handling of element types and proposal for __init__.py bug fix 2022-03-21 22:45:28 -07:00
8954ac4f20 correct/simplify for GPU device specialization 2022-03-21 17:12:43 -04:00
643511294e create fix for rotational viscous damping on spheres. create fix for Cundall type damping for granular simulations 2022-03-21 15:34:04 -05:00
4c1a6d7ecf tweak settings for thermo style "one" 2022-03-21 14:44:07 -04:00
6c30bdf082 add missing reaxff files to purge list 2022-03-21 14:35:09 -04:00
6f2c09c187 Merge branch 'develop' of github.com:lammps/lammps into Elastic_stress 2022-03-21 10:46:53 +01:00
bc86bdf984 use tokenizer in fix phonon 2022-03-20 21:54:58 -04:00
4c95314ea6 must set boxflag *after* checking for rigid fix because we might change the box ourselves 2022-03-20 21:25:26 -04:00
550ae15dff proper handle partial initialization from infile 2022-03-20 21:12:35 -04:00
89c7d8f707 replace strtok based file reader with ValueTokernizer 2022-03-20 16:34:41 -04:00
adf4a23f58 refactor and apply clang-format
- replace file reader code using TextFileReader and ValueTokenizer
- replace traversing list of fixes with accessor functions
- enable and apply clang-format
- add examples for reading rigid bodies from file
2022-03-20 15:28:31 -04:00
356555418d remove dead code 2022-03-20 00:41:26 -04:00
45d246b9c5 Merge branch 'develop' into thermo-refactor-plus-yaml 2022-03-19 21:55:18 -04:00
d539dcd8d4 repair collateral damage to NETCDF package from Thermo class refactor 2022-03-19 20:54:50 -04:00
1b7da77a4a update some more version change timestamps 2022-03-19 20:20:30 -04:00
294dd2778a update thermo style yaml docs and examples for reading and parsing 2022-03-19 20:19:52 -04:00
c70b0b39ac update documentation for modifying LAMMPS to reflect changes to Thermo class 2022-03-19 18:06:56 -04:00
74103b141a enable and apply clang-format 2022-03-19 18:03:29 -04:00
a4d2062865 reduce redundant code with helper functions and simplify by using std::string 2022-03-19 18:01:12 -04:00
f5ebfbf90b refactor thermo output processing and add new yaml thermo style 2022-03-19 16:39:09 -04:00
649e8a27b3 Merge pull request #3159 from akohlmey/neigh-request-refactor
Refactor neighbor list request code
2022-03-19 00:47:09 -04:00
4399559259 adjust epsilon for unit test on MacOS 2022-03-18 23:37:54 -04:00
ad5235a764 update yaml file for force style unit tests with higher precision numbers 2022-03-18 22:44:50 -04:00
c80a182150 relax epsilon for MSVC++ test 2022-03-18 21:20:44 -04:00
88ac22cd62 silence compiler warnings. avoid uninitialized access. 2022-03-18 20:02:49 -04:00
4f3a9f9b63 Merge branch 'develop' into neigh-request-refactor 2022-03-18 19:23:51 -04:00
3f28768b5e Merge pull request #3177 from akohlmey/collected-small-changes
Collected small changes and fixes
2022-03-18 19:22:40 -04:00
a96aef73d1 Merge remote-tracking branch 'github/develop' into neigh-request-refactor 2022-03-18 18:28:35 -04:00
3828518e5e implement suggestions from @athomps 2022-03-18 18:28:20 -04:00
2b2bc64ad9 Merge pull request #3178 from akohlmey/sphinx-theme-update
Update LAMMPS theme for HTML pages of the manual
2022-03-18 18:09:56 -04:00
68673633f0 silence compiler warnings about unused variables 2022-03-18 18:09:24 -04:00
a7fce6dc39 add harmonic/cut to python example folder. small tweaks to docs and examples 2022-03-18 17:58:30 -04:00
6c6a6b7c64 provide more complex example for using pair style python 2022-03-18 17:07:01 -04:00
30966dfed0 Bugfix from @weinbe2 2022-03-18 14:14:34 -06:00
364ac40724 Merge pull request #3169 from stanmoore1/kk_reduce_mem
Reduce memory use in Kokkos package
2022-03-18 14:21:30 -04:00
8fe7b928a7 use newer APIs to get access to fixes and computes 2022-03-18 13:16:18 -04:00
cc2ba3c350 make sure parameters are stored symmetrically 2022-03-18 13:02:34 -04:00
f928cc2335 update github managers. 2022-03-18 11:37:49 -04:00
008c000bfe update LAMMPS theme for HTML pages from readthedocs theme to version 1.0.0 2022-03-18 07:44:47 -04:00
815718f33a follow conventions 2022-03-18 06:06:48 -04:00
bc8998c997 correct toycar input example 2022-03-18 06:02:38 -04:00
477d53bcdb check for sufficient number of arguments in command line 2022-03-18 06:02:38 -04:00
734d867a91 use preprocessor for conditional compilation 2022-03-18 06:02:28 -04:00
626b2c4bab use utility functions 2022-03-18 05:52:34 -04:00
43b4240503 use sizeof(double) not sizeof(MPI_DOUBLE), bigint instead of long int
also use fmt::print() for typesafe output
2022-03-18 05:51:35 -04:00
32612d3f5b enable and apply clang-format 2022-03-18 00:06:28 -04:00
6d38ce5284 enable and apply clang-format 2022-03-17 23:40:37 -04:00
e12e06198c enable long md and min runs 2022-03-17 17:58:26 -06:00
85e581eb2a enable and apply clang-format 2022-03-17 19:44:53 -04:00
58030009da new math constants: DEG2RAD and RAD2DEG 2022-03-17 19:44:34 -04:00
6e7eedf148 enable and apply clang-format 2022-03-17 18:41:17 -04:00
fb8074d294 renormalize line endings. add .gitattributes to configure them explicitly 2022-03-17 18:21:31 -04:00
fc532ae1a0 list submodules to be updated explicitly for compatibility with CMake 3.16 and later 2022-03-17 16:53:44 -04:00
1e21b8fac1 enable and apply clang-format 2022-03-17 15:37:50 -04:00
57cf2a735a add support for '-f' option to shell rm built-in command 2022-03-17 15:17:44 -04:00
8ffacb55ca enable and apply clang-format 2022-03-17 12:20:17 -04:00
982a5719c4 correct mixed up force and energy in pair style harmonic/cut 2022-03-17 12:18:36 -04:00
9dfb099197 change platform::mkdir() to create entire path like "mkdir -p"
update the documentation of the shell command to current state
and specifically explain the difference between built-in and
external commands and correct where built in commands were described
as calling external commands.
2022-03-17 11:34:50 -04:00
b7ea33332f spelling 2022-03-17 11:32:48 -04:00
1fbeba8fa7 remove dead code and silence compiler warnings 2022-03-17 10:12:00 -04:00
cf06f71514 more refactoring of MDI engine 2022-03-16 17:46:01 -06:00
9e91708e27 Merge pull request #3174 from akohlmey/collected-small-changes
Collected small changes
2022-03-16 16:20:28 -04:00
6d070c7043 more use of modernized APIs 2022-03-16 15:24:42 -04:00
396a95f7af Merge pull request #12 from weinbe2/neigh_transpose
Addition of a  "smart" transpose routine with scratch memory staging
2022-03-16 12:29:21 -06:00
7e2fef096f use accessor function to get and process list of fixes 2022-03-16 14:18:09 -04:00
d49c27e362 Added a "smart" transpose routine with scratch memory staging for neighbor table transposes between LR and LL 2022-03-16 14:12:20 -04:00
31bc7b2864 Merge pull request #3170 from akohlmey/auto-load-plugins
Automatically load LAMMPS plugins if they are in folders listed in LAMMPS_PLUGIN_PATH environment variable
2022-03-16 13:53:14 -04:00
4be3da727a include tools/python in whitespace check 2022-03-16 13:22:39 -04:00
bb4268518b make python 2 compatible 2022-03-16 12:56:19 -04:00
72425f1874 add '#' to make the list of headers a comment 2022-03-16 12:55:53 -04:00
b774464156 whitespace 2022-03-16 12:55:25 -04:00
ba19090631 Merge pull request #3173 from athomps/snap-inner
Inner cutoff switching function for SNAP descriptors and potentials
2022-03-16 12:43:23 -04:00
4894263215 Merge pull request #3167 from CDenniston/develop
Update LATBOLTZ package to new version
2022-03-16 12:22:48 -04:00
e3d4e80407 Merge branch 'develop' into collected-small-changes 2022-03-16 11:55:07 -04:00
0fd02ffd10 Merge pull request #3153 from aliehlen/log-pizza-updates
Log pizza updates
2022-03-16 11:50:31 -04:00
afc634eef2 Merge branch 'develop' of https://github.com/lammps/lammps into neigh_transpose 2022-03-16 08:44:09 -06:00
49b87f9929 enable/apply clang-format, remove redundant code, style fixes 2022-03-16 09:07:38 -04:00
edf7c274b9 Merge branch 'lj_cubic_error' of github.com:olavgal/lammps into collected-small-changes 2022-03-16 09:03:02 -04:00
92bfaeda10 fix bug where it was not possible to use an absolute path for write_coeff 2022-03-16 09:00:56 -04:00
0ac5d8223d Whitespace 2022-03-16 13:06:32 +01:00
8ac1d5bbc5 Error fixed. Epsilon and sigma must also be symmetric 2022-03-16 13:04:36 +01:00
7215939a89 Streamline documentation 2022-03-16 10:47:56 +00:00
8d341e0714 remove EVAL command 2022-03-15 17:13:15 -06:00
99fa769800 more syncing 2022-03-15 16:15:57 -06:00
2a171cf2a2 sync new and old versions with current LAMMPS 2022-03-15 16:10:54 -06:00
636f00276e sync with current Modify methods for fix lookup 2022-03-15 14:12:23 -06:00
25d8950f94 Merge branch 'develop' into neigh-request-refactor 2022-03-15 11:39:45 -04:00
8e585620c3 enable and apply clang-format 2022-03-14 17:14:40 -04:00
ec97d859b9 use tokenizer class for parsing 2022-03-14 17:14:01 -04:00
1d1dea56d8 whitespace and programming style fixes 2022-03-14 16:52:58 -04:00
43e486973f cosmetic changes. remove debug comments and commented out code. 2022-03-14 14:40:38 -04:00
87429366f8 update plugin developer guide 2022-03-14 09:54:31 -04:00
46564c1ee8 recover compilation on windows 2022-03-12 18:43:53 -05:00
0778c12f04 plug memory leaks by freeing MPI data types 2022-03-12 18:06:01 -05:00
ddb35ee455 use utils::logmesg and fmtlib. remove use of sprintf() to temporary buffers 2022-03-12 18:05:05 -05:00
484b7e6d33 must remove and respecify fix lb/fluid around reset_timestep command 2022-03-12 16:16:15 -05:00
fe9b426c7e cosmetic changes 2022-03-12 16:14:55 -05:00
9931323463 attempt to transparently download the missing data file with curl 2022-03-12 14:03:08 -05:00
293ad3fc03 move lb/fluid pointer initialization to initializer list 2022-03-12 12:03:18 -05:00
4948438265 fix small typesetting issues 2022-03-12 09:53:50 -05:00
a66228b4d2 make sure pointer is null on first use 2022-03-12 09:42:03 -05:00
aca7126cfe use newer APIs to access list of fixes in Modify class 2022-03-12 09:23:36 -05:00
7e2bb9a065 reformat and spellcheck the documentation 2022-03-12 08:43:17 -05:00
0341599390 fixes were removed from package, remove from the documentation as well 2022-03-12 08:31:00 -05:00
335e7c7bbc replace use of iostreams and stringstreams with stdio and fmtlib 2022-03-12 08:25:56 -05:00
4c090c5d8e remove debug comments 2022-03-12 08:24:51 -05:00
84a7596b7c more closely follow LAMMPS programming style conventions 2022-03-12 08:23:40 -05:00
25b4d8ade1 move static constants to its own header that is only pulled in by files that use them. 2022-03-12 08:21:52 -05:00
b27cbbd1a1 Merge branch 'develop' into CDenniston/develop 2022-03-12 07:28:30 -05:00
aaeb9fe933 Merge branch 'dielectric-updates' of github.com:ndtrung81/lammps into collected-small-changes 2022-03-12 07:26:00 -05:00
b1119d81a9 Minor tweaks 2022-03-11 21:25:44 -07:00
014345a512 Updated a citation 2022-03-11 20:55:59 -07:00
51034c00c0 Completed documentation 2022-03-11 20:40:18 -07:00
b9fd86e7ca switchinnerflag working for single-element two types SNAP potential 2022-03-11 17:23:38 -07:00
f691805062 More 2022-03-11 16:41:22 -07:00
5216a543ae More 2022-03-11 15:43:48 -07:00
4d13282120 More 2022-03-11 15:07:18 -07:00
877b764a36 More 2022-03-11 14:38:51 -07:00
8323c4fe45 More progress 2022-03-11 14:14:45 -07:00
a7a66100c6 Updated the doc page of the polarize fixes 2022-03-11 14:13:34 -06:00
3f9cc03fc0 Minor tweaks 2022-03-11 11:39:06 -07:00
9e78818637 Minor tweaks 2022-03-11 11:26:06 -07:00
1a04eabb5e merge in current develop 2022-03-11 10:01:25 -07:00
8ba4e7e897 tweaks to src files, added examples dir 2022-03-11 09:33:34 -07:00
62c59a5339 document LAMMPS_PLUGIN_PATH environment variable 2022-03-11 10:34:04 -05:00
56658e9c2c make automatic plugin loads/unloads mostly silent, count/report number of plugins loaded 2022-03-11 10:31:53 -05:00
01bd3d1da0 add functionality to auto-load plugins 2022-03-11 05:52:26 -05:00
45b1213795 silence warnings from coverity scan 2022-03-11 04:29:01 -05:00
e8a550aa22 Reduce memory use in Kokkos package 2022-03-11 00:07:47 -05:00
9b989b1860 Merge pull request #3164 from akohlmey/collected-small-changes
Collected small changes
2022-03-10 23:42:04 -05:00
3a1921b3ed correct SHAKE bond stats output and avoid division by zero 2022-03-10 23:01:23 -05:00
ca76ff360f augment cmake library search path to include the CUDA stubs library folder
this will help configuring and compiling LAMMPS with CUDA support on
machines where there is no CUDA driver installed
2022-03-10 21:17:58 -05:00
11d3b13e31 Added a lot of boilerplate for inner data, not working yet 2022-03-10 18:40:59 -07:00
ali
7343f6e5b8 writing column names is optional 2022-03-10 15:23:21 -06:00
079f7559ea Merge branch 'develop' of github.com:fujiisoup/lammps into collected-small-changes 2022-03-10 16:01:02 -05:00
fa9683e6d2 Merge remote-tracking branch 'github/develop' into collected-small-changes 2022-03-10 16:00:55 -05:00
adef6bd10c Added first draft of inner switching functions 2022-03-10 13:58:14 -07:00
0828ae66a0 Fix a typo in the doc 2022-03-11 05:48:34 +09:00
0fcf40c48e use MathConst::MY_PI more consistently and benefit from it being a constexpr 2022-03-10 14:14:32 -05:00
8e85481afa use MathConst::MY_PI instead of inferring it from acos(-1). 2022-03-10 14:00:34 -05:00
12b144fd0e change math const from M_ to MY_ using math_const.h 2022-03-10 12:36:41 -05:00
5bf1ab0e2d try moving _USE_MATH_DEFINES to cpp file from header for windows compilation 2022-03-10 11:15:25 -05:00
1e4a6dcb41 fix missing #endif in lb/fluid header 2022-03-10 10:37:08 -05:00
c6fe7ed4f4 add _USE_MATH_DEFINES for windows compilation 2022-03-10 10:18:50 -05:00
0a1fa5e040 lb/fluid code cleanup for whitespace, unused vars, windows cmath 2022-03-10 09:53:44 -05:00
c9007501a2 remove cerr iostream reference from lb/fluid 2022-03-10 08:43:54 -05:00
43319120d0 fix qeq/dynamic and qeq/fire need half neighbor list not full 2022-03-10 06:30:10 -05:00
1bba1ca2ae fix logic bug 2022-03-10 05:44:31 -05:00
61f5bbd633 update logic to avoid stall with neighbor list statistic during final summary 2022-03-10 05:21:53 -05:00
06e7bd8144 follow KOKKOS' advice about CPU binding of threads 2022-03-10 01:18:15 -05:00
abd8a6ee15 remove incorrect comment 2022-03-10 01:17:44 -05:00
10f8a597c7 use proper header for access to Kokkos class. 2022-03-10 01:11:33 -05:00
837b8fb753 bugfix 2022-03-10 01:00:34 -05:00
86b686f159 correct handling of neighflag member variable in KOKKOS styles 2022-03-10 00:52:16 -05:00
799ab965d9 make neighbor list request flags protected and add selected friends 2022-03-09 23:25:26 -05:00
26c0b9cf87 move calculation of number of neighbors to Neighbor class
this allows reusing the code in the ImbalanceNeigh class
2022-03-09 23:18:28 -05:00
3ef02edb48 adapt KOKKOS package styles to use new neighbor list request API 2022-03-09 22:43:38 -05:00
9f44221ee3 update neighborlist requests for new API in KSPACE package 2022-03-09 21:20:18 -05:00
2e2bd37883 automatically enable intel neighbor list request property for intel pair styles 2022-03-09 21:19:19 -05:00
9b26726f51 change to clang-format for LATBOLTZ routines 2022-03-09 20:41:28 -05:00
9bbd1df57b another chunk of neighbor list request updates 2022-03-09 19:49:08 -05:00
c4b23bd7e5 programming style updates use newer/simpler APIs 2022-03-09 19:21:03 -05:00
888db4b0ef update examples to standard lammps conventions 2022-03-09 18:13:45 -05:00
e8547af049 update neighbor list requests and compute style lookups in machine learning packages 2022-03-09 06:49:07 -05:00
3bb7a247ac convert some more files to use the new neighbor list request API 2022-03-08 21:29:33 -05:00
cef5076c9a no need to have a multi-threaded neighbor list in fix peri/neigh
I builds just a single neighbor list during setup.
2022-03-08 18:23:46 -05:00
1db981c784 convert a few more styles to the new neighbor request API 2022-03-08 18:20:28 -05:00
3c3912aff2 add deprecated lb/fluid integrator fixes to fix_deprecated 2022-03-08 17:10:22 -05:00
16449c3d11 fix merge conflicts for new version of lb/fluid and minor updates from develop branch on virtual functions and removed fix styles 2022-03-08 16:38:32 -05:00
1249c713f0 Add transpose to neigh list 2022-03-08 14:28:06 -07:00
55f8bf9c51 adapt some more styles to use the new neighbor list request API 2022-03-08 15:27:37 -05:00
fd73d1376a Merge branch 'develop' into neigh-request-refactor 2022-03-08 13:04:32 -05:00
dfbeedfded convert more neighbor list requests to the new API 2022-03-08 12:39:05 -05:00
deb694745b update neighbor list requests with default settings 2022-03-08 06:34:27 -05:00
028c8b5d27 add default arguments for requests with default flags 2022-03-08 06:33:27 -05:00
1296d6d938 update neighbor list request developer notes 2022-03-08 06:32:48 -05:00
3b0a6ac840 add support for requesting SSA neighbor lists and update a few more styles 2022-03-08 06:17:13 -05:00
decdcd0b55 Revert "programming style updates"
This reverts commit 5242409ebd.
2022-03-08 06:15:11 -05:00
5242409ebd programming style updates 2022-03-08 05:17:18 -05:00
795f24c3ff honor NEWTON_ON/OFF request flags 2022-03-08 05:17:18 -05:00
369b8365bf update QEQ, ASPHERE, and KIM packages to use new neighbor list request API 2022-03-08 05:16:55 -05:00
1aa8b64283 convert GPU package styles to use new neighbor list request API 2022-03-08 04:37:46 -05:00
9742817ba3 Dihedrals analytical results of compute_born_matrix are still wrong but, in some low deformations cases, they are ok. This is a progress... 2022-03-08 10:16:30 +01:00
374917fb6f tweak platform tests for CPU time to avoid bogus failures on windows 2022-03-07 21:42:02 -05:00
c6b4c418e7 Merge pull request #3161 from athomps/gcmc-relax-mol-mpi-error
Relaxed the error check on molecule moves in parallel. Molecule excha…
2022-03-07 20:24:36 -05:00
02f6b4c6e8 whitespace 2022-03-07 19:36:07 -05:00
87613bb106 rename doc file to be more generic and match the examples folder 2022-03-07 15:34:00 -05:00
07059c1362 Merge branch 'develop' into collected-small-changes 2022-03-07 15:29:47 -05:00
b0dae52e2d Merge pull request #3165 from olavgal/compute_pressure_cartesian_and_spherical
Computes for local pressure tensor in Cartesian and spherical coordinates
2022-03-07 15:05:51 -05:00
6edfb49527 update .gitignore for recent additions 2022-03-07 14:37:01 -05:00
bfb9638e6c correct issue introduced by global pattern replacement 2022-03-07 14:19:29 -05:00
5206d81742 make class name consistent with file name and add backward compatibility 2022-03-07 14:09:43 -05:00
1f3a3bb80b missing updates 2022-03-07 13:51:16 -05:00
bbcffd4b5a Merge pull request #3163 from akohlmey/test-compute
Add unit tests for computes
2022-03-07 13:49:07 -05:00
8d5a59c0fa Switched all command and class names from pressure to stress 2022-03-07 11:27:37 -07:00
6c4bc8258c Merge pull request #3162 from phankl/mesocnt_memory
Optimized memory usage for pair style mesocnt
2022-03-07 12:03:58 -05:00
c2b0347b30 Added notes on similarity between these computes 2022-03-07 09:09:29 -07:00
8f10953e92 Small comma error in citation 2022-03-07 10:27:23 +01:00
c8b7fc2144 Added cross-reference to compute pressure/cartesian 2022-03-06 20:19:38 -07:00
6da4db4d7e Merge branch 'compute_pressure_cartesian_and_spherical' of github.com:olavgal/lammps into compute_pressure_cartesian_and_spherical 2022-03-06 20:11:20 -07:00
e857b923bc Added representative output to log files 2022-03-06 20:11:10 -07:00
793db836d9 update .gitignore 2022-03-06 19:55:11 -05:00
a2bf40df0a correct mini-ToC links and add missing entry 2022-03-06 11:45:26 -05:00
aaa51d6fc6 optimizations and avoiding floating point exceptions 2022-03-06 11:04:51 -05:00
2f5f36cff8 move examples to a more appropriate folder. add logfiles 2022-03-06 11:03:57 -05:00
44e3874541 Changed citations 2022-03-06 12:50:25 +01:00
fac3ce4507 example files for pressure/cartesian/cylinder/spherical 2022-03-06 12:43:37 +01:00
005f76a9e6 clang-format 2022-03-06 05:24:29 -05:00
72cbffee7d fix bug looking up neighbor lists 2022-03-06 05:24:15 -05:00
4781a4c8c6 style update 2022-03-06 04:49:08 -05:00
440e01d243 no longer needed. done by Neighbor class directly. 2022-03-06 04:48:54 -05:00
e9bcde4b58 more openmp neighbor list function to Neighbor class 2022-03-06 04:48:37 -05:00
cc618264a0 allow only one accelerator type enabled for neighbor lists 2022-03-06 04:47:22 -05:00
3f80894857 Merge branch 'develop' into neigh-request-refactor 2022-03-06 04:23:52 -05:00
54e667e491 convert more styles to use new neighbor list request API, apply clang-format 2022-03-05 21:44:45 -05:00
ffb367663d add more accessor functions 2022-03-05 21:08:25 -05:00
f1d695299e simplify checking for intel neighbor list requests 2022-03-05 20:31:56 -05:00
8fe78e5fc4 enable and apply clang-format 2022-03-05 20:21:32 -05:00
de4b9a1d20 use new neighbor list request API 2022-03-05 20:20:55 -05:00
21fc072396 enable and apply clang-format 2022-03-05 20:19:24 -05:00
5dbad2354a use new neighbor list request API 2022-03-05 20:18:40 -05:00
c5c3c335c9 enable clang-format 2022-03-05 20:16:10 -05:00
875560b827 use new neighbor list request API 2022-03-05 20:15:48 -05:00
67a7764086 Initalizing nullptrs, fixing labels, small errors in doc, and sign errors in rot sliding damp 2022-03-05 17:07:02 -07:00
095c9ab9d1 whitespace 2022-03-05 17:08:49 -05:00
83f08ff8ef small update and correct broken link 2022-03-05 17:07:00 -05:00
8945050423 cosmetic 2022-03-05 16:47:31 -05:00
be4f5288d3 modernize potential file reader in pair style mesocnt 2022-03-05 16:47:06 -05:00
f329711384 Merge branch 'develop' into mesocnt_memory 2022-03-05 15:06:23 -05:00
a9eae51d27 print name of non-existent compute/fix/variable in error message 2022-03-05 14:31:24 -05:00
ece25a95ad stability improvements: recompute bin width for perfect match, don't test for floating point identity 2022-03-05 13:46:56 -05:00
15fa6049f2 update comments 2022-03-05 12:33:54 -05:00
43ac557a9b remove unused headers and dead code. reformat a few small items 2022-03-05 12:31:36 -05:00
c24e46c547 don't apply modulus to doubles but integers 2022-03-05 12:30:40 -05:00
9a98817567 reformat doc page and address spelling issues 2022-03-05 11:35:37 -05:00
99d29ea86a Added kinetic contribution to pressure/cylinder and clang-format on all 2022-03-05 16:30:47 +01:00
089e46a540 Fixed some gramma 2022-03-05 16:29:42 +01:00
4e125ccfc6 Combined pressure profile documentation into one page 2022-03-05 16:22:11 +01:00
f9c02b9735 clarify. improve typesetting 2022-03-05 10:18:00 -05:00
87c96aeeb1 add tests for more compute styles 2022-03-05 10:07:54 -05:00
b3bef9cd34 Merged 2022-03-05 10:30:38 +01:00
9ea0c581ac Adding kinetic contribution to prssure/cylinder 2022-03-05 10:25:28 +01:00
1ab85f5941 update citation references 2022-03-04 18:16:02 -05:00
8709e26923 Merge pull request #3166 from stanmoore1/reax_tabulate
Make it easier to enable tabulation in ReaxFF
2022-03-04 17:37:26 -05:00
c9563d0814 Fixed style changes 2022-03-04 22:30:25 +01:00
f8089bd007 fix cut-n-paste error 2022-03-04 16:08:14 -05:00
789571c4b4 Merge pull request #3158 from arghdos/split_buildlists_half_rebased
Split buildlists half kernel into "preview" and "finalize" kernels
2022-03-04 16:06:05 -05:00
5c8f506edf add unit test input 2022-03-04 16:04:04 -05:00
577eac201b add sanity check 2022-03-04 16:03:50 -05:00
401180699d Update docs 2022-03-04 13:10:25 -07:00
1e530dbd19 Changed ref name to avoid duplicate 2022-03-04 20:55:29 +01:00
23580d8ca5 Integrated pressure/cartesian and pressure/spherical 2022-03-04 20:54:33 +01:00
cdeaa83f6d Make it easier to enable tabulation in ReaxFF 2022-03-04 12:34:51 -07:00
7d8c217657 Anothr tweak of movemode logic 2022-03-04 09:23:51 -07:00
06e9c096ac Remove unused code 2022-03-04 09:13:43 -07:00
98d2dca83f Trailing whitespace 2022-03-04 16:58:31 +01:00
6d48ba1577 Trailing whitespace 2022-03-04 16:57:59 +01:00
a7112f173a Trailing whitespace 2022-03-04 16:56:39 +01:00
9f0607876a LAMMPS Homepage 2022-03-04 16:49:42 +01:00
47de1234c0 LAMMPS homepage and ø->{\o} in reference 2022-03-04 16:49:03 +01:00
2687228f09 Fixed LAMMPS homepage and changed ø to {\o} it reference 2022-03-04 16:47:16 +01:00
a396ed2b36 Fixed LAMMPS homepage 2022-03-04 16:45:31 +01:00
939171094b Whitespace 2022-03-04 08:40:22 -07:00
df9a772020 More EVFLAG cleanup 2022-03-04 08:36:27 -07:00
760d85b9c4 Two computes that computes the local mechanical pressure tensor in Cartesian and spherical coordinates 2022-03-04 16:04:18 +01:00
7288828439 defined np1 = ntypes + 1 to shorten allocation commands 2022-03-04 13:48:44 +00:00
8b9be5bf0a applied clang-format 2022-03-04 12:47:36 +00:00
98f83f9b3a fix typos and make output section more readable 2022-03-04 06:25:16 -05:00
b94995cf5b add some TALLY package compute. simplify some code with convenience functions 2022-03-04 06:24:37 -05:00
a70e895e06 updated documentation 2022-03-04 10:37:45 +00:00
550d523c9e add gyration 2022-03-04 04:41:43 -05:00
73e38014f2 Added explanation of parallel molecule support 2022-03-03 18:21:30 -07:00
91f6805821 Tweaked logic for MC move flags and addedreference output for H2O and CO2 on 4 procs 2022-03-03 18:12:43 -07:00
eaa6fb17af Relaxed the error check on molecule moves in parallel. Molecule exchange is okay. 2022-03-03 16:47:33 -07:00
f97a2d341c Clean up evflags 2022-03-03 16:44:53 -07:00
5888ba0514 QEq does not require ghosts in the neighbor list 2022-03-03 16:16:13 -07:00
3bfb03bcb8 test compute com and compute dipole 2022-03-03 17:27:11 -05:00
e4d920d582 add minimal test for testing compute styles that compute global scalars 2022-03-03 17:11:01 -05:00
e5d2555cf2 small tweaks 2022-03-03 10:01:16 -07:00
569147bf11 Revert change of default value for list/blocking 2022-03-03 09:30:16 -07:00
0fbacd4c5d Add missing optimization to CPU version 2022-03-03 09:02:47 -07:00
9083ff867e whitespace 2022-03-03 08:48:54 -07:00
ee2b9f28cb Switch to vector parallelism for half list in QEq 2022-03-03 08:09:25 -07:00
b6b7846c50 Optimization to reduce atomics on CPU 2022-03-03 07:46:35 -07:00
beee3126e0 Recover CPU performance by bifurcating code 2022-03-03 07:21:40 -07:00
22d43d8e05 Change default for list/blocking option 2022-03-03 07:20:53 -07:00
9f8362399d convert granular pair style and augment docs accordingly 2022-03-03 06:58:54 -05:00
04dbf307d0 remove obsolete TODO item 2022-03-03 06:43:52 -05:00
7120e6354d add a mini-TOC for faster access to contents as the page is getting longer 2022-03-03 06:43:20 -05:00
13bf72e61c describe new neighbor list request APIs 2022-03-03 06:42:42 -05:00
b4da01c23a reduce compiler warnings and need for private variables in OpenMP pragmas 2022-03-02 22:19:28 -05:00
a0996da644 apply new APIs to a few representative cases 2022-03-02 21:31:35 -05:00
d4272815a3 add new APIs for creating and manipulating neighbor list requests
also add a few new (delegating) constructors to simplify code
2022-03-02 21:30:16 -05:00
f7514ce358 make friends for access to instance_me member 2022-03-02 19:06:08 -05:00
0a2a252f08 cleanup 2022-03-02 10:42:41 -07:00
30517fad68 Remove unnecessary atomics/duplication 2022-03-02 10:34:49 -07:00
bac85c4c83 cleanup 2022-03-02 10:04:35 -07:00
083d166885 More cleanup 2022-03-02 09:46:25 -07:00
adefb287c5 whitespace 2022-03-02 09:29:07 -07:00
4ad27034f2 Small tweaks, cleanup 2022-03-02 09:04:13 -07:00
7fb684b802 for 2d systems, rigid bodies always have a moment of inertia and no DOFs need to be subtracted 2022-03-01 21:18:51 -05:00
2a0e66164e enable and apply clang-format 2022-03-01 21:06:19 -05:00
092720b69a correctly compute bond count for shake statistics 2022-03-01 20:52:07 -05:00
e79e4c0134 Seperate buildlists half into 'cheap' blocking-based preprocessor, and 'dense' finalizer
Change-Id: Ic205c1e6f3578c033ec4d8c3c45070fd5b3d7a18
2022-03-01 14:51:40 -05:00
4c57b8f1db Remove duplicate etypes setting 2022-03-01 19:44:17 +00:00
7cca49b14b hide pow behind conditional
Change-Id: I8bb3f7a069207dd0e5a5b980d2a7e3e1a7e22ccb
2022-03-01 12:52:55 -05:00
0edda42eee Bugfix macro inversion 2022-03-01 17:58:56 +01:00
09e544cb8c Changed label of compute_angles/dihedrals for better reading. compute_dihedrals is not working ATM. Also implemented some changes from AThompson. 2022-03-01 16:58:14 +01:00
cd9d3ae5d3 Merge branch 'Elastic_stress' of github.com:Bibobu/lammps into Elastic_stress 2022-03-01 11:04:39 +01:00
798975b809 Merge pull request #3155 from akohlmey/collected-small-changes
Collected small changes
2022-02-28 15:18:27 -05:00
9f315fc2e2 small rewording 2022-02-28 12:17:20 -05:00
763f8f432f Merge pull request #3156 from stanmoore1/kk_verlet_uvm
Fix rare bug in Kokkos with CUDA UVM
2022-02-28 12:16:28 -05:00
bd4d1b52f9 Merge branch 'develop' into collected-small-changes 2022-02-27 19:33:04 -05:00
b76a7764fd use new API to get access to intel fix 2022-02-27 15:19:34 -05:00
0ddefb3754 trigger building an intel style neighbor list so that buffers are allocated 2022-02-27 14:51:17 -05:00
bc9e45ca5a use consistent names, avoid memory leaks, fix off-by-1 error in fourier dihedral 2022-02-27 12:24:37 -05:00
7824e43339 Change Update::reset_timestep() API so that rerun can bypass the time depended fix check 2022-02-27 11:35:34 -05:00
e287ef6ff9 Merge pull request #3154 from akohlmey/use-setuptools
Refactor python/install.py and 'make install-python' to use setuptools and build a binary wheel
2022-02-27 11:32:05 -05:00
750e0435a8 add link to code design page and update/clarify a couple of things 2022-02-27 11:29:20 -05:00
94f97be6e9 link Modify overview paragraph to Code design page 2022-02-27 11:29:19 -05:00
06f4ae0f1f ignore wheel files 2022-02-27 07:03:02 -05:00
0be14d4ed8 move basename operation from setup.py to install.py 2022-02-27 07:02:39 -05:00
7c11d1675d fix bug with make install 2022-02-27 06:33:22 -05:00
7fd41bea6a add some comments to the refactored scripts to explain technical details 2022-02-25 20:10:13 -05:00
27c1ed86fa Added some self-citations for key contributors 2022-02-25 17:03:45 -07:00
014ad94479 Fix rare bug in Kokkos with CUDA UVM 2022-02-25 16:45:58 -07:00
96fbbc2b1b Merge branch 'log-pizza-updates' of github.com:aliehlen/lammps into log-pizza-updates 2022-02-25 18:35:08 -05:00
3e01fa49dd emulate using '-i' command line flag 2022-02-25 18:34:45 -05:00
d26f953a0a Made the example match the benchmark of Kluge et al. 2022-02-25 15:25:47 -07:00
11ba2adbe7 add support for plumed 2.6.6, 2.7.4, and 2.8.0 (default 2.7.4) 2022-02-25 16:34:37 -05:00
1dbff92eeb spelling 2022-02-25 16:23:48 -05:00
578a7cc54c document and handle the case of a previous distutils installation.
in this case 'make install-python' should not continue but instead
it now aborts and asks the user to do a manual uninstall
2022-02-25 16:10:46 -05:00
bb3a5b4057 update docs 2022-02-25 14:13:03 -05:00
511678017e update inline docs and add -n/--noinstall flag to skipp installation 2022-02-25 13:44:47 -05:00
033045a534 need to check if virtualenv creation failed and exit with a suitable error message 2022-02-25 13:20:34 -05:00
5ba6eb474c try to appease coverity scan 2022-02-25 12:20:08 -05:00
f0260c3395 restore exception handling with enforce --user install for older pip versions that don't do that automatically 2022-02-25 09:33:26 -05:00
257805d325 make prompt name consistent 2022-02-25 09:32:41 -05:00
6ab247e7f8 no need to create a virtualenv inside a temporal virtualenv 2022-02-25 09:12:01 -05:00
59e2b819e0 need python3-venv package for updated make install-python 2022-02-25 08:44:15 -05:00
ff4cd2a5e9 python2.7 compatibility 2022-02-25 08:43:51 -05:00
4630a5ffb8 must create virtualenv with same python we selected to run install.py 2022-02-25 08:43:38 -05:00
6e74d0a09a LAMMPS GridComm patch 2022-02-25 08:13:16 +00:00
e2092a5788 first attempt at supporting multi-config builders 2022-02-25 00:52:13 -05:00
4b7731e831 update install.py script to build a wheel and install that 2022-02-25 00:24:16 -05:00
a14a616dc2 make cythonize detection compatible with /bin/dash on ubuntu 2022-02-24 21:26:20 -05:00
0680cdcc3c spelling 2022-02-24 20:43:04 -05:00
44f884316b when updating ML-IAP due to adding/removing PYTHON we need to delete and re-add cythonize support 2022-02-24 20:42:26 -05:00
891d3c8296 update setup.py to be compatible with building "pure" and "binary" wheels 2022-02-24 17:04:16 -05:00
4dc5b93c6c spelling 2022-02-23 16:37:28 -05:00
37ce6cf5f7 Merge branch 'develop' into log-pizza-updates 2022-02-23 16:37:08 -05:00
2d7375798f more python 3 compatibility 2022-02-23 13:27:33 -05:00
18ced360d3 more python 3 compatibility 2022-02-23 12:30:03 -05:00
5594868ef2 retain compatibility with python2 2022-02-23 10:18:02 -05:00
d848e50d0d Merge pull request #3146 from lammps/programmer-comm-doc
New developer page for comm functions
2022-02-22 20:13:32 -05:00
b4e42f68b1 Merge pull request #3148 from akohlmey/rename_comm_forw_rev
Rename forward and reverse communication commands for data in classes
2022-02-22 19:19:56 -05:00
9a1c994a8e Merge branch 'develop' into rename_comm_forw_rev
# Conflicts:
#	src/KOKKOS/comm_kokkos.cpp
#	src/KOKKOS/fix_qeq_reaxff_kokkos.cpp
2022-02-22 16:45:06 -05:00
04ec741f16 Merge pull request #3142 from charlessievers/chem_snap
SNAP bik flag
2022-02-22 16:29:39 -05:00
07d456c8b2 Merge pull request #3147 from stanmoore1/amd_hip_opt
Improvements from AMD to KOKKOS Package
2022-02-22 16:06:28 -05:00
95c414e32e Merge pull request #3139 from akohlmey/collected-small-changes
Collected small changes
2022-02-22 15:30:31 -05:00
ali
035a16d6d8 remove interactive mode for log plotting
this doesn't work in linux
2022-02-22 10:51:58 -06:00
ali
7d8f7855d5 add writing column names in logfile 2022-02-22 10:51:58 -06:00
ali
5c297fa4d1 update log pizza.py files to python 3 2022-02-22 10:51:58 -06:00
7ac1bd1180 final tweaks 2022-02-22 09:20:19 -07:00
687a09b8a1 fix errors in pair style harmonic/cut docs 2022-02-22 04:27:12 -05:00
15acfde91e more updates and corrections 2022-02-21 22:26:01 -05:00
b91788bf71 no need to use default argument 2022-02-21 22:12:26 -05:00
66d7f55a20 apply clang-format 2022-02-21 22:12:13 -05:00
36ecfded81 update according to PR #3148 2022-02-21 21:57:12 -05:00
313d850dd2 Created a Born matrix example for silicon 2022-02-21 19:38:28 -07:00
a3524fc7a1 update atc lib 2022-02-21 21:33:27 -05:00
de4a9f268e rename reverse communication calls 2022-02-21 21:18:28 -05:00
4c0192cae1 rename forward communication functions for pair, fix, compute, and dump 2022-02-21 21:15:10 -05:00
0988d957f5 Update preset configurations to include release and debug versions of MSVC and Clang only. 2022-02-21 19:09:59 -05:00
7ea26161f7 Merge pull request #3145 from lammps/pair-style-doc-page
clarify how new pair style command works
2022-02-21 18:22:47 -05:00
ba2a2ddd9f integrate into manual. fix multiple formal issues. add a few select details. 2022-02-21 18:09:31 -05:00
4d9409dda9 Whitespace 2022-02-21 15:45:03 -07:00
70c149805c Fix bugs in Kokkos tersoff 2022-02-21 15:29:01 -07:00
0d68aa0c46 rework documentation section on compiling on windows 2022-02-21 17:04:31 -05:00
d1decfe15a More cleanup 2022-02-21 14:31:50 -07:00
d6664a8e9e tweak 2022-02-21 14:21:35 -07:00
afbcf5e694 Remove early exit from blocking BuildLists 2022-02-21 14:00:31 -07:00
c2cec53701 Merge branch 'develop' of github.com:lammps/lammps into amd_hip_opt 2022-02-21 13:23:51 -07:00
4a2dc4f14a Cleanup 2022-02-21 13:11:37 -07:00
e10ebf5236 Fix typos 2022-02-21 12:56:58 -07:00
1268c8c6ad Update doc page and author contributions 2022-02-21 12:44:53 -07:00
348309582a new developer page for comm functions 2022-02-21 12:43:35 -07:00
78775a82f4 Merge branch 'develop' into collected-small-changes 2022-02-21 14:26:50 -05:00
850f1a690c Tweak default 2022-02-21 11:45:07 -07:00
6d790e41fa Added bik lastcol behavior to documentation 2022-02-21 10:19:37 -08:00
c725550fff Added in explicit reference column behaviour for bik rows 2022-02-21 10:08:58 -08:00
2a94d7a9a8 Remove HIP_OPT defines in pair_reaxff_kokkos 2022-02-21 11:07:35 -07:00
ed575ee664 clarify how new pair style command works 2022-02-21 10:21:28 -07:00
a9c7d47072 Found parenthesis error in compute_angles(). Now perfect fit with numdiff. 2022-02-21 10:59:37 +01:00
1dae118419 Merged A. Thompson symmetric sheared. Added a bit more explicit comment on virial_addon computation. 2022-02-21 09:40:22 +01:00
67ffef094d Switch shear strain fields to symmetric 2022-02-20 13:51:14 -07:00
f205567fa6 add born/matrix support to hybrid pair styles 2022-02-20 07:15:11 -05:00
e4027ba98a update example input files 2022-02-20 06:35:35 -05:00
c1dfd944af turn some warnings into errors and produce better error messages 2022-02-20 06:07:39 -05:00
60a6747c0e must propagate and check born_matrix_enable flag 2022-02-20 05:51:51 -05:00
bd48c49c2b enable and apply clang-format 2022-02-20 05:51:16 -05:00
7d79a7822b Merge branch 'develop' into Elastic_stress 2022-02-20 05:28:42 -05:00
a3c6d19599 Merged comments modification in EXTRA-COMPUTE/compute_born_matrix from A. Thompson and G. Clavier. 2022-02-20 11:22:20 +01:00
6ee14bfb97 correct formatting of references 2022-02-20 04:26:18 -05:00
c04f4a913f Thomas-Fermi 2022-02-20 07:47:28 +00:00
bc8d1e0f84 Tweaked one comment 2022-02-19 20:55:37 -07:00
407df3127b Cleaned up source files 2022-02-19 20:21:02 -07:00
4ca5441cf1 Updated documentation 2022-02-19 19:25:02 -07:00
61377f41ad Replaced Si.sw with a simlink to potentials dir 2022-02-19 18:01:37 -07:00
f1f2cebf98 Rearranged the directory tree for ELASTIC_T and BORN_MATRIX 2022-02-19 17:59:27 -07:00
c8ae3c45ac Removed cij_nvt directory and updated RADME 2022-02-19 17:09:39 -07:00
335fa2e742 Addd born/matrix numdiff to example 2022-02-19 17:07:21 -07:00
63a4210391 Fix bug in history 2022-02-19 08:33:47 -07:00
6acf3c8d2a Merge pull request #3138 from wmbrownIntel/intel_skip_fix
Bug fix for Intel package skip lists with multiple runs.
2022-02-19 05:55:11 -05:00
3ddcd3308f Add documentation for bikflag 2022-02-19 00:46:56 -08:00
d619477195 Merge remote-tracking branch 'upstream/develop' into chem_snap 2022-02-19 00:23:30 -08:00
36edecd1e7 Added in ability to keep bispectrum descriptors per atom instead of summed. (Useful for non linear models) 2022-02-19 00:20:43 -08:00
7e876ada13 Merge branch 'develop' into collected-small-changes 2022-02-18 21:49:13 -05:00
86cb37f7ad Merge pull request #3141 from lammps/developer-doc-tweaks
tweaks to 2 sub-sections of Developer manual
2022-02-18 21:48:29 -05:00
d88ffcf880 correct file name 2022-02-18 21:24:02 -05:00
bfea3c4589 rename .rst file to match headline 2022-02-18 21:20:35 -05:00
4dad865aea small tweaks and spelling fixes 2022-02-18 21:19:27 -05:00
49c594be10 add factory function example 2022-02-18 21:19:06 -05:00
78f7e96a3f grammar tweaks to 2 sub-sections of Developer manual 2022-02-18 16:45:06 -07:00
39f8ccdb42 Fixing an overlooked merge conflict 2022-02-18 15:33:26 -07:00
642b1e25f6 Updating to develop 2022-02-18 13:58:38 -07:00
0ecb9addb2 Fix MPI issues 2022-02-18 10:58:03 -07:00
7087e78138 Cleanup 2022-02-18 10:23:34 -07:00
5a95b35fb3 Adding bondstyle restart and fixing a few labels 2022-02-18 10:22:08 -07:00
adbbad0c2d silence compiler warnings 2022-02-18 12:13:26 -05:00
c31d79c3a4 add missing override keywords 2022-02-18 12:06:06 -05:00
43f5de4dbf Give the compiler some help 2022-02-18 09:57:51 -07:00
8fa297e420 update comments about building LAMMPS with visual studio 2022-02-18 11:38:35 -05:00
68dc778d03 update the note based on the suggestion by @athomps 2022-02-18 11:38:05 -05:00
b9f5bb60e9 Fix layout 2022-02-18 08:08:48 -07:00
4e03589cee use symbolic constants and fix out of bound accesses 2022-02-18 05:07:18 -05:00
9151a2e820 address unititialized data warnings from coverity scan 2022-02-18 04:46:30 -05:00
2aff105124 nicer shake stats output 2022-02-18 04:24:27 -05:00
537e3f2539 silence compiler warnings 2022-02-17 23:13:13 -05:00
d14035eb6b Fix bug 2022-02-17 20:59:36 -07:00
da3c3723bd add code to print warning if qeq fix is appled to a non-neutral group. document. 2022-02-17 22:51:49 -05:00
0cb45ebd6b Kokkos QEq refactor 2022-02-17 16:25:02 -07:00
01bbb28418 Merge pull request #3135 from akohlmey/next_patch_release
Step version strings for the next patch release
2022-02-17 15:05:43 -05:00
7fe194e59e Merge pull request #3136 from rbberger/collected-small-changes
Collected small changes
2022-02-17 13:20:51 -05:00
f3e14e7b00 Mark MolPairStyle:soft unstable 2022-02-17 12:58:30 -05:00
7b948e7bb8 Bug fix for Intel package skip lists with multiple runs. 2022-02-17 09:37:01 -08:00
45b92e519d Merge pull request #3125 from oywg11/ilp-for-tmds
Anisotropic Interlayer potential for TMDs and Metal Surfaces
2022-02-17 11:42:15 -05:00
d95f0b3cd5 Adjust epsilon in force-style test 2022-02-16 17:43:16 -05:00
793d76c546 Adjust epsilon in force-style tests 2022-02-16 17:40:34 -05:00
12eeaee8a4 Correct bug in PairHybridScaled::single 2022-02-16 13:48:10 -05:00
8b627f92f0 address spelling and achor issues, and integrate into style overview tables 2022-02-16 08:10:29 -05:00
78b123fa4d apply new convention for virtual functions and disable single() functions (for now) 2022-02-16 06:50:26 -05:00
47bb5f5ccd use a local std::map with initializer to have variant specific strings 2022-02-16 06:36:17 -05:00
e541f006eb replace copies of files with symbolic links 2022-02-16 06:34:31 -05:00
08968cbdbf apply clang-format 2022-02-16 06:14:19 -05:00
32cde04000 Merge branch 'develop' into ilp-for-tmds 2022-02-16 06:04:34 -05:00
6d2f4343d9 Merge pull request #3133 from stanmoore1/kk_error
Add error if using multiple threads with Kokkos Serial backend
2022-02-15 22:25:04 -05:00
a7939b582a step version strings for the next patch release 2022-02-15 22:10:06 -05:00
2951eb32a4 Merge pull request #3134 from rbberger/collected-small-changes
Collected small changes
2022-02-15 22:05:48 -05:00
55703f9027 update class instantiation unit test for kokkos to adapt to thread availability 2022-02-15 21:54:21 -05:00
d4bbb31270 Improve error check 2022-02-15 16:04:23 -07:00
ae72356961 Removed unnecessary declarations in compute_born_matrix numdiff part. Commented virial_addon method. 2022-02-15 23:26:40 +01:00
f53fbf09a6 Fix memory leak in FixBondReact 2022-02-15 15:51:48 -05:00
f3c055e637 Undo change that forces BUILD_SHARED_LIBS=off 2022-02-15 14:53:18 -05:00
d9e06e326a Merge branch 'develop' of github.com:lammps/lammps into kk_error 2022-02-15 12:11:52 -07:00
3b359a0d81 Merge branch 'develop' of https://github.com/lammps/lammps into amd_hip_opt 2022-02-15 12:08:03 -07:00
c2d59d5d5e Add error if using multiple threads with Kokkos Serial backend 2022-02-15 11:52:59 -07:00
2f281b3184 Merge branch 'develop' of github.com:lammps/lammps into Elastic_stress 2022-02-15 16:19:03 +01:00
e3222a4bd0 Merge pull request #3126 from Bibobu/EAM_alloy_python_script
Added Python version of Zhou04_create_v2.f in eam_database
2022-02-14 19:48:51 -05:00
618b3ec94f Merge pull request #3131 from akohlmey/lammps-cxx-style
More general LAMMPS code design info for the Programmer guide section of the manual
2022-02-14 18:13:32 -05:00
9a200c9b79 small tweaks 2022-02-14 18:07:29 -05:00
c46dd3675a add Cr parameters to python database file 2022-02-14 18:06:48 -05:00
b0c0251154 delete unwanted files 2022-02-14 18:06:24 -05:00
c65dbd338b change create_eam.py so it can be called as a function from another script 2022-02-14 17:44:33 -05:00
702a2dd3f6 Merge pull request #3130 from akohlmey/iwyu-update
Update list of include statements based on the IWYU utility
2022-02-14 17:25:32 -05:00
5f47ff770c Merge pull request #3127 from akohlmey/gpu-opencl-updates
Update compiling OpenCL loader lib
2022-02-14 16:10:53 -05:00
baf443766a fix a few typos or mistyped words and explain some details better 2022-02-14 16:09:52 -05:00
f84790ba62 add a more specific example to explain how values are rejected and how atoi() fails 2022-02-14 15:52:33 -05:00
8431d72d75 Added a test directory to tools/eam_database 2022-02-14 21:29:51 +01:00
5366621947 Merge pull request #3129 from ndtrung81/sw-hybrid-gpu
Fixed a bug with sw/gpu neigh no when used with pair hybrid for systems with multiple atom types
2022-02-14 14:21:52 -05:00
f4ce0f0b1c Merge pull request #3101 from rbberger/python_use_setuptools
Use setuptools instead of distutils in setup.py
2022-02-14 13:47:46 -05:00
37cd4ba2ea spelling 2022-02-14 11:55:09 -05:00
1a436c5aa9 fix some broken links 2022-02-14 11:55:04 -05:00
fbf95c2cbc add notes about file parsing 2022-02-14 11:54:50 -05:00
1a6b627fa0 add section about memory allocations 2022-02-14 11:54:37 -05:00
12f746046f finalize {fmt} lib info 2022-02-14 08:45:55 -05:00
374a172246 Changed "exclude" keyword to "overlap"
+ added new error description to header file
+ minor fix in the doc file
2022-02-14 12:46:44 +01:00
3bc91386a0 apply include statement updates suggested by running IWYU 2022-02-13 19:39:15 -05:00
1307371942 update/correct iwyu additional mappings 2022-02-13 18:20:12 -05:00
b42aebc197 silence compiler warnings 2022-02-13 18:19:50 -05:00
83beffbb9f whitespace 2022-02-13 17:08:18 -05:00
810717bfe5 discuss stdio vs iostreams and fmtlib 2022-02-13 16:01:27 -05:00
1ab5b9d7fd re-sort list of false poisitives alphabetically with "sort" 2022-02-13 16:01:26 -05:00
1c7e1faeff add sections on inheritance, compositing, polymorphism 2022-02-13 16:01:14 -05:00
6887a16fa1 start add general code design doc. 2022-02-13 16:00:51 -05:00
193dea6327 Updated the comment to be precise on the case 2022-02-13 14:51:00 -06:00
159f107abd Corrected the added comment 2022-02-13 11:16:01 -06:00
bae4e45978 Added a comment to the added check while looping over the neighbors of ghost atoms 2022-02-13 09:17:05 -06:00
9d518ee1e2 must ensure that BUILD_SHARED_LIBS retains its original value 2022-02-13 10:00:19 -05:00
55a500cf8a Fixed bugs with in the kernel sw_three_end kernel 2022-02-13 00:42:26 -06:00
4eedfeb774 detect if LAMMPS library initialization failed and raise an exception 2022-02-12 22:43:18 -05:00
78d149f118 update to download improved loader sources that make installing optional 2022-02-12 13:21:10 -05:00
d85788305d update manual 2022-02-12 10:37:09 -05:00
4343e8194c update README file 2022-02-12 10:20:49 -05:00
096ea21dd9 correct potential file output header (must have 3 comment lines) 2022-02-12 10:14:09 -05:00
8808b11d26 must write out 3 lines of comment in fortran code. sync output style with python 2022-02-12 10:04:24 -05:00
2fdadcfeb6 include UNITS: metadata tag 2022-02-12 10:01:20 -05:00
0113346e54 apply some pylint recommendations 2022-02-12 10:01:01 -05:00
3cca41b72e print help without arguments. clarify help message and argument names text 2022-02-12 09:38:05 -05:00
69d3b1ebf3 output files are now named .eam.alloy 2022-02-12 09:37:23 -05:00
0f5fbf1c42 update citation info format 2022-02-12 09:36:53 -05:00
06d4bb3faf set date dynamically 2022-02-12 09:33:37 -05:00
e9b11e3673 Added Python version of Zhou04_create_v2.f: create_eam.py and eamDatabase.py in tools/eam_database 2022-02-12 12:42:54 +01:00
563f98b898 Some changes in examples directory, nothing important for now 2022-02-12 12:38:58 +01:00
a77680ac7b Merge branch 'develop' into python_use_setuptools
# Conflicts:
#	cmake/CMakeLists.txt
2022-02-12 00:37:03 -05:00
99c1b935b5 convert OpenCL loader build from ExternalProject_add to ExternalCMakeProject 2022-02-11 23:49:08 -05:00
eb2fe7d982 correct inconsistent prototypes 2022-02-11 23:37:40 -05:00
75dc7125e6 Update doc of pair sw/mod 2022-02-12 06:12:12 +02:00
e5dec93a1e Update doc of pair ilp/graphene/hbn 2022-02-12 06:09:29 +02:00
922b240678 Interlayer Potential for TMDs and Metal Surfaces 2022-02-12 06:05:11 +02:00
a5fe8b0581 update OpenCL loader to latest OpenCL spec sources 2022-02-11 22:01:04 -05:00
a17bdf5652 silence compiler warnings and avoid infinite recursion in aspherical pair styles 2022-02-11 21:06:16 -05:00
81587527fe Merge pull request #3120 from rbberger/collected_small_changes
Collected small changes
2022-02-11 20:26:10 -05:00
de08307aba Merge pull request #3124 from akohlmey/hide-factory-symbols
Reduce number of visible symbols in LAMMPS library by removing factory function templates from class definition
2022-02-11 20:23:52 -05:00
54f975ff52 Merge pull request #3123 from stanmoore1/reax_error
Remove incorrect error check in ReaxFF
2022-02-11 19:34:53 -05:00
df02598fc1 convert one more factory template 2022-02-11 18:38:36 -05:00
6a0e93a18a convert more style_creators to use local static functions 2022-02-11 18:29:52 -05:00
5ab9b46b67 enable and apply clang-format 2022-02-11 18:04:46 -05:00
a4244eb7ff apply simplification suggested by @rbberger 2022-02-11 17:57:30 -05:00
04cff0b47b remove make factory function templates from class and make them static functions 2022-02-11 16:00:12 -05:00
4df5686709 Merge branch 'amd_hip_opt' of github.com:stanmoore1/lammps into amd_hip_opt 2022-02-11 13:57:19 -07:00
5ba2fc7958 Merge branch 'reax_error' of github.com:stanmoore1/lammps into amd_hip_opt 2022-02-11 13:56:52 -07:00
fbd4d4b9c3 Merge branch 'develop' of github.com:lammps/lammps into amd_hip_opt 2022-02-11 13:56:38 -07:00
a8dbb3a172 Remove incorrect error check in ReaxFF 2022-02-11 13:39:24 -07:00
ea94095bf6 Change email in docs 2022-02-11 12:51:47 -05:00
ecd072a286 address spelling issues 2022-02-11 09:03:59 -05:00
1f6c4089bd remove some more dead code in CG-DNA package 2022-02-11 07:41:09 -05:00
397889e697 Modifications to virial addon contributions 2022-02-10 19:55:23 -07:00
d750ef4890 simplify 2022-02-10 20:39:36 -05:00
c32dca2009 avoid failures with "most" presets 2022-02-10 20:11:27 -05:00
4ea4bee30c apply virtual and override keywords consistently 2022-02-10 16:55:35 -05:00
61ff5250ee add extra communication of special neighbors when using angle constraints 2022-02-10 16:17:56 -05:00
e94854d54f always initialize arrays with extra grid points for non-periodic to support switching with change_box 2022-02-10 15:57:41 -05:00
9b1a267d85 fix another memory grid deallocation bug. delete before number of levels changes 2022-02-10 15:32:07 -05:00
ab1e68eb42 fix memory access bug with changing box volume/grid 2022-02-10 14:41:25 -05:00
4d5bb08ead make searching for python interpreter and development version futureproof and more consistent 2022-02-10 14:41:25 -05:00
60d03f34cc update create.f with changes from NIST database
also add parameters for Cr and document in README file and change
the code to create output files with .eam.alloy extension
2022-02-10 14:41:25 -05:00
6366972ef4 remove dead code and reduce compiler warnings
# Conflicts:
#	src/RIGID/fix_rigid_small.cpp
2022-02-10 14:41:09 -05:00
44ded1c1fe Reorder fields init in IntelBuffer ctor 2022-02-10 14:19:51 -05:00
df00d2225a Remove unused variable 2022-02-10 14:13:55 -05:00
75f32a60a5 Add missing curly braces 2022-02-10 14:13:43 -05:00
c2ef4425c6 Update doc/utils/check-styles.py 2022-02-10 12:02:23 -05:00
08b16f1f23 Prevent GTest and GMock from being installed 2022-02-10 11:27:32 -05:00
a17a45c761 Fix large number of sign-compare warnings 2022-02-10 11:19:13 -05:00
4f36dad942 Removed the bogus loop in numdiff and manually se the factors in numdiff. 2022-02-10 11:51:03 +01:00
efa5db4c58 ELECTRODE package 2022-02-10 11:33:38 +01:00
439aabc7b1 Merge branch 'develop' of https://github.com/lammps/lammps into amd_hip_opt 2022-02-09 14:26:33 -05:00
ce83ca1efd Merge pull request #3117 from akohlmey/collected-small-changes
Collected small changes
2022-02-08 20:21:46 -05:00
861195130c incorporate suggested changes to github action from @rbberger 2022-02-08 12:08:28 -05:00
4d6fcb3a8b Merge branch 'develop' of https://github.com/lammps/lammps into Elastic_stress before comiting to pull request 2022-02-08 16:46:23 +01:00
9ed13157eb Added examples/cij_nvt/in.lj* changes to make Git happy. 2022-02-08 16:42:33 +01:00
9833e5bc66 Hopefully got compute_born_matrix numdiff method working. Also added two BORN_MATRIX examples. 2022-02-08 16:40:52 +01:00
75727ed5af comment out minimal run test outside of CMake/CTest 2022-02-07 20:52:12 -05:00
8e2581042e remove unused local variables 2022-02-07 20:30:36 -05:00
78cf0365e6 bugfixes 2022-02-08 02:13:42 +01:00
b01716472b Merge branch 'develop' into collected-small-changes 2022-02-07 19:59:10 -05:00
b75c306543 Merge pull request #3035 from rbberger/kokkos_unittests
Add force style tests for Kokkos OpenMP
2022-02-07 19:57:09 -05:00
2445f85dde Merge branch 'develop' into collected-small-changes 2022-02-07 17:08:03 -05:00
044ada9f2b update googletest library to current snapshot 2022-02-07 16:46:32 -05:00
e4b5245f4d Merge pull request #3116 from akohlmey/build-kokkos-staticlib
Build KOKKOS package updates for Python module and Windows compatibility
2022-02-07 16:36:46 -05:00
35a4c0f501 skip tests that fail with Kokkos+OpenMP 2022-02-07 16:15:32 -05:00
2dfeb96fda Merge pull request #3115 from rbberger/pylammps_update
PyLammps update
2022-02-07 15:09:10 -05:00
093c54d8ed update to use settings from upstream 2022-02-07 14:42:07 -05:00
a7084c8fdb Merge remote-tracking branch 'origin/develop' into kokkos_unittests 2022-02-07 13:04:59 -05:00
ba89ad546a Tried to make the fusion with Aidan Thomps modification of compute_born + several headers issues (essentially adding override flag to virtual methods) 2022-02-07 00:12:27 +01:00
b6822a18f7 Merge branch 'Elastic_stress' of github.com:Bibobu/lammps into Elastic_stress 2022-02-06 20:04:51 +01:00
a110b1d475 1) Added born_matrix method to bond_harmonic, angle_cosine_squared and dihedral_nharmonic
2) Changed compute_born_matrix so it can takes arguments pair bond angle dihedral to output only selected elements. Also moved flags to creator method and added error/warning messages
2022-02-06 20:00:55 +01:00
2548c49876 use fmtlib for formatted output 2022-02-05 17:01:47 -05:00
8209ae9513 fix optional argument parsing bug 2022-02-05 17:01:13 -05:00
59def25eb6 tweak test epsilon for portability 2022-02-05 16:08:43 -05:00
d91c1ff1f0 Merge pull request #3110 from stanmoore1/dump_balance
Fix issue in new dump balance command
2022-02-05 15:56:17 -05:00
4de02c7f2f Tweaked input script 2022-02-04 16:28:29 -07:00
a2ff443838 Use utils::flush_buffers() in error.cpp and thermo.cpp 2022-02-04 18:00:47 -05:00
bae6526b5f Add missing doc entry 2022-02-04 17:55:37 -05:00
50a7d4e7fc Add utils::flush_buffers() 2022-02-04 17:53:36 -05:00
ea0f31c997 Update SWIG library interface 2022-02-04 17:43:17 -05:00
f45663bfc2 Simplify loop structure to fix issues 2022-02-04 11:45:28 -08:00
0ff3ee0227 Add and use lammps_flush_buffers() in Python interface 2022-02-04 10:42:22 -05:00
293d529ee9 Add lammps_flush_buffers() library function 2022-02-04 10:40:05 -05:00
c0bae49956 simplify with new API and address coverity scan warning 2022-02-04 07:28:59 -05:00
652ff43f64 Got a good match with some Born elements with P != 0 2022-02-03 21:58:25 -07:00
ea0b4f0f33 Got a good match with some Born elements with P != 0 2022-02-03 18:16:21 -07:00
c0ee491f18 protect unconditional "#pragma GCC" with if defined(__GNUC__) 2022-02-03 19:47:52 -05:00
7cd9975e29 Fixed one obvious error in numdiff version, matching analytic quite well for P~=0, need to fix addon term 2022-02-03 17:44:47 -07:00
6edb50b405 Force Python version in GH MSVC test 2022-02-03 18:08:17 -05:00
9bfd6375eb avoid triggering bogus make file target errors 2022-02-03 18:00:34 -05:00
7d0b4cc131 make portable to cross-compiler 2022-02-03 18:00:12 -05:00
330dd6a7a8 Documentation update for maxtries & exclude 2022-02-03 23:18:51 +01:00
8fbaaffd3e remove incorrect scope 2022-02-03 17:16:20 -05:00
2137ad04fd remove non-portable custom (and unused) profiling support code 2022-02-03 17:13:10 -05:00
a56922edc9 include PYTHON package in windows test build 2022-02-03 16:55:26 -05:00
75f389f70c Enable PyLammps unit test, require NumPy 2022-02-03 16:24:43 -05:00
22efbaf977 Output Capture has to replace FD 1 to work properly in Jupyter 2022-02-03 16:24:43 -05:00
050ce421e9 PyLammps: alternative OutputCapture using tempfiles 2022-02-03 16:24:43 -05:00
f804ea89b9 skip force test requiring cp command 2022-02-03 16:13:07 -05:00
2a7823686d use introspection to check for Kokkos::OpenMP only when it is enabled 2022-02-03 16:08:00 -05:00
6bfb7a5521 require OpenMP 4 or later for KOKKOS with OpenMP enabled 2022-02-03 16:07:33 -05:00
b06d4a3300 exclude_cutoff to exclude_radius 2022-02-03 21:58:14 +01:00
f550460ecd Update CMakeSettings.json 2022-02-03 15:44:55 -05:00
36c1db820f Add command styles to PyLammps auto-completion 2022-02-03 15:44:55 -05:00
41da32d7de Use modernized LAMMPS Python interface instead of output parsing for Atom properties 2022-02-03 15:44:55 -05:00
3ba85bc68d replace VLA with explicit new/delete 2022-02-03 15:23:09 -05:00
2627e404b0 Add csforce field to numpy_wrapper detection 2022-02-03 15:14:22 -05:00
c6a17b900e just call exit() on windows instead forwarding the SEGV signal 2022-02-03 13:31:24 -05:00
b7b7a74c52 when building KOKKOS as part of the LAMMPS build, always build static libs 2022-02-03 12:23:25 -05:00
82ac7c9e12 Merge remote-tracking branch 'origin/develop' into python_use_setuptools 2022-02-02 11:47:13 -05:00
efcb402fdc Merge pull request #3111 from stanmoore1/kk_compile
Changes needed to compile LAMMPS with Kokkos upstream
2022-02-02 11:45:55 -05:00
d9c51ca124 Make sure LAMMPS and unit tests use same Python version 2022-02-02 11:44:25 -05:00
172f88a0d5 Merge pull request #3104 from ohenrich/cg-dna
CG-DNA unit test and performance enhancement
2022-02-01 18:30:13 -05:00
8f07289ed7 Changes needed to compile LAMMPS with latest Kokkos develop 2022-02-01 15:00:40 -07:00
e15ca1eeef Fix bug in dump balance 2022-02-01 10:23:25 -08:00
fa200f606b Update from upstream 2022-01-31 20:01:10 -07:00
76c57d54c1 Merge pull request #3102 from akohlmey/mpi-stubs-simplify
Porting unit tests to run natively on Windows
2022-01-31 21:37:48 -05:00
705bfc10a1 Merge pull request #3100 from rbberger/kokkos_cleanup
Refactor some declarations in KOKKOS package
2022-01-31 19:35:55 -05:00
1da12feafc Prepared for implementation of exclude
- maxtries returned as separate option
- errors for incompatible options (var with single + new)
2022-02-01 00:46:15 +01:00
fad47312e6 Update from upstream 2022-01-31 16:31:46 -07:00
1b6f850d42 Prepared for implementation 2022-02-01 00:17:21 +01:00
91614b64d2 Update from upstream 2022-01-31 15:42:05 -07:00
a6a2492282 Merge pull request #3082 from stanmoore1/reax_count
Improve PairReaxFFKokkos neigh list algorithm
2022-01-31 17:26:25 -05:00
b2916339a4 Add NeedDup_v and AtomicDup_v helpers to KOKKOS 2022-01-31 13:42:03 -05:00
a124ee4f44 Merge pull request #2233 from charlessievers/OptimizedDynamicalMatrix
Dynamical_matrix and third_order features+update
2022-01-31 12:57:28 -05:00
dd416f61b5 Rename function to avoid warning 2022-01-31 10:47:56 -07:00
cfd720e1fc Remove another volatile return type to avoid warning 2022-01-31 09:58:44 -07:00
5d28d06a3c Fix compiler warning 2022-01-31 09:47:32 -07:00
f537a31c19 Unify comment style 2022-01-31 09:25:25 -07:00
5142d8e968 Merge remote-tracking branch 'origin/develop' into kokkos_cleanup 2022-01-31 11:04:41 -05:00
9a81dc58a1 Merge remote-tracking branch 'origin/develop' into kokkos_unittests 2022-01-31 11:04:18 -05:00
b7c8ab639c Dummy change 2022-01-30 16:44:35 -07:00
7a14cf765f Fixed silent error in albe[][] 2022-01-30 16:34:49 -07:00
c09e3c0890 Updated documentation 2022-01-30 16:27:33 -07:00
fb2f7f1b99 Merge branch 'Elastic_stress' of github.com:athomps/lammps into Elastic_stress 2022-01-30 16:19:20 -07:00
d79a96caae Updated documentation 2022-01-30 16:18:34 -07:00
cc9c578006 Got all the pieces in, now just need to get the right answer 2022-01-30 15:52:16 -07:00
d80ba0d57a Merge branch 'develop' into mpi-stubs-simplify 2022-01-30 17:19:26 -05:00
7ee7d0c570 apply clang-format 2022-01-30 17:18:40 -05:00
3707b327c0 improve portability of python result value string conversion 2022-01-30 16:52:38 -05:00
a8a76dbbe2 port python module and package tests to be windows compatible. refactor environment processing 2022-01-30 16:48:47 -05:00
2e39971cbc re-enable python module tests on windows 2022-01-30 16:48:11 -05:00
579ac61b5b refactor environment variable settings. make windows compatible 2022-01-30 16:47:52 -05:00
fea41d5458 make windows compatible 2022-01-30 16:47:17 -05:00
0f85809acf Created branch on athomps/lammps repo 2022-01-30 12:37:33 -07:00
af8d1bd768 fix typo 2022-01-30 09:00:39 -05:00
65b198f986 Revert "temporarily switch repo and branch to run on"
This reverts commit 213259b732.
2022-01-30 08:48:52 -05:00
4b22962ec1 roll back MPI target alias change one more time. must wait until CMake 3.11 or later is minimum 2022-01-30 08:47:46 -05:00
f8a4006da7 must promote imported target to global scope in order to be able to alias it 2022-01-30 08:32:21 -05:00
dc0e013297 create alias target MPI::ANY_CXX to be used instead of MPI::MPI_CXX
With this alias it is possible to transparently refer to either the
real imported MPI library or to the MPI stub library. this further
reduced the need for if statements related to MPI. Some uses of
MPI::MPI_CXX remain but they are all in branches of the script code
where BUILD_MPI is enabled and thus the imported target will be present.
2022-01-30 07:48:16 -05:00
99cb494594 remove automatic generated tag 2022-01-30 07:08:15 -05:00
b17d8b4494 add building and running unit tests 2022-01-30 05:54:35 -05:00
213259b732 temporarily switch repo and branch to run on 2022-01-30 05:54:21 -05:00
4bb7457d6e add option to allow skipping tests by setting a no${CMAKE_SYSTEM_NAME} tag 2022-01-30 05:14:57 -05:00
923b0cfc46 allow to override the LAMMPS dll location on windows
this is to work around the situation that windows
has no equivalent to LD_LIBRARY_PATH (short of augmenting %PATH%,
which is tricky for CMake before 3.20)
2022-01-30 05:13:17 -05:00
a8632d5cb6 always have the lib prefix on the LAMMPS library (windows may drop it on the .dll file) 2022-01-30 05:11:32 -05:00
ebeb29adf6 skip python folder tests for now on windows 2022-01-29 21:34:51 -05:00
6ff157a099 use quoting to avoid issues with blanks and special characters 2022-01-29 21:05:19 -05:00
33be5ff0b4 allow that the include command may have quoted arguments with variables 2022-01-29 21:04:59 -05:00
cc0d91b222 re-add copies of linked files 2022-01-29 21:01:49 -05:00
571821694e remove links broken on windows 2022-01-29 21:01:35 -05:00
02cadf1b71 port to windows where text file reading may gobble up carriage returns 2022-01-29 20:53:17 -05:00
6c98915a9c port to windows 2022-01-29 20:52:37 -05:00
0bfc5269dd fix mismatches causing failures on windows 2022-01-29 20:52:25 -05:00
9014664c13 really fix unit test regexes for windows 2022-01-29 19:07:35 -05:00
c420f804d9 make multi-line regex checks compatible with googletests Windows regex syntax 2022-01-29 18:52:49 -05:00
a1d186b5fa Merge pull request #3105 from athomps/numdiff-stress
Add new numdiff/virial fix style
2022-01-29 18:37:57 -05:00
cd5d1f8a30 reformat 2022-01-29 18:13:01 -05:00
9323a09b39 reduce number of reported memory leaks with google test death tests 2022-01-29 18:12:53 -05:00
c464c40d67 avoid accessing uninitialized data and triggering bogus memcheck output 2022-01-29 18:12:15 -05:00
7b3adb3f1a must always initialize jtag 2022-01-29 17:09:40 -05:00
c9de8fca1d silence compiler warnings 2022-01-29 17:07:00 -05:00
75d0a5098f use -Og for Debug config for better warnings and debug experience 2022-01-29 17:06:30 -05:00
bd4814a51e don't cache OUTPUT_DIRECTORY variable settings but set them every time 2022-01-29 16:37:40 -05:00
845ab2dd71 On Windows the Regex matcher for '.' does not match '\n'
Thus we have to use ContainsRegex instead of MatchesRegex
2022-01-29 16:35:30 -05:00
d62e25decc don't specify default working directory for tests explicitly 2022-01-29 11:10:23 -05:00
dad72a612a correct statement (PPPM **does** support triclinic for a while already) 2022-01-29 08:18:08 -05:00
481bcfcd14 spelling 2022-01-29 08:12:28 -05:00
ee98f023b6 enable and apply clang-format 2022-01-29 08:02:59 -05:00
17960c8183 use constexpr instead of const 2022-01-29 07:56:11 -05:00
9427eb800f add missing "override" 2022-01-29 07:55:58 -05:00
c1185acad7 enable and apply clang-format 2022-01-29 07:52:06 -05:00
d6fa3a08cd roll back library aliasing changes as that negatively interferes with unit tests 2022-01-28 21:54:32 -05:00
8423ecb211 small tweaks to make things work with the new settings 2022-01-28 21:28:37 -05:00
7978bf671d use canonical syntax for adding tests 2022-01-28 21:12:13 -05:00
5c0c3df035 make use of CMAKE_(RUNTIME|LIBRARY)_OUTPUT_DIRECTORY 2022-01-28 21:10:30 -05:00
fbecf0051e Merge remote-tracking branch 'upstream/develop' into numdiff-stress 2022-01-28 18:36:27 -07:00
a9481733a0 Finished debugging, testing, documenting 2022-01-28 18:34:30 -07:00
c28b7c586a Residual Merge Conflict 2022-01-28 14:59:07 -08:00
6258cf1b9d Fixed merge conflict 2022-01-28 14:49:13 -08:00
e8ce01079d whitespace 2022-01-28 17:20:32 -05:00
f6d0be1257 avoid integer overflow due to precedence 2022-01-28 17:08:16 -05:00
96502ae49d whitespace 2022-01-28 17:07:03 -05:00
1d51f2d151 must not access invalid/uninitialized data 2022-01-28 16:57:58 -05:00
2a3a7c387b Merge pull request #3103 from tc387/CR-update
fixed ewald self-energy update and updated documentation
2022-01-28 16:37:11 -05:00
e5b129fe8d Grow exponentially to resize less 2022-01-28 13:35:09 -07:00
41c1c64be9 Merged with deveop branch 2022-01-28 20:27:38 +00:00
e76c8bbaa3 spelling 2022-01-28 14:52:31 -05:00
4225c6c288 whitespace 2022-01-28 14:48:34 -05:00
9feec51590 Merge branch 'develop' of https://github.com/lammps/lammps into reax_count 2022-01-28 12:32:37 -07:00
d6a6f64576 Merge pull request #3090 from rbberger/modernize_use_override
Modernize to C++11: use override
2022-01-28 14:10:45 -05:00
17cb137f3e Merge branch 'master' into OptimizedDynamicalMatrix 2022-01-28 11:08:31 -08:00
bb89347bac Fixed kspace issue and added suggested runtime check for intel accelerator 2022-01-28 11:06:29 -08:00
7aa17fbdf7 Merge branch 'develop' of github.com:lammps/lammps into reax_count 2022-01-28 11:58:50 -07:00
d3c45d3389 Removed whitespace 2022-01-28 17:58:00 +00:00
ef96b51a25 Merge branch 'deform-rebuild-rigid' into mpi-stubs-simplify 2022-01-28 05:44:43 -05:00
db4e69bf38 further simplification by making STUBS an interface and alias to MPI::MPI_CXX 2022-01-28 01:00:37 -05:00
ac815fdfba use improved accessors for fixes 2022-01-27 22:16:43 -05:00
e4fe0a37a1 fixed ewald self-energy update and updated documentation 2022-01-27 16:48:22 -06:00
cd8b674f4b expand path to include LAMMPS shared lib 2022-01-27 17:46:18 -05:00
0bf941219f silence compiler warnings 2022-01-27 17:21:50 -05:00
d391ae845b convert static class members with git info to functions to simplify auto-export on Windows 2022-01-27 17:20:05 -05:00
265588d480 Reduce differences between original pair hybrid and kokkos variant 2022-01-27 16:14:46 -05:00
62ff23abe7 simplify building serial executables by incorporating the STUBS/mpi.o object in LAMMPS library 2022-01-27 15:59:48 -05:00
735d6926a1 Update to KK tersoff styles for consistent nofdotr
Inspired by f82096c46c
2022-01-27 14:36:45 -05:00
b3647d8e94 Add missing override keywords 2022-01-26 16:16:53 -05:00
a6ef114bfb Ensure both Python Interpreter and Development header version match 2022-01-26 15:27:36 -05:00
293f4eb0ed Add Python 3.10 to detection 2022-01-26 15:21:57 -05:00
2ed8e5cf02 Use setuptools instead of distutils in setup.py
distutils will be removed soon (Python 3.12)
2022-01-26 14:58:28 -05:00
415476983d Merge branch 'develop' into cg-dna 2022-01-26 19:31:48 +00:00
9b6bb00d07 Added unit test for atom_style oxdna 2022-01-26 19:20:34 +00:00
d51017ff50 Merge pull request #3095 from akohlmey/collect-small-changes
Collected small changes and fixes
2022-01-26 12:04:44 -05:00
d861dbe8e0 Remove unused variable 2022-01-26 11:37:53 -05:00
71a373cadb reshuffle Body struct members and add dummy for better alignment 2022-01-26 10:46:19 -05:00
8ca1004c03 cosmetic. align with clang-format 2022-01-26 10:45:46 -05:00
120662c438 correct citation info 2022-01-26 10:45:30 -05:00
cdd23ac9c2 Merge pull request #3097 from stanmoore1/dump_balance
Add option to balance dump file output
2022-01-25 15:53:38 -05:00
3297ed7c5f Refactor some declarations in KOKKOS package
Adds C++11 template helpers to shrink larger declarations.
2022-01-25 14:29:00 -05:00
75a00f4d11 minor cleanup 2022-01-25 08:52:53 -07:00
64dbce26dc Cannot shrink buf 2022-01-25 08:45:13 -07:00
35dbabd471 alternate fix for tag caching issue in INTEL package 2022-01-25 07:39:37 -05:00
0b693e729d Whitespace 2022-01-24 17:33:36 -07:00
c914fc6baf Small doc tweak 2022-01-24 16:33:11 -07:00
67af170929 Sorting is not required for balancing 2022-01-24 16:22:55 -07:00
cb9ba8c0a3 Simplify code 2022-01-24 16:05:27 -07:00
a80f7ed11f Add error message to header file 2022-01-24 15:32:20 -07:00
aeb25b5a37 Tweak docs 2022-01-24 15:28:40 -07:00
1d60e4c463 Add docs 2022-01-24 15:16:49 -07:00
16810b84eb Add option to balance dump file output 2022-01-24 14:35:27 -07:00
fc13c95c85 tweaks and bugs 2022-01-24 20:55:28 +01:00
86ee1f5a1f updated create_atoms.h/cpp with accumulated changes 2022-01-24 20:38:51 +01:00
f9a2006d73 reorder includes 2022-01-24 08:44:29 -05:00
88dadd0fff consistently refer to INTEL package in upper case 2022-01-23 21:12:22 -05:00
cd16556256 add missing break statements.
@GenieTim this bug may have tainted your results. you would always get the energy value for any of the dx, dy, dz keywords
2022-01-22 17:13:54 -05:00
81e7583a8d initialize pointers, use provided constant, reorder include statements 2022-01-22 17:07:12 -05:00
f814dc5ff9 add checks after reading data 2022-01-22 17:06:28 -05:00
458ae4e38a initialize pointers, remove unused class member 2022-01-22 17:06:13 -05:00
d854e58d00 add sanity check 2022-01-22 16:51:07 -05:00
c93fba5e2d make certain that offset is always initialized 2022-01-22 16:45:38 -05:00
5142934a26 update to modern matrix representation 2022-01-22 16:38:58 -05:00
900ff39403 make consistent 2022-01-22 16:33:44 -05:00
78ed631877 spelling 2022-01-22 16:30:03 -05:00
fa88dacd7b integrate into manual and build/source code system. apply conventions 2022-01-22 16:29:48 -05:00
5db5322902 move compute to its designated location 2022-01-22 16:24:07 -05:00
7aed8954a5 Add paragraphs in Modify_style.rst 2022-01-22 11:03:44 -05:00
ef2969dfbf use override keyword in plugin sources 2022-01-22 10:30:58 -05:00
79a9829e92 Apply override to remaining classes 2022-01-22 09:56:01 -05:00
3e3cd4c94d Added correct units for pressure, still getting wrong answer 2022-01-21 19:46:54 -07:00
3286fcb13a Added correct units for pressure, still getting wrong answer 2022-01-21 19:29:23 -07:00
c16caea13b Fixed bounds error 2022-01-21 19:17:12 -07:00
384b715d8c First pass at fix numdiff/stress 2022-01-21 18:53:06 -07:00
12d708b97c Apply override to more classes 2022-01-21 18:24:06 -05:00
44bc766060 Apply override to more classes 2022-01-21 16:58:32 -05:00
06beb28d7d Apply override to Pair classes 2022-01-21 16:13:49 -05:00
6506be9409 update programming style 2022-01-21 15:56:58 -05:00
ff3f762499 Apply override to Fix classes 2022-01-21 14:45:53 -05:00
f83271aa40 Apply override to Compute classes 2022-01-21 13:23:36 -05:00
0d4bbf60e6 Apply override to Dihedral classes 2022-01-21 12:48:11 -05:00
3ff1902b57 Renamed born method born_matrix in all classes. Changed compute_born to compute_born_matrix. Changed the compute coding to suit the LAMMPS style rules better. 2022-01-21 18:39:16 +01:00
57def1a2d5 output reformatting and refactoring 2022-01-21 11:26:55 -05:00
75d20c40ed remove threebody tag caching altogether since it is not reliable 2022-01-21 11:26:26 -05:00
3311b1344c consolidate pair-wise vs pairwise spelling 2022-01-21 10:48:35 -05:00
3a6bd2e698 update comment about pair_write restrictions 2022-01-21 10:47:49 -05:00
67dec40afa make certain pointers are initialized 2022-01-21 06:55:20 -05:00
9c8431bf87 correct calls to memset() 2022-01-21 06:55:06 -05:00
557e25d6fb Apply override to Bond classes 2022-01-20 18:00:16 -05:00
4e89488f27 Apply override to Angle classes 2022-01-20 17:53:38 -05:00
d4ec931991 Apply override to FileReader classes 2022-01-20 17:49:23 -05:00
7387643b87 Apply override to Improper classes 2022-01-20 17:36:43 -05:00
5e37f9d5a7 Apply override to KSpace classes 2022-01-20 17:14:33 -05:00
586cf6c3bf Apply override to Dump classes 2022-01-20 16:58:23 -05:00
e73158bd7e whitespace/formatting 2022-01-20 16:56:12 -05:00
4104353d7a plug memory leak 2022-01-20 16:55:59 -05:00
49dca516ea simplify API of Force::store_style() 2022-01-20 16:48:44 -05:00
7c9b0c1e8e Apply override to more core classes 2022-01-20 16:43:04 -05:00
5c62dc0986 Apply override to Comm classes 2022-01-20 16:39:36 -05:00
c9776dad6f Apply override to Command classes 2022-01-20 16:35:59 -05:00
dbe267cb88 join lines, whitespace 2022-01-20 16:04:26 -05:00
0b24c5b498 workaround for segfaults due to NULL pointer dereference with hybrid styles 2022-01-20 16:04:07 -05:00
06cb86dfb9 Apply override to NTopo classes 2022-01-20 15:53:01 -05:00
7aaa85c3a1 Apply override to NBin classes 2022-01-20 15:44:16 -05:00
32a19d982a Apply override to NStencil classes 2022-01-20 15:37:15 -05:00
222ea31d8d Remove override = default destructor lines 2022-01-20 15:28:47 -05:00
8531622966 Merge branch 'develop' of https://www.github.com/lammps/lammps into Elastic_stress 2022-01-20 09:53:07 +01:00
f420bce07e First commit of the Elastic constant computation compute modification 2022-01-20 09:52:24 +01:00
7ee3171d16 Apply override to NPair classes 2022-01-19 21:51:21 -05:00
b45a6d7720 Apply override to AtomVec classes 2022-01-19 17:31:41 -05:00
a0e2a617e0 Merge pull request #3092 from stanmoore1/kk_makefiles
Small tweaks to Kokkos Files
2022-01-19 16:06:42 -05:00
9d8394fe63 Apply override to text_file_reader.h 2022-01-19 14:45:32 -05:00
c166549c74 Apply override to KOKKOS classes up to this point 2022-01-19 14:26:25 -05:00
b8d4030983 Update more core class destructors 2022-01-19 13:27:08 -05:00
e283bfa1fa Apply override to Minimize classes 2022-01-19 13:23:28 -05:00
b7dc1d9dd6 Merge pull request #3091 from akohlmey/more-parsing-refactor
More file parsing refactoring
2022-01-19 12:41:13 -05:00
6e8d9cb532 Port bugfix in Kokkos 2022-01-19 10:27:02 -07:00
0a8cbcef2b Add -DNDEBUG to Kokkos Makefiles 2022-01-19 10:19:50 -07:00
0a89e5bd24 Remove non-ASCII chars 2022-01-19 10:18:25 -07:00
4f0cde40fd White no longer exists 2022-01-19 10:16:53 -07:00
4cd5c40374 Merge pull request #3089 from akohlmey/collected-small-changes
Collected small changes and fixes
2022-01-19 11:44:33 -05:00
7573e60a1e Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-01-19 10:21:12 -05:00
c85cdb2732 always fall back to using the .so extension if available in the LAMMPS module folder 2022-01-19 10:11:16 -05:00
7676f66674 modernize potential file parsing 2022-01-19 06:29:27 -05:00
f5ad91f9fe minor tweaks 2022-01-19 06:28:53 -05:00
0595e4d7cd refactor parsing of pair style list parameter file 2022-01-19 00:24:01 -05:00
c4c3b545b2 modernize fix gle matrix file reading 2022-01-18 19:55:50 -05:00
e22f62f6db add some metadata for fix gle matrix files 2022-01-18 19:55:30 -05:00
b890b564ca modernize electron stopping file reader 2022-01-18 16:48:26 -05:00
ef13455d6b add some metadata tags 2022-01-18 16:48:07 -05:00
0099d2584b Apply override to Integrator classes 2022-01-18 15:17:04 -05:00
778879a0eb Apply override to Body classes 2022-01-18 14:56:44 -05:00
1792b3b0cf Apply override to Reader classes 2022-01-18 14:39:31 -05:00
d19f799585 Apply override to Region classes 2022-01-18 14:31:29 -05:00
576f2266ae Mark virtual destructors in derived as override
Following C++ Core Guideline C.128
2022-01-18 14:28:25 -05:00
be7e6d0939 Avoid std::string copies 2022-01-18 13:22:55 -05:00
38bcc493b0 simplify and modernize CMAP file parser 2022-01-18 10:28:40 -05:00
389c35a2d3 use alternate method to create triclinic box for unit test 2022-01-18 09:09:37 -05:00
1c8f427e8a detect when MSM::setup() is called before proper initialization and error out 2022-01-18 09:09:19 -05:00
29b5c2659c source code formatting 2022-01-18 09:04:04 -05:00
c1f7685c98 Revert "before changing box settings, it must be initialized at least once"
Looking for alternate solution since this change has
too many unwanted side effects.

This reverts commit 2e85233b11.
2022-01-18 08:30:54 -05:00
2e85233b11 before changing box settings, it must be initialized at least once
otherwise change_box would not really be needed,
but commands like boundary can (still) be used
2022-01-18 07:20:28 -05:00
752552e0f8 remove duplicate code 2022-01-18 06:39:20 -05:00
a02e11040d whitespace 2022-01-18 06:34:57 -05:00
f0f4a8e6dc plug some memory leaks in MSM kspace style(s) 2022-01-18 06:01:32 -05:00
241a44f1af another workaround for rerun 2022-01-18 04:56:47 -05:00
e1d028ec88 Merge pull request #3087 from akohlmey/pair-harmonic
Add new pair styles harmonic/cut for repulsive-only harmonic interaction
2022-01-17 18:53:35 -05:00
5530927bd4 Merge pull request #3088 from stanmoore1/kk_hip_fixes
Fix Kokkos HIP compile issues
2022-01-17 18:07:29 -05:00
af231d5447 Fix comments in Makefiles 2022-01-17 08:54:17 -07:00
8b89be6061 Kokkos SNAP tuning for HIP 2022-01-17 08:49:00 -07:00
a93e5baa73 Add Kokkos HIP Makefiles 2022-01-17 08:44:49 -07:00
cb796e8b60 Fix HIP compile issues 2022-01-17 08:21:52 -07:00
dc6e558191 use Tokenizer class to parse bond colors 2022-01-16 20:20:07 -05:00
0eeb3b203c add tests for molecule command 2022-01-16 16:50:23 -05:00
943fe487b5 update whitespace and argument formats for longer source lines 2022-01-16 15:36:01 -05:00
1e7969c7b9 add new pair styles harmonic/cut and harmonic/cut/omp 2022-01-15 19:34:47 -05:00
aa71ea6c40 Merge branch 'collected-small-changes' of github.com:akohlmey/lammps into collected-small-changes 2022-01-14 20:25:05 -05:00
e271a54802 re-enable using rerun after the changes from PR #3052 2022-01-14 20:25:00 -05:00
c17eb14739 Fixing memory leak and wrong label 2022-01-14 15:45:18 -07:00
11cc8a6a59 whitespace 2022-01-14 15:59:05 -05:00
ed702b9309 don't allow exceptions to "escape" a destructor 2022-01-14 15:58:57 -05:00
dcb1ddb282 remove redundant code 2022-01-14 14:55:13 -05:00
2213eb8d3f use enum with symbolic constants instead of numbers 2022-01-14 14:45:12 -05:00
7afa22f045 check return values for errors 2022-01-14 13:02:15 -05:00
0540b93123 fixed division by zero issue in geometry 2022-01-13 17:15:45 +00:00
524d86605a Fixing reference in documentation 2022-01-12 10:56:30 -07:00
19abc5d329 Merge branch 'develop' into BPM 2022-01-12 10:52:11 -07:00
b1ed5e5b27 memory optimised with ragged arrays, implemented 3D ragged arrays 2022-01-12 17:02:09 +00:00
698256f4fe update fedora singularity image to Fedora 35 2022-01-12 08:17:54 -05:00
e0cde6270e Merge branch 'develop' into kokkos_unittests 2022-01-11 12:59:36 -05:00
5f607fad56 optimised memory management in chain generation 2022-01-11 16:46:50 +00:00
240db21054 silence possible warnings about missing files on "make clean-all" 2022-01-11 11:46:08 -05:00
8aaae8e6ee Fix count issue 2022-01-07 15:22:53 -07:00
40c140e56e Improve PairReaxFFKokkos neigh list algorithm 2022-01-07 14:48:07 -07:00
1f81e2afad Added duplication of stdout into logfile 2022-01-07 13:45:54 +00:00
11d66f8f1d Merge branch 'lammps:develop' into cg-dna 2022-01-07 12:45:38 +00:00
cd6df24e37 Fix a couple issues 2021-12-21 13:45:29 -07:00
f72b448544 WIP: cleanup/reorganize 2021-12-21 08:32:51 -07:00
6bafa11080 Fix host compile error 2021-12-20 14:08:00 -07:00
36f3c8c899 Merge branch 'develop' of github.com:lammps/lammps into amd_hip_opt 2021-12-20 13:23:51 -07:00
79844a3f34 Tweaks to team_size/vector_length 2021-12-20 09:58:37 -07:00
8dd61144cb Merge branch 'develop' into kokkos_unittests 2021-12-20 10:54:27 -05:00
f1daa22cdf Merge branch 'lammps:develop' into cg-dna 2021-12-20 13:13:41 +00:00
94aad92b44 Tweaks to optimized SPMV and fused CG solve 2021-12-16 13:55:57 -07:00
90f3b0675e Cleaned up/reorganized version of optimized Kokkos fix_qeq_reaxff 2021-12-16 13:01:58 -07:00
f7f32642ca Temporarily revert EAM changes until a more portable/general solution is available 2021-12-16 10:13:00 -07:00
1f1c778225 Remove redundant GPL license 2021-12-15 16:51:53 -07:00
f6f60660c0 Cleanup for EV_FLOAT 2021-12-15 16:42:29 -07:00
b8053e466b Remove unused header, whitespace 2021-12-15 15:12:55 -07:00
0d238d554c Cleaned up version of optimized Kokkos Tersoff 2021-12-15 14:45:48 -07:00
2663087861 Merge branch 'develop' of github.com:lammps/lammps into amd_hip_opt 2021-12-15 13:56:15 -07:00
dccd74d6c4 Merge pull request #11 from arghdos/patched_ff
Patched ff
2021-12-15 13:46:12 -07:00
9fbca5111d fix runtime error from lack of comm->setup() 2021-12-15 11:52:38 -08:00
3748ddb1ae Merge branch 'lammps:develop' into cg-dna 2021-12-15 09:02:57 +00:00
40c0925cb4 Updated and added third order kokkos 2021-12-14 14:25:49 -08:00
62cdf7ab2d update docs 2021-12-14 09:13:05 -05:00
1c38b7633f generalize and simplify support for accelerated commands with suffixes 2021-12-14 09:06:04 -05:00
dee995f918 consistent author attribution 2021-12-14 09:05:28 -05:00
d6048ba576 added copyright/license header and updated author attribution 2021-12-14 08:41:49 -05:00
5b57d662c3 Merge branch 'develop' into OptimizedDynamicalMatrix 2021-12-14 08:35:58 -05:00
744e615dbb Revamping public methods for history, adding support for bond react 2021-12-13 17:35:53 -07:00
a887d880c6 debugged kokkos support to dynamical_matrix command 2021-12-13 14:14:14 -08:00
668d7805d6 Fixes to doc 2021-12-10 11:34:12 -07:00
439853c4a8 Moving store/local to an internal fix 2021-12-10 10:33:52 -07:00
455cb09cf4 Adding compatability with MC fixes, set_array to property/atom, faster update/special/bonds, single methods, and misc small changes 2021-12-08 16:47:42 -07:00
f3eac179e6 Expanding broken bonds documentation, adding support for more create/delete bond commands, misc small edits 2021-12-06 17:27:25 -07:00
40258f8b9a Adding Steve's edits in documenation + associated changes in files 2021-12-03 16:12:31 -07:00
ca8dddf002 upgrade of lb/fluid fix
This includes documentation files in the rst format in the doc/src directory, examples in the examples/PACKAGES/latboltz directory and source files in the src/LATBOLTZ directory.
2021-12-01 14:31:57 -05:00
7113334f99 Fixing typos in documentation 2021-11-29 16:19:45 -07:00
5fa185bfda Fixing bug in failing to update values across runs 2021-11-29 14:04:07 -07:00
2c5441257e Disable tersoff with shift flag tests for kokkos_omp 2021-11-23 15:03:48 -05:00
9517467113 Add missing KOKKOS suffix in PairTersoffZBLKokkos 2021-11-23 14:56:35 -05:00
0b87039fbb Skip MolPairStyle:hybrid-scaled test for kokkos_omp 2021-11-23 14:28:59 -05:00
2f6bf29adf Fixup kokkos_omp test for dpd 2021-11-23 14:06:02 -05:00
d365cc7dfc Add missing destroy_kokkos() calls in pair_lj_gromacs_kokkos.cpp 2021-11-23 13:57:53 -05:00
b603346a0d Skip kspace-pppm_ad test for kokkos_omp 2021-11-23 13:56:19 -05:00
51c627df76 Add SCOPED_TRACE for better test error messages 2021-11-23 12:22:01 -05:00
073b586eee Add EXPECT_POSITIONS() and EXPECT_VELOCITIES() test utils 2021-11-23 12:21:27 -05:00
32a53a1ae3 Use EXPECT_FORCES() in more testers 2021-11-23 11:46:33 -05:00
615b7ceca2 Simplify EXPECT_FORCES() utility function 2021-11-23 10:59:40 -05:00
946fd6fb55 Update CMake utility function get_lammps_version()
With the introduction of LAMMPS_UPDATE, version.h is no longer a single line
file. With this change the CMake utility will only process the LAMMPS_VERSION
line. Fixes issue #3038
2021-11-23 10:46:22 -05:00
68360b9335 Add test utility method EXPECT_FORCES() 2021-11-22 16:27:18 -05:00
62b236a7cd Use platform::path_join in unittest tree and remove redundant code 2021-11-22 15:34:23 -05:00
3d650a6bf7 Add test utility method EXPECT_STRESS() 2021-11-22 15:24:41 -05:00
bb127603ff Use platform::unlink in unittests 2021-11-22 14:40:51 -05:00
a6ccdd72ec Move platform::rmdir docstring to right location 2021-11-22 11:49:09 -05:00
a354a763bb Fix output capture mismatch 2021-11-19 17:14:52 -05:00
79feba1a25 try fix host fused
Change-Id: If54da165cf0488be39e9c4971bff3edf39d5b067
2021-11-19 17:09:26 -05:00
dcb32dc9f5 Fix no return warnings
Change-Id: I2ae537d5bfd5258b87bee372896e3ffd030772ab
2021-11-19 16:39:21 -05:00
9eea03aeb7 fix device fused QEQ
Change-Id: I7ed12d55ca838f9b60cc1292f127067050e8c88b
2021-11-19 16:39:17 -05:00
780cf82bb0 First version of kokkos_omp test variant 2021-11-19 16:23:05 -05:00
f8a94a4f10 Minor fixes to align w.r.t upstream
Change-Id: I4d8bbfe286c986f5bc603041b04f272b3f537476
2021-11-19 15:58:25 -05:00
00cbb633bf Implement host MPI for fused QEQ
Change-Id: I3278a72878fb7cdb64a059aaf025c039dc0d71e5
2021-11-19 15:41:37 -05:00
fb379dab15 Fused CG passes 1 & 2 for QEQ solver
Change-Id: I5fa396d8a2f2713712056a264d2bb05b7321dc1a
2021-11-19 15:41:37 -05:00
2a1823f59d add a missing CBRT
Change-Id: I5f70816a2b5ac07ba88511cf3bf14017043b5e76
2021-11-19 15:41:37 -05:00
8e140b4fcd Use tuned blocking sizes from experiment
Change-Id: I08a837d9632a45dabd3331108314d3ffc328338c
2021-11-19 15:41:37 -05:00
ff2751bf91 Merge pull request #10 from arghdos/fix_missing_hd
Minor fix for compilation bug
2021-11-19 10:41:26 -07:00
f5a03cb0c6 Minor fix for compilation bug
Change-Id: I79703cd20b12905855a2b8ec263665dd5be77604
2021-11-19 12:37:23 -05:00
47f3f9d44a Merge branch 'develop' of github.com:Iximiel/lammps into develop 2021-11-18 14:36:45 +01:00
c918b6fbcc removed example dump file 2021-11-18 14:36:38 +01:00
8faa750f21 Merge branch 'lammps:develop' into develop 2021-11-18 14:34:12 +01:00
4646671e70 added examples 2021-11-18 14:32:39 +01:00
a759987515 added examples 2021-11-18 14:31:21 +01:00
a5df494176 added examples 2021-11-18 14:30:26 +01:00
b06a70c33c corrected some errors in the manual 2021-11-18 12:40:10 +01:00
7544f1bcf8 Fixed comm setup bug and external forces bug, still must look into if package omp needs to set external force flag to zero 2021-11-17 11:48:35 -08:00
d178a5ffa3 Extended test script 2021-11-17 13:12:44 +00:00
7a914c84d7 again correction in the documentation 2021-11-12 16:25:48 +01:00
0eb227e7de working on the documentation 2021-11-12 14:55:48 +01:00
fe5f00bbea Updating the documentation, now 'make html' do not give errors 2021-11-12 14:37:16 +01:00
bfc34023b1 working on the documentation 2021-11-12 12:01:05 +01:00
cfe08ba55f working on the manual 2021-11-12 10:32:04 +01:00
c488e912e6 adding the pair_smatb to lammps documentation 2021-11-11 17:01:03 +01:00
80efc8839a fixed a grammar mistake 2021-11-11 16:36:48 +01:00
bdc4f7fb18 styled the headers 2021-11-11 16:27:09 +01:00
1c0e6578b6 changed some comments 2021-11-11 16:12:26 +01:00
4f4b18ab7e addig smatb pairs 2021-11-11 16:06:42 +01:00
feac637a2a Fix compile issues on CPU 2021-11-10 15:31:49 -07:00
7625b9707b Update to latest upstream develop 2021-11-10 15:14:24 -07:00
f733453f05 Intpos (#11)
* hbond comm added for rsq_hb

* lrefpos removed, extract scaled for oxDNA1

* Update pair_oxdna_hbond.cpp

* nxyz extract scaled across DNA2/RNA2

* oxDNA2/RNA2 updated to match oxDNA styling from upstream merge

* whitespace corrections

also removed unnecessary local unit vector from oxRNA2_xstk

* whitespace correction in oxdna_coaxstk
2021-11-10 09:25:13 +00:00
3b30fbb218 Merge branch 'lammps:develop' into intpos 2021-11-10 09:13:00 +00:00
367c9dff05 Compilable kokkos dynamical matrix command 2021-11-09 15:21:39 -08:00
acb1c8e7f2 Moving update/special/bonds into bond style to ensure correct fix ordering 2021-11-07 17:55:53 -07:00
5e7f2cf54f Changed tab spacing from 4 to 2, to be in line with lammps standards 2021-11-04 14:33:16 -07:00
18c78e1625 Merge branch 'master' into OptimizedDynamicalMatrix 2021-11-04 14:23:50 -07:00
0909b4da92 Updated dynamical matrix command to work with intel potentials 2021-11-04 11:35:31 -07:00
b86a3a5d6b Added missing } 2021-11-03 10:24:22 -07:00
5241f93641 Update third order format 2021-11-03 10:12:17 -07:00
e8f6024eae Fixed more whitespace issues 2021-11-03 11:46:56 +00:00
fc4fdd09ef Fixed more whitespace issues 2021-11-03 11:44:29 +00:00
a37a113044 Merge branch 'lammps:develop' into intpos 2021-11-03 11:02:01 +00:00
b8970366e0 Fixed whitespace issues 2021-11-03 10:59:04 +00:00
7ba211a727 Update dynamical matrix format 2021-11-02 21:57:55 -07:00
f5626a2b9d Few more merge conflicts 2021-11-02 12:29:49 -06:00
679132b607 Replacing some needed header files 2021-11-02 12:10:20 -06:00
cf968ef286 Intpos (#10)
* hbond comm added for rsq_hb

* lrefpos removed, extract scaled for oxDNA1

* Update pair_oxdna_hbond.cpp
2021-11-02 09:52:56 +00:00
bb176318fe Merge branch 'lammps:develop' into intpos 2021-11-02 09:48:24 +00:00
d7f7835069 Fix merge conflicts, minor style fixes 2021-11-01 18:13:06 -06:00
e3c9d7936b Merge branch 'develop' of github.com:lammps/lammps into coo_opt 2021-11-01 17:00:13 -06:00
f05807f38e Revert 647380a 2021-11-01 14:34:50 -06:00
3d2a97b4a9 Fix bug in Kokkos neighborlist where stencil wasn't updated for occasional list 2021-11-01 14:07:04 -06:00
7e08525ce3 Merge branch 'master' of https://github.com/lammps/lammps into coo_opt 2021-11-01 12:57:26 -06:00
9ae05facb8 Updating file locations to master locations 2021-10-28 16:32:04 -07:00
608ad0bca0 Merge branch 'lammps:develop' into intpos 2021-10-28 09:48:17 +01:00
addb087aac Merge branch 'lammps:develop' into intpos 2021-10-27 21:29:56 +01:00
ae3e6e423a Fix loop level 2021-10-27 13:51:41 -06:00
2ca7dcb853 Use lighter construct than powint 2021-10-27 13:41:29 -06:00
2d52821cf5 Update from develop 2021-10-27 13:14:29 -06:00
20fec49635 Intpos (#8)
* use the term 'website' consistently (and not also 'web site')

* update for clang-format

* clarify

* split off the programming/submission style guide to a separate file

* Updates to support ROCm 4.3 in GPU package

* update and reorder the description of the process for submitting contributions

* correct and clarify Python compatibility

* refactor style guide and integrate text from issue

* update contribution guidelines for github

* mention when testing may be added

* integrate file with description of include file conventions

* update github workflow doc

* adapt section about domain decomposition from paper

* use a more compact image

* add communication section

* update man page with missing flags and correct URLs

* improve the load imbalance viz

* add section about neighbor list construction

* break large file into multiple smaller files by section and add toctree

* fix typo

* add section about parallelization in the OPENMP package

* add -skipruin to help message

* add discussion of OpenMP parallelization

* spelling

* add section on PPPM

* use larger version of FFT grid comm image

* minor tweak

* Update compute angle doc page

* Update Singularity definitions to use ROCm 4.3

* Update CUDA container definitions to CUDA 11.4

* Update container definitions to include PLUMED 2.7.2

* Update more definition files

* RHEL8/CentOS8 PowerTools is now powertools

* Add Rocky Linux 8 container definition

* Add omega field to numpy_wrapper detection

* Return None in case of null pointer

* Add more atom fields in numpy_wrapper and correct csforce size

* must not clear force array. will segfault in hybrid atom styles

* update example for dynamically loading LAMMPS with current library API

* update example to use current library interface. No need to use the namespace.

* add note to README files about age of the example

* simplify building shared libs on windows

* detect a few more compilers

* Revert "simplify building shared libs on windows"

This reverts commit fa3429ab02.

* step version strings for next patch release

* fix mingw 32-bit vs 64-bit craziness

* detect C++20 standard

* build "fat" cuda binaries only with known toolkits

* spelling

* Try to improve the pair style hybrid docs

This specifically tries to avoid the ambiguous use of "mixing" and
clarify that similar is still different when pair styles are concerned.
See discussion here: https://matsci.org/t/confusion-about-mixing-and-pair-coeff-section/38317/3

* spelling

* use nullptr

* use symbolic constant

* small optimization

* use cmath header instead of math.h

* use explicit scoping when virtual dispatch is not available.

* cosmetic changes

* simplify/optimize code

* simplify

* Bugfix from Trung for crashes in pppm/gpu without local atoms

* fix typo

* refer to "XXX Coeffs" sections consistently

* small tweaks from static code analysis

* fix small bug

* small tweaks

* simplify and modernize code a little

* use correct data type for MPI calls

* simplify/modernize

* remove dead code

* about 1.5x speedup for pair style comb3 by using MathSpecial::powint()

* small performance optimization for pair style comb

* simplify

* modernize

* simplify

* removed dead code, reformat

* modernize

* use explicit scoping when virtual dispatch is not (yet) available

* reformat for increased readability

* move misplaced #endif and make code more readable

* make sure err_flag is initialized

* modernize

* remove redundant code: all struct members are initialized to defaults in the constructor

* enforce initialization and thus silence compiler warnings

* fix typo

* provide more comprehensive suggestions for GPU neighbor list errors

* add utils::logical() function to complement the *numeric() functions

* Add stable link in docs

* revert modernization change (for now)

* remove unused variable

* include EXTRA-DUMP in "most"

* small tweaks

* simplify

* Add log file printing of KIM search directories in 'kim init'

* use clang-format on kim_init.cpp

* Improve style in response to Axel's suggestions

* initialize all members

* format changes

* simplify. use utils::strdup() more.

* small corrections

* apply fix from balance command to fix balance

* dead code removal

* reformat strings

* implement utils::current_date() convenience function to reduce replicated code

* update list and order of include files from include-what-you-use analysis

* handle changes in GAP repo

* a few remaining updates to include statements

* expand mapping to handle "style_*.h" header files correctly.

* add support for compilation of OpenCL loader on FreeBSD

* more iwyu header updates

* small correction

* fix typo

* a few more (final?) IWYU updates

* expand tests for numeric values

* return int instead of bool to minimize code changes

* fix spelling issues

* some applications of the new function

* fix typo

* Change "offsite" to "external" to correct broken URLs to lammps.org

* improve error message

* insert missing atom-ID

* convert yes/no on/off flags in the package command(s)

* update version strings

* update death tests for change in error message

* correctly specify the destructor function name.

* apply utils::logical() to more commands

* apply utils::logical() in more places

* for consistency with utils::logical()

* only accept lower case to be consistent with the rest of the input

* a few more converted commands and updates for unit tests

* modernize and fix some memory leaks

* adjust for compatibility with C++20 compilers

* do not downgrade C++ standard when adding the KOKKOS package

* undo "risky" C++20 related changes

* mention how to set the path to the fftw3_omp library

* correct paths to downloaded PACE package sources in lib

* Update CMake variable descriptions

* possible workaround for some GPU package neighbor list issue

* final chunk of changes to apply utils::logical()

* update suffix command unit tests

* update citation info with new LAMMPS paper reference and acknowledge it

* update some formulations as suggested by @sjplimp

* add check and suitable error message when fp64 is required but not available

* do not call memset on a null pointer

* fix string formatting bugs in fix npt/cauchy

* must use a soft core potential to avoid a singularity

* in floating point math a*b may be zero even if both a>0 and b>0

* use proper integer type for atom IDs

* Building voro++ lib as part of LAMMPS requires the "patch" program

* silence output from hwloc when launching LAMMPS

* detect double precision support according to OpenCL specs (1.2 and later)

* Fix bug in Kokkos pair_eam_alloy

* calling fwrite() with a null pointer causes undefined behavior. avoid it.

* cosmetic

* apply current include file conventions

* include zstd libs in windows build

* update .gitignore for recent additions

* make check more obvious

* step version strings for stable release

* Adjust for kim-api bug

* cleaner variant of version check, add directory numbering

* hbond comm added for rsq_hb

* rsq_hb removed, exyz added (no MPI comm yet)

* Fix Colvars output files not written with "run 0"

See:
  https://github.com/Colvars/colvars/commit/ff2f0d39ee5
which fixes a bug introduced in:
  https://github.com/Colvars/colvars/commit/1e964a542b

The message applies to NAMD, but the logic used in LAMMPS when handling "run 0" is very similar.

The Colvars version string is also updated, however this commit does not
include other changes, such as the following:
  https://github.com/Colvars/colvars/pull/419
which were not fully completed before the LAMMPS Summer 2021 finalization.

* add -std=c++11 to a number of machine makefiles for traditional make build

* copy request to mention lammps.org form home page instructions for citing

* be more specific about what the name of the LAMMPS executable can be

also provide a few more examples without a machine suffix

* small tweak

* remove references to USER packages, have package lists alphabetically sorted

"make package-update" or "make pu" must be processed in the special order
because of inter-package dependencies

* make "make package-update" and "make package-overwrite" less verbose

* freeze versions of pip packages for processing the manual of the stable version

this way we avoid surprises in case one of the packages get updated
to an incompatible new version. these are know-to-work versions.

* make sure the one_coeff flag is applied to sub-styles

since the check for Pair::one_coeff was moved to the Input class (to
reduce redundant code), hybrid substyles could "escape" that requirement.
Thus checks have to be added to the hybrid coeff() methods.

* Prevent neigh list from copying "unique" stencil/bin

* compiling ML-HDNNP with downloaded n2p2 lib requires the sed command

* detect and error out if BLAS/LAPACK libraries variables are a list

This will cause external project compilation to fail since the semi-colons
are converted to blanks, but one cannot properly escape the variables.
So far the only viable solution seems to be to convert the scripts from
using ExternalProject_add() to FetchContent and add_subdirectory()

* portability improvement

* must have patch command available to compile ScaFaCoS

* only need Tcl not Tk to compile Tcl swig wrapper

* correctly handle Tcl stub library if available

* add missing keyword

* hbond_pos added, MPI and values ok, Pair time slow.

* make C library example work with strict C compilers

* silence compiler warnings

* make Nevery keyword per-reaction

* recover cross-compilation with mingw64

* reverted wrong approach from last commits

- now intpos flag
- hbond_pos added
- (a/b)xyz WiP

* lrefpos working in serial, MPI wrong

* attempt to merge doubles into n(xyz)[3]

* save

* Update pair_oxdna_hbond.cpp

* hbond now working for MPI, comming lrefpos

* extracting nxyz in excv/bond working

Co-authored-by: Axel Kohlmeyer <akohlmey@gmail.com>
Co-authored-by: Richard Berger <richard.berger@temple.edu>
Co-authored-by: Ryan S. Elliott <relliott@umn.edu>
Co-authored-by: Stan Gerald Moore <stamoor@sandia.gov>
Co-authored-by: Giacomo Fiorin <giacomo.fiorin@gmail.com>
Co-authored-by: Jacob Gissinger <jrgiss05@gmail.com>
Co-authored-by: Oliver Henrich <ohenrich@users.noreply.github.com>
2021-10-26 16:45:44 +01:00
647380a357 Avoid bitshift that gave incorrect results on GPU 2021-10-20 13:21:07 -06:00
01d96fc684 Whitespace 2021-10-15 12:50:46 -06:00
d97e55d54a Precompute some sqrt factors 2021-10-15 11:53:54 -06:00
23cd143aae Merge branch 'master' of github.com:lammps/lammps into coo_opt 2021-10-15 10:54:16 -06:00
d207710b43 lrefpos (nx/y/z) now working in oxdna_hbond. Being comm'ed and MPI working (#7)
* use the term 'website' consistently (and not also 'web site')

* update for clang-format

* clarify

* split off the programming/submission style guide to a separate file

* Updates to support ROCm 4.3 in GPU package

* update and reorder the description of the process for submitting contributions

* correct and clarify Python compatibility

* refactor style guide and integrate text from issue

* update contribution guidelines for github

* mention when testing may be added

* integrate file with description of include file conventions

* update github workflow doc

* adapt section about domain decomposition from paper

* use a more compact image

* add communication section

* update man page with missing flags and correct URLs

* improve the load imbalance viz

* add section about neighbor list construction

* break large file into multiple smaller files by section and add toctree

* fix typo

* add section about parallelization in the OPENMP package

* add -skipruin to help message

* add discussion of OpenMP parallelization

* spelling

* add section on PPPM

* use larger version of FFT grid comm image

* minor tweak

* Update compute angle doc page

* Update Singularity definitions to use ROCm 4.3

* Update CUDA container definitions to CUDA 11.4

* Update container definitions to include PLUMED 2.7.2

* Update more definition files

* RHEL8/CentOS8 PowerTools is now powertools

* Add Rocky Linux 8 container definition

* Add omega field to numpy_wrapper detection

* Return None in case of null pointer

* Add more atom fields in numpy_wrapper and correct csforce size

* must not clear force array. will segfault in hybrid atom styles

* update example for dynamically loading LAMMPS with current library API

* update example to use current library interface. No need to use the namespace.

* add note to README files about age of the example

* simplify building shared libs on windows

* detect a few more compilers

* Revert "simplify building shared libs on windows"

This reverts commit fa3429ab02.

* step version strings for next patch release

* fix mingw 32-bit vs 64-bit craziness

* detect C++20 standard

* build "fat" cuda binaries only with known toolkits

* spelling

* Try to improve the pair style hybrid docs

This specifically tries to avoid the ambiguous use of "mixing" and
clarify that similar is still different when pair styles are concerned.
See discussion here: https://matsci.org/t/confusion-about-mixing-and-pair-coeff-section/38317/3

* spelling

* use nullptr

* use symbolic constant

* small optimization

* use cmath header instead of math.h

* use explicit scoping when virtual dispatch is not available.

* cosmetic changes

* simplify/optimize code

* simplify

* Bugfix from Trung for crashes in pppm/gpu without local atoms

* fix typo

* refer to "XXX Coeffs" sections consistently

* small tweaks from static code analysis

* fix small bug

* small tweaks

* simplify and modernize code a little

* use correct data type for MPI calls

* simplify/modernize

* remove dead code

* about 1.5x speedup for pair style comb3 by using MathSpecial::powint()

* small performance optimization for pair style comb

* simplify

* modernize

* simplify

* removed dead code, reformat

* modernize

* use explicit scoping when virtual dispatch is not (yet) available

* reformat for increased readability

* move misplaced #endif and make code more readable

* make sure err_flag is initialized

* modernize

* remove redundant code: all struct members are initialized to defaults in the constructor

* enforce initialization and thus silence compiler warnings

* fix typo

* provide more comprehensive suggestions for GPU neighbor list errors

* add utils::logical() function to complement the *numeric() functions

* Add stable link in docs

* revert modernization change (for now)

* remove unused variable

* include EXTRA-DUMP in "most"

* small tweaks

* simplify

* Add log file printing of KIM search directories in 'kim init'

* use clang-format on kim_init.cpp

* Improve style in response to Axel's suggestions

* initialize all members

* format changes

* simplify. use utils::strdup() more.

* small corrections

* apply fix from balance command to fix balance

* dead code removal

* reformat strings

* implement utils::current_date() convenience function to reduce replicated code

* update list and order of include files from include-what-you-use analysis

* handle changes in GAP repo

* a few remaining updates to include statements

* expand mapping to handle "style_*.h" header files correctly.

* add support for compilation of OpenCL loader on FreeBSD

* more iwyu header updates

* small correction

* fix typo

* a few more (final?) IWYU updates

* expand tests for numeric values

* return int instead of bool to minimize code changes

* fix spelling issues

* some applications of the new function

* fix typo

* Change "offsite" to "external" to correct broken URLs to lammps.org

* improve error message

* insert missing atom-ID

* convert yes/no on/off flags in the package command(s)

* update version strings

* update death tests for change in error message

* correctly specify the destructor function name.

* apply utils::logical() to more commands

* apply utils::logical() in more places

* for consistency with utils::logical()

* only accept lower case to be consistent with the rest of the input

* a few more converted commands and updates for unit tests

* modernize and fix some memory leaks

* adjust for compatibility with C++20 compilers

* do not downgrade C++ standard when adding the KOKKOS package

* undo "risky" C++20 related changes

* mention how to set the path to the fftw3_omp library

* correct paths to downloaded PACE package sources in lib

* Update CMake variable descriptions

* possible workaround for some GPU package neighbor list issue

* final chunk of changes to apply utils::logical()

* update suffix command unit tests

* update citation info with new LAMMPS paper reference and acknowledge it

* update some formulations as suggested by @sjplimp

* add check and suitable error message when fp64 is required but not available

* do not call memset on a null pointer

* fix string formatting bugs in fix npt/cauchy

* must use a soft core potential to avoid a singularity

* in floating point math a*b may be zero even if both a>0 and b>0

* use proper integer type for atom IDs

* Building voro++ lib as part of LAMMPS requires the "patch" program

* silence output from hwloc when launching LAMMPS

* detect double precision support according to OpenCL specs (1.2 and later)

* Fix bug in Kokkos pair_eam_alloy

* calling fwrite() with a null pointer causes undefined behavior. avoid it.

* cosmetic

* apply current include file conventions

* include zstd libs in windows build

* update .gitignore for recent additions

* make check more obvious

* step version strings for stable release

* Adjust for kim-api bug

* cleaner variant of version check, add directory numbering

* hbond comm added for rsq_hb

* rsq_hb removed, exyz added (no MPI comm yet)

* Fix Colvars output files not written with "run 0"

See:
  https://github.com/Colvars/colvars/commit/ff2f0d39ee5
which fixes a bug introduced in:
  https://github.com/Colvars/colvars/commit/1e964a542b

The message applies to NAMD, but the logic used in LAMMPS when handling "run 0" is very similar.

The Colvars version string is also updated, however this commit does not
include other changes, such as the following:
  https://github.com/Colvars/colvars/pull/419
which were not fully completed before the LAMMPS Summer 2021 finalization.

* add -std=c++11 to a number of machine makefiles for traditional make build

* copy request to mention lammps.org form home page instructions for citing

* be more specific about what the name of the LAMMPS executable can be

also provide a few more examples without a machine suffix

* small tweak

* remove references to USER packages, have package lists alphabetically sorted

"make package-update" or "make pu" must be processed in the special order
because of inter-package dependencies

* make "make package-update" and "make package-overwrite" less verbose

* freeze versions of pip packages for processing the manual of the stable version

this way we avoid surprises in case one of the packages get updated
to an incompatible new version. these are know-to-work versions.

* make sure the one_coeff flag is applied to sub-styles

since the check for Pair::one_coeff was moved to the Input class (to
reduce redundant code), hybrid substyles could "escape" that requirement.
Thus checks have to be added to the hybrid coeff() methods.

* Prevent neigh list from copying "unique" stencil/bin

* compiling ML-HDNNP with downloaded n2p2 lib requires the sed command

* detect and error out if BLAS/LAPACK libraries variables are a list

This will cause external project compilation to fail since the semi-colons
are converted to blanks, but one cannot properly escape the variables.
So far the only viable solution seems to be to convert the scripts from
using ExternalProject_add() to FetchContent and add_subdirectory()

* portability improvement

* must have patch command available to compile ScaFaCoS

* only need Tcl not Tk to compile Tcl swig wrapper

* correctly handle Tcl stub library if available

* add missing keyword

* hbond_pos added, MPI and values ok, Pair time slow.

* make C library example work with strict C compilers

* silence compiler warnings

* make Nevery keyword per-reaction

* recover cross-compilation with mingw64

* reverted wrong approach from last commits

- now intpos flag
- hbond_pos added
- (a/b)xyz WiP

* lrefpos working in serial, MPI wrong

* attempt to merge doubles into n(xyz)[3]

* save

* Update pair_oxdna_hbond.cpp

* hbond now working for MPI, comming lrefpos

Co-authored-by: Axel Kohlmeyer <akohlmey@gmail.com>
Co-authored-by: Richard Berger <richard.berger@temple.edu>
Co-authored-by: Ryan S. Elliott <relliott@umn.edu>
Co-authored-by: Stan Gerald Moore <stamoor@sandia.gov>
Co-authored-by: Giacomo Fiorin <giacomo.fiorin@gmail.com>
Co-authored-by: Jacob Gissinger <jrgiss05@gmail.com>
2021-10-13 10:47:41 +01:00
17316f92c7 Add optimized version of compute_orientorder_atom from Tomas Oppelstrup (LLNL) 2021-10-12 07:50:05 -07:00
69e600c404 Misc updates and style fixes 2021-10-06 14:13:48 -06:00
faf9c1532a issue with EVAL command 2021-09-24 16:26:57 -06:00
0f2bebdb9b Adding bpm/spring pairstyle, misc small edits 2021-09-24 10:45:46 -06:00
be17d775e0 more debugging 2021-09-23 15:12:07 -06:00
c855c6f0ab rename 2 version to regular version 2021-09-23 12:55:28 -06:00
8b69b232a8 rename old version to old in filename 2021-09-23 12:48:43 -06:00
dcfdddf83f more bug fixes for new MDI classs 2021-09-23 12:39:11 -06:00
18f0d2e1b5 Adding spring bondstyle 2021-09-20 18:06:10 -06:00
0029ed106b more adjustments to MDI engine code 2021-09-10 17:59:19 -06:00
1e26fe2d6f support for reset_box and create_atom commands 2021-09-09 17:16:33 -06:00
5e0c754d04 Fixing style issues 2021-09-09 14:17:39 -06:00
f9a972220e Fixing data compression in history, small update to model 2021-09-09 09:00:21 -06:00
0e72aae0a3 Adding examples and misc bug fixes 2021-09-08 18:39:56 -06:00
6193ebaba7 remove earlier USER-MDI files 2021-09-03 16:01:16 -06:00
481d6128c7 Merge branch 'master' into mdi-expand 2021-09-03 15:51:34 -06:00
a8a97962d2 more changes for AIMD testing 2021-09-03 15:50:17 -06:00
75cb6fc51b added support for LAMMPS as MDI AIMD driver 2021-09-02 17:52:10 -06:00
55f20288b1 Merge branch 'master' into mdi-expand 2021-08-30 16:52:49 -06:00
328e730c8f Merge branch 'master' into mdi-expand 2021-08-30 14:31:29 -06:00
d2984d2615 Merge branch 'master' into BPM 2021-08-27 10:04:04 -06:00
bb720626e3 Adding files for BPM 2021-08-27 09:22:56 -06:00
64d7b73d7c Update region.rst
Include a few lines describing the "ellipsoid" option
2021-08-09 07:54:41 +02:00
35aeadfdd4 implementation of a "ellipsoidal" region option
Based on the code of the region_sphere and the code described in https://www.geometrictools.com/Documentation/DistancePointEllipseEllipsoid.pdf, an option for axis-aligned ellipsoidal regions has been implemented
2021-08-08 17:01:51 +02:00
0867299adb Fixed format error bug in third order tensor print 2021-07-19 11:54:49 -07:00
f8ebcff078 changes to mdi_engine 2021-06-22 09:36:40 -06:00
8761ae65a3 Merge branch 'master' into mdi-expand 2021-06-10 09:50:23 -06:00
41d7038c1e trial versions of new mdi_engine and fix_mdi_engine 2021-05-27 17:24:29 -06:00
3f42e97405 remove old printf workarounds
Change-Id: I46a66538c886c9961977e0433e900bc91d92c4f2
2021-05-17 13:01:33 -04:00
f44f983b3b Restore the previous atom/teamsizes for ComputeHFunctor
Change-Id: I292280efd3d5d0d6a7486c1e9798ef4f632d9df4
2021-05-17 10:11:11 -04:00
abcac33c63 cleanup rebase errors
Change-Id: Ib8e255fefcb17ff91bc0bfdfcb98e56d3387b9b2
2021-05-17 10:11:06 -04:00
ad1c1637d4 cleanup & the various vector-wise SPMVs
Change-Id: Id29ec4e1968ddfccf26335a0f41a8652db33b89b
2021-05-14 15:58:54 -04:00
fc2eff64bb remove hard coded launchbounds / teamsizes for compat. w/ Kokkos LB=256 default
Change-Id: I7dcd26eee32b3fc049549ae380ffaf85423eed2e
2021-05-14 15:58:53 -04:00
1d6f24f0df hide additional printf
Change-Id: I200c85013b9d0163847194ad4b18ac33af65a823
2021-05-14 15:58:53 -04:00
f629de84f9 cleanup printf workarounds
Change-Id: Id9960f545fa0159d6c38392711b6ac584715d3d9
2021-05-14 15:58:52 -04:00
18466fb05b legal stuff
Change-Id: I5ab375285fdea9b20d8174a582aca9e78bf0f8a3
2021-05-14 15:58:52 -04:00
844dea3e1b temporary fix for EAM
Change-Id: Ia39bf1b4c3adcbadf0b1bde39d6817f44869946b
2021-05-14 15:58:49 -04:00
dff61617fe Change LaunchBounds to 64 for TagPairTersoffComputeHalf
Change-Id: I7fb8871c30acab4fc98654df618af6e786bc6244
2021-05-14 15:56:41 -04:00
926a037cba thread group dimension adjustment for FixQEqReaxKokkosComputeHFunctor
Change-Id: I7a62632a2403cdc3491777b090a1cb48d3a7591b
2021-05-14 15:56:41 -04:00
20a4d295e5 Optimized Torsion with blocking, flag needed: HIP_OPT_TORSION_PREVIEW_BLOCKING and HIP_OPT_TORSION_PREVIEW
Change-Id: I667ded58fc2c8b8253ea655e9fdf9b5cc3f737e4
2021-05-14 15:56:40 -04:00
e3a2eb0713 merging FC_K and DFC calculation, activate with flag HIP_OPT_MERGE_FC_K_DFC
Change-Id: I68440f02c79f8cc2cc4788dac2447cfa58f0b54a
2021-05-14 15:56:40 -04:00
1856b669be Apply patch from Stan to fix race in Reax
Change-Id: I372b5951cf0f5e3343c3c6283f01cf0b8c889a56
2021-05-14 15:56:38 -04:00
56a1cd12e5 fix for multi-GPU failure for reax
Change-Id: Ia261ff2f1158de2bd6ac2d83a15080f6b6253128
2021-05-14 15:55:54 -04:00
6b568aff7a adding merged ters_gijk and ters_dgijk, flag AMD_OPT_MERGE_GIJK_DGIJK is required
Change-Id: I8d9f433ecb38f8bd3cc72d8f2bc1642f753c7270
2021-05-14 15:48:23 -04:00
bb1b269cf8 optimization for Matvec2 and Matvec3, need -DHIP_OPT_SPMV
Change-Id: Ia40d2f27c38dd0e500cb7f8f02908be8b1f52a63
2021-05-14 15:48:22 -04:00
ce96898331 Add CUDA variants for hip calls
Change-Id: I5d169ee1563c915c0768675d2ec2e7a1774bc969
2021-05-14 15:48:22 -04:00
c25ccfdb98 adding optimization in tersoff
Change-Id: I21d2bfe5181b3395430ec4b9949894c61b61587a
2021-05-14 15:48:21 -04:00
9a48ae0c06 optimized pair_eam_kokkos. need more work to avoid large shared memory allocations
Change-Id: I1c23b0e10fdfa932b17ad764cf5a1d024b43d80a
2021-05-14 15:48:19 -04:00
f732e633ec Avoid loading data twice if itype==jtype
Change-Id: I430a761555bdbd93e3ca1b298c962b75b91175aa
2021-05-14 15:36:49 -04:00
4d9c2a97d2 replacing pow(a,1/3) with the cbrt(a) call - optimization is activated using the existing HIP_OPT_USE_LESS_MATH flag
Change-Id: Ic6670c54f453127e948036e5c9a88154b5af6e68
2021-05-14 15:36:48 -04:00
33346ae961 change teamsize
Change-Id: Ie7666e8ec8192fced098fe744f318aaf25365f5a
2021-05-14 15:36:48 -04:00
117995c2fc updated PairReaxBuildListsHalf use -DPairReaxBuildListsHalf_BLOCKING to activate
Change-Id: I8d1ec5ed9ec7042e9cdc53da825c07d3bc44e2bd
2021-05-14 15:36:47 -04:00
20dc9576d9 updated PairReaxComputeLJCoulomb. use -DPairReaxComputeLJCoulomb_BLOCKING to activate
Change-Id: Idef8dafc79216368bffbf90547016afca5f32a43
2021-05-14 15:36:47 -04:00
c6efc01a7f Revised Torsion kernel with -DHIP_PRINTF_WORKAROUND
Change-Id: Iffee0dfbd507f1a0b873a86a8b1c71ffcb5b344e
2021-05-14 15:36:46 -04:00
397b098ac0 fix memory leak in counter allocs
Change-Id: Ia45e3e5d1ce92b4fd537a031181bf719a243a8b1
2021-05-14 15:36:46 -04:00
775167ecd9 apply torsion preview to all cases
Change-Id: Icc619a89fc4af98735c0fbbeb52d655dc60b10fd
2021-05-14 15:36:45 -04:00
b0f638d937 fix bug where preview counters were being used in reduce (but was iterating over inum)
Change-Id: Ic60f40d5adcc6505ced83c7d5694813e161f73ac
2021-05-14 15:36:44 -04:00
fee6d98201 Catch missing HIP_OPT_TORSION_PREVIEW parts in kernel
Change-Id: Ib0ed83940bcd870a9531d596422956741e4f735a
2021-05-14 15:36:44 -04:00
dabb120096 fix undefined nnz w/ HIP_OPT_TORSION_PREVIEW off
Change-Id: Ie11be12a98ba48b9134537b5389b2b9300dc2be8
2021-05-14 15:36:43 -04:00
e2de1c5e8f Make the torsion preview optional
- enabled with -DHIP_OPT_TORSION_PREVIEW
	- reuse hiphostmalloced' memory when possible

Change-Id: I25fbe7b06cffe1b6047048cd71f78bbf54d73774
2021-05-14 15:36:43 -04:00
de0341121f test templated workaround for reduce bug
Change-Id: I858e0446c453b1d194b8c653d388c14aec450c63
2021-05-14 15:36:42 -04:00
44d036f486 fixing a bug in Torsion preview
Change-Id: I8f119d695f5ea3d9faa27843f87e54d3e0e086e9
2021-05-14 15:35:55 -04:00
3b3ef7e9a5 Minor optimization of tersoff kernel TagPairTersoffComputeShortNeigh
Change-Id: If70e524b6bf30d3bcdacf732cf3aab897e2843d4
2021-05-14 15:35:54 -04:00
705d314879 revised version of TagPairTersoffComputeHalf; requires defining define USE_COMBINED_JJ_LLOPS_TERSOFF
Change-Id: I45717fb9af210ef8bedffc2d228b60a7ec0368ef
2021-05-14 15:35:53 -04:00
bcd4ab036c Implement forward device pack/unpack for fix/qeq/reax
Change-Id: I690a63f7ef467d3f1b39784ac97cab54ed7fb248
2021-05-14 15:35:51 -04:00
14b388aea9 Revised torsion kernel with preprocessing
- preprocess the interaction lists to reduce divergence

Change-Id: I842cc424963333308c5aaaeb202c8f41f07a55f5
2021-05-14 15:19:54 -04:00
51b3cb640f Adding support to reducing number of mat lib. calls (-DHIP_OPT_USE_LESS_MATH)
Change-Id: I44d140cf1b9421ccb3277b0592d3100b76c6eae9
2021-05-14 15:19:53 -04:00
5b8e138d0f add more missing launch bounds
Change-Id: Ifc4c94963b3c1c26455d32598f366af84c73883e
2021-05-14 15:19:53 -04:00
99db66d485 Add launch bounds patches to avoid SWDEV-252521
Change-Id: I389b5db94c14f1e5bc90c1848bfc0e038774ee19
2021-05-14 15:19:52 -04:00
0423a3e537 Merge branch 'master' into OptimizedDynamicalMatrix 2021-04-27 13:36:34 -07:00
b982542ae6 update indentation to 2 blanks. avoid "hanging else" constructs. 2021-04-21 14:56:26 -04:00
598e82d236 small cosmetic changes 2021-04-21 12:16:43 -04:00
1ee8de42d9 minor cleanups and simplifications using fmtlib 2021-04-21 12:08:37 -04:00
cd236776de Merge branch 'master' into OptimizedDynamicalMatrix 2021-04-21 11:46:36 -04:00
0ed44e0b81 Remove leftover merge conflict string 2021-04-16 18:05:20 -07:00
535384b235 Finish updating to current master 2021-04-16 17:14:55 -07:00
a3e204a99d Simplified reset_extra_dof 2021-03-17 16:23:04 +10:00
97f90f1146 Cleaned up math for clarity 2021-03-17 15:56:48 +10:00
471cfa8ac3 Fixed inconsistent default extra_dof value 2021-03-17 14:31:17 +10:00
aad0a9a0f3 Updated documentation to reflect changes in compute_temp_profile 2021-03-17 14:14:33 +10:00
b1b7f7a248 Fixed treatment of DoF when streaming velocity not subtracted in some dimensions 2021-03-17 13:59:16 +10:00
5e4dd5321c Using local dof and tfactor for compute_array to prevent overwrite 2021-03-17 13:38:51 +10:00
c643389ec4 Treat extra_dof as system-wide in compute_array for consistency, and include fix_dof 2021-03-17 11:38:07 +10:00
ab07427339 Corrected default extra_dof 2021-03-17 09:52:05 +10:00
fed47b9ffc Merged 1/29/2021 master and fixed merge conflicts 2021-01-29 12:33:17 -08:00
e57b391d40 Add threading capability to both commands 2020-07-20 11:35:10 -07:00
5abddfe68d Fixed nitpicky details, updated output, moved mass out of folded check 2020-07-19 19:12:01 -07:00
9011cfaa96 Added neighbors of neighbors list indexed by tag and return tags. 2020-07-18 02:27:31 -07:00
dd6e5df356 Remove print statement 2020-07-16 14:16:12 -07:00
7133311d2d Change Allreduce to fit bigint 2020-07-16 14:13:45 -07:00
999dd13924 Draft of force calculation reduction through neighbor lists 2020-07-15 12:45:46 -07:00
4b656b3961 Check if atom is part of group before computing forces 2020-07-14 15:47:14 -07:00
35f3aeb15a Merge branch 'master' into OptimizedDynamicalMatrix 2020-07-13 19:48:16 -07:00
d368c46ea9 Merge remote-tracking branch 'origin' 2020-07-13 19:46:44 -07:00
57d674cc81 Merge branch 'master' into OptimizedDynamicalMatrix 2020-07-13 19:46:05 -07:00
3a4652613d Add folded option, change ballistico to eskm, add post force modifications 2020-07-13 19:43:24 -07:00
255cc85b32 Merge branch 'master' of https://github.com/charlessievers/lammps 2019-09-04 16:18:57 -07:00
2e2b1b3687 Initial commit... 2019-05-02 15:17:31 +01:00
65399a6193 Merge branch 'OptimizedDynamicalMatrix' of https://github.com/charlessievers/lammps 2019-02-01 20:51:08 -08:00
4794 changed files with 449365 additions and 534102 deletions

6
.gitattributes vendored
View File

@ -3,3 +3,9 @@
.github export-ignore
.lgtm.yml export-ignore
SECURITY.md export-ignore
* text=auto
*.jpg -text
*.pdf -text
*.gz -text
*.png -text
*.ps -text

View File

@ -5,8 +5,8 @@ Thank your for considering to contribute to the LAMMPS software project.
The following is a set of guidelines as well as explanations of policies and work flows for contributing to the LAMMPS molecular dynamics software project. These guidelines focus on submitting issues or pull requests on the LAMMPS GitHub project.
Thus please also have a look at:
* [The guide for submitting new features in the LAMMPS manual](https://lammps.sandia.gov/doc/Modify_contribute.html)
* [The guide on programming style and requirement in the LAMMPS manual](https://lammps.sandia.gov/doc/Modify_contribute.html)
* [The guide for submitting new features in the LAMMPS manual](https://www.lammps.org/doc/Modify_contribute.html)
* [The guide on programming style and requirement in the LAMMPS manual](https://www.lammps.org/doc/Modify_style.html)
* [The GitHub tutorial in the LAMMPS manual](http://lammps.sandia.gov/doc/Howto_github.html)
## Table of Contents

View File

@ -5,6 +5,8 @@ on:
push:
branches: [develop]
workflow_dispatch:
jobs:
analyze:
name: Analyze

View File

@ -1,10 +1,12 @@
# GitHub action to build LAMMPS on Windows with Visual C++
name: "Native Windows Compilation"
name: "Native Windows Compilation and Unit Tests"
on:
push:
branches: [develop]
workflow_dispatch:
jobs:
build:
name: Windows Compilation Test
@ -17,13 +19,22 @@ jobs:
with:
fetch-depth: 2
- name: Select Python version
uses: actions/setup-python@v2
with:
python-version: '3.10'
- name: Building LAMMPS via CMake
shell: bash
run: |
python3 -m pip install numpy
python3 -m pip install pyyaml
cmake -C cmake/presets/windows.cmake \
-D PKG_PYTHON=on \
-S cmake -B build \
-D BUILD_SHARED_LIBS=on \
-D LAMMPS_EXCEPTIONS=on
-D LAMMPS_EXCEPTIONS=on \
-D ENABLE_TESTING=on
cmake --build build --config Release
- name: Run LAMMPS executable
@ -31,3 +42,8 @@ jobs:
run: |
./build/Release/lmp.exe -h
./build/Release/lmp.exe -in bench/in.lj
- name: Run Unit Tests
working-directory: build
shell: bash
run: ctest -V -C Release

View File

@ -5,6 +5,8 @@ on:
push:
branches: [develop]
workflow_dispatch:
jobs:
build:
name: MacOS Unit Test
@ -37,6 +39,7 @@ jobs:
working-directory: build
run: |
ccache -z
python3 -m pip install pyyaml
cmake -C ../cmake/presets/clang.cmake \
-C ../cmake/presets/most.cmake \
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \

1
.gitignore vendored
View File

@ -12,6 +12,7 @@
*.sif
*.dll
*.pyc
*.whl
a.out
__pycache__

View File

@ -1,98 +1,98 @@
# COMB parameters for various elements (Si, Cu, Hf, Ti, Zr, U, O) and mixtures (their oxides and alloys)
# Edited by Tzu-Ray Shan from MSE, Univ. FL in Apr 2010
#
# Elements currently available: Si, Cu, Hf, Ti, Zr, U, O
# Oxides currently available: Si-O, Cu-O, Hf-O, Ti-O
#
# Si parameter set from (JG Yu, SB Sinnott, SR Phillpot, Phys. Rev. B 75 085311 2007)
# ,and (TR Shan, BD Devine, SR Phillpot, SB Sinnott, to be sub to Phys. Rev. B)
# O parameter set from (TR Shan, BD Devine, SB Sinnott, SR Phillpot, Phys. Rev. B 81 125328 2010)
# Cu parameter set from (BD Devine, TR Shan, SB Sinnott, SR Phillpot, to be sub to Phys. Rev. B)
# Hf parameter set from (TR Shan, BD Devine, SB Sinnott, SR Phillpot, Phys. Rev. B 81 125328 2010)
# Ti parameter set from (TR Shan, SR Phillpot, SB Sinnott, in preparation)
# U parameter set from (Y Li, TR Shan, SB Sinnott, SR Phillpot, in preparation)
# Zr parameter set from (T Iwasaki, J. Mater. Res. 20 5 1300 2005)
#
# Multiple entries can be added to this file, LAMMPS reads the ones it needs
# Only M-O are added in the potential table, using mixing rules to generate desired alloy (A-B) parameters
# 8 entries for a desired A-B type: AAA, BBB, AAB, ABA, ABB, BAA, BBA, BBA
# 27 entries for a system containing three elements A, B and C
# These entries are in LAMMPS "metal" units
#
Hf Hf Hf 1 0 1 0 1.011011 0.046511 0.959614 0.959614 55.9421 55.9421 3.90 0.10 2.069563 2.069563 707.53 707.53 0 0 0.008 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 0.26152 -0.25918 0 3.139520d0 0 0.009410d0 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0.0
Ti Ti Ti 1 0 1 0 1.255016 0.089078 1.226342 1.226342 99.3916 99.3916 3.40 0.10 2.082408 2.082408 546.386 546.386 0 0 0.0084 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -4 4 2.508854 -2.511416 0 2.46820415900968 0 0.151351003255176 0 0.873685 0.392632 0.392632 1.78349 1.78349 12 0.0
O O O 1 6.6 1 -0.229 1 2 2.68 2.68 260.893 260.893 2.8 0.2 5.36 5.36 3326.69 3326.69 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -1.8349 5.5046 0.00148 -0.00112 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.922011 0.971086 0.971086 12 0.0
Cu Cu Cu 1 0 1 0 1 0.140835 1.681711 1.681711 146.987 146.987 2.95 0.05 2.794608 2.794608 952.693 952.693 0.077 0.0095 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -6 2 0.1677645 -0.161007 0 5.946437 0 0 0 0.454784 0.72571 0.72571 0.274649 0.274649 12 -2.0
Si Si Si 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.7322 471.18 471.18 2.90 0.10 2.4799 2.4799 1830.8 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 1.651725 -1.658949 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -0.499378 2.999911 2.999911 12 0.0
Zr Zr Zr 1 0 1 0 1 0 0.929 0.929 39.9454 39.9454 3.8 0.31 1.857 1.857 382.6 382.6 0 0 0 0 0 0 1 1 1 1 -4 4 1.64 -1.5 -4 4 1.64 -1.5 0 3.139520d0 0 0.009410d0 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0.0
U U U 1 0 1 0 4.346966 0.77617 0.832 0.832 162.6 162.6 3.9 0.15 1.835 1.835 795.6 795.6 0 0 0 0 0 0 1 1 1 1 -4 4 2 -2 -4 4 2 -2 0 3.139520d0 0 0.009410d0 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0.0
#
Si O O 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 2.68 471.18 260.893 2.80 0.25 2.4799 5.36 1830.8 3326.69 0 0 0 109.47 0.3122 0 1 1 1 1 -4 4 1.651725 -1.658949 -1.8349 5.5046 0.00148 -0.00112 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.922011 2.999911 0.971086 12 0
O Si Si 1 6.6 1 -0.229 1 2 2.68 1.7322 260.893 471.18 2.80 0.25 5.36 2.4799 3326.69 1830.8 0 0 0 143.73 2.6 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 1.651725 -1.658949 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -0.499378 0.971086 2.999911 12 0
Si O Si 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 2.68 471.18 260.893 2.80 0.25 2.4799 5.36 1830.8 3326.69 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -1.8349 5.5046 0.00148 -0.00112 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.922011 2.999911 0.971086 12 0
O Si O 1 6.6 1 -0.229 1 2 2.68 1.7322 260.893 471.18 3.20 0.25 5.36 2.4799 3326.69 1830.8 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 1.651725 -1.658949 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -0.499378 0.971086 2.999911 12 0
Si Si O 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.7322 471.18 471.18 2.80 0.25 2.4799 2.4799 1830.8 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 1.651725 -1.658949 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -0.499378 2.999911 2.999911 12 0
O O Si 1 6.6 1 -0.229 1 2 2.68 2.68 260.893 260.893 2.80 0.25 5.36 5.36 3326.69 3326.69 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -1.8349 5.5046 0.00148 -0.00112 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.922011 0.971086 0.971086 12 0
#
Si Cu Cu 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.681711 471.18 146.987 2.70 0.10 2.4799 2.794608 1830.8 952.693 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -6 2 0.1677645 -0.161007 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 0.72571 2.999911 0.274649 12 0
Cu Si Si 1 0 1 0 1 0.140835 1.681711 1.7322 146.987 471.18 2.70 0.10 2.794608 2.4799 952.693 1830.8 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -4 4 1.651725 -1.658949 0 5.946437 0 0 0 0.454784 0.72571 -0.499378 0.274649 2.999911 12 0
Si Cu Si 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.681711 471.18 146.987 2.70 0.10 2.4799 2.794608 1830.8 952.693 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -6 2 0.1677645 -0.161007 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 0.72571 2.999911 0.274649 12 0
Cu Si Cu 1 0 1 0 1 0.140835 1.681711 1.7322 146.987 471.18 2.70 0.10 2.794608 2.4799 952.693 1830.8 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -4 4 1.651725 -1.658949 0 5.946437 0 0 0 0.454784 0.72571 -0.499378 0.274649 2.999911 12 0
Si Si Cu 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.7322 471.18 471.18 2.70 0.10 2.4799 2.4799 1830.8 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 1.651725 -1.658949 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -0.499378 2.999911 2.999911 12 0
Cu Cu Si 1 0 1 0 1 0.140835 1.681711 1.681711 146.987 146.987 2.70 0.10 2.794608 2.794608 952.693 952.693 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -6 2 0.1677645 -0.161007 0 5.946437 0 0 0 0.454784 0.72571 0.72571 0.274649 0.274649 12 0
#
Si O Cu 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 2.68 471.18 260.893 2.80 0.10 2.4799 5.36 1830.8 3326.69 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -1.8349 5.5046 0.00148 -0.00112 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.922011 2.999911 0.971086 12 0
Cu O Si 1 0 1 0 1 0.140835 1.681711 2.68 146.987 260.893 2.40 0.10 2.794608 5.36 952.693 3326.69 0 0 0 0 0 0 0.15867 1.106214 0.533319 1.857837 -6 2 0.1677645 -0.161007 -1.8349 5.5046 0.00148 -0.00112 0 5.946437 0 0 0 0.454784 0.72571 -3.922011 0.274649 0.971086 12 0
Si Cu O 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.681711 471.18 146.987 2.70 0.10 2.4799 2.794608 1830.8 952.693 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -6 2 0.1677645 -0.161007 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 0.72571 2.999911 0.274649 12 0
Cu Si O 1 0 1 0 1 0.140835 1.681711 1.7322 146.987 471.18 2.70 0.10 2.794608 2.4799 952.693 1830.8 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -4 4 1.651725 -1.658949 0 5.946437 0 0 0 0.454784 0.72571 -0.499378 0.274649 2.999911 12 0
O Si Cu 1 6.6 1 -0.229 1 2 2.68 1.7322 260.893 471.18 2.80 0.10 5.36 2.4799 3326.69 1830.8 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 1.651725 -1.658949 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -0.499378 0.971086 2.999911 12 0
O Cu Si 1 6.6 1 -0.229 1 2 2.68 1.681711 260.893 146.987 2.40 0.10 5.36 2.794608 3326.69 952.693 0 0 0 0 0 0 0.15867 1.106214 0.533319 1.857837 -1.8349 5.5046 0.00148 -0.00112 -6 2 0.1677645 -0.161007 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.72571 0.971086 0.274649 12 0
#
Cu O O 1 0 1 0 1 0.140835 1.681711 2.68 146.987 260.893 2.40 0.110 2.794608 5.36 952.693 3326.69 0 0 0 360 3.0 0 0.15867 1.106214 0.533319 1.857837 -6 2 0.1677645 -0.161007 -1.8349 5.5046 0.00148 -0.00112 0 5.946437 0 0 0 0.454784 0.72571 -3.922011 0.274649 0.971086 12 -1.0
O Cu Cu 1 6.6 1 -0.229 1 2 2.68 1.681711 260.893 146.987 2.40 0.110 5.36 2.794608 3326.69 952.693 0 0 0 109.47 2.98 0 0.15867 1.106214 0.533319 1.857837 -1.8349 5.5046 0.00148 -0.00112 -6 2 0.1677645 -0.161007 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.72571 0.971086 0.274649 12 0
Cu O Cu 1 0 1 0 1 0.140835 1.681711 2.68 146.987 260.893 2.40 0.110 2.794608 5.36 952.693 3326.69 0 0 0 0 0 0 0.15867 1.106214 0.533319 1.857837 -6 2 0.1677645 -0.161007 -1.8349 5.5046 0.00148 -0.00112 0 5.946437 0 0 0 0.454784 0.72571 -3.922011 0.274649 0.971086 12 0
O Cu O 1 6.6 1 -0.229 1 2 2.68 1.681711 260.893 146.987 2.40 0.110 5.36 2.794608 3326.69 952.693 0 0 0 0 0 0 0.15867 1.106214 0.533319 1.857837 -1.8349 5.5046 0.00148 -0.00112 -6 2 0.1677645 -0.161007 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.72571 0.971086 0.274649 12 0
Cu Cu O 1 0 1 0 1 0.140835 1.681711 1.681711 146.987 146.987 2.90 0.05 2.794608 2.794608 952.693 952.693 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -6 2 0.1677645 -0.161007 0 5.946437 0 0 0 0.454784 0.72571 0.72571 0.274649 0.274649 12 0
O O Cu 1 6.6 1 -0.229 1 2 2.68 2.68 260.893 260.893 2.80 0.20 5.36 5.36 3326.69 3326.69 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -1.8349 5.5046 0.00148 -0.00112 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.922011 0.971086 0.971086 12 0
#
Si Hf Hf 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 0.959614 471.18 55.9421 3.26 0.15 2.4799 2.069563 1830.8 707.53 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 0.26152 -0.25918 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.92875 2.999911 4.83958 12 0
Hf Si Si 1 0 1 0 1.011011 0.046511 0.959614 1.7322 55.9421 471.18 3.26 0.15 2.069563 2.4799 707.53 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 1.651725 -1.658949 0 3.13952 0 0.00941 0 0.719131 -3.92875 -0.499378 4.83958 2.999911 12 0
Si Hf Si 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 0.959614 471.18 55.9421 3.26 0.15 2.4799 2.069563 1830.8 707.53 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 0.26152 -0.25918 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.92875 2.999911 4.83958 12 0
Hf Si Hf 1 0 1 0 1.011011 0.046511 0.959614 1.7322 55.9421 471.18 3.26 0.15 2.069563 2.4799 707.53 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 1.651725 -1.658949 0 3.13952 0 0.00941 0 0.719131 -3.92875 -0.499378 4.83958 2.999911 12 0
Si Si Hf 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.7322 471.18 471.18 3.26 0.15 2.4799 2.4799 1830.8 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 1.651725 -1.658949 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -0.499378 2.999911 2.999911 12 0
Hf Hf Si 1 0 1 0 1.011011 0.046511 0.959614 0.959614 55.9421 55.9421 3.26 0.15 2.069563 2.069563 707.53 707.53 0 0 0 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 0.26152 -0.25918 0 3.13952 0 0.00941 0 0.719131 -3.92875 -3.92875 4.83958 4.83958 12 0
#
Si O Hf 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 2.68 471.18 260.893 3.196 0.21 2.4799 5.36 1830.8 3326.69 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -1.8349 5.5046 0.00148 -0.00112 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.922011 2.999911 0.971086 12 0
Hf O Si 1 0 1 0 1.011011 0.046511 0.959614 2.68 55.9421 260.893 3.196 0.21 2.069563 5.36 707.53 3326.69 0 0 0 0 0 0.14 1 1 1 1 -4 4 0.26152 -0.25918 -1.8349 5.5046 0.00148 -0.00112 0 3.13952 0 0.00941 0 0.719131 -3.92875 -3.922011 4.83958 0.971086 12 0.16
Si Hf O 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 0.959614 471.18 55.9421 3.26 0.15 2.4799 2.069563 1830.8 707.53 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 0.26152 -0.25918 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.92875 2.999911 4.83958 12 0
Hf Si O 1 0 1 0 1.011011 0.046511 0.959614 1.7322 55.9421 471.18 3.26 0.15 2.069563 2.4799 707.53 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 1.651725 -1.658949 0 3.13952 0 0.00941 0 0.719131 -3.92875 -0.499378 4.83958 2.999911 12 0
O Si Hf 1 6.6 1 -0.229 1 2 2.68 1.7322 260.893 471.18 3.196 0.21 5.36 2.4799 3326.69 1830.8 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 1.651725 -1.658949 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -0.499378 0.971086 2.999911 12 0
O Hf Si 1 6.6 1 -0.229 1 2 2.68 0.959614 260.893 55.9421 3.196 0.21 5.36 2.069563 3326.69 707.53 0 0 0 0 0 0.14 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 0.26152 -0.25918 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.92875 0.971086 4.83958 12 0.16
#
Hf O O 1 0 1 0 1.011011 0.046511 0.959614 2.68 55.9421 260.893 3.29 0.12 2.069563 5.36 707.53 3326.69 0 0 0 0 0 0.14 1 1 1 1 -4 4 0.26152 -0.25918 -1.8349 5.5046 0.00148 -0.00112 0 3.13952 0 0.00941 0 0.679131 -3.92875 -3.922011 4.83958 0.971086 12 0.30
O Hf Hf 1 6.6 1 -0.229 1 2 2.68 0.959614 260.893 55.9421 3.29 0.12 5.36 2.069563 3326.69 707.53 0 0 0 0 0 0.14 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 0.26152 -0.25918 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.92875 0.971086 4.83958 12 0.30
Hf O Hf 1 0 1 0 1.011011 0.046511 0.959614 2.68 55.9421 260.893 3.29 0.12 2.069563 5.36 707.53 3326.69 0 0 0 0 0 0.14 1 1 1 1 -4 4 0.26152 -0.25918 -1.8349 5.5046 0.00148 -0.00112 0 3.13952 0 0.00941 0 0.679131 -3.92875 -3.922011 4.83958 0.971086 12 0.30
O Hf O 1 6.6 1 -0.229 1 2 2.68 0.959614 260.893 55.9421 3.29 0.12 5.36 2.069563 3326.69 707.53 0 0 0 0 0 0.14 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 0.26152 -0.25918 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.92875 0.971086 4.83958 12 0.30
Hf Hf O 1 0 1 0 1.011011 0.046511 0.959614 0.959614 55.9421 55.9421 3.29 0.12 2.069563 2.069563 707.53 707.53 0 0 0 0 0 0.0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 0.26152 -0.25918 0 3.13952 0 0.00941 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0.30
O O Hf 1 6.6 1 -0.229 1 2 2.68 2.68 260.893 260.893 3.29 0.12 5.36 5.36 3326.69 3326.69 0 0 0 0 0 0.0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -1.8349 5.5046 0.00148 -0.00112 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.922011 0.971086 0.971086 12 0.30
#
Ti O O 1 0 1 0 1.255016 0.089078 1.226342 2.68 99.3916 260.893 3.25 0.10 2.082408 5.36 546.386 3326.69 0 0 0 90 0.403105 8.45 0.088406 0.969934 0.296577 1.326746 -4 4 2.508854 -2.511416 -1.8349 5.5046 0.00148 -0.00112 0 1.943430774 0 0.254695274 0 0.873685 0.392632 -3.922011 1.78349 0.971086 12 0.0
O Ti Ti 1 6.6 1 -0.229 1 2 2.68 1.226342 260.893 99.3916 3.25 0.10 5.36 2.082408 3326.69 546.386 0 0 0 130.54 0.202777 8.45 0.088406 0.969934 0.296577 1.326746 -1.8349 5.5046 0.00148 -0.00112 -4 4 2.508854 -2.511416 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.392632 0.971086 1.78349 12 0.0
Ti O Ti 1 0 1 0 1.255016 0.089078 1.226342 2.68 99.3916 260.893 3.25 0.10 2.082408 5.36 546.386 3326.69 0 0 0 0 0 8.45 0.088406 0.969934 0.296577 1.326746 -4 4 2.508854 -2.511416 -1.8349 5.5046 0.00148 -0.00112 0 1.943430774 0 0.254695274 0 0.873685 0.392632 -3.922011 1.78349 0.971086 12 0.0
O Ti O 1 6.6 1 -0.229 1 2 2.68 1.226342 260.893 99.3916 3.25 0.10 5.36 2.082408 3326.69 546.386 0 0 0 0 0 8.45 0.088406 0.969934 0.296577 1.326746 -1.8349 5.5046 0.00148 -0.00112 -4 4 2.508854 -2.511416 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.392632 0.971086 1.78349 12 0.0
Ti Ti O 1 0 1 0 1.255016 0.089078 1.226342 1.226342 99.3916 99.3916 3.25 0.10 2.082408 2.082408 546.386 546.386 0 0 0 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -4 4 2.508854 -2.511416 0 1.943430774 0 0.254695274 0 0.873685 0.392632 0.392632 1.78349 1.78349 12 0.0
O O Ti 1 6.6 1 -0.229 1 2 2.68 2.68 260.893 260.893 2.80 0.20 5.36 5.36 3326.69 3326.69 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -1.8349 5.5046 0.00148 -0.00112 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.922011 0.971086 0.971086 12 0.0
#
Ti Cu Cu 1 0 1 0 1.255016 0.089078 1.226342 1.681711 99.3916 146.987 3.40 0.15 2.082408 2.794608 546.386 952.693 0 0 0 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -6 2 0.1677645 -0.161007 0 1.943430774 0 0.254695274 0 0.873685 0.392632 0.72571 1.78349 0.274649 12 0
Cu Ti Ti 1 0 1 0 1 0.140835 1.681711 1.226342 146.987 99.3916 3.40 0.15 2.794608 2.082408 952.693 546.386 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -4 4 2.508854 -2.511416 0 5.946437 0 0 0 0.454784 0.72571 0.392632 0.274649 1.78349 12 0
Ti Cu Ti 1 0 1 0 1.255016 0.089078 1.226342 1.681711 99.3916 146.987 3.40 0.15 2.082408 2.794608 546.386 952.693 0 0 0 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -6 2 0.1677645 -0.161007 0 1.943430774 0 0.254695274 0 0.873685 0.392632 0.72571 1.78349 0.274649 12 0
Cu Ti Cu 1 0 1 0 1 0.140835 1.681711 1.226342 146.987 99.3916 3.40 0.15 2.794608 2.082408 952.693 546.386 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -4 4 2.508854 -2.511416 0 5.946437 0 0 0 0.454784 0.72571 0.392632 0.274649 1.78349 12 0
Ti Ti Cu 1 0 1 0 1.255016 0.089078 1.226342 1.226342 99.3916 99.3916 3.40 0.10 2.082408 2.082408 546.386 546.386 0 0 0 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -4 4 2.508854 -2.511416 0 1.943430774 0 0.254695274 0 0.873685 0.392632 0.392632 1.78349 1.78349 12 0
Cu Cu Ti 1 0 1 0 1 0.140835 1.681711 1.681711 146.987 146.987 2.90 0.05 2.794608 2.794608 952.693 952.693 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -6 2 0.1677645 -0.161007 0 5.946437 0 0 0 0.454784 0.72571 0.72571 0.274649 0.274649 12 0
#
Ti O Cu 1 0 1 0 1.255016 0.089078 1.226342 2.68 99.3916 260.893 3.25 0.10 2.082408 5.36 546.386 3326.69 0 0 0 0 0 8.45 0.088406 0.969934 0.296577 1.326746 -4 4 2.508854 -2.511416 -1.8349 5.5046 0.00148 -0.00112 0 1.943430774 0 0.254695274 0 0.873685 0.392632 -3.922011 1.78349 0.971086 12 0
Cu O Ti 1 0 1 0 1 0.140835 1.681711 2.68 146.987 260.893 2.40 0.10 2.794608 5.36 952.693 3326.69 0 0 0 0 0 0 0.15867 1.106214 0.533319 1.857837 -6 2 0.1677645 -0.161007 -1.8349 5.5046 0.00148 -0.00112 0 5.946437 0 0 0 0.454784 0.72571 -3.922011 0.274649 0.971086 12 0
Ti Cu O 1 0 1 0 1.255016 0.089078 1.226342 1.681711 99.3916 146.987 3.40 0.15 2.082408 2.794608 546.386 952.693 0 0 0 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -6 2 0.1677645 -0.161007 0 1.943430774 0 0.254695274 0 0.873685 0.392632 0.72571 1.78349 0.274649 12 0
Cu Ti O 1 0 1 0 1 0.140835 1.681711 1.226342 146.987 99.3916 3.40 0.15 2.794608 2.082408 952.693 546.386 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -4 4 2.508854 -2.511416 0 5.946437 0 0 0 0.454784 0.72571 0.392632 0.274649 1.78349 12 0
O Ti Cu 1 6.6 1 -0.229 1 2 2.68 1.226342 260.893 99.3916 3.25 0.10 5.36 2.082408 3326.69 546.386 0 0 0 0 0 8.45 0.088406 0.969934 0.296577 1.326746 -1.8349 5.5046 0.00148 -0.00112 -4 4 2.508854 -2.511416 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.392632 0.971086 1.78349 12 0
O Cu Ti 1 6.6 1 -0.229 1 2 2.68 1.681711 260.893 146.987 2.40 0.10 5.36 2.794608 3326.69 952.693 0 0 0 0 0 0 0.15867 1.106214 0.533319 1.857837 -1.8349 5.5046 0.00148 -0.00112 -6 2 0.1677645 -0.161007 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.72571 0.971086 0.274649 12 0
# COMB parameters for various elements (Si, Cu, Hf, Ti, Zr, U, O) and mixtures (their oxides and alloys)
# Edited by Tzu-Ray Shan from MSE, Univ. FL in Apr 2010
#
# Elements currently available: Si, Cu, Hf, Ti, Zr, U, O
# Oxides currently available: Si-O, Cu-O, Hf-O, Ti-O
#
# Si parameter set from (JG Yu, SB Sinnott, SR Phillpot, Phys. Rev. B 75 085311 2007)
# ,and (TR Shan, BD Devine, SR Phillpot, SB Sinnott, to be sub to Phys. Rev. B)
# O parameter set from (TR Shan, BD Devine, SB Sinnott, SR Phillpot, Phys. Rev. B 81 125328 2010)
# Cu parameter set from (BD Devine, TR Shan, SB Sinnott, SR Phillpot, to be sub to Phys. Rev. B)
# Hf parameter set from (TR Shan, BD Devine, SB Sinnott, SR Phillpot, Phys. Rev. B 81 125328 2010)
# Ti parameter set from (TR Shan, SR Phillpot, SB Sinnott, in preparation)
# U parameter set from (Y Li, TR Shan, SB Sinnott, SR Phillpot, in preparation)
# Zr parameter set from (T Iwasaki, J. Mater. Res. 20 5 1300 2005)
#
# Multiple entries can be added to this file, LAMMPS reads the ones it needs
# Only M-O are added in the potential table, using mixing rules to generate desired alloy (A-B) parameters
# 8 entries for a desired A-B type: AAA, BBB, AAB, ABA, ABB, BAA, BBA, BBA
# 27 entries for a system containing three elements A, B and C
# These entries are in LAMMPS "metal" units
#
Hf Hf Hf 1 0 1 0 1.011011 0.046511 0.959614 0.959614 55.9421 55.9421 3.90 0.10 2.069563 2.069563 707.53 707.53 0 0 0.008 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 0.26152 -0.25918 0 3.139520d0 0 0.009410d0 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0.0
Ti Ti Ti 1 0 1 0 1.255016 0.089078 1.226342 1.226342 99.3916 99.3916 3.40 0.10 2.082408 2.082408 546.386 546.386 0 0 0.0084 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -4 4 2.508854 -2.511416 0 2.46820415900968 0 0.151351003255176 0 0.873685 0.392632 0.392632 1.78349 1.78349 12 0.0
O O O 1 6.6 1 -0.229 1 2 2.68 2.68 260.893 260.893 2.8 0.2 5.36 5.36 3326.69 3326.69 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -1.8349 5.5046 0.00148 -0.00112 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.922011 0.971086 0.971086 12 0.0
Cu Cu Cu 1 0 1 0 1 0.140835 1.681711 1.681711 146.987 146.987 2.95 0.05 2.794608 2.794608 952.693 952.693 0.077 0.0095 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -6 2 0.1677645 -0.161007 0 5.946437 0 0 0 0.454784 0.72571 0.72571 0.274649 0.274649 12 -2.0
Si Si Si 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.7322 471.18 471.18 2.90 0.10 2.4799 2.4799 1830.8 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 1.651725 -1.658949 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -0.499378 2.999911 2.999911 12 0.0
Zr Zr Zr 1 0 1 0 1 0 0.929 0.929 39.9454 39.9454 3.8 0.31 1.857 1.857 382.6 382.6 0 0 0 0 0 0 1 1 1 1 -4 4 1.64 -1.5 -4 4 1.64 -1.5 0 3.139520d0 0 0.009410d0 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0.0
U U U 1 0 1 0 4.346966 0.77617 0.832 0.832 162.6 162.6 3.9 0.15 1.835 1.835 795.6 795.6 0 0 0 0 0 0 1 1 1 1 -4 4 2 -2 -4 4 2 -2 0 3.139520d0 0 0.009410d0 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0.0
#
Si O O 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 2.68 471.18 260.893 2.80 0.25 2.4799 5.36 1830.8 3326.69 0 0 0 109.47 0.3122 0 1 1 1 1 -4 4 1.651725 -1.658949 -1.8349 5.5046 0.00148 -0.00112 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.922011 2.999911 0.971086 12 0
O Si Si 1 6.6 1 -0.229 1 2 2.68 1.7322 260.893 471.18 2.80 0.25 5.36 2.4799 3326.69 1830.8 0 0 0 143.73 2.6 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 1.651725 -1.658949 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -0.499378 0.971086 2.999911 12 0
Si O Si 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 2.68 471.18 260.893 2.80 0.25 2.4799 5.36 1830.8 3326.69 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -1.8349 5.5046 0.00148 -0.00112 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.922011 2.999911 0.971086 12 0
O Si O 1 6.6 1 -0.229 1 2 2.68 1.7322 260.893 471.18 3.20 0.25 5.36 2.4799 3326.69 1830.8 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 1.651725 -1.658949 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -0.499378 0.971086 2.999911 12 0
Si Si O 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.7322 471.18 471.18 2.80 0.25 2.4799 2.4799 1830.8 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 1.651725 -1.658949 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -0.499378 2.999911 2.999911 12 0
O O Si 1 6.6 1 -0.229 1 2 2.68 2.68 260.893 260.893 2.80 0.25 5.36 5.36 3326.69 3326.69 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -1.8349 5.5046 0.00148 -0.00112 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.922011 0.971086 0.971086 12 0
#
Si Cu Cu 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.681711 471.18 146.987 2.70 0.10 2.4799 2.794608 1830.8 952.693 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -6 2 0.1677645 -0.161007 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 0.72571 2.999911 0.274649 12 0
Cu Si Si 1 0 1 0 1 0.140835 1.681711 1.7322 146.987 471.18 2.70 0.10 2.794608 2.4799 952.693 1830.8 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -4 4 1.651725 -1.658949 0 5.946437 0 0 0 0.454784 0.72571 -0.499378 0.274649 2.999911 12 0
Si Cu Si 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.681711 471.18 146.987 2.70 0.10 2.4799 2.794608 1830.8 952.693 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -6 2 0.1677645 -0.161007 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 0.72571 2.999911 0.274649 12 0
Cu Si Cu 1 0 1 0 1 0.140835 1.681711 1.7322 146.987 471.18 2.70 0.10 2.794608 2.4799 952.693 1830.8 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -4 4 1.651725 -1.658949 0 5.946437 0 0 0 0.454784 0.72571 -0.499378 0.274649 2.999911 12 0
Si Si Cu 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.7322 471.18 471.18 2.70 0.10 2.4799 2.4799 1830.8 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 1.651725 -1.658949 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -0.499378 2.999911 2.999911 12 0
Cu Cu Si 1 0 1 0 1 0.140835 1.681711 1.681711 146.987 146.987 2.70 0.10 2.794608 2.794608 952.693 952.693 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -6 2 0.1677645 -0.161007 0 5.946437 0 0 0 0.454784 0.72571 0.72571 0.274649 0.274649 12 0
#
Si O Cu 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 2.68 471.18 260.893 2.80 0.10 2.4799 5.36 1830.8 3326.69 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -1.8349 5.5046 0.00148 -0.00112 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.922011 2.999911 0.971086 12 0
Cu O Si 1 0 1 0 1 0.140835 1.681711 2.68 146.987 260.893 2.40 0.10 2.794608 5.36 952.693 3326.69 0 0 0 0 0 0 0.15867 1.106214 0.533319 1.857837 -6 2 0.1677645 -0.161007 -1.8349 5.5046 0.00148 -0.00112 0 5.946437 0 0 0 0.454784 0.72571 -3.922011 0.274649 0.971086 12 0
Si Cu O 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.681711 471.18 146.987 2.70 0.10 2.4799 2.794608 1830.8 952.693 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -6 2 0.1677645 -0.161007 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 0.72571 2.999911 0.274649 12 0
Cu Si O 1 0 1 0 1 0.140835 1.681711 1.7322 146.987 471.18 2.70 0.10 2.794608 2.4799 952.693 1830.8 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -4 4 1.651725 -1.658949 0 5.946437 0 0 0 0.454784 0.72571 -0.499378 0.274649 2.999911 12 0
O Si Cu 1 6.6 1 -0.229 1 2 2.68 1.7322 260.893 471.18 2.80 0.10 5.36 2.4799 3326.69 1830.8 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 1.651725 -1.658949 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -0.499378 0.971086 2.999911 12 0
O Cu Si 1 6.6 1 -0.229 1 2 2.68 1.681711 260.893 146.987 2.40 0.10 5.36 2.794608 3326.69 952.693 0 0 0 0 0 0 0.15867 1.106214 0.533319 1.857837 -1.8349 5.5046 0.00148 -0.00112 -6 2 0.1677645 -0.161007 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.72571 0.971086 0.274649 12 0
#
Cu O O 1 0 1 0 1 0.140835 1.681711 2.68 146.987 260.893 2.40 0.110 2.794608 5.36 952.693 3326.69 0 0 0 360 3.0 0 0.15867 1.106214 0.533319 1.857837 -6 2 0.1677645 -0.161007 -1.8349 5.5046 0.00148 -0.00112 0 5.946437 0 0 0 0.454784 0.72571 -3.922011 0.274649 0.971086 12 -1.0
O Cu Cu 1 6.6 1 -0.229 1 2 2.68 1.681711 260.893 146.987 2.40 0.110 5.36 2.794608 3326.69 952.693 0 0 0 109.47 2.98 0 0.15867 1.106214 0.533319 1.857837 -1.8349 5.5046 0.00148 -0.00112 -6 2 0.1677645 -0.161007 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.72571 0.971086 0.274649 12 0
Cu O Cu 1 0 1 0 1 0.140835 1.681711 2.68 146.987 260.893 2.40 0.110 2.794608 5.36 952.693 3326.69 0 0 0 0 0 0 0.15867 1.106214 0.533319 1.857837 -6 2 0.1677645 -0.161007 -1.8349 5.5046 0.00148 -0.00112 0 5.946437 0 0 0 0.454784 0.72571 -3.922011 0.274649 0.971086 12 0
O Cu O 1 6.6 1 -0.229 1 2 2.68 1.681711 260.893 146.987 2.40 0.110 5.36 2.794608 3326.69 952.693 0 0 0 0 0 0 0.15867 1.106214 0.533319 1.857837 -1.8349 5.5046 0.00148 -0.00112 -6 2 0.1677645 -0.161007 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.72571 0.971086 0.274649 12 0
Cu Cu O 1 0 1 0 1 0.140835 1.681711 1.681711 146.987 146.987 2.90 0.05 2.794608 2.794608 952.693 952.693 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -6 2 0.1677645 -0.161007 0 5.946437 0 0 0 0.454784 0.72571 0.72571 0.274649 0.274649 12 0
O O Cu 1 6.6 1 -0.229 1 2 2.68 2.68 260.893 260.893 2.80 0.20 5.36 5.36 3326.69 3326.69 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -1.8349 5.5046 0.00148 -0.00112 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.922011 0.971086 0.971086 12 0
#
Si Hf Hf 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 0.959614 471.18 55.9421 3.26 0.15 2.4799 2.069563 1830.8 707.53 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 0.26152 -0.25918 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.92875 2.999911 4.83958 12 0
Hf Si Si 1 0 1 0 1.011011 0.046511 0.959614 1.7322 55.9421 471.18 3.26 0.15 2.069563 2.4799 707.53 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 1.651725 -1.658949 0 3.13952 0 0.00941 0 0.719131 -3.92875 -0.499378 4.83958 2.999911 12 0
Si Hf Si 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 0.959614 471.18 55.9421 3.26 0.15 2.4799 2.069563 1830.8 707.53 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 0.26152 -0.25918 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.92875 2.999911 4.83958 12 0
Hf Si Hf 1 0 1 0 1.011011 0.046511 0.959614 1.7322 55.9421 471.18 3.26 0.15 2.069563 2.4799 707.53 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 1.651725 -1.658949 0 3.13952 0 0.00941 0 0.719131 -3.92875 -0.499378 4.83958 2.999911 12 0
Si Si Hf 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 1.7322 471.18 471.18 3.26 0.15 2.4799 2.4799 1830.8 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 1.651725 -1.658949 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -0.499378 2.999911 2.999911 12 0
Hf Hf Si 1 0 1 0 1.011011 0.046511 0.959614 0.959614 55.9421 55.9421 3.26 0.15 2.069563 2.069563 707.53 707.53 0 0 0 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 0.26152 -0.25918 0 3.13952 0 0.00941 0 0.719131 -3.92875 -3.92875 4.83958 4.83958 12 0
#
Si O Hf 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 2.68 471.18 260.893 3.196 0.21 2.4799 5.36 1830.8 3326.69 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -1.8349 5.5046 0.00148 -0.00112 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.922011 2.999911 0.971086 12 0
Hf O Si 1 0 1 0 1.011011 0.046511 0.959614 2.68 55.9421 260.893 3.196 0.21 2.069563 5.36 707.53 3326.69 0 0 0 0 0 0.14 1 1 1 1 -4 4 0.26152 -0.25918 -1.8349 5.5046 0.00148 -0.00112 0 3.13952 0 0.00941 0 0.719131 -3.92875 -3.922011 4.83958 0.971086 12 0.16
Si Hf O 3 100390 16.218 -0.59826 0.78734 1.0999E-06 1.7322 0.959614 471.18 55.9421 3.26 0.15 2.4799 2.069563 1830.8 707.53 0 0 0 0 0 0 1 1 1 1 -4 4 1.651725 -1.658949 -4 4 0.26152 -0.25918 0 3.625144859 0 0.087067714 0 0.772871 -0.499378 -3.92875 2.999911 4.83958 12 0
Hf Si O 1 0 1 0 1.011011 0.046511 0.959614 1.7322 55.9421 471.18 3.26 0.15 2.069563 2.4799 707.53 1830.8 0 0 0 0 0 0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 1.651725 -1.658949 0 3.13952 0 0.00941 0 0.719131 -3.92875 -0.499378 4.83958 2.999911 12 0
O Si Hf 1 6.6 1 -0.229 1 2 2.68 1.7322 260.893 471.18 3.196 0.21 5.36 2.4799 3326.69 1830.8 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 1.651725 -1.658949 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -0.499378 0.971086 2.999911 12 0
O Hf Si 1 6.6 1 -0.229 1 2 2.68 0.959614 260.893 55.9421 3.196 0.21 5.36 2.069563 3326.69 707.53 0 0 0 0 0 0.14 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 0.26152 -0.25918 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.92875 0.971086 4.83958 12 0.16
#
Hf O O 1 0 1 0 1.011011 0.046511 0.959614 2.68 55.9421 260.893 3.29 0.12 2.069563 5.36 707.53 3326.69 0 0 0 0 0 0.14 1 1 1 1 -4 4 0.26152 -0.25918 -1.8349 5.5046 0.00148 -0.00112 0 3.13952 0 0.00941 0 0.679131 -3.92875 -3.922011 4.83958 0.971086 12 0.30
O Hf Hf 1 6.6 1 -0.229 1 2 2.68 0.959614 260.893 55.9421 3.29 0.12 5.36 2.069563 3326.69 707.53 0 0 0 0 0 0.14 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 0.26152 -0.25918 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.92875 0.971086 4.83958 12 0.30
Hf O Hf 1 0 1 0 1.011011 0.046511 0.959614 2.68 55.9421 260.893 3.29 0.12 2.069563 5.36 707.53 3326.69 0 0 0 0 0 0.14 1 1 1 1 -4 4 0.26152 -0.25918 -1.8349 5.5046 0.00148 -0.00112 0 3.13952 0 0.00941 0 0.679131 -3.92875 -3.922011 4.83958 0.971086 12 0.30
O Hf O 1 6.6 1 -0.229 1 2 2.68 0.959614 260.893 55.9421 3.29 0.12 5.36 2.069563 3326.69 707.53 0 0 0 0 0 0.14 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -4 4 0.26152 -0.25918 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.92875 0.971086 4.83958 12 0.30
Hf Hf O 1 0 1 0 1.011011 0.046511 0.959614 0.959614 55.9421 55.9421 3.29 0.12 2.069563 2.069563 707.53 707.53 0 0 0 0 0 0.0 1 1 1 1 -4 4 0.26152 -0.25918 -4 4 0.26152 -0.25918 0 3.13952 0 0.00941 0 0.679131 -3.92875 -3.92875 4.83958 4.83958 12 0.30
O O Hf 1 6.6 1 -0.229 1 2 2.68 2.68 260.893 260.893 3.29 0.12 5.36 5.36 3326.69 3326.69 0 0 0 0 0 0.0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -1.8349 5.5046 0.00148 -0.00112 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.922011 0.971086 0.971086 12 0.30
#
Ti O O 1 0 1 0 1.255016 0.089078 1.226342 2.68 99.3916 260.893 3.25 0.10 2.082408 5.36 546.386 3326.69 0 0 0 90 0.403105 8.45 0.088406 0.969934 0.296577 1.326746 -4 4 2.508854 -2.511416 -1.8349 5.5046 0.00148 -0.00112 0 1.943430774 0 0.254695274 0 0.873685 0.392632 -3.922011 1.78349 0.971086 12 0.0
O Ti Ti 1 6.6 1 -0.229 1 2 2.68 1.226342 260.893 99.3916 3.25 0.10 5.36 2.082408 3326.69 546.386 0 0 0 130.54 0.202777 8.45 0.088406 0.969934 0.296577 1.326746 -1.8349 5.5046 0.00148 -0.00112 -4 4 2.508854 -2.511416 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.392632 0.971086 1.78349 12 0.0
Ti O Ti 1 0 1 0 1.255016 0.089078 1.226342 2.68 99.3916 260.893 3.25 0.10 2.082408 5.36 546.386 3326.69 0 0 0 0 0 8.45 0.088406 0.969934 0.296577 1.326746 -4 4 2.508854 -2.511416 -1.8349 5.5046 0.00148 -0.00112 0 1.943430774 0 0.254695274 0 0.873685 0.392632 -3.922011 1.78349 0.971086 12 0.0
O Ti O 1 6.6 1 -0.229 1 2 2.68 1.226342 260.893 99.3916 3.25 0.10 5.36 2.082408 3326.69 546.386 0 0 0 0 0 8.45 0.088406 0.969934 0.296577 1.326746 -1.8349 5.5046 0.00148 -0.00112 -4 4 2.508854 -2.511416 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.392632 0.971086 1.78349 12 0.0
Ti Ti O 1 0 1 0 1.255016 0.089078 1.226342 1.226342 99.3916 99.3916 3.25 0.10 2.082408 2.082408 546.386 546.386 0 0 0 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -4 4 2.508854 -2.511416 0 1.943430774 0 0.254695274 0 0.873685 0.392632 0.392632 1.78349 1.78349 12 0.0
O O Ti 1 6.6 1 -0.229 1 2 2.68 2.68 260.893 260.893 2.80 0.20 5.36 5.36 3326.69 3326.69 0 0 0 0 0 0 1 1 1 1 -1.8349 5.5046 0.00148 -0.00112 -1.8349 5.5046 0.00148 -0.00112 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 -3.922011 0.971086 0.971086 12 0.0
#
Ti Cu Cu 1 0 1 0 1.255016 0.089078 1.226342 1.681711 99.3916 146.987 3.40 0.15 2.082408 2.794608 546.386 952.693 0 0 0 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -6 2 0.1677645 -0.161007 0 1.943430774 0 0.254695274 0 0.873685 0.392632 0.72571 1.78349 0.274649 12 0
Cu Ti Ti 1 0 1 0 1 0.140835 1.681711 1.226342 146.987 99.3916 3.40 0.15 2.794608 2.082408 952.693 546.386 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -4 4 2.508854 -2.511416 0 5.946437 0 0 0 0.454784 0.72571 0.392632 0.274649 1.78349 12 0
Ti Cu Ti 1 0 1 0 1.255016 0.089078 1.226342 1.681711 99.3916 146.987 3.40 0.15 2.082408 2.794608 546.386 952.693 0 0 0 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -6 2 0.1677645 -0.161007 0 1.943430774 0 0.254695274 0 0.873685 0.392632 0.72571 1.78349 0.274649 12 0
Cu Ti Cu 1 0 1 0 1 0.140835 1.681711 1.226342 146.987 99.3916 3.40 0.15 2.794608 2.082408 952.693 546.386 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -4 4 2.508854 -2.511416 0 5.946437 0 0 0 0.454784 0.72571 0.392632 0.274649 1.78349 12 0
Ti Ti Cu 1 0 1 0 1.255016 0.089078 1.226342 1.226342 99.3916 99.3916 3.40 0.10 2.082408 2.082408 546.386 546.386 0 0 0 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -4 4 2.508854 -2.511416 0 1.943430774 0 0.254695274 0 0.873685 0.392632 0.392632 1.78349 1.78349 12 0
Cu Cu Ti 1 0 1 0 1 0.140835 1.681711 1.681711 146.987 146.987 2.90 0.05 2.794608 2.794608 952.693 952.693 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -6 2 0.1677645 -0.161007 0 5.946437 0 0 0 0.454784 0.72571 0.72571 0.274649 0.274649 12 0
#
Ti O Cu 1 0 1 0 1.255016 0.089078 1.226342 2.68 99.3916 260.893 3.25 0.10 2.082408 5.36 546.386 3326.69 0 0 0 0 0 8.45 0.088406 0.969934 0.296577 1.326746 -4 4 2.508854 -2.511416 -1.8349 5.5046 0.00148 -0.00112 0 1.943430774 0 0.254695274 0 0.873685 0.392632 -3.922011 1.78349 0.971086 12 0
Cu O Ti 1 0 1 0 1 0.140835 1.681711 2.68 146.987 260.893 2.40 0.10 2.794608 5.36 952.693 3326.69 0 0 0 0 0 0 0.15867 1.106214 0.533319 1.857837 -6 2 0.1677645 -0.161007 -1.8349 5.5046 0.00148 -0.00112 0 5.946437 0 0 0 0.454784 0.72571 -3.922011 0.274649 0.971086 12 0
Ti Cu O 1 0 1 0 1.255016 0.089078 1.226342 1.681711 99.3916 146.987 3.40 0.15 2.082408 2.794608 546.386 952.693 0 0 0 0 0 0 1 1 1 1 -4 4 2.508854 -2.511416 -6 2 0.1677645 -0.161007 0 1.943430774 0 0.254695274 0 0.873685 0.392632 0.72571 1.78349 0.274649 12 0
Cu Ti O 1 0 1 0 1 0.140835 1.681711 1.226342 146.987 99.3916 3.40 0.15 2.794608 2.082408 952.693 546.386 0 0 0 0 0 0 1 1 1 1 -6 2 0.1677645 -0.161007 -4 4 2.508854 -2.511416 0 5.946437 0 0 0 0.454784 0.72571 0.392632 0.274649 1.78349 12 0
O Ti Cu 1 6.6 1 -0.229 1 2 2.68 1.226342 260.893 99.3916 3.25 0.10 5.36 2.082408 3326.69 546.386 0 0 0 0 0 8.45 0.088406 0.969934 0.296577 1.326746 -1.8349 5.5046 0.00148 -0.00112 -4 4 2.508854 -2.511416 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.392632 0.971086 1.78349 12 0
O Cu Ti 1 6.6 1 -0.229 1 2 2.68 1.681711 260.893 146.987 2.40 0.10 5.36 2.794608 3326.69 952.693 0 0 0 0 0 0 0.15867 1.106214 0.533319 1.857837 -1.8349 5.5046 0.00148 -0.00112 -6 2 0.1677645 -0.161007 5.63441383 7.689598017 4.51426991 1.330079082 0 2.243072 -3.922011 0.72571 0.971086 0.274649 12 0

View File

@ -4,10 +4,8 @@ This directory contains 5 benchmark problems which are discussed in
the Benchmark section of the LAMMPS documentation, and on the
Benchmark page of the LAMMPS WWW site (https://www.lammps.org/bench.html).
This directory also has several sub-directories:
This directory also has one sub-directories:
FERMI benchmark scripts for desktop machine with Fermi GPUs (Tesla)
KEPLER benchmark scripts for GPU cluster with Kepler GPUs
POTENTIALS benchmarks scripts for various potentials in LAMMPS
The results for all of these benchmarks are displayed and discussed on

615
cmake/CMakeLists.jpeg Normal file
View File

@ -0,0 +1,615 @@
cmake_minimum_required(VERSION 3.10)
# When using CMake 3.4 and later, don't export symbols from executables unless
# the CMAKE_ENABLE_EXPORTS variable is set.
if(POLICY CMP0065)
cmake_policy(SET CMP0065 NEW)
endif()
if (POLICY CMP0077)
cmake_policy(SET CMP0077 NEW)
endif()
if(CMAKE_EXECUTABLE_SUFFIX)
set(CMAKE_EXECUTABLE_SUFFIX_TMP ${CMAKE_EXECUTABLE_SUFFIX})
endif()
project(libjpeg-turbo C)
set(VERSION 2.1.3)
set(COPYRIGHT_YEAR "1991-2022")
string(REPLACE "." ";" VERSION_TRIPLET ${VERSION})
list(GET VERSION_TRIPLET 0 VERSION_MAJOR)
list(GET VERSION_TRIPLET 1 VERSION_MINOR)
list(GET VERSION_TRIPLET 2 VERSION_REVISION)
function(pad_number NUMBER OUTPUT_LEN)
string(LENGTH "${${NUMBER}}" INPUT_LEN)
if(INPUT_LEN LESS OUTPUT_LEN)
math(EXPR ZEROES "${OUTPUT_LEN} - ${INPUT_LEN} - 1")
set(NUM ${${NUMBER}})
foreach(C RANGE ${ZEROES})
set(NUM "0${NUM}")
endforeach()
set(${NUMBER} ${NUM} PARENT_SCOPE)
endif()
endfunction()
pad_number(VERSION_MINOR 3)
pad_number(VERSION_REVISION 3)
set(LIBJPEG_TURBO_VERSION_NUMBER ${VERSION_MAJOR}${VERSION_MINOR}${VERSION_REVISION})
# CMake 3.14 and later sets CMAKE_MACOSX_BUNDLE to TRUE by default when
# CMAKE_SYSTEM_NAME is iOS, tvOS, or watchOS, which breaks the libjpeg-turbo
# build. (Specifically, when CMAKE_MACOSX_BUNDLE is TRUE, executables for
# Apple platforms are built as application bundles, which causes CMake to
# complain that our install() directives for executables do not specify a
# BUNDLE DESTINATION. Even if CMake did not complain, building executables as
# application bundles would break our iOS packages.)
set(CMAKE_MACOSX_BUNDLE FALSE)
string(TIMESTAMP DEFAULT_BUILD "%Y%m%d")
set(BUILD ${DEFAULT_BUILD} CACHE STRING "Build string (default: ${DEFAULT_BUILD})")
# NOTE: On Windows, this does nothing except when using MinGW or Cygwin.
# CMAKE_BUILD_TYPE has no meaning in Visual Studio, and it always defaults to
# Debug when using NMake.
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
message(STATUS "VERSION = ${VERSION}, BUILD = ${BUILD}")
include(cmakescripts/PackageInfo.cmake)
# Detect CPU type and whether we're building 64-bit or 32-bit code
math(EXPR BITS "${CMAKE_SIZEOF_VOID_P} * 8")
string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} CMAKE_SYSTEM_PROCESSOR_LC)
set(COUNT 1)
foreach(ARCH ${CMAKE_OSX_ARCHITECTURES})
if(COUNT GREATER 1)
message(FATAL_ERROR "The libjpeg-turbo build system does not support multiple values in CMAKE_OSX_ARCHITECTURES.")
endif()
math(EXPR COUNT "${COUNT}+1")
endforeach()
if(CMAKE_SYSTEM_PROCESSOR_LC MATCHES "x86_64" OR
CMAKE_SYSTEM_PROCESSOR_LC MATCHES "amd64" OR
CMAKE_SYSTEM_PROCESSOR_LC MATCHES "i[0-9]86" OR
CMAKE_SYSTEM_PROCESSOR_LC MATCHES "x86" OR
CMAKE_SYSTEM_PROCESSOR_LC MATCHES "ia32")
if(BITS EQUAL 64 OR CMAKE_C_COMPILER_ABI MATCHES "ELF X32")
set(CPU_TYPE x86_64)
else()
set(CPU_TYPE i386)
endif()
if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL ${CPU_TYPE})
set(CMAKE_SYSTEM_PROCESSOR ${CPU_TYPE})
endif()
elseif(CMAKE_SYSTEM_PROCESSOR_LC STREQUAL "aarch64" OR
CMAKE_SYSTEM_PROCESSOR_LC MATCHES "^arm")
if(BITS EQUAL 64)
set(CPU_TYPE arm64)
else()
set(CPU_TYPE arm)
endif()
elseif(CMAKE_SYSTEM_PROCESSOR_LC MATCHES "^ppc" OR
CMAKE_SYSTEM_PROCESSOR_LC MATCHES "^powerpc")
set(CPU_TYPE powerpc)
else()
set(CPU_TYPE ${CMAKE_SYSTEM_PROCESSOR_LC})
endif()
if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR
CMAKE_OSX_ARCHITECTURES MATCHES "arm64" OR
CMAKE_OSX_ARCHITECTURES MATCHES "i386")
set(CPU_TYPE ${CMAKE_OSX_ARCHITECTURES})
endif()
if(CMAKE_OSX_ARCHITECTURES MATCHES "ppc")
set(CPU_TYPE powerpc)
endif()
if(MSVC_IDE AND CMAKE_GENERATOR_PLATFORM MATCHES "arm64")
set(CPU_TYPE arm64)
endif()
message(STATUS "${BITS}-bit build (${CPU_TYPE})")
macro(report_directory var)
if(CMAKE_INSTALL_${var} STREQUAL CMAKE_INSTALL_FULL_${var})
message(STATUS "CMAKE_INSTALL_${var} = ${CMAKE_INSTALL_${var}}")
else()
message(STATUS "CMAKE_INSTALL_${var} = ${CMAKE_INSTALL_${var}} (${CMAKE_INSTALL_FULL_${var}})")
endif()
mark_as_advanced(CLEAR CMAKE_INSTALL_${var})
endmacro()
set(DIRLIST "BINDIR;DATAROOTDIR;DOCDIR;INCLUDEDIR;LIBDIR")
if(UNIX)
list(APPEND DIRLIST "MANDIR")
endif()
foreach(dir ${DIRLIST})
report_directory(${dir})
endforeach()
###############################################################################
# CONFIGURATION OPTIONS
###############################################################################
macro(boolean_number var)
if(${var})
set(${var} 1 ${ARGN})
else()
set(${var} 0 ${ARGN})
endif()
endmacro()
option(ENABLE_SHARED "Build shared libraries" FALSE)
boolean_number(ENABLE_SHARED)
option(ENABLE_STATIC "Build static libraries" TRUE)
boolean_number(ENABLE_STATIC)
option(REQUIRE_SIMD "Generate a fatal error if SIMD extensions are not available for this platform (default is to fall back to a non-SIMD build)" FALSE)
boolean_number(REQUIRE_SIMD)
option(WITH_12BIT "Encode/decode JPEG images with 12-bit samples (implies WITH_ARITH_DEC=0 WITH_ARITH_ENC=0 WITH_JAVA=0 WITH_SIMD=0 WITH_TURBOJPEG=0 )" FALSE)
boolean_number(WITH_12BIT)
option(WITH_ARITH_DEC "Include arithmetic decoding support when emulating the libjpeg v6b API/ABI" TRUE)
boolean_number(WITH_ARITH_DEC)
option(WITH_ARITH_ENC "Include arithmetic encoding support when emulating the libjpeg v6b API/ABI" TRUE)
boolean_number(WITH_ARITH_ENC)
if(CMAKE_C_COMPILER_ABI MATCHES "ELF X32")
set(WITH_JAVA 0)
else()
option(WITH_JAVA "Build Java wrapper for the TurboJPEG API library (implies ENABLE_SHARED=1)" FALSE)
boolean_number(WITH_JAVA)
endif()
option(WITH_JPEG7 "Emulate libjpeg v7 API/ABI (this makes ${CMAKE_PROJECT_NAME} backward-incompatible with libjpeg v6b)" FALSE)
boolean_number(WITH_JPEG7)
option(WITH_JPEG8 "Emulate libjpeg v8 API/ABI (this makes ${CMAKE_PROJECT_NAME} backward-incompatible with libjpeg v6b)" FALSE)
boolean_number(WITH_JPEG8)
option(WITH_MEM_SRCDST "Include in-memory source/destination manager functions when emulating the libjpeg v6b or v7 API/ABI" TRUE)
boolean_number(WITH_MEM_SRCDST)
option(WITH_SIMD "Include SIMD extensions, if available for this platform" FALSE)
boolean_number(WITH_SIMD)
option(WITH_TURBOJPEG "Include the TurboJPEG API library and associated test programs" FALSE)
boolean_number(WITH_TURBOJPEG)
option(WITH_FUZZ "Build fuzz targets" FALSE)
macro(report_option var desc)
if(${var})
message(STATUS "${desc} enabled (${var} = ${${var}})")
else()
message(STATUS "${desc} disabled (${var} = ${${var}})")
endif()
endmacro()
if(WITH_JAVA)
set(ENABLE_SHARED 1)
endif()
# Explicitly setting CMAKE_POSITION_INDEPENDENT_CODE=FALSE disables PIC for all
# targets, which will cause the shared library builds to fail. Thus, if shared
# libraries are enabled and CMAKE_POSITION_INDEPENDENT_CODE is explicitly set
# to FALSE, we need to unset it, thus restoring the default behavior
# (automatically using PIC for shared library targets.)
if(DEFINED CMAKE_POSITION_INDEPENDENT_CODE AND
NOT CMAKE_POSITION_INDEPENDENT_CODE AND ENABLE_SHARED)
unset(CMAKE_POSITION_INDEPENDENT_CODE CACHE)
endif()
report_option(ENABLE_SHARED "Shared libraries")
report_option(ENABLE_STATIC "Static libraries")
if(ENABLE_SHARED)
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR})
endif()
if(WITH_JPEG8 OR WITH_JPEG7)
set(WITH_ARITH_ENC 1)
set(WITH_ARITH_DEC 1)
endif()
if(WITH_JPEG8)
set(WITH_MEM_SRCDST 0)
endif()
if(WITH_12BIT)
set(WITH_ARITH_DEC 0)
set(WITH_ARITH_ENC 0)
set(WITH_JAVA 0)
set(WITH_SIMD 0)
set(WITH_TURBOJPEG 0)
set(BITS_IN_JSAMPLE 12)
else()
set(BITS_IN_JSAMPLE 8)
endif()
report_option(WITH_12BIT "12-bit JPEG support")
if(WITH_ARITH_DEC)
set(D_ARITH_CODING_SUPPORTED 1)
endif()
if(NOT WITH_12BIT)
report_option(WITH_ARITH_DEC "Arithmetic decoding support")
endif()
if(WITH_ARITH_ENC)
set(C_ARITH_CODING_SUPPORTED 1)
endif()
if(NOT WITH_12BIT)
report_option(WITH_ARITH_ENC "Arithmetic encoding support")
endif()
if(NOT WITH_12BIT)
report_option(WITH_TURBOJPEG "TurboJPEG API library")
report_option(WITH_JAVA "TurboJPEG Java wrapper")
endif()
if(WITH_MEM_SRCDST)
set(MEM_SRCDST_SUPPORTED 1)
set(MEM_SRCDST_FUNCTIONS "global: jpeg_mem_dest; jpeg_mem_src;")
endif()
if(NOT WITH_JPEG8)
report_option(WITH_MEM_SRCDST "In-memory source/destination managers")
endif()
set(SO_AGE 2)
if(WITH_MEM_SRCDST)
set(SO_AGE 3)
endif()
if(WITH_JPEG8)
set(JPEG_LIB_VERSION 80)
elseif(WITH_JPEG7)
set(JPEG_LIB_VERSION 70)
else()
set(JPEG_LIB_VERSION 62)
endif()
math(EXPR JPEG_LIB_VERSION_DIV10 "${JPEG_LIB_VERSION} / 10")
math(EXPR JPEG_LIB_VERSION_MOD10 "${JPEG_LIB_VERSION} % 10")
if(JPEG_LIB_VERSION STREQUAL "62")
set(DEFAULT_SO_MAJOR_VERSION ${JPEG_LIB_VERSION})
else()
set(DEFAULT_SO_MAJOR_VERSION ${JPEG_LIB_VERSION_DIV10})
endif()
if(JPEG_LIB_VERSION STREQUAL "80")
set(DEFAULT_SO_MINOR_VERSION 2)
else()
set(DEFAULT_SO_MINOR_VERSION 0)
endif()
# This causes SO_MAJOR_VERSION/SO_MINOR_VERSION to reset to defaults if
# WITH_JPEG7 or WITH_JPEG8 has changed.
if((DEFINED WITH_JPEG7_INT AND NOT WITH_JPEG7 EQUAL WITH_JPEG7_INT) OR
(DEFINED WITH_JPEG8_INT AND NOT WITH_JPEG8 EQUAL WITH_JPEG8_INT))
set(FORCE_SO_VERSION "FORCE")
endif()
set(WITH_JPEG7_INT ${WITH_JPEG7} CACHE INTERNAL "")
set(WITH_JPEG8_INT ${WITH_JPEG8} CACHE INTERNAL "")
set(SO_MAJOR_VERSION ${DEFAULT_SO_MAJOR_VERSION} CACHE STRING
"Major version of the libjpeg API shared library (default: ${DEFAULT_SO_MAJOR_VERSION})"
${FORCE_SO_VERSION})
set(SO_MINOR_VERSION ${DEFAULT_SO_MINOR_VERSION} CACHE STRING
"Minor version of the libjpeg API shared library (default: ${DEFAULT_SO_MINOR_VERSION})"
${FORCE_SO_VERSION})
set(JPEG_LIB_VERSION_DECIMAL "${JPEG_LIB_VERSION_DIV10}.${JPEG_LIB_VERSION_MOD10}")
message(STATUS "Emulating libjpeg API/ABI v${JPEG_LIB_VERSION_DECIMAL} (WITH_JPEG7 = ${WITH_JPEG7}, WITH_JPEG8 = ${WITH_JPEG8})")
message(STATUS "libjpeg API shared library version = ${SO_MAJOR_VERSION}.${SO_AGE}.${SO_MINOR_VERSION}")
# Because the TurboJPEG API library uses versioned symbols and changes the
# names of functions whenever they are modified in a backward-incompatible
# manner, it is always backward-ABI-compatible with itself, so the major and
# minor SO versions don't change. However, we increase the middle number (the
# SO "age") whenever functions are added to the API.
set(TURBOJPEG_SO_MAJOR_VERSION 0)
set(TURBOJPEG_SO_AGE 2)
set(TURBOJPEG_SO_VERSION 0.${TURBOJPEG_SO_AGE}.0)
###############################################################################
# COMPILER SETTINGS
###############################################################################
if(MSVC)
option(WITH_CRT_DLL
"Link all ${CMAKE_PROJECT_NAME} libraries and executables with the C run-time DLL (msvcr*.dll) instead of the static C run-time library (libcmt*.lib.) The default is to use the C run-time DLL only with the libraries and executables that need it."
FALSE)
if(NOT WITH_CRT_DLL)
# Use the static C library for all build types
foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
if(${var} MATCHES "/MD")
string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}")
endif()
endforeach()
endif()
add_definitions(-D_CRT_NONSTDC_NO_WARNINGS)
endif()
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
# Use the maximum optimization level for release builds
foreach(var CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO)
if(${var} MATCHES "-O2")
string(REGEX REPLACE "-O2" "-O3" ${var} "${${var}}")
endif()
endforeach()
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
if(CMAKE_C_COMPILER_ID MATCHES "SunPro")
# Use the maximum optimization level for release builds
foreach(var CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO)
if(${var} MATCHES "-xO3")
string(REGEX REPLACE "-xO3" "-xO5" ${var} "${${var}}")
endif()
if(${var} MATCHES "-xO2")
string(REGEX REPLACE "-xO2" "-xO5" ${var} "${${var}}")
endif()
endforeach()
endif()
endif()
string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UC)
set(EFFECTIVE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UC}}")
message(STATUS "Compiler flags = ${EFFECTIVE_C_FLAGS}")
set(EFFECTIVE_LD_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_UC}}")
message(STATUS "Linker flags = ${EFFECTIVE_LD_FLAGS}")
include(CheckCSourceCompiles)
include(CheckIncludeFiles)
include(CheckTypeSize)
check_type_size("size_t" SIZE_T)
check_type_size("unsigned long" UNSIGNED_LONG)
if(SIZE_T EQUAL UNSIGNED_LONG)
check_c_source_compiles("int main(int argc, char **argv) { unsigned long a = argc; return __builtin_ctzl(a); }"
HAVE_BUILTIN_CTZL)
endif()
if(MSVC)
check_include_files("intrin.h" HAVE_INTRIN_H)
endif()
if(UNIX)
if(CMAKE_CROSSCOMPILING)
set(RIGHT_SHIFT_IS_UNSIGNED 0)
else()
include(CheckCSourceRuns)
check_c_source_runs("
#include <stdio.h>
#include <stdlib.h>
int is_shifting_signed (long arg) {
long res = arg >> 4;
if (res == -0x7F7E80CL)
return 1; /* right shift is signed */
/* see if unsigned-shift hack will fix it. */
/* we can't just test exact value since it depends on width of long... */
res |= (~0L) << (32-4);
if (res == -0x7F7E80CL)
return 0; /* right shift is unsigned */
printf(\"Right shift isn't acting as I expect it to.\\\\n\");
printf(\"I fear the JPEG software will not work at all.\\\\n\\\\n\");
return 0; /* try it with unsigned anyway */
}
int main (void) {
exit(is_shifting_signed(-0x7F7E80B1L));
}" RIGHT_SHIFT_IS_UNSIGNED)
endif()
endif()
if(MSVC)
set(INLINE_OPTIONS "__inline;inline")
else()
set(INLINE_OPTIONS "__inline__;inline")
endif()
option(FORCE_INLINE "Force function inlining" TRUE)
boolean_number(FORCE_INLINE)
if(FORCE_INLINE)
if(MSVC)
list(INSERT INLINE_OPTIONS 0 "__forceinline")
else()
list(INSERT INLINE_OPTIONS 0 "inline __attribute__((always_inline))")
list(INSERT INLINE_OPTIONS 0 "__inline__ __attribute__((always_inline))")
endif()
endif()
foreach(inline ${INLINE_OPTIONS})
check_c_source_compiles("${inline} static int foo(void) { return 0; } int main(void) { return foo(); }"
INLINE_WORKS)
if(INLINE_WORKS)
set(INLINE ${inline})
break()
endif()
endforeach()
if(NOT INLINE_WORKS)
message(FATAL_ERROR "Could not determine how to inline functions.")
endif()
message(STATUS "INLINE = ${INLINE} (FORCE_INLINE = ${FORCE_INLINE})")
if(WITH_TURBOJPEG)
if(MSVC)
set(THREAD_LOCAL "__declspec(thread)")
else()
set(THREAD_LOCAL "__thread")
endif()
check_c_source_compiles("${THREAD_LOCAL} int i; int main(void) { i = 0; return i; }" HAVE_THREAD_LOCAL)
if(HAVE_THREAD_LOCAL)
message(STATUS "THREAD_LOCAL = ${THREAD_LOCAL}")
else()
message(WARNING "Thread-local storage is not available. The TurboJPEG API library's global error handler will not be thread-safe.")
unset(THREAD_LOCAL)
endif()
endif()
if(UNIX AND NOT APPLE)
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/conftest.map "VERS_1 { global: *; };")
set(CMAKE_REQUIRED_FLAGS
"-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
check_c_source_compiles("int main(void) { return 0; }" HAVE_VERSION_SCRIPT)
set(CMAKE_REQUIRED_FLAGS)
file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/conftest.map)
if(HAVE_VERSION_SCRIPT)
message(STATUS "Linker supports GNU-style version scripts")
set(MAPFLAG "-Wl,--version-script,")
set(TJMAPFLAG "-Wl,--version-script,")
else()
message(STATUS "Linker does not support GNU-style version scripts")
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
# The Solaris linker doesn't like our version script for the libjpeg API
# library, but the version script for the TurboJPEG API library should
# still work.
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/conftest.map
"VERS_1 { global: foo; local: *; }; VERS_2 { global: foo2; } VERS_1;")
set(CMAKE_REQUIRED_FLAGS "-Wl,-M,${CMAKE_CURRENT_BINARY_DIR}/conftest.map -shared")
check_c_source_compiles("int foo() { return 0; } int foo2() { return 2; }"
HAVE_MAPFILE)
set(CMAKE_REQUIRED_FLAGS)
file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/conftest.map)
if(HAVE_MAPFILE)
message(STATUS "Linker supports mapfiles")
set(TJMAPFLAG "-Wl,-M,")
else()
message(STATUS "Linker does not support mapfiles")
endif()
endif()
endif()
endif()
# Generate files
if(WIN32)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/win/jconfig.h.in jconfig.h)
else()
configure_file(jconfig.h.in jconfig.h)
endif()
configure_file(jconfigint.h.in jconfigint.h)
configure_file(jversion.h.in jversion.h)
if(UNIX)
configure_file(libjpeg.map.in libjpeg.map)
endif()
# Include directories and compiler definitions
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
###############################################################################
# TARGETS
###############################################################################
if(CMAKE_EXECUTABLE_SUFFIX_TMP)
set(CMAKE_EXECUTABLE_SUFFIX ${CMAKE_EXECUTABLE_SUFFIX_TMP})
endif()
message(STATUS "CMAKE_EXECUTABLE_SUFFIX = ${CMAKE_EXECUTABLE_SUFFIX}")
set(JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
jcicc.c jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c
jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c
jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdicc.c jdinput.c
jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c
jdtrans.c jerror.c jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c
jidctint.c jidctred.c jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c)
if(WITH_ARITH_ENC OR WITH_ARITH_DEC)
set(JPEG_SOURCES ${JPEG_SOURCES} jaricom.c)
endif()
if(WITH_ARITH_ENC)
set(JPEG_SOURCES ${JPEG_SOURCES} jcarith.c)
endif()
if(WITH_ARITH_DEC)
set(JPEG_SOURCES ${JPEG_SOURCES} jdarith.c)
endif()
if(WITH_SIMD)
add_subdirectory(simd)
if(NEON_INTRINSICS)
add_definitions(-DNEON_INTRINSICS)
endif()
elseif(NOT WITH_12BIT)
message(STATUS "SIMD extensions: None (WITH_SIMD = ${WITH_SIMD})")
endif()
if(WITH_SIMD)
message(STATUS "SIMD extensions: ${CPU_TYPE} (WITH_SIMD = ${WITH_SIMD})")
if(MSVC_IDE OR XCODE)
set_source_files_properties(${SIMD_OBJS} PROPERTIES GENERATED 1)
endif()
else()
add_library(simd OBJECT jsimd_none.c)
if(NOT WIN32 AND (CMAKE_POSITION_INDEPENDENT_CODE OR ENABLE_SHARED))
set_target_properties(simd PROPERTIES POSITION_INDEPENDENT_CODE 1)
endif()
endif()
if(WITH_JAVA)
add_subdirectory(java)
endif()
if(ENABLE_SHARED)
add_subdirectory(sharedlib)
endif()
if(ENABLE_STATIC)
add_library(jpeg-static STATIC ${JPEG_SOURCES} $<TARGET_OBJECTS:simd>
${SIMD_OBJS})
if(NOT MSVC)
set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg)
endif()
endif()
if(WITH_TURBOJPEG)
if(ENABLE_SHARED)
set(TURBOJPEG_SOURCES ${JPEG_SOURCES} $<TARGET_OBJECTS:simd> ${SIMD_OBJS}
turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c rdbmp.c rdppm.c
wrbmp.c wrppm.c)
set(TJMAPFILE ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg-mapfile)
if(WITH_JAVA)
set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} turbojpeg-jni.c)
include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
set(TJMAPFILE ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg-mapfile.jni)
endif()
if(MSVC)
configure_file(${CMAKE_SOURCE_DIR}/win/turbojpeg.rc.in
${CMAKE_BINARY_DIR}/win/turbojpeg.rc)
set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES}
${CMAKE_BINARY_DIR}/win/turbojpeg.rc)
endif()
add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES})
set_property(TARGET turbojpeg PROPERTY COMPILE_FLAGS
"-DBMP_SUPPORTED -DPPM_SUPPORTED")
if(WIN32)
set_target_properties(turbojpeg PROPERTIES DEFINE_SYMBOL DLLDEFINE)
endif()
if(MINGW)
set_target_properties(turbojpeg PROPERTIES LINK_FLAGS -Wl,--kill-at)
endif()
if(APPLE AND (NOT CMAKE_OSX_DEPLOYMENT_TARGET OR
CMAKE_OSX_DEPLOYMENT_TARGET VERSION_GREATER 10.4))
if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG)
set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
endif()
set_target_properties(turbojpeg PROPERTIES MACOSX_RPATH 1)
endif()
set_target_properties(turbojpeg PROPERTIES
SOVERSION ${TURBOJPEG_SO_MAJOR_VERSION} VERSION ${TURBOJPEG_SO_VERSION})
if(TJMAPFLAG)
set_target_properties(turbojpeg PROPERTIES
LINK_FLAGS "${TJMAPFLAG}${TJMAPFILE}")
endif()
endif()
if(ENABLE_STATIC)
add_library(turbojpeg-static STATIC ${JPEG_SOURCES} $<TARGET_OBJECTS:simd>
${SIMD_OBJS} turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c rdbmp.c
rdppm.c wrbmp.c wrppm.c)
set_property(TARGET turbojpeg-static PROPERTY COMPILE_FLAGS
"-DBMP_SUPPORTED -DPPM_SUPPORTED")
if(NOT MSVC)
set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg)
endif()
endif()
endif()
if(WIN32)
set(USE_SETMODE "-DUSE_SETMODE")
endif()
if(WITH_12BIT)
set(COMPILE_FLAGS "-DGIF_SUPPORTED -DPPM_SUPPORTED ${USE_SETMODE}")
else()
set(COMPILE_FLAGS "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED ${USE_SETMODE}")
set(CJPEG_BMP_SOURCES rdbmp.c rdtarga.c)
set(DJPEG_BMP_SOURCES wrbmp.c wrtarga.c)
endif()

741
cmake/CMakeLists.png Normal file
View File

@ -0,0 +1,741 @@
# CMakeLists.txt
# Copyright (C) 2018 Cosmin Truta
# Copyright (C) 2007,2009-2018 Glenn Randers-Pehrson
# Written by Christian Ehrlicher, 2007
# Revised by Roger Lowman, 2009-2010
# Revised by Clifford Yapp, 2011-2012,2017
# Revised by Roger Leigh, 2016
# Revised by Andreas Franek, 2016
# Revised by Sam Serrels, 2017
# Revised by Vadim Barkov, 2017
# Revised by Vicky Pfau, 2018
# Revised by Cameron Cawley, 2018
# Revised by Cosmin Truta, 2018
# Revised by Kyle Bentley, 2018
# This code is released under the libpng license.
# For conditions of distribution and use, see the disclaimer
# and license in png.h
cmake_minimum_required(VERSION 3.10)
cmake_policy(VERSION 3.1)
# When using CMake 3.4 and later, don't export symbols from executables unless
# the CMAKE_ENABLE_EXPORTS variable is set.
if(POLICY CMP0065)
cmake_policy(SET CMP0065 NEW)
endif()
if (POLICY CMP0077)
cmake_policy(SET CMP0077 NEW)
endif()
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
project(libpng C ASM)
enable_testing()
set(PNGLIB_MAJOR 1)
set(PNGLIB_MINOR 6)
set(PNGLIB_RELEASE 37)
set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR})
set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE})
include(GNUInstallDirs)
# needed packages
# Allow users to specify location of Zlib.
# Useful if zlib is being built alongside this as a sub-project.
option(PNG_BUILD_ZLIB "Custom zlib Location, else find_package is used" ON)
if(NOT PNG_BUILD_ZLIB)
find_package(ZLIB REQUIRED)
include_directories(${ZLIB_INCLUDE_DIR})
endif()
if(UNIX AND NOT APPLE AND NOT BEOS AND NOT HAIKU)
find_library(M_LIBRARY m)
else()
# libm is not needed and/or not available
set(M_LIBRARY "")
endif()
# COMMAND LINE OPTIONS
option(PNG_SHARED "Build shared lib" OFF)
option(PNG_STATIC "Build static lib" ON)
option(PNG_TESTS "Build libpng tests" OFF)
# Many more configuration options could be added here
option(PNG_FRAMEWORK "Build OS X framework" OFF)
option(PNG_DEBUG "Build with debug output" OFF)
option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" OFF)
set(PNG_PREFIX "" CACHE STRING "Prefix to add to the API function names")
set(DFA_XTRA "" CACHE FILEPATH "File containing extra configuration settings")
if(PNG_HARDWARE_OPTIMIZATIONS)
# set definitions and sources for arm
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
set(PNG_ARM_NEON_POSSIBLE_VALUES check on off)
set(PNG_ARM_NEON "check" CACHE STRING "Enable ARM NEON optimizations:
check: (default) use internal checking code;
off: disable the optimizations;
on: turn on unconditionally.")
set_property(CACHE PNG_ARM_NEON PROPERTY STRINGS
${PNG_ARM_NEON_POSSIBLE_VALUES})
list(FIND PNG_ARM_NEON_POSSIBLE_VALUES ${PNG_ARM_NEON} index)
if(index EQUAL -1)
message(FATAL_ERROR
"PNG_ARM_NEON must be one of [${PNG_ARM_NEON_POSSIBLE_VALUES}]")
elseif(NOT ${PNG_ARM_NEON} STREQUAL "off")
set(libpng_arm_sources
arm/arm_init.c
arm/filter_neon.S
arm/filter_neon_intrinsics.c
arm/palette_neon_intrinsics.c)
if(${PNG_ARM_NEON} STREQUAL "on")
add_definitions(-DPNG_ARM_NEON_OPT=2)
elseif(${PNG_ARM_NEON} STREQUAL "check")
add_definitions(-DPNG_ARM_NEON_CHECK_SUPPORTED)
endif()
else()
add_definitions(-DPNG_ARM_NEON_OPT=0)
endif()
endif()
# set definitions and sources for powerpc
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64*")
set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off)
set(PNG_POWERPC_VSX "on" CACHE STRING "Enable POWERPC VSX optimizations:
off: disable the optimizations.")
set_property(CACHE PNG_POWERPC_VSX PROPERTY STRINGS
${PNG_POWERPC_VSX_POSSIBLE_VALUES})
list(FIND PNG_POWERPC_VSX_POSSIBLE_VALUES ${PNG_POWERPC_VSX} index)
if(index EQUAL -1)
message(FATAL_ERROR
"PNG_POWERPC_VSX must be one of [${PNG_POWERPC_VSX_POSSIBLE_VALUES}]")
elseif(NOT ${PNG_POWERPC_VSX} STREQUAL "off")
set(libpng_powerpc_sources
powerpc/powerpc_init.c
powerpc/filter_vsx_intrinsics.c)
if(${PNG_POWERPC_VSX} STREQUAL "on")
add_definitions(-DPNG_POWERPC_VSX_OPT=2)
endif()
else()
add_definitions(-DPNG_POWERPC_VSX_OPT=0)
endif()
endif()
# set definitions and sources for intel
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*")
set(PNG_INTEL_SSE_POSSIBLE_VALUES on off)
set(PNG_INTEL_SSE "on" CACHE STRING "Enable INTEL_SSE optimizations:
off: disable the optimizations")
set_property(CACHE PNG_INTEL_SSE PROPERTY STRINGS
${PNG_INTEL_SSE_POSSIBLE_VALUES})
list(FIND PNG_INTEL_SSE_POSSIBLE_VALUES ${PNG_INTEL_SSE} index)
if(index EQUAL -1)
message(FATAL_ERROR
"PNG_INTEL_SSE must be one of [${PNG_INTEL_SSE_POSSIBLE_VALUES}]")
elseif(NOT ${PNG_INTEL_SSE} STREQUAL "off")
set(libpng_intel_sources
intel/intel_init.c
intel/filter_sse2_intrinsics.c)
if(${PNG_INTEL_SSE} STREQUAL "on")
add_definitions(-DPNG_INTEL_SSE_OPT=1)
endif()
else()
add_definitions(-DPNG_INTEL_SSE_OPT=0)
endif()
endif()
# set definitions and sources for MIPS
if(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel*" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el*")
set(PNG_MIPS_MSA_POSSIBLE_VALUES on off)
set(PNG_MIPS_MSA "on" CACHE STRING "Enable MIPS_MSA optimizations:
off: disable the optimizations")
set_property(CACHE PNG_MIPS_MSA PROPERTY STRINGS
${PNG_MIPS_MSA_POSSIBLE_VALUES})
list(FIND PNG_MIPS_MSA_POSSIBLE_VALUES ${PNG_MIPS_MSA} index)
if(index EQUAL -1)
message(FATAL_ERROR
"PNG_MIPS_MSA must be one of [${PNG_MIPS_MSA_POSSIBLE_VALUES}]")
elseif(NOT ${PNG_MIPS_MSA} STREQUAL "off")
set(libpng_mips_sources
mips/mips_init.c
mips/filter_msa_intrinsics.c)
if(${PNG_MIPS_MSA} STREQUAL "on")
add_definitions(-DPNG_MIPS_MSA_OPT=2)
endif()
else()
add_definitions(-DPNG_MIPS_MSA_OPT=0)
endif()
endif()
else(PNG_HARDWARE_OPTIMIZATIONS)
# set definitions and sources for arm
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
add_definitions(-DPNG_ARM_NEON_OPT=0)
endif()
# set definitions and sources for powerpc
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64*")
add_definitions(-DPNG_POWERPC_VSX_OPT=0)
endif()
# set definitions and sources for intel
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*")
add_definitions(-DPNG_INTEL_SSE_OPT=0)
endif()
# set definitions and sources for MIPS
if(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel*" OR
CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el*")
add_definitions(-DPNG_MIPS_MSA_OPT=0)
endif()
endif(PNG_HARDWARE_OPTIMIZATIONS)
# SET LIBNAME
set(PNG_LIB_NAME png${PNGLIB_MAJOR}${PNGLIB_MINOR})
# to distinguish between debug and release lib
set(CMAKE_DEBUG_POSTFIX "d")
include(CheckCSourceCompiles)
option(ld-version-script "Enable linker version script" ON)
if(ld-version-script AND NOT APPLE)
# Check if LD supports linker scripts.
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map" "VERS_1 {
global: sym;
local: *;
};
VERS_2 {
global: sym2;
main;
} VERS_1;
")
set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS})
set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/conftest.map'")
check_c_source_compiles("void sym(void) {}
void sym2(void) {}
int main(void) {return 0;}
" HAVE_LD_VERSION_SCRIPT)
if(NOT HAVE_LD_VERSION_SCRIPT)
set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE} "-Wl,-M -Wl,${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
check_c_source_compiles("void sym(void) {}
void sym2(void) {}
int main(void) {return 0;}
" HAVE_SOLARIS_LD_VERSION_SCRIPT)
endif()
set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE})
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map")
endif()
# Find symbol prefix. Likely obsolete and unnecessary with recent
# toolchains (it's not done in many other projects).
function(symbol_prefix)
set(SYMBOL_PREFIX)
execute_process(COMMAND "${CMAKE_C_COMPILER}" "-E" "-"
INPUT_FILE /dev/null
OUTPUT_VARIABLE OUT
RESULT_VARIABLE STATUS)
if(CPP_FAIL)
message(WARNING "Failed to run the C preprocessor")
endif()
string(REPLACE "\n" ";" OUT "${OUT}")
foreach(line ${OUT})
string(REGEX MATCH "^PREFIX=" found_match "${line}")
if(found_match)
string(REGEX REPLACE "^PREFIX=(.*\)" "\\1" prefix "${line}")
string(REGEX MATCH "__USER_LABEL_PREFIX__" found_match "${prefix}")
if(found_match)
string(REGEX REPLACE "(.*)__USER_LABEL_PREFIX__(.*)" "\\1\\2" prefix "${prefix}")
endif()
set(SYMBOL_PREFIX "${prefix}")
endif()
endforeach()
message(STATUS "Symbol prefix: ${SYMBOL_PREFIX}")
set(SYMBOL_PREFIX "${SYMBOL_PREFIX}" PARENT_SCOPE)
endfunction()
if(UNIX)
symbol_prefix()
endif()
find_program(AWK NAMES gawk awk)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
if(NOT AWK OR ANDROID)
# No awk available to generate sources; use pre-built pnglibconf.h
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt
${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h)
add_custom_target(genfiles) # Dummy
else()
include(CMakeParseArguments)
# Generate .chk from .out with awk
# generate_chk(INPUT inputfile OUTPUT outputfile [DEPENDS dep1 [dep2...]])
function(generate_chk)
set(options)
set(oneValueArgs INPUT OUTPUT)
set(multiValueArgs DEPENDS)
cmake_parse_arguments(_GC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if(NOT _GC_INPUT)
message(FATAL_ERROR "generate_chk: Missing INPUT argument")
endif()
if(NOT _GC_OUTPUT)
message(FATAL_ERROR "generate_chk: Missing OUTPUT argument")
endif()
add_custom_command(OUTPUT "${_GC_OUTPUT}"
COMMAND "${CMAKE_COMMAND}"
"-DINPUT=${_GC_INPUT}"
"-DOUTPUT=${_GC_OUTPUT}"
-P "${CMAKE_CURRENT_BINARY_DIR}/scripts/genchk.cmake"
DEPENDS "${_GC_INPUT}" ${_GC_DEPENDS}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endfunction()
# Generate .out from .c with awk
# generate_out(INPUT inputfile OUTPUT outputfile [DEPENDS dep1 [dep2...]])
function(generate_out)
set(options)
set(oneValueArgs INPUT OUTPUT)
set(multiValueArgs DEPENDS)
cmake_parse_arguments(_GO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if(NOT _GO_INPUT)
message(FATAL_ERROR "generate_out: Missing INPUT argument")
endif()
if(NOT _GO_OUTPUT)
message(FATAL_ERROR "generate_out: Missing OUTPUT argument")
endif()
add_custom_command(OUTPUT "${_GO_OUTPUT}"
COMMAND "${CMAKE_COMMAND}"
"-DINPUT=${_GO_INPUT}"
"-DOUTPUT=${_GO_OUTPUT}"
-P "${CMAKE_CURRENT_BINARY_DIR}/scripts/genout.cmake"
DEPENDS "${_GO_INPUT}" ${_GO_DEPENDS}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endfunction()
# Generate specific source file with awk
# generate_source(OUTPUT outputfile [DEPENDS dep1 [dep2...]])
function(generate_source)
set(options)
set(oneValueArgs OUTPUT)
set(multiValueArgs DEPENDS)
cmake_parse_arguments(_GSO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if(NOT _GSO_OUTPUT)
message(FATAL_ERROR "generate_source: Missing OUTPUT argument")
endif()
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${_GSO_OUTPUT}"
COMMAND "${CMAKE_COMMAND}"
"-DOUTPUT=${_GSO_OUTPUT}"
-P "${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake"
DEPENDS ${_GSO_DEPENDS}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endfunction()
# Copy file
function(generate_copy source destination)
add_custom_command(OUTPUT "${destination}"
COMMAND "${CMAKE_COMMAND}" -E remove "${destination}"
COMMAND "${CMAKE_COMMAND}" -E copy "${source}"
"${destination}"
DEPENDS "${source}")
endfunction()
# Generate scripts/pnglibconf.h
generate_source(OUTPUT "scripts/pnglibconf.c"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk"
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h")
# Generate pnglibconf.c
generate_source(OUTPUT "pnglibconf.c"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk"
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h")
if(PNG_PREFIX)
set(PNGLIBCONF_H_EXTRA_DEPENDS
"${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/macro.lst")
set(PNGPREFIX_H_EXTRA_DEPENDS
"${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out")
endif()
generate_out(INPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out")
# Generate pnglibconf.h
generate_source(OUTPUT "pnglibconf.h"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out"
${PNGLIBCONF_H_EXTRA_DEPENDS})
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/intprefix.c"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h")
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/prefix.c"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h"
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h"
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out")
# Generate pngprefix.h
generate_source(OUTPUT "pngprefix.h"
DEPENDS ${PNGPREFIX_H_EXTRA_DEPENDS})
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/sym.c"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h")
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.c"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h"
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt")
generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/vers.c"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h"
"${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h"
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h")
generate_chk(INPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out"
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/checksym.awk"
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.def")
add_custom_target(symbol-check DEPENDS
"${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk")
generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out"
"${CMAKE_CURRENT_BINARY_DIR}/libpng.sym")
generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out"
"${CMAKE_CURRENT_BINARY_DIR}/libpng.vers")
add_custom_target(genvers DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers")
add_custom_target(gensym DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym")
add_custom_target("genprebuilt"
COMMAND "${CMAKE_COMMAND}"
"-DOUTPUT=scripts/pnglibconf.h.prebuilt"
-P "${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
# A single target handles generation of all generated files. If
# they are depended upon separately by multiple targets, this
# confuses parallel make (it would require a separate top-level
# target for each file to track the dependencies properly).
add_custom_target(genfiles DEPENDS
"${CMAKE_CURRENT_BINARY_DIR}/libpng.sym"
"${CMAKE_CURRENT_BINARY_DIR}/libpng.vers"
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c"
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h"
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out"
"${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/pnglibconf.c"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out"
"${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out")
endif(NOT AWK OR ANDROID)
# OUR SOURCES
set(libpng_public_hdrs
png.h
pngconf.h
"${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h"
)
set(libpng_private_hdrs
pngpriv.h
pngdebug.h
pnginfo.h
pngstruct.h
)
if(AWK AND NOT ANDROID)
list(APPEND libpng_private_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h")
endif()
set(libpng_sources
${libpng_public_hdrs}
${libpng_private_hdrs}
png.c
pngerror.c
pngget.c
pngmem.c
pngpread.c
pngread.c
pngrio.c
pngrtran.c
pngrutil.c
pngset.c
pngtrans.c
pngwio.c
pngwrite.c
pngwtran.c
pngwutil.c
${libpng_arm_sources}
${libpng_intel_sources}
${libpng_mips_sources}
${libpng_powerpc_sources}
)
set(pngtest_sources
pngtest.c
)
set(pngvalid_sources
contrib/libtests/pngvalid.c
)
set(pngstest_sources
contrib/libtests/pngstest.c
)
set(pngunknown_sources
contrib/libtests/pngunknown.c
)
set(pngimage_sources
contrib/libtests/pngimage.c
)
set(pngfix_sources
contrib/tools/pngfix.c
)
set(png_fix_itxt_sources
contrib/tools/png-fix-itxt.c
)
if(MSVC)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
endif()
if(PNG_DEBUG)
add_definitions(-DPNG_DEBUG)
endif()
# NOW BUILD OUR TARGET
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${ZLIB_INCLUDE_DIR})
unset(PNG_LIB_TARGETS)
if(PNG_STATIC)
# does not work without changing name
set(PNG_LIB_NAME_STATIC png_static)
add_library(png_static STATIC ${libpng_sources})
add_dependencies(png_static genfiles)
# MSVC doesn't use a different file extension for shared vs. static
# libs. We are able to change OUTPUT_NAME to remove the _static
# for all other platforms.
if(NOT MSVC)
set_target_properties(png_static PROPERTIES
OUTPUT_NAME "${PNG_LIB_NAME}"
CLEAN_DIRECT_OUTPUT 1)
else()
set_target_properties(png_static PROPERTIES
OUTPUT_NAME "${PNG_LIB_NAME}_static"
CLEAN_DIRECT_OUTPUT 1)
endif()
list(APPEND PNG_LIB_TARGETS png_static)
if(MSVC)
# msvc does not append 'lib' - do it here to have consistent name
set_target_properties(png_static PROPERTIES PREFIX "lib")
endif()
target_link_libraries(png_static ${M_LIBRARY})
endif()
if(NOT PNG_LIB_TARGETS)
message(SEND_ERROR
"No library variant selected to build. "
"Please enable at least one of the following options: "
"PNG_STATIC, PNG_SHARED, PNG_FRAMEWORK")
endif()
# Set a variable with CMake code which:
# Creates a symlink from src to dest (if possible) or alternatively
# copies if different.
include(CMakeParseArguments)
function(create_symlink DEST_FILE)
cmake_parse_arguments(S "" "FILE;TARGET" "" ${ARGN})
if(NOT S_TARGET AND NOT S_FILE)
message(FATAL_ERROR "create_symlink: Missing TARGET or FILE argument")
endif()
if(S_TARGET AND S_FILE)
message(FATAL_ERROR "create_symlink: Both source file ${S_FILE} and build target ${S_TARGET} arguments are present; can only have one.")
endif()
if(S_FILE)
# If we don't need to symlink something that's coming from a build target,
# we can go ahead and symlink/copy at configure time.
if(CMAKE_HOST_WIN32 AND NOT CYGWIN)
execute_process(
COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${S_FILE} ${DEST_FILE}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
else()
execute_process(
COMMAND ${CMAKE_COMMAND} -E create_symlink ${S_FILE} ${DEST_FILE}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endif()
endif()
if(S_TARGET)
# We need to use generator expressions, which can be a bit tricky, so for
# simplicity make the symlink a POST_BUILD step and use the TARGET
# signature of add_custom_command.
if(CMAKE_HOST_WIN32 AND NOT CYGWIN)
add_custom_command(TARGET ${S_TARGET} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy_if_different $<TARGET_LINKER_FILE_NAME:${S_TARGET}> $<TARGET_LINKER_FILE_DIR:${S_TARGET}>/${DEST_FILE})
else()
add_custom_command(TARGET ${S_TARGET} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E create_symlink $<TARGET_LINKER_FILE_NAME:${S_TARGET}> $<TARGET_LINKER_FILE_DIR:${S_TARGET}>/${DEST_FILE})
endif()
endif()
endfunction()
# Create source generation scripts.
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/genchk.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/scripts/genchk.cmake @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/genout.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/scripts/genout.cmake @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/gensrc.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake @ONLY)
# libpng is a library so default to 'lib'
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
set(CMAKE_INSTALL_LIBDIR lib)
endif()
# CREATE PKGCONFIG FILES
# We use the same files like ./configure, so we have to set its vars.
# Only do this on Windows for Cygwin - the files don't make much sense outside
# of a UNIX look-alike.
if(NOT WIN32 OR CYGWIN OR MINGW)
set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix ${CMAKE_INSTALL_PREFIX})
set(libdir ${CMAKE_INSTALL_FULL_LIBDIR})
set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR})
set(LIBS "-lz -lm")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng.pc.in
${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc @ONLY)
create_symlink(libpng.pc FILE ${PNGLIB_NAME}.pc)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng-config.in
${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config @ONLY)
create_symlink(libpng-config FILE ${PNGLIB_NAME}-config)
endif()
# SET UP LINKS
if(PNG_SHARED)
set_target_properties(png PROPERTIES
# VERSION 16.${PNGLIB_RELEASE}.1.6.37
VERSION 16.${PNGLIB_RELEASE}.0
SOVERSION 16
CLEAN_DIRECT_OUTPUT 1)
endif()
# INSTALL
if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
install(TARGETS ${PNG_LIB_TARGETS}
EXPORT libpng
RUNTIME DESTINATION bin
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(PNG_SHARED)
# Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin
if(CYGWIN OR MINGW)
create_symlink(libpng${CMAKE_IMPORT_LIBRARY_SUFFIX} TARGET png)
install(FILES $<TARGET_LINKER_FILE_DIR:png>/libpng${CMAKE_IMPORT_LIBRARY_SUFFIX}
DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
if(NOT WIN32)
create_symlink(libpng${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET png)
install(FILES $<TARGET_LINKER_FILE_DIR:png>/libpng${CMAKE_SHARED_LIBRARY_SUFFIX}
DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
endif()
if(PNG_STATIC)
if(NOT WIN32 OR CYGWIN OR MINGW)
create_symlink(libpng${CMAKE_STATIC_LIBRARY_SUFFIX} TARGET png_static)
install(FILES $<TARGET_LINKER_FILE_DIR:png_static>/libpng${CMAKE_STATIC_LIBRARY_SUFFIX}
DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
endif()
endif()
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL)
install(FILES ${libpng_public_hdrs} DESTINATION include)
install(FILES ${libpng_public_hdrs} DESTINATION include/${PNGLIB_NAME})
endif()
if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL)
if(NOT WIN32 OR CYGWIN OR MINGW)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config DESTINATION bin)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config DESTINATION bin)
endif()
endif()
if(NOT SKIP_INSTALL_PROGRAMS AND NOT SKIP_INSTALL_ALL)
install(TARGETS ${PNG_BIN_TARGETS}
RUNTIME DESTINATION bin)
endif()
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL)
# Install man pages
if(NOT PNG_MAN_DIR)
set(PNG_MAN_DIR "share/man")
endif()
install(FILES libpng.3 libpngpf.3 DESTINATION ${PNG_MAN_DIR}/man3)
install(FILES png.5 DESTINATION ${PNG_MAN_DIR}/man5)
# Install pkg-config files
if(NOT CMAKE_HOST_WIN32 OR CYGWIN OR MINGW)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config
DESTINATION bin)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config
DESTINATION bin)
endif()
endif()
# Create an export file that CMake users can include() to import our targets.
if(NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL)
install(EXPORT libpng DESTINATION lib/libpng FILE lib${PNG_LIB_NAME}.cmake)
endif()
# what's with libpng-manual.txt and all the extra files?
# UNINSTALL
# do we need this?
# DIST
# do we need this?
# to create msvc import lib for mingw compiled shared lib
# pexports libpng.dll > libpng.def
# lib /def:libpng.def /machine:x86

View File

@ -16,9 +16,13 @@ endif()
project(lammps CXX)
set(SOVERSION 0)
get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
get_filename_component(LAMMPS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/.. ABSOLUTE)
get_filename_component(LAMMPS_LIB_BINARY_DIR ${CMAKE_BINARY_DIR}/lib ABSOLUTE)
# collect all executables and shared libs in the top level build folder
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(LAMMPS_SOURCE_DIR ${LAMMPS_DIR}/src)
set(LAMMPS_LIB_SOURCE_DIR ${LAMMPS_DIR}/lib)
@ -101,8 +105,28 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
endif()
endif()
# silence excessive warnings for new Intel Compilers
if(CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
set(CMAKE_TUNE_DEFAULT "-Wno-tautological-constant-compare -Wno-unused-command-line-argument")
endif()
# silence excessive warnings for PGI/NVHPC compilers
if((CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_CXX_COMPILER_ID STREQUAL "PGI"))
set(CMAKE_TUNE_DEFAULT "-Minform=severe")
endif()
# silence nvcc warnings
if((PKG_KOKKOS) AND (Kokkos_ENABLE_CUDA) AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))
set(CMAKE_TUNE_DEFAULT "${CMAKE_TUNE_DEFAULT} -Xcudafe --diag_suppress=unrecognized_pragma")
endif()
# we require C++11 without extensions. Kokkos requires at least C++14 (currently)
set(CMAKE_CXX_STANDARD 11)
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 11)
endif()
if(CMAKE_CXX_STANDARD LESS 11)
message(FATAL_ERROR "C++ standard must be set to at least 11")
endif()
if(PKG_KOKKOS AND (CMAKE_CXX_STANDARD LESS 14))
set(CMAKE_CXX_STANDARD 14)
endif()
@ -114,6 +138,9 @@ if(MSVC)
add_compile_options(/Zc:__cplusplus)
add_compile_options(/wd4244)
add_compile_options(/wd4267)
if(LAMMPS_EXCEPTIONS)
add_compile_options(/EHsc)
endif()
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
endif()
@ -137,10 +164,12 @@ option(CMAKE_POSITION_INDEPENDENT_CODE "Create object compatible with shared lib
option(BUILD_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF)
option(BUILD_LAMMPS_SHELL "Build and install the LAMMPS shell" OFF)
# allow enabling clang-tidy for C++ files
# Support using clang-tidy for C++ files with selected options
set(ENABLE_CLANG_TIDY OFF CACHE BOOL "Include clang-tidy processing when compiling")
if(ENABLE_CLANG_TIDY)
set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-checks=*-header-filter=.*" CACHE STRING "")
set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-checks=-*,performance-trivially-destructible,performance-unnecessary-copy-initialization,performance-unnecessary-value-param,readability-redundant-control-flow,readability-redundant-declaration,readability-redundant-function-ptr-dereference,readability-redundant-member-init,readability-redundant-string-cstr,readability-redundant-string-init,readability-simplify-boolean-expr,readability-static-accessed-through-instance,readability-static-definition-in-anonymous-namespace,modernize-use-override,modernize-use-bool-literals,modernize-use-emplace,modernize-return-braced-init-list,modernize-use-equals-default,modernize-use-equals-delete,modernize-replace-random-shuffle,modernize-deprecated-headers,modernize-use-nullptr,modernize-use-noexcept,modernize-redundant-void-arg;-fix;-header-filter=.*,header-filter=library.h,header-filter=fmt/*.h" CACHE STRING "clang-tidy settings")
else()
unset(CMAKE_CXX_CLANG_TIDY CACHE)
endif()
include(GNUInstallDirs)
@ -168,6 +197,7 @@ set(STANDARD_PACKAGES
AWPMD
BOCS
BODY
BPM
BROWNIAN
CG-DNA
CG-SDK
@ -184,6 +214,7 @@ set(STANDARD_PACKAGES
DPD-SMOOTH
DRUDE
EFF
ELECTRODE
EXTRA-COMPUTE
EXTRA-DUMP
EXTRA-FIX
@ -204,7 +235,6 @@ set(STANDARD_PACKAGES
MDI
MEAM
MESONT
MESSAGE
MGPT
MISC
ML-HDNNP
@ -280,35 +310,19 @@ if(BUILD_MPI)
# We use a non-standard procedure to cross-compile with MPI on Windows
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
include(MPI4WIN)
target_link_libraries(lammps PUBLIC MPI::MPI_CXX)
else()
find_package(MPI REQUIRED)
target_link_libraries(lammps PUBLIC MPI::MPI_CXX)
option(LAMMPS_LONGLONG_TO_LONG "Workaround if your system or MPI version does not recognize 'long long' data types" OFF)
if(LAMMPS_LONGLONG_TO_LONG)
target_compile_definitions(lammps PRIVATE -DLAMMPS_LONGLONG_TO_LONG)
endif()
endif()
target_link_libraries(lammps PUBLIC MPI::MPI_CXX)
else()
file(GLOB MPI_SOURCES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.cpp)
add_library(mpi_stubs STATIC ${MPI_SOURCES})
set_target_properties(mpi_stubs PROPERTIES OUTPUT_NAME lammps_mpi_stubs${LAMMPS_MACHINE})
target_include_directories(mpi_stubs PUBLIC $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}/STUBS>)
if(BUILD_SHARED_LIBS)
target_link_libraries(lammps PRIVATE mpi_stubs)
if(MSVC)
target_link_libraries(lmp PRIVATE mpi_stubs)
target_include_directories(lmp INTERFACE $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}/STUBS>)
target_compile_definitions(lmp INTERFACE $<INSTALL_INTERFACE:LAMMPS_LIB_NO_MPI>)
endif()
target_include_directories(lammps INTERFACE $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}/STUBS>)
target_compile_definitions(lammps INTERFACE $<INSTALL_INTERFACE:LAMMPS_LIB_NO_MPI>)
else()
target_include_directories(lammps INTERFACE $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}/STUBS>)
target_compile_definitions(lammps INTERFACE $<INSTALL_INTERFACE:LAMMPS_LIB_NO_MPI>)
target_link_libraries(lammps PUBLIC mpi_stubs)
endif()
add_library(MPI::MPI_CXX ALIAS mpi_stubs)
target_sources(lammps PRIVATE ${LAMMPS_SOURCE_DIR}/STUBS/mpi.cpp)
add_library(mpi_stubs INTERFACE)
target_include_directories(mpi_stubs INTERFACE $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}/STUBS>)
target_link_libraries(lammps PUBLIC mpi_stubs)
endif()
set(LAMMPS_SIZES "smallbig" CACHE STRING "LAMMPS integer sizes (smallsmall: all 32-bit, smallbig: 64-bit #atoms #timesteps, bigbig: also 64-bit imageint, 64-bit atom ids)")
@ -319,7 +333,9 @@ string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES)
target_compile_definitions(lammps PUBLIC -DLAMMPS_${LAMMPS_SIZES})
# posix_memalign is not available on Windows
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
# with INTEL package and Intel compilers we use TBB's aligned malloc
if((CMAKE_SYSTEM_NAME STREQUAL "Windows")
AND NOT (PKG_INTEL AND ((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") OR (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM"))))
set(LAMMPS_MEMALIGN "0" CACHE STRING "posix_memalign() is not available on Windows" FORCE)
else()
set(LAMMPS_MEMALIGN "64" CACHE STRING "enables the use of the posix_memalign() call instead of malloc() when large chunks or memory are allocated by LAMMPS. Set to 0 to disable")
@ -344,6 +360,7 @@ pkg_depends(DIELECTRIC KSPACE)
pkg_depends(DIELECTRIC EXTRA-PAIR)
pkg_depends(CG-DNA MOLECULE)
pkg_depends(CG-DNA ASPHERE)
pkg_depends(ELECTRODE KSPACE)
# detect if we may enable OpenMP support by default
set(BUILD_OMP_DEFAULT OFF)
@ -372,14 +389,16 @@ if(BUILD_OMP)
((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0)))
# GCC 9.x and later plus Clang 10.x and later implement strict OpenMP 4.0 semantics for consts.
# Intel 18.0 was tested to support both, so we switch to OpenMP 4+ from 19.x onward to be safe.
target_compile_definitions(lammps PRIVATE -DLAMMPS_OMP_COMPAT=4)
set(LAMMPS_OMP_COMPAT_LEVEL 4)
else()
target_compile_definitions(lammps PRIVATE -DLAMMPS_OMP_COMPAT=3)
set(LAMMPS_OMP_COMPAT_LEVEL 3)
endif()
target_compile_definitions(lammps PRIVATE -DLAMMPS_OMP_COMPAT=${LAMMPS_OMP_COMPAT_LEVEL})
target_link_libraries(lammps PRIVATE OpenMP::OpenMP_CXX)
target_link_libraries(lmp PRIVATE OpenMP::OpenMP_CXX)
endif()
if(PKG_MSCG OR PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_LATTE)
if(PKG_MSCG OR PKG_ATC OR PKG_AWPMD OR PKG_ML-QUIP OR PKG_LATTE OR PKG_ELECTRODE)
enable_language(C)
find_package(LAPACK)
find_package(BLAS)
@ -461,7 +480,7 @@ else()
endif()
foreach(PKG_WITH_INCL KSPACE PYTHON ML-IAP VORONOI COLVARS ML-HDNNP MDI MOLFILE NETCDF
PLUMED QMMM ML-QUIP SCAFACOS MACHDYN VTK KIM LATTE MESSAGE MSCG COMPRESS ML-PACE)
PLUMED QMMM ML-QUIP SCAFACOS MACHDYN VTK KIM LATTE MSCG COMPRESS ML-PACE)
if(PKG_${PKG_WITH_INCL})
include(Packages/${PKG_WITH_INCL})
endif()
@ -478,6 +497,7 @@ set(CMAKE_TUNE_FLAGS "${CMAKE_TUNE_DEFAULT}" CACHE STRING "Compiler and machine
separate_arguments(CMAKE_TUNE_FLAGS)
foreach(_FLAG ${CMAKE_TUNE_FLAGS})
target_compile_options(lammps PRIVATE ${_FLAG})
target_compile_options(lmp PRIVATE ${_FLAG})
endforeach()
########################################################################
# Basic system tests (standard libraries, headers, functions, types) #
@ -582,6 +602,10 @@ foreach(PKG_LIB POEMS ATC AWPMD H5MD MESONT)
endif()
endforeach()
if(PKG_ELECTRODE)
target_link_libraries(lammps PRIVATE ${LAPACK_LIBRARIES})
endif()
if(PKG_AWPMD)
target_link_libraries(awpmd PRIVATE ${LAPACK_LIBRARIES})
endif()
@ -590,11 +614,10 @@ if(PKG_ATC)
if(LAMMPS_SIZES STREQUAL "BIGBIG")
message(FATAL_ERROR "The ATC Package is not compatible with -DLAMMPS_BIGBIG")
endif()
target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES})
if(BUILD_MPI)
target_link_libraries(atc PRIVATE MPI::MPI_CXX)
target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES} MPI::MPI_CXX)
else()
target_link_libraries(atc PRIVATE mpi_stubs)
target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES} mpi_stubs)
endif()
target_include_directories(atc PRIVATE ${LAMMPS_SOURCE_DIR})
target_compile_definitions(atc PRIVATE -DLAMMPS_${LAMMPS_SIZES})
@ -690,6 +713,7 @@ endif()
set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_MACHINE})
set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION})
set_target_properties(lammps PROPERTIES PREFIX "lib")
target_include_directories(lammps PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/lammps>)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps)
foreach(_HEADER ${LAMMPS_CXX_HEADERS})
@ -709,6 +733,9 @@ foreach(_DEF ${LAMMPS_DEFINES})
endforeach()
if(BUILD_SHARED_LIBS)
install(TARGETS lammps EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(NOT BUILD_MPI)
install(TARGETS mpi_stubs EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS)
@ -748,7 +775,7 @@ install(
if(BUILD_SHARED_LIBS)
if(CMAKE_VERSION VERSION_LESS 3.12)
# adjust so we find Python 3 versions before Python 2 on old systems with old CMake
set(Python_ADDITIONAL_VERSIONS 3.9 3.8 3.7 3.6 3.5)
set(Python_ADDITIONAL_VERSIONS 3.12 3.11 3.10 3.9 3.8 3.7 3.6)
find_package(PythonInterp) # Deprecated since version 3.12
if(PYTHONINTERP_FOUND)
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
@ -756,13 +783,15 @@ if(BUILD_SHARED_LIBS)
else()
find_package(Python COMPONENTS Interpreter)
endif()
if(BUILD_IS_MULTI_CONFIG)
set(LIBLAMMPS_SHARED_BINARY ${CMAKE_BINARY_DIR}/$<CONFIG>/liblammps${LAMMPS_MACHINE}${CMAKE_SHARED_LIBRARY_SUFFIX})
else()
set(LIBLAMMPS_SHARED_BINARY ${CMAKE_BINARY_DIR}/liblammps${LAMMPS_MACHINE}${CMAKE_SHARED_LIBRARY_SUFFIX})
endif()
if(Python_EXECUTABLE)
add_custom_target(
install-python ${CMAKE_COMMAND} -E remove_directory build
COMMAND ${Python_EXECUTABLE} install.py -v ${LAMMPS_SOURCE_DIR}/version.h
-p ${LAMMPS_PYTHON_DIR}/lammps
-l ${CMAKE_BINARY_DIR}/liblammps${LAMMPS_MACHINE}${CMAKE_SHARED_LIBRARY_SUFFIX}
WORKING_DIRECTORY ${LAMMPS_PYTHON_DIR}
COMMAND ${Python_EXECUTABLE} ${LAMMPS_PYTHON_DIR}/install.py -p ${LAMMPS_PYTHON_DIR}/lammps -l ${LIBLAMMPS_SHARED_BINARY}
COMMENT "Installing LAMMPS Python module")
else()
add_custom_target(
@ -807,7 +836,6 @@ if(ClangFormat_FOUND)
endif()
get_target_property(DEFINES lammps COMPILE_DEFINITIONS)
get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(BUILD_IS_MULTI_CONFIG)
set(LAMMPS_BUILD_TYPE "Multi-Config")
else()
@ -816,6 +844,7 @@ endif()
include(FeatureSummary)
feature_summary(DESCRIPTION "The following tools and libraries have been found and configured:" WHAT PACKAGES_FOUND)
message(STATUS "<<< Build configuration >>>
LAMMPS Version: ${PROJECT_VERSION}
Operating System: ${CMAKE_SYSTEM_NAME} ${CMAKE_LINUX_DISTRO} ${CMAKE_DISTRO_VERSION}
Build type: ${LAMMPS_BUILD_TYPE}
Install path: ${CMAKE_INSTALL_PREFIX}
@ -925,6 +954,12 @@ if(PKG_KSPACE)
else()
message(STATUS "Kokkos FFT: cuFFT")
endif()
elseif(Kokkos_ENABLE_HIP)
if(FFT STREQUAL "KISS")
message(STATUS "Kokkos FFT: KISS")
else()
message(STATUS "Kokkos FFT: hipFFT")
endif()
else()
message(STATUS "Kokkos FFT: ${FFT}")
endif()

195
cmake/CMakeLists.zlib Normal file
View File

@ -0,0 +1,195 @@
cmake_minimum_required(VERSION 3.10)
# When using CMake 3.4 and later, don't export symbols from executables unless
# the CMAKE_ENABLE_EXPORTS variable is set.
if(POLICY CMP0065)
cmake_policy(SET CMP0065 NEW)
endif()
if (POLICY CMP0077)
cmake_policy(SET CMP0077 NEW)
endif()
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
project(zlib C)
set(VERSION "1.2.11")
option(ASM686 "Enable building i686 assembly implementation" OFF)
option(AMD64 "Enable building amd64 assembly implementation" OFF)
set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
set(INSTALL_MAN_DIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Installation directory for manual pages")
set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
include(CheckTypeSize)
include(CheckFunctionExists)
include(CheckIncludeFile)
include(CheckCSourceCompiles)
check_include_file(sys/types.h HAVE_SYS_TYPES_H)
check_include_file(stdint.h HAVE_STDINT_H)
check_include_file(stddef.h HAVE_STDDEF_H)
#
# Check to see if we have large file support
#
set(CMAKE_REQUIRED_DEFINITIONS -D_LARGEFILE64_SOURCE=1)
# We add these other definitions here because CheckTypeSize.cmake
# in CMake 2.4.x does not automatically do so and we want
# compatibility with CMake 2.4.x.
if(HAVE_SYS_TYPES_H)
list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_SYS_TYPES_H)
endif()
if(HAVE_STDINT_H)
list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDINT_H)
endif()
if(HAVE_STDDEF_H)
list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDDEF_H)
endif()
check_type_size(off64_t OFF64_T)
check_type_size(off64_t OFF64_T)
if(HAVE_OFF64_T)
add_definitions(-D_LARGEFILE64_SOURCE=1)
endif()
set(CMAKE_REQUIRED_DEFINITIONS) # clear variable
#
# Check for fseeko
#
check_function_exists(fseeko HAVE_FSEEKO)
if(NOT HAVE_FSEEKO)
add_definitions(-DNO_FSEEKO)
endif()
#
# Check for unistd.h
#
check_include_file(unistd.h Z_HAVE_UNISTD_H)
if(MSVC)
set(CMAKE_DEBUG_POSTFIX "d")
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
endif()
if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
# If we're doing an out of source build and the user has a zconf.h
# in their source tree...
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h)
file(RENAME ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.included)
endif()
endif()
set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein
${ZLIB_PC} @ONLY)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
#============================================================================
# zlib
#============================================================================
set(ZLIB_PUBLIC_HDRS
${CMAKE_CURRENT_BINARY_DIR}/zconf.h
zlib.h
)
set(ZLIB_PRIVATE_HDRS
crc32.h
deflate.h
gzguts.h
inffast.h
inffixed.h
inflate.h
inftrees.h
trees.h
zutil.h
)
set(ZLIB_SRCS
adler32.c
compress.c
crc32.c
deflate.c
gzclose.c
gzlib.c
gzread.c
gzwrite.c
inflate.c
infback.c
inftrees.c
inffast.c
trees.c
uncompr.c
zutil.c
)
if(NOT MINGW)
set(ZLIB_DLL_SRCS
win32/zlib1.rc # If present will override custom build rule below.
)
endif()
if(CMAKE_COMPILER_IS_GNUCC)
if(ASM686)
set(ZLIB_ASMS contrib/asm686/match.S)
elseif (AMD64)
set(ZLIB_ASMS contrib/amd64/amd64-match.S)
endif ()
if(ZLIB_ASMS)
add_definitions(-DASMV)
set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE)
endif()
endif()
if(MSVC)
if(ASM686)
ENABLE_LANGUAGE(ASM_MASM)
set(ZLIB_ASMS
contrib/masmx86/inffas32.asm
contrib/masmx86/match686.asm
)
elseif (AMD64)
ENABLE_LANGUAGE(ASM_MASM)
set(ZLIB_ASMS
contrib/masmx64/gvmat64.asm
contrib/masmx64/inffasx64.asm
)
endif()
if(ZLIB_ASMS)
add_definitions(-DASMV -DASMINF)
endif()
endif()
# parse the full version number from zlib.h and include in ZLIB_FULL_VERSION
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents)
string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*"
"\\1" ZLIB_FULL_VERSION ${_zlib_h_contents})
if(MINGW)
# This gets us DLL resource information when compiling on MinGW.
if(NOT CMAKE_RC_COMPILER)
set(CMAKE_RC_COMPILER windres.exe)
endif()
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
COMMAND ${CMAKE_RC_COMPILER}
-D GCC_WINDRES
-I ${CMAKE_CURRENT_SOURCE_DIR}
-I ${CMAKE_CURRENT_BINARY_DIR}
-o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
-i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc)
set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
endif(MINGW)
add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
if(UNIX)
# On unix-like platforms the library is almost always called libz
set_target_properties(zlibstatic PROPERTIES OUTPUT_NAME z)
endif()

View File

@ -6,9 +6,9 @@
"configurationType": "Debug",
"buildRoot": "${workspaceRoot}\\build\\${name}",
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-S ${workspaceRoot}\\cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake -DENABLE_TESTING=on",
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"ctestCommandArgs": "-V",
"inheritEnvironments": [ "msvc_x64_x64" ],
"variables": [
{
@ -25,6 +25,44 @@
"name": "LAMMPS_EXCEPTIONS",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "True",
"type": "BOOL"
}
]
},
{
"name": "x64-Release-MSVC",
"generator": "Ninja",
"configurationType": "Release",
"buildRoot": "${workspaceRoot}\\build\\${name}",
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake",
"buildCommandArgs": "",
"ctestCommandArgs": "-V",
"inheritEnvironments": [ "msvc_x64_x64" ],
"variables": [
{
"name": "BUILD_SHARED_LIBS",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_TOOLS",
"value": "True",
"type": "BOOL"
},
{
"name": "LAMMPS_EXCEPTIONS",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "True",
"type": "BOOL"
}
]
},
@ -34,11 +72,16 @@
"configurationType": "Debug",
"buildRoot": "${workspaceRoot}\\build\\${name}",
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-S ${workspaceRoot}\\cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake -DENABLE_TESTING=on",
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake -DCMAKE_C_COMPILER=clang-cl.exe -DCMAKE_CXX_COMPILER=clang-cl.exe",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "clang_cl_x64" ],
"variables": [
{
"name": "BUILD_SHARED_LIBS",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_TOOLS",
"value": "True",
@ -48,19 +91,24 @@
"name": "LAMMPS_EXCEPTIONS",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "True",
"type": "BOOL"
}
]
},
{
"name": "x64-Debug-OneAPI",
"name": "x64-Release-Clang",
"generator": "Ninja",
"configurationType": "Debug",
"configurationType": "Release",
"buildRoot": "${workspaceRoot}\\build\\${name}",
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-S ${workspaceRoot}\\cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake -DENABLE_TESTING=on -DCMAKE_CXX_COMPILER=icx -DCMAKE_C_COMPILER=icx -DBUILD_MPI=off",
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake -DCMAKE_C_COMPILER=clang-cl.exe -DCMAKE_CXX_COMPILER=clang-cl.exe",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ],
"ctestCommandArgs": "-V",
"inheritEnvironments": [ "clang_cl_x64" ],
"variables": [
{
"name": "BUILD_SHARED_LIBS",
@ -76,20 +124,30 @@
"name": "LAMMPS_EXCEPTIONS",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "True",
"type": "BOOL"
}
]
},
{
"name": "x64-Debug-Intel",
"name": "x64-Debug-IntelLLVM",
"generator": "Ninja",
"configurationType": "Debug",
"buildRoot": "${workspaceRoot}\\build\\${name}",
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-S ${workspaceRoot}\\cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake -DENABLE_TESTING=off -DCMAKE_CXX_COMPILER=icl -DCMAKE_C_COMPILER=icl -DCMAKE_Fortran_COMPILER=ifort -DBUILD_MPI=off",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ],
"ctestCommandArgs": "-V",
"inheritEnvironments": [],
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows-intel-llvm.cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake",
"variables": [
{
"name": "PKG_ELECTRODE",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_SHARED_LIBS",
"value": "True",
@ -104,8 +162,147 @@
"name": "LAMMPS_EXCEPTIONS",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "True",
"type": "BOOL"
},
{
"name": "FFT",
"value": "MKL",
"type": "STRING"
}
]
},
{
"name": "x64-Release-IntelLLVM",
"generator": "Ninja",
"configurationType": "Release",
"buildRoot": "${workspaceRoot}\\build\\${name}",
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows-intel-llvm.cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake",
"buildCommandArgs": "",
"ctestCommandArgs": "-V",
"inheritEnvironments": [],
"variables": [
{
"name": "PKG_ELECTRODE",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_SHARED_LIBS",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_TOOLS",
"value": "True",
"type": "BOOL"
},
{
"name": "LAMMPS_EXCEPTIONS",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "True",
"type": "BOOL"
},
{
"name": "FFT",
"value": "MKL",
"type": "STRING"
}
]
},
{
"name": "x64-Debug-Intel-Classic",
"generator": "Ninja",
"configurationType": "Debug",
"buildRoot": "${workspaceRoot}\\build\\${name}",
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows-intel-classic.cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake",
"buildCommandArgs": "",
"ctestCommandArgs": "-V",
"inheritEnvironments": [],
"variables": [
{
"name": "PKG_ELECTRODE",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_SHARED_LIBS",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_TOOLS",
"value": "True",
"type": "BOOL"
},
{
"name": "LAMMPS_EXCEPTIONS",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "False",
"type": "BOOL"
},
{
"name": "FFT",
"value": "MKL",
"type": "STRING"
}
]
},
{
"name": "x64-Release-Intel-Classic",
"generator": "Ninja",
"configurationType": "Release",
"buildRoot": "${workspaceRoot}\\build\\${name}",
"installRoot": "${workspaceRoot}\\install\\${name}",
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows-intel-classic.cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake",
"buildCommandArgs": "",
"ctestCommandArgs": "-V",
"inheritEnvironments": [],
"variables": [
{
"name": "PKG_ELECTRODE",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_SHARED_LIBS",
"value": "True",
"type": "BOOL"
},
{
"name": "BUILD_TOOLS",
"value": "True",
"type": "BOOL"
},
{
"name": "LAMMPS_EXCEPTIONS",
"value": "True",
"type": "BOOL"
},
{
"name": "ENABLE_TESTING",
"value": "False",
"type": "BOOL"
},
{
"name": "FFT",
"value": "MKL",
"type": "STRING"
}
]
}
]
}
}

View File

@ -7,13 +7,13 @@ if(BUILD_DOC)
# Sphinx 3.x requires at least Python 3.5
if(CMAKE_VERSION VERSION_LESS 3.12)
find_package(PythonInterp 3.5 REQUIRED)
set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv -p ${PYTHON_EXECUTABLE})
set(VIRTUALENV ${PYTHON_EXECUTABLE} -m venv)
else()
find_package(Python3 REQUIRED COMPONENTS Interpreter)
if(Python3_VERSION VERSION_LESS 3.5)
message(FATAL_ERROR "Python 3.5 and up is required to build the HTML documentation")
endif()
set(VIRTUALENV ${Python3_EXECUTABLE} -m virtualenv -p ${Python3_EXECUTABLE})
set(VIRTUALENV ${Python3_EXECUTABLE} -m venv)
endif()
find_package(Doxygen 1.8.10 REQUIRED)

View File

@ -8,18 +8,19 @@
#=============================================================================
if(CMAKE_VERSION VERSION_LESS 3.12)
set(Python_ADDITIONAL_VERSIONS 3.12 3.11 3.10 3.9 3.8 3.7 3.6)
find_package(PythonInterp 3.6 QUIET) # Deprecated since version 3.12
if(PYTHONINTERP_FOUND)
set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE})
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
endif()
else()
find_package(Python3 3.6 COMPONENTS Interpreter QUIET)
find_package(Python 3.6 COMPONENTS Interpreter QUIET)
endif()
# Use the Cython executable that lives next to the Python executable
# if it is a local installation.
if(Python3_EXECUTABLE)
get_filename_component(_python_path ${Python3_EXECUTABLE} PATH)
if(Python_EXECUTABLE)
get_filename_component(_python_path ${Python_EXECUTABLE} PATH)
find_program(Cythonize_EXECUTABLE
NAMES cythonize3 cythonize cythonize.bat
HINTS ${_python_path})

View File

@ -24,6 +24,24 @@ function(validate_option name values)
endif()
endfunction(validate_option)
# helper function for getting the most recently modified file or folder from a glob pattern
function(get_newest_file path variable)
file(GLOB _dirs ${path})
set(_besttime 2000-01-01T00:00:00)
set(_bestfile "<unknown>")
foreach(_dir ${_dirs})
file(TIMESTAMP ${_dir} _newtime)
if(_newtime IS_NEWER_THAN _besttime)
set(_bestfile ${_dir})
set(_besttime ${_newtime})
endif()
endforeach()
if(_bestfile STREQUAL "<unknown>")
message(FATAL_ERROR "Could not find valid path at: ${path}")
endif()
set(${variable} ${_bestfile} PARENT_SCOPE)
endfunction()
function(get_lammps_version version_header variable)
file(STRINGS ${version_header} line REGEX LAMMPS_VERSION)
set(MONTHS x Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)

View File

@ -1,50 +1,11 @@
message(STATUS "Downloading and building OpenCL loader library")
set(OPENCL_LOADER_URL "${LAMMPS_THIRDPARTY_URL}/opencl-loader-2021.09.18.tar.gz" CACHE STRING "URL for OpenCL loader tarball")
set(OPENCL_LOADER_MD5 "3b3882627964bd02e5c3b02065daac3c" CACHE STRING "MD5 checksum of OpenCL loader tarball")
set(OPENCL_LOADER_URL "${LAMMPS_THIRDPARTY_URL}/opencl-loader-2022.01.04.tar.gz" CACHE STRING "URL for OpenCL loader tarball")
set(OPENCL_LOADER_MD5 "8d3a801e87a2c6653bf0e27707063914" CACHE STRING "MD5 checksum of OpenCL loader tarball")
mark_as_advanced(OPENCL_LOADER_URL)
mark_as_advanced(OPENCL_LOADER_MD5)
include(ExternalProject)
ExternalProject_Add(opencl_loader
URL ${OPENCL_LOADER_URL}
URL_MD5 ${OPENCL_LOADER_MD5}
SOURCE_DIR "${CMAKE_BINARY_DIR}/opencl_loader-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/opencl_loader-build"
CMAKE_ARGS ${CMAKE_REQUEST_PIC} ${CMAKE_EXTRA_OPENCL_LOADER_OPTS}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
BUILD_BYPRODUCTS <BINARY_DIR>/libOpenCL${CMAKE_STATIC_LIBRARY_SUFFIX}
LOG_DOWNLOAD ON
LOG_CONFIGURE ON
LOG_BUILD ON
INSTALL_COMMAND ""
TEST_COMMAND "")
ExternalProject_Get_Property(opencl_loader SOURCE_DIR)
set(OPENCL_LOADER_INCLUDE_DIR ${SOURCE_DIR}/inc)
# workaround for CMake 3.10 on ubuntu 18.04
file(MAKE_DIRECTORY ${OPENCL_LOADER_INCLUDE_DIR})
ExternalProject_Get_Property(opencl_loader BINARY_DIR)
set(OPENCL_LOADER_LIBRARY_PATH "${BINARY_DIR}/libOpenCL${CMAKE_STATIC_LIBRARY_SUFFIX}")
find_package(Threads QUIET)
if(NOT WIN32)
set(OPENCL_LOADER_DEP_LIBS "Threads::Threads;${CMAKE_DL_LIBS}")
else()
set(OPENCL_LOADER_DEP_LIBS "cfgmgr32;runtimeobject")
endif()
add_library(OpenCL::OpenCL UNKNOWN IMPORTED)
add_dependencies(OpenCL::OpenCL opencl_loader)
set_target_properties(OpenCL::OpenCL PROPERTIES
IMPORTED_LOCATION ${OPENCL_LOADER_LIBRARY_PATH}
INTERFACE_INCLUDE_DIRECTORIES ${OPENCL_LOADER_INCLUDE_DIR}
INTERFACE_LINK_LIBRARIES "${OPENCL_LOADER_DEP_LIBS}")
set(INSTALL_LIBOPENCL OFF CACHE BOOL "" FORCE)
include(ExternalCMakeProject)
ExternalCMakeProject(opencl_loader ${OPENCL_LOADER_URL} ${OPENCL_LOADER_MD5} opencl-loader . "")
add_library(OpenCL::OpenCL ALIAS OpenCL)

View File

@ -19,6 +19,10 @@ endif()
add_library(colvars STATIC ${COLVARS_SOURCES})
target_compile_definitions(colvars PRIVATE -DCOLVARS_LAMMPS)
separate_arguments(CMAKE_TUNE_FLAGS)
foreach(_FLAG ${CMAKE_TUNE_FLAGS})
target_compile_options(colvars PRIVATE ${_FLAG})
endforeach()
set_target_properties(colvars PROPERTIES OUTPUT_NAME lammps_colvars${LAMMPS_MACHINE})
target_include_directories(colvars PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/colvars)
# The line below is needed to locate math_eigen_impl.h

View File

@ -1,10 +1,11 @@
find_package(ZLIB REQUIRED)
target_link_libraries(lammps PRIVATE ZLIB::ZLIB)
find_package(PkgConfig REQUIRED)
pkg_check_modules(Zstd IMPORTED_TARGET libzstd>=1.4)
if(Zstd_FOUND)
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(Zstd IMPORTED_TARGET libzstd>=1.4)
if(Zstd_FOUND)
target_compile_definitions(lammps PRIVATE -DLAMMPS_ZSTD)
target_link_libraries(lammps PRIVATE PkgConfig::Zstd)
endif()
endif()

View File

@ -30,7 +30,15 @@ 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_package(CUDA QUIET)
# augment search path for CUDA toolkit libraries to include the stub versions. Needed to find libcuda.so on machines without a CUDA driver installation
if(CUDA_FOUND)
set(CMAKE_LIBRARY_PATH "${CUDA_TOOLKIT_ROOT_DIR}/lib64/stubs;${CUDA_TOOLKIT_ROOT_DIR}/lib/stubs;${CUDA_TOOLKIT_ROOT_DIR}/lib64;${CUDA_TOOLKIT_ROOT_DIR}/lib;${CMAKE_LIBRARY_PATH}")
find_package(CUDA REQUIRED)
else()
message(FATAL_ERROR "CUDA Toolkit not found")
endif()
find_program(BIN2C bin2c)
if(NOT BIN2C)
message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.")
@ -72,14 +80,14 @@ if(GPU_API STREQUAL "CUDA")
# --arch translates directly instead of JIT, so this should be for the preferred or most common architecture
set(GPU_CUDA_GENCODE "-arch=${GPU_ARCH}")
# apply the following to build "fat" CUDA binaries only for known CUDA toolkits
if(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
message(WARNING "Untested CUDA Toolkit version. Use at your own risk")
# apply the following to build "fat" CUDA binaries only for known CUDA toolkits since version 8.0
# only the Kepler achitecture and beyond is supported
if(CUDA_VERSION VERSION_LESS 8.0)
message(FATAL_ERROR "CUDA Toolkit version 8.0 or later is required")
elseif(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
message(WARNING "Untested CUDA Toolkit version ${CUDA_VERSION}. Use at your own risk")
set(GPU_CUDA_GENCODE "-arch=all")
else()
# Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0
if((CUDA_VERSION VERSION_GREATER_EQUAL "3.2") 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.0) is supported by CUDA 5 to CUDA 10.2
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "11.0"))
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_30,code=[sm_30,compute_30] ")
@ -112,6 +120,14 @@ if(GPU_API STREQUAL "CUDA")
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.1")
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_86,code=[sm_86,compute_86]")
endif()
# Hopper (GPU Arch 9.0) is supported by CUDA 12.0? and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_90,code=[sm_90,compute_90]")
endif()
# # Lovelace (GPU Arch 9.x) is supported by CUDA 12.0? and later
#if(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
# string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_9x,code=[sm_9x,compute_9x]")
#endif()
endif()
cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS ${CUDA_REQUEST_PIC}
@ -249,43 +265,47 @@ elseif(GPU_API STREQUAL "HIP")
find_package(CUDA REQUIRED)
set(HIP_ARCH "sm_50" CACHE STRING "HIP primary CUDA architecture (e.g. sm_60)")
# 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(HIP_CUDA_GENCODE "-arch=${HIP_ARCH}")
# Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0
if((CUDA_VERSION VERSION_GREATER_EQUAL "3.2") AND (CUDA_VERSION VERSION_LESS "9.0"))
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_20,code=[sm_20,compute_20]")
endif()
# Kepler (GPU Arch 3.0) is supported by CUDA 5 to CUDA 10.2
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "11.0"))
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_30,code=[sm_30,compute_30]")
endif()
# Kepler (GPU Arch 3.5) is supported by CUDA 5 to CUDA 11.0
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "12.0"))
string(APPEND HIP_CUDA_GENCODE " -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_EQUAL "6.0")
string(APPEND HIP_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_EQUAL "8.0")
string(APPEND HIP_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_EQUAL "9.0")
string(APPEND HIP_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_EQUAL "10.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_75,code=[sm_75,compute_75]")
endif()
# Ampere (GPU Arch 8.0) is supported by CUDA 11 and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_80,code=[sm_80,compute_80]")
endif()
if(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
message(WARNING "Unsupported CUDA version. Use at your own risk.")
if(CUDA_VERSION VERSION_LESS 8.0)
message(FATAL_ERROR "CUDA Toolkit version 8.0 or later is required")
elseif(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
message(WARNING "Untested CUDA Toolkit version ${CUDA_VERSION}. Use at your own risk")
set(HIP_CUDA_GENCODE "-arch=all")
else()
# 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(HIP_CUDA_GENCODE "-arch=${HIP_ARCH}")
# Kepler (GPU Arch 3.0) is supported by CUDA 5 to CUDA 10.2
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "11.0"))
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_30,code=[sm_30,compute_30]")
endif()
# Kepler (GPU Arch 3.5) is supported by CUDA 5 to CUDA 11.0
if((CUDA_VERSION VERSION_GREATER_EQUAL "5.0") AND (CUDA_VERSION VERSION_LESS "12.0"))
string(APPEND HIP_CUDA_GENCODE " -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_EQUAL "6.0")
string(APPEND HIP_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_EQUAL "8.0")
string(APPEND HIP_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_EQUAL "9.0")
string(APPEND HIP_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_EQUAL "10.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_75,code=[sm_75,compute_75]")
endif()
# Ampere (GPU Arch 8.0) is supported by CUDA 11 and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0")
string(APPEND HIP_CUDA_GENCODE " -gencode arch=compute_80,code=[sm_80,compute_80]")
endif()
# Hopper (GPU Arch 9.0) is supported by CUDA 12.0? and later
if(CUDA_VERSION VERSION_GREATER_EQUAL "12.0")
string(APPEND GPU_CUDA_GENCODE " -gencode arch=compute_90,code=[sm_90,compute_90]")
endif()
endif()
endif()
@ -339,6 +359,10 @@ elseif(GPU_API STREQUAL "HIP")
target_link_libraries(gpu PRIVATE hip::host)
if(HIP_USE_DEVICE_SORT)
if(HIP_PLATFORM STREQUAL "amd")
# newer version of ROCm (5.1+) require c++14 for rocprim
set_property(TARGET gpu PROPERTY CXX_STANDARD 14)
endif()
# add hipCUB
target_include_directories(gpu PRIVATE ${HIP_ROOT_DIR}/../include)
target_compile_definitions(gpu PRIVATE -DUSE_HIP_DEVICE_SORT)
@ -422,13 +446,12 @@ RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES)
RegisterFixStyle(${GPU_SOURCES_DIR}/fix_gpu.h)
get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES)
if(NOT BUILD_MPI)
# mpistubs is aliased to MPI::MPI_CXX, but older versions of cmake won't work forward the include path
target_link_libraries(gpu PRIVATE mpi_stubs)
else()
if(BUILD_MPI)
target_link_libraries(gpu PRIVATE MPI::MPI_CXX)
else()
target_link_libraries(gpu PRIVATE mpi_stubs)
endif()
target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES})
set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_MACHINE})
target_sources(lammps PRIVATE ${GPU_SOURCES})

View File

@ -1,5 +1,14 @@
enable_language(C)
# we don't use the parallel i/o interface.
set(HDF5_PREFER_PARALLEL FALSE)
find_package(HDF5 REQUIRED)
# parallel HDF5 will import incompatible MPI headers with a serial build
if((NOT BUILD_MPI) AND HDF5_IS_PARALLEL)
message(FATAL_ERROR "Serial LAMMPS build and parallel HDF5 library are not compatible")
endif()
target_link_libraries(h5md PRIVATE ${HDF5_LIBRARIES})
target_include_directories(h5md PUBLIC ${HDF5_INCLUDE_DIRS})

View File

@ -38,7 +38,7 @@ if(INTEL_LRT_MODE STREQUAL "C++11")
endif()
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
if((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") OR (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM"))
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
message(FATAL_ERROR "INTEL needs at least a 2016 Intel compiler, found ${CMAKE_CXX_COMPILER_VERSION}")
endif()
@ -46,12 +46,12 @@ else()
message(WARNING "INTEL gives best performance with Intel compilers")
endif()
find_package(TBB_MALLOC QUIET)
find_package(TBB_MALLOC)
if(TBB_MALLOC_FOUND)
target_link_libraries(lammps PRIVATE TBB::TBB_MALLOC)
else()
target_compile_definitions(lammps PRIVATE -DLMP_INTEL_NO_TBB)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
if((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") OR (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM"))
message(WARNING "INTEL with Intel compilers should use TBB malloc libraries")
endif()
endif()
@ -112,5 +112,9 @@ if(PKG_KSPACE)
RegisterIntegrateStyle(${INTEL_SOURCES_DIR}/verlet_lrt_intel.h)
endif()
if(PKG_ELECTRODE)
list(APPEND INTEL_SOURCES ${INTEL_SOURCES_DIR}/electrode_accel_intel.cpp)
endif()
target_sources(lammps PRIVATE ${INTEL_SOURCES})
target_include_directories(lammps PRIVATE ${INTEL_SOURCES_DIR})

View File

@ -11,8 +11,14 @@ if(Kokkos_ENABLE_CUDA)
endif()
# Adding OpenMP compiler flags without the checks done for
# BUILD_OMP can result in compile failures. Enforce consistency.
if(Kokkos_ENABLE_OPENMP AND NOT BUILD_OMP)
message(FATAL_ERROR "Must enable BUILD_OMP with Kokkos_ENABLE_OPENMP")
if(Kokkos_ENABLE_OPENMP)
if(NOT BUILD_OMP)
message(FATAL_ERROR "Must enable BUILD_OMP with Kokkos_ENABLE_OPENMP")
else()
if(LAMMPS_OMP_COMPAT_LEVEL LESS 4)
message(FATAL_ERROR "Compiler must support OpenMP 4.0 or later with Kokkos_ENABLE_OPENMP")
endif()
endif()
endif()
########################################################################
@ -27,6 +33,8 @@ if(DOWNLOAD_KOKKOS)
endforeach()
message(STATUS "KOKKOS download requested - we will build our own")
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>")
# build KOKKOS downloaded libraries as static libraries but with PIC, if needed
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DBUILD_SHARED_LIBS=OFF")
if(CMAKE_REQUEST_PIC)
list(APPEND KOKKOS_LIB_BUILD_ARGS ${CMAKE_REQUEST_PIC})
endif()
@ -39,35 +47,48 @@ if(DOWNLOAD_KOKKOS)
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}")
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}")
include(ExternalProject)
set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/3.5.00.tar.gz" CACHE STRING "URL for KOKKOS tarball")
set(KOKKOS_MD5 "079323d973ae0e1c38c0a54a150c674e" CACHE STRING "MD5 checksum of KOKKOS tarball")
set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/3.6.00.tar.gz" CACHE STRING "URL for KOKKOS tarball")
set(KOKKOS_MD5 "b5c44ea961031795f434002cd7b31c20" CACHE STRING "MD5 checksum of KOKKOS tarball")
mark_as_advanced(KOKKOS_URL)
mark_as_advanced(KOKKOS_MD5)
ExternalProject_Add(kokkos_build
URL ${KOKKOS_URL}
URL_MD5 ${KOKKOS_MD5}
CMAKE_ARGS ${KOKKOS_LIB_BUILD_ARGS}
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libkokkoscore.a
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libkokkoscore.a <INSTALL_DIR>/lib/libkokkoscontainers.a
)
ExternalProject_get_property(kokkos_build INSTALL_DIR)
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
add_library(LAMMPS::KOKKOS UNKNOWN IMPORTED)
set_target_properties(LAMMPS::KOKKOS PROPERTIES
add_library(LAMMPS::KOKKOSCORE UNKNOWN IMPORTED)
add_library(LAMMPS::KOKKOSCONTAINERS UNKNOWN IMPORTED)
set_target_properties(LAMMPS::KOKKOSCORE PROPERTIES
IMPORTED_LOCATION "${INSTALL_DIR}/lib/libkokkoscore.a"
INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include"
INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS})
target_link_libraries(lammps PRIVATE LAMMPS::KOKKOS)
target_link_libraries(lmp PRIVATE LAMMPS::KOKKOS)
add_dependencies(LAMMPS::KOKKOS kokkos_build)
set_target_properties(LAMMPS::KOKKOSCONTAINERS PROPERTIES
IMPORTED_LOCATION "${INSTALL_DIR}/lib/libkokkoscontainers.a")
target_link_libraries(lammps PRIVATE LAMMPS::KOKKOSCORE LAMMPS::KOKKOSCONTAINERS)
target_link_libraries(lmp PRIVATE LAMMPS::KOKKOSCORE LAMMPS::KOKKOSCONTAINERS)
add_dependencies(LAMMPS::KOKKOSCORE kokkos_build)
add_dependencies(LAMMPS::KOKKOSCONTAINERS kokkos_build)
elseif(EXTERNAL_KOKKOS)
find_package(Kokkos 3.5.00 REQUIRED CONFIG)
find_package(Kokkos 3.6.00 REQUIRED CONFIG)
target_link_libraries(lammps PRIVATE Kokkos::kokkos)
target_link_libraries(lmp PRIVATE Kokkos::kokkos)
else()
set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos)
set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos)
# build KOKKOS internal libraries as static libraries but with PIC, if needed
if(BUILD_SHARED_LIBS)
set(BUILD_SHARED_LIBS_WAS_ON YES)
set(BUILD_SHARED_LIBS OFF)
endif()
if(CMAKE_REQUEST_PIC)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
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
@ -75,6 +96,9 @@ else()
target_include_directories(lammps PRIVATE ${Kokkos_INCLUDE_DIRS})
target_link_libraries(lammps PRIVATE kokkos)
target_link_libraries(lmp PRIVATE kokkos)
if(BUILD_SHARED_LIBS_WAS_ON)
set(BUILD_SHARED_LIBS ON)
endif()
endif()
target_compile_definitions(lammps PUBLIC $<BUILD_INTERFACE:LMP_KOKKOS>)
@ -106,9 +130,20 @@ if(PKG_KSPACE)
target_compile_definitions(lammps PRIVATE -DFFT_CUFFT)
target_link_libraries(lammps PRIVATE cufft)
endif()
elseif(Kokkos_ENABLE_HIP)
if(NOT (FFT STREQUAL "KISS"))
target_compile_definitions(lammps PRIVATE -DFFT_HIPFFT)
target_link_libraries(lammps PRIVATE hipfft)
endif()
endif()
endif()
if(PKG_PHONON)
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/dynamical_matrix_kokkos.cpp)
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/third_order_kokkos.cpp)
endif()
set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}")
# detects styles which have KOKKOS version

View File

@ -36,3 +36,5 @@ endif()
if((CMAKE_CXX_COMPILER_ID STREQUAL "PGI") OR (CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC"))
target_compile_definitions(lammps PRIVATE -DEIGEN_DONT_VECTORIZE)
endif()
target_compile_definitions(lammps PRIVATE -DEIGEN_NO_CUDA)

View File

@ -8,8 +8,8 @@ option(DOWNLOAD_MDI "Download and compile the MDI library instead of using an al
if(DOWNLOAD_MDI)
message(STATUS "MDI download requested - we will build our own")
set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.2.9.tar.gz" CACHE STRING "URL for MDI tarball")
set(MDI_MD5 "ddfa46d6ee15b4e59cfd527ec7212184" CACHE STRING "MD5 checksum for MDI tarball")
set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.3.2.tar.gz" CACHE STRING "URL for MDI tarball")
set(MDI_MD5 "836f5da400d8cff0f0e4435640f9454f" CACHE STRING "MD5 checksum for MDI tarball")
mark_as_advanced(MDI_URL)
mark_as_advanced(MDI_MD5)
enable_language(C)
@ -50,6 +50,7 @@ if(DOWNLOAD_MDI)
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-Dlanguage=C
-Dlibtype=STATIC
-Dmpi=${MDI_USE_MPI}

View File

@ -1,31 +0,0 @@
if(LAMMPS_SIZES STREQUAL "BIGBIG")
message(FATAL_ERROR "The MESSAGE Package is not compatible with -DLAMMPS_BIGBIG")
endif()
option(MESSAGE_ZMQ "Use ZeroMQ in MESSAGE package" OFF)
file(GLOB_RECURSE cslib_SOURCES
${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.cpp)
add_library(cslib STATIC ${cslib_SOURCES})
target_compile_definitions(cslib PRIVATE -DLAMMPS_${LAMMPS_SIZES})
set_target_properties(cslib PROPERTIES OUTPUT_NAME lammps_cslib${LAMMPS_MACHINE})
if(BUILD_MPI)
target_compile_definitions(cslib PRIVATE -DMPI_YES)
set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi")
target_link_libraries(cslib PRIVATE MPI::MPI_CXX)
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_link_libraries(cslib PUBLIC ZMQ::ZMQ)
else()
target_compile_definitions(cslib PRIVATE -DZMQ_NO)
target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_ZMQ)
endif()
target_link_libraries(lammps PRIVATE cslib)
target_include_directories(lammps PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src)

View File

@ -42,17 +42,9 @@ if(DOWNLOAD_N2P2)
if(NOT BUILD_MPI)
set(N2P2_PROJECT_OPTIONS "-DN2P2_NO_MPI")
else()
# get path to MPI include directory when cross-compiling to windows
if((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING)
get_target_property(N2P2_MPI_INCLUDE MPI::MPI_CXX INTERFACE_INCLUDE_DIRECTORIES)
set(N2P2_PROJECT_OPTIONS "-I${N2P2_MPI_INCLUDE}")
set(MPI_CXX_COMPILER ${CMAKE_CXX_COMPILER})
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
get_target_property(N2P2_MPI_INCLUDE MPI::MPI_CXX INTERFACE_INCLUDE_DIRECTORIES)
set(N2P2_PROJECT_OPTIONS "-I${N2P2_MPI_INCLUDE}")
set(MPI_CXX_COMPILER ${CMAKE_CXX_COMPILER})
endif()
# get path to MPI include directory
get_target_property(N2P2_MPI_INCLUDE MPI::MPI_CXX INTERFACE_INCLUDE_DIRECTORIES)
set(N2P2_PROJECT_OPTIONS "-I${N2P2_MPI_INCLUDE}")
endif()
# prefer GNU make, if available. N2P2 lib seems to need it.
@ -64,8 +56,8 @@ if(DOWNLOAD_N2P2)
string(TOUPPER "${CMAKE_BUILD_TYPE}" BTYPE)
set(N2P2_BUILD_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}} ${N2P2_CXX_STD}")
set(N2P2_BUILD_OPTIONS INTERFACES=LAMMPS COMP=${N2P2_COMP} "PROJECT_OPTIONS=${N2P2_PROJECT_OPTIONS}" "PROJECT_DEBUG="
"PROJECT_CC=${CMAKE_CXX_COMPILER}" "PROJECT_MPICC=${MPI_CXX_COMPILER}" "PROJECT_CFLAGS=${N2P2_BUILD_FLAGS}"
"PROJECT_AR=${N2P2_AR}")
"PROJECT_CC=${CMAKE_CXX_COMPILER}" "PROJECT_MPICC=${CMAKE_CXX_COMPILER}" "PROJECT_CFLAGS=${N2P2_BUILD_FLAGS}"
"PROJECT_AR=${N2P2_AR}" "APP_CORE=nnp-convert" "APP_TRAIN=nnp-train" "APP=nnp-convert")
# echo final flag for debugging
message(STATUS "N2P2 BUILD OPTIONS: ${N2P2_BUILD_OPTIONS}")

View File

@ -1,6 +1,6 @@
set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2021.10.25.tar.gz" CACHE STRING "URL for PACE evaluator library sources")
set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2021.10.25.fix2.tar.gz" CACHE STRING "URL for PACE evaluator library sources")
set(PACELIB_MD5 "a2ac3315c41a1a4a5c912bcb1bc9c5cc" CACHE STRING "MD5 checksum of PACE evaluator library tarball")
set(PACELIB_MD5 "32394d799bc282bb57696c78c456e64f" CACHE STRING "MD5 checksum of PACE evaluator library tarball")
mark_as_advanced(PACELIB_URL)
mark_as_advanced(PACELIB_MD5)
@ -13,8 +13,12 @@ execute_process(
COMMAND ${CMAKE_COMMAND} -E tar xzf libpace.tar.gz
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
get_newest_file(${CMAKE_BINARY_DIR}/lammps-user-pace-* lib-pace)
file(GLOB lib-pace ${CMAKE_BINARY_DIR}/lammps-user-pace-*)
# enforce building libyaml-cpp as static library and turn off optional features
set(YAML_BUILD_SHARED_LIBS OFF)
set(YAML_CPP_BUILD_CONTRIB OFF)
set(YAML_CPP_BUILD_TOOLS OFF)
add_subdirectory(${lib-pace}/yaml-cpp build-yaml-cpp)
set(YAML_CPP_INCLUDE_DIR ${lib-pace}/yaml-cpp/include)

View File

@ -43,6 +43,7 @@ if(DOWNLOAD_QUIP)
file(WRITE ${CMAKE_BINARY_DIR}/quip.config "${temp}")
message(STATUS "QUIP download via git requested - we will build our own")
set(CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY CHECKOUT)
# QUIP has no releases (except for a tag marking the end of Python 2 support). We use the current "public" branch
# The LAMMPS interface wrapper has a compatibility constant that is being checked at runtime.
include(ExternalProject)
@ -51,6 +52,7 @@ if(DOWNLOAD_QUIP)
GIT_TAG origin/public
GIT_SHALLOW YES
GIT_PROGRESS YES
GIT_SUBMODULES "src/fox;src/GAP"
PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/quip.config <SOURCE_DIR>/arch/Makefile.lammps
CONFIGURE_COMMAND env QUIP_ARCH=lammps make config
BUILD_COMMAND env QUIP_ARCH=lammps make libquip

View File

@ -54,8 +54,8 @@ if(DOWNLOAD_PLUMED)
set(PLUMED_BUILD_BYPRODUCTS "<INSTALL_DIR>/lib/libplumedWrapper.a")
endif()
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.7.3/plumed-src-2.7.3.tgz" CACHE STRING "URL for PLUMED tarball")
set(PLUMED_MD5 "f00cc82edfefe6bb3df934911dbe32fb" CACHE STRING "MD5 checksum of PLUMED tarball")
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.7.4/plumed-src-2.7.4.tgz" CACHE STRING "URL for PLUMED tarball")
set(PLUMED_MD5 "858e0b6aed173748fc85b6bc8a9dcb3e" CACHE STRING "MD5 checksum of PLUMED tarball")
mark_as_advanced(PLUMED_URL)
mark_as_advanced(PLUMED_MD5)

View File

@ -3,7 +3,7 @@ if(CMAKE_VERSION VERSION_LESS 3.12)
target_include_directories(lammps PRIVATE ${PYTHON_INCLUDE_DIRS})
target_link_libraries(lammps PRIVATE ${PYTHON_LIBRARIES})
else()
find_package(Python REQUIRED COMPONENTS Development)
find_package(Python REQUIRED COMPONENTS Interpreter Development)
target_link_libraries(lammps PRIVATE Python::Python)
endif()
target_compile_definitions(lammps PRIVATE -DLMP_PYTHON)

View File

@ -3,6 +3,9 @@ if(BUILD_TOOLS)
target_compile_definitions(binary2txt PRIVATE -DLAMMPS_${LAMMPS_SIZES})
install(TARGETS binary2txt DESTINATION ${CMAKE_INSTALL_BINDIR})
add_executable(stl_bin2txt ${LAMMPS_TOOLS_DIR}/stl_bin2txt.cpp)
install(TARGETS stl_bin2txt DESTINATION ${CMAKE_INSTALL_BINDIR})
include(CheckGeneratorSupport)
if(CMAKE_GENERATOR_SUPPORT_FORTRAN)
include(CheckLanguage)

View File

@ -24,12 +24,14 @@ if(GIT_FOUND AND EXISTS ${LAMMPS_DIR}/.git)
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
set(temp "${temp}const bool LAMMPS_NS::LAMMPS::has_git_info = ${temp_git_info};\n")
set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_commit[] = \"${temp_git_commit}\";\n")
set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_branch[] = \"${temp_git_branch}\";\n")
set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_descriptor[] = \"${temp_git_describe}\";\n")
set(temp "${temp}bool LAMMPS_NS::LAMMPS::has_git_info() { return ${temp_git_info}; }\n")
set(temp "${temp}const char *LAMMPS_NS::LAMMPS::git_commit() { return \"${temp_git_commit}\"; }\n")
set(temp "${temp}const char *LAMMPS_NS::LAMMPS::git_branch() { return \"${temp_git_branch}\"; }\n")
set(temp "${temp}const char *LAMMPS_NS::LAMMPS::git_descriptor() { return \"${temp_git_describe}\"; }\n")
set(temp "${temp}#endif\n\n")
message(STATUS "Generating lmpgitversion.h...")
file(WRITE "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${temp}" )
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h")
string(REPLACE "\\ " " " LAMMPS_GIT_HEADER "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h")
file(WRITE "${LAMMPS_GIT_HEADER}.tmp" "${temp}" )
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_GIT_HEADER}.tmp" "${LAMMPS_GIT_HEADER}")

View File

@ -20,9 +20,14 @@
{ include: [ "@\"kspace_.*.h\"", public, "\"style_kspace.h\"", public ] },
{ include: [ "@\"nbin_.*.h\"", public, "\"style_nbin.h\"", public ] },
{ include: [ "@\"npair_.*.h\"", public, "\"style_npair.h\"", public ] },
{ include: [ "@\"nstenci_.*.h\"", public, "\"style_nstencil.h\"", public ] },
{ include: [ "@\"nstencil_.*.h\"", public, "\"style_nstencil.h\"", public ] },
{ include: [ "@\"ntopo_.*.h\"", public, "\"style_ntopo.h\"", public ] },
{ include: [ "\"fmt/core.h\"", private, "\"fmt/format.h\"", public ] },
{ include: [ "<float.h>", public, "<cfloat>", public ] },
{ include: [ "\"float.h\"", public, "<cfloat>", public ] },
{ include: [ "<limits.h>", public, "<climits>", public ] },
{ include: [ "\"limits.h\"", public, "<climits>", public ] },
{ include: [ "<stdio.h>", public, "<cstdio>", public ] },
{ include: [ "<bits/types/struct_rusage.h>", private, "<sys/types.h>", public ] },
{ include: [ "<bits/types/struct_tm.h>", private, "<ctime>", public ] },
]

View File

@ -8,6 +8,7 @@ set(ALL_PACKAGES
AWPMD
BOCS
BODY
BPM
BROWNIAN
CG-DNA
CG-SDK
@ -24,6 +25,7 @@ set(ALL_PACKAGES
DPD-REACT
DPD-SMOOTH
DRUDE
ELECTRODE
EFF
EXTRA-COMPUTE
EXTRA-DUMP
@ -48,7 +50,6 @@ set(ALL_PACKAGES
MDI
MEAM
MESONT
MESSAGE
MGPT
MISC
ML-HDNNP

View File

@ -10,6 +10,7 @@ set(ALL_PACKAGES
AWPMD
BOCS
BODY
BPM
BROWNIAN
CG-DNA
CG-SDK
@ -26,6 +27,7 @@ set(ALL_PACKAGES
DPD-REACT
DPD-SMOOTH
DRUDE
ELECTRODE
EFF
EXTRA-COMPUTE
EXTRA-DUMP
@ -50,7 +52,6 @@ set(ALL_PACKAGES
MDI
MEAM
MESONT
MESSAGE
MGPT
MISC
ML-HDNNP

View File

@ -3,19 +3,19 @@
set(CMAKE_CXX_COMPILER "g++" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "gcc" CACHE STRING "" FORCE)
set(CMAKE_Fortran_COMPILER "gfortran" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -g" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Og -g" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(MPI_CXX "g++" CACHE STRING "" FORCE)
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
set(MPI_C "gcc" CACHE STRING "" FORCE)
set(MPI_C_COMPILER "mpicc" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-Wall -g" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-Wall -Og -g" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(MPI_Fortran "gfortran" CACHE STRING "" FORCE)
set(MPI_Fortran_COMPILER "mpifort" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -g -std=f2003" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -Og -g -std=f2003" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -O2 -DNDEBUG -std=f2003" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG -std=f2003" CACHE STRING "" FORCE)
unset(HAVE_OMP_H_INCLUDE CACHE)

View File

@ -3,9 +3,9 @@
# that is compatible with all higher CC, but not the default CC 3.5
set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_CUDA ON CACHE BOOL "" FORCE)
set(Kokkos_ARCH_MAXWELL50 on CACHE BOOL "" FORCE)
set(Kokkos_ARCH_PASCAL60 ON CACHE BOOL "" FORCE)
set(BUILD_OMP ON CACHE BOOL "" FORCE)
get_filename_component(NVCC_WRAPPER_CMD ${CMAKE_CURRENT_SOURCE_DIR}/../lib/kokkos/bin/nvcc_wrapper ABSOLUTE)
set(CMAKE_CXX_COMPILER ${NVCC_WRAPPER_CMD} CACHE FILEPATH "" FORCE)
# hide deprecation warnings temporarily for stable release
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)

View File

@ -0,0 +1,20 @@
# preset that enables KOKKOS and selects HIP compilation with OpenMP
# enabled as well. Also sets some performance related compiler flags.
set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_HIP ON CACHE BOOL "" FORCE)
set(Kokkos_ARCH_VEGA90A on CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_HIP_MULTIPLE_KERNEL_INSTANTIATIONS ON CACHE BOOL "" FORCE)
set(BUILD_OMP ON CACHE BOOL "" FORCE)
set(CMAKE_CXX_COMPILER hipcc CACHE STRING "" FORCE)
set(CMAKE_TUNE_FLAGS "-munsafe-fp-atomics" CACHE STRING "" FORCE)
# hide deprecation warnings temporarily for stable release
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)
# these flags are needed to build with Cray MPICH on OLCF Crusher
#-D CMAKE_CXX_FLAGS="-I/${MPICH_DIR}/include"
#-D MPI_CXX_LIBRARIES="-L${MPICH_DIR}/lib -lmpi -L${CRAY_MPICH_ROOTDIR}/gtl/lib -lmpi_gtl_hsa"

View File

@ -4,3 +4,6 @@ set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE)
set(BUILD_OMP ON CACHE BOOL "" FORCE)
# hide deprecation warnings temporarily for stable release
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)

View File

@ -3,3 +3,6 @@ set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_OPENMP OFF CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE)
# hide deprecation warnings temporarily for stable release
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)

View File

@ -0,0 +1,18 @@
# preset that enables KOKKOS and selects SYCL compilation with OpenMP
# enabled as well. Also sets some performance related compiler flags.
set(PKG_KOKKOS ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_CUDA OFF CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_SYCL ON CACHE BOOL "" FORCE)
set(Kokkos_ARCH_MAXWELL50 on CACHE BOOL "" FORCE)
set(BUILD_OMP ON CACHE BOOL "" FORCE)
# hide deprecation warnings temporarily for stable release
set(Kokkos_ENABLE_DEPRECATION_WARNINGS OFF CACHE BOOL "" FORCE)
set(CMAKE_CXX_COMPILER clang++ CACHE STRING "" FORCE)
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
set(CMAKE_CXX_STANDARD 17 CACHE STRING "" FORCE)
set(CMAKE_SHARED_LINKER_FLAGS "-Xsycl-target-frontend -O3" CACHE STRING "" FORCE)
set(CMAKE_TUNE_FLAGS "-fgpu-inline-threshold=100000 -Xsycl-target-frontend -O3 -Xsycl-target-frontend -ffp-contract=on -Wno-unknown-cuda-version" CACHE STRING "" FORCE)

View File

@ -4,6 +4,7 @@ set(WIN_PACKAGES
AWPMD
BOCS
BODY
BPM
BROWNIAN
CG-DNA
CG-SDK
@ -20,6 +21,7 @@ set(WIN_PACKAGES
DPD-REACT
DPD-SMOOTH
DRUDE
ELECTRODE
EFF
EXTRA-COMPUTE
EXTRA-DUMP

View File

@ -6,6 +6,7 @@ set(ALL_PACKAGES
ASPHERE
BOCS
BODY
BPM
BROWNIAN
CG-DNA
CG-SDK
@ -22,6 +23,7 @@ set(ALL_PACKAGES
DPD-REACT
DPD-SMOOTH
DRUDE
ELECTRODE
EFF
EXTRA-COMPUTE
EXTRA-DUMP

View File

@ -6,6 +6,7 @@ set(PACKAGES_WITH_LIB
ATC
AWPMD
COMPRESS
ELECTRODE
GPU
H5MD
KIM
@ -15,7 +16,6 @@ set(PACKAGES_WITH_LIB
MACHDYN
MDI
MESONT
MESSAGE
ML-HDNNP
ML-PACE
ML-QUIP

View File

@ -1,4 +1,4 @@
# preset that will enable clang/clang++ with support for MPI and OpenMP (on Linux boxes)
# preset that will enable PGI (Nvidia) compilers with support for MPI and OpenMP (on Linux boxes)
set(CMAKE_CXX_COMPILER "pgc++" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "pgcc" CACHE STRING "" FORCE)

View File

@ -0,0 +1,8 @@
# preset that will enable Intel compilers with support for MPI and OpenMP (on Linux boxes)
set(CMAKE_CXX_COMPILER "icl" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "icl" CACHE STRING "" FORCE)
set(CMAKE_Fortran_COMPILER "ifort" CACHE STRING "" FORCE)
unset(HAVE_OMP_H_INCLUDE CACHE)

View File

@ -0,0 +1,8 @@
# preset that will enable Intel compilers with support for MPI and OpenMP (on Linux boxes)
set(CMAKE_CXX_COMPILER "icx" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "icx" CACHE STRING "" FORCE)
set(CMAKE_Fortran_COMPILER "ifx" CACHE STRING "" FORCE)
set(INTEL_LRT_MODE "C++11" CACHE STRING "" FORCE)
unset(HAVE_OMP_H_INCLUDE CACHE)
set(CMAKE_TUNE_FLAGS -Wno-unused-command-line-argument)

View File

@ -2,6 +2,7 @@ set(WIN_PACKAGES
ASPHERE
BOCS
BODY
BPM
BROWNIAN
CG-DNA
CG-SDK
@ -42,6 +43,7 @@ set(WIN_PACKAGES
PERI
PHONON
POEMS
PLUGIN
PTM
QEQ
QTB

2
doc/.gitignore vendored
View File

@ -1,6 +1,6 @@
/old
/html
/html-offline
/fasthtml
/epub
/latex
/mathjax

View File

@ -13,35 +13,24 @@ VENV = $(BUILDDIR)/docenv
ANCHORCHECK = $(VENV)/bin/rst_anchor_check
SPHINXCONFIG = $(BUILDDIR)/utils/sphinx-config
MATHJAX = $(SPHINXCONFIG)/_static/mathjax
MATHJAXTAG = 3.2.1
PYTHON = $(shell which python3)
DOXYGEN = $(shell which doxygen)
VIRTUALENV = virtualenv
PYTHON = $(word 3,$(shell type python3))
DOXYGEN = $(word 3,$(shell type doxygen))
HAS_PYTHON3 = NO
HAS_VIRTUALENV = NO
HAS_DOXYGEN = NO
HAS_PDFLATEX = NO
ifeq ($(shell which python3 >/dev/null 2>&1; echo $$?), 0)
ifeq ($(shell type python3 >/dev/null 2>&1; echo $$?), 0)
HAS_PYTHON3 = YES
endif
ifeq ($(shell which doxygen >/dev/null 2>&1; echo $$?), 0)
ifeq ($(shell type doxygen >/dev/null 2>&1; echo $$?), 0)
HAS_DOXYGEN = YES
endif
ifeq ($(shell which virtualenv-3 >/dev/null 2>&1; echo $$?), 0)
VIRTUALENV = virtualenv-3
HAS_VIRTUALENV = YES
endif
ifeq ($(shell which virtualenv >/dev/null 2>&1; echo $$?), 0)
VIRTUALENV = virtualenv
HAS_VIRTUALENV = YES
endif
ifeq ($(shell which pdflatex >/dev/null 2>&1; echo $$?), 0)
ifeq ($(shell which latexmk >/dev/null 2>&1; echo $$?), 0)
ifeq ($(shell type pdflatex >/dev/null 2>&1; echo $$?), 0)
ifeq ($(shell type latexmk >/dev/null 2>&1; echo $$?), 0)
HAS_PDFLATEX = YES
endif
endif
@ -58,7 +47,7 @@ SPHINXEXTRA = -E -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiproc
# we only want to use explicitly listed files.
DOXYFILES = $(shell sed -n -e 's/\#.*$$//' -e '/^ *INPUT \+=/,/^[A-Z_]\+ \+=/p' doxygen/Doxyfile.in | sed -e 's/@LAMMPS_SOURCE_DIR@/..\/src/g' -e 's/\\//g' -e 's/ \+/ /' -e 's/[A-Z_]\+ \+= *\(YES\|NO\|\)//')
.PHONY: help clean-all clean clean-spelling epub mobi rst html pdf spelling anchor_check style_check char_check xmlgen
.PHONY: help clean-all clean clean-spelling epub mobi rst html pdf spelling anchor_check style_check char_check xmlgen fasthtml
# ------------------------------------------
@ -70,7 +59,8 @@ help:
@echo " epub create ePUB format manual for e-book readers"
@echo " mobi convert ePUB to MOBI format manual for e-book readers (e.g. Kindle)"
@echo " (requires ebook-convert tool from calibre)"
@echo " clean remove all intermediate RST files"
@echo " fasthtml approximate HTML page creation in fasthtml dir (for development)"
@echo " clean remove all intermediate files"
@echo " clean-all reset the entire build environment"
@echo " anchor_check scan for duplicate anchor labels"
@echo " style_check check for complete and consistent style lists"
@ -83,7 +73,7 @@ clean-all: clean
rm -rf $(BUILDDIR)/docenv $(MATHJAX) $(BUILDDIR)/LAMMPS.mobi $(BUILDDIR)/LAMMPS.epub $(BUILDDIR)/Manual.pdf
clean: clean-spelling
rm -rf $(BUILDDIR)/html $(BUILDDIR)/epub $(BUILDDIR)/latex $(BUILDDIR)/doctrees $(BUILDDIR)/doxygen/xml $(BUILDDIR)/doxygen-warn.log $(BUILDDIR)/doxygen/Doxyfile $(SPHINXCONFIG)/conf.py
rm -rf $(BUILDDIR)/html $(BUILDDIR)/epub $(BUILDDIR)/latex $(BUILDDIR)/doctrees $(BUILDDIR)/doxygen/xml $(BUILDDIR)/doxygen-warn.log $(BUILDDIR)/doxygen/Doxyfile $(SPHINXCONFIG)/conf.py $(BUILDDIR)/fasthtml
clean-spelling:
rm -rf $(BUILDDIR)/spelling
@ -118,6 +108,23 @@ html: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
@rm -rf html/PDF/.[sg]*
@echo "Build finished. The HTML pages are in doc/html."
fasthtml: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
@$(MAKE) $(MFLAGS) -C graphviz all
@mkdir -p fasthtml
@(\
. $(VENV)/bin/activate ; env PYTHONWARNINGS= \
sphinx-build -j 4 -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/fasthtml/doctrees $(RSTDIR) fasthtml ;\
deactivate ;\
)
@rm -rf fasthtml/_sources
@rm -rf fasthtml/PDF
@rm -rf fasthtml/USER
@rm -rf fasthtml/JPG
@cp -r src/PDF fasthtml/PDF
@rm -rf fasthtml/PDF/.[sg]*
@echo "Fast HTML build finished. The HTML pages are in doc/fasthtml."
spelling: xmlgen $(SPHINXCONFIG)/conf.py $(VENV) $(SPHINXCONFIG)/false_positives.txt
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
@(\
@ -220,17 +227,17 @@ $(VENV):
@if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi
@if [ "$(HAS_PYTHON3)" == "NO" ] ; then echo "python3 was not found! Please see README for further instructions" 1>&2; exit 1; fi
@if [ "$(HAS_DOXYGEN)" == "NO" ] ; then echo "doxygen was not found! Please see README for further instructions" 1>&2; exit 1; fi
@if [ "$(HAS_VIRTUALENV)" == "NO" ] ; then echo "virtualenv was not found! Please see README for further instructions" 1>&2; exit 1; fi
@( \
$(VIRTUALENV) -p $(PYTHON) $(VENV); \
$(PYTHON) -m venv $(VENV); \
. $(VENV)/bin/activate; \
pip $(PIP_OPTIONS) install --upgrade pip; \
pip $(PIP_OPTIONS) install --upgrade wheel; \
pip $(PIP_OPTIONS) install -r $(BUILDDIR)/utils/requirements.txt; \
deactivate;\
)
$(MATHJAX):
@git clone -b 3.2.0 -c advice.detachedHead=0 --depth 1 https://github.com/mathjax/MathJax.git $@
@git clone -b $(MATHJAXTAG) -c advice.detachedHead=0 --depth 1 https://github.com/mathjax/MathJax.git $@
$(ANCHORCHECK): $(VENV)
@( \

View File

@ -2,7 +2,7 @@
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "LAMMPS Programmer's Guide"
PROJECT_NUMBER = "24 August 2020"
PROJECT_NUMBER = "4 May 2022"
PROJECT_BRIEF = "Documentation of the LAMMPS library interface and Python wrapper"
PROJECT_LOGO = lammps-logo.png
CREATE_SUBDIRS = NO
@ -437,6 +437,8 @@ INPUT = @LAMMPS_SOURCE_DIR@/utils.cpp \
@LAMMPS_SOURCE_DIR@/math_eigen.h \
@LAMMPS_SOURCE_DIR@/platform.h \
@LAMMPS_SOURCE_DIR@/platform.cpp \
@LAMMPS_SOURCE_DIR@/math_special.h \
@LAMMPS_SOURCE_DIR@/math_special.cpp \
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded

View File

@ -1,7 +1,7 @@
.TH LAMMPS "1" "7 January 2022" "2022-1-7"
.TH LAMMPS "1" "2 June 2022" "2022-6-2"
.SH NAME
.B LAMMPS
\- Molecular Dynamics Simulator.
\- Molecular Dynamics Simulator. Version 2 June 2022
.SH SYNOPSIS
.B lmp
@ -297,7 +297,7 @@ the chapter on errors in the
manual gives some additional information about error messages, if possible.
.SH COPYRIGHT
© 2003--2021 Sandia Corporation
© 2003--2022 Sandia Corporation
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as

View File

@ -98,7 +98,7 @@ msi2lmp decane -c 0 -f oplsaa
.SH COPYRIGHT
© 2003--2021 Sandia Corporation
© 2003--2022 Sandia Corporation
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as

View File

@ -486,14 +486,14 @@ The following options are available.
make fix-whitespace # correct whitespace issues in files
make check-homepage # search for files with old LAMMPS homepage URLs
make fix-homepage # correct LAMMPS homepage URLs in files
make check-errordocs # search for deprecated error docs in header files
make fix-errordocs # remove error docs in header files
make check-permissions # search for files with permissions issues
make fix-permissions # correct permissions issues in files
make check # run all check targets from above
These should help to replace all TAB characters with blanks and remove
any trailing whitespace. Also all LAMMPS homepage URL references can be
updated to the location change from Sandia to the lammps.org domain.
And the permission check can remove executable permissions from non-executable
files (like source code).
These should help to make source and documentation files conforming
to some the coding style preferences of the LAMMPS developers.
Clang-format support
--------------------

View File

@ -45,7 +45,6 @@ This is the list of packages that may require additional steps.
* :ref:`MACHDYN <machdyn>`
* :ref:`MDI <mdi>`
* :ref:`MESONT <mesont>`
* :ref:`MESSAGE <message>`
* :ref:`ML-HDNNP <ml-hdnnp>`
* :ref:`ML-IAP <mliap>`
* :ref:`ML-PACE <ml-pace>`
@ -142,8 +141,6 @@ CMake build
:code:`GPU_ARCH` settings for different GPU hardware is as follows:
* sm_12 or sm_13 for GT200 (supported by CUDA 3.2 until CUDA 6.5)
* sm_20 or sm_21 for Fermi (supported by CUDA 3.2 until CUDA 7.5)
* sm_30 for Kepler (supported since CUDA 5 and until CUDA 10.x)
* sm_35 or sm_37 for Kepler (supported since CUDA 5 and until CUDA 11.x)
* sm_50 or sm_52 for Maxwell (supported since CUDA 6)
@ -161,6 +158,12 @@ Thus the GPU_ARCH setting is merely an optimization, to have code for
the preferred GPU architecture directly included rather than having to wait
for the JIT compiler of the CUDA driver to translate it.
When compiling for CUDA or HIP with CUDA, version 8.0 or later of the CUDA toolkit
is required and a GPU architecture of Kepler or later, which must *also* be
supported by the CUDA toolkit in use **and** the CUDA driver in use.
When compiling for OpenCL, OpenCL version 1.2 or later is required and the
GPU must be supported by the GPU driver and OpenCL runtime bundled with the driver.
When building with CMake, you **must NOT** build the GPU library in ``lib/gpu``
using the traditional build procedure. CMake will detect files generated by that
process and will terminate with an error and a suggestion for how to remove them.
@ -638,13 +641,27 @@ This list was last updated for version 3.5.0 of the Kokkos library.
-D CMAKE_CXX_COMPILER=${HOME}/lammps/lib/kokkos/bin/nvcc_wrapper
To simplify compilation, three preset files are included in the
For AMD or NVIDIA GPUs using HIP, set these variables:
.. code-block:: bash
-D Kokkos_ARCH_HOSTARCH=yes # HOSTARCH = HOST from list above
-D Kokkos_ARCH_GPUARCH=yes # GPUARCH = GPU from list above
-D Kokkos_ENABLE_HIP=yes
-D Kokkos_ENABLE_OPENMP=yes
This will enable FFTs on the GPU, either by the internal KISSFFT library
or with the hipFFT wrapper library, which will call out to the
platform-appropriate vendor library: rocFFT on AMD GPUs or cuFFT on
NVIDIA GPUs.
To simplify compilation, five preset files are included in the
``cmake/presets`` folder, ``kokkos-serial.cmake``,
``kokkos-openmp.cmake``, and ``kokkos-cuda.cmake``. They will
enable the KOKKOS package and enable some hardware choice. So to
compile with OpenMP host parallelization, CUDA device
parallelization (for GPUs with CC 5.0 and up) with some common
packages enabled, you can do the following:
``kokkos-openmp.cmake``, ``kokkos-cuda.cmake``,
``kokkos-hip.cmake``, and ``kokkos-sycl.cmake``. They will enable
the KOKKOS package and enable some hardware choice. So to compile
with CUDA device parallelization (for GPUs with CC 5.0 and up)
with some common packages enabled, you can do the following:
.. code-block:: bash
@ -703,6 +720,15 @@ This list was last updated for version 3.5.0 of the Kokkos library.
KOKKOS_ABSOLUTE_PATH = $(shell cd $(KOKKOS_PATH); pwd)
CC = mpicxx -cxx=$(KOKKOS_ABSOLUTE_PATH)/config/nvcc_wrapper
For AMD or NVIDIA GPUs using HIP:
.. code-block:: make
KOKKOS_DEVICES = HIP
KOKKOS_ARCH = HOSTARCH,GPUARCH # HOSTARCH = HOST from list above that is hosting the GPU
# GPUARCH = GPU from list above
FFT_INC = -DFFT_HIPFFT # enable use of hipFFT (optional)
FFT_LIB = -lhipfft # link to hipFFT library
Advanced KOKKOS compilation settings
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -796,47 +822,6 @@ library.
----------
.. _message:
MESSAGE package
-----------------------------
This package can optionally include support for messaging via sockets,
using the open-source `ZeroMQ library <http://zeromq.org>`_, which must
be installed on your system.
.. tabs::
.. tab:: CMake build
.. code-block:: bash
-D MESSAGE_ZMQ=value # build with ZeroMQ support, value = no (default) or yes
-D ZMQ_LIBRARY=path # ZMQ library file (only needed if a custom location)
-D ZMQ_INCLUDE_DIR=path # ZMQ include directory (only needed if a custom location)
.. tab:: Traditional make
Before building LAMMPS, you must build the CSlib library in
``lib/message``\ . You can build the CSlib library manually if
you prefer; follow the instructions in ``lib/message/README``\ .
You can also do it in one step from the ``lammps/src`` dir, using
a command like these, which simply invoke the
``lib/message/Install.py`` script with the specified args:
.. code-block:: bash
$ make lib-message # print help message
$ make lib-message args="-m -z" # build with MPI and socket (ZMQ) support
$ make lib-message args="-s" # build as serial lib with no ZMQ support
The build should produce two files: ``lib/message/cslib/src/libmessage.a``
and ``lib/message/Makefile.lammps``. The latter is copied from an
existing ``Makefile.lammps.*`` and has settings to link with the ZeroMQ
library if requested in the build.
----------
.. _mliap:
ML-IAP package
@ -1289,6 +1274,41 @@ be built for the most part with all major versions of the C++ language.
----------
.. _electrode:
ELECTRODE package
-----------------
This package depends on the KSPACE package.
.. tabs::
.. tab:: CMake build
No additional settings are needed besides ``-D PKG_KSPACE=yes`` and ``-D
PKG_ELECTRODE=yes``.
.. tab:: Traditional make
The package is activated with ``make yes-KSPACE`` and ``make
yes-ELECTRODE``
Note that the ``Makefile.lammps`` file has settings for the BLAS and
LAPACK linear algebra libraries. As explained in ``lib/awpmd/README``
these can either exist on your system, or you can use the files provided
in ``lib/linalg``. In the latter case you also need to build the library
in ``lib/linalg`` with a command like these:
.. code-block:: bash
$ make lib-linalg # print help message
$ make lib-linalg args="-m serial" # build with GNU Fortran compiler (settings as with "make serial")
$ make lib-linalg args="-m mpi" # build with default MPI Fortran compiler (settings as with "make mpi")
$ make lib-linalg args="-m gfortran" # build with GNU Fortran compiler
----------
.. _ml-pace:
ML-PACE package

View File

@ -78,11 +78,12 @@ folder. The following ``make`` commands are available:
make html # generate HTML in html dir using Sphinx
make pdf # generate PDF as Manual.pdf using Sphinx and PDFLaTeX
make fetch # fetch HTML pages and PDF files from LAMMPS website
# and unpack into the html_www folder and Manual_www.pdf
make epub # generate LAMMPS.epub in ePUB format using Sphinx
make mobi # generate LAMMPS.mobi in MOBI format using ebook-convert
make fasthtml # generate approximate HTML in fasthtml dir using Sphinx
# some Sphinx extensions do not work correctly with this
make clean # remove intermediate RST files created by HTML build
make clean-all # remove entire build folder and any cached data
@ -193,8 +194,13 @@ folder need to be updated or new files added. These files are written in
`reStructuredText <rst_>`_ markup for translation with the Sphinx tool.
Before contributing any documentation, please check that both the HTML
and the PDF format documentation can translate without errors. Please also
check the output to the console for any warnings or problems. There will
and the PDF format documentation can translate without errors. During
testing the html translation, you may use the ``make fasthtml`` command
which does an approximate translation (i.e. not all Sphinx features and
extensions will work), but runs very fast because it will only translate
files that have been changed since the last ``make fasthtml`` command.
Please also check the output to the console for any warnings or problems. There will
be multiple tests run automatically:
- A test for correctness of all anchor labels and their references

View File

@ -45,7 +45,6 @@ packages:
* :ref:`KOKKOS <kokkos>`
* :ref:`LATTE <latte>`
* :ref:`MACHDYN <machdyn>`
* :ref:`MESSAGE <message>`
* :ref:`ML-HDNNP <ml-hdnnp>`
* :ref:`ML-PACE <ml-pace>`
* :ref:`ML-QUIP <ml-quip>`
@ -151,7 +150,7 @@ other files dependent on that package are also excluded.
.. _cmake_presets:
CMake presets for installing many packages
""""""""""""""""""""""""""""""""""""""""""
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Instead of specifying all the CMake options via the command-line,
CMake allows initializing its settings cache using script files.
@ -179,6 +178,11 @@ one of them as a starting point and customize it to your needs.
cmake -C ../cmake/presets/all_off.cmake [OPTIONS] ../cmake # disable all packages
mingw64-cmake -C ../cmake/presets/mingw-cross.cmake [OPTIONS] ../cmake # compile with MinGW cross compilers
Presets that have names starting with "windows" are specifically for
compiling LAMMPS :doc:`natively on Windows <Build_windows>` and
presets that have names starting with "kokkos" are specifically for
selecting configurations for compiling LAMMPS with :ref:`KOKKOS <kokkos>`.
.. note::
Running cmake this way manipulates the CMake settings cache in your
@ -221,7 +225,8 @@ These commands install/un-install sets of packages:
.. code-block:: bash
make yes-all # install all packages
make no-all # uninstall all packages
make no-all # check for changes and uninstall all packages
make no-installed # only check and uninstall installed packages
make yes-basic # install a few commonly used packages'
make no-basic # remove a few commonly used packages'
make yes-most # install most packages w/o libs'

View File

@ -4,15 +4,15 @@ Optional build settings
LAMMPS can be built with several optional settings. Each sub-section
explain how to do this for building both with CMake and make.
* :ref:`C++11 standard compliance <cxx11>` when building all of LAMMPS
* :ref:`FFT library <fft>` for use with the :doc:`kspace_style pppm <kspace_style>` command
* :ref:`Size of LAMMPS integer types <size>`
* :ref:`Read or write compressed files <gzip>`
* :ref:`Output of JPG and PNG files <graphics>` via the :doc:`dump image <dump_image>` command
* :ref:`Output of movie files <graphics>` via the :doc:`dump_movie <dump_image>` command
* :ref:`Memory allocation alignment <align>`
* :ref:`Workaround for long long integers <longlong>`
* :ref:`Error handling exceptions <exceptions>` when using LAMMPS as a library
* `C++11 standard compliance`_ when building all of LAMMPS
* `FFT library`_ for use with the :doc:`kspace_style pppm <kspace_style>` command
* `Size of LAMMPS integer types and size limits`_
* `Read or write compressed files`_
* `Output of JPG, PNG, and move files` via the :doc:`dump image <dump_image>` or :doc:`dump movie <dump_image>` commands
* `Memory allocation alignment`_
* `Workaround for long long integers`_
* `Exception handling when using LAMMPS as a library`_ to capture errors
* `Trigger selected floating-point exceptions`_
----------
@ -287,8 +287,8 @@ Output of JPG, PNG, and movie files
The :doc:`dump image <dump_image>` command has options to output JPEG or
PNG image files. Likewise the :doc:`dump movie <dump_image>` command
outputs movie files in MPEG format. Using these options requires the
following settings:
outputs movie files in a variety of movie formats. Using these options
requires the following settings:
.. tabs::
@ -328,11 +328,12 @@ following settings:
JPG_LIB = -ljpeg -lpng -lz # library names
As with CMake, you do not need to set ``JPG_INC`` or ``JPG_PATH``,
if make can find the graphics header and library files. You must
specify ``JPG_LIB`` with a list of graphics libraries to include
in the link. You must insure ffmpeg is in a directory where
LAMMPS can find it at runtime, that is a directory in your PATH
environment variable.
if make can find the graphics header and library files in their
default system locations. You must specify ``JPG_LIB`` with a
list of graphics libraries to include in the link. You must make
certain that the ffmpeg executable (or ffmpeg.exe on Windows) is
in a directory where LAMMPS can find it at runtime; that is
usually a directory list in your ``PATH`` environment variable.
Using ``ffmpeg`` to output movie files requires that your machine
supports the "popen" function in the standard runtime library.

View File

@ -5,6 +5,7 @@ Notes for building LAMMPS on Windows
* :ref:`Running Linux on Windows <linux>`
* :ref:`Using GNU GCC ported to Windows <gnu>`
* :ref:`Using Visual Studio <msvc>`
* :ref:`Using Intel oneAPI compilers and libraries <oneapi>`
* :ref:`Using a cross-compiler <cross>`
----------
@ -16,44 +17,54 @@ General remarks
LAMMPS is developed and tested primarily on Linux machines. The vast
majority of HPC clusters and supercomputers today run on Linux as well.
While portability to other platforms is desired, it is not always achieved.
The LAMMPS developers are dependent on LAMMPS users giving feedback and
providing assistance in resolving portability issues. This is particularly
true for compiling LAMMPS on Windows, since this platform has significant
differences in some low-level functionality.
While portability to other platforms is desired, it is not always
achieved. That is sometimes due to non-portable code in LAMMPS itself,
but more often due to portability limitations of external libraries and
tools required to build a specific feature or package. The LAMMPS
developers are dependent on LAMMPS users giving feedback and providing
assistance in resolving portability issues. This is particularly true
for compiling LAMMPS on Windows, since this platform has significant
differences in some low-level functionality. As of LAMMPS version 14
December 2021, large parts of LAMMPS can be compiled natively with the
Microsoft Visual C++ Compilers. As of LAMMPS version 31 May 2022, also
the Intel oneAPI compilers can compile large parts of LAMMPS natively on
Windows. This is mostly facilitated by using the
:doc:`Developer_platform` in the ``platform`` namespace and CMake.
Before trying to build LAMMPS on Windows yourself, please consider the
`pre-compiled Windows installer packages <https://packages.lammps.org/windows.html>`_
and see if they are sufficient for your needs.
.. _linux:
Running Linux on Windows
^^^^^^^^^^^^^^^^^^^^^^^^
Before trying to build LAMMPS on Windows, please consider if the
pre-compiled Windows binary packages are sufficient for your needs. If
it is necessary for you to compile LAMMPS on a Windows machine
If it is necessary for you to compile LAMMPS on a Windows machine
(e.g. because it is your main desktop), please also consider using a
virtual machine software and compile and run LAMMPS in a Linux virtual
machine, or - if you have a sufficiently up-to-date Windows 10 or
Windows 11 installation - consider using the Windows subsystem for
Linux. This optional Windows feature allows you to run the bash shell
from Ubuntu from within Windows and from there on, you can pretty much
use that shell like you are running on an Ubuntu Linux machine
(e.g. installing software via apt-get and more). For more details on
that, please see :doc:`this tutorial <Howto_wsl>`.
of a Linux system (Ubuntu by default) from within Windows and from there
on, you can pretty much use that shell like you are running on a regular
Ubuntu Linux machine (e.g. installing software via apt-get and more).
For more details on that, please see :doc:`this tutorial <Howto_wsl>`.
.. _gnu:
Using a GNU GCC ported to Windows
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
One option for compiling LAMMPS on Windows natively that has been known
to work in the past is to install a bash shell, unix shell utilities,
perl, GNU make, and a GNU compiler ported to Windows. The Cygwin
package provides a unix/linux interface to low-level Windows functions,
so LAMMPS can be compiled on Windows. The necessary (minor)
modifications to LAMMPS are included, but may not always up-to-date for
recently added functionality and the corresponding new code. A machine
makefile for using cygwin for the old build system is provided. Using
CMake for this mode of compilation is untested and not likely to work.
One option for compiling LAMMPS on Windows natively is to install a Bash
shell, Unix shell utilities, Perl, Python, GNU make, and a GNU compiler
ported to Windows. The Cygwin package provides a unix/linux interface
to low-level Windows functions, so LAMMPS can be compiled on Windows.
The necessary (minor) modifications to LAMMPS are included, but may not
always up-to-date for recently added functionality and the corresponding
new code. A machine makefile for using cygwin for the old build system
is provided. Using CMake for this mode of compilation is untested and
not likely to work.
When compiling for Windows do **not** set the ``-DLAMMPS_MEMALIGN``
define in the LMP_INC makefile variable and add ``-lwsock32 -lpsapi`` to
@ -65,8 +76,9 @@ configuration should set this up automatically, but is untested.
In case of problems, you are recommended to contact somebody with
experience in using Cygwin. If you do come across portability problems
requiring changes to the LAMMPS source code, or figure out corrections
yourself, please report them on the lammps-users mailing list, or file
them as an issue or pull request on the LAMMPS GitHub project.
yourself, please report them on the
`LAMMPS forum at MatSci <https://matsci.org/c/lammps/lammps-development/>`_,
or file them as an issue or pull request on the LAMMPS GitHub project.
.. _msvc:
@ -75,32 +87,97 @@ Using Microsoft Visual Studio
Following the integration of the :doc:`platform namespace
<Developer_platform>` into the LAMMPS code base, portability of LAMMPS
to be compiled on Windows using Visual Studio has been significantly
improved. This has been tested with Visual Studio 2019 (aka version
16). Not all features and packages in LAMMPS are currently supported
out of the box, but a preset ``cmake/presets/windows.cmake`` is provided
that contains the packages that have been compiled successfully. You
must use the CMake based build procedure, and either use the integrated
CMake support of Visual Studio or use an external CMake installation to
create build files for the Visual Studio build system. Please note that
on launching Visual Studio it will scan the directory tree and likely
miss the correct master ``CMakeLists.txt``. Try to open the
``cmake/CMakeSettings.json`` and use those CMake configurations as a
starting point. It is also possible to configure and compile LAMMPS
from the command line with a CMake binary from `cmake.org <https://cmake.org>`_.
for native compilation on Windows using Visual Studio has been
significantly improved. This has been tested with Visual Studio 2019
(aka version 16) and Visual Studio 2022 (aka version 17). We strongly
recommend using Visual Studio 2022 version 17.1 or later. Not all
features and packages in LAMMPS are currently supported out of the box,
but a preset ``cmake/presets/windows.cmake`` is provided that contains
the packages that have been compiled successfully so far. You **must**
use the CMake based build procedure, since there is no support for GNU
make or the Unix shell utilities required for the GNU make build
procedure.
It is possible to use both the integrated CMake support of the Visual
Studio IDE or use an external CMake installation (e.g. downloaded from
cmake.org) to create build files and compile LAMMPS from the command line.
Compilation via command line and unit tests are checked automatically
for the LAMMPS development branch through
`GitHub Actions <https://github.com/lammps/lammps/actions/workflows/compile-msvc.yml>`_.
.. note::
Versions of Visual Studio before version 17.1 may scan the entire
LAMMPS source tree and likely miss the correct master
``CMakeLists.txt`` and get confused since there are multiple files
of that name in different folders but none in top level folder.
Please note, that for either approach CMake will create a so-called
:ref:`"multi-configuration" build environment <cmake_multiconfig>`, and
the command lines for building and testing LAMMPS must be adjusted
accordingly.
The LAMMPS cmake folder contains a ``CMakeSettings.json`` file with
build configurations for MSVC compilers and the MS provided Clang
compiler package in Debug and Release mode.
To support running in parallel you can compile with OpenMP enabled using
the OPENMP package or install Microsoft MPI (including the SDK) and compile
LAMMPS with MPI enabled.
This is work in progress and you should contact the LAMMPS developers
via GitHub, the forum, or the mailing list, if you have questions or
LAMMPS specific problems.
.. note::
This is work in progress and you should contact the LAMMPS developers
via GitHub or the `LAMMPS forum at MatSci <https://matsci.org/c/lammps/lammps-development/>`_,
if you have questions or LAMMPS specific problems.
.. _oneapi:
Using Intel oneAPI Compilers and Libraries
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionadded:: 31May2022
After installing the `Intel oneAPI
<https://www.intel.com/content/www/us/en/developer/tools/oneapi/toolkits.html>`_
base toolkit and the HPC toolkit, it is also possible to compile large
parts of LAMMPS natively on Windows using Intel compilers. The HPC
toolkit provides two sets of C/C++ and Fortran compilers: the so-called
"classic" compilers (``icl.exe`` and ``ifort.exe``) and newer, LLVM
based compilers (``icx.exe`` and ``ifx.exe``). In addition to the
compilers and their dependent modules, also the thread building blocks
(TBB) and the math kernel library (MKL) need to be installed. Two
presets (``cmake/presets/windows-intel-llvm.cmake`` and
``cmake/presets/windows-intel-classic.cmake``) are provided for
selecting the LLVM based or classic compilers, respectively. The preset
``cmake/presets/windows.cmake`` enables compatible packages that are not
dependent on additional features or libraries. You **must** use the
CMake based build procedure and use Ninja as build tool. For compiling
from the command prompt, thus both `CMake <https://cmake.org>`_ and
`Ninja-build <https://ninja-build.org>`_ binaries must be installed. It
is also possible to use Visual Studio, if it is started (``devenv.exe``)
from a command prompt that has the Intel oneAPI compilers enabled. The
Visual Studio settings file in the ``cmake`` folder contains
configurations for both compiler variants in debug and release settings.
Those will use the CMake and Ninja binaries bundled with Visual Studio,
thus a separate installation is not required.
.. admonition:: Known Limitations
:class: note
In addition to portability issues with several packages and external
libraries, the classic Intel compilers are currently not able to
compile the googletest libraries and thus enabling the ``-DENABLE_TESTING``
option will result in compilation failure. The LLVM based compilers
are compatible.
.. note::
This is work in progress and you should contact the LAMMPS developers
via GitHub or the `LAMMPS forum at MatSci <https://matsci.org/c/lammps/lammps-development/>`_,
if you have questions or LAMMPS specific problems.
.. _cross:
@ -126,14 +203,3 @@ LAMMPS developers. We instead rely on the feedback of the users
of these pre-compiled LAMMPS packages for Windows. We will try to resolve
issues to the best of our abilities if we become aware of them. However
this is subject to time constraints and focus on HPC platforms.
.. _native:
Native Visual C++ support
^^^^^^^^^^^^^^^^^^^^^^^^^
Support for the Visual C++ compilers is currently not available. The
CMake build system is capable of creating suitable a Visual Studio
style build environment, but the LAMMPS source code itself is not
ported to fully support Visual C++. Volunteers to take on this task
are welcome.

View File

@ -14,7 +14,7 @@
General commands
================
An alphabetic list of all general LAMMPS commands.
An alphabetic list of general LAMMPS commands.
.. table_from_list::
:columns: 5
@ -47,36 +47,26 @@ An alphabetic list of all general LAMMPS commands.
* :doc:`displace_atoms <displace_atoms>`
* :doc:`dump <dump>`
* :doc:`dump_modify <dump_modify>`
* :doc:`dynamical_matrix <dynamical_matrix>`
* :doc:`echo <echo>`
* :doc:`fix <fix>`
* :doc:`fix_modify <fix_modify>`
* :doc:`group <group>`
* :doc:`group2ndx <group2ndx>`
* :doc:`hyper <hyper>`
* :doc:`if <if>`
* :doc:`improper_coeff <improper_coeff>`
* :doc:`improper_style <improper_style>`
* :doc:`include <include>`
* :doc:`info <info>`
* :doc:`jump <jump>`
* :doc:`kim <kim_commands>`
* :doc:`kspace_modify <kspace_modify>`
* :doc:`kspace_style <kspace_style>`
* :doc:`label <label>`
* :doc:`lattice <lattice>`
* :doc:`log <log>`
* :doc:`mass <mass>`
* :doc:`mdi/engine <mdi_engine>`
* :doc:`message <message>`
* :doc:`minimize <minimize>`
* :doc:`min_modify <min_modify>`
* :doc:`min_style <min_style>`
* :doc:`min_style spin <min_spin>`
* :doc:`molecule <molecule>`
* :doc:`ndx2group <group2ndx>`
* :doc:`neb <neb>`
* :doc:`neb/spin <neb_spin>`
* :doc:`neigh_modify <neigh_modify>`
* :doc:`neighbor <neighbor>`
* :doc:`newton <newton>`
@ -87,11 +77,8 @@ An alphabetic list of all general LAMMPS commands.
* :doc:`pair_style <pair_style>`
* :doc:`pair_write <pair_write>`
* :doc:`partition <partition>`
* :doc:`plugin <plugin>`
* :doc:`prd <prd>`
* :doc:`print <print>`
* :doc:`processors <processors>`
* :doc:`python <python>`
* :doc:`quit <quit>`
* :doc:`read_data <read_data>`
* :doc:`read_dump <read_dump>`
@ -105,19 +92,13 @@ An alphabetic list of all general LAMMPS commands.
* :doc:`restart <restart>`
* :doc:`run <run>`
* :doc:`run_style <run_style>`
* :doc:`server <server>`
* :doc:`set <set>`
* :doc:`shell <shell>`
* :doc:`special_bonds <special_bonds>`
* :doc:`suffix <suffix>`
* :doc:`tad <tad>`
* :doc:`temper <temper>`
* :doc:`temper/grem <temper_grem>`
* :doc:`temper/npt <temper_npt>`
* :doc:`thermo <thermo>`
* :doc:`thermo_modify <thermo_modify>`
* :doc:`thermo_style <thermo_style>`
* :doc:`third_order <third_order>`
* :doc:`timer <timer>`
* :doc:`timestep <timestep>`
* :doc:`uncompute <uncompute>`
@ -130,3 +111,27 @@ An alphabetic list of all general LAMMPS commands.
* :doc:`write_data <write_data>`
* :doc:`write_dump <write_dump>`
* :doc:`write_restart <write_restart>`
Additional general LAMMPS commands provided by packages. A few
commands have accelerated versions. This is indicated by an
additional letter in parenthesis: k = KOKKOS.
.. table_from_list::
:columns: 5
* :doc:`dynamical_matrix (k) <dynamical_matrix>`
* :doc:`group2ndx <group2ndx>`
* :doc:`hyper <hyper>`
* :doc:`kim <kim_commands>`
* :doc:`mdi <mdi>`
* :doc:`ndx2group <group2ndx>`
* :doc:`neb <neb>`
* :doc:`neb/spin <neb_spin>`
* :doc:`plugin <plugin>`
* :doc:`prd <prd>`
* :doc:`python <python>`
* :doc:`tad <tad>`
* :doc:`temper <temper>`
* :doc:`temper/grem <temper_grem>`
* :doc:`temper/npt <temper_npt>`
* :doc:`third_order (k) <third_order>`

View File

@ -32,6 +32,8 @@ OPT.
*
*
*
* :doc:`bpm/rotational <bond_bpm_rotational>`
* :doc:`bpm/spring <bond_bpm_spring>`
* :doc:`class2 (ko) <bond_class2>`
* :doc:`fene (iko) <bond_fene>`
* :doc:`fene/expand (o) <bond_fene_expand>`
@ -86,7 +88,7 @@ OPT.
* :doc:`dipole (o) <angle_dipole>`
* :doc:`fourier (o) <angle_fourier>`
* :doc:`fourier/simple (o) <angle_fourier_simple>`
* :doc:`gaussian <angle_gaussian>` - multicentered Gaussian-based angle potential
* :doc:`gaussian <angle_gaussian>`
* :doc:`harmonic (iko) <angle_harmonic>`
* :doc:`mm3 <angle_mm3>`
* :doc:`quartic (o) <angle_quartic>`

View File

@ -33,6 +33,7 @@ KOKKOS, o = OPENMP, t = OPT.
* :doc:`body/local <compute_body_local>`
* :doc:`bond <compute_bond>`
* :doc:`bond/local <compute_bond_local>`
* :doc:`born/matrix <compute_born_matrix>`
* :doc:`centro/atom <compute_centro_atom>`
* :doc:`centroid/stress/atom <compute_stress_atom>`
* :doc:`chunk/atom <compute_chunk_atom>`
@ -63,6 +64,7 @@ KOKKOS, o = OPENMP, t = OPT.
* :doc:`event/displace <compute_event_displace>`
* :doc:`fabric <compute_fabric>`
* :doc:`fep <compute_fep>`
* :doc:`fep/ta <compute_fep_ta>`
* :doc:`force/tally <compute_tally>`
* :doc:`fragment/atom <compute_cluster_atom>`
* :doc:`global/atom <compute_global_atom>`
@ -90,6 +92,7 @@ KOKKOS, o = OPENMP, t = OPT.
* :doc:`msd <compute_msd>`
* :doc:`msd/chunk <compute_msd_chunk>`
* :doc:`msd/nongauss <compute_msd_nongauss>`
* :doc:`nbond/atom <compute_nbond_atom>`
* :doc:`omega/chunk <compute_omega_chunk>`
* :doc:`orientorder/atom (k) <compute_orientorder_atom>`
* :doc:`pair <compute_pair>`
@ -100,7 +103,6 @@ KOKKOS, o = OPENMP, t = OPT.
* :doc:`pe/tally <compute_tally>`
* :doc:`plasticity/atom <compute_plasticity_atom>`
* :doc:`pressure <compute_pressure>`
* :doc:`pressure/cylinder <compute_pressure_cylinder>`
* :doc:`pressure/uef <compute_pressure_uef>`
* :doc:`property/atom <compute_property_atom>`
* :doc:`property/chunk <compute_property_chunk>`
@ -143,8 +145,11 @@ KOKKOS, o = OPENMP, t = OPT.
* :doc:`sph/t/atom <compute_sph_t_atom>`
* :doc:`spin <compute_spin>`
* :doc:`stress/atom <compute_stress_atom>`
* :doc:`stress/cartesian <compute_stress_profile>`
* :doc:`stress/cylinder <compute_stress_profile>`
* :doc:`stress/mop <compute_stress_mop>`
* :doc:`stress/mop/profile <compute_stress_mop>`
* :doc:`stress/spherical <compute_stress_profile>`
* :doc:`stress/tally <compute_tally>`
* :doc:`tdpd/cc/atom <compute_tdpd_cc_atom>`
* :doc:`temp (k) <compute_temp>`

View File

@ -51,10 +51,10 @@ OPT.
* :doc:`bond/swap <fix_bond_swap>`
* :doc:`box/relax <fix_box_relax>`
* :doc:`charge/regulation <fix_charge_regulation>`
* :doc:`client/md <fix_client_md>`
* :doc:`cmap <fix_cmap>`
* :doc:`colvars <fix_colvars>`
* :doc:`controller <fix_controller>`
* :doc:`damping/cundall <fix_damping_cundall>`
* :doc:`deform (k) <fix_deform>`
* :doc:`deposit <fix_deposit>`
* :doc:`dpd/energy (k) <fix_dpd_energy>`
@ -66,6 +66,9 @@ OPT.
* :doc:`edpd/source <fix_dpd_source>`
* :doc:`efield <fix_efield>`
* :doc:`ehex <fix_ehex>`
* :doc:`electrode/conp (i) <fix_electrode_conp>`
* :doc:`electrode/conq (i) <fix_electrode_conp>`
* :doc:`electrode/thermo (i) <fix_electrode_conp>`
* :doc:`electron/stopping <fix_electron_stopping>`
* :doc:`electron/stopping/fit <fix_electron_stopping>`
* :doc:`enforce2d (k) <fix_enforce2d>`
@ -97,12 +100,10 @@ OPT.
* :doc:`latte <fix_latte>`
* :doc:`lb/fluid <fix_lb_fluid>`
* :doc:`lb/momentum <fix_lb_momentum>`
* :doc:`lb/pc <fix_lb_pc>`
* :doc:`lb/rigid/pc/sphere <fix_lb_rigid_pc_sphere>`
* :doc:`lb/viscous <fix_lb_viscous>`
* :doc:`lineforce <fix_lineforce>`
* :doc:`manifoldforce <fix_manifoldforce>`
* :doc:`mdi/engine <fix_mdi_engine>`
* :doc:`mdi/aimd <fix_mdi_aimd>`
* :doc:`meso/move <fix_meso_move>`
* :doc:`mol/swap <fix_mol_swap>`
* :doc:`momentum (k) <fix_momentum>`
@ -129,6 +130,7 @@ OPT.
* :doc:`npt/sphere (o) <fix_npt_sphere>`
* :doc:`npt/uef <fix_nh_uef>`
* :doc:`numdiff <fix_numdiff>`
* :doc:`numdiff/virial <fix_numdiff_virial>`
* :doc:`nve (giko) <fix_nve>`
* :doc:`nve/asphere (gi) <fix_nve_asphere>`
* :doc:`nve/asphere/noforce <fix_nve_asphere_noforce>`
@ -142,6 +144,7 @@ OPT.
* :doc:`nve/manifold/rattle <fix_nve_manifold_rattle>`
* :doc:`nve/noforce <fix_nve_noforce>`
* :doc:`nve/sphere (ko) <fix_nve_sphere>`
* :doc:`nve/bpm/sphere <fix_nve_bpm_sphere>`
* :doc:`nve/spin <fix_nve_spin>`
* :doc:`nve/tri <fix_nve_tri>`
* :doc:`nvk <fix_nvk>`
@ -159,7 +162,6 @@ OPT.
* :doc:`orient/fcc <fix_orient>`
* :doc:`orient/eco <fix_orient_eco>`
* :doc:`pafi <fix_pafi>`
* :doc:`pair/tracker <fix_pair_tracker>`
* :doc:`phonon <fix_phonon>`
* :doc:`pimd <fix_pimd>`
* :doc:`planeforce <fix_planeforce>`
@ -244,6 +246,7 @@ OPT.
* :doc:`vector <fix_vector>`
* :doc:`viscosity <fix_viscosity>`
* :doc:`viscous <fix_viscous>`
* :doc:`viscous/sphere <fix_viscous_sphere>`
* :doc:`wall/body/polygon <fix_wall_body_polygon>`
* :doc:`wall/body/polyhedron <fix_wall_body_polyhedron>`
* :doc:`wall/colloid <fix_wall>`

View File

@ -27,6 +27,7 @@ OPT.
* :doc:`ewald/disp/dipole <kspace_style>`
* :doc:`ewald/dipole <kspace_style>`
* :doc:`ewald/dipole/spin <kspace_style>`
* :doc:`ewald/electrode <kspace_style>`
* :doc:`msm (o) <kspace_style>`
* :doc:`msm/cg (o) <kspace_style>`
* :doc:`msm/dielectric <kspace_style>`
@ -41,4 +42,5 @@ OPT.
* :doc:`pppm/stagger <kspace_style>`
* :doc:`pppm/tip4p (o) <kspace_style>`
* :doc:`pppm/dielectric <kspace_style>`
* :doc:`pppm/electrode (i) <kspace_style>`
* :doc:`scafacos <kspace_style>`

View File

@ -34,7 +34,7 @@ OPT.
*
*
*
* :doc:`adp (o) <pair_adp>`
* :doc:`adp (ko) <pair_adp>`
* :doc:`agni (o) <pair_agni>`
* :doc:`airebo (io) <pair_airebo>`
* :doc:`airebo/morse (io) <pair_airebo>`
@ -53,6 +53,7 @@ OPT.
* :doc:`born/coul/msm (o) <pair_born>`
* :doc:`born/coul/wolf (go) <pair_born>`
* :doc:`born/coul/wolf/cs (g) <pair_cs>`
* :doc:`bpm/spring <pair_bpm_spring>`
* :doc:`brownian (o) <pair_brownian>`
* :doc:`brownian/poly (o) <pair_brownian>`
* :doc:`buck (giko) <pair_buck>`
@ -88,12 +89,12 @@ OPT.
* :doc:`coul/tt <pair_coul_tt>`
* :doc:`coul/wolf (ko) <pair_coul>`
* :doc:`coul/wolf/cs <pair_cs>`
* :doc:`dpd (gio) <pair_dpd>`
* :doc:`dpd (giko) <pair_dpd>`
* :doc:`dpd/fdt <pair_dpd_fdt>`
* :doc:`dpd/ext <pair_dpd_ext>`
* :doc:`dpd/ext/tstat <pair_dpd_ext>`
* :doc:`dpd/ext (k) <pair_dpd_ext>`
* :doc:`dpd/ext/tstat (k) <pair_dpd_ext>`
* :doc:`dpd/fdt/energy (k) <pair_dpd_fdt>`
* :doc:`dpd/tstat (go) <pair_dpd>`
* :doc:`dpd/tstat (gko) <pair_dpd>`
* :doc:`dsmc <pair_dsmc>`
* :doc:`e3b <pair_e3b>`
* :doc:`drip <pair_drip>`
@ -119,10 +120,12 @@ OPT.
* :doc:`granular <pair_granular>`
* :doc:`gw <pair_gw>`
* :doc:`gw/zbl <pair_gw>`
* :doc:`harmonic/cut (o) <pair_harmonic_cut>`
* :doc:`hbond/dreiding/lj (o) <pair_hbond_dreiding>`
* :doc:`hbond/dreiding/morse (o) <pair_hbond_dreiding>`
* :doc:`hdnnp <pair_hdnnp>`
* :doc:`ilp/graphene/hbn <pair_ilp_graphene_hbn>`
* :doc:`ilp/graphene/hbn (t) <pair_ilp_graphene_hbn>`
* :doc:`ilp/tmd (t) <pair_ilp_tmd>`
* :doc:`kolmogorov/crespi/full <pair_kolmogorov_crespi_full>`
* :doc:`kolmogorov/crespi/z <pair_kolmogorov_crespi_z>`
* :doc:`lcbop <pair_lcbop>`
@ -149,7 +152,7 @@ OPT.
* :doc:`lj/cut/coul/cut/dielectric (o) <pair_dielectric>`
* :doc:`lj/cut/coul/cut/soft (o) <pair_fep_soft>`
* :doc:`lj/cut/coul/debye (gko) <pair_lj_cut_coul>`
* :doc:`lj/cut/coul/debye/dielectric <pair_dielectric>`
* :doc:`lj/cut/coul/debye/dielectric (o) <pair_dielectric>`
* :doc:`lj/cut/coul/dsf (gko) <pair_lj_cut_coul>`
* :doc:`lj/cut/coul/long (gikot) <pair_lj_cut_coul>`
* :doc:`lj/cut/coul/long/cs <pair_cs>`
@ -228,7 +231,7 @@ OPT.
* :doc:`oxrna2/stk <pair_oxrna2>`
* :doc:`oxrna2/xstk <pair_oxrna2>`
* :doc:`oxrna2/coaxstk <pair_oxrna2>`
* :doc:`pace <pair_pace>`
* :doc:`pace (k) <pair_pace>`
* :doc:`peri/eps <pair_peri>`
* :doc:`peri/lps (o) <pair_peri>`
* :doc:`peri/pmb (o) <pair_peri>`
@ -240,7 +243,10 @@ OPT.
* :doc:`reaxff (ko) <pair_reaxff>`
* :doc:`rebo (io) <pair_airebo>`
* :doc:`resquared (go) <pair_resquared>`
* :doc:`saip/metal (t) <pair_saip_metal>`
* :doc:`sdpd/taitwater/isothermal <pair_sdpd_taitwater_isothermal>`
* :doc:`smatb <pair_smatb>`
* :doc:`smatb/single <pair_smatb>`
* :doc:`smd/hertz <pair_smd_hertz>`
* :doc:`smd/tlsph <pair_smd_tlsph>`
* :doc:`smd/tri_surface <pair_smd_triangulated_surface>`
@ -263,6 +269,7 @@ OPT.
* :doc:`spin/neel <pair_spin_neel>`
* :doc:`srp <pair_srp>`
* :doc:`sw (giko) <pair_sw>`
* :doc:`sw/angle/table <pair_sw_angle_table>`
* :doc:`sw/mod (o) <pair_sw>`
* :doc:`table (gko) <pair_table>`
* :doc:`table/rx (k) <pair_table_rx>`
@ -273,6 +280,7 @@ OPT.
* :doc:`tersoff/table (o) <pair_tersoff>`
* :doc:`tersoff/zbl (gko) <pair_tersoff_zbl>`
* :doc:`thole <pair_thole>`
* :doc:`threebody/table <pair_threebody_table>`
* :doc:`tip4p/cut (o) <pair_coul>`
* :doc:`tip4p/long (o) <pair_coul>`
* :doc:`tip4p/long/soft (o) <pair_fep_soft>`

View File

@ -77,18 +77,19 @@ LAMMPS:
so that you do not have to define (or discard) a temporary variable,
"X" in this case.
Additionally, the "immediate" variable expression may be followed by
a colon, followed by a C-style format string, e.g. ":%f" or ":%.10g".
The format string must be appropriate for a double-precision
floating-point value. The format string is used to output the result
of the variable expression evaluation. If a format string is not
specified a high-precision "%.20g" is used as the default.
Additionally, the entire "immediate" variable expression may be
followed by a colon, followed by a C-style format string,
e.g. ":%f" or ":%.10g". The format string must be appropriate for
a double-precision floating-point value. The format string is used
to output the result of the variable expression evaluation. If a
format string is not specified, a high-precision "%.20g" is used as
the default format.
This can be useful for formatting print output to a desired precision:
.. code-block:: LAMMPS
print "Final energy per atom: $(pe/atoms:%10.3f) eV/atom"
print "Final energy per atom: $(v_ke_per_atom+v_pe_per_atom:%10.3f) eV/atom"
Note that neither the curly-bracket or immediate form of variables
can contain nested $ characters for other variables to substitute

View File

@ -11,7 +11,9 @@ of time and requests from the LAMMPS user community.
:maxdepth: 1
Developer_org
Developer_code_design
Developer_parallel
Developer_comm_ops
Developer_flow
Developer_write
Developer_notes

View File

@ -0,0 +1,433 @@
Code design
-----------
This section explains some of the code design choices in LAMMPS with
the goal of helping developers write new code similar to the existing
code. Please see the section on :doc:`Requirements for contributed
code <Modify_style>` for more specific recommendations and guidelines.
While that section is organized more in the form of a checklist for
code contributors, the focus here is on overall code design strategy,
choices made between possible alternatives, and discussing some
relevant C++ programming language constructs.
Historically, the basic design philosophy of the LAMMPS C++ code was a
"C with classes" style. The motivation was to make it easy to modify
LAMMPS for people without significant training in C++ programming.
Data structures and code constructs were used that resemble the
previous implementation(s) in Fortran. A contributing factor to this
choice also was that at the time, C++ compilers were often not mature
and some of the advanced features contained bugs or did not function
as the standard required. There were also disagreements between
compiler vendors as to how to interpret the C++ standard documents.
However, C++ compilers have now advanced significantly. In 2020 we
decided to to require the C++11 standard as the minimum C++ language
standard for LAMMPS. Since then we have begun to also replace some of
the C-style constructs with equivalent C++ functionality, either from
the C++ standard library or as custom classes or functions, in order
to improve readability of the code and to increase code reuse through
abstraction of commonly used functionality.
.. note::
Please note that as of spring 2022 there is still a sizable chunk
of legacy code in LAMMPS that has not yet been refactored to
reflect these style conventions in full. LAMMPS has a large code
base and many different contributors and there also is a hierarchy
of precedence in which the code is adapted. Highest priority has
been the code in the ``src`` folder, followed by code in packages
in order of their popularity and complexity (simpler code is
adapted sooner), followed by code in the ``lib`` folder. Source
code that is downloaded from external packages or libraries during
compilation is not subject to the conventions discussed here.
Object oriented code
^^^^^^^^^^^^^^^^^^^^
LAMMPS is designed to be an object oriented code. Each simulation is
represented by an instance of the LAMMPS class. When running in
parallel each MPI process creates such an instance. This can be seen
in the ``main.cpp`` file where the core steps of running a LAMMPS
simulation are the following 3 lines of code:
.. code-block:: C++
LAMMPS *lammps = new LAMMPS(argc, argv, lammps_comm);
lammps->input->file();
delete lammps;
The first line creates a LAMMPS class instance and passes the command
line arguments and the global communicator to its constructor. The
second line triggers the LAMMPS instance to process the input (either
from standard input or a provided input file) until the simulation
ends. The third line deletes the LAMMPS instance. The remainder of
the main.cpp file has code for error handling, MPI configuration, and
other special features.
The basic LAMMPS class hierarchy which is created by the LAMMPS class
constructor is shown in :ref:`class-topology`. When input commands
are processed, additional class instances are created, or deleted, or
replaced. Likewise specific member functions of specific classes are
called to trigger actions such creating atoms, computing forces,
computing properties, time-propagating the system, or writing output.
Compositing and Inheritance
===========================
LAMMPS makes extensive use of the object oriented programming (OOP)
principles of *compositing* and *inheritance*. Classes like the
``LAMMPS`` class are a **composite** containing pointers to instances
of other classes like ``Atom``, ``Comm``, ``Force``, ``Neighbor``,
``Modify``, and so on. Each of these classes implement certain
functionality by storing and manipulating data related to the
simulation and providing member functions that trigger certain
actions. Some of those classes like ``Force`` are themselves
composites, containing instances of classes describing different force
interactions. Similarly the ``Modify`` class contains a list of
``Fix`` and ``Compute`` classes. If the input commands that
correspond to these classes include the word *style*, then LAMMPS
stores only a single instance of that class. E.g. *atom_style*,
*comm_style*, *pair_style*, *bond_style*. It the input command does
not include the word *style*, there can be many instances of that
class defined. E.g. *region*, *fix*, *compute*, *dump*.
**Inheritance** enables creation of *derived* classes that can share
common functionality in their base class while providing a consistent
interface. The derived classes replace (dummy or pure) functions in
the base class. The higher level classes can then call those methods
of the instantiated classes without having to know which specific
derived class variant was instantiated. In LAMMPS these derived
classes are often referred to as "styles", e.g. pair styles, fix
styles, atom styles and so on.
This is the origin of the flexibility of LAMMPS. For example pair
styles implement a variety of different non-bonded interatomic
potentials functions. All details for the implementation of a
potential are stored and executed in a single class.
As mentioned above, there can be multiple instances of classes derived
from the ``Fix`` or ``Compute`` base classes. They represent a
different facet of LAMMPS flexibility as they provide methods which
can be called at different points in time within a timestep, as
explained in `Developer_flow`. This allows the input script to tailor
how a specific simulation is run, what diagnostic computations are
performed, and how the output of those computations is further
processed or output.
Additional code sharing is possible by creating derived classes from the
derived classes (e.g., to implement an accelerated version of a pair
style) where only a subset of the derived class methods are replaced
with accelerated versions.
Polymorphism
============
Polymorphism and dynamic dispatch are another OOP feature that play an
important role in how LAMMPS selects what code to execute. In a
nutshell, this is a mechanism where the decision of which member
function to call from a class is determined at runtime and not when
the code is compiled. To enable it, the function has to be declared
as ``virtual`` and all corresponding functions in derived classes
should use the ``override`` property. Below is a brief example.
.. code-block:: c++
class Base {
public:
virtual ~Base() = default;
void call();
void normal();
virtual void poly();
};
void Base::call() {
normal();
poly();
}
class Derived : public Base {
public:
~Derived() override = default;
void normal();
void poly() override;
};
// [....]
Base *base1 = new Base();
Base *base2 = new Derived();
base1->call();
base2->call();
The difference in behavior of the ``normal()`` and the ``poly()`` member
functions is which of the two member functions is called when executing
`base1->call()` versus `base2->call()`. Without polymorphism, a
function within the base class can only call member functions within the
same scope, that is ``Base::call()`` will always call
``Base::normal()``. But for the `base2->call()` case the call of the
virtual member function will be dispatched to ``Derived::poly()``
instead. This mechanism means that functions are called within the
scope of the class type that was used to *create* the class instance are
invoked; even if they are assigned to a pointer using the type of a base
class. This is the desired behavior and this way LAMMPS can even use
styles that are loaded at runtime from a shared object file with the
:doc:`plugin command <plugin>`.
A special case of virtual functions are so-called pure functions. These
are virtual functions that are initialized to 0 in the class declaration
(see example below).
.. code-block:: c++
class Base {
public:
virtual void pure() = 0;
};
This has the effect that an instance of the base class cannot be
created and that derived classes **must** implement these functions.
Many of the functions listed with the various class styles in the
section :doc:`Modify` are pure functions. The motivation for this is
to define the interface or API of the functions but defer their
implementation to the derived classes.
However, there are downsides to this. For example, calls to virtual
functions from within a constructor, will not be in the scope of the
derived class and thus it is good practice to either avoid calling them
or to provide an explicit scope such as ``Base::poly()`` or
``Derived::poly()``. Furthermore, any destructors in classes containing
virtual functions should be declared virtual too, so they will be
processed in the expected order before types are removed from dynamic
dispatch.
.. admonition:: Important Notes
In order to be able to detect incompatibilities at compile time and
to avoid unexpected behavior, it is crucial that all member functions
that are intended to replace a virtual or pure function use the
``override`` property keyword. For the same reason, the use of
overloads or default arguments for virtual functions should be
avoided as they lead to confusion over which function is supposed to
override which and which arguments need to be declared.
Style Factories
===============
In order to create class instances for different styles, LAMMPS often
uses a programming pattern called `Factory`. Those are functions that
create an instance of a specific derived class, say ``PairLJCut`` and
return a pointer to the type of the common base class of that style,
``Pair`` in this case. To associate the factory function with the
style keyword, an ``std::map`` class is used with function pointers
indexed by their keyword (for example "lj/cut" for ``PairLJCut`` and
"morse" for ``PairMorse``). A couple of typedefs help keep the code
readable and a template function is used to implement the actual
factory functions for the individual classes. Below is an example
of such a factory function from the ``Force`` class as declared in
``force.h`` and implemented in ``force.cpp``. The file ``style_pair.h``
is generated during compilation and includes all main header files
(i.e. those starting with ``pair_``) of pair styles and then the
macro ``PairStyle()`` will associate the style name "lj/cut"
with a factory function creating an instance of the ``PairLJCut``
class.
.. code-block:: C++
// from force.h
typedef Pair *(*PairCreator)(LAMMPS *);
typedef std::map<std::string, PairCreator> PairCreatorMap;
PairCreatorMap *pair_map;
// from force.cpp
template <typename S, typename T> static S *style_creator(LAMMPS *lmp)
{
return new T(lmp);
}
// [...]
pair_map = new PairCreatorMap();
#define PAIR_CLASS
#define PairStyle(key, Class) (*pair_map)[#key] = &style_creator<Pair, Class>;
#include "style_pair.h"
#undef PairStyle
#undef PAIR_CLASS
// from pair_lj_cut.h
#ifdef PAIR_CLASS
PairStyle(lj/cut,PairLJCut);
#else
// [...]
Similar code constructs are present in other files like ``modify.cpp`` and
``modify.h`` or ``neighbor.cpp`` and ``neighbor.h``. Those contain
similar macros and include ``style_*.h`` files for creating class instances
of styles they manage.
I/O and output formatting
^^^^^^^^^^^^^^^^^^^^^^^^^
C-style stdio versus C++ style iostreams
========================================
LAMMPS uses the "stdio" library of the standard C library for reading
from and writing to files and console instead of C++ "iostreams".
This is mainly motivated by better performance, better control over
formatting, and less effort to achieve specific formatting.
Since mixing "stdio" and "iostreams" can lead to unexpected
behavior. use of the latter is strongly discouraged. Also output to
the screen should not use the predefined ``stdout`` FILE pointer, but
rather the ``screen`` and ``logfile`` FILE pointers managed by the
LAMMPS class. Furthermore, output should generally only be done by
MPI rank 0 (``comm->me == 0``). Output that is sent to both
``screen`` and ``logfile`` should use the :cpp:func:`utils::logmesg()
convenience function <LAMMPS_NS::utils::logmesg>`.
We also discourage the use of stringstreams because the bundled {fmt}
library and the customized tokenizer classes can provide the same
functionality in a cleaner way with better performance. This also
helps maintain a consistent programming syntax with code from many
different contributors.
Formatting with the {fmt} library
===================================
The LAMMPS source code includes a copy of the `{fmt} library
<https://fmt.dev>`_ which is preferred over formatting with the
"printf()" family of functions. The primary reason is that it allows
a typesafe default format for any type of supported data. This is
particularly useful for formatting integers of a given size (32-bit or
64-bit) which may require different format strings depending on
compile time settings or compilers/operating systems. Furthermore,
{fmt} gives better performance, has more functionality, a familiar
formatting syntax that has similarities to ``format()`` in Python, and
provides a facility that can be used to integrate format strings and a
variable number of arguments into custom functions in a much simpler
way than the varargs mechanism of the C library. Finally, {fmt} has
been included into the C++20 language standard, so changes to adopt it
are future-proof.
Formatted strings are frequently created by calling the
``fmt::format()`` function which will return a string as a
``std::string`` class instance. In contrast to the ``%`` placeholder
in ``printf()``, the {fmt} library uses ``{}`` to embed format
descriptors. In the simplest case, no additional characters are
needed as {fmt} will choose the default format based on the data type
of the argument. Otherwise the ``fmt::print()`` function may be
used instead of ``printf()`` or ``fprintf()``. In addition, several
LAMMPS output functions, that originally accepted a single string as
argument have been overloaded to accept a format string with optional
arguments as well (e.g., ``Error::all()``, ``Error::one()``,
``utils::logmesg()``).
Summary of the {fmt} format syntax
==================================
The syntax of the format string is "{[<argument id>][:<format spec>]}",
where either the argument id or the format spec (separated by a colon
':') is optional. The argument id is usually a number starting from 0
that is the index to the arguments following the format string. By
default these are assigned in order (i.e. 0, 1, 2, 3, 4 etc.). The most
common case for using argument id would be to use the same argument in
multiple places in the format string without having to provide it as an
argument multiple times. In LAMMPS the argument id is rarely used.
More common is the use of a format specifier, which starts with a colon.
This may optionally be followed by a fill character (default is ' '). If
provided, the fill character **must** be followed by an alignment
character ('<', '^', '>' for left, centered, or right alignment
(default)). The alignment character may be used without a fill
character. The next important format parameter would be the minimum
width, which may be followed by a dot '.' and a precision for floating
point numbers. The final character in the format string would be an
indicator for the "presentation", i.e. 'd' for decimal presentation of
integers, 'x' for hexadecimal, 'o' for octal, 'c' for character etc.
This mostly follows the "printf()" scheme but without requiring an
additional length parameter to distinguish between different integer
widths. The {fmt} library will detect those and adapt the formatting
accordingly. For floating point numbers there are correspondingly, 'g'
for generic presentation, 'e' for exponential presentation, and 'f' for
fixed point presentation.
Thus "{:8}" would represent *any* type argument using at least 8
characters; "{:<8}" would do this as left aligned, "{:^8}" as centered,
"{:>8}" as right aligned. If a specific presentation is selected, the
argument type must be compatible or else the {fmt} formatting code will
throw an exception. Some format string examples are given below:
.. code-block:: C
auto mesg = fmt::format(" CPU time: {:4d}:{:02d}:{:02d}\n", cpuh, cpum, cpus);
mesg = fmt::format("{:<8s}| {:<10.5g} | {:<10.5g} | {:<10.5g} |{:6.1f} |{:6.2f}\n",
label, time_min, time, time_max, time_sq, tmp);
utils::logmesg(lmp,"{:>6} = max # of 1-2 neighbors\n",maxall);
utils::logmesg(lmp,"Lattice spacing in x,y,z = {:.8} {:.8} {:.8}\n",
xlattice,ylattice,zlattice);
which will create the following output lines:
.. parsed-literal::
CPU time: 0:02:16
Pair | 2.0133 | 2.0133 | 2.0133 | 0.0 | 84.21
4 = max # of 1-2 neighbors
Lattice spacing in x,y,z = 1.6795962 1.6795962 1.6795962
Finally, a special feature of the {fmt} library is that format
parameters like the width or the precision may be also provided as
arguments. In that case a nested format is used where a pair of curly
braces (with an optional argument id) "{}" are used instead of the
value, for example "{:{}d}" will consume two integer arguments, the
first will be the value shown and the second the minimum width.
For more details and examples, please consult the `{fmt} syntax
documentation <https://fmt.dev/latest/syntax.html>`_ website.
Memory management
^^^^^^^^^^^^^^^^^
Dynamical allocation of small data and objects can be done with the
the C++ commands "new" and "delete/delete[]. Large data should use
the member functions of the ``Memory`` class, most commonly,
``Memory::create()``, ``Memory::grow()``, and ``Memory::destroy()``,
which provide variants for vectors, 2d arrays, 3d arrays, etc.
These can also be used for small data.
The use of ``malloc()``, ``calloc()``, ``realloc()`` and ``free()``
directly is strongly discouraged. To simplify adapting legacy code
into the LAMMPS code base the member functions ``Memory::smalloc()``,
``Memory::srealloc()``, and ``Memory::sfree()`` are available, which
perform additional error checks for safety.
Use of these custom memory allocation functions is motivated by the
following considerations:
- memory allocation failures on *any* MPI rank during a parallel run
will trigger an immediate abort of the entire parallel calculation
instead of stalling it
- a failing "new" will trigger an exception which is also captured by
LAMMPS and triggers a global abort
- allocation of multi-dimensional arrays will be done in a C compatible
fashion but so that the storage of the actual data is stored in one
large contiguous block. Thus when MPI communication is needed,
the data can be communicated directly (similar to Fortran arrays).
- the "destroy()" and "sfree()" functions may safely be called on NULL
pointers
- the "destroy()" functions will nullify the pointer variables making
"use after free" errors easy to detect
- it is possible to use a larger than default memory alignment (not on
all operating systems, since the allocated storage pointers must be
compatible with ``free()`` for technical reasons)
In the practical implementation of code this means that any pointer
variables that are class members should be initialized to a
``nullptr`` value in their respective constructors. That way it is
safe to call ``Memory::destroy()`` or ``delete[]`` on them before
*any* allocation outside the constructor. This helps prevent memory
leaks.

View File

@ -0,0 +1,235 @@
Communication patterns
----------------------
This page describes various inter-processor communication operations
provided by LAMMPS, mostly in the core *Comm* class. These are operations
for common tasks implemented using MPI library calls. They are used by
other classes to perform communication of different kinds. These
operations are useful to know about when writing new code for LAMMPS
that needs to communicate data between processors.
Owned and ghost atoms
^^^^^^^^^^^^^^^^^^^^^
As described on the :doc:`parallel partitioning algorithms
<Developer_par_part>` page, LAMMPS spatially decomposes the simulation
domain, either in a *brick* or *tiled* manner. Each processor (MPI
task) owns atoms within its sub-domain and additionally stores ghost
atoms within a cutoff distance of its sub-domain.
Forward and reverse communication
=================================
As described on the :doc:`parallel communication algorithms
<Developer_par_comm>` page, the most common communication operations are
first, *forward communication* which sends owned atom information from
each processor to nearby processors to store with their ghost atoms.
The need to do this communication arises when data from the owned atoms
is updated (e.g. their positions) and this updated information needs to
be **copied** to the corresponding ghost atoms.
And second, *reverse communication* which sends ghost atom information
from each processor to the owning processor to **accumulate** (sum)
the values with the corresponding owned atoms. The need for this
arises when data is computed and also stored with ghost atoms
(e.g. forces when using a "half" neighbor list) and thus those terms
need to be added to their corresponding atoms on the process where
they are "owned" atoms. Please note, that with the :doc:`newton off
<newton>` setting this does not happen and the neighbor lists are
constructed so that these interactions are computed on both MPI
processes containing one of the atoms and only the data pertaining to
the local atom is stored.
The time-integration classes in LAMMPS invoke these operations each
timestep via the *forward_comm()* and *reverse_comm()* methods in the
*Comm* class. Which per-atom data is communicated depends on the
currently used :doc:`atom style <atom_style>` and whether
:doc:`comm_modify vel <comm_modify>` setting is "no" (default) or
"yes".
Similarly, *Pair* style classes can invoke the *forward_comm(this)*
and *reverse_comm(this)* methods in the *Comm* class to perform the
same operations on per-atom data that is generated and stored within
the pair style class. Note that this function requires passing the
``this`` pointer as the first argument to enable the *Comm* class to
call the "pack" and "unpack" functions discussed below. An example of
the use of these functions are many-body pair styles like the
embedded-atom method (EAM) which compute intermediate values in the
first part of the compute() function that need to be stored by both
owned and ghost atoms for the second part of the force computation.
The *Comm* class methods perform the MPI communication for buffers of
per-atom data. They "call back" to the *Pair* class so it can *pack*
or *unpack* the buffer with data the *Pair* class owns. There are 4
such methods that the *Pair* class must define, assuming it uses both
forward and reverse communication:
* pack_forward_comm()
* unpack_forward_comm()
* pack_reverse_comm()
* unpack_reverse_comm()
The arguments to these methods include the buffer and a list of atoms
to pack or unpack. The *Pair* class also must set the *comm_forward*
and *comm_reverse* variables which store the number of values stored
in the communication buffers for each operation. This means, if
desired, it can choose to store multiple per-atom values in the
buffer, and they will be communicated together to minimize
communication overhead. The communication buffers are defined vectors
containing ``double`` values. To correctly store integers that may be
64-bit (bigint, tagint, imageint) in the buffer, you need to use the
`ubuf union <Communication buffer coding with ubuf>`_ construct.
The *Fix*, *Compute*, and *Dump* classes can also invoke the same kind
of forward and reverse communication operations using the same *Comm*
class methods. Likewise the same pack/unpack methods and
comm_forward/comm_reverse variables must be defined by the calling
*Fix*, *Compute*, or *Dump* class.
For *Fix* classes there is an optional second argument to the
*forward_comm()* and *reverse_comm()* call which can be used when the
fix performs multiple modes of communication, with different numbers
of values per atom. The fix should set the *comm_forward* and
*comm_reverse* variables to the maximum value, but can invoke the
communication for a particular mode with a smaller value. For this
to work, the *pack_forward_comm()*, etc methods typically use a class
member variable to choose which values to pack/unpack into/from the
buffer.
Finally, for reverse communications in *Fix* classes there is also the
*reverse_comm_variable()* method that allows the communication to have
a different amount of data per-atom. It invokes these corresponding
callback methods:
* pack_reverse_comm_size()
* unpack_reverse_comm_size()
which have extra arguments to specify the amount of data stored
in the buffer for each atom.
Higher level communication
^^^^^^^^^^^^^^^^^^^^^^^^^^
There are also several higher-level communication operations provided
in LAMMPS which work for either *brick* or *tiled* decompositions.
They may be useful for a new class to invoke if it requires more
sophisticated communication than the *forward* and *reverse* methods
provide. The 3 communication operations described here are
* ring
* irregular
* rendezvous
You can invoke these *grep* command in the LAMMPS src directory, to
see a list of classes that invoke the 3 operations.
* ``grep "\->ring" *.cpp */*.cpp``
* ``grep "irregular\->" *.cpp``
* ``grep "\->rendezvous" *.cpp */*.cpp``
Ring operation
==============
The *ring* operation is invoked via the *ring()* method in the *Comm*
class.
Each processor first creates a buffer with a list of values, typically
associated with a subset of the atoms it owns. Now think of the *P*
processors as connected to each other in a *ring*. Each processor *M*
sends data to the next *M+1* processor. It receives data from the
preceding *M-1* processor. The ring is periodic so that the last
processor sends to the first processor, and the first processor
receives from the last processor.
Invoking the *ring()* method passes each processor's buffer in *P*
steps around the ring. At each step a *callback* method, provided as
an argument to ring(), in the caller is invoked. This allows each
processor to examine the data buffer provided by every other
processor. It may extract values needed by its atoms from the
buffers, or it may alter placeholder values in the buffer. In the
latter case, when the *ring* operation is complete, each processor can
examine its original buffer to extract modified values.
Note that the *ring* operation is similar to an MPI_Alltoall()
operation where every processor effectively sends and receives data to
every other processor. The difference is that the *ring* operation
does it one step at a time, so the total volume of data does not need
to be stored by every processor. However, the *ring* operation is
also less efficient than MPI_Alltoall() because of the *P* stages
required. So it is typically only suitable for small data buffers and
occasional operations that are not time-critical.
Irregular operation
===================
The *irregular* operation is provided by the *Irregular* class. What
LAMMPS terms irregular communication is when each processor knows what
data it needs to send to what processor, but does not know what
processors are sending it data. An example is when load-balancing is
performed and each processor needs to send some of its atoms to new
processors.
The *Irregular* class provides 5 high-level methods useful in this
context:
* create_data()
* exchange_data()
* create_atom()
* exchange_atom()
* migrate_atoms()
For the *create_data()* method, each processor specifies a list of *N*
datums to send, each to a specified processor. Internally, the method
creates efficient data structures for performing the communication.
The *exchange_data()* method triggers the communication to be
performed. Each processor provides the vector of *N* datums to send,
and the size of each datum. All datums must be the same size.
The *create_atom()* and *exchange_atom()* methods are similar except
that the size of each datum can be different. Typically this is used
to communicate atoms, each with a variable amount of per-atom data, to
other processors.
The *migrate_atoms()* method is a convenience wrapper on the
*create_atom()* and *exchange_atom()* methods to simplify
communication of all the per-atom data associated with an atom so that
the atom can effectively migrate to a new owning processor. It is
similar to the *exchange()* method in the *Comm* class invoked when
atoms move to neighboring processors (in the regular or tiled
decomposition) during timestepping, except that it allows atoms to
have moved arbitrarily long distances and still be properly
communicated to a new owning processor.
Rendezvous operation
====================
Finally, the *rendezvous* operation is invoked via the *rendezvous()*
method in the *Comm* class. Depending on how much communication is
needed and how many processors a LAMMPS simulation is running on, it
can be a much more efficient choice than the *ring()* method. It uses
the *irregular* operation internally once or twice to do its
communication. The rendezvous algorithm is described in detail in
:ref:`(Plimpton) <Plimpton>`, including some LAMMPS use cases.
For the *rendezvous()* method, each processor specifies a list of *N*
datums to send and which processor to send each of them to.
Internally, this communication is performed as an irregular operation.
The received datums are returned to the caller via invocation of
*callback* function, provided as an argument to *rendezvous()*. The
caller can then process the received datums and (optionally) assemble
a new list of datums to communicate to a new list of specific
processors. When the callback function exits, the *rendezvous()*
method performs a second irregular communication on the new list of
datums.
Examples in LAMMPS of use of the *rendezvous* operation are the
:doc:`fix rigid/small <fix_rigid>` and :doc:`fix shake
<fix_shake>` commands (for one-time identification of the rigid body
atom clusters) and the identification of special_bond 1-2, 1-3 and 1-4
neighbors within molecules. See the :doc:`special_bonds <special_bonds>`
command for context.
----------
.. _Plimpton:
**(Plimpton)** Plimpton and Knight, JPDC, 147, 184-195 (2021).

View File

@ -7,6 +7,215 @@ typically document what a variable stores, what a small section of
code does, or what a function does and its input/outputs. The topics
on this page are intended to document code functionality at a higher level.
Available topics are:
- `Reading and parsing of text and text files`_
- `Requesting and accessing neighbor lists`_
- `Fix contributions to instantaneous energy, virial, and cumulative energy`_
- `KSpace PPPM FFT grids`_
----
Reading and parsing of text and text files
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
It is frequently required for a class in LAMMPS to read in additional
data from a file, e.g. potential parameters from a potential file for
manybody potentials. LAMMPS provides several custom classes and
convenience functions to simplify the process. They offer the
following benefits:
- better code reuse and fewer lines of code needed to implement reading
and parsing data from a file
- better detection of format errors, incompatible data, and better error messages
- exit with an error message instead of silently converting only part of the
text to a number or returning a 0 on unrecognized text and thus reading incorrect values
- re-entrant code through avoiding global static variables (as used by ``strtok()``)
- transparent support for translating unsupported UTF-8 characters to their ASCII equivalents
(the text-to-value conversion functions **only** accept ASCII characters)
In most cases (e.g. potential files) the same data is needed on all MPI
ranks. Then it is best to do the reading and parsing only on MPI rank
0, and communicate the data later with one or more ``MPI_Bcast()``
calls. For reading generic text and potential parameter files the
custom classes :cpp:class:`TextFileReader <LAMMPS_NS::TextFileReader>`
and :cpp:class:`PotentialFileReader <LAMMPS_NS::PotentialFileReader>`
are available. They allow reading the file as individual lines for which
they can return a tokenizer class (see below) for parsing the line. Or
they can return blocks of numbers as a vector directly. The
documentation on :ref:`File reader classes <file-reader-classes>`
contains an example for a typical case.
When reading per-atom data, the data on each line of the file usually
needs to include an atom ID so it can be associated with a particular
atom. In that case the data can be read in multi-line chunks and
broadcast to all MPI ranks with
:cpp:func:`utils::read_lines_from_file()
<LAMMPS_NS::utils::read_lines_from_file>`. Those chunks are then
split into lines, parsed, and applied only to atoms the MPI rank
"owns".
For splitting a string (incrementally) into words and optionally
converting those to numbers, the :cpp:class:`Tokenizer
<LAMMPS_NS::Tokenizer>` and :cpp:class:`ValueTokenizer
<LAMMPS_NS::ValueTokenizer>` can be used. Those provide a superset of
the functionality of ``strtok()`` from the C-library and the latter
also includes conversion to different types. Any errors while
processing the string in those classes will result in an exception,
which can be caught and the error processed as needed. Unlike the
C-library functions ``atoi()``, ``atof()``, ``strtol()``, or
``strtod()`` the conversion will check if the converted text is a
valid integer or floating point number and will not silently return an
unexpected or incorrect value. For example, ``atoi()`` will return 12
when converting "12.5", while the ValueTokenizer class will throw an
:cpp:class:`InvalidIntegerException
<LAMMPS_NS::InvalidIntegerException>` if
:cpp:func:`ValueTokenizer::next_int()
<LAMMPS_NS::ValueTokenizer::next_int>` is called on the same string.
Requesting and accessing neighbor lists
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
LAMMPS uses Verlet-style neighbor lists to avoid having to loop over
*all* pairs of *all* atoms when computing pairwise properties with a
cutoff (e.g. pairwise forces or radial distribution functions). There
are three main algorithms that can be selected by the :doc:`neighbor
command <neighbor>`: `bin` (the default, uses binning to achieve linear
scaling with system size), `nsq` (without binning, quadratic scaling),
`multi` (with binning, optimized for varying cutoffs or polydisperse
granular particles). In addition to how the neighbor lists are
constructed a number of different variants of neighbor lists need to be
created (e.g. "full" or "half") for different purposes and styles and
those may be required in every time step ("perpetual") or on some steps
("occasional").
The neighbor list creation is managed by the ``Neighbor`` class.
Individual classes can obtain a neighbor list by creating an instance of
a ``NeighRequest`` class which is stored in a list inside the
``Neighbor`` class. The ``Neighbor`` class will then analyze the
various requests and apply optimizations where neighbor lists that have
the same settings will be created only once and then copied, or a list
may be constructed by processing a neighbor list from a different
request that is a superset of the requested list. The neighbor list
build is then :doc:`processed in parallel <Developer_par_neigh>`.
The most commonly required neighbor list is a so-called "half" neighbor
list, where each pair of atoms is listed only once (except when the
:doc:`newton command setting <newton>` for pair is off; in that case
pairs straddling sub-domains or periodic boundaries will be listed twice).
Thus these are the default settings when a neighbor list request is created in:
.. code-block:: C++
void Pair::init_style()
{
neighbor->add_request(this);
}
void Pair::init_list(int /*id*/, NeighList *ptr)
{
list = ptr;
}
The ``this`` pointer argument is required so the neighbor list code can
access the requesting class instance to store the assembled neighbor
list with that instance by calling its ``init_list()`` member function.
The optional second argument (omitted here) contains a bitmask of flags
that determines the kind of neighbor list requested. The default value
used here asks for a perpetual "half" neighbor list.
Non-default values of the second argument need to be used to adjust a
neighbor list request to the specific needs of a style an additional
request flag is needed. The :doc:`tersoff <pair_tersoff>` pair style,
for example, needs a "full" neighbor list:
.. code-block:: C++
void PairTersoff::init_style()
{
// [...]
neighbor->add_request(this, NeighConst::REQ_FULL);
}
When a pair style supports r-RESPA time integration with different cutoff regions,
the request flag may depend on the corresponding r-RESPA settings. Here an example
from pair style lj/cut:
.. code-block:: C++
void PairLJCut::init_style()
{
int list_style = NeighConst::REQ_DEFAULT;
if (update->whichflag == 1 && utils::strmatch(update->integrate_style, "^respa")) {
auto respa = (Respa *) update->integrate;
if (respa->level_inner >= 0) list_style = NeighConst::REQ_RESPA_INOUT;
if (respa->level_middle >= 0) list_style = NeighConst::REQ_RESPA_ALL;
}
neighbor->add_request(this, list_style);
// [...]
}
Granular pair styles need neighbor lists based on particle sizes and not cutoff
and also may require to have the list of previous neighbors available ("history").
For example with:
.. code-block:: C++
if (use_history) neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_HISTORY);
else neighbor->add_request(this, NeighConst::REQ_SIZE);
In case a class would need to make multiple neighbor list requests with different
settings each request can set an id which is then used in the corresponding
``init_list()`` function to assign it to the suitable pointer variable. This is
done for example by the :doc:`pair style meam <pair_meam>`:
.. code-block:: C++
void PairMEAM::init_style()
{
// [...]
neighbor->add_request(this, NeighConst::REQ_FULL)->set_id(1);
neighbor->add_request(this)->set_id(2);
}
void PairMEAM::init_list(int id, NeighList *ptr)
{
if (id == 1) listfull = ptr;
else if (id == 2) listhalf = ptr;
}
Fixes may require a neighbor list that is only build occasionally (or
just once) and this can also be indicated by a flag. As an example here
is the request from the ``FixPeriNeigh`` class which is created
internally by :doc:`Peridynamics pair styles <pair_peri>`:
.. code-block:: C++
neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL);
It is also possible to request a neighbor list that uses a different cutoff
than what is usually inferred from the pair style settings (largest cutoff of
all pair styles plus neighbor list skin). The following is used in the
:doc:`compute rdf <compute_rdf>` command implementation:
.. code-block:: C++
if (cutflag)
neighbor->add_request(this, NeighConst::REQ_OCCASIONAL)->set_cutoff(mycutneigh);
else
neighbor->add_request(this, NeighConst::REQ_OCCASIONAL);
The neighbor list request function has a slightly different set of arguments
when created by a command style. In this case the neighbor list is
*always* an occasional neighbor list, so that flag is not needed. However
for printing the neighbor list summary the name of the requesting command
should be set. Below is the request from the :doc:`delete atoms <delete_atoms>`
command:
.. code-block:: C++
neighbor->add_request(this, "delete_atoms", NeighConst::REQ_FULL);
Fix contributions to instantaneous energy, virial, and cumulative energy
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -225,7 +225,7 @@ follows:
commands in an input script.
- The Force class computes various forces between atoms. The Pair
parent class is for non-bonded or pair-wise forces, which in LAMMPS
parent class is for non-bonded or pairwise forces, which in LAMMPS
also includes many-body forces such as the Tersoff 3-body potential if
those are computed by walking pairwise neighbor lists. The Bond,
Angle, Dihedral, Improper parent classes are styles for bonded
@ -252,12 +252,6 @@ follows:
- The Timer class logs timing information, output at the end
of a run.
.. TODO section on "Spatial decomposition and parallel operations"
.. diagram of 3d processor grid, brick vs. tiled. local vs. ghost
.. atoms, 6-way communication with pack/unpack functions,
.. PBC as part of the communication, forward and reverse communication
.. rendezvous communication, ring communication.
.. TODO section on "Fixes, Computes, and Variables"
.. how and when data is computed and provided and how it is
.. referenced. flags in Fix/Compute/Variable classes tell

View File

@ -8,11 +8,20 @@ without recompiling LAMMPS. The functionality for this and the
Plugins use the operating system's capability to load dynamic shared
object (DSO) files in a way similar shared libraries and then reference
specific functions in those DSOs. Any DSO file with plugins has to include
an initialization function with a specific name, "lammpsplugin_init", that
has to follow specific rules described below. When loading the DSO with
the "plugin" command, this function is looked up and called and will then
register the contained plugin(s) with LAMMPS.
specific functions in those DSOs. Any DSO file with plugins has to
include an initialization function with a specific name,
"lammpsplugin_init", that has to follow specific rules described below.
When loading the DSO with the "plugin" command, this function is looked
up and called and will then register the contained plugin(s) with
LAMMPS.
When the environment variable ``LAMMPS_PLUGIN_PATH`` is set, then LAMMPS
will search the directory (or directories) listed in this path for files
with names that end in ``plugin.so`` (e.g. ``helloplugin.so``) and will
try to load the contained plugins automatically at start-up. For
plugins that are loaded this way, the behavior of LAMMPS should be
identical to a binary where the corresponding code was compiled in
statically as a package.
From the programmer perspective this can work because of the object
oriented design of LAMMPS where all pair style commands are derived from
@ -59,25 +68,24 @@ Members of ``lammpsplugin_t``
* - author
- String with the name and email of the author
* - creator.v1
- Pointer to factory function for pair, bond, angle, dihedral, improper or command styles
- Pointer to factory function for pair, bond, angle, dihedral, improper, kspace, or command styles
* - creator.v2
- Pointer to factory function for compute, fix, or region styles
* - handle
- Pointer to the open DSO file handle
Only one of the three alternate creator entries can be used at a time
and which of those is determined by the style of plugin. The
"creator.v1" element is for factory functions of supported styles
computing forces (i.e. command, pair, bond, angle, dihedral, or
improper styles) and the function takes as single argument the pointer
to the LAMMPS instance. The factory function is cast to the
``lammpsplugin_factory1`` type before assignment. The "creator.v2"
element is for factory functions creating an instance of a fix, compute,
or region style and takes three arguments: a pointer to the LAMMPS
instance, an integer with the length of the argument list and a ``char
**`` pointer to the list of arguments. The factory function pointer
needs to be cast to the ``lammpsplugin_factory2`` type before
assignment.
Only one of the two alternate creator entries can be used at a time and
which of those is determined by the style of plugin. The "creator.v1"
element is for factory functions of supported styles computing forces
(i.e. pair, bond, angle, dihedral, or improper styles) or command styles
and the function takes as single argument the pointer to the LAMMPS
instance. The factory function is cast to the ``lammpsplugin_factory1``
type before assignment. The "creator.v2" element is for factory
functions creating an instance of a fix, compute, or region style and
takes three arguments: a pointer to the LAMMPS instance, an integer with
the length of the argument list and a ``char **`` pointer to the list of
arguments. The factory function pointer needs to be cast to the
``lammpsplugin_factory2`` type before assignment.
Pair style example
^^^^^^^^^^^^^^^^^^
@ -249,3 +257,29 @@ by ``#ifdef PAIR_CLASS`` is not needed, since the mapping of the class
name to the style name is done by the plugin registration function with
the information from the ``lammpsplugin_t`` struct. It may be included
in case the new code is intended to be later included in LAMMPS directly.
A plugin may be registered under an existing style name. In that case
the plugin will override the existing code. This can be used to modify
the behavior of existing styles or to debug new versions of them without
having to re-compile or re-install all of LAMMPS.
Compiling plugins
^^^^^^^^^^^^^^^^^
Plugins need to be compiled with the same compilers and libraries
(e.g. MPI) and compilation settings (MPI on/off, OpenMP, integer sizes)
as the LAMMPS executable and library. Otherwise the plugin will likely
not load due to mismatches in the function signatures (LAMMPS is C++ so
scope, type, and number of arguments are encoded into the symbol names
and thus differences in them will lead to failed plugin load commands.
Compilation of the plugin can be managed via both, CMake or traditional
GNU makefiles. Some examples that can be used as a template are in the
``examples/plugins`` folder. The CMake script code has some small
adjustments to allow building the plugins for running unit tests with
them. Another example that converts the KIM package into a plugin can be
found in the ``examples/kim/plugin`` folder. No changes to the sources
of the KIM package themselves are needed; only the plugin interface and
loader code needs to be added. This example only supports building with
CMake, but is probably a more typical example. To compile you need to
run CMake with -DLAMMPS_SOURCE_DIR=<path/to/lammps/src/folder>. Other
configuration setting are identical to those for compiling LAMMPS.

View File

@ -21,18 +21,21 @@ In that case, the functions will stop with an error message, indicating
the name of the problematic file, if possible unless the *error* argument
is a NULL pointer.
The :cpp:func:`fgets_trunc` function will work similar for ``fgets()``
but it will read in a whole line (i.e. until the end of line or end
of file), but store only as many characters as will fit into the buffer
including a final newline character and the terminating NULL byte.
If the line in the file is longer it will thus be truncated in the buffer.
This function is used by :cpp:func:`read_lines_from_file` to read individual
lines but make certain they follow the size constraints.
The :cpp:func:`utils::fgets_trunc() <LAMMPS_NS::utils::fgets_trunc>`
function will work similar for ``fgets()`` but it will read in a whole
line (i.e. until the end of line or end of file), but store only as many
characters as will fit into the buffer including a final newline
character and the terminating NULL byte. If the line in the file is
longer it will thus be truncated in the buffer. This function is used
by :cpp:func:`utils::read_lines_from_file()
<LAMMPS_NS::utils::read_lines_from_file>` to read individual lines but
make certain they follow the size constraints.
The :cpp:func:`read_lines_from_file` function will read the requested
number of lines of a maximum length into a buffer and will return 0
if successful or 1 if not. It also guarantees that all lines are
terminated with a newline character and the entire buffer with a
The :cpp:func:`utils::read_lines_from_file()
<LAMMPS_NS::utils::read_lines_from_file>` function will read the
requested number of lines of a maximum length into a buffer and will
return 0 if successful or 1 if not. It also guarantees that all lines
are terminated with a newline character and the entire buffer with a
NULL character.
----------
@ -62,7 +65,7 @@ silently returning the result of a partial conversion or zero in cases
where the string is not a valid number. This behavior improves
detecting typos or issues when processing input files.
Similarly the :cpp:func:`logical() <LAMMPS_NS::utils::logical>` function
Similarly the :cpp:func:`utils::logical() <LAMMPS_NS::utils::logical>` function
will convert a string into a boolean and will only accept certain words.
The *do_abort* flag should be set to ``true`` in case this function
@ -70,8 +73,8 @@ is called only on a single MPI rank, as that will then trigger the
a call to ``Error::one()`` for errors instead of ``Error::all()``
and avoids a "hanging" calculation when run in parallel.
Please also see :cpp:func:`is_integer() <LAMMPS_NS::utils::is_integer>`
and :cpp:func:`is_double() <LAMMPS_NS::utils::is_double>` for testing
Please also see :cpp:func:`utils::is_integer() <LAMMPS_NS::utils::is_integer>`
and :cpp:func:`utils::is_double() <LAMMPS_NS::utils::is_double>` for testing
strings for compliance without conversion.
----------
@ -130,6 +133,9 @@ and parsing files or arguments.
.. doxygenfunction:: trim_comment
:project: progguide
.. doxygenfunction:: star_subst
:project: progguide
.. doxygenfunction:: has_utf8
:project: progguide
@ -205,6 +211,15 @@ Convenience functions
.. doxygenfunction:: logmesg(LAMMPS *lmp, const std::string &mesg)
:project: progguide
.. doxygenfunction:: errorurl
:project: progguide
.. doxygenfunction:: missing_cmd_args
:project: progguide
.. doxygenfunction:: flush_buffers(LAMMPS *lmp)
:project: progguide
.. doxygenfunction:: getsyserror
:project: progguide
@ -231,6 +246,44 @@ Customized standard functions
---------------------------
Special Math functions
----------------------
The ``MathSpecial`` namespace implements a selection of custom and optimized
mathematical functions for a variety of applications.
.. doxygenfunction:: factorial
:project: progguide
.. doxygenfunction:: exp2_x86
:project: progguide
.. doxygenfunction:: fm_exp
:project: progguide
.. doxygenfunction:: my_erfcx
:project: progguide
.. doxygenfunction:: expmsq
:project: progguide
.. doxygenfunction:: square
:project: progguide
.. doxygenfunction:: cube
:project: progguide
.. doxygenfunction:: powsign
:project: progguide
.. doxygenfunction:: powint
:project: progguide
.. doxygenfunction:: powsinxx
:project: progguide
---------------------------
Tokenizer classes
-----------------
@ -337,11 +390,11 @@ This code example should produce the following output:
.. doxygenclass:: LAMMPS_NS::InvalidIntegerException
:project: progguide
:members: what
:members:
.. doxygenclass:: LAMMPS_NS::InvalidFloatException
:project: progguide
:members: what
:members:
----------
@ -390,21 +443,26 @@ A typical code segment would look like this:
----------
.. _file-reader-classes:
File reader classes
-------------------
The purpose of the file reader classes is to simplify the recurring task
of reading and parsing files. They can use the
:cpp:class:`LAMMPS_NS::ValueTokenizer` class to process the read in
text. The :cpp:class:`LAMMPS_NS::TextFileReader` is a more general
version while :cpp:class:`LAMMPS_NS::PotentialFileReader` is specialized
to implement the behavior expected for looking up and reading/parsing
files with potential parameters in LAMMPS. The potential file reader
class requires a LAMMPS instance, requires to be run on MPI rank 0 only,
will use the :cpp:func:`LAMMPS_NS::utils::get_potential_file_path`
function to look up and open the file, and will call the
:cpp:class:`LAMMPS_NS::Error` class in case of failures to read or to
convert numbers, so that LAMMPS will be aborted.
:cpp:class:`ValueTokenizer <LAMMPS_NS::ValueTokenizer>` class to process
the read in text. The :cpp:class:`TextFileReader
<LAMMPS_NS::TextFileReader>` is a more general version while
:cpp:class:`PotentialFileReader <LAMMPS_NS::PotentialFileReader>` is
specialized to implement the behavior expected for looking up and
reading/parsing files with potential parameters in LAMMPS. The
potential file reader class requires a LAMMPS instance, requires to be
run on MPI rank 0 only, will use the
:cpp:func:`utils::get_potential_file_path
<LAMMPS_NS::utils::get_potential_file_path>` function to look up and
open the file, and will call the :cpp:class:`LAMMPS_NS::Error` class in
case of failures to read or to convert numbers, so that LAMMPS will be
aborted.
.. code-block:: C++
:caption: Use of PotentialFileReader class in pair style coul/streitz
@ -479,10 +537,10 @@ provided, as that is used to determine whether a new page of memory
must be used.
The :cpp:class:`MyPage <LAMMPS_NS::MyPage>` class offers two ways to
reserve a chunk: 1) with :cpp:func:`get() <LAMMPS_NS::MyPage::get>` the
chunk size needs to be known in advance, 2) with :cpp:func:`vget()
reserve a chunk: 1) with :cpp:func:`MyPage::get() <LAMMPS_NS::MyPage::get>` the
chunk size needs to be known in advance, 2) with :cpp:func:`MyPage::vget()
<LAMMPS_NS::MyPage::vget>` a pointer to the next chunk is returned, but
its size is registered later with :cpp:func:`vgot()
its size is registered later with :cpp:func:`MyPage::vgot()
<LAMMPS_NS::MyPage::vgot>`.
.. code-block:: C++
@ -585,4 +643,3 @@ the communication buffers.
.. doxygenunion:: LAMMPS_NS::ubuf
:project: progguide

View File

@ -11,6 +11,7 @@ them.
:maxdepth: 1
Errors_common
Errors_details
Errors_bugs
Errors_debug
Errors_messages

View File

@ -17,9 +17,8 @@ the steps outlined below:
if your issue has already been reported and if it is still open.
* Check the `GitHub Pull Requests page <https://github.com/lammps/lammps/pulls>`_
to see if there is already a fix for your bug pending.
* Check the `mailing list archives <https://www.lammps.org/mail.html>`_ or
the `LAMMPS forum <https://www.lammps.org/forum.html>`_ to see if the
issue has been discussed before.
* Check the `LAMMPS forum at MatSci <https://matsci.org/lammps/>`_
to see if the issue has been discussed before.
If none of these steps yields any useful information, please file a new
bug report on the `GitHub Issue page <https://github.com/lammps/lammps/issues>`_.
@ -38,12 +37,9 @@ generate this restart from a data file or a simple additional input.
This input deck can be used with tools like a debugger or `valgrind
<https://valgrind.org>`_ to further :doc:`debug the crash <Errors_debug>`.
You may also send an email to the LAMMPS mailing list at
"lammps-users at lists.sourceforge.net" describing the problem with the
same kind of information. The mailing list can provide a faster response,
especially if the bug reported is actually expected behavior. But because
of the high volume of the mailing list, it can happen that your e-mail
is overlooked and then forgotten. Issues on GitHub have to be explicitly
closed, so that will *guarantee* that at least one LAMMPS developer will
have looked at it.
You may also post a message in the `development category of the LAMMPS
forum at MatSci <https://matsci.org/c/lammps/lammps-development/>`_
describing the problem with the same kind of information. The forum can
provide a faster response, especially if the bug reported is actually
expected behavior or other LAMMPS users have come across it before.

View File

@ -0,0 +1,27 @@
Error and warning details
=========================
Many errors or warnings are self-explanatory and thus straightforward to
resolve. However, there are also cases, where there is no single cause
and explanation, where LAMMPS can only detect symptoms of an error but
not the exact cause, or where the explanation needs to be more detailed than
what can be fit into a message printed by the program. The following are
discussions of such cases.
.. _err0001:
Unknown identifier in data file
-------------------------------
This error happens when LAMMPS encounters a line of text in an unexpected format
while reading a data file. This is most commonly cause by inconsistent header and
section data. The header section informs LAMMPS how many entries or lines are expected in the
various sections (like Atoms, Masses, Pair Coeffs, *etc.*\ ) of the data file.
If there is a mismatch, LAMMPS will either keep reading beyond the end of a section
or stop reading before the section has ended.
Such a mismatch can happen unexpectedly when the first line of the data
is *not* a comment as required by the format. That would result in
LAMMPS expecting, for instance, 0 atoms because the "atoms" header line
is treated as a comment.

View File

@ -1941,6 +1941,9 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
*Compute ID for fix numdiff does not exist*
Self-explanatory.
*Compute ID for fix numdiff/virial does not exist*
Self-explanatory.
*Compute ID for fix store/state does not exist*
Self-explanatory.
@ -3796,6 +3799,10 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
Self-explanatory. Efficient loop over all atoms for numerical
difference requires consecutive atom IDs.
*Fix numdiff/virial must use group all*
Virial contributions computed by this fix are
computed on all atoms.
*Fix nve/asphere requires extended particles*
This fix can only be used for particles with a shape setting.

View File

@ -416,7 +416,7 @@ This will most likely cause errors in kinetic fluctuations.
not defined for the specified atom style.
*Molecule has bond topology but no special bond settings*
This means the bonded atoms will not be excluded in pair-wise
This means the bonded atoms will not be excluded in pairwise
interactions.
*Molecule template for create_atoms has multiple molecules*

View File

@ -54,6 +54,8 @@ Lowercase directories
+-------------+------------------------------------------------------------------+
| body | body particles, 2d system |
+-------------+------------------------------------------------------------------+
| bpm | BPM simulations of pouring elastic grains and plate impact |
+-------------+------------------------------------------------------------------+
| cmap | CMAP 5-body contributions to CHARMM force field |
+-------------+------------------------------------------------------------------+
| colloid | big colloid particles in a small particle solvent, 2d system |
@ -94,12 +96,12 @@ Lowercase directories
+-------------+------------------------------------------------------------------+
| latte | examples for using fix latte for DFTB via the LATTE library |
+-------------+------------------------------------------------------------------+
| mdi | use of the MDI package and MolSSI MDI code coupling 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 |

View File

@ -22,8 +22,9 @@ General howto
Howto_replica
Howto_library
Howto_couple
Howto_client_server
Howto_mdi
Howto_bpm
Howto_broken_bonds
Settings howto
==============

View File

@ -239,7 +239,7 @@ is consistent with the 6 moments of inertia: ixx iyy izz ixy ixz iyz =
.. parsed-literal::
3 1 27
3 1 19
4
1 1 4 0 0 0
-0.7071 -0.7071 0

119
doc/src/Howto_bpm.rst Normal file
View File

@ -0,0 +1,119 @@
Bonded particle models
======================
The BPM package implements bonded particle models which can be used to
simulate mesoscale solids. Solids are constructed as a collection of
particles which each represent a coarse-grained region of space much
larger than the atomistic scale. Particles within a solid region are
then connected by a network of bonds to provide solid elasticity.
Unlike traditional bonds in molecular dynamics, the equilibrium bond
length can vary between bonds. Bonds store the reference state. This
includes setting the equilibrium length equal to the initial distance
between the two particles but can also include data on the bond
orientation for rotational models. This produces a stress free initial
state. Furthermore, bonds are allowed to break under large strains
producing fracture. The examples/bpm directory has sample input scripts
for simulations of the fragmentation of an impacted plate and the
pouring of extended, elastic bodies.
----------
Bonds can be created using a :doc:`read data <read_data>` or
:doc:`create bonds <create_bonds>` command. Alternatively, a
:doc:`molecule <molecule>` template with bonds can be used with
:doc:`fix deposit <fix_deposit>` or :doc:`fix pour <fix_pour>` to
create solid grains.
In this implementation, bonds store their reference state when they are
first computed in the setup of the first simulation run. Data is then
preserved across run commands and is written to :doc:`binary restart
files <restart>` such that restarting the system will not reset the
reference state of a bond. Bonds that are created midway into a run,
such as those created by pouring grains using :doc:`fix pour
<fix_pour>`, are initialized on that timestep.
As bonds can be broken between neighbor list builds, the
:doc:`special_bonds <special_bonds>` command works differently for BPM
bond styles. There are two possible settings which determine how pair
interactions work between bonded particles. First, one can turn off
all pair interactions between bonded particles. Unlike :doc:`bond
quartic <bond_quartic>`, this is not done by subtracting pair forces
during the bond computation but rather by dynamically updating the
special bond list. This is the default behavior of BPM bond styles and
is done by updating the 1-2 special bond list as bonds break. To do
this, LAMMPS requires :doc:`newton <newton>` bond off such that all
processors containing an atom know when a bond breaks. Additionally,
one must do either (A) or (B).
A) Use the following special bond settings
.. code-block:: LAMMPS
special_bonds lj 0 1 1 coul 1 1 1
These settings accomplish two goals. First, they turn off 1-3 and 1-4
special bond lists, which are not currently supported for BPMs. As
BPMs often have dense bond networks, generating 1-3 and 1-4 special
bond lists is expensive. By setting the lj weight for 1-2 bonds to
zero, this turns off pairwise interactions. Even though there are no
charges in BPM models, setting a nonzero coul weight for 1-2 bonds
ensures all bonded neighbors are still included in the neighbor list
in case bonds break between neighbor list builds.
B) Alternatively, one can simply overlay pair interactions such that all
bonded particles also feel pair interactions. This can be
accomplished by using the *overlay/pair* keyword present in all bpm
bond styles and by using the following special bond settings
.. code-block:: LAMMPS
special_bonds lj/coul 1 1 1
See the :doc:`Howto <Howto_broken_bonds>` page on broken bonds for
more information.
----------
Currently there are two types of bonds included in the BPM
package. The first bond style, :doc:`bond bpm/spring
<bond_bpm_spring>`, only applies pairwise, central body forces. Point
particles must have :doc:`bond atom style <atom_style>` and may be
thought of as nodes in a spring network. Alternatively, the second
bond style, :doc:`bond bpm/rotational <bond_bpm_rotational>`, resolves
tangential forces and torques arising with the shearing, bending, and
twisting of the bond due to rotation or displacement of particles.
Particles are similar to those used in the :doc:`granular package
<Howto_granular>`, :doc:`atom style sphere <atom_style>`. However,
they must also track the current orientation of particles and store bonds
and therefore use a :doc:`bpm/sphere atom style <atom_style>`.
This also requires a unique integrator :doc:`fix nve/bpm/sphere
<fix_nve_bpm_sphere>` which numerically integrates orientation similar
to :doc:`fix nve/asphere <fix_nve_asphere>`.
To monitor the fracture of bonds in the system, all BPM bond styles
have the ability to record instances of bond breakage to output using
the :doc:`dump local <dump>` command. Additionally, one can use
:doc:`compute nbond/atom <compute_nbond_atom>` to tally the current
number of bonds per atom.
In addition to bond styles, a new pair style :doc:`pair bpm/spring
<pair_bpm_spring>` was added to accompany the bpm/spring bond
style. This pair style is simply a hookean repulsion with similar
velocity damping as its sister bond style.
----------
While LAMMPS has many utilities to create and delete bonds, *only*
the following are currently compatible with BPM bond styles:
* :doc:`create_bonds <create_bonds>`
* :doc:`delete_bonds <delete_bonds>`
* :doc:`fix bond/create <fix_bond_create>`
* :doc:`fix bond/break <fix_bond_break>`
* :doc:`fix bond/swap <fix_bond_swap>`
Note :doc:`create_bonds <create_bonds>` requires certain special_bonds settings.
To subtract pair interactions, one will need to switch between different
special_bonds settings in the input script. An example is found in
examples/bpm/impact.

View File

@ -0,0 +1,48 @@
Broken Bonds
============
Typically, bond interactions persist for the duration of a simulation
in LAMMPS. However, there are some exceptions that allow for bonds to
break including the :doc:`quartic bond style <bond_quartic>` and the
bond styles in the :doc:`BPM package <Howto_bpm>` which contains the
:doc:`bpm/spring <bond_bpm_spring>` and
:doc:`bpm/rotational <bond_bpm_rotational>` bond styles. In these cases,
a bond can be broken if it is stretched beyond a user-defined threshold.
LAMMPS accomplishes this by setting the bond type to zero such that the
bond force is no longer computed.
Users are normally able to weight the contribution of pair forces to atoms
that are bonded using the :doc:`special_bonds command <special_bonds>`.
When bonds break, this is not always the case. For the quartic bond style,
pair forces are always turned off between bonded particles. LAMMPS does
this via a computational sleight-of-hand. It subtracts the pairwise
interaction as part of the bond computation. When the bond breaks, the
subtraction stops. For this to work, the pairwise interaction must always
be computed by the :doc:`pair_style <pair_style>` command, whether the bond
is broken or not. This means that :doc:`special_bonds <special_bonds>` must
be set to 1,1,1. After the bond breaks, the pairwise interaction between the
two atoms is turned on, since they are no longer bonded.
In the BPM package, one can either turn off all pair interactions between
bonded particles or leave them on, overlaying pair forces on top of bond
forces. To remove pair forces, the special bond list is dynamically
updated. More details can be found on the :doc:`Howto BPM <Howto_bpm>`
page.
Bonds can also be broken by fixes which change bond topology, including
:doc:`fix bond/break <fix_bond_break>` and
:doc:`fix bond/react <fix_bond_react>`. These fixes will automatically
trigger a rebuild of the neighbor list and update special bond data structures
when bonds are broken.
Note that when bonds are dumped to a file via the :doc:`dump local <dump>` command, bonds with type 0 are not included. The
:doc:`delete_bonds <delete_bonds>` command can also be used to query the
status of broken bonds or permanently delete them, e.g.:
.. code-block:: LAMMPS
delete_bonds all stats
delete_bonds all bond 0 remove
The compute :doc:`nbond/atom <compute_nbond_atom>` can also be used
to tally the current number of bonds per atom, excluding broken bonds.

View File

@ -1,163 +0,0 @@
Using LAMMPS in client/server mode
==================================
Client/server coupling of two codes is where one code is the "client"
and sends request messages to a "server" code. The server responds to
each request with a reply message. This enables the two codes to work
in tandem to perform a simulation. LAMMPS can act as either a client
or server code.
Some advantages of client/server coupling are that the two codes run
as stand-alone executables; they are not linked together. Thus
neither code needs to have a library interface. This often makes it
easier to run the two codes on different numbers of processors. If a
message protocol (format and content) is defined for a particular kind
of simulation, then in principle any code that implements the
client-side protocol can be used in tandem with any code that
implements the server-side protocol, without the two codes needing to
know anything more specific about each other.
A simple example of client/server coupling is where LAMMPS is the
client code performing MD timestepping. Each timestep it sends a
message to a server quantum code containing current coords of all the
atoms. The quantum code computes energy and forces based on the
coords. It returns them as a message to LAMMPS, which completes the
timestep.
A more complex example is where LAMMPS is the client code and
processes a series of data files, sending each configuration to a
quantum code to compute energy and forces. Or LAMMPS runs dynamics
with an atomistic force field, but pauses every N steps to ask the
quantum code to compute energy and forces.
Alternate methods for code coupling with LAMMPS are described on
the :doc:`Howto couple <Howto_couple>` doc page.
The protocol for using LAMMPS as a client is to use these 3 commands
in this order (other commands may come in between):
* :doc:`message client <message>` # initiate client/server interaction
* :doc:`fix client/md <fix_client_md>` # any client fix which makes specific requests to the server
* :doc:`message quit <message>` # terminate client/server interaction
In between the two message commands, a client fix command and
:doc:`unfix <unfix>` command can be used multiple times. Similarly,
this sequence of 3 commands can be repeated multiple times, assuming
the server program operates in a similar fashion, to initiate and
terminate client/server communication.
The protocol for using LAMMPS as a server is to use these 2 commands
in this order (other commands may come in between):
* :doc:`message server <message>` # initiate client/server interaction
* :doc:`server md <server_md>` # any server command which responds to specific requests from the client
This sequence of 2 commands can be repeated multiple times, assuming
the client program operates in a similar fashion, to initiate and
terminate client/server communication.
LAMMPS support for client/server coupling is in its :ref:`MESSAGE package <PKG-MESSAGE>` which implements several
commands that enable LAMMPS to act as a client or server, as discussed
below. The MESSAGE package also wraps a client/server library called
CSlib which enables two codes to exchange messages in different ways,
either via files, sockets, or MPI. The CSlib is provided with LAMMPS
in the lib/message dir. The CSlib has its own
`website <https://cslib.sandia.gov>`_ with documentation and test
programs.
.. note::
For client/server coupling to work between LAMMPS and another
code, the other code also has to use the CSlib. This can sometimes be
done without any modifications to the other code by simply wrapping it
with a Python script that exchanges CSlib messages with LAMMPS and
prepares input for or processes output from the other code. The other
code also has to implement a matching protocol for the format and
content of messages that LAMMPS exchanges with it.
These are the commands currently in the MESSAGE package for two
protocols, MD and MC (Monte Carlo). New protocols can easily be
defined and added to this directory, where LAMMPS acts as either the
client or server.
* :doc:`message <message>`
* :doc:`fix client md <fix_client_md>` = LAMMPS is a client for running MD
* :doc:`server md <server_md>` = LAMMPS is a server for computing MD forces
* :doc:`server mc <server_mc>` = LAMMPS is a server for computing a Monte Carlo energy
The server doc files give details of the message protocols
for data that is exchanged between the client and server.
These example directories illustrate how to use LAMMPS as either a
client or server code:
* examples/message
* examples/COUPLE/README
* examples/COUPLE/lammps_mc
* examples/COUPLE/lammps_nwchem
* examples/COUPLE/lammps_vasp
The examples/message directory couples a client instance of LAMMPS to a
server instance of LAMMPS.
The files in the *lammps_mc* folder show how to couple LAMMPS as
a server to a simple Monte Carlo client code as the driver.
The files in the *lammps_nwchem* folder show how to couple LAMMPS
as a client code running MD timestepping to NWChem acting as a
server providing quantum DFT forces, through a Python wrapper script
on NWChem.
The files in the *lammps_vasp* folder show how to couple LAMMPS as
a client code running MD timestepping to VASP acting as a server
providing quantum DFT forces, through a Python wrapper script on VASP.
Here is how to launch a client and server code together for any of the
4 modes of message exchange that the :doc:`message <message>` command
and the CSlib support. Here LAMMPS is used as both the client and
server code. Another code could be substituted for either.
The examples below show launching both codes from the same window (or
batch script), using the "&" character to launch the first code in the
background. For all modes except *mpi/one*, you could also launch the
codes in separate windows on your desktop machine. It does not
matter whether you launch the client or server first.
In these examples either code can be run on one or more processors.
If running in a non-MPI mode (file or zmq) you can launch a code on a
single processor without using mpirun.
IMPORTANT: If you run in mpi/two mode, you must launch both codes via
mpirun, even if one or both of them runs on a single processor. This
is so that MPI can figure out how to connect both MPI processes
together to exchange MPI messages between them.
For message exchange in *file*, *zmq*, or *mpi/two* modes:
.. code-block:: bash
% mpirun -np 1 lmp_mpi -log log.client < in.client &
% mpirun -np 2 lmp_mpi -log log.server < in.server
% mpirun -np 4 lmp_mpi -log log.client < in.client &
% mpirun -np 1 lmp_mpi -log log.server < in.server
% mpirun -np 2 lmp_mpi -log log.client < in.client &
% mpirun -np 4 lmp_mpi -log log.server < in.server
For message exchange in *mpi/one* mode:
Launch both codes in a single mpirun command:
.. code-block:: bash
mpirun -np 2 lmp_mpi -mpicolor 0 -in in.message.client -log log.client : -np 4 lmp_mpi -mpicolor 1 -in in.message.server -log log.server
The two -np values determine how many procs the client and the server
run on.
A LAMMPS executable run in this manner must use the -mpicolor color
command-line option as their its option, where color is an integer
label that will be used to distinguish one executable from another in
the multiple executables that the mpirun command launches. In this
example the client was colored with a 0, and the server with a 1.

View File

@ -12,16 +12,16 @@ LAMMPS can be coupled to other codes in at least 4 ways. Each has
advantages and disadvantages, which you will have to think about in the
context of your application.
1. Define a new :doc:`fix <fix>` command that calls the other code. In
this scenario, LAMMPS is the driver code. During timestepping,
1. Define a new :doc:`fix <fix>` command that calls the other code.
In this scenario, LAMMPS is the driver code. During timestepping,
the fix is invoked, and can make library calls to the other code,
which has been linked to LAMMPS as a library. This is the way how the
which has been linked to LAMMPS as a library. This is the way the
:ref:`LATTE <PKG-LATTE>` package, which performs density-functional
tight-binding calculations using the `LATTE software <https://github.com/lanl/LATTE>`_
to compute forces, is hooked to LAMMPS.
See the :doc:`fix latte <fix_latte>` command for more details.
Also see the :doc:`Modify <Modify>` doc pages for info on how to
add a new fix to LAMMPS.
tight-binding calculations using the `LATTE software
<https://github.com/lanl/LATTE>`_ to compute forces, is hooked to
LAMMPS. See the :doc:`fix latte <fix_latte>` command for more
details. Also see the :doc:`Modify <Modify>` doc pages for info on
how to add a new fix to LAMMPS.
.. spacer
@ -58,6 +58,12 @@ context of your application.
.. spacer
4. Couple LAMMPS with another code in a client/server mode. This is
described on the :doc:`Howto client/server <Howto_client_server>` doc
page.
4. Couple LAMMPS with another code in a client/server fashion, using
using the `MDI Library
<https://molssi-mdi.github.io/MDI_Library/html/index.html>`_
developed by the `Molecular Sciences Software Institute (MolSSI)
<https://molssi.org>`_ to run LAMMPS as either an MDI driver
(client) or an MDI engine (server). The MDI driver issues commands
to the MDI server to exchange data between them. See the
:doc:`Howto mdi <Howto_mdi>` page for more information about how
LAMMPS can operate in either of these modes.

View File

@ -18,23 +18,52 @@ At zero temperature, it is easy to estimate these derivatives by
deforming the simulation box in one of the six directions using the
:doc:`change_box <change_box>` command and measuring the change in the
stress tensor. A general-purpose script that does this is given in the
examples/elastic directory described on the :doc:`Examples <Examples>`
examples/ELASTIC directory described on the :doc:`Examples <Examples>`
doc page.
Calculating elastic constants at finite temperature is more
challenging, because it is necessary to run a simulation that performs
time averages of differential properties. One way to do this is to
measure the change in average stress tensor in an NVT simulations when
time averages of differential properties. There are at least
3 ways to do this in LAMMPS. The most reliable way to do this is
by exploiting the relationship between elastic constants, stress
fluctuations, and the Born matrix, the second derivatives of energy
w.r.t. strain :ref:`(Ray) <Ray>`.
The Born matrix calculation has been enabled by
the :doc:`compute born/matrix <compute_born_matrix>` command,
which works for any bonded or non-bonded potential in LAMMPS.
The most expensive part of the calculation is the sampling of
the stress fluctuations. Several examples of this method are
provided in the examples/ELASTIC_T/BORN_MATRIX directory
described on the :doc:`Examples <Examples>` doc page.
A second way is to measure
the change in average stress tensor in an NVT simulations when
the cell volume undergoes a finite deformation. In order to balance
the systematic and statistical errors in this method, the magnitude of
the deformation must be chosen judiciously, and care must be taken to
fully equilibrate the deformed cell before sampling the stress
tensor. Another approach is to sample the triclinic cell fluctuations
tensor. An example of this method is provided in the
examples/ELASTIC_T/DEFORMATION directory
described on the :doc:`Examples <Examples>` doc page.
Another approach is to sample the triclinic cell fluctuations
that occur in an NPT simulation. This method can also be slow to
converge and requires careful post-processing :ref:`(Shinoda) <Shinoda1>`
converge and requires careful post-processing :ref:`(Shinoda) <Shinoda1>`.
We do not provide an example of this method.
A nice review of the advantages and disadvantages of all of these methods
is provided in the paper by Clavier et al. :ref:`(Clavier) <Clavier>`.
----------
.. _Ray:
**(Ray)** J. R. Ray and A. Rahman, J Chem Phys, 80, 4423 (1984).
.. _Shinoda1:
**(Shinoda)** Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
.. _Clavier:
**(Clavier)** G. Clavier, N. Desbiens, E. Bourasseau, V. Lachet, N. Brusselle-Dupend and B. Rousseau, Mol Sim, 43, 1413 (2017).

View File

@ -1,132 +1,144 @@
Using LAMMPS with the MDI library for code coupling
===================================================
.. note::
This Howto page will eventually replace the
:doc:`Howto client/server <Howto_client_server>` doc page.
Client/server coupling of two codes is where one code is the "client"
and sends request messages (data) to a "server" code. The server
responds to each request with a reply message. This enables the two
codes to work in tandem to perform a simulation. LAMMPS can act as
either a client or server code; it does this by using the `MolSSI
Driver Interface (MDI) library
Client/server coupling of two (or more) codes is where one code is the
"client" and sends request messages (data) to one (or more) "server"
code(s). A server responds to each request with a reply message
(data). This enables two (or more) codes to work in tandem to perform
a simulation. LAMMPS can act as either a client or server code; it
does this by using the `MolSSI Driver Interface (MDI) library
<https://molssi-mdi.github.io/MDI_Library/html/index.html>`_,
developed by the `Molecular Sciences Software Institute (MolSSI)
<https://molssi.org>`_.
<https://molssi.org>`_, which is supported by the :ref:`MDI <PKG-MDI>`
package.
Alternate methods for code coupling with LAMMPS are described on the
:doc:`Howto couple <Howto_couple>` doc page.
Some advantages of client/server coupling are that the two codes can run
Some advantages of client/server coupling are that the codes can run
as stand-alone executables; they need not be linked together. Thus
neither code needs to have a library interface. This also makes it easy
to run the two codes on different numbers of processors. If a message
protocol (format and content) is defined for a particular kind of
simulation, then in principle any code which implements the client-side
protocol can be used in tandem with any code which implements the
server-side protocol. Neither code needs to know what specific other
code it is working with.
neither code needs to have a library interface. This also makes it
easy to run the two codes on different numbers of processors. If a
message protocol (format and content) is defined for a particular kind
of simulation, then in principle any code which implements the
client-side protocol can be used in tandem with any code which
implements the server-side protocol. Neither code needs to know what
specific other code it is working with.
In MDI nomenclature, a client code is the "driver", and a server code is
an "engine". One driver code can communicate with one or more instances
of one or more engine codes. Driver and engine codes can be written in
any language: C, C++, Fortran, Python, etc.
In addition to allowing driver and engine(s) running to run as
stand-alone executables, MDI also enables a server code to be a
"plugin" to the client code. In this scenario, server code(s) are
compiled as shared libraries, and one (or more) instances of the
server are instantiated by the driver code. If the driver code runs
in parallel, it can split its MPI communicator into multiple
sub-communicators, and launch each plugin engine instance on a
sub-communicator. Driver processors in that sub-communicator exchange
messages with that engine instance, and can also send MPI messages to
other processors in the driver. The driver code can also destroy
engine instances and re-instantiate them.
In addition to allowing driver and engine(s) to run as stand-alone
executables, MDI also enables an engine to be a *plugin* to the client
code. In this scenario, server code(s) are compiled as shared
libraries, and one (or more) instances of the server are instantiated
by the driver code. If the driver code runs in parallel, it can split
its MPI communicator into multiple sub-communicators, and launch each
plugin engine instance on a sub-communicator. Driver processors
within that sub-communicator exchange messages with the corresponding
engine instance, and can also send MPI messages to other processors in
the driver. The driver code can also destroy engine instances and
re-instantiate them. LAMMPS can operate as either a stand-alone or
plugin MDI engine. When it operates as a driver, if can use either
stand-alone or plugin MDI engines.
The way that a driver communicates with an engine is by making
MDI_Send() and MDI_Recv() calls, which are conceptually similar to
MPI_Send() and MPI_Recv() calls. Each send or receive has a string
which identifies the command name, and optionally some data, which can
be a single value or vector of values of any data type. Inside the
MDI library, data is exchanged between the driver and engine via MPI
calls or sockets. This a run-time choice by the user.
The way in which an MDI driver communicates with an MDI engine is by
making MDI_Send() and MDI_Recv() calls, which are conceptually similar
to MPI_Send() and MPI_Recv() calls. Each send or receive operation
uses a string to identify the command name, and optionally some data,
which can be a single value or vector of values of any data type.
Inside the MDI library, data is exchanged between the driver and
engine via MPI calls or sockets. This a run-time choice by the user.
----------
The :ref:`MDI <PKG-MDI>` package provides a :doc:`mdi engine <mdi>`
command which enables LAMMPS to operate as an MDI engine. Its doc
page explains the variety of standard and custom MDI commands which
the LAMMPS engine recognizes and can respond to.
The package also provides a :doc:`mdi plugin <mdi>` command which
enables LAMMPS to operate as an MDI driver and load an MDI engine as a
plugin library.
The package also has a `fix mdi/aimd <fix_mdi_aimd>` command in which
LAMMPS operates as an MDI driver to perform *ab initio* MD simulations
in conjunction with a quantum mechanics code. Its post_force() method
illustrates how a driver issues MDI commands to another code. This
command can be used to couple to an MDI engine which is either a
stand-alone code or a plugin library.
----------
The examples/mdi directory contains Python scripts and LAMMPS input
script which use LAMMPS as either an MDI driver or engine or both.
Three example use cases are provided:
* Run ab initio MD (AIMD) using 2 instances of LAMMPS, one as driver
and one as an engine. As an engine, LAMMPS is a surrogate for a
quantum code.
* A Python script driver invokes a sequence of unrelated LAMMPS
calculations. Calculations can be single-point energy/force
evaluations, MD runs, or energy minimizations.
* Run AIMD with a Python driver code and 2 LAMMPS instances as
engines. The first LAMMPS instance performs MD timestepping. The
second LAMMPS instance acts as a surrogate QM code to compute
forces.
Note that in any of these example where LAMMPS is used as an engine,
an actual QM code (which supports MDI) could be used in its place,
without modifying other code or scripts, except to specify the name of
the QM code.
The examples/mdi/README file explains how to launch both driver and
engine codes so that they communicate using the MDI library via either
MPI or sockets.
-------------
As an example, LAMMPS and the ``pw.x`` command from Quantum Espresso (a
suite of quantum DFT codes), can work together via the MDI library to
perform an ab initio MD (AIMD) simulation, where LAMMPS runs an MD
simulation and sends a message each timestep to ``pw.x`` asking it to
compute quantum forces on the current configuration of atoms. Here is
how the 2 codes are launched to communicate by MPI:
Currently there are two quantum DFT codes which have direct MDI
support, `Quantum ESPRESSO (QE) <https://www.quantum-espresso.org/>`_
and `INQ <https://qsg.llnl.gov/node/101.html>`_. There are also
several QM codes which have indirect support through QCEngine or i-PI.
The former means they require a wrapper program (QCEngine) with MDI
support which writes/read files to pass data to the quantum code
itself. The list of QCEngine-supported and i-PI-supported quantum
codes is on the `MDI webpage
<https://molssi-mdi.github.io/MDI_Library/html/index.html>`_.
Here is how to build QE as a stand-alone ``pw.x`` file which can be
used in stand-alone mode:
.. code-block:: bash
% mpirun -np 2 lmp_mpi -mdi "-role DRIVER -name d -method MPI" \
-in in.aimd : -np 16 pw.x -in qe.in -mdi "-role ENGINE -name e -method MPI"
% git clone --branch mdi_plugin https://github.com/MolSSI-MDI/q-e.git <base_path>/q-e
% build the executable pw.x, following the `QE build guide <https://gitlab.com/QEF/q-e/-/wikis/Developers/CMake-build-system>`_
In this case LAMMPS runs on 2 processors (MPI tasks), ``pw.x`` runs on 16
processors.
Here is how the 2 codes are launched to communicate by sockets:
Here is how to build QE as a shared library which can be used in plugin mode,
which results in a libqemdi.so file in <base_path>/q-e/MDI/src:
.. code-block:: bash
% mpirun -np 2 lmp_mpi -mdi "-role DRIVER -name d -method TCP -port 8021" -in in.aimd
% mpirun -np 16 pw.x -in qe.in -mdi "-role ENGINE -name e -method TCP -port 8021 -hostname localhost"
% git clone --branch mdi_plugin https://github.com/MolSSI-MDI/q-e.git <base_path>/q-e
% cd <base_path>/q-e
% ./configure --enable-parallel --enable-openmp --enable-shared FFLAGS="-fPIC" FCFLAGS="-fPIC" CFLAGS="-fPIC" foxflags="-fPIC" try_foxflags="-fPIC"
% make -j 4 mdi
These commands could be issued in different windows on a desktop
machine. Or in the same window, if the first command is ended with
"&" so as to run in the background. If "localhost" is replaced by an
IP address, ``pw.x`` could be run on another machine on the same network, or
even on another machine across the country.
INQ cannot be built as a stand-alone code; it is by design a library.
Here is how to build INQ as a shared library which can be used in
plugin mode, which results in a libinqmdi.so file in
<base_path>/inq/build/examples:
After both codes initialize themselves to model the same system, this is
what occurs each timestep:
.. code-block:: bash
* LAMMPS send a ">COORDS" message to ``pw.x`` with a 3*N vector of current atom coords
* ``pw.x`` receives the message/coords and computes quantum forces on all the atoms
* LAMMPS send a "<FORCES" message to ``pw.x`` and waits for the result
* ``pw.x`` receives the message (after its computation finishes) and sends a 3*N vector of forces
* LAMMPS receives the forces and time integrates to complete a single timestep
-------------
Examples scripts for using LAMMPS as an MDI engine are in the
examples/mdi directory. See the README file in that directory for
instructions on how to run the examples.
.. note::
Work is underway to add commands that allow LAMMPS to be used as an
MDI driver, e.g. for the AIMD example discussed above. Example
scripts for this usage mode will be added the same directory when
available.
If LAMMPS is used as a stand-alone engine it should set up the system
it will be modeling in its input script, then invoke the
:doc:`mdi/engine <mdi_engine>` command. This will put LAMMPS into
"engine mode" where it waits for messages and data from the driver.
When the driver sends an "EXIT" command, LAMMPS will exit engine mode
and the input script will continue.
If LAMMPS is used as a plugin engine it operates the same way, except
that the driver will pass LAMMPS an input script to initialize itself.
Upon receiving the "EXIT" command, LAMMPS will exit engine mode and the
input script will continue. After finishing execution of the input
script, the instance of LAMMPS will be destroyed.
LAMMPS supports the full set of MD-appropriate engine commands defined
by the MDI library. See the :doc:`mdi/engine <mdi_engine>` page for
a list of these.
If those commands are not sufficient for a user-developed driver to use
LAMMPS as an engine, then new commands can be easily added. See these
two files which implement the definition of MDI commands and the logic
for responding to them:
* src/MDI/mdi_engine.cpp
* src/MDI/fix_mdi_engine.cpp
% git clone --branch mdi --recurse-submodules https://gitlab.com/taylor-a-barnes/inq.git <base_path>/inq
% cd <base_path>/inq
% mkdir -p build
% cd build
% ../configure --prefix=<install_path>/install
% make -j 4
% make install

View File

@ -545,6 +545,6 @@ Feedback and Contributing
-------------------------
If you find this Python interface useful, please feel free to provide feedback
and ideas on how to improve it to Richard Berger (richard.berger@temple.edu). We also
and ideas on how to improve it to Richard Berger (richard.berger@outlook.com). We also
want to encourage people to write tutorial style IPython notebooks showcasing LAMMPS usage
and maybe their latest research results.

View File

@ -19,7 +19,7 @@ atoms and the water molecule to run a rigid SPC model.
| LJ :math:`\sigma` of OO = 3.166
| LJ :math:`\epsilon`, :math:`\sigma` of OH, HH = 0.0
| :math:`r_0` of OH bond = 1.0
| :math:`\theta` of HOH angle = 109.47\ :math:`^{\circ}`
| :math:`\theta_0` of HOH angle = 109.47\ :math:`^{\circ}`
|
Note that as originally proposed, the SPC model was run with a 9

View File

@ -21,7 +21,8 @@ YAML
print """---
timestep: $(step)
pe: $(pe)
ke: $(ke)""" file current_state.yaml screen no
ke: $(ke)
...""" file current_state.yaml screen no
.. code-block:: yaml
:caption: current_state.yaml
@ -51,6 +52,194 @@ JSON
"ke": 2.4962152903997174569
}
YAML format thermo_style output
===============================
Extracting data from log file
-----------------------------
.. versionadded:: 24Mar2022
LAMMPS supports the thermo style "yaml" and for "custom" style
thermodynamic output the format can be changed to YAML with
:doc:`thermo_modify line yaml <thermo_modify>`. This will produce a
block of output in a compact YAML format - one "document" per run - of
the following style:
.. code-block:: yaml
---
keywords: ['Step', 'Temp', 'E_pair', 'E_mol', 'TotEng', 'Press', ]
data:
- [100, 0.757453103239935, -5.7585054860159, 0, -4.62236133677021, 0.207261053624721, ]
- [110, 0.759322359337036, -5.7614668389562, 0, -4.62251889318624, 0.194314975399602, ]
- [120, 0.759372342462676, -5.76149365656489, 0, -4.62247073844943, 0.191600048851267, ]
- [130, 0.756833027516501, -5.75777334823494, 0, -4.62255928350835, 0.208792327853067, ]
...
This data can be extracted and parsed from a log file using python with:
.. code-block:: python
import re, yaml
try:
from yaml import CSafeLoader as Loader
except ImportError:
from yaml import SafeLoader as Loader
docs = ""
with open("log.lammps") as f:
for line in f:
m = re.search(r"^(keywords:.*$|data:$|---$|\.\.\.$| - \[.*\]$)", line)
if m: docs += m.group(0) + '\n'
thermo = list(yaml.load_all(docs, Loader=Loader))
print("Number of runs: ", len(thermo))
print(thermo[1]['keywords'][4], ' = ', thermo[1]['data'][2][4])
After loading the YAML data, `thermo` is a list containing a dictionary
for each "run" where the tag "keywords" maps to the list of thermo
header strings and the tag "data" has a list of lists where the outer
list represents the lines of output and the inner list the values of the
columns matching the header keywords for that step. The second print()
command for example will print the header string for the fifth keyword
of the second run and the corresponding value for the third output line
of that run:
.. parsed-literal::
Number of runs: 2
TotEng = -4.62140097780047
.. versionadded:: 4May2022
YAML format output has been added to multiple commands in LAMMPS,
for example :doc:`dump yaml <dump>` or :doc:`fix ave/time <fix_ave_time>`
Depending on the kind of data being written, organization of the data
or the specific syntax used may change, but the principles are very
similar and all files should be readable with a suitable YAML parser.
Processing scalar data with Python
----------------------------------
.. figure:: JPG/thermo_bondeng.png
:figwidth: 33%
:align: right
After reading and parsing the YAML format data, it can be easily
imported for further processing and visualization with the `pandas
<https://pandas.pydata.org/>`_ and `matplotlib
<https://matplotlib.org/>`_ Python modules. Because of the organization
of the data in the YAML format thermo output, it needs to be told to
process only the 'data' part of the imported data to create a pandas
data frame, and one needs to set the column names from the 'keywords'
entry. The following Python script code example demonstrates this, and
creates the image shown on the right of a simple plot of various bonded
energy contributions versus the timestep from a run of the 'peptide'
example input after changing the :doc:`thermo style <thermo_style>` to
'yaml'. The properties to be used for x and y values can be
conveniently selected through the keywords. Please note that those
keywords can be changed to custom strings with the :doc:`thermo_modify
colname <thermo_modify>` command.
.. code-block:: python
import re, yaml
import pandas as pd
import matplotlib.pyplot as plt
try:
from yaml import CSafeLoader as Loader
except ImportError:
from yaml import SafeLoader as Loader
docs = ""
with open("log.lammps") as f:
for line in f:
m = re.search(r"^(keywords:.*$|data:$|---$|\.\.\.$| - \[.*\]$)", line)
if m: docs += m.group(0) + '\n'
thermo = list(yaml.load_all(docs, Loader=Loader))
df = pd.DataFrame(data=thermo[0]['data'], columns=thermo[0]['keywords'])
fig = df.plot(x='Step', y=['E_bond', 'E_angle', 'E_dihed', 'E_impro'], ylabel='Energy in kcal/mol')
plt.savefig('thermo_bondeng.png')
Processing vector data with Python
----------------------------------
Global *vector* data as produced by :doc:`fix ave/time <fix_ave_time>`
uses a slightly different organization of the data. You still have the
dictionary keys 'keywords' and 'data' for the column headers and the
data. But the data is a dictionary indexed by the time step and for
each step there are multiple rows of values each with a list of the
averaged properties. This requires a slightly different processing,
since the entire data cannot be directly imported into a single pandas
DataFrame class instance. The following Python script example
demonstrates how to read such data. The result will combine the data
for the different steps into one large "multi-index" table. The pandas
IndexSlice class can then be used to select data from this combined data
frame.
.. code-block:: python
import re, yaml
import pandas as pd
try:
from yaml import CSafeLoader as Loader
except ImportError:
from yaml import SafeLoader as Loader
with open("ave.yaml") as f:
ave = yaml.load(docs, Loader=Loader)
keys = ave['keywords']
df = {}
for k in ave['data'].keys():
df[k] = pd.DataFrame(data=ave['data'][k], columns=keys)
# create multi-index data frame
df = pd.concat(df)
# output only the first 3 value for steps 200 to 300 of the column Pressure
idx = pd.IndexSlice
print(df['Pressure'].loc[idx[200:300, 0:2]])
Processing scalar data with Perl
--------------------------------
The ease of processing YAML data is not limited to Python. Here is an
example for extracting and processing a LAMMPS log file with Perl instead.
.. code-block:: perl
use YAML::XS;
open(LOG, "log.lammps") or die("could not open log.lammps: $!");
my $file = "";
while(my $line = <LOG>) {
if ($line =~ /^(keywords:.*$|data:$|---$|\.\.\.$| - \[.*\]$)/) {
$file .= $line;
}
}
close(LOG);
# convert YAML to perl as nested hash and array references
my $thermo = Load $file;
# convert references to real arrays
my @keywords = @{$thermo->{'keywords'}};
my @data = @{$thermo->{'data'}};
# print first two columns
print("$keywords[0] $keywords[1]\n");
foreach (@data) {
print("${$_}[0] ${$_}[1]\n");
}
Writing continuous data during a simulation
===========================================

View File

@ -165,5 +165,4 @@ changed. How to do this depends on the build system you are using.
URL "git@github.com:lammps/lammps.git".
The LAMMPS GitHub project is currently managed by Axel Kohlmeyer
(Temple U, akohlmey at gmail.com) and Richard Berger (Temple U,
richard.berger at temple.edu).
(Temple U, akohlmey at gmail.com).

View File

@ -5,7 +5,7 @@ LAMMPS can be downloaded, built, and configured for OS X on a Mac with
`Homebrew <homebrew_>`_. (Alternatively, see the install instructions for
:doc:`Download an executable via Conda <Install_conda>`.) The following LAMMPS
packages are unavailable at this time because of additional needs not yet met:
GPU, KOKKOS, LATTE, MSCG, MESSAGE, MPIIO POEMS VORONOI.
GPU, KOKKOS, LATTE, MSCG, MPIIO, POEMS, VORONOI.
After installing Homebrew, you can install LAMMPS on your system with
the following commands:

View File

@ -6,7 +6,7 @@ of the `LAMMPS website <lws_>`_.
.. _download: https://www.lammps.org/download.html
.. _bug: https://www.lammps.org/bug.html
.. _older: https://www.lammps.org/tars
.. _older: https://download.lammps.org/tars/
.. _lws: https://www.lammps.org
You have two choices of tarballs, either the most recent stable

View File

@ -8,7 +8,7 @@ University:
* Aidan Thompson, athomps at sandia.gov
* Stan Moore, stamoor at sandia.gov
* Axel Kohlmeyer, akohlmey at gmail.com
* Richard Berger, richard.berger at temple.edu
* Richard Berger, richard.berger at outlook.com
.. _sjp: http://www.cs.sandia.gov/~sjplimp
.. _lws: https://www.lammps.org

View File

@ -30,8 +30,8 @@ initial versions of LAMMPS is:
`S. Plimpton, Fast Parallel Algorithms for Short-Range Molecular Dynamics, J Comp Phys, 117, 1-19 (1995). <http://www.sandia.gov/~sjplimp/papers/jcompphys95.pdf>`_
DOI for the LAMMPS code
^^^^^^^^^^^^^^^^^^^^^^^
DOI for the LAMMPS source code
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
LAMMPS developers use the `Zenodo service at CERN <https://zenodo.org/>`_
to create digital object identifies (DOI) for stable releases of the
@ -46,7 +46,7 @@ In addition there are DOIs for individual stable releases. Currently there are:
- 3 March 2020 version: `DOI:10.5281/zenodo.3726417 <https://dx.doi.org/10.5281/zenodo.3726417>`_
- 29 October 2020 version: `DOI:10.5281/zenodo.4157471 <https://dx.doi.org/10.5281/zenodo.4157471>`_
- 29 September 2021 version: `DOI:10.5281/zenodo.6386596 <https//dx.doi.org/10.5281/zenodo.6386596>`_
Home page
^^^^^^^^^

View File

@ -20,7 +20,6 @@ available online are listed below.
* `Glossary of terms relevant to LAMMPS <https://www.lammps.org/glossary.html>`_
* `LAMMPS highlights with images <https://www.lammps.org/pictures.html>`_
* `LAMMPS highlights with movies <https://www.lammps.org/movies.html>`_
* `Mailing list <https://www.lammps.org/mail.html>`_
* `LAMMPS forum <https://www.lammps.org/forum.html>`_
* `Workshops <https://www.lammps.org/workshops.html>`_
* `Tutorials <https://www.lammps.org/tutorials.html>`_

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -13,6 +13,7 @@ functions. They do not directly call the LAMMPS library.
- :cpp:func:`lammps_fix_external_set_virial_peratom`
- :cpp:func:`lammps_fix_external_set_vector_length`
- :cpp:func:`lammps_fix_external_set_vector`
- :cpp:func:`lammps_flush_buffers`
- :cpp:func:`lammps_free`
- :cpp:func:`lammps_is_running`
- :cpp:func:`lammps_force_timeout`
@ -72,6 +73,11 @@ where such memory buffers were allocated that require the use of
-----------------------
.. doxygenfunction:: lammps_flush_buffers
:project: progguide
-----------------------
.. doxygenfunction:: lammps_free
:project: progguide

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