Update from master

This commit is contained in:
Stan Gerald Moore
2022-10-12 09:49:55 -06:00
1195 changed files with 64839 additions and 38082 deletions

View File

@ -14,14 +14,14 @@ and tested by the LAMMPS developers, so it is easy to import bad
behavior from calling functions in one of those libraries. behavior from calling functions in one of those libraries.
Thus is is quite easy to crash LAMMPS through malicious input and do all Thus is is quite easy to crash LAMMPS through malicious input and do all
kinds of filesystem manipulations. And because of that LAMMPS should kinds of file system manipulations. And because of that LAMMPS should
**NEVER** be compiled or **run** as superuser, either from a "root" or **NEVER** be compiled or **run** as superuser, either from a "root" or
"administrator" account directly or indirectly via "sudo" or "su". "administrator" account directly or indirectly via "sudo" or "su".
Therefore what could be seen as a security vulnerability is usually Therefore what could be seen as a security vulnerability is usually
either a user mistake or a bug in the code. Bugs can be reported in either a user mistake or a bug in the code. Bugs can be reported in the
the LAMMPS project LAMMPS project [issue tracker on
[issue tracker on GitHub](https://github.com/lammps/lammps/issues). GitHub](https://github.com/lammps/lammps/issues).
To mitigate issues with using homoglyphs or bidirectional reordering in To mitigate issues with using homoglyphs or bidirectional reordering in
unicode, which have been demonstrated as a vector to obfuscate and hide unicode, which have been demonstrated as a vector to obfuscate and hide
@ -30,10 +30,18 @@ for unicode characters and only all-ASCII source code is accepted.
# Version Updates # Version Updates
LAMMPS follows continuous release development model. We aim to keep all LAMMPS follows continuous release development model. We aim to keep to
release versions (stable or patch) fully functional and employ a variety keep the development version (develop branch) always fully functional
of automatic testing procedures to detect failures of existing and employ a variety of automatic testing procedures to detect failures
functionality from adding new features before releases are made. Thus of existing functionality from adding or modifying features. Most of
bugfixes and updates are only integrated into the current development those tests are run on pull requests *before* merging to the development
branch and thus the next (patch) release and users are recommended to branch. The develop branch is protected, so all changes *must* be
update regularly. submitted as a pull request and thus cannot avoid the automated tests.
Additional tests are run *after* merging. Before releases are made
*all* tests must have cleared. Then a release tag is applied and the
release branch fast-forwarded to that tag. Bug fixes and updates are
applied to the current development branch and thus will be available in
the next (patch) release. For stable releases, selected bug fixes are
back-ported and occasionally published as update releases. There are
only updates to the latest stable release.

View File

@ -12,6 +12,11 @@ endif()
if(POLICY CMP0109) if(POLICY CMP0109)
cmake_policy(SET CMP0109 OLD) cmake_policy(SET CMP0109 OLD)
endif() endif()
# set policy to silence warnings about timestamps of downloaded files. review occasionally if it may be set to NEW
if(POLICY CMP0135)
cmake_policy(SET CMP0135 OLD)
endif()
######################################## ########################################
project(lammps CXX) project(lammps CXX)
@ -100,7 +105,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4) if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4)
set(CMAKE_TUNE_DEFAULT "-xCOMMON-AVX512") set(CMAKE_TUNE_DEFAULT "-xCOMMON-AVX512")
else() else()
set(CMAKE_TUNE_DEFAULT "-xHost") set(CMAKE_TUNE_DEFAULT "-xHost -fp-model fast=2 -no-prec-div -qoverride-limits -diag-disable=10441 -diag-disable=2196")
endif() endif()
endif() endif()
endif() endif()
@ -849,8 +854,11 @@ if(BUILD_SHARED_LIBS OR PKG_PYTHON)
find_package(Python COMPONENTS Interpreter) find_package(Python COMPONENTS Interpreter)
endif() endif()
if(Python_EXECUTABLE) if(Python_EXECUTABLE)
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/python) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/python/lib)
install(CODE "execute_process(COMMAND ${Python_EXECUTABLE} setup.py build -b ${CMAKE_BINARY_DIR}/python install --prefix=${CMAKE_INSTALL_PREFIX} --root=\$ENV{DESTDIR}/ WORKING_DIRECTORY ${LAMMPS_PYTHON_DIR})") file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/python/src)
file(COPY ${LAMMPS_SOURCE_DIR}/version.h DESTINATION ${CMAKE_BINARY_DIR}/python/src)
file(COPY ${LAMMPS_PYTHON_DIR}/README ${LAMMPS_PYTHON_DIR}/pyproject.toml ${LAMMPS_PYTHON_DIR}/setup.py ${LAMMPS_PYTHON_DIR}/lammps DESTINATION ${CMAKE_BINARY_DIR}/python/lib)
install(CODE "if(\"\$ENV{DESTDIR}\" STREQUAL \"\")\n execute_process(COMMAND ${Python_EXECUTABLE} -m pip install -v ${CMAKE_BINARY_DIR}/python/lib --prefix=${CMAKE_INSTALL_PREFIX})\n else()\n execute_process(COMMAND ${Python_EXECUTABLE} -m pip install -v ${CMAKE_BINARY_DIR}/python/lib --prefix=${CMAKE_INSTALL_PREFIX} --root=\$ENV{DESTDIR})\n endif()")
endif() endif()
endif() endif()

View File

@ -47,8 +47,8 @@ if(DOWNLOAD_KOKKOS)
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}") list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}")
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}") list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}")
include(ExternalProject) include(ExternalProject)
set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/3.6.01.tar.gz" CACHE STRING "URL for KOKKOS tarball") set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/3.7.00.tar.gz" CACHE STRING "URL for KOKKOS tarball")
set(KOKKOS_MD5 "0ec97fc0c356dd65bd2487defe81a7bf" CACHE STRING "MD5 checksum of KOKKOS tarball") set(KOKKOS_MD5 "84991eca9f066383abe119a5bc7a11c4" CACHE STRING "MD5 checksum of KOKKOS tarball")
mark_as_advanced(KOKKOS_URL) mark_as_advanced(KOKKOS_URL)
mark_as_advanced(KOKKOS_MD5) mark_as_advanced(KOKKOS_MD5)
ExternalProject_Add(kokkos_build ExternalProject_Add(kokkos_build
@ -72,7 +72,7 @@ if(DOWNLOAD_KOKKOS)
add_dependencies(LAMMPS::KOKKOSCORE kokkos_build) add_dependencies(LAMMPS::KOKKOSCORE kokkos_build)
add_dependencies(LAMMPS::KOKKOSCONTAINERS kokkos_build) add_dependencies(LAMMPS::KOKKOSCONTAINERS kokkos_build)
elseif(EXTERNAL_KOKKOS) elseif(EXTERNAL_KOKKOS)
find_package(Kokkos 3.6.01 REQUIRED CONFIG) find_package(Kokkos 3.7.00 REQUIRED CONFIG)
target_link_libraries(lammps PRIVATE Kokkos::kokkos) target_link_libraries(lammps PRIVATE Kokkos::kokkos)
target_link_libraries(lmp PRIVATE Kokkos::kokkos) target_link_libraries(lmp PRIVATE Kokkos::kokkos)
else() else()

View File

@ -8,8 +8,8 @@ option(DOWNLOAD_MDI "Download and compile the MDI library instead of using an al
if(DOWNLOAD_MDI) if(DOWNLOAD_MDI)
message(STATUS "MDI download requested - we will build our own") message(STATUS "MDI download requested - we will build our own")
set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.11.tar.gz" CACHE STRING "URL for MDI tarball") set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.12.tar.gz" CACHE STRING "URL for MDI tarball")
set(MDI_MD5 "3791fe5081405c14aac07d4687f1cc58" CACHE STRING "MD5 checksum for MDI tarball") set(MDI_MD5 "7a222353ae8e03961d5365e6cd48baee" CACHE STRING "MD5 checksum for MDI tarball")
mark_as_advanced(MDI_URL) mark_as_advanced(MDI_URL)
mark_as_advanced(MDI_MD5) mark_as_advanced(MDI_MD5)
enable_language(C) enable_language(C)
@ -49,6 +49,14 @@ if(DOWNLOAD_MDI)
set(MDI_USE_PYTHON_PLUGINS ON) set(MDI_USE_PYTHON_PLUGINS ON)
endif() endif()
endif() endif()
# python plugins are not supported and thus must be always off on Windows
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
unset(Python_Development_FOUND)
set(MDI_USE_PYTHON_PLUGINS OFF)
if(CMAKE_CROSSCOMPILING)
set(CMAKE_INSTALL_LIBDIR lib)
endif()
endif()
# download/ build MDI library # download/ build MDI library
# always build static library with -fpic # always build static library with -fpic
@ -57,8 +65,9 @@ if(DOWNLOAD_MDI)
ExternalProject_Add(mdi_build ExternalProject_Add(mdi_build
URL ${MDI_URL} URL ${MDI_URL}
URL_MD5 ${MDI_MD5} URL_MD5 ${MDI_MD5}
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/mdi_build_ext
CMAKE_ARGS CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/mdi_build_ext
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM} -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
@ -70,22 +79,22 @@ if(DOWNLOAD_MDI)
-Dplugins=ON -Dplugins=ON
-Dpython_plugins=${MDI_USE_PYTHON_PLUGINS} -Dpython_plugins=${MDI_USE_PYTHON_PLUGINS}
UPDATE_COMMAND "" UPDATE_COMMAND ""
INSTALL_COMMAND "" INSTALL_COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/mdi_build_ext/src/mdi_build-build --target install
BUILD_BYPRODUCTS "<BINARY_DIR>/MDI_Library/libmdi.a" BUILD_BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/mdi_build_ext/${CMAKE_INSTALL_LIBDIR}/mdi/${CMAKE_STATIC_LIBRARY_PREFIX}mdi${CMAKE_STATIC_LIBRARY_SUFFIX}"
) )
# where is the compiled library? # where is the compiled library?
ExternalProject_get_property(mdi_build BINARY_DIR) ExternalProject_get_property(mdi_build PREFIX)
set(MDI_BINARY_DIR "${BINARY_DIR}/MDI_Library")
# workaround for older CMake versions # workaround for older CMake versions
file(MAKE_DIRECTORY ${MDI_BINARY_DIR}) file(MAKE_DIRECTORY ${PREFIX}/${CMAKE_INSTALL_LIBDIR}/mdi)
file(MAKE_DIRECTORY ${PREFIX}/include/mdi)
# create imported target for the MDI library # create imported target for the MDI library
add_library(LAMMPS::MDI UNKNOWN IMPORTED) add_library(LAMMPS::MDI UNKNOWN IMPORTED)
add_dependencies(LAMMPS::MDI mdi_build) add_dependencies(LAMMPS::MDI mdi_build)
set_target_properties(LAMMPS::MDI PROPERTIES set_target_properties(LAMMPS::MDI PROPERTIES
IMPORTED_LOCATION "${MDI_BINARY_DIR}/libmdi.a" IMPORTED_LOCATION "${PREFIX}/${CMAKE_INSTALL_LIBDIR}/mdi/${CMAKE_STATIC_LIBRARY_PREFIX}mdi${CMAKE_STATIC_LIBRARY_SUFFIX}"
INTERFACE_INCLUDE_DIRECTORIES ${MDI_BINARY_DIR} INTERFACE_INCLUDE_DIRECTORIES ${PREFIX}/include/mdi
) )
set(MDI_DEP_LIBS "") set(MDI_DEP_LIBS "")

View File

@ -25,16 +25,18 @@ if(MLIAP_ENABLE_PYTHON)
endif() endif()
set(MLIAP_BINARY_DIR ${CMAKE_BINARY_DIR}/cython) set(MLIAP_BINARY_DIR ${CMAKE_BINARY_DIR}/cython)
set(MLIAP_CYTHON_SRC ${LAMMPS_SOURCE_DIR}/ML-IAP/mliap_model_python_couple.pyx) file(GLOB MLIAP_CYTHON_SRC ${LAMMPS_SOURCE_DIR}/ML-IAP/*.pyx)
get_filename_component(MLIAP_CYTHON_BASE ${MLIAP_CYTHON_SRC} NAME_WE)
file(MAKE_DIRECTORY ${MLIAP_BINARY_DIR}) file(MAKE_DIRECTORY ${MLIAP_BINARY_DIR})
foreach(MLIAP_CYTHON_FILE ${MLIAP_CYTHON_SRC})
get_filename_component(MLIAP_CYTHON_BASE ${MLIAP_CYTHON_FILE} NAME_WE)
add_custom_command(OUTPUT ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.cpp ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.h add_custom_command(OUTPUT ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.cpp ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.h
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${MLIAP_CYTHON_SRC} ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.pyx COMMAND ${CMAKE_COMMAND} -E copy_if_different ${MLIAP_CYTHON_FILE} ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.pyx
COMMAND ${Cythonize_EXECUTABLE} -3 ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.pyx COMMAND ${Cythonize_EXECUTABLE} -3 ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.pyx
WORKING_DIRECTORY ${MLIAP_BINARY_DIR} WORKING_DIRECTORY ${MLIAP_BINARY_DIR}
MAIN_DEPENDENCY ${MLIAP_CYTHON_SRC} MAIN_DEPENDENCY ${MLIAP_CYTHON_FILE}
COMMENT "Generating C++ sources with cythonize...") COMMENT "Generating C++ sources with cythonize...")
target_compile_definitions(lammps PRIVATE -DMLIAP_PYTHON)
target_sources(lammps PRIVATE ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.cpp) target_sources(lammps PRIVATE ${MLIAP_BINARY_DIR}/${MLIAP_CYTHON_BASE}.cpp)
endforeach()
target_compile_definitions(lammps PRIVATE -DMLIAP_PYTHON)
target_include_directories(lammps PRIVATE ${MLIAP_BINARY_DIR}) target_include_directories(lammps PRIVATE ${MLIAP_BINARY_DIR})
endif() endif()

View File

@ -1,6 +1,6 @@
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_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2022.09.27.fix10Oct.tar.gz" CACHE STRING "URL for PACE evaluator library sources")
set(PACELIB_MD5 "32394d799bc282bb57696c78c456e64f" CACHE STRING "MD5 checksum of PACE evaluator library tarball") set(PACELIB_MD5 "766cebcc0e5c4b8430c2f3cd202d9905" CACHE STRING "MD5 checksum of PACE evaluator library tarball")
mark_as_advanced(PACELIB_URL) mark_as_advanced(PACELIB_URL)
mark_as_advanced(PACELIB_MD5) mark_as_advanced(PACELIB_MD5)
@ -15,23 +15,9 @@ execute_process(
) )
get_newest_file(${CMAKE_BINARY_DIR}/lammps-user-pace-* lib-pace) get_newest_file(${CMAKE_BINARY_DIR}/lammps-user-pace-* lib-pace)
# enforce building libyaml-cpp as static library and turn off optional features add_subdirectory(${lib-pace} build-pace)
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)
file(GLOB PACE_EVALUATOR_INCLUDE_DIR ${lib-pace}/ML-PACE)
file(GLOB PACE_EVALUATOR_SOURCES ${lib-pace}/ML-PACE/*.cpp)
list(FILTER PACE_EVALUATOR_SOURCES EXCLUDE REGEX pair_pace.cpp)
add_library(pace STATIC ${PACE_EVALUATOR_SOURCES})
set_target_properties(pace PROPERTIES CXX_EXTENSIONS ON OUTPUT_NAME lammps_pace${LAMMPS_MACHINE}) set_target_properties(pace PROPERTIES CXX_EXTENSIONS ON OUTPUT_NAME lammps_pace${LAMMPS_MACHINE})
target_include_directories(pace PUBLIC ${PACE_EVALUATOR_INCLUDE_DIR} ${YAML_CPP_INCLUDE_DIR})
target_link_libraries(pace PRIVATE yaml-cpp-pace)
if(CMAKE_PROJECT_NAME STREQUAL "lammps") if(CMAKE_PROJECT_NAME STREQUAL "lammps")
target_link_libraries(lammps PRIVATE pace) target_link_libraries(lammps PRIVATE pace)
endif() endif()

View File

@ -1,4 +1,4 @@
# preset that will enable Intel compilers with support for MPI and OpenMP (on Linux boxes) # preset that will enable the classic Intel compilers with support for MPI and OpenMP (on Linux boxes)
set(CMAKE_CXX_COMPILER "icpc" CACHE STRING "" FORCE) set(CMAKE_CXX_COMPILER "icpc" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "icc" CACHE STRING "" FORCE) set(CMAKE_C_COMPILER "icc" CACHE STRING "" FORCE)
@ -18,11 +18,11 @@ set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
unset(HAVE_OMP_H_INCLUDE CACHE) unset(HAVE_OMP_H_INCLUDE CACHE)
set(OpenMP_C "icc" CACHE STRING "" FORCE) set(OpenMP_C "icc" CACHE STRING "" FORCE)
set(OpenMP_C_FLAGS "-qopenmp" CACHE STRING "" FORCE) set(OpenMP_C_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE) set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_CXX "icpc" CACHE STRING "" FORCE) set(OpenMP_CXX "icpc" CACHE STRING "" FORCE)
set(OpenMP_CXX_FLAGS "-qopenmp" CACHE STRING "" FORCE) set(OpenMP_CXX_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE) set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_Fortran_FLAGS "-qopenmp" CACHE STRING "" FORCE) set(OpenMP_Fortran_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_omp_LIBRARY "libiomp5.so" CACHE PATH "" FORCE) set(OpenMP_omp_LIBRARY "libiomp5.so" CACHE PATH "" FORCE)

View File

@ -18,11 +18,11 @@ set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
unset(HAVE_OMP_H_INCLUDE CACHE) unset(HAVE_OMP_H_INCLUDE CACHE)
set(OpenMP_C "icx" CACHE STRING "" FORCE) set(OpenMP_C "icx" CACHE STRING "" FORCE)
set(OpenMP_C_FLAGS "-qopenmp" CACHE STRING "" FORCE) set(OpenMP_C_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE) set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_CXX "icpx" CACHE STRING "" FORCE) set(OpenMP_CXX "icpx" CACHE STRING "" FORCE)
set(OpenMP_CXX_FLAGS "-qopenmp" CACHE STRING "" FORCE) set(OpenMP_CXX_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE) set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
set(OpenMP_Fortran_FLAGS "-qopenmp" CACHE STRING "" FORCE) set(OpenMP_Fortran_FLAGS "-qopenmp -qopenmp-simd" CACHE STRING "" FORCE)
set(OpenMP_omp_LIBRARY "libiomp5.so" CACHE PATH "" FORCE) set(OpenMP_omp_LIBRARY "libiomp5.so" CACHE PATH "" FORCE)

View File

@ -1,7 +1,7 @@
.TH LAMMPS "1" "3 August 2022" "2022-8-3" .TH LAMMPS "1" "15 September 2022" "2022-9-15"
.SH NAME .SH NAME
.B LAMMPS .B LAMMPS
\- Molecular Dynamics Simulator. Version 3 August 2022 \- Molecular Dynamics Simulator. Version 15 September 2022
.SH SYNOPSIS .SH SYNOPSIS
.B lmp .B lmp

View File

@ -314,7 +314,7 @@ Bibliography
Espanol, Revenga, Physical Review E, 67, 026705 (2003). Espanol, Revenga, Physical Review E, 67, 026705 (2003).
**(Espanol1997)** **(Espanol1997)**
Espanol, Europhys Lett, 40(6): 631-636 (1997). DOI: 10.1209/epl/i1997-00515-8 Espanol, Europhys Lett, 40(6): 631-636 (1997). DOI:10.1209/epl/i1997-00515-8
**(Evans and Morriss)** **(Evans and Morriss)**
Evans and Morriss, Phys Rev A, 30, 1528 (1984). Evans and Morriss, Phys Rev A, 30, 1528 (1984).
@ -368,7 +368,7 @@ Bibliography
Frenkel and Smit, Understanding Molecular Simulation, Academic Press, London, 2002. Frenkel and Smit, Understanding Molecular Simulation, Academic Press, London, 2002.
**(GLE4MD)** **(GLE4MD)**
`http://gle4md.org/ <http://gle4md.org/>`_ `https://gle4md.org/ <https://gle4md.org/>`_
**(Gao)** **(Gao)**
Gao and Weber, Nuclear Instruments and Methods in Physics Research B 191 (2012) 504. Gao and Weber, Nuclear Instruments and Methods in Physics Research B 191 (2012) 504.
@ -401,13 +401,13 @@ Bibliography
Hayre, and Farago, Comp Phys Comm, 185, 524 (2014) Hayre, and Farago, Comp Phys Comm, 185, 524 (2014)
**(Groot)** **(Groot)**
Groot and Warren, J Chem Phys, 107: 4423-4435 (1997). DOI: 10.1063/1.474784 Groot and Warren, J Chem Phys, 107: 4423-4435 (1997). DOI:10.1063/1.474784
**(Guenole)** **(Guenole)**
Guenole, Noehring, Vaid, Houlle, Xie, Prakash, Bitzek, Comput Mater Sci, 175, 109584 (2020). Guenole, Noehring, Vaid, Houlle, Xie, Prakash, Bitzek, Comput Mater Sci, 175, 109584 (2020).
**(Gullet)** **(Gullet)**
Gullet, Wagner, Slepoy, SANDIA Report 2003-8782 (2003). Gullet, Wagner, Slepoy, SANDIA Report 2003-8782 (2003). DOI:10.2172/918395
**(Guo)** **(Guo)**
Guo and Thirumalai, Journal of Molecular Biology, 263, 323-43 (1996). Guo and Thirumalai, Journal of Molecular Biology, 263, 323-43 (1996).
@ -461,7 +461,7 @@ Bibliography
Hunt, Mol Simul, 42, 347 (2016). Hunt, Mol Simul, 42, 347 (2016).
**(IPI)** **(IPI)**
`http://epfl-cosmo.github.io/gle4md/index.html?page=ipi <http://epfl-cosmo.github.io/gle4md/index.html?page=ipi>`_ `https://ipi-code.org/ <https://ipi-code.org/>`
**(IPI-CPC)** **(IPI-CPC)**
Ceriotti, More and Manolopoulos, Comp Phys Comm, 185, 1019-1026 (2014). Ceriotti, More and Manolopoulos, Comp Phys Comm, 185, 1019-1026 (2014).
@ -605,16 +605,16 @@ Bibliography
I.\ Leven et al, J. Chem.Theory Comput. 12, 2896-905 (2016). I.\ Leven et al, J. Chem.Theory Comput. 12, 2896-905 (2016).
**(Li2013_POF)** **(Li2013_POF)**
Li, Hu, Wang, Ma, Zhou, Phys Fluids, 25: 072103 (2013). DOI: 10.1063/1.4812366. Li, Hu, Wang, Ma, Zhou, Phys Fluids, 25: 072103 (2013). DOI:10.1063/1.4812366.
**(Li2014_JCP)** **(Li2014_JCP)**
Li, Tang, Lei, Caswell, Karniadakis, J Comput Phys, 265: 113-127 (2014). DOI: 10.1016/j.jcp.2014.02.003. Li, Tang, Lei, Caswell, Karniadakis, J Comput Phys, 265: 113-127 (2014). DOI:10.1016/j.jcp.2014.02.003.
**(Li2015_CC)** **(Li2015_CC)**
Li, Tang, Li, Karniadakis, Chem Commun, 51: 11038-11040 (2015). DOI: 10.1039/C5CC01684C. Li, Tang, Li, Karniadakis, Chem Commun, 51: 11038-11040 (2015). DOI:10.1039/C5CC01684C.
**(Li2015_JCP)** **(Li2015_JCP)**
Li, Yazdani, Tartakovsky, Karniadakis, J Chem Phys, 143: 014101 (2015). DOI: 10.1063/1.4923254. Li, Yazdani, Tartakovsky, Karniadakis, J Chem Phys, 143: 014101 (2015). DOI:10.1063/1.4923254.
**(Lisal)** **(Lisal)**
M.\ Lisal, J.K. Brennan, J. Bonet Avalos, "Dissipative particle dynamics at isothermal, isobaric, isoenergetic, and isoenthalpic conditions using Shardlow-like splitting algorithms.", M.\ Lisal, J.K. Brennan, J. Bonet Avalos, "Dissipative particle dynamics at isothermal, isobaric, isoenergetic, and isoenthalpic conditions using Shardlow-like splitting algorithms.",
@ -733,8 +733,8 @@ Bibliography
**(Mishin)** **(Mishin)**
Mishin, Mehl, and Papaconstantopoulos, Acta Mater, 53, 4029 (2005). Mishin, Mehl, and Papaconstantopoulos, Acta Mater, 53, 4029 (2005).
**(Mitchell and Finchham)** **(Mitchell and Fincham)**
Mitchell, Finchham, J Phys Condensed Matter, 5, 1031-1038 (1993). Mitchell, Fincham, J Phys Condensed Matter, 5, 1031-1038 (1993).
**(Mitchell2011)** **(Mitchell2011)**
Mitchell. A non-local, ordinary-state-based viscoelasticity model for peridynamics. Sandia National Lab Report, 8064:1-28 (2011). Mitchell. A non-local, ordinary-state-based viscoelasticity model for peridynamics. Sandia National Lab Report, 8064:1-28 (2011).
@ -875,7 +875,7 @@ Bibliography
G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014) G.A. Tribello, M. Bonomi, D. Branduardi, C. Camilloni and G. Bussi, Comp. Phys. Comm 185, 604 (2014)
**(Paquay)** **(Paquay)**
Paquay and Kusters, Biophys. J., 110, 6, (2016). preprint available at `arXiv:1411.3019 <http://arxiv.org/abs/1411.3019/>`_. Paquay and Kusters, Biophys. J., 110, 6, (2016). preprint available at `arXiv:1411.3019 <https://arxiv.org/abs/1411.3019/>`_.
**(Park)** **(Park)**
Park, Schulten, J. Chem. Phys. 120 (13), 5946 (2004) Park, Schulten, J. Chem. Phys. 120 (13), 5946 (2004)
@ -1373,7 +1373,7 @@ Bibliography
Zhu, Tajkhorshid, and Schulten, Biophys. J. 83, 154 (2002). Zhu, Tajkhorshid, and Schulten, Biophys. J. 83, 154 (2002).
**(Ziegler)** **(Ziegler)**
J.F. Ziegler, J. P. Biersack and U. Littmark, "The Stopping and Range of Ions in Matter," Volume 1, Pergamon, 1985. J.F. Ziegler, J. P. Biersack and U. Littmark, "The Stopping and Range of Ions in Matter", Volume 1, Pergamon, 1985.
**(Zimmerman2004)** **(Zimmerman2004)**
Zimmerman, JA; Webb, EB; Hoyt, JJ;. Jones, RE; Klein, PA; Bammann, DJ, "Calculation of stress in atomistic simulation." Special Issue of Modelling and Simulation in Materials Science and Engineering (2004),12:S319. Zimmerman, JA; Webb, EB; Hoyt, JJ;. Jones, RE; Klein, PA; Bammann, DJ, "Calculation of stress in atomistic simulation." Special Issue of Modelling and Simulation in Materials Science and Engineering (2004),12:S319.

View File

@ -140,7 +140,7 @@ of the LAMMPS project on GitHub.
The unit testing facility is integrated into the CMake build process The unit testing facility is integrated into the CMake build process
of the LAMMPS source code distribution itself. It can be enabled by of the LAMMPS source code distribution itself. It can be enabled by
setting ``-D ENABLE_TESTING=on`` during the CMake configuration step. setting ``-D ENABLE_TESTING=on`` during the CMake configuration step.
It requires the `YAML <http://pyyaml.org/>`_ library and development It requires the `YAML <https://pyyaml.org/>`_ library and development
headers (if those are not found locally a recent version will be headers (if those are not found locally a recent version will be
downloaded and compiled along with LAMMPS and the test program) to downloaded and compiled along with LAMMPS and the test program) to
compile and will download and compile a specific recent version of the compile and will download and compile a specific recent version of the

View File

@ -314,7 +314,7 @@ detailed information is available at:
In addition to installing the KIM API, it is also necessary to install the In addition to installing the KIM API, it is also necessary to install the
library of KIM models (interatomic potentials). library of KIM models (interatomic potentials).
See `Obtaining KIM Models <http://openkim.org/doc/usage/obtaining-models>`_ to See `Obtaining KIM Models <https://openkim.org/doc/usage/obtaining-models>`_ to
learn how to install a pre-build binary of the OpenKIM Repository of Models. learn how to install a pre-build binary of the OpenKIM Repository of Models.
See the list of all KIM models here: https://openkim.org/browse/models See the list of all KIM models here: https://openkim.org/browse/models
@ -432,7 +432,7 @@ Enabling the extra unit tests have some requirements,
``EAM_Dynamo_MendelevAckland_2007v3_Zr__MO_004835508849_000``, ``EAM_Dynamo_MendelevAckland_2007v3_Zr__MO_004835508849_000``,
``EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005``, and ``EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005``, and
``LennardJones612_UniversalShifted__MO_959249795837_003`` KIM models. ``LennardJones612_UniversalShifted__MO_959249795837_003`` KIM models.
See `Obtaining KIM Models <http://openkim.org/doc/usage/obtaining-models>`_ See `Obtaining KIM Models <https://openkim.org/doc/usage/obtaining-models>`_
to learn how to install a pre-built binary of the OpenKIM Repository of to learn how to install a pre-built binary of the OpenKIM Repository of
Models or see Models or see
`Installing KIM Models <https://openkim.org/doc/usage/obtaining-models/#installing_models>`_ `Installing KIM Models <https://openkim.org/doc/usage/obtaining-models/#installing_models>`_
@ -483,6 +483,9 @@ They must be specified in uppercase.
* - **Arch-ID** * - **Arch-ID**
- **HOST or GPU** - **HOST or GPU**
- **Description** - **Description**
* - NATIVE
- HOST
- Local machine
* - AMDAVX * - AMDAVX
- HOST - HOST
- AMD 64-bit x86 CPU (AVX 1) - AMD 64-bit x86 CPU (AVX 1)
@ -522,9 +525,21 @@ They must be specified in uppercase.
* - BDW * - BDW
- HOST - HOST
- Intel Broadwell Xeon E-class CPU (AVX 2 + transactional mem) - Intel Broadwell Xeon E-class CPU (AVX 2 + transactional mem)
* - SKL
- HOST
- Intel Skylake Client CPU
* - SKX * - SKX
- HOST - HOST
- Intel Sky Lake Xeon E-class HPC CPU (AVX512 + transactional mem) - Intel Skylake Xeon Server CPU (AVX512)
* - ICL
- HOST
- Intel Ice Lake Client CPU (AVX512)
* - ICX
- HOST
- Intel Ice Lake Xeon Server CPU (AVX512)
* - SPR
- HOST
- Intel Sapphire Rapids Xeon Server CPU (AVX512)
* - KNC * - KNC
- HOST - HOST
- Intel Knights Corner Xeon Phi - Intel Knights Corner Xeon Phi
@ -596,7 +611,10 @@ They must be specified in uppercase.
- AMD GPU MI100 GFX908 - AMD GPU MI100 GFX908
* - VEGA90A * - VEGA90A
- GPU - GPU
- AMD GPU - AMD GPU MI200 GFX90A
* - INTEL_GEN
- GPU
- SPIR64-based devices, e.g. Intel GPUs, using JIT
* - INTEL_DG1 * - INTEL_DG1
- GPU - GPU
- Intel Iris XeMAX GPU - Intel Iris XeMAX GPU
@ -611,9 +629,12 @@ They must be specified in uppercase.
- Intel GPU Gen12LP - Intel GPU Gen12LP
* - INTEL_XEHP * - INTEL_XEHP
- GPU - GPU
- Intel GPUs Xe-HP - Intel GPU Xe-HP
* - INTEL_PVC
- GPU
- Intel GPU Ponte Vecchio
This list was last updated for version 3.5.0 of the Kokkos library. This list was last updated for version 3.7.0 of the Kokkos library.
.. tabs:: .. tabs::
@ -1053,7 +1074,7 @@ VORONOI package
----------------------------- -----------------------------
To build with this package, you must download and build the To build with this package, you must download and build the
`Voro++ library <http://math.lbl.gov/voro++>`_ or install a `Voro++ library <https://math.lbl.gov/voro++>`_ or install a
binary package provided by your operating system. binary package provided by your operating system.
.. tabs:: .. tabs::

View File

@ -176,7 +176,7 @@ math expressions transparently into embedded images.
For converting the generated ePUB file to a MOBI format file (for e-book For converting the generated ePUB file to a MOBI format file (for e-book
readers, like Kindle, that cannot read ePUB), you also need to have the readers, like Kindle, that cannot read ePUB), you also need to have the
``ebook-convert`` tool from the "calibre" software ``ebook-convert`` tool from the "calibre" software
installed. `http://calibre-ebook.com/ <http://calibre-ebook.com/>`_ installed. `https://calibre-ebook.com/ <https://calibre-ebook.com/>`_
Typing ``make mobi`` will first create the ePUB file and then convert Typing ``make mobi`` will first create the ePUB file and then convert
it. On the Kindle readers in particular, you also have support for PDF it. On the Kindle readers in particular, you also have support for PDF
files, so you could download and view the PDF version as an alternative. files, so you could download and view the PDF version as an alternative.
@ -216,9 +216,20 @@ be multiple tests run automatically:
- A test that only standard, printable ASCII text characters are used. - A test that only standard, printable ASCII text characters are used.
This runs the command ``env LC_ALL=C grep -n '[^ -~]' src/*.rst`` and This runs the command ``env LC_ALL=C grep -n '[^ -~]' src/*.rst`` and
thus prints all offending lines with filename and line number thus prints all offending lines with filename and line number
prepended to the screen. Special characters like the Angstrom prepended to the screen. Special characters like Greek letters
:math:`\mathrm{\mathring{A}}` should be typeset with embedded math (:math:`\alpha~~\sigma~~\epsilon`), super- or subscripts
(like this ``:math:`\mathrm{\mathring{A}}```\ ). (:math:`x^2~~\mathrm{U}_{LJ}`), mathematical expressions
(:math:`\frac{1}{2}\mathrm{N}~~x\to\infty`), or the Angstrom symbol
(:math:`\AA`) should be typeset with embedded LaTeX (like this
``:math:`\alpha \sigma \epsilon```, ``:math:`x^2 \mathrm{E}_{LJ}```,
``:math:`\frac{1}{2}\mathrm{N} x\to\infty```, or ``:math:`\AA```\ ).
- Embedded LaTeX is rendered in HTML output with `MathJax
<https://www.mathjax.org/>`_ and in PDF output by passing the embedded
text to LaTeX. Some care has to be taken, though, since there are
limitations which macros and features can be used in either mode, so
it is recommended to always check whether any new or changed
documentation does translate and render correctly with either output.
- A test whether all styles are documented and listed in their - A test whether all styles are documented and listed in their
respective overview pages. A typical output with warnings looks like this: respective overview pages. A typical output with warnings looks like this:

View File

@ -111,26 +111,25 @@ LAMMPS can use them if they are available on your system.
files in its default search path. You must specify ``FFT_LIB`` files in its default search path. You must specify ``FFT_LIB``
with the appropriate FFT libraries to include in the link. with the appropriate FFT libraries to include in the link.
The `KISS FFT library <http://kissfft.sf.net>`_ is included in the LAMMPS The `KISS FFT library <https://github.com/mborgerding/kissfft>`_ is
distribution. It is portable across all platforms. Depending on the size included in the LAMMPS distribution. It is portable across all
of the FFTs and the number of processors used, the other libraries listed platforms. Depending on the size of the FFTs and the number of
here can be faster. processors used, the other libraries listed here can be faster.
However, note that long-range Coulombics are only a portion of the However, note that long-range Coulombics are only a portion of the
per-timestep CPU cost, FFTs are only a portion of long-range per-timestep CPU cost, FFTs are only a portion of long-range Coulombics,
Coulombics, and 1d FFTs are only a portion of the FFT cost (parallel and 1d FFTs are only a portion of the FFT cost (parallel communication
communication can be costly). A breakdown of these timings is printed can be costly). A breakdown of these timings is printed to the screen
to the screen at the end of a run when using the at the end of a run when using the :doc:`kspace_style pppm
:doc:`kspace_style pppm <kspace_style>` command. The <kspace_style>` command. The :doc:`Screen and logfile output
:doc:`Screen and logfile output <Run_output>` <Run_output>` page gives more details. A more detailed (and time
page gives more details. A more detailed (and time consuming) consuming) report of the FFT performance is generated with the
report of the FFT performance is generated with the
:doc:`kspace_modify fftbench yes <kspace_modify>` command. :doc:`kspace_modify fftbench yes <kspace_modify>` command.
FFTW is a fast, portable FFT library that should also work on any FFTW is a fast, portable FFT library that should also work on any
platform and can be faster than the KISS FFT library. You can platform and can be faster than the KISS FFT library. You can download
download it from `www.fftw.org <http://www.fftw.org>`_. LAMMPS requires it from `www.fftw.org <https://www.fftw.org>`_. LAMMPS requires version
version 3.X; the legacy version 2.1.X is no longer supported. 3.X; the legacy version 2.1.X is no longer supported.
Building FFTW for your box should be as simple as ``./configure; make; Building FFTW for your box should be as simple as ``./configure; make;
make install``. The install command typically requires root privileges make install``. The install command typically requires root privileges

View File

@ -15,7 +15,9 @@
General commands General commands
================ ================
An alphabetic list of general LAMMPS commands. An alphabetic list of general LAMMPS commands. Note that style
commands with many variants, can be more easily accessed via the small
table above.
.. table_from_list:: .. table_from_list::
:columns: 5 :columns: 5

View File

@ -166,6 +166,7 @@ OPT.
* :doc:`orient/fcc <fix_orient>` * :doc:`orient/fcc <fix_orient>`
* :doc:`orient/eco <fix_orient_eco>` * :doc:`orient/eco <fix_orient_eco>`
* :doc:`pafi <fix_pafi>` * :doc:`pafi <fix_pafi>`
* :doc:`pair <fix_pair>`
* :doc:`phonon <fix_phonon>` * :doc:`phonon <fix_phonon>`
* :doc:`pimd <fix_pimd>` * :doc:`pimd <fix_pimd>`
* :doc:`planeforce <fix_planeforce>` * :doc:`planeforce <fix_planeforce>`

View File

@ -236,6 +236,7 @@ OPT.
* :doc:`oxrna2/xstk <pair_oxrna2>` * :doc:`oxrna2/xstk <pair_oxrna2>`
* :doc:`oxrna2/coaxstk <pair_oxrna2>` * :doc:`oxrna2/coaxstk <pair_oxrna2>`
* :doc:`pace (k) <pair_pace>` * :doc:`pace (k) <pair_pace>`
* :doc:`pace/extrapolation <pair_pace>`
* :doc:`peri/eps <pair_peri>` * :doc:`peri/eps <pair_peri>`
* :doc:`peri/lps (o) <pair_peri>` * :doc:`peri/lps (o) <pair_peri>`
* :doc:`peri/pmb (o) <pair_peri>` * :doc:`peri/pmb (o) <pair_peri>`

View File

@ -328,7 +328,7 @@ removed so this update is **required** to avoid compilation failure.
Split of fix STORE into fix STORE/GLOBAL and fix STORE/PERATOM Split of fix STORE into fix STORE/GLOBAL and fix STORE/PERATOM
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: TBD .. versionchanged:: 15Sep2022
This change splits the GLOBAL and PERATOM modes of fix STORE into two This change splits the GLOBAL and PERATOM modes of fix STORE into two
separate fixes STORE/GLOBAL and STORE/PERATOM. There was very little separate fixes STORE/GLOBAL and STORE/PERATOM. There was very little
@ -387,7 +387,7 @@ This change is **required** or else the code will not compile.
Use Output::get_dump_by_id() instead of Output::find_dump() Use Output::get_dump_by_id() instead of Output::find_dump()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: TBD .. versionchanged:: 15Sep2022
The accessor function to individual dump style instances has been changed The accessor function to individual dump style instances has been changed
from ``Output::find_dump()`` returning the index of the dump instance in from ``Output::find_dump()`` returning the index of the dump instance in

View File

@ -75,7 +75,7 @@ Using the GDB debugger to get a stack trace
There are two options to use the GDB debugger for identifying the origin There are two options to use the GDB debugger for identifying the origin
of the segmentation fault or similar crash. The GDB debugger has many of the segmentation fault or similar crash. The GDB debugger has many
more features and options, as can be seen for example its `online more features and options, as can be seen for example its `online
documentation <http://sourceware.org/gdb/current/onlinedocs/gdb/>`_. documentation <https://sourceware.org/gdb/current/onlinedocs/gdb/>`_.
Run LAMMPS from within the debugger Run LAMMPS from within the debugger
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File diff suppressed because it is too large Load Diff

View File

@ -86,6 +86,7 @@ Packages howto
Howto_coreshell Howto_coreshell
Howto_drude Howto_drude
Howto_drude2 Howto_drude2
Howto_peri
Howto_manifold Howto_manifold
Howto_spins Howto_spins

View File

@ -281,7 +281,7 @@ Here is more information about the extended XYZ format defined and
used by Tinker, and links to programs that convert standard PDB files used by Tinker, and links to programs that convert standard PDB files
to the extended XYZ format: to the extended XYZ format:
* `http://openbabel.org/docs/current/FileFormats/Tinker_XYZ_format.html <http://openbabel.org/docs/current/FileFormats/Tinker_XYZ_format.html>`_ * `https://openbabel.org/docs/current/FileFormats/Tinker_XYZ_format.html <https://openbabel.org/docs/current/FileFormats/Tinker_XYZ_format.html>`_
* `https://github.com/emleddin/pdbxyz-xyzpdb <https://github.com/emleddin/pdbxyz-xyzpdb>`_ * `https://github.com/emleddin/pdbxyz-xyzpdb <https://github.com/emleddin/pdbxyz-xyzpdb>`_
* `https://github.com/TinkerTools/tinker/blob/release/source/pdbxyz.f <https://github.com/TinkerTools/tinker/blob/release/source/pdbxyz.f>`_ * `https://github.com/TinkerTools/tinker/blob/release/source/pdbxyz.f <https://github.com/TinkerTools/tinker/blob/release/source/pdbxyz.f>`_

View File

@ -3,24 +3,20 @@ CHARMM, AMBER, COMPASS, and DREIDING force fields
A force field has 2 parts: the formulas that define it and the A force field has 2 parts: the formulas that define it and the
coefficients used for a particular system. Here we only discuss coefficients used for a particular system. Here we only discuss
formulas implemented in LAMMPS that correspond to formulas commonly formulas implemented in LAMMPS that correspond to formulas commonly used
used in the CHARMM, AMBER, COMPASS, and DREIDING force fields. Setting in the CHARMM, AMBER, COMPASS, and DREIDING force fields. Setting
coefficients is done either from special sections in an input data file coefficients is done either from special sections in an input data file
via the :doc:`read_data <read_data>` command or in the input script with via the :doc:`read_data <read_data>` command or in the input script with
commands like :doc:`pair_coeff <pair_coeff>` or commands like :doc:`pair_coeff <pair_coeff>` or :doc:`bond_coeff
:doc:`bond_coeff <bond_coeff>` and so on. See the :doc:`Tools <Tools>` doc <bond_coeff>` and so on. See the :doc:`Tools <Tools>` doc page for
page for additional tools that can use CHARMM, AMBER, or Materials additional tools that can use CHARMM, AMBER, or Materials Studio
Studio generated files to assign force field coefficients and convert generated files to assign force field coefficients and convert their
their output into LAMMPS input. output into LAMMPS input.
See :ref:`(MacKerell) <howto-MacKerell>` for a description of the CHARMM force See :ref:`(MacKerell) <howto-MacKerell>` for a description of the CHARMM
field. See :ref:`(Cornell) <howto-Cornell>` for a description of the AMBER force field. See :ref:`(Cornell) <howto-Cornell>` for a description of
force field. See :ref:`(Sun) <howto-Sun>` for a description of the COMPASS the AMBER force field. See :ref:`(Sun) <howto-Sun>` for a description
force field. of the COMPASS force field.
.. _charmm: http://www.scripps.edu/brooks
.. _amber: http://amber.scripps.edu
The interaction styles listed below compute force field formulas that The interaction styles listed below compute force field formulas that
are consistent with common options in CHARMM or AMBER. See each are consistent with common options in CHARMM or AMBER. See each
@ -41,9 +37,10 @@ command's documentation for the formula it computes.
.. note:: .. note::
For CHARMM, newer *charmmfsw* or *charmmfsh* styles were released For CHARMM, newer *charmmfsw* or *charmmfsh* styles were released in
in March 2017. We recommend they be used instead of the older *charmm* March 2017. We recommend they be used instead of the older *charmm*
styles. See discussion of the differences on the :doc:`pair charmm <pair_charmm>` and :doc:`dihedral charmm <dihedral_charmm>` doc styles. See discussion of the differences on the :doc:`pair charmm
<pair_charmm>` and :doc:`dihedral charmm <dihedral_charmm>` doc
pages. pages.
COMPASS is a general force field for atomistic simulation of common COMPASS is a general force field for atomistic simulation of common

View File

@ -33,46 +33,6 @@ reference state of a bond. Bonds that are created midway into a run,
such as those created by pouring grains using :doc:`fix pour such as those created by pouring grains using :doc:`fix pour
<fix_pour>`, are initialized on that timestep. <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 Currently there are two types of bonds included in the BPM
@ -91,12 +51,6 @@ This also requires a unique integrator :doc:`fix nve/bpm/sphere
<fix_nve_bpm_sphere>` which numerically integrates orientation similar <fix_nve_bpm_sphere>` which numerically integrates orientation similar
to :doc:`fix nve/asphere <fix_nve_asphere>`. 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 In addition to bond styles, a new pair style :doc:`pair bpm/spring
<pair_bpm_spring>` was added to accompany the bpm/spring bond <pair_bpm_spring>` was added to accompany the bpm/spring bond
style. This pair style is simply a hookean repulsion with similar style. This pair style is simply a hookean repulsion with similar
@ -104,6 +58,73 @@ velocity damping as its sister bond style.
---------- ----------
Bond data can be output using a combination of standard LAMMPS commands.
A list of IDs for bonded atoms can be generated using the
:doc:`compute property/local <compute_property_local>` command.
Various properties of bonds can be computed using the
:doc:`compute bond/local <compute_bond_local>` command. This
command allows one to access data saved to the bond's history
such as the reference length of the bond. More information on
bond history data can be found on the documentation pages for the specific
BPM bond styles. Finally, this data can be output using a :doc:`dump local <dump>`
command. As one may output many columns from the same compute, the
:doc:`dump modify <dump_modify>` *colname* option may be used to provide
more helpful column names. An example of this procedure is found in
/examples/bpm/pour/. External software, such as OVITO, can read these dump
files to render bond data.
----------
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 overlay
pair forces with bond forces 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
Alternatively, 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 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.
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. Since one may frequently output
a list of broken bonds and the time they broke, the
:doc:`dump modify <dump_modify>` option *header no* may be useful to
avoid repeatedly printing the header of the dump file. An example of
this procedure is found in /examples/bpm/impact/. Additionally,
one can use :doc:`compute nbond/atom <compute_nbond_atom>` to tally the
current number of bonds per atom.
See the :doc:`Howto <Howto_broken_bonds>` page on broken bonds for
more information.
----------
While LAMMPS has many utilities to create and delete bonds, *only* While LAMMPS has many utilities to create and delete bonds, *only*
the following are currently compatible with BPM bond styles: the following are currently compatible with BPM bond styles:

View File

@ -10,7 +10,7 @@ changes or additions you have made to LAMMPS into the official LAMMPS
distribution. It uses the process of updating this very tutorial as an distribution. It uses the process of updating this very tutorial as an
example to describe the individual steps and options. You need to be example to describe the individual steps and options. You need to be
familiar with git and you may want to have a look at the `git book familiar with git and you may want to have a look at the `git book
<http://git-scm.com/book/>`_ to familiarize yourself with some of the <https://git-scm.com/book/>`_ to familiarize yourself with some of the
more advanced git features used below. more advanced git features used below.
As of fall 2016, submitting contributions to LAMMPS via pull requests As of fall 2016, submitting contributions to LAMMPS via pull requests

View File

@ -47,4 +47,4 @@ to the relevant fixes.
.. _Paquay1: .. _Paquay1:
**(Paquay)** Paquay and Kusters, Biophys. J., 110, 6, (2016). **(Paquay)** Paquay and Kusters, Biophys. J., 110, 6, (2016).
preprint available at `arXiv:1411.3019 <http://arxiv.org/abs/1411.3019/>`_. preprint available at `arXiv:1411.3019 <https://arxiv.org/abs/1411.3019/>`_.

1078
doc/src/Howto_peri.rst Normal file

File diff suppressed because it is too large Load Diff

View File

@ -38,7 +38,7 @@ the partial charge assignments change:
See the :ref:`(Berendsen) <howto-Berendsen>` reference for more details on both See the :ref:`(Berendsen) <howto-Berendsen>` reference for more details on both
the SPC and SPC/E models. the SPC and SPC/E models.
Wikipedia also has a nice article on `water models <http://en.wikipedia.org/wiki/Water_model>`_. Wikipedia also has a nice article on `water models <https://en.wikipedia.org/wiki/Water_model>`_.
---------- ----------

View File

@ -30,9 +30,11 @@ can be coupled to another Langevin thermostat applied to the atoms
using :doc:`fix langevin <fix_langevin>` in order to simulate using :doc:`fix langevin <fix_langevin>` in order to simulate
thermostatted spin-lattice systems. thermostatted spin-lattice systems.
The magnetic Gilbert damping can also be applied using :doc:`fix langevin/spin <fix_langevin_spin>`. It allows to either dissipate The magnetic damping can also be applied
the thermal energy of the Langevin thermostat, or to perform a using :doc:`fix langevin/spin <fix_langevin_spin>`.
relaxation of the magnetic configuration toward an equilibrium state. It allows to either dissipate the thermal energy of the Langevin
thermostat, or to perform a relaxation of the magnetic configuration
toward an equilibrium state.
The command :doc:`fix setforce/spin <fix_setforce>` allows to set the The command :doc:`fix setforce/spin <fix_setforce>` allows to set the
components of the magnetic precession vectors (while erasing and components of the magnetic precession vectors (while erasing and
@ -52,9 +54,11 @@ All the computed magnetic properties can be output by two main
commands. The first one is :doc:`compute spin <compute_spin>`, that commands. The first one is :doc:`compute spin <compute_spin>`, that
enables to evaluate magnetic averaged quantities, such as the total enables to evaluate magnetic averaged quantities, such as the total
magnetization of the system along x, y, or z, the spin temperature, or magnetization of the system along x, y, or z, the spin temperature, or
the magnetic energy. The second command is :doc:`compute property/atom <compute_property_atom>`. It enables to output all the the magnetic energy. The second command
per atom magnetic quantities. Typically, the orientation of a given is :doc:`compute property/atom <compute_property_atom>`.
magnetic spin, or the magnetic force acting on this spin. It enables to output all the per atom magnetic quantities. Typically,
the orientation of a given magnetic spin, or the magnetic force
acting on this spin.
---------- ----------

View File

@ -49,7 +49,7 @@ details:
| :math:`\theta` of HOH angle = 104.52\ :math:`^{\circ}` | :math:`\theta` of HOH angle = 104.52\ :math:`^{\circ}`
| |
Wikipedia also has a nice article on `water models <http://en.wikipedia.org/wiki/Water_model>`_. Wikipedia also has a nice article on `water models <https://en.wikipedia.org/wiki/Water_model>`_.
---------- ----------

View File

@ -97,7 +97,7 @@ This leads to slightly larger cost for the long-range calculation, so
you can test the trade-off for your model. The OM distance and the LJ you can test the trade-off for your model. The OM distance and the LJ
and Coulombic cutoffs are set in the :doc:`pair_style lj/cut/tip4p/long <pair_lj_cut_tip4p>` command. and Coulombic cutoffs are set in the :doc:`pair_style lj/cut/tip4p/long <pair_lj_cut_tip4p>` command.
Wikipedia also has a nice article on `water models <http://en.wikipedia.org/wiki/Water_model>`_. Wikipedia also has a nice article on `water models <https://en.wikipedia.org/wiki/Water_model>`_.
---------- ----------

View File

@ -1,7 +1,7 @@
Type labels Type labels
=========== ===========
.. versionadded:: TBD .. versionadded:: 15Sep2022
Each atom in LAMMPS has an associated numeric atom type. Similarly, Each atom in LAMMPS has an associated numeric atom type. Similarly,
each bond, angle, dihedral, and improper is assigned a bond type, each bond, angle, dihedral, and improper is assigned a bond type,

View File

@ -17,9 +17,10 @@ formats. See the :doc:`Tools <Tools>` page for details.
A Python-based toolkit distributed by our group can read native LAMMPS A Python-based toolkit distributed by our group can read native LAMMPS
dump files, including custom dump files with additional columns of dump files, including custom dump files with additional columns of
user-specified atom information, and convert them to various formats user-specified atom information, and convert them to various formats or
or pipe them into visualization software directly. See the `Pizza.py WWW site <pizza_>`_ for details. Specifically, Pizza.py can convert pipe them into visualization software directly. See the `Pizza.py WWW
LAMMPS dump files into PDB, XYZ, `EnSight <ensight_>`_, and VTK formats. site <pizza_>`_ for details. Specifically, Pizza.py can convert LAMMPS
dump files into PDB, XYZ, `EnSight <ensight_>`_, and VTK formats.
Pizza.py can pipe LAMMPS dump files directly into the Raster3d and Pizza.py can pipe LAMMPS dump files directly into the Raster3d and
RasMol visualization programs. Pizza.py has tools that do interactive RasMol visualization programs. Pizza.py has tools that do interactive
3d OpenGL visualization and one that creates SVG images of dump file 3d OpenGL visualization and one that creates SVG images of dump file

View File

@ -5,7 +5,7 @@ Binaries are available for MacOS or Linux via `Conda <conda_>`_.
First, one must setup the Conda package manager on your system. Follow the First, one must setup the Conda package manager on your system. Follow the
instructions to install `Miniconda <mini_conda_install_>`_, then create a conda instructions to install `Miniconda <mini_conda_install_>`_, then create a conda
environment (named `my-lammps-env` or whatever you prefer) for your lammps environment (named `my-lammps-env` or whatever you prefer) for your LAMMPS
install: install:
.. code-block:: bash .. code-block:: bash
@ -13,7 +13,7 @@ install:
% conda config --add channels conda-forge % conda config --add channels conda-forge
% conda create -n my-lammps-env % conda create -n my-lammps-env
Then, you can install lammps on your system with the following command: Then, you can install LAMMPS on your system with the following command:
.. code-block:: bash .. code-block:: bash

View File

@ -6,7 +6,7 @@ Windows system can be downloaded from this site:
.. parsed-literal:: .. parsed-literal::
`http://packages.lammps.org/windows.html <http://packages.lammps.org/windows.html>`_ `https://packages.lammps.org/windows.html <https://packages.lammps.org/windows.html>`_
Note that each installer package has a date in its name, which Note that each installer package has a date in its name, which
corresponds to the LAMMPS version of the same date. Installers for corresponds to the LAMMPS version of the same date. Installers for

View File

@ -4,13 +4,13 @@ Authors of LAMMPS
The primary LAMMPS developers are at Sandia National Labs and Temple The primary LAMMPS developers are at Sandia National Labs and Temple
University: University:
* `Steve Plimpton <sjp_>`_, sjplimp at sandia.gov * `Steve Plimpton <sjp_>`_, sjplimp at gmail.com
* Aidan Thompson, athomps at sandia.gov * Aidan Thompson, athomps at sandia.gov
* Stan Moore, stamoor at sandia.gov * Stan Moore, stamoor at sandia.gov
* Axel Kohlmeyer, akohlmey at gmail.com * Axel Kohlmeyer, akohlmey at gmail.com
* Richard Berger, richard.berger at outlook.com * Richard Berger, richard.berger at outlook.com
.. _sjp: http://www.cs.sandia.gov/~sjplimp .. _sjp: https://sjplimp.github.io
.. _lws: https://www.lammps.org .. _lws: https://www.lammps.org
Past developers include Paul Crozier and Mark Stevens, both at Sandia, Past developers include Paul Crozier and Mark Stevens, both at Sandia,

View File

@ -27,7 +27,7 @@ namely https://www.lammps.org.
The original publication describing the parallel algorithms used in the The original publication describing the parallel algorithms used in the
initial versions of LAMMPS is: 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>`_ `S. Plimpton, Fast Parallel Algorithms for Short-Range Molecular Dynamics, J Comp Phys, 117, 1-19 (1995). <https://doi.org/10.1006/jcph.1995.1039>`_
DOI for the LAMMPS source code DOI for the LAMMPS source code

View File

@ -95,7 +95,7 @@ commands)
* metal-organic framework potentials (QuickFF, MO-FF) * metal-organic framework potentials (QuickFF, MO-FF)
* implicit solvent potentials: hydrodynamic lubrication, Debye * implicit solvent potentials: hydrodynamic lubrication, Debye
* force-field compatibility with common CHARMM, AMBER, DREIDING, OPLS, GROMACS, COMPASS options * force-field compatibility with common CHARMM, AMBER, DREIDING, OPLS, GROMACS, COMPASS options
* access to the `OpenKIM Repository <http://openkim.org>`_ of potentials via :doc:`kim command <kim_commands>` * access to the `OpenKIM Repository <https://openkim.org>`_ of potentials via the :doc:`kim command <kim_commands>`
* hybrid potentials: multiple pair, bond, angle, dihedral, improper potentials can be used in one simulation * hybrid potentials: multiple pair, bond, angle, dihedral, improper potentials can be used in one simulation
* overlaid potentials: superposition of multiple pair potentials (including many-body) with optional scale factor * overlaid potentials: superposition of multiple pair potentials (including many-body) with optional scale factor
@ -205,7 +205,7 @@ Pre- and post-processing
.. _pizza: https://lammps.github.io/pizza .. _pizza: https://lammps.github.io/pizza
.. _python: http://www.python.org .. _python: https://www.python.org
.. _special: .. _special:

View File

@ -33,7 +33,7 @@ Here are suggestions on how to perform these tasks:
linear bead-spring polymer chains. The moltemplate program is a true linear bead-spring polymer chains. The moltemplate program is a true
molecular builder that will generate complex molecular models. See molecular builder that will generate complex molecular models. See
the :doc:`Tools <Tools>` page for details on tools packaged with the :doc:`Tools <Tools>` page for details on tools packaged with
LAMMPS. The `Pre/post processing page <http:/www.lammps.org/prepost.html>`_ of the LAMMPS website LAMMPS. The `Pre/post processing page <https:/www.lammps.org/prepost.html>`_ of the LAMMPS website
describes a variety of third party tools for this task. Furthermore, describes a variety of third party tools for this task. Furthermore,
some LAMMPS internal commands allow to reconstruct, or selectively add some LAMMPS internal commands allow to reconstruct, or selectively add
topology information, as well as provide the option to insert molecule topology information, as well as provide the option to insert molecule
@ -80,5 +80,5 @@ Here are suggestions on how to perform these tasks:
`Pizza.py <https://lammps.github.io/pizza>`_ which can do certain kinds of `Pizza.py <https://lammps.github.io/pizza>`_ which can do certain kinds of
setup, analysis, plotting, and visualization (via OpenGL) for LAMMPS setup, analysis, plotting, and visualization (via OpenGL) for LAMMPS
simulations. It thus provides some functionality for several of the simulations. It thus provides some functionality for several of the
above bullets. Pizza.py is written in `Python <http://www.python.org>`_ above bullets. Pizza.py is written in `Python <https://www.python.org>`_
and is available for download from `this page <http://www.cs.sandia.gov/~sjplimp/download.html>`_. and is available for download from `this page <https://sjplimp.github.io/download.html>`_.

View File

@ -23,9 +23,9 @@ applies to LAMMPS is in the LICENSE file included in the LAMMPS distribution.
.. _lgpl: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html .. _lgpl: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
.. _gnuorg: http://www.gnu.org .. _gnuorg: https://www.gnu.org
.. _opensource: http://www.opensource.org .. _opensource: https://www.opensource.org
Here is a more specific summary of what the GPL means for LAMMPS users: Here is a more specific summary of what the GPL means for LAMMPS users:

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

View File

@ -11,6 +11,7 @@ This section documents the following functions:
- :cpp:func:`lammps_mpi_finalize` - :cpp:func:`lammps_mpi_finalize`
- :cpp:func:`lammps_kokkos_finalize` - :cpp:func:`lammps_kokkos_finalize`
- :cpp:func:`lammps_python_finalize` - :cpp:func:`lammps_python_finalize`
- :cpp:func:`lammps_error`
-------------------- --------------------
@ -115,3 +116,8 @@ calling program.
.. doxygenfunction:: lammps_python_finalize .. doxygenfunction:: lammps_python_finalize
:project: progguide :project: progguide
-----------------------
.. doxygenfunction:: lammps_error
:project: progguide

View File

@ -6,6 +6,7 @@ fixes, or variables in LAMMPS using the following functions:
- :cpp:func:`lammps_extract_compute` - :cpp:func:`lammps_extract_compute`
- :cpp:func:`lammps_extract_fix` - :cpp:func:`lammps_extract_fix`
- :cpp:func:`lammps_extract_variable_datatype`
- :cpp:func:`lammps_extract_variable` - :cpp:func:`lammps_extract_variable`
- :cpp:func:`lammps_set_variable` - :cpp:func:`lammps_set_variable`
@ -21,6 +22,11 @@ fixes, or variables in LAMMPS using the following functions:
----------------------- -----------------------
.. doxygenfunction:: lammps_extract_variable_datatype
:project: progguide
-----------------------
.. doxygenfunction:: lammps_extract_variable .. doxygenfunction:: lammps_extract_variable
:project: progguide :project: progguide
@ -36,3 +42,5 @@ fixes, or variables in LAMMPS using the following functions:
.. doxygenenum:: _LMP_STYLE_CONST .. doxygenenum:: _LMP_STYLE_CONST
.. doxygenenum:: _LMP_TYPE_CONST .. doxygenenum:: _LMP_TYPE_CONST
.. doxygenenum:: _LMP_VAR_CONST

View File

@ -15,21 +15,21 @@ This section documents the following functions:
-------------------- --------------------
The library interface allows extraction of different kinds of The library interface allows the extraction of different kinds of
information about the active simulation instance and also information about the active simulation instance and also---in some
modifications to it. This enables combining of a LAMMPS simulation cases---to apply modifications to it. This enables combining of a
with other processing and simulation methods computed by the calling LAMMPS simulation with other processing and simulation methods computed
code, or by another code that is coupled to LAMMPS via the library by the calling code, or by another code that is coupled to LAMMPS via
interface. In some cases the data returned is direct reference to the the library interface. In some cases the data returned is direct
original data inside LAMMPS, cast to a void pointer. In that case the reference to the original data inside LAMMPS, cast to a void pointer.
data needs to be cast to a suitable pointer for the calling program to In that case the data needs to be cast to a suitable pointer for the
access it, and you may need to know the correct dimensions and calling program to access it, and you may need to know the correct
lengths. This also means you can directly change those value(s) from dimensions and lengths. This also means you can directly change those
the calling program, e.g. to modify atom positions. Of course, this value(s) from the calling program (e.g., to modify atom positions). Of
should be done with care. When accessing per-atom data, please note course, changing values should be done with care. When accessing per-atom
that this data is the per-processor **local** data and is indexed data, please note that these data are the per-processor **local** data and are
accordingly. Per-atom data can change sizes and ordering at every indexed accordingly. Per-atom data can change sizes and ordering at
neighbor list rebuild or atom sort event as atoms migrate between every neighbor list rebuild or atom sort event as atoms migrate between
sub-domains and processors. sub-domains and processors.
.. code-block:: C .. code-block:: C

View File

@ -19,6 +19,7 @@ functions. They do not directly call the LAMMPS library.
- :cpp:func:`lammps_force_timeout` - :cpp:func:`lammps_force_timeout`
- :cpp:func:`lammps_has_error` - :cpp:func:`lammps_has_error`
- :cpp:func:`lammps_get_last_error_message` - :cpp:func:`lammps_get_last_error_message`
- :cpp:func:`lammps_python_api_version`
The :cpp:func:`lammps_free` function is a clean-up function to free The :cpp:func:`lammps_free` function is a clean-up function to free
memory that the library had allocated previously via other function memory that the library had allocated previously via other function
@ -100,3 +101,9 @@ where such memory buffers were allocated that require the use of
.. doxygenfunction:: lammps_get_last_error_message .. doxygenfunction:: lammps_get_last_error_message
:project: progguide :project: progguide
-----------------------
.. doxygenfunction:: lammps_python_api_version
:project: progguide

View File

@ -134,6 +134,8 @@ commands to write and read data using the ADIOS library.
**Authors:** Norbert Podhorszki (ORNL) from the ADIOS developer team. **Authors:** Norbert Podhorszki (ORNL) from the ADIOS developer team.
.. versionadded:: 28Feb2019
**Install:** **Install:**
This package has :ref:`specific installation instructions <adios>` on the :doc:`Build extras <Build_extras>` page. This package has :ref:`specific installation instructions <adios>` on the :doc:`Build extras <Build_extras>` page.
@ -276,7 +278,7 @@ the barostat as outlined in:
N. J. H. Dunn and W. G. Noid, "Bottom-up coarse-grained models that N. J. H. Dunn and W. G. Noid, "Bottom-up coarse-grained models that
accurately describe the structure, pressure, and compressibility of accurately describe the structure, pressure, and compressibility of
molecular liquids," J. Chem. Phys. 143, 243148 (2015). molecular liquids", J. Chem. Phys. 143, 243148 (2015).
**Authors:** Nicholas J. H. Dunn and Michael R. DeLyser (The **Authors:** Nicholas J. H. Dunn and Michael R. DeLyser (The
Pennsylvania State University) Pennsylvania State University)
@ -364,6 +366,8 @@ and also support self-propelled particles.
**Authors:** Sam Cameron (University of Bristol), **Authors:** Sam Cameron (University of Bristol),
Stefan Paquay (while at Brandeis University) (initial version of fix propel/self) Stefan Paquay (while at Brandeis University) (initial version of fix propel/self)
.. versionadded:: 14May2021
Example inputs are in the examples/PACKAGES/brownian folder. Example inputs are in the examples/PACKAGES/brownian folder.
---------- ----------
@ -592,6 +596,8 @@ To use this package, also the :ref:`KSPACE <PKG-KSPACE>` and
**Author:** Trung Nguyen and Monica Olvera de la Cruz (Northwestern U) **Author:** Trung Nguyen and Monica Olvera de la Cruz (Northwestern U)
.. versionadded:: 2Jul2021
**Supporting info:** **Supporting info:**
* src/DIELECTRIC: filenames -> commands * src/DIELECTRIC: filenames -> commands
@ -1071,7 +1077,7 @@ H5MD is a format for molecular simulations, built on top of HDF5.
This package implements a :doc:`dump h5md <dump_h5md>` command to output This package implements a :doc:`dump h5md <dump_h5md>` command to output
LAMMPS snapshots in this format. LAMMPS snapshots in this format.
.. _HDF5: http://www.hdfgroup.org/HDF5 .. _HDF5: https://www.hdfgroup.org/solutions/hdf5
To use this package you must have the HDF5 library available on your To use this package you must have the HDF5 library available on your
system. system.
@ -1512,6 +1518,8 @@ workflows via the `MolSSI Driver Interface
**Author:** Taylor Barnes - MolSSI, taylor.a.barnes at gmail.com **Author:** Taylor Barnes - MolSSI, taylor.a.barnes at gmail.com
.. versionadded:: 14May2021
**Install:** **Install:**
This package has :ref:`specific installation instructions <mdi>` on This package has :ref:`specific installation instructions <mdi>` on
@ -1596,6 +1604,8 @@ of Alabama), Leonid V. Zhigilei (University of Virginia)
**Author of the *mesocnt* styles:** **Author of the *mesocnt* styles:**
Philipp Kloza (U Cambridge) Philipp Kloza (U Cambridge)
.. versionadded:: 15Jun2020
**Supporting info:** **Supporting info:**
* src/MESONT: filenames -> commands * src/MESONT: filenames -> commands
@ -1688,6 +1698,8 @@ compiled on your system.
**Author:** Andreas Singraber **Author:** Andreas Singraber
.. versionadded:: 27May2021
**Install:** **Install:**
This package has :ref:`specific installation instructions <ml-hdnnp>` on the This package has :ref:`specific installation instructions <ml-hdnnp>` on the
@ -1722,6 +1734,10 @@ must be installed.
**Author:** Aidan Thompson (Sandia), Nicholas Lubbers (LANL). **Author:** Aidan Thompson (Sandia), Nicholas Lubbers (LANL).
.. versionadded:: 30Jun2020
.. versionadded:: 30Jun2020
**Supporting info:** **Supporting info:**
* src/ML-IAP: filenames -> commands * src/ML-IAP: filenames -> commands
@ -1766,6 +1782,8 @@ Aidan Thompson^3, Gabor Csanyi^2, Christoph Ortner^4, Ralf Drautz^1.
^4: University of British Columbia, Vancouver, BC, Canada ^4: University of British Columbia, Vancouver, BC, Canada
.. versionadded:: 14May2021
**Install:** **Install:**
This package has :ref:`specific installation instructions <ml-pace>` on the This package has :ref:`specific installation instructions <ml-pace>` on the
@ -1829,6 +1847,8 @@ of a neural network.
This package was written by Christopher Barrett This package was written by Christopher Barrett
with contributions by Doyl Dickel, Mississippi State University. with contributions by Doyl Dickel, Mississippi State University.
.. versionadded:: 27May2021
**Supporting info:** **Supporting info:**
* src/ML-RANN: filenames -> commands * src/ML-RANN: filenames -> commands
@ -1954,7 +1974,7 @@ support for new file formats can be added to LAMMPS (or VMD or other
programs that use them) without having to re-compile the application programs that use them) without having to re-compile the application
itself. More information about the VMD molfile plugins can be found itself. More information about the VMD molfile plugins can be found
at at
`http://www.ks.uiuc.edu/Research/vmd/plugins/molfile <http://www.ks.uiuc.edu/Research/vmd/plugins/molfile>`_. `https://www.ks.uiuc.edu/Research/vmd/plugins/molfile <https://www.ks.uiuc.edu/Research/vmd/plugins/molfile>`_.
**Author:** Axel Kohlmeyer (Temple U). **Author:** Axel Kohlmeyer (Temple U).
@ -2045,7 +2065,7 @@ NETCDF package
Dump styles for writing NetCDF formatted dump files. NetCDF is a Dump styles for writing NetCDF formatted dump files. NetCDF is a
portable, binary, self-describing file format developed on top of portable, binary, self-describing file format developed on top of
HDF5. The file contents follow the AMBER NetCDF trajectory conventions HDF5. The file contents follow the AMBER NetCDF trajectory conventions
(http://ambermd.org/netcdf/nctraj.xhtml), but include extensions. (https://ambermd.org/netcdf/nctraj.xhtml), but include extensions.
To use this package you must have the NetCDF library available on your To use this package you must have the NetCDF library available on your
system. system.
@ -2056,7 +2076,7 @@ tools:
* `Ovito <ovito_>`_ (Ovito supports the AMBER convention and the extensions mentioned above) * `Ovito <ovito_>`_ (Ovito supports the AMBER convention and the extensions mentioned above)
* `VMD <vmd-home_>`_ * `VMD <vmd-home_>`_
.. _ovito: http://www.ovito.org .. _ovito: https://www.ovito.org
.. _vmd-home: https://www.ks.uiuc.edu/Research/vmd/ .. _vmd-home: https://www.ks.uiuc.edu/Research/vmd/
@ -2200,6 +2220,7 @@ Foster (UTSA).
**Supporting info:** **Supporting info:**
* src/PERI: filenames -> commands * src/PERI: filenames -> commands
* :doc:`Peridynamics Howto <Howto_peri>`
* `doc/PDF/PDLammps_overview.pdf <PDF/PDLammps_overview.pdf>`_ * `doc/PDF/PDLammps_overview.pdf <PDF/PDLammps_overview.pdf>`_
* `doc/PDF/PDLammps_EPS.pdf <PDF/PDLammps_EPS.pdf>`_ * `doc/PDF/PDLammps_EPS.pdf <PDF/PDLammps_EPS.pdf>`_
* `doc/PDF/PDLammps_VES.pdf <PDF/PDLammps_VES.pdf>`_ * `doc/PDF/PDLammps_VES.pdf <PDF/PDLammps_VES.pdf>`_
@ -2264,6 +2285,8 @@ try to load the contained plugins automatically at start-up.
**Authors:** Axel Kohlmeyer (Temple U) **Authors:** Axel Kohlmeyer (Temple U)
.. versionadded:: 8Apr2021
**Supporting info:** **Supporting info:**
* src/PLUGIN: filenames -> commands * src/PLUGIN: filenames -> commands
@ -2417,7 +2440,7 @@ A :doc:`fix qmmm <fix_qmmm>` command which allows LAMMPS to be used as
the MM code in a QM/MM simulation. This is currently only available the MM code in a QM/MM simulation. This is currently only available
in combination with the `Quantum ESPRESSO <espresso_>`_ package. in combination with the `Quantum ESPRESSO <espresso_>`_ package.
.. _espresso: http://www.quantum-espresso.org .. _espresso: https://www.quantum-espresso.org
To use this package you must have Quantum ESPRESSO (QE) available on To use this package you must have Quantum ESPRESSO (QE) available on
your system and include its coupling library in the compilation and your system and include its coupling library in the compilation and
@ -2829,7 +2852,7 @@ collection of atoms by wrapping the `Voro++ library <voro-home_>`_. This
can be used to calculate the local volume or each atoms or its near can be used to calculate the local volume or each atoms or its near
neighbors. neighbors.
.. _voro-home: http://math.lbl.gov/voro++ .. _voro-home: https://math.lbl.gov/voro++
To use this package you must have the Voro++ library available on your To use this package you must have the Voro++ library available on your
system. system.
@ -2863,9 +2886,9 @@ A :doc:`dump vtk <dump_vtk>` command which outputs snapshot info in the
`VTK format <vtk_>`_, enabling visualization by `Paraview <paraview_>`_ or `VTK format <vtk_>`_, enabling visualization by `Paraview <paraview_>`_ or
other visualization packages. other visualization packages.
.. _vtk: http://www.vtk.org .. _vtk: https://www.vtk.org
.. _paraview: http://www.paraview.org .. _paraview: https://www.paraview.org
To use this package you must have VTK library available on your To use this package you must have VTK library available on your
system. system.
@ -2902,11 +2925,13 @@ which discuss the `QuickFF <quickff_>`_ methodology.
.. _vanduyfhuys2015: https://doi.org/10.1002/jcc.23877 .. _vanduyfhuys2015: https://doi.org/10.1002/jcc.23877
.. _vanduyfhuys2018: https://doi.org/10.1002/jcc.25173 .. _vanduyfhuys2018: https://doi.org/10.1002/jcc.25173
.. _quickff: http://molmod.github.io/QuickFF .. _quickff: https://molmod.github.io/QuickFF
.. _yaff: https://github.com/molmod/yaff .. _yaff: https://github.com/molmod/yaff
**Author:** Steven Vandenbrande. **Author:** Steven Vandenbrande.
.. versionadded:: 1Feb2019
**Supporting info:** **Supporting info:**
* src/YAFF/README * src/YAFF/README

View File

@ -43,26 +43,18 @@ Note that for AtomEye, you need version 3, and there is a line in the
scripts that specifies the path and name of the executable. See the scripts that specifies the path and name of the executable. See the
AtomEye web pages for more details: AtomEye web pages for more details:
* `http://li.mit.edu/Archive/Graphics/A/ <atomeye_>`_ * `http://li.mit.edu/Archive/Graphics/A/ <http://li.mit.edu/Archive/Graphics/A/>`_
* `http://li.mit.edu/Archive/Graphics/A3/A3.html <atomeye3_>`_ * `http://li.mit.edu/Archive/Graphics/A3/A3.html <http://li.mit.edu/Archive/Graphics/A3/A3.html>`_
.. _atomeye: http://li.mit.edu/Archive/Graphics/A/ The latter link is to AtomEye 3 which has the scripting capability
needed by these Python scripts.
.. _atomeye3: http://li.mit.edu/Archive/Graphics/A3/A3.html
The latter link is to AtomEye 3 which has the scripting
capability needed by these Python scripts.
Note that for PyMol, you need to have built and installed the Note that for PyMol, you need to have built and installed the
open-source version of PyMol in your Python, so that you can import it open-source version of PyMol in your Python, so that you can import it
from a Python script. See the PyMol web pages for more details: from a Python script. See the PyMol web pages for more details:
* `https://www.pymol.org <pymolhome_>`_ * `https://www.pymol.org <https://www.pymol.org>`_
* `https://github.com/schrodinger/pymol-open-source <pymolopen_>`_ * `https://github.com/schrodinger/pymol-open-source <https://github.com/schrodinger/pymol-open-source>`_
.. _pymolhome: https://www.pymol.org
.. _pymolopen: https://github.com/schrodinger/pymol-open-source
The latter link is to the open-source version. The latter link is to the open-source version.

View File

@ -18,17 +18,17 @@ together.
Python_error Python_error
Python_trouble Python_trouble
If you are not familiar with `Python <http://www.python.org>`_, it is a If you are not familiar with `Python <https://www.python.org>`_, it is a
powerful scripting and programming language which can do almost powerful scripting and programming language which can do almost
everything that compiled languages like C, C++, or Fortran can do in everything that compiled languages like C, C++, or Fortran can do in
fewer lines of code. It also comes with a large collection of add-on fewer lines of code. It also comes with a large collection of add-on
modules for many purposes (either bundled or easily installed from modules for many purposes (either bundled or easily installed from
Python code repositories). The major drawback is slower execution speed Python code repositories). The major drawback is slower execution speed
of the script code compared to compiled programming languages. But when of the script code compared to compiled programming languages. But when
the script code is interfaced to optimized compiled code, performance can the script code is interfaced to optimized compiled code, performance
be on par with a standalone executable, for as long as the scripting is can be on par with a standalone executable, for as long as the scripting
restricted to high-level operations. Thus Python is also convenient to is restricted to high-level operations. Thus Python is also convenient
use as a "glue" language to "drive" a program through its library to use as a "glue" language to "drive" a program through its library
interface, or to hook multiple pieces of software together, such as a interface, or to hook multiple pieces of software together, such as a
simulation code and a visualization tool, or to run a coupled simulation code and a visualization tool, or to run a coupled
multi-scale or multi-physics model. multi-scale or multi-physics model.

View File

@ -38,6 +38,40 @@ using the NumPy access method.
for n in np.nditer(nlist): for n in np.nditer(nlist):
print(" atom {} with ID {}".format(n,tags[n])) print(" atom {} with ID {}".format(n,tags[n]))
Another example for extracting a full neighbor list without evaluating a
potential is shown below.
.. code-block:: python
from lammps import lammps
import numpy as np
lmp = lammps()
lmp.commands_string("""
newton off
region box block -2 2 -2 2 -2 2
lattice fcc 1.0
create_box 1 box
create_atoms 1 box
mass 1 1.0
pair_style zero 1.0 full
pair_coeff * *
run 0 post no""")
# look up the neighbor list
nlidx = lmp.find_pair_neighlist('zero')
nl = lmp.numpy.get_neighlist(nlidx)
tags = lmp.extract_atom('id')
print("full neighbor list with {} entries".format(nl.size))
# print neighbor list contents
for i in range(0,nl.size):
idx, nlist = nl.get(i)
print("\natom {} with ID {} has {} neighbors:".format(idx,tags[idx],nlist.size))
if nlist.size > 0:
for n in np.nditer(nlist):
pass
print(" atom {} with ID {}".format(n,tags[n]))
**Methods:** **Methods:**
* :py:meth:`lammps.get_neighlist() <lammps.lammps.get_neighlist()>`: Get neighbor list for given index * :py:meth:`lammps.get_neighlist() <lammps.lammps.get_neighlist()>`: Get neighbor list for given index

View File

@ -30,12 +30,13 @@ executable itself can be placed elsewhere.
.. note:: .. note::
The redirection operator "<" will not always work when running The redirection operator "<" will not always work when running in
in parallel with mpirun or mpiexec; for those systems the -in form is required. parallel with ``mpirun`` or ``mpiexec``; for those systems the -in
form is required.
As LAMMPS runs it prints info to the screen and a logfile named As LAMMPS runs it prints info to the screen and a logfile named
*log.lammps*\ . More info about output is given on the *log.lammps*\ . More info about output is given on the :doc:`screen and
:doc:`screen and logfile output <Run_output>` page. logfile output <Run_output>` page.
If LAMMPS encounters errors in the input script or while running a If LAMMPS encounters errors in the input script or while running a
simulation it will print an ERROR message and stop or a WARNING simulation it will print an ERROR message and stop or a WARNING

View File

@ -93,13 +93,13 @@ switch is not set (the default), LAMMPS will operate as if the KOKKOS
package were not installed; i.e. you can run standard LAMMPS or with package were not installed; i.e. you can run standard LAMMPS or with
the GPU or OPENMP packages, for testing or benchmarking purposes. the GPU or OPENMP packages, for testing or benchmarking purposes.
Additional optional keyword/value pairs can be specified which Additional optional keyword/value pairs can be specified which determine
determine how Kokkos will use the underlying hardware on your how Kokkos will use the underlying hardware on your platform. These
platform. These settings apply to each MPI task you launch via the settings apply to each MPI task you launch via the ``mpirun`` or
"mpirun" or "mpiexec" command. You may choose to run one or more MPI ``mpiexec`` command. You may choose to run one or more MPI tasks per
tasks per physical node. Note that if you are running on a desktop physical node. Note that if you are running on a desktop machine, you
machine, you typically have one physical node. On a cluster or typically have one physical node. On a cluster or supercomputer there
supercomputer there may be dozens or 1000s of physical nodes. may be dozens or 1000s of physical nodes.
Either the full word or an abbreviation can be used for the keywords. Either the full word or an abbreviation can be used for the keywords.
Note that the keywords do not use a leading minus sign. I.e. the Note that the keywords do not use a leading minus sign. I.e. the
@ -148,9 +148,9 @@ one of these 4 environment variables
MV2_COMM_WORLD_LOCAL_RANK (Mvapich) MV2_COMM_WORLD_LOCAL_RANK (Mvapich)
OMPI_COMM_WORLD_LOCAL_RANK (OpenMPI) OMPI_COMM_WORLD_LOCAL_RANK (OpenMPI)
which are initialized by the "srun", "mpirun" or "mpiexec" commands. which are initialized by the ``srun``, ``mpirun``, or ``mpiexec``
The environment variable setting for each MPI rank is used to assign a commands. The environment variable setting for each MPI rank is used to
unique GPU ID to the MPI task. assign a unique GPU ID to the MPI task.
.. parsed-literal:: .. parsed-literal::
@ -495,7 +495,7 @@ run:
write_dump group-ID dumpstyle dumpfile arg1 arg2 ... write_dump group-ID dumpstyle dumpfile arg1 arg2 ...
Note that the specified restartfile and dumpfile names may contain Note that the specified restartfile and dumpfile names may contain
wild-card characters ("\*","%") as explained on the wild-card characters ("\*" or "%") as explained on the
:doc:`read_restart <read_restart>` and :doc:`write_dump <write_dump>` doc :doc:`read_restart <read_restart>` and :doc:`write_dump <write_dump>` doc
pages. The use of "%" means that a parallel restart file and/or pages. The use of "%" means that a parallel restart file and/or
parallel dump file can be read and/or written. Note that a filename parallel dump file can be read and/or written. Note that a filename

View File

@ -25,8 +25,8 @@ in parallel, follow these steps.
Download and install a compatible MPI library binary package: Download and install a compatible MPI library binary package:
* for 32-bit Windows: `mpich2-1.4.1p1-win-ia32.msi <http://download.lammps.org/thirdparty/mpich2-1.4.1p1-win-ia32.msi>`_ * for 32-bit Windows: `mpich2-1.4.1p1-win-ia32.msi <https://download.lammps.org/thirdparty/mpich2-1.4.1p1-win-ia32.msi>`_
* for 64-bit Windows: `mpich2-1.4.1p1-win-x86-64.msi <http://download.lammps.org/thirdparty/mpich2-1.4.1p1-win-x86-64.msi>`_ * for 64-bit Windows: `mpich2-1.4.1p1-win-x86-64.msi <https://download.lammps.org/thirdparty/mpich2-1.4.1p1-win-x86-64.msi>`_
The LAMMPS Windows installer packages will automatically adjust your The LAMMPS Windows installer packages will automatically adjust your
path for the default location of this MPI package. After the path for the default location of this MPI package. After the

View File

@ -39,7 +39,7 @@ toolkit software on your system (this is only tested on Linux
and unsupported on Windows): and unsupported on Windows):
* Check if you have an NVIDIA GPU: cat /proc/driver/nvidia/gpus/\*/information * Check if you have an NVIDIA GPU: cat /proc/driver/nvidia/gpus/\*/information
* Go to http://www.nvidia.com/object/cuda_get.html * Go to https://developer.nvidia.com/cuda-downloads
* Install a driver and toolkit appropriate for your system (SDK is not necessary) * Install a driver and toolkit appropriate for your system (SDK is not necessary)
* Run lammps/lib/gpu/nvc_get_devices (after building the GPU library, see below) to * Run lammps/lib/gpu/nvc_get_devices (after building the GPU library, see below) to
list supported devices and properties list supported devices and properties
@ -76,10 +76,11 @@ instructions.
**Run with the GPU package from the command line:** **Run with the GPU package from the command line:**
The mpirun or mpiexec command sets the total number of MPI tasks used The ``mpirun`` or ``mpiexec`` command sets the total number of MPI tasks
by LAMMPS (one or multiple per compute node) and the number of MPI used by LAMMPS (one or multiple per compute node) and the number of MPI
tasks used per node. E.g. the mpirun command in MPICH does this via tasks used per node. E.g. the ``mpirun`` command in MPICH does this via
its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode. its ``-np`` and ``-ppn`` switches. Ditto for OpenMPI via ``-np`` and
``-npernode``.
When using the GPU package, you cannot assign more than one GPU to a When using the GPU package, you cannot assign more than one GPU to a
single MPI task. However multiple MPI tasks can share the same GPU, single MPI task. However multiple MPI tasks can share the same GPU,
@ -129,8 +130,8 @@ GPU package pair styles.
**Or run with the GPU package by editing an input script:** **Or run with the GPU package by editing an input script:**
The discussion above for the mpirun/mpiexec command, MPI tasks/node, The discussion above for the ``mpirun`` or ``mpiexec`` command, MPI
and use of multiple MPI tasks/GPU is the same. tasks/node, and use of multiple MPI tasks/GPU is the same.
Use the :doc:`suffix gpu <suffix>` command, or you can explicitly add an Use the :doc:`suffix gpu <suffix>` command, or you can explicitly add an
"gpu" suffix to individual styles in your input script, e.g. "gpu" suffix to individual styles in your input script, e.g.

View File

@ -536,6 +536,6 @@ supported.
References References
"""""""""" """"""""""
* Brown, W.M., Carrillo, J.-M.Y., Mishra, B., Gavhane, N., Thakkar, F.M., De Kraker, A.R., Yamada, M., Ang, J.A., Plimpton, S.J., "Optimizing Classical Molecular Dynamics in LAMMPS," in Intel Xeon Phi Processor High Performance Programming: Knights Landing Edition, J. Jeffers, J. Reinders, A. Sodani, Eds. Morgan Kaufmann. * Brown, W.M., Carrillo, J.-M.Y., Mishra, B., Gavhane, N., Thakkar, F.M., De Kraker, A.R., Yamada, M., Ang, J.A., Plimpton, S.J., "Optimizing Classical Molecular Dynamics in LAMMPS", in Intel Xeon Phi Processor High Performance Programming: Knights Landing Edition, J. Jeffers, J. Reinders, A. Sodani, Eds. Morgan Kaufmann.
* Brown, W. M., Semin, A., Hebenstreit, M., Khvostov, S., Raman, K., Plimpton, S.J. `Increasing Molecular Dynamics Simulation Rates with an 8-Fold Increase in Electrical Power Efficiency. <http://dl.acm.org/citation.cfm?id=3014915>`_ 2016 High Performance Computing, Networking, Storage and Analysis, SC16: International Conference (pp. 82-95). * Brown, W. M., Semin, A., Hebenstreit, M., Khvostov, S., Raman, K., Plimpton, S.J. `Increasing Molecular Dynamics Simulation Rates with an 8-Fold Increase in Electrical Power Efficiency. <https://dl.acm.org/citation.cfm?id=3014915>`_ 2016 High Performance Computing, Networking, Storage and Analysis, SC16: International Conference (pp. 82-95).
* Brown, W.M., Carrillo, J.-M.Y., Gavhane, N., Thakkar, F.M., Plimpton, S.J. Optimizing Legacy Molecular Dynamics Software with Directive-Based Offload. Computer Physics Communications. 2015. 195: p. 95-101. * Brown, W.M., Carrillo, J.-M.Y., Gavhane, N., Thakkar, F.M., Plimpton, S.J. Optimizing Legacy Molecular Dynamics Software with Directive-Based Offload. Computer Physics Communications. 2015. 195: p. 95-101.

View File

@ -72,12 +72,12 @@ See the :ref:`Build extras <kokkos>` page for instructions.
Running LAMMPS with the KOKKOS package Running LAMMPS with the KOKKOS package
"""""""""""""""""""""""""""""""""""""" """"""""""""""""""""""""""""""""""""""
All Kokkos operations occur within the context of an individual MPI All Kokkos operations occur within the context of an individual MPI task
task running on a single node of the machine. The total number of MPI running on a single node of the machine. The total number of MPI tasks
tasks used by LAMMPS (one or multiple per compute node) is set in the used by LAMMPS (one or multiple per compute node) is set in the usual
usual manner via the mpirun or mpiexec commands, and is independent of manner via the ``mpirun`` or ``mpiexec`` commands, and is independent of
Kokkos. E.g. the mpirun command in OpenMPI does this via its -np and Kokkos. E.g. the mpirun command in OpenMPI does this via its ``-np`` and
-npernode switches. Ditto for MPICH via -np and -ppn. ``-npernode`` switches. Ditto for MPICH via ``-np`` and ``-ppn``.
Running on a multi-core CPU Running on a multi-core CPU
^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -310,7 +310,8 @@ Alternatively the effect of the "-sf" or "-pk" switches can be
duplicated by adding the :doc:`package kokkos <package>` or :doc:`suffix kk <suffix>` commands to your input script. duplicated by adding the :doc:`package kokkos <package>` or :doc:`suffix kk <suffix>` commands to your input script.
The discussion above for building LAMMPS with the KOKKOS package, the The discussion above for building LAMMPS with the KOKKOS package, the
mpirun/mpiexec command, and setting appropriate thread are the same. ``mpirun`` or ``mpiexec`` command, and setting appropriate thread
properties are the same.
You must still use the "-k on" :doc:`command-line switch <Run_options>` You must still use the "-k on" :doc:`command-line switch <Run_options>`
to enable the KOKKOS package, and specify its additional arguments for to enable the KOKKOS package, and specify its additional arguments for

View File

@ -33,8 +33,8 @@ These examples assume one or more 16-core nodes.
mpirun -np 4 lmp_omp -sf omp -pk omp 4 -in in.script # 4 MPI tasks, 4 threads/task mpirun -np 4 lmp_omp -sf omp -pk omp 4 -in in.script # 4 MPI tasks, 4 threads/task
mpirun -np 32 -ppn 4 lmp_omp -sf omp -pk omp 4 -in in.script # 8 nodes, 4 MPI tasks/node, 4 threads/task mpirun -np 32 -ppn 4 lmp_omp -sf omp -pk omp 4 -in in.script # 8 nodes, 4 MPI tasks/node, 4 threads/task
The mpirun or mpiexec command sets the total number of MPI tasks used The ``mpirun`` or ``mpiexec`` command sets the total number of MPI tasks
by LAMMPS (one or multiple per compute node) and the number of MPI used by LAMMPS (one or multiple per compute node) and the number of MPI
tasks used per node. E.g. the mpirun command in MPICH does this via tasks used per node. E.g. the mpirun command in MPICH does this via
its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode. its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode.
@ -58,8 +58,8 @@ OMP_NUM_THREADS environment variable.
Or run with the OPENMP package by editing an input script Or run with the OPENMP package by editing an input script
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""
The discussion above for the mpirun/mpiexec command, MPI tasks/node, The discussion above for the ``mpirun`` or ``mpiexec`` command, MPI
and threads/MPI task is the same. tasks/node, and threads/MPI task is the same.
Use the :doc:`suffix omp <suffix>` command, or you can explicitly add an Use the :doc:`suffix omp <suffix>` command, or you can explicitly add an
"omp" suffix to individual styles in your input script, e.g. "omp" suffix to individual styles in your input script, e.g.
@ -97,7 +97,7 @@ sub-section.
A description of the multi-threading strategy used in the OPENMP A description of the multi-threading strategy used in the OPENMP
package and some performance examples are package and some performance examples are
`presented here <http://sites.google.com/site/akohlmey/software/lammps-icms/lammps-icms-tms2011-talk.pdf?attredirects=0&d=1>`_. `presented here <https://drive.google.com/file/d/1d1gLK6Ru6aPYB50Ld2tO10Li8zgPVNB8/view?usp=sharing>`_.
Guidelines for best performance Guidelines for best performance
""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""

View File

@ -117,33 +117,15 @@ script.
with all its accelerator packages installed. Note however that the with all its accelerator packages installed. Note however that the
INTEL and KOKKOS packages require you to choose one of their INTEL and KOKKOS packages require you to choose one of their
hardware options when building for a specific platform. I.e. CPU or hardware options when building for a specific platform. I.e. CPU or
Phi option for the INTEL package. Or the OpenMP, Cuda, or Phi Phi option for the INTEL package. Or the OpenMP, CUDA, HIP, SYCL,
option for the KOKKOS package. or Phi option for the KOKKOS package. Or the OpenCL, HIP, or CUDA
option for the GPU package.
These are the exceptions. You cannot build a single executable with: These are the exceptions. You cannot build a single executable with:
* both the INTEL Phi and KOKKOS Phi options * both the INTEL Phi and KOKKOS Phi options
* the INTEL Phi or Kokkos Phi option, and the GPU package * the INTEL Phi or Kokkos Phi option, and the GPU package
See the examples/accelerate/README and make.list files for sample
Make.py commands that build LAMMPS with any or all of the accelerator
packages. As an example, here is a command that builds with all the
GPU related packages installed (GPU, KOKKOS with Cuda), including
settings to build the needed auxiliary GPU libraries for Kepler GPUs:
.. code-block:: bash
Make.py -j 16 -p omp gpu kokkos -cc nvcc wrap=mpi -gpu mode=double arch=35 -kokkos cuda arch=35 lib-all file mpi
The examples/accelerate directory also has input scripts that can be
used with all of the accelerator packages. See its README file for
details.
Likewise, the bench directory has FERMI and KEPLER and PHI
sub-directories with Make.py commands and input scripts for using all
the accelerator packages on various machines. See the README files in
those directories.
As mentioned above, the `Benchmark page <https://www.lammps.org/bench.html>`_ of the LAMMPS website gives As mentioned above, the `Benchmark page <https://www.lammps.org/bench.html>`_ of the LAMMPS website gives
performance results for the various accelerator packages for several performance results for the various accelerator packages for several
of the standard LAMMPS benchmark problems, as a function of problem of the standard LAMMPS benchmark problems, as a function of problem

View File

@ -205,6 +205,7 @@ scripts are available:
whitespace.py # detects TAB characters and trailing whitespace whitespace.py # detects TAB characters and trailing whitespace
homepage.py # detects outdated LAMMPS homepage URLs (pointing to sandia.gov instead of lammps.org) homepage.py # detects outdated LAMMPS homepage URLs (pointing to sandia.gov instead of lammps.org)
errordocs.py # detects deprecated error docs in header files errordocs.py # detects deprecated error docs in header files
versiontags.py # detects .. versionadded:: or .. versionchanged:: with pending version date
The tools need to be given the main folder of the LAMMPS distribution The tools need to be given the main folder of the LAMMPS distribution
or individual file names as argument and will by default check them or individual file names as argument and will by default check them
@ -397,7 +398,7 @@ ipp tool
------------------ ------------------
The tools/ipp directory contains a Perl script ipp which can be used The tools/ipp directory contains a Perl script ipp which can be used
to facilitate the creation of a complicated file (say, a lammps input to facilitate the creation of a complicated file (say, a LAMMPS input
script or tools/createatoms input file) using a template file. script or tools/createatoms input file) using a template file.
ipp was created and is maintained by Reese Jones (Sandia), rjones at ipp was created and is maintained by Reese Jones (Sandia), rjones at
@ -512,8 +513,8 @@ with an ``.inputrc`` file in the home directory. For application
specific customization, the LAMMPS shell uses the name "lammps-shell". specific customization, the LAMMPS shell uses the name "lammps-shell".
For more information about using and customizing an application using For more information about using and customizing an application using
readline, please see the available documentation at: readline, please see the available documentation at:
`http://www.gnu.org/s/readline/#Documentation https://www.gnu.org/software/readline/
<http://www.gnu.org/s/readline/#Documentation>`_
Additional commands Additional commands
^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^
@ -715,7 +716,7 @@ See the README.pdf file for more information.
These scripts were written by Arun Subramaniyan at Purdue Univ These scripts were written by Arun Subramaniyan at Purdue Univ
(asubrama at purdue.edu). (asubrama at purdue.edu).
.. _matlabhome: http://www.mathworks.com .. _matlabhome: https://www.mathworks.com
---------- ----------
@ -1046,7 +1047,7 @@ the binary file. This usually is a so-called little endian hardware
SWIG interface SWIG interface
-------------- --------------
The `SWIG tool <http://swig.org>`_ offers a mostly automated way to The `SWIG tool <https://swig.org>`_ offers a mostly automated way to
incorporate compiled code modules into scripting languages. It incorporate compiled code modules into scripting languages. It
processes the function prototypes in C and generates wrappers for a wide processes the function prototypes in C and generates wrappers for a wide
variety of scripting languages from it. Thus it can also be applied to variety of scripting languages from it. Thus it can also be applied to
@ -1126,7 +1127,7 @@ data passed or returned as pointers are included in the ``lammps.i``
file. So most of the functionality of the library interface should be file. So most of the functionality of the library interface should be
accessible. What works and what does not depends a bit on the accessible. What works and what does not depends a bit on the
individual language for which the wrappers are built and how well SWIG individual language for which the wrappers are built and how well SWIG
supports those. The `SWIG documentation <http://swig.org/doc.html>`_ supports those. The `SWIG documentation <https://swig.org/doc.html>`_
has very detailed instructions and recommendations. has very detailed instructions and recommendations.
Usage examples Usage examples

View File

@ -24,7 +24,7 @@ Examples
Description Description
""""""""""" """""""""""
.. versionadded:: TBD .. versionadded:: 15Sep2022
The *mesocnt* angle style uses the potential The *mesocnt* angle style uses the potential

View File

@ -91,7 +91,7 @@ quantities.
+--------------+-----------------------------------------------------+--------------------------------------+ +--------------+-----------------------------------------------------+--------------------------------------+
| *charge* | charge | atomic system with charges | | *charge* | charge | atomic system with charges |
+--------------+-----------------------------------------------------+--------------------------------------+ +--------------+-----------------------------------------------------+--------------------------------------+
| *dielectric* | dipole, area, curvature | system with surface polarization | | *dielectric* | normx normy normz area/patch ed em epsilon curv | system with surface polarization |
+--------------+-----------------------------------------------------+--------------------------------------+ +--------------+-----------------------------------------------------+--------------------------------------+
| *dipole* | charge and dipole moment | system with dipolar particles | | *dipole* | charge and dipole moment | system with dipolar particles |
+--------------+-----------------------------------------------------+--------------------------------------+ +--------------+-----------------------------------------------------+--------------------------------------+
@ -180,16 +180,21 @@ vector with the 3 diameters of the ellipsoid and a quaternion 4-vector
with its orientation. with its orientation.
For the *dielectric* style, each particle can be either a physical For the *dielectric* style, each particle can be either a physical
particle (e.g. an ion), or an interface particle representing a particle (e.g. an ion), or an interface particle representing a boundary
boundary element. For physical particles, the per-particle properties element between two regions of different dielectric constant. For
are the same as atom_style full. For interface particles, in addition interface particles, in addition to the properties associated with
to these properties, each particle also has an area, a normal unit atom_style full, each particle also should be assigned a normal unit
vector, a mean local curvature, the mean and difference of the vector (defined by normx, normy, normz), an area (area/patch), the
dielectric constants of two sides of the interface, and the local difference and mean of the dielectric constants of two sides of the
dielectric constant at the boundary element. The distinction between interface along the direction of the normal vector (ed and em), the
the physical and interface particles is only meaningful when :doc:`fix local dielectric constant at the boundary element (epsilon), and a mean
polarize <fix_polarize>` commands are applied to the interface local curvature (curv). Physical particles must be assigned these
particles. values, as well, but only their local dielectric constants will be used;
see documentation for associated :doc:`pair styles <pair_dielectric>`
and :doc:`fixes <fix_polarize>`. The distinction between the physical
and interface particles is only meaningful when :doc:`fix polarize
<fix_polarize>` commands are applied to the interface particles. This
style is part of the DIELECTRIC package.
For the *dipole* style, a point dipole is defined for each point For the *dipole* style, a point dipole is defined for each point
particle. Note that if you wish the particles to be finite-size particle. Note that if you wish the particles to be finite-size

View File

@ -138,15 +138,14 @@ the *overlay/pair* keyword. These settings require specific
restrictions. Further details can be found in the `:doc: how to restrictions. Further details can be found in the `:doc: how to
<Howto_BPM>` page on BPMs. <Howto_BPM>` page on BPMs.
If the *store/local* keyword is used, this fix will track bonds that If the *store/local* keyword is used, an internal fix will track bonds that
break during the simulation. Whenever a bond breaks, data is processed break during the simulation. Whenever a bond breaks, data is processed
and transferred to an internal fix labeled *fix_ID*. This allows the and transferred to an internal fix labeled *fix_ID*. This allows the
local data to be accessed by other LAMMPS commands. local data to be accessed by other LAMMPS commands. Following this optional
Following any optional keyword/value arguments, a list of one or more keyword, a list of one or more attributes is specified. These include the
attributes is specified. These include the IDs of the two atoms in IDs of the two atoms in the bond. The other attributes for the two atoms
the bond. The other attributes for the two atoms include the timestep include the timestep during which the bond broke and the current/initial
during which the bond broke and the current/initial center of mass center of mass position of the two atoms.
position of the two atoms.
Data is continuously accumulated over intervals of *N* Data is continuously accumulated over intervals of *N*
timesteps. At the end of each interval, all of the saved accumulated timesteps. At the end of each interval, all of the saved accumulated
@ -177,29 +176,38 @@ Restart and other info
This bond style writes the reference state of each bond to This bond style writes the reference state of each bond to
:doc:`binary restart files <restart>`. Loading a restart file will :doc:`binary restart files <restart>`. Loading a restart file will
properly resume bonds. properly resume bonds. However, the reference state is NOT
written to data files. Therefore reading a data file will not
restore bonds and will cause their reference states to be redefined.
The single() function of these pair styles returns 0.0 for the energy If the *store/local* option is used, an internal fix will calculate
of a pairwise interaction, since energy is not conserved in these a local vector or local array depending on the number of input values.
dissipative potentials. It also returns only the normal component of The length of the vector or number of rows in the array is the number
the pairwise interaction force. of recorded, broken bonds. If a single input is specified, a local
vector is produced. If two or more inputs are specified, a local array
The accumulated data is not written to restart files and should be is produced where the number of columns = the number of inputs. The
output before a restart file is written to avoid missing data. vector or array can be accessed by any command that uses local values
from a compute as input. See the :doc:`Howto output <Howto_output>` page
The internal fix calculates a local vector or local array depending on the for an overview of LAMMPS output options.
number of input values. The length of the vector or number of rows in
the array is the number of recorded, lost interactions. If a single
input is specified, a local vector is produced. If two or more inputs
are specified, a local array is produced where the number of columns =
the number of inputs. The vector or array can be accessed by any
command that uses local values from a compute as input. See the
:doc:`Howto output <Howto_output>` page for an overview of LAMMPS
output options.
The vector or array will be floating point values that correspond to The vector or array will be floating point values that correspond to
the specified attribute. the specified attribute.
The single() function of this bond style returns 0.0 for the energy
of a bonded interaction, since energy is not conserved in these
dissipative potentials. It also returns only the normal component of
the bonded interaction force. However, the single() function also
calculates 7 extra bond quantities. The first 4 are data from the
reference state of the bond including the initial distance between particles
:math:`r_0` followed by the :math:`x`, :math:`y`, and :math:`z` components
of the initial unit vector pointing to particle I from particle J. The next 3
quantities (5-7) are the :math:`x`, :math:`y`, and :math:`z` components
of the total force, including normal and tangential contributions, acting
on particle I.
These extra quantities can be accessed by the :doc:`compute bond/local <compute_bond_local>`
command, as *b1*, *b2*, ..., *b7*\ .
Restrictions Restrictions
"""""""""""" """"""""""""

View File

@ -103,15 +103,14 @@ the *overlay/pair* keyword. These settings require specific
restrictions. Further details can be found in the `:doc: how to restrictions. Further details can be found in the `:doc: how to
<Howto_BPM>` page on BPMs. <Howto_BPM>` page on BPMs.
If the *store/local* keyword is used, this fix will track bonds that If the *store/local* keyword is used, an internal fix will track bonds that
break during the simulation. Whenever a bond breaks, data is processed break during the simulation. Whenever a bond breaks, data is processed
and transferred to an internal fix labeled *fix_ID*. This allows the and transferred to an internal fix labeled *fix_ID*. This allows the
local data to be accessed by other LAMMPS commands. local data to be accessed by other LAMMPS commands. Following this optional
Following any optional keyword/value arguments, a list of one or more keyword, a list of one or more attributes is specified. These include the
attributes is specified. These include the IDs of the two atoms in IDs of the two atoms in the bond. The other attributes for the two atoms
the bond. The other attributes for the two atoms include the timestep include the timestep during which the bond broke and the current/initial
during which the bond broke and the current/initial center of mass center of mass position of the two atoms.
position of the two atoms.
Data is continuously accumulated over intervals of *N* Data is continuously accumulated over intervals of *N*
timesteps. At the end of each interval, all of the saved accumulated timesteps. At the end of each interval, all of the saved accumulated
@ -141,28 +140,30 @@ Restart and other info
This bond style writes the reference state of each bond to This bond style writes the reference state of each bond to
:doc:`binary restart files <restart>`. Loading a restart :doc:`binary restart files <restart>`. Loading a restart
file will properly resume bonds. file will properly restore bonds. However, the reference state is NOT
written to data files. Therefore reading a data file will not
restore bonds and will cause their reference states to be redefined.
The single() function of these pair styles returns 0.0 for the energy If the *store/local* option is used, an internal fix will calculate
of a pairwise interaction, since energy is not conserved in these a local vector or local array depending on the number of input values.
dissipative potentials. The length of the vector or number of rows in the array is the number
of recorded, broken bonds. If a single input is specified, a local
The accumulated data is not written to restart files and should be vector is produced. If two or more inputs are specified, a local array
output before a restart file is written to avoid missing data. is produced where the number of columns = the number of inputs. The
vector or array can be accessed by any command that uses local values
The internal fix calculates a local vector or local array depending on the from a compute as input. See the :doc:`Howto output <Howto_output>` page
number of input values. The length of the vector or number of rows in for an overview of LAMMPS output options.
the array is the number of recorded, lost interactions. If a single
input is specified, a local vector is produced. If two or more inputs
are specified, a local array is produced where the number of columns =
the number of inputs. The vector or array can be accessed by any
command that uses local values from a compute as input. See the
:doc:`Howto output <Howto_output>` page for an overview of LAMMPS
output options.
The vector or array will be floating point values that correspond to The vector or array will be floating point values that correspond to
the specified attribute. the specified attribute.
The single() function of this bond style returns 0.0 for the energy
of a bonded interaction, since energy is not conserved in these
dissipative potentials. The single() function also calculates an
extra bond quantity, the initial distance :math:`r_0`. This
extra quantity can be accessed by the
:doc:`compute bond/local <compute_bond_local>` command as *b1*\ .
Restrictions Restrictions
"""""""""""" """"""""""""

View File

@ -22,7 +22,7 @@ Examples
Description Description
""""""""""" """""""""""
.. versionadded:: TBD .. versionadded:: 15Sep2022
The *mesocnt* bond style is a wrapper for the :doc:`harmonic The *mesocnt* bond style is a wrapper for the :doc:`harmonic
<bond_harmonic>` style, and uses the potential <bond_harmonic>` style, and uses the potential

View File

@ -26,14 +26,14 @@ as defined in :ref:`(Allinger) <mm3-allinger1989>`
.. math:: .. math::
E = K (r - r_0)^2 \left[ 1 - 2.55(r-r_0) + (7/12) 2.55^2(r-r_0)^2 \right] E = K (r - r_0)^2 \left[ 1 - 2.55(r-r_0) + \frac{7}{12} 2.55^2(r-r_0)^2 \right]
where :math:`r_0` is the equilibrium value of the bond, and :math:`K` is a where :math:`r_0` is the equilibrium value of the bond, and :math:`K` is a
prefactor. The anharmonic prefactors have units angstrom\^(-n): prefactor. The anharmonic prefactors have units :math:`\AA^{-n}`:
-2.55 angstrom\^(-1) and (7/12)2.55\^2 angstrom\^(-2). The code takes :math:`-2.55 \AA^{-1}` and :math:`\frac{7}{12} 2.55^2 \AA^{-2}`. The code takes
care of the necessary unit conversion for these factors internally. care of the necessary unit conversion for these factors internally.
Note that the MM3 papers contains an error in Eq (1): Note that the MM3 papers contain an error in Eq (1):
(7/12)2.55 should be replaced with (7/12)2.55\^2 :math:`\frac{7}{12} 2.55` should be replaced with :math:`\frac{7}{12} 2.55^2`
The following coefficients must be defined for each bond type via the The following coefficients must be defined for each bond type via the
:doc:`bond_coeff <bond_coeff>` command as in the example above, or in :doc:`bond_coeff <bond_coeff>` command as in the example above, or in

View File

@ -28,11 +28,18 @@ The *quartic* bond style uses the potential
.. math:: .. math::
E = K (r - R_c)^ 2 (r - R_c - B_1) (r - R_c - B_2) + U_0 + 4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} - \left(\frac{\sigma}{r}\right)^6 \right] + \epsilon E & = E_q + E_{LJ} \\
E_q & = K (r - R_c)^ 2 (r - R_c - B_1) (r - R_c - B_2) + U_0 \\
E_{LJ} & = \left\{ \begin{array} {l@{\quad:\quad}l}
4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} - \left(\frac{\sigma}{r}\right)^6 \right] + \epsilon & r < 2^{\frac{1}{6}}, \epsilon = 1, \sigma = 1 \\
0 & r >= 2^{\frac{1}{6}}
\end{array} \right.
to define a bond that can be broken as the simulation proceeds (e.g. to define a bond that can be broken as the simulation proceeds (e.g.
due to a polymer being stretched). The :math:`\sigma` and :math:`\epsilon` used in the due to a polymer being stretched). The :math:`\sigma` and
LJ portion of the formula are both set equal to 1.0 by LAMMPS. :math:`\epsilon` used in the LJ portion of the formula are both set
equal to 1.0 by LAMMPS and the LJ portion is cut off at its minimum,
i.e. at :math:`r_c = 2^{\frac{1}{6}}`.
The following coefficients must be defined for each bond type via the The following coefficients must be defined for each bond type via the
:doc:`bond_coeff <bond_coeff>` command as in the example above, or in :doc:`bond_coeff <bond_coeff>` command as in the example above, or in
@ -46,9 +53,9 @@ or :doc:`read_restart <read_restart>` commands:
* :math:`U_0` (energy) * :math:`U_0` (energy)
This potential was constructed to mimic the FENE bond potential for This potential was constructed to mimic the FENE bond potential for
coarse-grained polymer chains. When monomers with :math:`\sigma = \epsilon = 1.0` coarse-grained polymer chains. When monomers with :math:`\sigma =
are used, the following choice of parameters gives a quartic potential that \epsilon = 1.0` are used, the following choice of parameters gives a
looks nearly like the FENE potential: quartic potential that looks nearly like the FENE potential:
.. math:: .. math::

View File

@ -78,7 +78,7 @@ These values can be accessed by any command that uses global array
values from a compute as input. See the :doc:`Howto output <Howto_output>` page for an overview of LAMMPS output values from a compute as input. See the :doc:`Howto output <Howto_output>` page for an overview of LAMMPS output
options. options.
The array values are "intensive." The array values will be in The array values are "intensive". The array values will be in
mass-velocity-distance :doc:`units <units>`. mass-velocity-distance :doc:`units <units>`.
Restrictions Restrictions

View File

@ -35,6 +35,8 @@ Examples
Description Description
""""""""""" """""""""""
.. versionadded:: 7Jan2022
Define a computation that calculates the local mass density and Define a computation that calculates the local mass density and
temperature for each atom based on its neighbors inside a spherical temperature for each atom based on its neighbors inside a spherical
cutoff. If an atom has :math:`M` neighbors, then its local mass density is cutoff. If an atom has :math:`M` neighbors, then its local mass density is

View File

@ -13,7 +13,7 @@ Syntax
* ID, group-ID are documented in :doc:`compute <compute>` command * ID, group-ID are documented in :doc:`compute <compute>` command
* bond/local = style name of this compute command * bond/local = style name of this compute command
* one or more values may be appended * one or more values may be appended
* value = *dist* or *dx* or *dy* or *dz* or *engpot* or *force* or *fx* or *fy* or *fz* or *engvib* or *engrot* or *engtrans* or *omega* or *velvib* or *v_name* * value = *dist* or *dx* or *dy* or *dz* or *engpot* or *force* or *fx* or *fy* or *fz* or *engvib* or *engrot* or *engtrans* or *omega* or *velvib* or *v_name* or *bN*
.. parsed-literal:: .. parsed-literal::
@ -29,6 +29,7 @@ Syntax
*omega* = magnitude of bond angular velocity *omega* = magnitude of bond angular velocity
*velvib* = vibrational velocity along the bond length *velvib* = vibrational velocity along the bond length
*v_name* = equal-style variable with name (see below) *v_name* = equal-style variable with name (see below)
*bN* = bond style specific quantities for allowed N values
* zero or more keyword/args pairs may be appended * zero or more keyword/args pairs may be appended
* keyword = *set* * keyword = *set*
@ -47,7 +48,7 @@ Examples
compute 1 all bond/local engpot compute 1 all bond/local engpot
compute 1 all bond/local dist engpot force compute 1 all bond/local dist engpot force
compute 1 all bond/local dist fx fy fz compute 1 all bond/local dist fx fy fz b1 b2
compute 1 all bond/local dist v_distsq set dist d compute 1 all bond/local dist v_distsq set dist d
@ -147,6 +148,19 @@ those quantities via the :doc:`compute reduce <compute_reduce>` command
with thermo output, and the :doc:`fix ave/histo <fix_ave_histo>` with thermo output, and the :doc:`fix ave/histo <fix_ave_histo>`
command will histogram the length\ :math:`^2` values and write them to a file. command will histogram the length\ :math:`^2` values and write them to a file.
A bond style may define additional bond quantities which can be
accessed as *b1* to *bN*, where N is defined by the bond style. Most
bond styles do not define any additional quantities, so N = 0. An
example of ones that do are the :doc:`BPM bond styles <Howto_bpm>`
which store the reference state between two particles. See
individual bond styles for details.
When using *bN* with bond style *hybrid*, the output will be the Nth
quantity from the sub-style that computes the bonded interaction
(based on bond type). If that sub-style does not define a *bN*,
the output will be 0.0. The maximum allowed N is the maximum number
of quantities provided by any sub-style.
---------- ----------
The local data stored by this command is generated by looping over all The local data stored by this command is generated by looping over all

View File

@ -182,7 +182,7 @@ by any command that uses global values from a compute as input. See
the :doc:`Howto output <Howto_output>` doc page for an overview of the :doc:`Howto output <Howto_output>` doc page for an overview of
LAMMPS output options. LAMMPS output options.
The array values calculated by this compute are all "extensive." The array values calculated by this compute are all "extensive".
Restrictions Restrictions
"""""""""""" """"""""""""

View File

@ -602,8 +602,7 @@ be used. For non-orthogonal (triclinic) simulation boxes, only the
*reduced* option may be used. *reduced* option may be used.
A *box* value selects standard distance units as defined by the A *box* value selects standard distance units as defined by the
:doc:`units <units>` command (e.g., :math:`\mathrm{\mathring A}` :doc:`units <units>` command (e.g., :math:`\AA` for units = *real* or *metal*).
for units = *real* or *metal*).
A *lattice* value means the distance units are in lattice spacings. A *lattice* value means the distance units are in lattice spacings.
The :doc:`lattice <lattice>` command must have been previously used to The :doc:`lattice <lattice>` command must have been previously used to
define the lattice spacing. A *reduced* value means normalized define the lattice spacing. A *reduced* value means normalized

View File

@ -49,7 +49,7 @@ accessed by indices 1--3 by any command that uses global vector values
from a compute as input. See the :doc:`Howto output <Howto_output>` doc from a compute as input. See the :doc:`Howto output <Howto_output>` doc
page for an overview of LAMMPS output options. page for an overview of LAMMPS output options.
The vector values are "intensive." The vector values will be in The vector values are "intensive". The vector values will be in
distance :doc:`units <units>`. distance :doc:`units <units>`.
Restrictions Restrictions

View File

@ -77,7 +77,7 @@ values can be accessed by any command that uses global array values
from a compute as input. See the :doc:`Howto output <Howto_output>` doc from a compute as input. See the :doc:`Howto output <Howto_output>` doc
page for an overview of LAMMPS output options. page for an overview of LAMMPS output options.
The array values are "intensive." The array values will be in The array values are "intensive". The array values will be in
distance :doc:`units <units>`. distance :doc:`units <units>`.
Restrictions Restrictions

View File

@ -24,16 +24,17 @@ Description
""""""""""" """""""""""
Define a computation that calculates the per-atom damage for each atom Define a computation that calculates the per-atom damage for each atom
in a group. This is a quantity relevant for :doc:`Peridynamics models <pair_peri>`. See `this document <PDF/PDLammps_overview.pdf>`_ in a group. This is a quantity relevant for :doc:`Peridynamics models
for an overview of LAMMPS commands for Peridynamics modeling. <pair_peri>`. See `this document <PDF/PDLammps_overview.pdf>`_ for an
overview of LAMMPS commands for Peridynamics modeling.
The "damage" of a Peridynamics particles is based on the bond breakage The "damage" of a Peridynamics particles is based on the bond breakage
between the particle and its neighbors. If all the bonds are broken between the particle and its neighbors. If all the bonds are broken
the particle is considered to be fully damaged. the particle is considered to be fully damaged.
See the `PDLAMMPS user guide <http://www.sandia.gov/~mlparks/papers/PDLAMMPS.pdf>`_ for a formal See the :doc:`Peridynamics Howto <Howto_peri>` for a formal definition
definition of "damage" and more details about Peridynamics as it is of "damage" and more details about Peridynamics as it is implemented in
implemented in LAMMPS. LAMMPS.
This command can be used with all the Peridynamic pair styles. This command can be used with all the Peridynamic pair styles.
@ -53,8 +54,9 @@ The per-atom vector values are unitless numbers (damage) :math:`\ge 0.0`.
Restrictions Restrictions
"""""""""""" """"""""""""
This compute is part of the PERI package. It is only enabled if This compute is part of the PERI package. It is only enabled if LAMMPS
LAMMPS was built with that package. See the :doc:`Build package <Build_package>` page for more info. was built with that package. See the :doc:`Build package
<Build_package>` page for more info.
Related commands Related commands
"""""""""""""""" """"""""""""""""

View File

@ -24,7 +24,8 @@ Description
""""""""""" """""""""""
Define a computation that calculates the per-atom dilatation for each Define a computation that calculates the per-atom dilatation for each
atom in a group. This is a quantity relevant for :doc:`Peridynamics models <pair_peri>`. See `this document <PDF/PDLammps_overview.pdf>`_ atom in a group. This is a quantity relevant for :doc:`Peridynamics
models <pair_peri>`. See `this document <PDF/PDLammps_overview.pdf>`_
for an overview of LAMMPS commands for Peridynamics modeling. for an overview of LAMMPS commands for Peridynamics modeling.
For small deformation, dilatation of is the measure of the volumetric For small deformation, dilatation of is the measure of the volumetric
@ -32,13 +33,14 @@ strain.
The dilatation :math:`\theta` for each peridynamic particle :math:`i` is The dilatation :math:`\theta` for each peridynamic particle :math:`i` is
calculated as a sum over its neighbors with unbroken bonds, where the calculated as a sum over its neighbors with unbroken bonds, where the
contribution of the :math:`ij` pair is a function of the change in bond length contribution of the :math:`ij` pair is a function of the change in bond
(versus the initial length in the reference state), the volume length (versus the initial length in the reference state), the volume
fraction of the particles and an influence function. See the fraction of the particles and an influence function. See the
`PDLAMMPS user guide <http://www.sandia.gov/~mlparks/papers/PDLAMMPS.pdf>`_ for :doc:`Peridynamics Howto <Howto_peri>` for a formal definition of
a formal definition of dilatation. dilatation.
This command can only be used with a subset of the Peridynamic :doc:`pair styles <pair_peri>`: peri/lps, peri/ves and peri/eps. This command can only be used with a subset of the Peridynamic
:doc:`pair styles <pair_peri>`: *peri/lps*, *peri/ves*, and *peri/eps*.
The dilatation value will be 0.0 for atoms not in the specified The dilatation value will be 0.0 for atoms not in the specified
compute group. compute group.
@ -56,9 +58,9 @@ The per-atom vector values are unitless numbers :math:`(\theta \ge 0.0)`.
Restrictions Restrictions
"""""""""""" """"""""""""
This compute is part of the PERI package. It is only enabled if This compute is part of the PERI package. It is only enabled if LAMMPS
LAMMPS was built with that package. See the was built with that package. See the :doc:`Build package
:doc:`Build package <Build_package>` page for more info. <Build_package>` page for more info.
Related commands Related commands
"""""""""""""""" """"""""""""""""

View File

@ -54,7 +54,7 @@ the computed dipole moment and a global vector of length 3 with the
dipole vector. See the :doc:`Howto output <Howto_output>` page for dipole vector. See the :doc:`Howto output <Howto_output>` page for
an overview of LAMMPS output options. an overview of LAMMPS output options.
The computed values are "intensive." The array values will be in The computed values are "intensive". The array values will be in
dipole units (i.e., charge :doc:`units <units>` times distance dipole units (i.e., charge :doc:`units <units>` times distance
:doc:`units <units>`). :doc:`units <units>`).

View File

@ -86,7 +86,7 @@ chunk. These values can be accessed by any command that uses global
array values from a compute as input. See the :doc:`Howto output array values from a compute as input. See the :doc:`Howto output
<Howto_output>` page for an overview of LAMMPS output options. <Howto_output>` page for an overview of LAMMPS output options.
The array values are "intensive." The array values will be in The array values are "intensive". The array values will be in
dipole units (i.e., charge :doc:`units <units>` times distance dipole units (i.e., charge :doc:`units <units>` times distance
:doc:`units <units>`). :doc:`units <units>`).

View File

@ -95,7 +95,7 @@ something like the following commands:
refresh c_dsp delay 100 refresh c_dsp delay 100
The :doc:`dump_modify thresh <dump_modify>` command will only output The :doc:`dump_modify thresh <dump_modify>` command will only output
atoms that have displaced more than :math:`0.6~\mathrm{\mathring A}` on each atoms that have displaced more than :math:`0.6~\AA` on each
snapshot (assuming metal units). The dump_modify *refresh* option triggers a snapshot (assuming metal units). The dump_modify *refresh* option triggers a
call to this compute at the end of every dump. call to this compute at the end of every dump.

View File

@ -97,13 +97,13 @@ by the corresponding volume. This option can be useful when dealing with
inhomogeneous systems such as those that have surfaces. inhomogeneous systems such as those that have surfaces.
Here are typical input parameters for fcc aluminum (lattice Here are typical input parameters for fcc aluminum (lattice
constant :math:`4.05~\mathrm{\mathring A}`), constant :math:`4.05~\AA`),
.. parsed-literal:: .. parsed-literal::
compute 1 all entropy/atom 0.25 5.7 avg yes 3.7 compute 1 all entropy/atom 0.25 5.7 avg yes 3.7
and for bcc sodium (lattice constant 4.23 Angstroms), and for bcc sodium (lattice constant :math:`4.23~\AA`),
.. parsed-literal:: .. parsed-literal::

View File

@ -48,7 +48,7 @@ used by any command that uses a global scalar value from a compute as
input. See the :doc:`Howto output <Howto_output>` page for an input. See the :doc:`Howto output <Howto_output>` page for an
overview of LAMMPS output options. overview of LAMMPS output options.
The scalar value calculated by this compute is "extensive." The The scalar value calculated by this compute is "extensive". The
scalar value will be in energy :doc:`units <units>`. scalar value will be in energy :doc:`units <units>`.
Restrictions Restrictions

View File

@ -48,7 +48,7 @@ of all the rigid bodies). This value can be used by any command that
uses a global scalar value from a compute as input. See the :doc:`Howto output <Howto_output>` page for an overview of LAMMPS output uses a global scalar value from a compute as input. See the :doc:`Howto output <Howto_output>` page for an overview of LAMMPS output
options. options.
The scalar value calculated by this compute is "extensive." The The scalar value calculated by this compute is "extensive". The
scalar value will be in energy :doc:`units <units>`. scalar value will be in energy :doc:`units <units>`.
Restrictions Restrictions

View File

@ -44,7 +44,7 @@ used by any command that uses a global scalar value from a compute as
input. See the :doc:`Howto output <Howto_output>` page for an input. See the :doc:`Howto output <Howto_output>` page for an
overview of LAMMPS output options. overview of LAMMPS output options.
The scalar value calculated by this compute is "extensive." The The scalar value calculated by this compute is "extensive". The
scalar value will be in energy :doc:`units <units>`. scalar value will be in energy :doc:`units <units>`.
Restrictions Restrictions

View File

@ -40,7 +40,7 @@ further than the threshold distance.
If the system is undergoing significant center-of-mass motion, If the system is undergoing significant center-of-mass motion,
due to thermal motion, an external force, or an initial net momentum, due to thermal motion, an external force, or an initial net momentum,
then this compute will not be able to distinguish that motion from then this compute will not be able to distinguish that motion from
local atom displacements and may generate "false positives." local atom displacements and may generate "false positives".
Output info Output info
""""""""""" """""""""""
@ -50,7 +50,7 @@ used by any command that uses a global scalar value from a compute as
input. See the :doc:`Howto output <Howto_output>` page for an input. See the :doc:`Howto output <Howto_output>` page for an
overview of LAMMPS output options. overview of LAMMPS output options.
The scalar value calculated by this compute is "intensive." The The scalar value calculated by this compute is "intensive". The
scalar value will be a 0 or 1 as explained above. scalar value will be a 0 or 1 as explained above.
Restrictions Restrictions

View File

@ -299,7 +299,7 @@ These output results can be used by any command that uses a global
scalar or vector from a compute as input. See the :doc:`Howto output <Howto_output>` page for an overview of LAMMPS output scalar or vector from a compute as input. See the :doc:`Howto output <Howto_output>` page for an overview of LAMMPS output
options. For example, the computed values can be averaged using :doc:`fix ave/time <fix_ave_time>`. options. For example, the computed values can be averaged using :doc:`fix ave/time <fix_ave_time>`.
The values calculated by this compute are "extensive." The values calculated by this compute are "extensive".
Restrictions Restrictions
"""""""""""" """"""""""""

View File

@ -34,6 +34,8 @@ Examples
Description Description
""""""""""" """""""""""
.. versionadded:: 4May2022
Define a computation that calculates the change in the free energy due Define a computation that calculates the change in the free energy due
to a test-area (TA) perturbation :ref:`(Gloor) <Gloor>`. The test-area to a test-area (TA) perturbation :ref:`(Gloor) <Gloor>`. The test-area
approach can be used to determine the interfacial tension of the system approach can be used to determine the interfacial tension of the system

View File

@ -140,7 +140,7 @@ vector values from a compute as input. See the
options. options.
Both the scalar and vector values calculated by this compute are Both the scalar and vector values calculated by this compute are
"extensive." The scalar value will be in energy :doc:`units <units>`. "extensive". The scalar value will be in energy :doc:`units <units>`.
The vector values will be in force :doc:`units <units>`. The vector values will be in force :doc:`units <units>`.
Restrictions Restrictions

View File

@ -69,7 +69,7 @@ vector values from a compute as input. See the :doc:`Howto output <Howto_output
options. options.
The scalar and vector values calculated by this compute are The scalar and vector values calculated by this compute are
"intensive." The scalar and vector values will be in distance and "intensive". The scalar and vector values will be in distance and
distance\ :math:`^2` :doc:`units <units>`, respectively. distance\ :math:`^2` :doc:`units <units>`, respectively.
Restrictions Restrictions

View File

@ -78,7 +78,7 @@ vector values from a compute as input. See the
options. options.
The vector values calculated by this compute are The vector values calculated by this compute are
"intensive." The first five vector values will be in "intensive". The first five vector values will be in
distance\ :math:`2` :doc:`units <units>` while the sixth one is dimensionless. distance\ :math:`2` :doc:`units <units>` while the sixth one is dimensionless.
Restrictions Restrictions

View File

@ -80,7 +80,7 @@ See the :doc:`Howto output <Howto_output>` page for an overview of LAMMPS
output options. output options.
The array calculated by this compute is The array calculated by this compute is
"intensive." The first five columns will be in "intensive". The first five columns will be in
distance\ :math:`^2` :doc:`units <units>` while the sixth one is dimensionless. distance\ :math:`^2` :doc:`units <units>` while the sixth one is dimensionless.
Restrictions Restrictions

View File

@ -142,14 +142,14 @@ command that uses global vector values from a compute as input.
See the :doc:`Howto output <Howto_output>` documentation for an overview of See the :doc:`Howto output <Howto_output>` documentation for an overview of
LAMMPS output options. LAMMPS output options.
The vector values calculated by this compute are "extensive," meaning The vector values calculated by this compute are "extensive", meaning
they scale with the number of atoms in the simulation. They can be they scale with the number of atoms in the simulation. They can be
divided by the appropriate volume to get a flux, which would then be divided by the appropriate volume to get a flux, which would then be an
an "intensive" value, meaning independent of the number of atoms in "intensive" value, meaning independent of the number of atoms in the
the simulation. Note that if the compute is "all," then the simulation. Note that if the compute group is "all", then the
appropriate volume to divide by is the simulation box volume. appropriate volume to divide by is the simulation box volume. However,
However, if a sub-group is used, it should be the volume containing if a group with a subset of atoms is used, it should be the volume
those atoms. containing those atoms.
The vector values will be in energy\*velocity :doc:`units <units>`. Once The vector values will be in energy\*velocity :doc:`units <units>`. Once
divided by a volume the units will be that of flux, namely divided by a volume the units will be that of flux, namely

View File

@ -172,7 +172,7 @@ requested as arguments to the command (the potential energy, pressure and/or hea
capacity). The elements of the vector can be accessed by indices 1--n by any capacity). The elements of the vector can be accessed by indices 1--n by any
command that uses global vector values as input. See the :doc:`Howto output <Howto_output>` page for an overview of LAMMPS output options. command that uses global vector values as input. See the :doc:`Howto output <Howto_output>` page for an overview of LAMMPS output options.
The vector values calculated by this compute are "extensive." The The vector values calculated by this compute are "extensive". The
scalar value will be in energy :doc:`units <units>`. scalar value will be in energy :doc:`units <units>`.
Restrictions Restrictions

View File

@ -84,7 +84,7 @@ by any command that uses global array values from a compute as input. See the
:doc:`Howto output <Howto_output>` page for an overview of LAMMPS output :doc:`Howto output <Howto_output>` page for an overview of LAMMPS output
options. options.
The array values are "intensive." The array values will be in The array values are "intensive". The array values will be in
mass\*distance\ :math:`^2` :doc:`units <units>`. mass\*distance\ :math:`^2` :doc:`units <units>`.
Restrictions Restrictions

View File

@ -52,7 +52,7 @@ can be used by any command that uses a global scalar value from a
compute as input. See the :doc:`Howto output <Howto_output>` doc page compute as input. See the :doc:`Howto output <Howto_output>` doc page
for an overview of LAMMPS output options. for an overview of LAMMPS output options.
The scalar value calculated by this compute is "extensive." The The scalar value calculated by this compute is "extensive". The
scalar value will be in energy :doc:`units <units>`. scalar value will be in energy :doc:`units <units>`.
Restrictions Restrictions

View File

@ -48,7 +48,7 @@ global scalar value from a compute as input. See the
:doc:`Howto output <Howto_output>` page for an overview of LAMMPS output :doc:`Howto output <Howto_output>` page for an overview of LAMMPS output
options. options.
The scalar value calculated by this compute is "extensive." The The scalar value calculated by this compute is "extensive". The
scalar value will be in energy :doc:`units <units>`. scalar value will be in energy :doc:`units <units>`.
Restrictions Restrictions

View File

@ -37,7 +37,7 @@ length 3. This value can be used by any command that uses a global
vector value from a compute as input. See the :doc:`Howto output <Howto_output>` page for an overview of LAMMPS output vector value from a compute as input. See the :doc:`Howto output <Howto_output>` page for an overview of LAMMPS output
options. options.
The vector value calculated by this compute is "extensive." The vector The vector value calculated by this compute is "extensive". The vector
value will be in mass\*velocity :doc:`units <units>`. value will be in mass\*velocity :doc:`units <units>`.
Restrictions Restrictions

View File

@ -105,7 +105,7 @@ accessed by indices 1--4 by any command that uses global vector values
from a compute as input. See the :doc:`Howto output <Howto_output>` doc from a compute as input. See the :doc:`Howto output <Howto_output>` doc
page for an overview of LAMMPS output options. page for an overview of LAMMPS output options.
The vector values are "intensive." The vector values will be in The vector values are "intensive". The vector values will be in
distance\ :math:`^2` :doc:`units <units>`. distance\ :math:`^2` :doc:`units <units>`.
Restrictions Restrictions

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