fixing merge conflicts, update to master

This commit is contained in:
jtclemm
2021-06-02 12:33:37 -06:00
3621 changed files with 43240 additions and 26993 deletions

1
.gitattributes vendored
View File

@ -2,3 +2,4 @@
.gitignore export-ignore .gitignore export-ignore
.github export-ignore .github export-ignore
.lgtm.yml export-ignore .lgtm.yml export-ignore
SECURITY.md export-ignore

16
.github/CODEOWNERS vendored
View File

@ -13,29 +13,37 @@ lib/kim/* @ellio167
lib/mesont/* @iafoss lib/mesont/* @iafoss
# whole packages # whole packages
src/COMPRESS/* @akohlmey src/COMPRESS/* @rbberger
src/GPU/* @ndtrung81 src/GPU/* @ndtrung81
src/KOKKOS/* @stanmoore1 src/KOKKOS/* @stanmoore1
src/KIM/* @ellio167 src/KIM/* @ellio167
src/LATTE/* @cnegre src/LATTE/* @cnegre
src/MESSAGE/* @sjplimp src/MESSAGE/* @sjplimp
src/MLIAP/* @athomps
src/SNAP/* @athomps
src/SPIN/* @julient31 src/SPIN/* @julient31
src/USER-BROWNIAN/* @samueljmcameron
src/USER-CGDNA/* @ohenrich src/USER-CGDNA/* @ohenrich
src/USER-CGSDK/* @akohlmey src/USER-CGSDK/* @akohlmey
src/USER-COLVARS/* @giacomofiorin src/USER-COLVARS/* @giacomofiorin
src/USER-FEP/* @agiliopadua
src/USER-HDNNP/* @singraber
src/USER-INTEL/* @wmbrownintel src/USER-INTEL/* @wmbrownintel
src/USER-MANIFOLD/* @Pakketeretet2 src/USER-MANIFOLD/* @Pakketeretet2
src/USER-MDI/* @taylor-a-barnes
src/USER-MEAMC/* @martok src/USER-MEAMC/* @martok
src/USER-MESONT/* @iafoss src/USER-MESONT/* @iafoss
src/USER-MOFFF/* @hheenen src/USER-MOFFF/* @hheenen
src/USER-MOLFILE/* @akohlmey src/USER-MOLFILE/* @akohlmey
src/USER-NETCDF/* @pastewka src/USER-NETCDF/* @pastewka
src/USER-PACE/* @yury-lysogorskiy
src/USER-PLUMED/* @gtribello src/USER-PLUMED/* @gtribello
src/USER-PHONON/* @lingtikong src/USER-PHONON/* @lingtikong
src/USER-PTM/* @pmla src/USER-PTM/* @pmla
src/USER-OMP/* @akohlmey src/USER-OMP/* @akohlmey
src/USER-QMMM/* @akohlmey src/USER-QMMM/* @akohlmey
src/USER-REAXC/* @hasanmetin src/USER-REAXC/* @hasanmetin
src/USER-REACTION/* @jrgissing
src/USER-SCAFACOS/* @rhalver src/USER-SCAFACOS/* @rhalver
src/USER-TALLY/* @akohlmey src/USER-TALLY/* @akohlmey
src/USER-UEF/* @danicholson src/USER-UEF/* @danicholson
@ -47,7 +55,6 @@ src/GPU/pair_vashishta_gpu.* @andeplane
src/KOKKOS/pair_vashishta_kokkos.* @andeplane src/KOKKOS/pair_vashishta_kokkos.* @andeplane
src/MANYBODY/pair_vashishta_table.* @andeplane src/MANYBODY/pair_vashishta_table.* @andeplane
src/MANYBODY/pair_atm.* @sergeylishchuk src/MANYBODY/pair_atm.* @sergeylishchuk
src/USER-REACTION/fix_bond_react.* @jrgissing
src/USER-MISC/*_grem.* @dstelter92 src/USER-MISC/*_grem.* @dstelter92
src/USER-MISC/compute_stress_mop*.* @RomainVermorel src/USER-MISC/compute_stress_mop*.* @RomainVermorel
@ -122,6 +129,8 @@ tools/emacs/* @HaoZeke
tools/singularity/* @akohlmey @rbberger tools/singularity/* @akohlmey @rbberger
tools/code_standard/* @rbberger tools/code_standard/* @rbberger
tools/valgrind/* @akohlmey tools/valgrind/* @akohlmey
tools/swig/* @akohlmey
tools/offline/* @rbberger
# tests # tests
unittest/* @akohlmey @rbberger unittest/* @akohlmey @rbberger
@ -130,7 +139,7 @@ unittest/* @akohlmey @rbberger
cmake/* @junghans @rbberger cmake/* @junghans @rbberger
cmake/Modules/Packages/USER-COLVARS.cmake @junghans @rbberger @giacomofiorin cmake/Modules/Packages/USER-COLVARS.cmake @junghans @rbberger @giacomofiorin
cmake/Modules/Packages/KIM.cmake @junghans @rbberger @ellio167 cmake/Modules/Packages/KIM.cmake @junghans @rbberger @ellio167
cmake/presets/*.cmake @junghans @rbberger @akohlmey cmake/presets/*.cmake @akohlmey
# python # python
python/* @rbberger python/* @rbberger
@ -142,6 +151,7 @@ fortran/* @akohlmey
doc/utils/*/* @rbberger doc/utils/*/* @rbberger
doc/Makefile @rbberger doc/Makefile @rbberger
doc/README @rbberger doc/README @rbberger
examples/plugin/* @akohlmey
# for releases # for releases
src/version.h @sjplimp src/version.h @sjplimp

20
README
View File

@ -14,10 +14,10 @@ LAMMPS is a classical molecular dynamics simulation code designed to
run efficiently on parallel computers. It was developed at Sandia run efficiently on parallel computers. It was developed at Sandia
National Laboratories, a US Department of Energy facility, with National Laboratories, a US Department of Energy facility, with
funding from the DOE. It is an open-source code, distributed freely funding from the DOE. It is an open-source code, distributed freely
under the terms of the GNU Public License (GPL). under the terms of the GNU Public License (GPL) version 2.
The primary author of the code is Steve Plimpton, who can be emailed The primary author of the code is Steve Plimpton, who can be emailed
at sjplimp@sandia.gov. The LAMMPS WWW Site at lammps.sandia.gov has at sjplimp@sandia.gov. The LAMMPS WWW Site at www.lammps.org has
more information about the code and its uses. more information about the code and its uses.
The LAMMPS distribution includes the following files and directories: The LAMMPS distribution includes the following files and directories:
@ -37,14 +37,14 @@ tools pre- and post-processing tools
Point your browser at any of these files to get started: Point your browser at any of these files to get started:
https://lammps.sandia.gov/doc/Manual.html LAMMPS manual https://docs.lammps.org/Manual.html LAMMPS manual
https://lammps.sandia.gov/doc/Intro.html hi-level introduction https://docs.lammps.org/Intro.html hi-level introduction
https://lammps.sandia.gov/doc/Build.html how to build LAMMPS https://docs.lammps.org/Build.html how to build LAMMPS
https://lammps.sandia.gov/doc/Run_head.html how to run LAMMPS https://docs.lammps.org/Run_head.html how to run LAMMPS
https://lammps.sandia.gov/doc/Commands_all.html Table of available commands https://docs.lammps.org/Commands_all.html Table of available commands
https://lammps.sandia.gov/doc/Library.html LAMMPS library interfaces https://docs.lammps.org/Library.html LAMMPS library interfaces
https://lammps.sandia.gov/doc/Modify.html how to modify and extend LAMMPS https://docs.lammps.org/Modify.html how to modify and extend LAMMPS
https://lammps.sandia.gov/doc/Developer.html LAMMPS developer info https://docs.lammps.org/Developer.html LAMMPS developer info
You can also create these doc pages locally: You can also create these doc pages locally:

35
SECURITY.md Normal file
View File

@ -0,0 +1,35 @@
# Security Policy
LAMMPS is designed as a user-level application to conduct computer
simulations for research using classical mechanics. As such LAMMPS
depends to some degrees on users providing correctly formatted input and
LAMMPS needs to read and write files based on uncontrolled user input.
As a parallel application for use in high-performance computing
environments, performance critical steps are also done without checking
data.
LAMMPS also is interfaced to a number of external libraries, including
libraries with experimental research software, that are not validated
and tested by the LAMMPS developers, so it is easy to import bad
behavior from calling functions in one of those libraries.
Thus is is quite easy to crash LAMMPS through malicious input and do all
kinds of filesystem manipulations. And because of that LAMMPS should
**NEVER** be compiled or **run** as superuser, either from a "root" or
"administrator" account directly or indirectly via "sudo" or "su".
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
the LAMMPS project
[issue tracker on GitHub](https://github.com/lammps/lammps/issues).
# Version Updates
LAMMPS follows continuous release development model. We aim to keep all
release versions (stable or patch) fully functional and employ a variety
of automatic testing procedures to detect failures of existing
functionality from adding new features before releases are made. Thus
bugfixes and updates are only integrated into the current development
branch and thus the next (patch) release and users are recommended to
update regularly.

View File

@ -1,7 +1,7 @@
These are input scripts used to run benchmark tests for many of the These are input scripts used to run benchmark tests for many of the
interatomic potentials in LAMMPS. The results of running these interatomic potentials in LAMMPS. The results of running these
scripts on different machines are shown on the Potentials section of scripts on different machines are shown on the Potentials section of
the Benchmark page of the LAMMPS WWW site (lammps.sandia.gov/bench). the Benchmark page of the LAMMPS WWW site (https://www.lammps.org/bench.html).
Examples are shown below of how to run these scripts. Log files for Examples are shown below of how to run these scripts. Log files for
running them on 1 and 4 processors of a Linux box are included in the running them on 1 and 4 processors of a Linux box are included in the

View File

@ -2,7 +2,7 @@ LAMMPS benchmark problems
This directory contains 5 benchmark problems which are discussed in This directory contains 5 benchmark problems which are discussed in
the Benchmark section of the LAMMPS documentation, and on the the Benchmark section of the LAMMPS documentation, and on the
Benchmark page of the LAMMPS WWW site (lammps.sandia.gov/bench). Benchmark page of the LAMMPS WWW site (https://www.lammps.org/bench.html).
This directory also has several sub-directories: This directory also has several sub-directories:
@ -11,7 +11,7 @@ KEPLER benchmark scripts for GPU cluster with Kepler GPUs
POTENTIALS benchmarks scripts for various potentials in LAMMPS POTENTIALS benchmarks scripts for various potentials in LAMMPS
The results for all of these benchmarks are displayed and discussed on The results for all of these benchmarks are displayed and discussed on
the Benchmark page of the LAMMPS WWW site: lammps.sandia.gov/bench. the Benchmark page of the LAMMPS WWW site: https://www.lammps.org/bench.html
The remainder of this file refers to the 5 problems in the top-level The remainder of this file refers to the 5 problems in the top-level
of this directory and how to run them on CPUs, either in serial or of this directory and how to run them on CPUs, either in serial or

View File

@ -7,6 +7,11 @@ cmake_minimum_required(VERSION 3.10)
if(POLICY CMP0074) if(POLICY CMP0074)
cmake_policy(SET CMP0074 NEW) cmake_policy(SET CMP0074 NEW)
endif() endif()
# set policy to silence warnings about missing executable permissions in
# pythonx.y-config when cross-compiling. review occasionally if it may be set to NEW
if(POLICY CMP0109)
cmake_policy(SET CMP0109 OLD)
endif()
######################################## ########################################
project(lammps CXX) project(lammps CXX)
@ -72,7 +77,7 @@ check_for_autogen_files(${LAMMPS_SOURCE_DIR})
include(CheckIncludeFileCXX) include(CheckIncludeFileCXX)
# set required compiler flags and compiler/CPU arch specific optimizations # set required compiler flags and compiler/CPU arch specific optimizations
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel") if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -restrict") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -restrict")
if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4) if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4)
set(CMAKE_TUNE_DEFAULT "-xCOMMON-AVX512") set(CMAKE_TUNE_DEFAULT "-xCOMMON-AVX512")
@ -86,6 +91,11 @@ set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF CACHE BOOL "Use compiler extensions") set(CMAKE_CXX_EXTENSIONS OFF CACHE BOOL "Use compiler extensions")
# export all symbols when building a .dll file on windows
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND BUILD_SHARED_LIBS)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
endif()
######################################################################## ########################################################################
# User input options # # User input options #
######################################################################## ########################################################################
@ -104,11 +114,23 @@ endif()
option(BUILD_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF) option(BUILD_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF)
option(BUILD_LAMMPS_SHELL "Build and install the LAMMPS shell" OFF) option(BUILD_LAMMPS_SHELL "Build and install the LAMMPS shell" OFF)
# allow enabling clang-tidy for C++ files
set(ENABLE_CLANG_TIDY OFF CACHE BOOL "Include clang-tidy processing when compiling")
if(ENABLE_CLANG_TIDY)
set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-checks=*-header-filter=.*" CACHE STRING "")
endif()
include(GNUInstallDirs) include(GNUInstallDirs)
file(GLOB ALL_SOURCES ${LAMMPS_SOURCE_DIR}/[^.]*.cpp) file(GLOB ALL_SOURCES ${LAMMPS_SOURCE_DIR}/[^.]*.cpp)
file(GLOB MAIN_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp) file(GLOB MAIN_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp)
list(REMOVE_ITEM ALL_SOURCES ${MAIN_SOURCES}) list(REMOVE_ITEM ALL_SOURCES ${MAIN_SOURCES})
add_library(lammps ${ALL_SOURCES}) add_library(lammps ${ALL_SOURCES})
# tell CMake to export all symbols to a .dll on Windows with MinGW cross-compilers
if(BUILD_SHARED_LIBS AND (CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
set_target_properties(lammps PROPERTIES LINK_FLAGS "-Wl,--export-all-symbols")
endif()
add_executable(lmp ${MAIN_SOURCES}) add_executable(lmp ${MAIN_SOURCES})
target_link_libraries(lmp PRIVATE lammps) target_link_libraries(lmp PRIVATE lammps)
set_target_properties(lmp PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY}) set_target_properties(lmp PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY})
@ -121,9 +143,9 @@ set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE
PLUGIN QEQ REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI PLUGIN QEQ REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESODPD USER-CGSDK USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESODPD USER-CGSDK
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-HDNNP USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESONT USER-MGPT USER-MISC
USER-MOLFILE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB
USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-RANN USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH
USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-PACE USER-BROWNIAN) USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-PACE USER-BROWNIAN)
set(SUFFIX_PACKAGES CORESHELL GPU KOKKOS OPT USER-INTEL USER-OMP) set(SUFFIX_PACKAGES CORESHELL GPU KOKKOS OPT USER-INTEL USER-OMP)
@ -151,12 +173,13 @@ if(NOT CMAKE_CROSSCOMPILING)
find_package(MPI QUIET) find_package(MPI QUIET)
option(BUILD_MPI "Build MPI version" ${MPI_FOUND}) option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
else() else()
set(MPI_CXX_SKIP_MPICXX TRUE)
option(BUILD_MPI "Build MPI version" OFF) option(BUILD_MPI "Build MPI version" OFF)
endif() endif()
if(BUILD_MPI) if(BUILD_MPI)
# We use a non-standard procedure to cross-compile with MPI on Windows # We use a non-standard procedure to cross-compile with MPI on Windows
if((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING) if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING)
include(MPI4WIN) include(MPI4WIN)
target_link_libraries(lammps PUBLIC MPI::MPI_CXX) target_link_libraries(lammps PUBLIC MPI::MPI_CXX)
else() else()
@ -190,7 +213,7 @@ string(TOUPPER ${LAMMPS_SIZES} LAMMPS_SIZES)
target_compile_definitions(lammps PUBLIC -DLAMMPS_${LAMMPS_SIZES}) target_compile_definitions(lammps PUBLIC -DLAMMPS_${LAMMPS_SIZES})
# posix_memalign is not available on Windows # posix_memalign is not available on Windows
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(LAMMPS_MEMALIGN "0" CACHE STRING "posix_memalign() is not available on Windows" FORCE) set(LAMMPS_MEMALIGN "0" CACHE STRING "posix_memalign() is not available on Windows" FORCE)
else() else()
set(LAMMPS_MEMALIGN "64" CACHE STRING "enables the use of the posix_memalign() call instead of malloc() when large chunks or memory are allocated by LAMMPS. Set to 0 to disable") set(LAMMPS_MEMALIGN "64" CACHE STRING "enables the use of the posix_memalign() call instead of malloc() when large chunks or memory are allocated by LAMMPS. Set to 0 to disable")
@ -232,8 +255,9 @@ if(BUILD_OMP)
message(FATAL_ERROR "Cannot find the 'omp.h' header file required for full OpenMP support") message(FATAL_ERROR "Cannot find the 'omp.h' header file required for full OpenMP support")
endif() endif()
if (((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0)) OR if(((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0)) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "PGI") OR (CMAKE_CXX_COMPILER_ID STREQUAL "PGI") OR
((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR
((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)) OR
((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0))) ((CMAKE_CXX_COMPILER_ID STREQUAL "Intel") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0)))
# GCC 9.x and later plus Clang 10.x and later implement strict OpenMP 4.0 semantics for consts. # GCC 9.x and later plus Clang 10.x and later implement strict OpenMP 4.0 semantics for consts.
@ -296,7 +320,7 @@ find_program(GZIP_EXECUTABLE gzip)
find_package_handle_standard_args(GZIP REQUIRED_VARS GZIP_EXECUTABLE) find_package_handle_standard_args(GZIP REQUIRED_VARS GZIP_EXECUTABLE)
option(WITH_GZIP "Enable GZIP support" ${GZIP_FOUND}) option(WITH_GZIP "Enable GZIP support" ${GZIP_FOUND})
if(WITH_GZIP) if(WITH_GZIP)
if(GZIP_FOUND OR ((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING)) if(GZIP_FOUND OR ((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING))
target_compile_definitions(lammps PRIVATE -DLAMMPS_GZIP) target_compile_definitions(lammps PRIVATE -DLAMMPS_GZIP)
else() else()
message(FATAL_ERROR "gzip executable not found") message(FATAL_ERROR "gzip executable not found")
@ -307,7 +331,7 @@ find_program(FFMPEG_EXECUTABLE ffmpeg)
find_package_handle_standard_args(FFMPEG REQUIRED_VARS FFMPEG_EXECUTABLE) find_package_handle_standard_args(FFMPEG REQUIRED_VARS FFMPEG_EXECUTABLE)
option(WITH_FFMPEG "Enable FFMPEG support" ${FFMPEG_FOUND}) option(WITH_FFMPEG "Enable FFMPEG support" ${FFMPEG_FOUND})
if(WITH_FFMPEG) if(WITH_FFMPEG)
if(FFMPEG_FOUND OR ((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING)) if(FFMPEG_FOUND OR ((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING))
target_compile_definitions(lammps PRIVATE -DLAMMPS_FFMPEG) target_compile_definitions(lammps PRIVATE -DLAMMPS_FFMPEG)
else() else()
message(FATAL_ERROR "ffmpeg executable not found") message(FATAL_ERROR "ffmpeg executable not found")
@ -324,10 +348,10 @@ else()
set(CUDA_REQUEST_PIC) set(CUDA_REQUEST_PIC)
endif() endif()
foreach(PKG_WITH_INCL KSPACE PYTHON MLIAP VORONOI USER-COLVARS USER-MDI USER-MOLFILE USER-NETCDF USER-PLUMED foreach(PKG_WITH_INCL KSPACE PYTHON MLIAP VORONOI USER-COLVARS USER-HDNNP USER-MDI USER-MOLFILE USER-NETCDF USER-PLUMED
USER-QMMM USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS USER-PACE) USER-QMMM USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS USER-PACE)
if(PKG_${PKG_WITH_INCL}) if(PKG_${PKG_WITH_INCL})
include(Packages/${PKG_WITH_INCL}) include(Packages/${PKG_WITH_INCL})
endif() endif()
endforeach() endforeach()
@ -422,7 +446,7 @@ foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD USER-MESONT)
if(PKG_${SIMPLE_LIB}) if(PKG_${SIMPLE_LIB})
string(REGEX REPLACE "^USER-" "" PKG_LIB "${SIMPLE_LIB}") string(REGEX REPLACE "^USER-" "" PKG_LIB "${SIMPLE_LIB}")
string(TOLOWER "${PKG_LIB}" PKG_LIB) string(TOLOWER "${PKG_LIB}" PKG_LIB)
if(PKG_LIB STREQUAL mesont) if(PKG_LIB STREQUAL "mesont")
enable_language(Fortran) enable_language(Fortran)
file(GLOB_RECURSE ${PKG_LIB}_SOURCES file(GLOB_RECURSE ${PKG_LIB}_SOURCES
${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.f90) ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.f90)
@ -434,9 +458,9 @@ foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD USER-MESONT)
add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES}) add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES})
set_target_properties(${PKG_LIB} PROPERTIES OUTPUT_NAME lammps_${PKG_LIB}${LAMMPS_MACHINE}) set_target_properties(${PKG_LIB} PROPERTIES OUTPUT_NAME lammps_${PKG_LIB}${LAMMPS_MACHINE})
target_link_libraries(lammps PRIVATE ${PKG_LIB}) target_link_libraries(lammps PRIVATE ${PKG_LIB})
if(PKG_LIB STREQUAL awpmd) if(PKG_LIB STREQUAL "awpmd")
target_include_directories(awpmd PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/awpmd/systems/interact ${LAMMPS_LIB_SOURCE_DIR}/awpmd/ivutils/include) target_include_directories(awpmd PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/awpmd/systems/interact ${LAMMPS_LIB_SOURCE_DIR}/awpmd/ivutils/include)
elseif(PKG_LIB STREQUAL h5md) elseif(PKG_LIB STREQUAL "h5md")
target_include_directories(h5md PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/h5md/include ${HDF5_INCLUDE_DIRS}) target_include_directories(h5md PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/h5md/include ${HDF5_INCLUDE_DIRS})
else() else()
target_include_directories(${PKG_LIB} PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}) target_include_directories(${PKG_LIB} PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB})
@ -449,7 +473,7 @@ if(PKG_USER-AWPMD)
endif() endif()
if(PKG_USER-ATC) if(PKG_USER-ATC)
if(LAMMPS_SIZES STREQUAL BIGBIG) if(LAMMPS_SIZES STREQUAL "BIGBIG")
message(FATAL_ERROR "The USER-ATC Package is not compatible with -DLAMMPS_BIGBIG") message(FATAL_ERROR "The USER-ATC Package is not compatible with -DLAMMPS_BIGBIG")
endif() endif()
target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES}) target_link_libraries(atc PRIVATE ${LAPACK_LIBRARIES})
@ -493,7 +517,7 @@ endif()
# and the MPI library - if use - has to be linked right before those # and the MPI library - if use - has to be linked right before those
# and after everything else that is compiled locally # and after everything else that is compiled locally
###################################################################### ######################################################################
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
target_link_libraries(lammps PRIVATE -lwsock32 -lpsapi) target_link_libraries(lammps PRIVATE -lwsock32 -lpsapi)
endif() endif()
@ -542,8 +566,8 @@ add_dependencies(lammps gitversion)
# Actually add executable and lib to build # Actually add executable and lib to build
############################################ ############################################
get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
list (FIND LANGUAGES "Fortran" _index) list(FIND LANGUAGES "Fortran" _index)
if(${_index} GREATER -1) if(_index GREATER -1)
target_link_libraries(lammps PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES}) target_link_libraries(lammps PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES})
endif() endif()
set(LAMMPS_CXX_HEADERS angle.h atom.h bond.h citeme.h comm.h compute.h dihedral.h domain.h error.h fix.h force.h group.h improper.h set(LAMMPS_CXX_HEADERS angle.h atom.h bond.h citeme.h comm.h compute.h dihedral.h domain.h error.h fix.h force.h group.h improper.h
@ -621,7 +645,7 @@ if(BUILD_SHARED_LIBS)
else() else()
find_package(Python COMPONENTS Interpreter) find_package(Python COMPONENTS Interpreter)
endif() endif()
if (Python_EXECUTABLE) if(Python_EXECUTABLE)
add_custom_target( add_custom_target(
install-python ${CMAKE_COMMAND} -E remove_directory build install-python ${CMAKE_COMMAND} -E remove_directory build
COMMAND ${Python_EXECUTABLE} install.py -v ${LAMMPS_SOURCE_DIR}/version.h COMMAND ${Python_EXECUTABLE} install.py -v ${LAMMPS_SOURCE_DIR}/version.h
@ -654,7 +678,7 @@ if(BUILD_SHARED_LIBS OR PKG_PYTHON)
else() else()
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)
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})") 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})")
endif() endif()
@ -699,15 +723,15 @@ if(OPTIONS)
message(" Options: ${OPTIONS}") message(" Options: ${OPTIONS}")
endif() endif()
get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
list (FIND LANGUAGES "Fortran" _index) list(FIND LANGUAGES "Fortran" _index)
if(${_index} GREATER -1) if(_index GREATER -1)
message(STATUS "Fortran Compiler: ${CMAKE_Fortran_COMPILER} message(STATUS "Fortran Compiler: ${CMAKE_Fortran_COMPILER}
Type: ${CMAKE_Fortran_COMPILER_ID} Type: ${CMAKE_Fortran_COMPILER_ID}
Version: ${CMAKE_Fortran_COMPILER_VERSION} Version: ${CMAKE_Fortran_COMPILER_VERSION}
Fortran Flags:${CMAKE_Fortran_FLAGS} ${CMAKE_Fortran_FLAGS_${BTYPE}}") Fortran Flags:${CMAKE_Fortran_FLAGS} ${CMAKE_Fortran_FLAGS_${BTYPE}}")
endif() endif()
list (FIND LANGUAGES "C" _index) list(FIND LANGUAGES "C" _index)
if(${_index} GREATER -1) if(_index GREATER -1)
message(STATUS "C compiler: ${CMAKE_C_COMPILER} message(STATUS "C compiler: ${CMAKE_C_COMPILER}
Type: ${CMAKE_C_COMPILER_ID} Type: ${CMAKE_C_COMPILER_ID}
Version: ${CMAKE_C_COMPILER_VERSION} Version: ${CMAKE_C_COMPILER_VERSION}
@ -772,7 +796,7 @@ if(PKG_KSPACE)
endif() endif()
if(PKG_KOKKOS) if(PKG_KOKKOS)
if(Kokkos_ENABLE_CUDA) if(Kokkos_ENABLE_CUDA)
if (${FFT} STREQUAL "KISS") if(FFT STREQUAL "KISS")
message(STATUS "Kokkos FFT: KISS") message(STATUS "Kokkos FFT: KISS")
else() else()
message(STATUS "Kokkos FFT: cuFFT") message(STATUS "Kokkos FFT: cuFFT")

View File

@ -15,6 +15,11 @@ if(Python3_EXECUTABLE)
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/whitespace.py . ${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/whitespace.py .
WORKING_DIRECTORY ${LAMMPS_DIR} WORKING_DIRECTORY ${LAMMPS_DIR}
COMMENT "Check for whitespace errors") COMMENT "Check for whitespace errors")
add_custom_target(
check-homepage
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/homepage.py .
WORKING_DIRECTORY ${LAMMPS_DIR}
COMMENT "Check for homepage URL errors")
add_custom_target( add_custom_target(
check-permissions check-permissions
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/permissions.py . ${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/permissions.py .
@ -25,6 +30,11 @@ if(Python3_EXECUTABLE)
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/whitespace.py -f . ${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/whitespace.py -f .
WORKING_DIRECTORY ${LAMMPS_DIR} WORKING_DIRECTORY ${LAMMPS_DIR}
COMMENT "Fix whitespace errors") COMMENT "Fix whitespace errors")
add_custom_target(
fix-homepage
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/homepage.py -f .
WORKING_DIRECTORY ${LAMMPS_DIR}
COMMENT "Fix homepage URL errors")
add_custom_target( add_custom_target(
fix-permissions fix-permissions
${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/permissions.py -f . ${Python3_EXECUTABLE} ${LAMMPS_TOOLS_DIR}/coding_standard/permissions.py -f .

View File

@ -0,0 +1,61 @@
include(FindPackageHandleStandardArgs)
# Check if N2P2_DIR is set manually.
if (DEFINED ENV{N2P2_DIR})
set(N2P2_DIR "${N2P2_DIR}")
# If not, try if directory "lib/hdnnp/n2p2" exists.
else()
get_filename_component(_fullpath "${LAMMPS_LIB_SOURCE_DIR}/hdnnp/n2p2" REALPATH)
if (EXISTS ${_fullpath})
set(N2P2_DIR "${_fullpath}")
endif()
endif()
# Set path to include directory.
find_path(N2P2_INCLUDE_DIR InterfaceLammps.h HINTS "${N2P2_DIR}/include")
# Two libraries need to be linked: libnnp and libnnpif.
find_library(N2P2_LIBNNP NAMES nnp HINTS "${N2P2_DIR}/lib")
find_library(N2P2_LIBNNPIF NAMES nnpif HINTS "${N2P2_DIR}/lib")
# Users could compile n2p2 with extra flags which are then also required for
# pair_hdnnp.cpp compilation. To forward them to the LAMMPS build process n2p2
# writes a file with cmake commands, e.g.
#
# target_compile_definitions(lammps PRIVATE -DN2P2_NO_SF_GROUPS)
#
# to "lib/lammps-extra.cmake" which is then included by USER-HDNNP.cmake.
find_file(N2P2_CMAKE_EXTRA NAMES lammps-extra.cmake HINTS "${N2P2_DIR}/lib")
find_package_handle_standard_args(N2P2 DEFAULT_MSG
N2P2_DIR
N2P2_INCLUDE_DIR
N2P2_LIBNNP
N2P2_LIBNNPIF
N2P2_CMAKE_EXTRA)
if(N2P2_FOUND)
if (NOT TARGET N2P2::N2P2)
# n2p2 core library "libnnp"
add_library(N2P2::LIBNNP UNKNOWN IMPORTED)
set_target_properties(N2P2::LIBNNP PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${N2P2_INCLUDE_DIR}
IMPORTED_LOCATION ${N2P2_LIBNNP})
# n2p2 interface library "libnnpif"
add_library(N2P2::LIBNNPIF UNKNOWN IMPORTED)
set_target_properties(N2P2::LIBNNPIF PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${N2P2_INCLUDE_DIR}
IMPORTED_LOCATION ${N2P2_LIBNNPIF})
# Put libnnp, libnnpif and include directory together.
add_library(N2P2::N2P2 INTERFACE IMPORTED)
set_property(TARGET N2P2::N2P2 PROPERTY
INTERFACE_LINK_LIBRARIES N2P2::LIBNNPIF N2P2::LIBNNP)
set(N2P2_CMAKE_EXTRAS ${N2P2_CMAKE_EXTRA})
endif()
endif()
mark_as_advanced(
N2P2_DIR
N2P2_INCLUDE_DIR
N2P2_LIBNNP
N2P2_LIBNNPIF
N2P2_CMAKE_EXTRA
)

View File

@ -1,6 +1,6 @@
message(STATUS "Downloading and building Google Test library") message(STATUS "Downloading and building Google Test library")
if(CMAKE_BUILD_TYPE STREQUAL Debug) if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(GTEST_LIB_POSTFIX d) set(GTEST_LIB_POSTFIX d)
else() else()
set(GTEST_LIB_POSTFIX) set(GTEST_LIB_POSTFIX)

View File

@ -106,7 +106,7 @@ function(FetchPotentials pkgfolder potfolder)
endfunction(FetchPotentials) endfunction(FetchPotentials)
# set CMAKE_LINUX_DISTRO and CMAKE_DISTRO_VERSION on Linux # set CMAKE_LINUX_DISTRO and CMAKE_DISTRO_VERSION on Linux
if((CMAKE_SYSTEM_NAME STREQUAL Linux) AND (EXISTS /etc/os-release)) if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND (EXISTS /etc/os-release))
file(STRINGS /etc/os-release distro REGEX "^NAME=") file(STRINGS /etc/os-release distro REGEX "^NAME=")
string(REGEX REPLACE "NAME=\"?([^\"]*)\"?" "\\1" distro "${distro}") string(REGEX REPLACE "NAME=\"?([^\"]*)\"?" "\\1" distro "${distro}")
file(STRINGS /etc/os-release disversion REGEX "^VERSION_ID=") file(STRINGS /etc/os-release disversion REGEX "^VERSION_ID=")

View File

@ -48,7 +48,7 @@ if(GPU_API STREQUAL "CUDA")
# ensure that no *cubin.h files exist from a compile in the lib/gpu folder # ensure that no *cubin.h files exist from a compile in the lib/gpu folder
file(GLOB GPU_LIB_OLD_CUBIN_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/*_cubin.h) file(GLOB GPU_LIB_OLD_CUBIN_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/*_cubin.h)
if (GPU_LIB_OLD_CUBIN_HEADERS) if(GPU_LIB_OLD_CUBIN_HEADERS)
message(FATAL_ERROR "########################################################################\n" message(FATAL_ERROR "########################################################################\n"
"Found file(s) generated by the make-based build system in lib/gpu\n" "Found file(s) generated by the make-based build system in lib/gpu\n"
"Please run\n" "Please run\n"
@ -154,7 +154,7 @@ elseif(GPU_API STREQUAL "OPENCL")
endif() endif()
option(USE_STATIC_OPENCL_LOADER "Download and include a static OpenCL ICD loader" ${_opencl_static_default}) option(USE_STATIC_OPENCL_LOADER "Download and include a static OpenCL ICD loader" ${_opencl_static_default})
mark_as_advanced(USE_STATIC_OPENCL_LOADER) mark_as_advanced(USE_STATIC_OPENCL_LOADER)
if (USE_STATIC_OPENCL_LOADER) if(USE_STATIC_OPENCL_LOADER)
include(OpenCLLoader) include(OpenCLLoader)
else() else()
find_package(OpenCL REQUIRED) find_package(OpenCL REQUIRED)

View File

@ -37,8 +37,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.4.00.tar.gz" CACHE STRING "URL for KOKKOS tarball") set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/3.4.01.tar.gz" CACHE STRING "URL for KOKKOS tarball")
set(KOKKOS_MD5 "c2fdcedb6953e6160c765366f6045abb" CACHE STRING "MD5 checksum of KOKKOS tarball") set(KOKKOS_MD5 "4c84698917c93a18985b311bb6caf84f" 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
@ -58,7 +58,7 @@ if(DOWNLOAD_KOKKOS)
target_link_libraries(lmp PRIVATE LAMMPS::KOKKOS) target_link_libraries(lmp PRIVATE LAMMPS::KOKKOS)
add_dependencies(LAMMPS::KOKKOS kokkos_build) add_dependencies(LAMMPS::KOKKOS kokkos_build)
elseif(EXTERNAL_KOKKOS) elseif(EXTERNAL_KOKKOS)
find_package(Kokkos 3.4.00 REQUIRED CONFIG) find_package(Kokkos 3.4.01 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()
@ -99,7 +99,7 @@ if(PKG_KSPACE)
${KOKKOS_PKG_SOURCES_DIR}/gridcomm_kokkos.cpp ${KOKKOS_PKG_SOURCES_DIR}/gridcomm_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp) ${KOKKOS_PKG_SOURCES_DIR}/remap_kokkos.cpp)
if(Kokkos_ENABLE_CUDA) if(Kokkos_ENABLE_CUDA)
if(NOT ${FFT} STREQUAL "KISS") if(NOT (FFT STREQUAL "KISS"))
target_compile_definitions(lammps PRIVATE -DFFT_CUFFT) target_compile_definitions(lammps PRIVATE -DFFT_CUFFT)
target_link_libraries(lammps PRIVATE cufft) target_link_libraries(lammps PRIVATE cufft)
endif() endif()

View File

@ -1,4 +1,4 @@
if(LAMMPS_SIZES STREQUAL BIGBIG) if(LAMMPS_SIZES STREQUAL "BIGBIG")
message(FATAL_ERROR "The MESSAGE Package is not compatible with -DLAMMPS_BIGBIG") message(FATAL_ERROR "The MESSAGE Package is not compatible with -DLAMMPS_BIGBIG")
endif() endif()
option(MESSAGE_ZMQ "Use ZeroMQ in MESSAGE package" OFF) option(MESSAGE_ZMQ "Use ZeroMQ in MESSAGE package" OFF)

View File

@ -0,0 +1,124 @@
find_package(N2P2 QUIET)
if(N2P2_FOUND)
set(DOWNLOAD_N2P2_DEFAULT OFF)
else()
set(DOWNLOAD_N2P2_DEFAULT ON)
endif()
option(DOWNLOAD_N2P2 "Download n2p2 library instead of using an already installed one)" ${DOWNLOAD_N2P2_DEFAULT})
if(DOWNLOAD_N2P2)
set(N2P2_URL "https://github.com/CompPhysVienna/n2p2/archive/v2.1.4.tar.gz" CACHE STRING "URL for n2p2 tarball")
set(N2P2_MD5 "9595b066636cd6b90b0fef93398297a5" CACHE STRING "MD5 checksum of N2P2 tarball")
mark_as_advanced(N2P2_URL)
mark_as_advanced(N2P2_MD5)
# adjust settings from detected compiler to compiler platform in n2p2 library
# set compiler specific flag to turn on C++11 syntax (required on macOS and CentOS 7)
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
set(N2P2_COMP llvm)
set(N2P2_CXX_STD "-std=c++11")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
set(N2P2_COMP intel)
set(N2P2_CXX_STD "-std=c++11")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(N2P2_COMP gnu)
set(N2P2_CXX_STD "-std=gnu++11")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "PGI")
set(N2P2_COMP gnu)
set(N2P2_CXX_STD "--c++11")
else() # default
set(N2P2_COMP "")
endif()
# pass on archive creator command. prefer compiler specific version, if set.
# important when using cross compiler.
if(CMAKE_CXX_COMPILER_AR)
set(N2P2_AR ${CMAKE_CXX_COMPILER_AR})
else()
set(N2P2_AR ${CMAKE_AR})
endif()
# adjust compilation of n2p2 library to whether MPI is requested in LAMMPS or not
# need special care for compiling for MPICH2 with Linux-to-Windows cross compiler.
if(NOT BUILD_MPI)
set(N2P2_PROJECT_OPTIONS "-DN2P2_NO_MPI")
else()
# get path to MPI include directory when cross-compiling to windows
if((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING)
get_target_property(N2P2_MPI_INCLUDE MPI::MPI_CXX INTERFACE_INCLUDE_DIRECTORIES)
set(N2P2_PROJECT_OPTIONS "-I ${N2P2_MPI_INCLUDE} -DMPICH_SKIP_MPICXX=1")
set(MPI_CXX_COMPILER ${CMAKE_CXX_COMPILER})
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
get_target_property(N2P2_MPI_INCLUDE MPI::MPI_CXX INTERFACE_INCLUDE_DIRECTORIES)
set(N2P2_PROJECT_OPTIONS "-I ${N2P2_MPI_INCLUDE} -DMPICH_SKIP_MPICXX=1")
set(MPI_CXX_COMPILER ${CMAKE_CXX_COMPILER})
endif()
endif()
# override compiler (optimization) flags in n2p2 library to flags used for LAMMPS
# specifically -march=native can result in problems when compiling on HPC clusters or with a cross compiler
# this convoluted way gets correct quoting/escaping when configuring the external project
string(TOUPPER "${CMAKE_BUILD_TYPE}" BTYPE)
set(N2P2_BUILD_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}} ${N2P2_CXX_STD}")
set(N2P2_BUILD_OPTIONS INTERFACES=LAMMPS COMP=${N2P2_COMP} "PROJECT_OPTIONS=${N2P2_PROJECT_OPTIONS}" "PROJECT_DEBUG="
"PROJECT_CC=${CMAKE_CXX_COMPILER}" "PROJECT_MPICC=${MPI_CXX_COMPILER}" "PROJECT_CFLAGS=${N2P2_BUILD_FLAGS}"
"PROJECT_AR=${N2P2_AR}")
# echo final flag for debugging
message(STATUS "N2P2 BUILD OPTIONS: ${N2P2_BUILD_OPTIONS}")
# download compile n2p2 library. much patch MPI calls in LAMMPS interface to accommodate MPI-2 (e.g. for cross-compiling)
include(ExternalProject)
ExternalProject_Add(n2p2_build
URL ${N2P2_URL}
URL_MD5 ${N2P2_MD5}
UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
PATCH_COMMAND sed -i -e "s/\\(MPI_\\(P\\|Unp\\)ack(\\)/\\1(void *) /" src/libnnpif/LAMMPS/InterfaceLammps.cpp
BUILD_COMMAND make -f makefile libnnpif ${N2P2_BUILD_OPTIONS}
BUILD_ALWAYS YES
INSTALL_COMMAND ""
BUILD_IN_SOURCE 1
LOG_BUILD ON
SOURCE_SUBDIR src/
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/libnnp.a <SOURCE_DIR>/lib/libnnpif.a
)
# create imported target LAMMPS::N2P2 from two libraries nnp and nnpif
ExternalProject_get_property(n2p2_build SOURCE_DIR)
# n2p2 core library "libnnp"
add_library(LAMMPS::N2P2::LIBNNP UNKNOWN IMPORTED)
set_target_properties(LAMMPS::N2P2::LIBNNP PROPERTIES
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libnnp.a"
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include")
# n2p2 interface library "libnnpif"
add_library(LAMMPS::N2P2::LIBNNPIF UNKNOWN IMPORTED)
set_target_properties(LAMMPS::N2P2::LIBNNPIF PROPERTIES
IMPORTED_LOCATION "${SOURCE_DIR}/lib/libnnpif.a"
INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/include")
# nnpif library has MPI calls if MPI is enabled, so we must link with MPI libs
if(BUILD_MPI)
set_target_properties(LAMMPS::N2P2::LIBNNPIF PROPERTIES
INTERFACE_LINK_LIBRARIES MPI::MPI_CXX)
if((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING)
add_dependencies(LAMMPS::N2P2::LIBNNPIF MPI::MPI_CXX)
endif()
endif()
# final step to define imported target
add_library(LAMMPS::N2P2 INTERFACE IMPORTED)
set_property(TARGET LAMMPS::N2P2 PROPERTY
INTERFACE_LINK_LIBRARIES LAMMPS::N2P2::LIBNNPIF LAMMPS::N2P2::LIBNNP)
target_link_libraries(lammps PRIVATE LAMMPS::N2P2)
add_dependencies(LAMMPS::N2P2 n2p2_build)
# work around issues with older CMake versions
file(MAKE_DIRECTORY "${SOURCE_DIR}/include")
file(MAKE_DIRECTORY "${SOURCE_DIR}/lib")
else()
find_package(N2P2)
if(NOT N2P2_FOUND)
message(FATAL_ERROR "n2p2 not found, help CMake to find it by setting N2P2_DIR, or set DOWNLOAD_N2P2=ON to download it")
endif()
target_link_libraries(lammps PRIVATE N2P2::N2P2)
include(${N2P2_CMAKE_EXTRAS})
endif()

View File

@ -12,37 +12,89 @@ if(DOWNLOAD_MDI)
set(MDI_MD5 "ddfa46d6ee15b4e59cfd527ec7212184" CACHE STRING "MD5 checksum for MDI tarball") set(MDI_MD5 "ddfa46d6ee15b4e59cfd527ec7212184" 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)
set(LAMMPS_LIB_MDI_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/mdi) # only ON/OFF are allowed for "mpi" flag when building MDI library
# so translate boolean value of BUILD_MPI
# always disable MPI when cross-compiling to Windows.
if((BUILD_MPI) AND NOT((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND CMAKE_CROSSCOMPILING))
set(MDI_USE_MPI ON)
else()
set(MDI_USE_MPI OFF)
endif()
# detect if we have python development support and thus can enable python plugins
set(MDI_USE_PYTHON_PLUGINS OFF)
if(CMAKE_VERSION VERSION_LESS 3.12)
find_package(PythonLibs QUIET) # Deprecated since version 3.12
if(PYTHONLIBS_FOUND)
set(MDI_USE_PYTHON_PLUGINS ON)
endif()
else()
find_package(Python QUIET COMPONENTS Development)
if(Python_Development_FOUND)
set(MDI_USE_PYTHON_PLUGINS ON)
endif()
endif()
# download/ build MDI library
# always build static library with -fpic
# support cross-compilation and ninja-build
include(ExternalProject) include(ExternalProject)
message(STATUS "Building mdi.") ExternalProject_Add(mdi_build
ExternalProject_Add(mdi_external URL ${MDI_URL}
URL ${MDI_URL} URL_MD5 ${MDI_MD5}
URL_MD5 ${MDI_MD5} CMAKE_ARGS ${CMAKE_REQUEST_PIC}
UPDATE_COMMAND "" -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
CMAKE_ARGS ${CMAKE_REQUEST_PIC} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_INSTALL_PREFIX=${LAMMPS_LIB_MDI_BIN_DIR} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
-DCMAKE_INSTALL_INCLUDEDIR=${CMAKE_INSTALL_INCLUDEDIR} -Dlanguage=C
-DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} -Dlibtype=STATIC
-Dlanguage=C -Dmpi=${MDI_USE_MPI}
CMAKE_CACHE_ARGS -DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} -Dpython_plugins=${MDI_USE_PYTHON_PLUGINS}
-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} UPDATE_COMMAND ""
-DTargetOpenMP_FIND_COMPONENTS:STRING=C;CXX) INSTALL_COMMAND ""
BUILD_BYPRODUCTS "<BINARY_DIR>/MDI_Library/libmdi.a"
)
# Link the lammps library against MDI # where is the compiled library?
target_include_directories(lammps PRIVATE ${LAMMPS_LIB_MDI_BIN_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/mdi) ExternalProject_get_property(mdi_build BINARY_DIR)
target_link_directories(lammps PRIVATE ${LAMMPS_LIB_MDI_BIN_DIR}/${CMAKE_INSTALL_LIBDIR}/mdi) set(MDI_BINARY_DIR "${BINARY_DIR}/MDI_Library")
target_link_libraries(lammps PRIVATE mdi) # workaround for older CMake versions
add_dependencies(lammps mdi_external) file(MAKE_DIRECTORY ${MDI_BINARY_DIR})
# Link the lammps executable against MDI # create imported target for the MDI library
target_include_directories(lmp PRIVATE ${LAMMPS_LIB_MDI_BIN_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/mdi) add_library(LAMMPS::MDI UNKNOWN IMPORTED)
target_link_directories(lmp PRIVATE ${LAMMPS_LIB_MDI_BIN_DIR}/${CMAKE_INSTALL_LIBDIR}/mdi) add_dependencies(LAMMPS::MDI mdi_build)
target_link_libraries(lmp PRIVATE mdi) set_target_properties(LAMMPS::MDI PROPERTIES
add_dependencies(lmp mdi_external) IMPORTED_LOCATION "${MDI_BINARY_DIR}/libmdi.a"
INTERFACE_INCLUDE_DIRECTORIES ${MDI_BINARY_DIR}
)
set(MDI_DEP_LIBS "")
# if compiling with python plugins we need
# to add python libraries as dependency.
if(MDI_USE_PYTHON_PLUGINS)
if(CMAKE_VERSION VERSION_LESS 3.12)
list(APPEND MDI_DEP_LIBS ${PYTHON_LIBRARIES})
else()
list(APPEND MDI_DEP_LIBS Python::Python)
endif()
endif()
# need to add support for dlopen/dlsym, except when compiling for Windows.
if(NOT (CMAKE_SYSTEM_NAME STREQUAL "Windows"))
list(APPEND MDI_DEP_LIBS "${CMAKE_DL_LIBS}")
endif()
if(MDI_DEP_LIBS)
set_target_properties(LAMMPS::MDI PROPERTIES
IMPORTED_LINK_INTERFACE_LIBRARIES "${MDI_DEP_LIBS}")
endif()
target_link_libraries(lammps PRIVATE LAMMPS::MDI)
target_link_libraries(lmp PRIVATE LAMMPS::MDI)
else() else()

View File

@ -14,13 +14,12 @@ execute_process(
WORKING_DIRECTORY ${CMAKE_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
) )
file(GLOB PACE_EVALUATOR_INCLUDE_DIR ${CMAKE_BINARY_DIR}/lammps-user-pace-*/USER-PACE) file(GLOB PACE_EVALUATOR_INCLUDE_DIR ${CMAKE_BINARY_DIR}/lammps-user-pace-*/USER-PACE)
file(GLOB PACE_EVALUATOR_SOURCES ${CMAKE_BINARY_DIR}/lammps-user-pace-*/USER-PACE/*.cpp) file(GLOB PACE_EVALUATOR_SOURCES ${CMAKE_BINARY_DIR}/lammps-user-pace-*/USER-PACE/*.cpp)
list(FILTER PACE_EVALUATOR_SOURCES EXCLUDE REGEX pair_pace.cpp) list(FILTER PACE_EVALUATOR_SOURCES EXCLUDE REGEX pair_pace.cpp)
add_library(pace STATIC ${PACE_EVALUATOR_SOURCES}) add_library(pace STATIC ${PACE_EVALUATOR_SOURCES})
set_target_properties(pace PROPERTIES 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}) target_include_directories(pace PUBLIC ${PACE_EVALUATOR_INCLUDE_DIR})
target_link_libraries(lammps PRIVATE pace) target_link_libraries(lammps PRIVATE pace)

View File

@ -9,7 +9,7 @@ function(prevent_in_source_builds)
get_filename_component(bindir "${CMAKE_BINARY_DIR}" REALPATH) get_filename_component(bindir "${CMAKE_BINARY_DIR}" REALPATH)
# disallow in-source builds # disallow in-source builds
if("${srcdir}" STREQUAL "${bindir}" OR "${srcdir2}" STREQUAL "${bindir}" OR "${srcdir3}" STREQUAL "${bindir}") if(("${srcdir}" STREQUAL "${bindir}") OR ("${srcdir2}" STREQUAL "${bindir}") OR ("${srcdir3}" STREQUAL "${bindir}"))
message(FATAL_ERROR "\ message(FATAL_ERROR "\
CMake must not to be run in the source directory. \ CMake must not to be run in the source directory. \

View File

@ -19,11 +19,11 @@ if(ENABLE_TESTING)
# we need to build and link a LOT of tester executables, so it is worth checking if # we need to build and link a LOT of tester executables, so it is worth checking if
# a faster linker is available. requires GNU or Clang compiler, newer CMake. # a faster linker is available. requires GNU or Clang compiler, newer CMake.
# also only verified with Fedora Linux > 30 and Ubuntu <= 18.04 (Ubuntu 20.04 fails) # also only verified with Fedora Linux > 30 and Ubuntu <= 18.04 (Ubuntu 20.04 fails)
if((CMAKE_SYSTEM_NAME STREQUAL Linux) AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.13) if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.13)
AND ((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") AND ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang"))) OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")))
if (((CMAKE_LINUX_DISTRO STREQUAL Ubuntu) AND (CMAKE_DISTRO_VERSION VERSION_LESS_EQUAL 18.04)) if(((CMAKE_LINUX_DISTRO STREQUAL "Ubuntu") AND (CMAKE_DISTRO_VERSION VERSION_LESS_EQUAL 18.04))
OR ((CMAKE_LINUX_DISTRO STREQUAL Fedora) AND (CMAKE_DISTRO_VERSION VERSION_GREATER 30))) OR ((CMAKE_LINUX_DISTRO STREQUAL "Fedora") AND (CMAKE_DISTRO_VERSION VERSION_GREATER 30)))
include(CheckCXXCompilerFlag) include(CheckCXXCompilerFlag)
set(CMAKE_CUSTOM_LINKER_DEFAULT default) set(CMAKE_CUSTOM_LINKER_DEFAULT default)
check_cxx_compiler_flag(-fuse-ld=lld HAVE_LLD_LINKER_FLAG) check_cxx_compiler_flag(-fuse-ld=lld HAVE_LLD_LINKER_FLAG)
@ -58,7 +58,7 @@ if(ENABLE_TESTING)
endif() endif()
# Compiler specific features for testing # Compiler specific features for testing
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
option(ENABLE_COVERAGE "Enable collecting code coverage data" OFF) option(ENABLE_COVERAGE "Enable collecting code coverage data" OFF)
mark_as_advanced(ENABLE_COVERAGE) mark_as_advanced(ENABLE_COVERAGE)
if(ENABLE_COVERAGE) if(ENABLE_COVERAGE)
@ -83,7 +83,7 @@ mark_as_advanced(ENABLE_IWYU)
if(ENABLE_IWYU) if(ENABLE_IWYU)
# enforce these settings # enforce these settings
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Enable reporting compilation commands to compile_commands.json" FORCE) set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Enable reporting compilation commands to compile_commands.json" FORCE)
if (NOT ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))) if(NOT ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")))
message(FATAL_ERROR "IWYU is only supported with Clang or GNU compilers") message(FATAL_ERROR "IWYU is only supported with Clang or GNU compilers")
endif() endif()
# detect the "native" header folder so we can include them first # detect the "native" header folder so we can include them first
@ -91,7 +91,7 @@ if(ENABLE_IWYU)
string(REGEX REPLACE ".*libraries: *=([^:]+):.*" "\\1/include" IWYU_EXTRA_INCLUDE_DIR ${IWYU_SEARCH_PATHS}) string(REGEX REPLACE ".*libraries: *=([^:]+):.*" "\\1/include" IWYU_EXTRA_INCLUDE_DIR ${IWYU_SEARCH_PATHS})
find_program(IWYU_EXE NAMES include-what-you-use iwyu) find_program(IWYU_EXE NAMES include-what-you-use iwyu)
find_program(IWYU_TOOL NAMES iwyu_tool iwyu-tool iwyu_tool.py) find_program(IWYU_TOOL NAMES iwyu_tool iwyu-tool iwyu_tool.py)
if (IWYU_EXE AND IWYU_TOOL) if(IWYU_EXE AND IWYU_TOOL)
add_custom_target( add_custom_target(
iwyu iwyu
${IWYU_TOOL} -o clang -p ${CMAKE_CURRENT_BINARY_DIR} -- -I${IWYU_EXTRA_INCLUDE_DIR} -Xiwyu --mapping_file=${CMAKE_CURRENT_SOURCE_DIR}/iwyu/iwyu-extra-map.imp ${IWYU_TOOL} -o clang -p ${CMAKE_CURRENT_BINARY_DIR} -- -I${IWYU_EXTRA_INCLUDE_DIR} -Xiwyu --mapping_file=${CMAKE_CURRENT_SOURCE_DIR}/iwyu/iwyu-extra-map.imp

View File

@ -45,7 +45,7 @@ if(BUILD_LAMMPS_SHELL)
target_include_directories(lammps-shell PRIVATE ${LAMMPS_TOOLS_DIR}/lammps-shell) target_include_directories(lammps-shell PRIVATE ${LAMMPS_TOOLS_DIR}/lammps-shell)
# workaround for broken readline pkg-config file on FreeBSD # workaround for broken readline pkg-config file on FreeBSD
if(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
target_include_directories(lammps-shell PRIVATE /usr/local/include) target_include_directories(lammps-shell PRIVATE /usr/local/include)
endif() endif()
target_link_libraries(lammps-shell PRIVATE lammps PkgConfig::READLINE) target_link_libraries(lammps-shell PRIVATE lammps PkgConfig::READLINE)

View File

@ -6,15 +6,27 @@ set(YAML_MD5 "bb15429d8fb787e7d3f1c83ae129a999" CACHE STRING "MD5 checksum of li
mark_as_advanced(YAML_URL) mark_as_advanced(YAML_URL)
mark_as_advanced(YAML_MD5) mark_as_advanced(YAML_MD5)
# support cross-compilation to windows
if(CMAKE_CROSSCOMPILING AND (CMAKE_SYSTEM_NAME STREQUAL "Windows"))
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86")
set(YAML_CROSS_HOST --host=i686-mingw64)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
set(YAML_CROSS_HOST --host=x86_64-mingw64)
else()
message(FATAL_ERROR "Unsupported cross-compilation "
" for ${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}"
" on ${CMAKE_HOST_SYSTEM}/${CMAKE_HOST_SYSTEM_PROCESSOR}")
endif()
endif()
ExternalProject_Add(libyaml ExternalProject_Add(libyaml
URL ${YAML_URL} URL ${YAML_URL}
URL_MD5 ${YAML_MD5} URL_MD5 ${YAML_MD5}
SOURCE_DIR "${CMAKE_BINARY_DIR}/yaml-src" SOURCE_DIR "${CMAKE_BINARY_DIR}/yaml-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/yaml-build" BINARY_DIR "${CMAKE_BINARY_DIR}/yaml-build"
CONFIGURE_COMMAND <SOURCE_DIR>/configure ${CONFIGURE_REQUEST_PIC} CONFIGURE_COMMAND <SOURCE_DIR>/configure ${CONFIGURE_REQUEST_PIC}
CXX=${CMAKE_CXX_COMPILER} CXX=${CMAKE_CXX_COMPILER} CC=${CMAKE_C_COMPILER}
CC=${CMAKE_C_COMPILER} --prefix=<INSTALL_DIR> --disable-shared ${YAML_CROSS_HOST}
--prefix=<INSTALL_DIR> --disable-shared
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libyaml${CMAKE_STATIC_LIBRARY_SUFFIX} BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libyaml${CMAKE_STATIC_LIBRARY_SUFFIX}
TEST_COMMAND "") TEST_COMMAND "")

View File

@ -24,7 +24,7 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
Name: liblammps@LAMMPS_MACHINE@ Name: liblammps@LAMMPS_MACHINE@
Description: Large-scale Atomic/Molecular Massively Parallel Simulator Library Description: Large-scale Atomic/Molecular Massively Parallel Simulator Library
URL: http://lammps.sandia.gov URL: https://www.lammps.org
Version: @PROJECT_VERSION@ Version: @PROJECT_VERSION@
Requires: Requires:
Libs: -L${libdir} -llammps@LAMMPS_MACHINE@ Libs: -L${libdir} -llammps@LAMMPS_MACHINE@

View File

@ -5,13 +5,13 @@ set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MESSAGE MISC MLIAP MOLECULE GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MESSAGE MISC MLIAP MOLECULE
MPIIO MSCG OPT PERI PLUGIN POEMS PYTHON QEQ REPLICA RIGID SHOCK SNAP SPIN MPIIO MSCG OPT PERI PLUGIN POEMS PYTHON QEQ REPLICA RIGID SHOCK SNAP SPIN
SRD VORONOI SRD VORONOI
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVARS USER-ADIOS USER-ATC USER-AWPMD USER-BROWNIAN USER-BOCS USER-CGDNA USER-CGSDK
USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-INTEL USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
USER-LB USER-MANIFOLD USER-MEAMC USER-MESODPD USER-MESONT USER-MGPT USER-HDNNP USER-INTEL USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESODPD
USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP USER-PACE USER-PHONON USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP USER-REACTION USER-REAXC USER-PACE USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP USER-RANN
USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH
USER-VTK USER-YAFF) USER-TALLY USER-UEF USER-VTK USER-YAFF)
foreach(PKG ${ALL_PACKAGES}) foreach(PKG ${ALL_PACKAGES})
set(PKG_${PKG} OFF CACHE BOOL "" FORCE) set(PKG_${PKG} OFF CACHE BOOL "" FORCE)

View File

@ -7,13 +7,13 @@ set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MESSAGE MISC MLIAP MOLECULE GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MESSAGE MISC MLIAP MOLECULE
MPIIO MSCG OPT PERI PLUGIN POEMS PYTHON QEQ REPLICA RIGID SHOCK SNAP SPIN MPIIO MSCG OPT PERI PLUGIN POEMS PYTHON QEQ REPLICA RIGID SHOCK SNAP SPIN
SRD VORONOI SRD VORONOI
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-COLVARS USER-ADIOS USER-ATC USER-AWPMD USER-BROWNIAN USER-BOCS USER-CGDNA USER-CGSDK
USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-INTEL USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
USER-LB USER-MANIFOLD USER-MEAMC USER-MESODPD USER-MESONT USER-MGPT USER-HDNNP USER-INTEL USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESODPD
USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP USER-PACE USER-PHONON USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP USER-REACTION USER-REAXC USER-PACE USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP USER-RANN
USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH
USER-VTK USER-YAFF) USER-TALLY USER-UEF USER-VTK USER-YAFF)
foreach(PKG ${ALL_PACKAGES}) foreach(PKG ${ALL_PACKAGES})
set(PKG_${PKG} ON CACHE BOOL "" FORCE) set(PKG_${PKG} ON CACHE BOOL "" FORCE)

View File

@ -4,10 +4,18 @@ set(CMAKE_CXX_COMPILER "clang++" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "clang" CACHE STRING "" FORCE) set(CMAKE_C_COMPILER "clang" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE) set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE) set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(MPI_CXX "clang++" CACHE STRING "" FORCE) set(MPI_CXX "clang++" CACHE STRING "" FORCE)
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
unset(HAVE_OMP_H_INCLUDE CACHE)
unset(HAVE_OMP_H_INCLUDE CACHE)
set(OpenMP_C "clang" CACHE STRING "" FORCE) set(OpenMP_C "clang" CACHE STRING "" FORCE)
set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "" FORCE) set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "" FORCE)
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE) set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)

View File

@ -1,7 +1,7 @@
# preset that turns on packages with automatic downloads of sources of potentials # Preset that turns on packages with automatic downloads of sources or potentials.
# compilation of libraries like Plumed or ScaFaCoS can take a considerable amount of time. # Compilation of libraries like Plumed or ScaFaCoS can take a considerable amount of time.
set(ALL_PACKAGES KIM LATTE MSCG VORONOI USER-PLUMED USER-SCAFACOS USER-SMD USER-MESONT) set(ALL_PACKAGES KIM LATTE MSCG VORONOI USER-PLUMED USER-SCAFACOS USER-SMD USER-MESONT USER-MDI USER-PACE)
foreach(PKG ${ALL_PACKAGES}) foreach(PKG ${ALL_PACKAGES})
set(PKG_${PKG} ON CACHE BOOL "" FORCE) set(PKG_${PKG} ON CACHE BOOL "" FORCE)
@ -9,9 +9,11 @@ endforeach()
set(DOWNLOAD_KIM ON CACHE BOOL "" FORCE) set(DOWNLOAD_KIM ON CACHE BOOL "" FORCE)
set(DOWNLOAD_LATTE ON CACHE BOOL "" FORCE) set(DOWNLOAD_LATTE ON CACHE BOOL "" FORCE)
set(DOWNLOAD_MDI ON CACHE BOOL "" FORCE)
set(DOWNLOAD_MSCG ON CACHE BOOL "" FORCE) set(DOWNLOAD_MSCG ON CACHE BOOL "" FORCE)
set(DOWNLOAD_VORO ON CACHE BOOL "" FORCE) set(DOWNLOAD_VORO ON CACHE BOOL "" FORCE)
set(DOWNLOAD_EIGEN3 ON CACHE BOOL "" FORCE) set(DOWNLOAD_EIGEN3 ON CACHE BOOL "" FORCE)
set(DOWNLOAD_PACE ON CACHE BOOL "" FORCE)
set(DOWNLOAD_PLUMED ON CACHE BOOL "" FORCE) set(DOWNLOAD_PLUMED ON CACHE BOOL "" FORCE)
set(DOWNLOAD_SCAFACOS ON CACHE BOOL "" FORCE) set(DOWNLOAD_SCAFACOS ON CACHE BOOL "" FORCE)

View File

@ -3,10 +3,20 @@
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)
set(CMAKE_Fortran_COMPILER "ifort" CACHE STRING "" FORCE) set(CMAKE_Fortran_COMPILER "ifort" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(MPI_CXX "icpc" CACHE STRING "" FORCE) set(MPI_CXX "icpc" CACHE STRING "" FORCE)
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) 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" CACHE STRING "" FORCE)
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE) set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)

View File

@ -1,9 +1,9 @@
set(WIN_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU set(WIN_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
GRANULAR KSPACE LATTE MANYBODY MC MISC MLIAP MOLECULE OPT GRANULAR KSPACE LATTE MANYBODY MC MISC MLIAP MOLECULE OPT
PERI POEMS QEQ REPLICA RIGID SHOCK SNAP SPIN SRD VORONOI PERI POEMS QEQ REPLICA RIGID SHOCK SNAP SPIN SRD VORONOI
USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK USER-ATC USER-AWPMD USER-BOCS USER-BROWNIAN USER-CGDNA USER-CGSDK
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP
USER-FEP USER-INTEL USER-MANIFOLD USER-MEAMC USER-MESODPD USER-HDNNP USER-INTEL USER-MANIFOLD USER-MDI USER-MEAMC USER-MESODPD
USER-MESONT USER-MISC USER-MGPT USER-MOFFF USER-MOLFILE USER-OMP USER-MESONT USER-MISC USER-MGPT USER-MOFFF USER-MOLFILE USER-OMP
USER-PHONON USER-PTM USER-QTB USER-REACTION USER-REAXC USER-PHONON USER-PTM USER-QTB USER-REACTION USER-REAXC
USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF

View File

@ -3,9 +3,9 @@
set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MESSAGE MPIIO MSCG set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MESSAGE MPIIO MSCG
PYTHON VORONOI PYTHON VORONOI
USER-ADIOS USER-ATC USER-AWPMD USER-H5MD USER-LB USER-MOLFILE USER-MESONT USER-ADIOS USER-ATC USER-AWPMD USER-H5MD USER-HDNNP USER-LB USER-MOLFILE
USER-NETCDF USER-PACE USER-PLUMED USER-QMMM USER-QUIP USER-SCAFACOS USER-MESONT USER-MDI USER-NETCDF USER-PACE USER-PLUMED USER-QMMM USER-QUIP
USER-SMD USER-VTK) USER-SCAFACOS USER-SMD USER-VTK)
foreach(PKG ${PACKAGES_WITH_LIB}) foreach(PKG ${PACKAGES_WITH_LIB})
set(PKG_${PKG} OFF CACHE BOOL "" FORCE) set(PKG_${PKG} OFF CACHE BOOL "" FORCE)

View File

@ -1,12 +1,22 @@
# preset that will enable the LLVM based Intel compilers with support for MPI and OpenMP (on Linux boxes) # preset that will enable the LLVM based Intel compilers with support for MPI and OpenMP and Fortran (on Linux boxes)
set(CMAKE_CXX_COMPILER "icpx" CACHE STRING "" FORCE) set(CMAKE_CXX_COMPILER "icpx" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "icx" CACHE STRING "" FORCE) set(CMAKE_C_COMPILER "icx" CACHE STRING "" FORCE)
set(CMAKE_Fortran_COMPILER "ifx" CACHE STRING "" FORCE) set(CMAKE_Fortran_COMPILER "ifx" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
set(MPI_CXX "icpx" CACHE STRING "" FORCE) set(MPI_CXX "icpx" CACHE STRING "" FORCE)
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE) 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" CACHE STRING "" FORCE)
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE) set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)

View File

@ -10,7 +10,6 @@ endif
BUILDDIR = ${CURDIR} BUILDDIR = ${CURDIR}
RSTDIR = $(BUILDDIR)/src RSTDIR = $(BUILDDIR)/src
VENV = $(BUILDDIR)/docenv VENV = $(BUILDDIR)/docenv
TXT2RST = $(VENV)/bin/txt2rst
ANCHORCHECK = $(VENV)/bin/rst_anchor_check ANCHORCHECK = $(VENV)/bin/rst_anchor_check
SPHINXCONFIG = $(BUILDDIR)/utils/sphinx-config SPHINXCONFIG = $(BUILDDIR)/utils/sphinx-config
MATHJAX = $(SPHINXCONFIG)/_static/mathjax MATHJAX = $(SPHINXCONFIG)/_static/mathjax
@ -59,7 +58,7 @@ SPHINXEXTRA = -E -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiproc
# we only want to use explicitly listed files. # we only want to use explicitly listed files.
DOXYFILES = $(shell sed -n -e 's/\#.*$$//' -e '/^ *INPUT \+=/,/^[A-Z_]\+ \+=/p' doxygen/Doxyfile.in | sed -e 's/@LAMMPS_SOURCE_DIR@/..\/src/g' -e 's/\\//g' -e 's/ \+/ /' -e 's/[A-Z_]\+ \+= *\(YES\|NO\|\)//') DOXYFILES = $(shell sed -n -e 's/\#.*$$//' -e '/^ *INPUT \+=/,/^[A-Z_]\+ \+=/p' doxygen/Doxyfile.in | sed -e 's/@LAMMPS_SOURCE_DIR@/..\/src/g' -e 's/\\//g' -e 's/ \+/ /' -e 's/[A-Z_]\+ \+= *\(YES\|NO\|\)//')
.PHONY: help clean-all clean clean-spelling epub mobi rst html pdf spelling anchor_check style_check xmlgen .PHONY: help clean-all clean clean-spelling epub mobi rst html pdf spelling anchor_check style_check char_check xmlgen
# ------------------------------------------ # ------------------------------------------
@ -68,7 +67,6 @@ help:
@echo "Please use \`make <target>' where <target> is one of" @echo "Please use \`make <target>' where <target> is one of"
@echo " html create HTML pages in html dir" @echo " html create HTML pages in html dir"
@echo " pdf create Manual.pdf in this dir" @echo " pdf create Manual.pdf in this dir"
@echo " fetch fetch HTML and PDF files from LAMMPS web site"
@echo " epub create ePUB format manual for e-book readers" @echo " epub create ePUB format manual for e-book readers"
@echo " mobi convert ePUB to MOBI format manual for e-book readers (e.g. Kindle)" @echo " mobi convert ePUB to MOBI format manual for e-book readers (e.g. Kindle)"
@echo " (requires ebook-convert tool from calibre)" @echo " (requires ebook-convert tool from calibre)"
@ -185,13 +183,6 @@ pdf: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
@rm -rf latex/PDF/.[sg]* @rm -rf latex/PDF/.[sg]*
@echo "Build finished. Manual.pdf is in this directory." @echo "Build finished. Manual.pdf is in this directory."
fetch:
@rm -rf html_www Manual_www.pdf
@curl -s -o Manual_www.pdf http://lammps.sandia.gov/doc/Manual.pdf
@curl -s -o lammps-doc.tar.gz http://lammps.sandia.gov/tars/lammps-doc.tar.gz
@tar xzf lammps-doc.tar.gz
@rm -f lammps-doc.tar.gz
anchor_check : $(ANCHORCHECK) anchor_check : $(ANCHORCHECK)
@(\ @(\
. $(VENV)/bin/activate ;\ . $(VENV)/bin/activate ;\
@ -213,6 +204,9 @@ package_check : $(VENV)
deactivate ;\ deactivate ;\
) )
char_check :
@( env LC_ALL=C grep -n '[^ -~]' $(RSTDIR)/*.rst && exit 1 || : )
xmlgen : doxygen/xml/index.xml xmlgen : doxygen/xml/index.xml
doxygen/Doxyfile: doxygen/Doxyfile.in doxygen/Doxyfile: doxygen/Doxyfile.in
@ -238,7 +232,7 @@ $(VENV):
$(MATHJAX): $(MATHJAX):
@git clone -b 3.1.4 -c advice.detachedHead=0 --depth 1 git://github.com/mathjax/MathJax.git $@ @git clone -b 3.1.4 -c advice.detachedHead=0 --depth 1 git://github.com/mathjax/MathJax.git $@
$(TXT2RST) $(ANCHORCHECK): $(VENV) $(ANCHORCHECK): $(VENV)
@( \ @( \
. $(VENV)/bin/activate; \ . $(VENV)/bin/activate; \
(cd utils/converters;\ (cd utils/converters;\

View File

@ -25,16 +25,11 @@ github-development-workflow.md notes on the LAMMPS development workflow
include-file-conventions.md notes on LAMMPS' include file conventions include-file-conventions.md notes on LAMMPS' include file conventions
documentation_conventions.md notes on writing documentation for LAMMPS documentation_conventions.md notes on writing documentation for LAMMPS
If you downloaded a LAMMPS tarball from lammps.sandia.gov, then the html If you downloaded a LAMMPS tarball from www.lammps.org, then the html
folder and the PDF manual should be included. If you downloaded LAMMPS folder and the PDF manual should be included. If you downloaded LAMMPS
from GitHub then you either need to download them or build them. from GitHub then you either need to build them.
(a) You can "fetch" the current HTML and PDF files from the LAMMPS web You can build the HTML and PDF files yourself, by typing "make html"
site. Just type "make fetch". This should create a html_www directory
and Manual_www.pdf file. These will always represent the latest published
patch/development version of LAMMPS.
(b) You can build the HTML and PDF files yourself, by typing "make html"
or by "make pdf", respectively. This requires various tools and files. or by "make pdf", respectively. This requires various tools and files.
Some of them have to be installed (more on that below). For the rest the Some of them have to be installed (more on that below). For the rest the
build process will attempt to download and install into a python virtual build process will attempt to download and install into a python virtual
@ -78,4 +73,4 @@ the tool 'ebook-convert' from the 'calibre' e-book management software
---------------- ----------------
More details this can be found in the manual itself. The online More details this can be found in the manual itself. The online
version is at: https://lammps.sandia.gov/doc/Manual_build.html version is at: https://docs.lammps.org/Build_manual.html

View File

@ -1,4 +1,4 @@
.TH LAMMPS "8 April 2021" "2021-04-08" .TH LAMMPS "27 May 2021" "2021-05-27"
.SH NAME .SH NAME
.B LAMMPS .B LAMMPS
\- Molecular Dynamics Simulator. \- Molecular Dynamics Simulator.
@ -34,7 +34,7 @@ semiconductors) and coarse-grained or mesoscopic systems. It can be used to
model atoms or, more generically, as a parallel particle simulator at the model atoms or, more generically, as a parallel particle simulator at the
atomic, meso, or continuum scale. atomic, meso, or continuum scale.
See https://lammps.sandia.gov/ for more information and documentation. See https://www.lammps.org/ for more information and documentation.
.SH EXECUTABLE NAME .SH EXECUTABLE NAME
The The

View File

@ -1129,6 +1129,9 @@ Bibliography
**(Sutmann)** **(Sutmann)**
Sutmann, Arnold, Fahrenberger, et. al., Physical review / E 88(6), 063308 (2013) Sutmann, Arnold, Fahrenberger, et. al., Physical review / E 88(6), 063308 (2013)
**(Sutmann)** G. Sutmann. ScaFaCoS - a Scalable library of Fast Coulomb Solvers for particle Systems.
In Bajaj, Zavattieri, Koslowski, Siegmund, Proceedings of the Society of Engineering Science 51st Annual Technical Meeting. 2014.
**(Swinburne)** **(Swinburne)**
Swinburne and Marinica, Physical Review Letters, 120, 1 (2018) Swinburne and Marinica, Physical Review Letters, 120, 1 (2018)
@ -1285,9 +1288,6 @@ Bibliography
**(Wennberg)** **(Wennberg)**
Wennberg, Murtola, Hess, Lindahl, J Chem Theory Comput, 9, 3527 (2013). Wennberg, Murtola, Hess, Lindahl, J Chem Theory Comput, 9, 3527 (2013).
**(Who)**
Who, Author2, Author3, J of Long Range Solvers, 35, 164-177 (2012).
**(Wicaksono1)** **(Wicaksono1)**
Wicaksono, Sinclair, Militzer, Computational Materials Science, 117, 397-405 (2016). Wicaksono, Sinclair, Militzer, Computational Materials Science, 117, 397-405 (2016).

View File

@ -28,6 +28,28 @@ variable VERBOSE set to 1:
---------- ----------
.. _clang-tidy:
Enable static code analysis with clang-tidy
-------------------------------------------
The `clang-tidy tool <https://clang.llvm.org/extra/clang-tidy/>`_ is a
static code analysis tool to diagnose (and potentially fix) typical
programming errors or coding style violations. It has a modular framework
of tests that can be adjusted to help identifying problems before they
become bugs and also assist in modernizing large code bases (like LAMMPS).
It can be enabled for all C++ code with the following CMake flag
.. code-block:: bash
-D ENABLE_CLANG_TIDY=value # value = no (default) or yes
With this flag enabled all source files will be processed twice, first to
be compiled and then to be analyzed. Please note that the analysis can be
significantly more time consuming than the compilation itself.
----------
.. _iwyu_processing: .. _iwyu_processing:
Report missing and unneeded '#include' statements Report missing and unneeded '#include' statements
@ -447,12 +469,24 @@ The following options are available.
.. code-block:: bash .. code-block:: bash
make check-whitespace # generate coverage report in HTML format make check-whitespace # search for files with whitespace issues
make fix-whitespace # generate coverage report in XML format make fix-whitespace # correct whitespace issues in files
make check-permissions # delete folder with HTML format coverage report make check-homepage # search for files with old LAMMPS homepage URLs
make fix-permissions # delete all collected coverage data and HTML output make fix-homepage # correct LAMMPS homepage URLs in files
make check-permissions # search for files with permissions issues
make fix-permissions # correct permissions issues in files
For the code in the ``unittest`` tree we are using the `clang-format` For the code in the ``unittest`` and ``src`` trees we are transitioning
tool (Clang version 8.0 or later is required). If available, the source to use the `clang-format` tool to assist with having a consistent source
code files in the ``unittest`` tree can be updated to conform to the code style. The `clang-format` command bundled with Clang version 8.0
formatting settings using ``make format-tests``. or later is required. The configuration is in files ``.clang-format``
in the respective folders. Since the modifications from `clang-format`
can be significant and - especially for "legacy style code" - also is
not always improving readability, a large number of files currently have
a ``// clang-format off`` at the top, which will disable the processing.
Over time, files will be refactored and updated to that `clang-format`
may be applied to them (at least in part).
If `clang-format` is available, the source code files in the ``unittest``
tree can be updated to conform to the formatting settings using
``make format-tests`` and the files in ``src`` with ``make format-src``.

View File

@ -48,6 +48,7 @@ This is the list of packages that may require additional steps.
* :ref:`USER-AWPMD <user-awpmd>` * :ref:`USER-AWPMD <user-awpmd>`
* :ref:`USER-COLVARS <user-colvars>` * :ref:`USER-COLVARS <user-colvars>`
* :ref:`USER-H5MD <user-h5md>` * :ref:`USER-H5MD <user-h5md>`
* :ref:`USER-HDNNP <user-hdnnp>`
* :ref:`USER-INTEL <user-intel>` * :ref:`USER-INTEL <user-intel>`
* :ref:`USER-MDI <user-mdi>` * :ref:`USER-MDI <user-mdi>`
* :ref:`USER-MESONT <user-mesont>` * :ref:`USER-MESONT <user-mesont>`
@ -456,6 +457,9 @@ They must be specified in uppercase.
* - ZEN2 * - ZEN2
- HOST - HOST
- AMD Zen2 class CPU (AVX 2) - AMD Zen2 class CPU (AVX 2)
* - ZEN3
- HOST
- AMD Zen3 class CPU (AVX 2)
* - ARMV80 * - ARMV80
- HOST - HOST
- ARMv8.0 Compatible CPU - ARMv8.0 Compatible CPU
@ -559,7 +563,7 @@ They must be specified in uppercase.
- GPU - GPU
- Intel GPUs Gen9+ - Intel GPUs Gen9+
This list was last updated for version 3.4 of the Kokkos library. This list was last updated for version 3.4.1 of the Kokkos library.
.. tabs:: .. tabs::
@ -1470,6 +1474,60 @@ the HDF5 library.
---------- ----------
.. _user-hdnnp:
USER-HDNNP package
---------------------------------
To build with the USER-HDNNP package it is required to download and build the
external `n2p2 <https://github.com/CompPhysVienna/n2p2>`__ library ``v2.1.4``
(or higher). The LAMMPS build process offers an automatic download and
compilation of *n2p2* or allows you to choose the installation directory of
*n2p2* manually. Please see the boxes below for the CMake and traditional build
system for detailed information.
In case of a manual installation of *n2p2* you only need to build the *n2p2* core
library ``libnnp`` and interface library ``libnnpif``. When using GCC it should
suffice to execute ``make libnnpif`` in the *n2p2* ``src`` directory. For more
details please see ``lib/hdnnp/README`` and the `n2p2 build documentation
<https://compphysvienna.github.io/n2p2/topics/build.html>`__.
.. tabs::
.. tab:: CMake build
.. code-block:: bash
-D DOWNLOAD_N2P2=value # download n2p2 for build, value = no (default) or yes
-D N2P2_DIR=path # n2p2 base directory (only needed if a custom location)
If ``DOWNLOAD_N2P2`` is set, the *n2p2* library will be downloaded and
built inside the CMake build directory. If the *n2p2* library is already
on your system (in a location CMake cannot find it), set the ``N2P2_DIR``
to path where *n2p2* is located. If *n2p2* is located directly in
``lib/hdnnp/n2p2`` it will be automatically found by CMake.
.. tab:: Traditional make
You can download and build the *n2p2* library manually if you prefer;
follow the instructions in ``lib/hdnnp/README``\ . You can also do it in
one step from the ``lammps/src`` dir, using a command like these, which
simply invoke the ``lib/hdnnp/Install.py`` script with the specified args:
.. code-block:: bash
$ make lib-hdnnp # print help message
$ make lib-hdnnp args="-b" # download and build in lib/hdnnp/n2p2-...
$ make lib-hdnnp args="-b -v 2.1.4" # download and build specific version
$ make lib-hdnnp args="-p /usr/local/n2p2" # use the existing n2p2 installation in /usr/local/n2p2
Note that 3 symbolic (soft) links, ``includelink``, ``liblink`` and
``Makefile.lammps``, will be created in ``lib/hdnnp`` to point to
``n2p2/include``, ``n2p2/lib`` and ``n2p2/lib/Makefile.lammps-extra``,
respectively. When LAMMPS is built in ``src`` it will use these links.
----------
.. _user-intel: .. _user-intel:
USER-INTEL package USER-INTEL package

View File

@ -28,29 +28,18 @@ If you downloaded LAMMPS as a tarball from `the LAMMPS website <lws_>`_,
the html folder and the PDF files should be included. the html folder and the PDF files should be included.
If you downloaded LAMMPS from the public git repository, then the HTML If you downloaded LAMMPS from the public git repository, then the HTML
and PDF files are not included. Instead you need to create them, in one and PDF files are not included. You can build the HTML or PDF files yourself,
of two ways: by typing ``make html`` or ``make pdf`` in the ``doc`` folder. This requires
various tools and files. Some of them have to be installed (see below). For
a. You can "fetch" the current HTML and PDF files from the LAMMPS web the rest the build process will attempt to download and install them into
site. Just type ``make fetch``. This should download a ``html_www`` a python virtual environment and local folders.
directory and a ``Manual_www.pdf`` file. Note that if new LAMMPS features
have been added more recently than the date of your LAMMPS version, the
fetched documentation will include those changes (but your source code
will not, unless you update your local repository).
b. You can build the HTML or PDF files yourself, by typing ``make html``
or ``make pdf`` in the ``doc`` folder. This requires various tools
and files. Some of them have to be installed (see below). For the
rest the build process will attempt to download and install them into
a python virtual environment and local folders.
A current version of the manual (latest patch release, aka unstable A current version of the manual (latest patch release, aka unstable
branch) is is available online at: branch) is is available online at:
`https://lammps.sandia.gov/doc/Manual.html `https://docs.lammps.org/Manual.html <https://docs.lammps.org/Manual.html>`_.
<https://lammps.sandia.gov/doc/Manual.html>`_ A version of the manual A version of the manual corresponding to the ongoing development (aka master branch)
corresponding to the ongoing development (aka master branch) is is available online at: `https://docs.lammps.org/latest/
available online at: `https://docs.lammps.org/ <https://docs.lammps.org/latest/>`_
<https://docs.lammps.org/>`_
Build using GNU make Build using GNU make
-------------------- --------------------
@ -257,4 +246,4 @@ the file ``lammps/doc/utils/sphinx-config/false_positives.txt``.
.. _rst: https://docutils.readthedocs.io/en/sphinx-docs/user/rst/quickstart.html .. _rst: https://docutils.readthedocs.io/en/sphinx-docs/user/rst/quickstart.html
.. _lws: https://lammps.sandia.gov .. _lws: https://www.lammps.org

View File

@ -30,17 +30,17 @@ steps, as explained on the :doc:`Build extras <Build_extras>` page.
These links take you to the extra instructions for those select These links take you to the extra instructions for those select
packages: packages:
+--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------+----------------------------------+--------------------------------+--------------------------------+
| :ref:`COMPRESS <compress>` | :ref:`GPU <gpu>` | :ref:`KIM <kim>` | :ref:`KOKKOS <kokkos>` | :ref:`LATTE <latte>` | :ref:`MESSAGE <message>` | | :ref:`COMPRESS <compress>` | :ref:`GPU <gpu>` | :ref:`KIM <kim>` | :ref:`KOKKOS <kokkos>` | :ref:`LATTE <latte>` | :ref:`MESSAGE <message>` |
+--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------+----------------------------------+--------------------------------+--------------------------------+
| :ref:`MSCG <mscg>` | :ref:`OPT <opt>` | :ref:`POEMS <poems>` | :ref:`PYTHON <python>` | :ref:`VORONOI <voronoi>` | :ref:`USER-ADIOS <user-adios>` | | :ref:`MSCG <mscg>` | :ref:`OPT <opt>` | :ref:`POEMS <poems>` | :ref:`PYTHON <python>` | :ref:`VORONOI <voronoi>` | :ref:`USER-ADIOS <user-adios>` |
+--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------+----------------------------------+--------------------------------+--------------------------------+
| :ref:`USER-ATC <user-atc>` | :ref:`USER-AWPMD <user-awpmd>` | :ref:`USER-COLVARS <user-colvars>` | :ref:`USER-H5MD <user-h5md>` | :ref:`USER-INTEL <user-intel>` | :ref:`USER-MOLFILE <user-molfile>` | | :ref:`USER-ATC <user-atc>` | :ref:`USER-AWPMD <user-awpmd>` | :ref:`USER-COLVARS <user-colvars>` | :ref:`USER-H5MD <user-h5md>` | :ref:`USER-HDNNP <user-hdnnp>` | :ref:`USER-INTEL <user-intel>` |
+--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------+----------------------------------+--------------------------------+--------------------------------+
| :ref:`USER-NETCDF <user-netcdf>` | :ref:`USER-PACE <user-pace>` | :ref:`USER-PLUMED <user-plumed>` | :ref:`USER-OMP <user-omp>` | :ref:`USER-QMMM <user-qmmm>` | :ref:`USER-QUIP <user-quip>` | | :ref:`USER-MOLFILE <user-molfile>` | :ref:`USER-NETCDF <user-netcdf>` | :ref:`USER-PACE <user-pace>` | :ref:`USER-PLUMED <user-plumed>` | :ref:`USER-OMP <user-omp>` | :ref:`USER-QMMM <user-qmmm>` |
+--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------+----------------------------------+--------------------------------+--------------------------------+
| :ref:`USER-SCAFACOS <user-scafacos>` | :ref:`USER-SMD <user-smd>` | :ref:`USER-VTK <user-vtk>` | | | | | :ref:`USER-QUIP <user-quip>` | :ref:`USER-SCAFACOS <user-scafacos>` | :ref:`USER-SMD <user-smd>` | :ref:`USER-VTK <user-vtk>` | | |
+--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ +--------------------------------------+--------------------------------------+------------------------------------+----------------------------------+--------------------------------+--------------------------------+
The mechanism for including packages is simple but different for CMake The mechanism for including packages is simple but different for CMake
versus make. versus make.

View File

@ -118,6 +118,7 @@ OPT.
* :doc:`gw/zbl <pair_gw>` * :doc:`gw/zbl <pair_gw>`
* :doc:`hbond/dreiding/lj (o) <pair_hbond_dreiding>` * :doc:`hbond/dreiding/lj (o) <pair_hbond_dreiding>`
* :doc:`hbond/dreiding/morse (o) <pair_hbond_dreiding>` * :doc:`hbond/dreiding/morse (o) <pair_hbond_dreiding>`
* :doc:`hdnnp <pair_hdnnp>`
* :doc:`ilp/graphene/hbn <pair_ilp_graphene_hbn>` * :doc:`ilp/graphene/hbn <pair_ilp_graphene_hbn>`
* :doc:`kolmogorov/crespi/full <pair_kolmogorov_crespi_full>` * :doc:`kolmogorov/crespi/full <pair_kolmogorov_crespi_full>`
* :doc:`kolmogorov/crespi/z <pair_kolmogorov_crespi_z>` * :doc:`kolmogorov/crespi/z <pair_kolmogorov_crespi_z>`
@ -226,6 +227,7 @@ OPT.
* :doc:`polymorphic <pair_polymorphic>` * :doc:`polymorphic <pair_polymorphic>`
* :doc:`python <pair_python>` * :doc:`python <pair_python>`
* :doc:`quip <pair_quip>` * :doc:`quip <pair_quip>`
* :doc:`rann <pair_rann>`
* :doc:`reax/c (ko) <pair_reaxc>` * :doc:`reax/c (ko) <pair_reaxc>`
* :doc:`rebo (io) <pair_airebo>` * :doc:`rebo (io) <pair_airebo>`
* :doc:`resquared (go) <pair_resquared>` * :doc:`resquared (go) <pair_resquared>`

View File

@ -5,8 +5,8 @@ If you are confident that you have found a bug in LAMMPS, please follow
the steps outlined below: the steps outlined below:
* Check the `New features and bug fixes * Check the `New features and bug fixes
<https://lammps.sandia.gov/bug.html>`_ section of the `LAMMPS WWW site <https://www.lammps.org/bug.html>`_ section of the `LAMMPS WWW site
<https://lammps.sandia.gov>`_ or the <https://www.lammps.org>`_ or the
`GitHub Releases page <https://github.com/lammps/lammps/releases>`_ to `GitHub Releases page <https://github.com/lammps/lammps/releases>`_ to
see if the bug has already been addressed in a patch release. see if the bug has already been addressed in a patch release.
* Check that your issue can be reproduced with the latest development * Check that your issue can be reproduced with the latest development
@ -17,7 +17,7 @@ the steps outlined below:
if your issue has already been reported and if it is still open. if your issue has already been reported and if it is still open.
* Check the `GitHub Pull Requests page <https://github.com/lammps/lammps/pulls>`_ * Check the `GitHub Pull Requests page <https://github.com/lammps/lammps/pulls>`_
to see if there is already a fix for your bug pending. to see if there is already a fix for your bug pending.
* Check the `mailing list archives <https://lammps.sandia.gov/mail.html>`_ * Check the `mailing list archives <https://www.lammps.org/mail.html>`_
to see if the issue has been discussed before. to see if the issue has been discussed before.
If none of these steps yields any useful information, please file a new If none of these steps yields any useful information, please file a new

View File

@ -39,7 +39,7 @@ figure out your physics or numerical mistakes, like choosing too big a
timestep, specifying erroneous force field coefficients, or putting 2 timestep, specifying erroneous force field coefficients, or putting 2
atoms on top of each other! If you run into errors that LAMMPS atoms on top of each other! If you run into errors that LAMMPS
does not catch that you think it should flag, please send an email to does not catch that you think it should flag, please send an email to
the `developers <https://lammps.sandia.gov/authors.html>`_. the `developers <https://www.lammps.org/authors.html>`_.
If you get an error message about an invalid command in your input If you get an error message about an invalid command in your input
script, you can determine what command is causing the problem by script, you can determine what command is causing the problem by

View File

@ -3871,7 +3871,7 @@ Doc page with :doc:`WARNING messages <Errors_warnings>`
*Fix orient/fcc found self twice* *Fix orient/fcc found self twice*
The neighbor lists used by fix orient/fcc are messed up. If this The neighbor lists used by fix orient/fcc are messed up. If this
error occurs, it is likely a bug, so send an email to the error occurs, it is likely a bug, so send an email to the
`developers <https://lammps.sandia.gov/authors.html>`_. `developers <https://www.lammps.org/authors.html>`_.
*Fix peri neigh does not exist* *Fix peri neigh does not exist*
Somehow a fix that the pair style defines has been deleted. Somehow a fix that the pair style defines has been deleted.

View File

@ -18,7 +18,7 @@ files and image files.
If you uncomment the :doc:`dump <dump>` command in the input script, a If you uncomment the :doc:`dump <dump>` command in the input script, a
text dump file will be produced, which can be animated by various text dump file will be produced, which can be animated by various
`visualization programs <https://lammps.sandia.gov/viz.html>`_. `visualization programs <https://www.lammps.org/viz.html>`_.
If you uncomment the :doc:`dump image <dump>` command in the input If you uncomment the :doc:`dump image <dump>` command in the input
script, and assuming you have built LAMMPS with a JPG library, JPG script, and assuming you have built LAMMPS with a JPG library, JPG
@ -27,7 +27,7 @@ be quickly post-processed into a movie using commands described on the
:doc:`dump image <dump_image>` doc page. :doc:`dump image <dump_image>` doc page.
Animations of many of the examples can be viewed on the Movies section Animations of many of the examples can be viewed on the Movies section
of the `LAMMPS web site <https://lammps.sandia.gov/movies.html>`_. of the `LAMMPS web site <https://www.lammps.org/movies.html>`_.
There are two kinds of sub-directories in the examples folder. Lower There are two kinds of sub-directories in the examples folder. Lower
case named directories contain one or a few simple, quick-to-run case named directories contain one or a few simple, quick-to-run
@ -168,7 +168,7 @@ Here is how you can run and visualize one of the sample problems:
Running the simulation produces the files *dump.indent* and Running the simulation produces the files *dump.indent* and
*log.lammps*\ . You can visualize the dump file of snapshots with a *log.lammps*\ . You can visualize the dump file of snapshots with a
variety of third-party tools highlighted on the variety of third-party tools highlighted on the
`Visualization <https://lammps.sandia.gov/viz.html>`_ page of the LAMMPS `Visualization <https://www.lammps.org/viz.html>`_ page of the LAMMPS
web site. web site.
If you uncomment the :doc:`dump image <dump_image>` line(s) in the input If you uncomment the :doc:`dump image <dump_image>` line(s) in the input

View File

@ -3,7 +3,7 @@ Howto discussions
These doc pages describe how to perform various tasks with LAMMPS, These doc pages describe how to perform various tasks with LAMMPS,
both for users and developers. The both for users and developers. The
`glossary <https://lammps.sandia.gov/glossary.html>`_ website page also lists MD `glossary <https://www.lammps.org/glossary.html>`_ website page also lists MD
terminology with links to corresponding LAMMPS manual pages. The terminology with links to corresponding LAMMPS manual pages. The
example input scripts included in the examples directory of the LAMMPS example input scripts included in the examples directory of the LAMMPS
distribution and highlighted on the :doc:`Examples <Examples>` doc page distribution and highlighted on the :doc:`Examples <Examples>` doc page

View File

@ -1,7 +1,7 @@
Using LAMMPS with the MDI library for code coupling Using LAMMPS with the MDI library for code coupling
=================================================== ===================================================
..note:: .. note::
This Howto doc page will eventually replace the This Howto doc page will eventually replace the
:doc:`Howto client/server <Howto_client_server>` doc page. :doc:`Howto client/server <Howto_client_server>` doc page.
@ -65,8 +65,8 @@ how the 2 codes are launched to communicate by MPI:
.. code-block:: bash .. code-block:: bash
% mpirun -np 2 lmp_mpi -mdi "-role DRIVER -name d -method MPI" \ % mpirun -np 2 lmp_mpi -mdi "-role DRIVER -name d -method MPI" \
-in in.aimd : -np 16 pw.x -in qe.in -mdi "-role ENGINE -name e -method MPI" -in in.aimd : -np 16 pw.x -in qe.in -mdi "-role ENGINE -name e -method MPI"
In this case LAMMPS runs on 2 processors (MPI tasks), ``pw.x`` runs on 16 In this case LAMMPS runs on 2 processors (MPI tasks), ``pw.x`` runs on 16
processors. processors.
@ -75,8 +75,8 @@ Here is how the 2 codes are launched to communicate by sockets:
.. code-block:: bash .. code-block:: bash
% mpirun -np 2 lmp_mpi -mdi "-role DRIVER -name d -method TCP -port 8021" -in in.aimd % mpirun -np 2 lmp_mpi -mdi "-role DRIVER -name d -method TCP -port 8021" -in in.aimd
% mpirun -np 16 pw.x -in qe.in -mdi "-role ENGINE -name e -method TCP -port 8021 -hostname localhost" % mpirun -np 16 pw.x -in qe.in -mdi "-role ENGINE -name e -method TCP -port 8021 -hostname localhost"
These commands could be issued in different windows on a desktop These commands could be issued in different windows on a desktop
machine. Or in the same window, if the first command is ended with machine. Or in the same window, if the first command is ended with
@ -99,7 +99,7 @@ Examples scripts for using LAMMPS as an MDI engine are in the
examples/mdi directory. See the README file in that directory for examples/mdi directory. See the README file in that directory for
instructions on how to run the examples. instructions on how to run the examples.
..note:: .. note::
Work is underway to add commands that allow LAMMPS to be used as an Work is underway to add commands that allow LAMMPS to be used as an
MDI driver, e.g. for the AIMD example discussed above. Example MDI driver, e.g. for the AIMD example discussed above. Example
@ -109,7 +109,7 @@ instructions on how to run the examples.
If LAMMPS is used as a stand-alone engine it should set up the system If LAMMPS is used as a stand-alone engine it should set up the system
it will be modeling in its input script, then invoke the it will be modeling in its input script, then invoke the
:doc:`mdi/engine <mdi_engine>` command. This will put LAMMPS into :doc:`mdi/engine <mdi_engine>` command. This will put LAMMPS into
engine mode where it waits for messages and data from the driver. "engine mode" where it waits for messages and data from the driver.
When the driver sends an "EXIT" command, LAMMPS will exit engine mode When the driver sends an "EXIT" command, LAMMPS will exit engine mode
and the input script will continue. and the input script will continue.

View File

@ -201,7 +201,7 @@ build configuration and any binaries generated during compilation.
There are countless ways to compile LAMMPS. It is beyond the scope of this There are countless ways to compile LAMMPS. It is beyond the scope of this
tutorial. If you want to find out more about what can be enabled, please tutorial. If you want to find out more about what can be enabled, please
consult the extensive `documentation <https://lammps.sandia.gov/doc/Build_cmake.html>`_. consult the extensive `documentation <https://docs.lammps.org/Build_cmake.html>`_.
To compile a minimal version of LAMMPS, we're going to use a preset. To compile a minimal version of LAMMPS, we're going to use a preset.
Presets are a way to specify a collection of CMake options using a file. Presets are a way to specify a collection of CMake options using a file.

View File

@ -78,7 +78,7 @@ this is as follows.
$ git checkout tagID $ git checkout tagID
Stable versions and what tagID to use for a particular stable version Stable versions and what tagID to use for a particular stable version
are discussed on `this page <https://lammps.sandia.gov/bug.html#version>`_. are discussed on `this page <https://www.lammps.org/bug.html#version>`_.
Note that this command will print some warnings, because in order to get Note that this command will print some warnings, because in order to get
back to the latest revision and to be able to update with ``git pull`` back to the latest revision and to be able to update with ``git pull``
again, you will need to do ``git checkout unstable`` (or again, you will need to do ``git checkout unstable`` (or

View File

@ -10,7 +10,7 @@ If you prefer to download a tarball, as described on the
:doc:`tarball download <Install_tarball>` page, you can stay current by :doc:`tarball download <Install_tarball>` page, you can stay current by
downloading "patch files" when new patch releases are made. A link to downloading "patch files" when new patch releases are made. A link to
a patch file is posted on the a patch file is posted on the
`bug fixes and new feature page <https://lammps.sandia.gov/bug.html>`_ `bug fixes and new feature page <https://www.lammps.org/bug.html>`_
of the LAMMPS website, along of the LAMMPS website, along
with a list of changed files and details about what is in the new patch with a list of changed files and details about what is in the new patch
release. This page explains how to apply the patch file to your local release. This page explains how to apply the patch file to your local

View File

@ -4,10 +4,10 @@ Download source and documentation as a tarball
You can download a current LAMMPS tarball from the `download page <download_>`_ You can download a current LAMMPS tarball from the `download page <download_>`_
of the `LAMMPS website <lws_>`_. of the `LAMMPS website <lws_>`_.
.. _download: https://lammps.sandia.gov/download.html .. _download: https://www.lammps.org/download.html
.. _bug: https://lammps.sandia.gov/bug.html .. _bug: https://www.lammps.org/bug.html
.. _older: https://lammps.sandia.gov/tars .. _older: https://www.lammps.org/tars
.. _lws: https://lammps.sandia.gov .. _lws: https://www.lammps.org
You have two choices of tarballs, either the most recent stable You have two choices of tarballs, either the most recent stable
release or the most current patch release. Stable releases occur a release or the most current patch release. Stable releases occur a

View File

@ -11,14 +11,14 @@ University:
* Richard Berger, richard.berger at temple.edu * Richard Berger, richard.berger at temple.edu
.. _sjp: http://www.cs.sandia.gov/~sjplimp .. _sjp: http://www.cs.sandia.gov/~sjplimp
.. _lws: https://lammps.sandia.gov .. _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,
and Ray Shan, now at Materials Design. and Ray Shan, now at Materials Design.
---------- ----------
The `Authors page <https://lammps.sandia.gov/authors.html>`_ of the The `Authors page <https://www.lammps.org/authors.html>`_ of the
`LAMMPS website <lws_>`_ has a comprehensive list of all the individuals `LAMMPS website <lws_>`_ has a comprehensive list of all the individuals
who have contributed code for a new feature or command or tool to who have contributed code for a new feature or command or tool to
LAMMPS. LAMMPS.
@ -46,7 +46,7 @@ general-purpose as it is without their expertise and efforts.
---------- ----------
As discussed on the `History page <https://lammps.sandia.gov/history.html>`_ of the website, LAMMPS As discussed on the `History page <https://www.lammps.org/history.html>`_ of the website, LAMMPS
originated as a cooperative project between DOE labs and industrial originated as a cooperative project between DOE labs and industrial
partners. Folks involved in the design and testing of the original partners. Folks involved in the design and testing of the original
version of LAMMPS were the following: version of LAMMPS were the following:

View File

@ -38,8 +38,8 @@ In addition there are DOIs for individual stable releases. Currently there are:
Home page Home page
^^^^^^^^^ ^^^^^^^^^
The LAMMPS website at `https://lammps.sandia.gov/ The LAMMPS website at `https://www.lammps.org/
<https://lammps.sandia.gov>`_ is the canonical location for information <https://www.lammps.org>`_ is the canonical location for information
about LAMMPS and its features. about LAMMPS and its features.
Citing contributions Citing contributions

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>` doc page for details on tools packaged with the :doc:`Tools <Tools>` doc page for details on tools packaged with
LAMMPS. The `Pre/post processing page <http:/lammps.sandia.gov/prepost.html>`_ of the LAMMPS website LAMMPS. The `Pre/post processing page <http:/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
@ -67,7 +67,7 @@ Here are suggestions on how to perform these tasks:
them to an external program, `FFmpeg <https://www.ffmpeg.org>`_ to generate them to an external program, `FFmpeg <https://www.ffmpeg.org>`_ to generate
movies from them. For high-quality, interactive visualization there are movies from them. For high-quality, interactive visualization there are
many excellent and free tools available. See the many excellent and free tools available. See the
`Visualization Tools <https://lammps.sandia.gov/viz.html>`_ page of the `Visualization Tools <https://www.lammps.org/viz.html>`_ page of the
LAMMPS website for LAMMPS website for
visualization packages that can process LAMMPS output data. visualization packages that can process LAMMPS output data.
* **Plotting:** See the next bullet about Pizza.py as well as the * **Plotting:** See the next bullet about Pizza.py as well as the

View File

@ -2,18 +2,20 @@ LAMMPS open-source license
-------------------------- --------------------------
LAMMPS is a freely-available open-source code, distributed under the LAMMPS is a freely-available open-source code, distributed under the
terms of the `GNU Public License <gnu_>`_, which means you can use or terms of the `GNU Public License Version 2 <gpl_>`_, which means you can
modify the code however you wish. use or modify the code however you wish for your own purposes, but have
to adhere to certain rules when redistributing it or software derived
from it or that includes parts of it.
LAMMPS comes with no warranty of any kind. As each source file states LAMMPS comes with no warranty of any kind. As each source file states
in its header, it is a copyrighted code that is distributed free-of- in its header, it is a copyrighted code that is distributed free-of-
charge, under the terms of the `GNU Public License <gnu_>`_ (GPL). This charge, under the terms of the `GNU Public License Version 2 <gpl_>`_
is often referred to as open-source distribution - see (GPLv2). This is often referred to as open-source distribution - see
`www.gnu.org <gnuorg_>`_ or `www.opensource.org <opensource_>`_. The legal `www.gnu.org <gnuorg_>`_ or `www.opensource.org <opensource_>`_. The
text of the GPL is in the LICENSE file included in the LAMMPS legal text of the GPL is in the LICENSE file included in the LAMMPS
distribution. distribution.
.. _gnu: http://www.gnu.org/copyleft/gpl.html .. _gpl: https://github.com/lammps/lammps/blob/master/LICENSE
.. _gnuorg: http://www.gnu.org .. _gnuorg: http://www.gnu.org
@ -24,14 +26,14 @@ Here is a summary of what the GPL means for LAMMPS users:
(1) Anyone is free to use, modify, or extend LAMMPS in any way they (1) Anyone is free to use, modify, or extend LAMMPS in any way they
choose, including for commercial purposes. choose, including for commercial purposes.
(2) If you distribute a modified version of LAMMPS, it must remain (2) If you **distribute** a modified version of LAMMPS, it must remain
open-source, meaning you distribute it under the terms of the GPL. open-source, meaning you distribute **all** of it under the terms of
You should clearly annotate such a code as a derivative version of the GPL. You should clearly annotate such a code as a derivative version
LAMMPS. of LAMMPS.
(3) If you release any code that includes LAMMPS source code, then it (3) If you release any code that includes or uses LAMMPS source code,
must also be open-sourced, meaning you distribute it under the terms then it must also be open-sourced, meaning you distribute it under
of the GPL. the terms of the GPL.
(4) If you give LAMMPS files to someone else, the GPL LICENSE file and (4) If you give LAMMPS files to someone else, the GPL LICENSE file and
source file headers (including the copyright and GPL notices) should source file headers (including the copyright and GPL notices) should

View File

@ -16,10 +16,10 @@ shared-memory boxes and distributed-memory clusters and
supercomputers. supercomputers.
.. _mpi: https://en.wikipedia.org/wiki/Message_Passing_Interface .. _mpi: https://en.wikipedia.org/wiki/Message_Passing_Interface
.. _lws: https://lammps.sandia.gov .. _lws: https://www.lammps.org
LAMMPS is written in C++. Earlier versions were written in F77 and LAMMPS is written in C++. Earlier versions were written in F77 and
F90. See the `History page <https://lammps.sandia.gov/history.html>`_ of F90. See the `History page <https://www.lammps.org/history.html>`_ of
the website for details. All versions can be downloaded from the the website for details. All versions can be downloaded from the
`LAMMPS website <lws_>`_. `LAMMPS website <lws_>`_.

View File

@ -5,31 +5,31 @@ The `LAMMPS website <lws_>`_ has a variety of additional info about
LAMMPS, beyond what is in this manual. Some other useful resources LAMMPS, beyond what is in this manual. Some other useful resources
available online are listed below. available online are listed below.
.. _lws: https://lammps.sandia.gov .. _lws: https://www.lammps.org
* `Brief intro and recently added significant features <lws_>`_ * `Brief intro and recently added significant features <lws_>`_
* `List of features <https://lammps.sandia.gov/doc/Intro_features.html>`_ * `List of features <https://docs.lammps.org/Intro_features.html>`_
* `List of non-features <https://lammps.sandia.gov/doc/Intro_nonfeatures.html>`_ * `List of non-features <https://docs.lammps.org/Intro_nonfeatures.html>`_
* `Recent bug fixes and new features <https://lammps.sandia.gov/bug.html>`_ * `Recent bug fixes and new features <https://www.lammps.org/bug.html>`_
* `Download info <https://lammps.sandia.gov/download.html>`_ * `Download info <https://www.lammps.org/download.html>`_
* `GitHub site <https://github.com/lammps/lammps>`_ * `GitHub site <https://github.com/lammps/lammps>`_
* `SourceForge site <https://sourceforge.net/projects/lammps>`_ * `SourceForge site <https://sourceforge.net/projects/lammps>`_
* `LAMMPS open-source license <https://lammps.sandia.gov/doc/Intro_opensource.html>`_ * `LAMMPS open-source license <https://docs.lammps.org/Intro_opensource.html>`_
* `Glossary of terms relevant to LAMMPS <https://lammps.sandia.gov/glossary.html>`_ * `Glossary of terms relevant to LAMMPS <https://www.lammps.org/glossary.html>`_
* `LAMMPS highlights with images <https://lammps.sandia.gov/pictures.html>`_ * `LAMMPS highlights with images <https://www.lammps.org/pictures.html>`_
* `LAMMPS highlights with movies <https://lammps.sandia.gov/movies.html>`_ * `LAMMPS highlights with movies <https://www.lammps.org/movies.html>`_
* `Mail list <https://lammps.sandia.gov/mail.html>`_ * `Mail list <https://www.lammps.org/mail.html>`_
* `Workshops <https://lammps.sandia.gov/workshops.html>`_ * `Workshops <https://www.lammps.org/workshops.html>`_
* `Tutorials <https://lammps.sandia.gov/tutorials.html>`_ * `Tutorials <https://www.lammps.org/tutorials.html>`_
* `Pre- and post-processing tools for LAMMPS <https://lammps.sandia.gov/prepost.html>`_ * `Pre- and post-processing tools for LAMMPS <https://www.lammps.org/prepost.html>`_
* `Other software usable with LAMMPS <https://lammps.sandia.gov/offsite.html>`_ * `Other software usable with LAMMPS <https://www.lammps.org/offsite.html>`_
* `Viz tools usable with LAMMPS <https://lammps.sandia.gov/viz.html>`_ * `Viz tools usable with LAMMPS <https://www.lammps.org/viz.html>`_
* `Benchmark performance <https://lammps.sandia.gov/bench.html>`_ * `Benchmark performance <https://www.lammps.org/bench.html>`_
* `Publications that have cited LAMMPS <https://lammps.sandia.gov/papers.html>`_ * `Publications that have cited LAMMPS <https://www.lammps.org/papers.html>`_
* `Authors of LAMMPS <https://lammps.sandia.gov/authors.html>`_ * `Authors of LAMMPS <https://www.lammps.org/authors.html>`_
* `History of LAMMPS development <https://lammps.sandia.gov/history.html>`_ * `History of LAMMPS development <https://www.lammps.org/history.html>`_
* `Funding for LAMMPS <https://lammps.sandia.gov/funding.html>`_ * `Funding for LAMMPS <https://www.lammps.org/funding.html>`_

View File

@ -1,6 +1,6 @@
###################################### ########################################
LAMMPS version |version| Documentation LAMMPS Documentation (|version| version)
###################################### ########################################
LAMMPS stands for **L**\ arge-scale **A**\ tomic/**M**\ olecular LAMMPS stands for **L**\ arge-scale **A**\ tomic/**M**\ olecular
**M**\ assively **P**\ arallel **S**\ imulator. **M**\ assively **P**\ arallel **S**\ imulator.
@ -11,11 +11,12 @@ computers. It was developed originally at Sandia National
Laboratories, a US Department of Energy facility. The majority of Laboratories, a US Department of Energy facility. The majority of
funding for LAMMPS has come from the US Department of Energy (DOE). funding for LAMMPS has come from the US Department of Energy (DOE).
LAMMPS is an open-source code, distributed freely under the terms of LAMMPS is an open-source code, distributed freely under the terms of
the GNU Public License (GPL). the GNU Public License Version 2 (GPLv2).
The `LAMMPS website <lws_>`_ has a variety of information about the The `LAMMPS website <lws_>`_ has a variety of information about the
code. It includes links to an on-line version of this manual, a code. It includes links to an on-line version of this manual, a
`mailing list <https://lammps.sandia.gov/mail.html>`_ where users can `mailing list <https://www.lammps.org/mail.html>`_ and
`online forum <https://www.lammps.org/forum.html>`_ where users can
post questions, and a `GitHub site <https://github.com/lammps/lammps>`_ post questions, and a `GitHub site <https://github.com/lammps/lammps>`_
where all LAMMPS development is coordinated. where all LAMMPS development is coordinated.
@ -30,11 +31,13 @@ please :ref:`see this note <webbrowser>`.
----------- -----------
The manual is organized in two parts: The manual is organized in three parts:
1) the :ref:`User Guide <user_documentation>` for how to install 1) the :ref:`User Guide <user_documentation>` for how to install
and use LAMMPS and 2) the :ref:`Programmer Guide <programmer_documentation>` and use LAMMPS, 2) the :ref:`Programmer Guide <programmer_documentation>`
for how to write programs using the LAMMPS library from different for how to write programs using the LAMMPS library from different
programming languages and how to modify and extend LAMMPS. programming languages and how to modify and extend LAMMPS, and 3) the
:ref:`Command Reference <command_reference>` which includes detailed
descriptions of all commands included in the LAMMPS code.
.. only:: html .. only:: html
@ -42,7 +45,7 @@ programming languages and how to modify and extend LAMMPS.
:doc:`this page <Commands_all>` since it gives quick access :doc:`this page <Commands_all>` since it gives quick access
the documentation for all LAMMPS commands. the documentation for all LAMMPS commands.
.. _lws: https://lammps.sandia.gov .. _lws: https://www.lammps.org
---------- ----------
@ -89,10 +92,15 @@ Programmer Guide
Modify Modify
Developer Developer
*****************
Command Reference
*****************
.. _command_reference:
.. toctree:: .. toctree::
:caption: Index :name: reference
:name: index :maxdepth: 1
:hidden: :caption: Command Reference
commands_list commands_list
fixes fixes
@ -118,10 +126,10 @@ Indices and tables
.. admonition:: Web Browser Compatibility .. admonition:: Web Browser Compatibility
The HTML version of the manual makes use of advanced features present The HTML version of the manual makes use of advanced features present
int "modern" web browsers. This can lead to incompatibilities with older in "modern" web browsers. This can lead to incompatibilities with older
web browsers (released more than 4 years ago) and specific vendor browsers web browsers (released more than 4 years ago) and specific vendor browsers
(e.g. Internet Explorer on Windows; Microsoft Edge works well though) (e.g. Internet Explorer on Windows; Microsoft Edge works well though)
where parts of the pages are not rendered as expected (e.g. the layout is where parts of the pages are not rendered as expected (e.g. the layout is
broken or mathematical expressions not typeset). In that case we broken or mathematical expressions not typeset). In that case we
recommend to install/use a different/newer web browser or use recommend to install/use a different/newer web browser or use
the `PDF version of the manual <https://lammps.sandia.gov/doc/Manual.pdf>`_. the `PDF version of the manual <https://docs.lammps.org/Manual.pdf>`_.

View File

@ -5,7 +5,7 @@ The LAMMPS "version" is the date when it was released, such as 1 May
2014. LAMMPS is updated continuously. Whenever we fix a bug or add a 2014. LAMMPS is updated continuously. Whenever we fix a bug or add a
feature, we release it in the next *patch* release, which are feature, we release it in the next *patch* release, which are
typically made every couple of weeks. Info on patch releases are on typically made every couple of weeks. Info on patch releases are on
`this website page <https://lammps.sandia.gov/bug.html>`_. Every few `this website page <https://www.lammps.org/bug.html>`_. Every few
months, the latest patch release is subjected to more thorough testing months, the latest patch release is subjected to more thorough testing
and labeled as a *stable* version. and labeled as a *stable* version.

View File

@ -2,7 +2,7 @@ Submitting new features for inclusion in LAMMPS
=============================================== ===============================================
We encourage users to submit new features or modifications for LAMMPS to We encourage users to submit new features or modifications for LAMMPS to
`the core developers <https://lammps.sandia.gov/authors.html>`_ so they `the core developers <https://www.lammps.org/authors.html>`_ so they
can be added to the LAMMPS distribution. The preferred way to manage and can be added to the LAMMPS distribution. The preferred way to manage and
coordinate this is via the LAMMPS project on `GitHub coordinate this is via the LAMMPS project on `GitHub
<https://github.com/lammps/lammps>`_. Please see the :doc:`GitHub <https://github.com/lammps/lammps>`_. Please see the :doc:`GitHub
@ -10,15 +10,15 @@ Tutorial <Howto_github>` for a demonstration on how to do that. An
alternative is to contact the LAMMPS developers or the indicated alternative is to contact the LAMMPS developers or the indicated
developer of a package or feature directly and send in your contribution developer of a package or feature directly and send in your contribution
via e-mail, but that can add a significant delay on getting your via e-mail, but that can add a significant delay on getting your
contribution included, depending on how busy the developer is you contribution included, depending on how busy the respective developer
contact, how complex a task it would be to integrate that code, and how is, how complex a task it would be to integrate that code, and how
many - if any - changes are required before the code can be included. many - if any - changes are required before the code can be included.
For any larger modifications or programming project, you are encouraged For any larger modifications or programming project, you are encouraged
to contact the LAMMPS developers ahead of time, in order to discuss to contact the LAMMPS developers ahead of time in order to discuss
implementation strategies and coding guidelines, that will make it implementation strategies and coding guidelines. That will make it
easier to integrate your contribution and result in less work for easier to integrate your contribution and results in less work for
everybody involved. You are also encouraged to search through the list everybody involved. You are also encouraged to search through the list
of `open issues on GitHub <https://github.com/lammps/lammps/issues>`_ of `open issues on GitHub <https://github.com/lammps/lammps/issues>`_
and submit a new issue for a planned feature, so you would not duplicate and submit a new issue for a planned feature, so you would not duplicate
the work of others (and possibly get scooped by them) or have your work the work of others (and possibly get scooped by them) or have your work
@ -31,21 +31,22 @@ send an e-mail to ``slack@lammps.org`` explaining what part of LAMMPS
you are working on. Only discussions related to LAMMPS development are you are working on. Only discussions related to LAMMPS development are
tolerated, so this is **NOT** for people that look for help with compiling, tolerated, so this is **NOT** for people that look for help with compiling,
installing, or using LAMMPS. Please contact the `lammps-users mailing installing, or using LAMMPS. Please contact the `lammps-users mailing
list <https://lammps.sandia.gov/mail.html>`_ for those purposes instead. list <https://www.lammps.org/mail.html>`_ for those purposes instead.
How quickly your contribution will be integrated depends largely on how How quickly your contribution will be integrated depends largely on how
much effort it will cause to integrate and test it, how much it requires much effort it will cause to integrate and test it, how many and what
changes to the core codebase, and of how much interest it is to the kind of changes it requires to the core codebase, and of how much
larger LAMMPS community. Please see below for a checklist of typical interest it is to the larger LAMMPS community. Please see below for a
requirements. Once you have prepared everything, see the :doc:`LAMMPS GitHub checklist of typical requirements. Once you have prepared everything,
Tutorial <Howto_github>` page for instructions on see the :doc:`LAMMPS GitHub Tutorial <Howto_github>` page for
how to submit your changes or new files through a GitHub pull instructions on how to submit your changes or new files through a GitHub
request. If you prefer to submit patches or full files, you should first pull request. If you prefer to submit patches or full files, you should
make certain, that your code works correctly with the latest patch-level first make certain, that your code works correctly with the latest
version of LAMMPS and contains all bug fixes from it. Then create a patch-level version of LAMMPS and contains all bug fixes from it. Then
gzipped tar file of all changed or added files or a corresponding patch create a gzipped tar file of all changed or added files or a
file using 'diff -u' or 'diff -c' and compress it with gzip. Please only corresponding patch file using 'diff -u' or 'diff -c' and compress it
use gzip compression, as this works well on all platforms. with gzip. Please only use gzip compression, as this works well and is
available on all platforms.
If the new features/files are broadly useful we may add them as core If the new features/files are broadly useful we may add them as core
files to LAMMPS or as part of a :doc:`standard package <Packages_standard>`. Else we will add them as a files to LAMMPS or as part of a :doc:`standard package <Packages_standard>`. Else we will add them as a
@ -57,13 +58,16 @@ added to the LAMMPS distribution. All the standard and user packages
are listed and described on the :doc:`Packages details <Packages_details>` doc page. are listed and described on the :doc:`Packages details <Packages_details>` doc page.
Note that by providing us files to release, you are agreeing to make Note that by providing us files to release, you are agreeing to make
them open-source, i.e. we can release them under the terms of the GPL, them open-source, i.e. we can release them under the terms of the GPL
used as a license for the rest of LAMMPS. See the :doc:`LAMMPS license (version 2), used as a license for the rest of LAMMPS. And as part of
<Intro_opensource>` doc page for details. a LGPL (version 2.1) distribution that we make available to developers
on request only and with files that are authorized for that kind of
distribution removed (e.g. interface to FFTW). See the
:doc:`LAMMPS license <Intro_opensource>` doc page for details.
With user packages and files, all we are really providing (aside from With user packages and files, all we are really providing (aside from
the fame and fortune that accompanies having your name in the source the fame and fortune that accompanies having your name in the source
code and on the `Authors page <https://lammps.sandia.gov/authors.html>`_ code and on the `Authors page <https://www.lammps.org/authors.html>`_
of the `LAMMPS WWW site <lws_>`_), is a means for you to distribute your of the `LAMMPS WWW site <lws_>`_), is a means for you to distribute your
work to the LAMMPS user community, and a mechanism for others to work to the LAMMPS user community, and a mechanism for others to
easily try out your new feature. This may help you find bugs or make easily try out your new feature. This may help you find bugs or make
@ -77,13 +81,13 @@ unusual event).
If you prefer to actively develop and support your add-on If you prefer to actively develop and support your add-on
feature yourself, then you may wish to make it available for download feature yourself, then you may wish to make it available for download
from your own website, as a user package that LAMMPS users can add to from your own website, as a user package that LAMMPS users can add to
their copy of LAMMPS. See the `Offsite LAMMPS packages and tools <https://lammps.sandia.gov/offsite.html>`_ page of the LAMMPS web their copy of LAMMPS. See the `Offsite LAMMPS packages and tools <https://www.lammps.org/offsite.html>`_ page of the LAMMPS web
site for examples of groups that do this. We are happy to advertise site for examples of groups that do this. We are happy to advertise
your package and web site from that page. Simply email the your package and web site from that page. Simply email the
`developers <https://lammps.sandia.gov/authors.html>`_ with info about `developers <https://www.lammps.org/authors.html>`_ with info about
your package and we will post it there. your package and we will post it there.
.. _lws: https://lammps.sandia.gov .. _lws: https://www.lammps.org
The previous sections of this doc page describe how to add new "style" The previous sections of this doc page describe how to add new "style"
files of various kinds to LAMMPS. Packages are simply collections of files of various kinds to LAMMPS. Packages are simply collections of
@ -92,7 +96,7 @@ LAMMPS input script. If designed correctly, these additions typically
do not require changes to the main core of LAMMPS; they are simply do not require changes to the main core of LAMMPS; they are simply
add-on files. If you think your new feature requires non-trivial add-on files. If you think your new feature requires non-trivial
changes in core LAMMPS files, you should `communicate with the changes in core LAMMPS files, you should `communicate with the
developers <https://lammps.sandia.gov/authors.html>`_, since we may or developers <https://www.lammps.org/authors.html>`_, since we may or
may not want to include those changes for some reason. An example of a may not want to include those changes for some reason. An example of a
trivial change is making a parent-class method "virtual" when you derive trivial change is making a parent-class method "virtual" when you derive
a new child class from it. a new child class from it.
@ -112,7 +116,7 @@ packages in the src directory for examples. If you are uncertain, please ask.
your contribution(s) to be added to main LAMMPS code or one of its your contribution(s) to be added to main LAMMPS code or one of its
standard packages, it needs to be written in a style compatible with standard packages, it needs to be written in a style compatible with
other LAMMPS source files. This means: 2-character indentation per other LAMMPS source files. This means: 2-character indentation per
level, **no tabs**\ , no lines over 80 characters. I/O is done via level, **no tabs**\ , no lines over 100 characters. I/O is done via
the C-style stdio library (mixing of stdio and iostreams is generally the C-style stdio library (mixing of stdio and iostreams is generally
discouraged), class header files should not import any system headers discouraged), class header files should not import any system headers
outside of <cstdio>, STL containers should be avoided in headers, outside of <cstdio>, STL containers should be avoided in headers,
@ -131,6 +135,31 @@ packages in the src directory for examples. If you are uncertain, please ask.
LAMMPS source files, including the use of the error class for error LAMMPS source files, including the use of the error class for error
and warning messages. and warning messages.
* To simplify reformatting contributed code in a way that is compatible
with the LAMMPS formatting styles, you can use clang-format (version 8
or later). The LAMMPS distribution includes a suitable ``.clang-format``
file which will be applied if you run ``clang-format -i some_file.cpp``
on your files inside the LAMMPS src tree. Please only reformat files
that you have contributed. For header files containing a
``SomeStyle(keyword, ClassName)`` macros it is required to have this
macro embedded with a pair of ``// clang-format off``, ``// clang-format on``
commends and the line must be terminated with a semi-colon (;).
Example:
.. code-block:: c++
#ifdef COMMAND_CLASS
// clang-format off
CommandStyle(run,Run);
// clang-format on
#else
#ifndef LMP_RUN_H
[...]
You may also use ``// clang-format on/off`` throughout your file
to protect sections of the file from being reformatted.
* If you want your contribution to be added as a user-contributed * If you want your contribution to be added as a user-contributed
feature, and it's a single file (actually a \*.cpp and \*.h file) it can feature, and it's a single file (actually a \*.cpp and \*.h file) it can
rapidly be added to the USER-MISC directory. Send us the one-line rapidly be added to the USER-MISC directory. Send us the one-line

View File

@ -79,6 +79,7 @@ page gives those details.
* :ref:`USER-EFF <PKG-USER-EFF>` * :ref:`USER-EFF <PKG-USER-EFF>`
* :ref:`USER-FEP <PKG-USER-FEP>` * :ref:`USER-FEP <PKG-USER-FEP>`
* :ref:`USER-H5MD <PKG-USER-H5MD>` * :ref:`USER-H5MD <PKG-USER-H5MD>`
* :ref:`USER-HDNNP <PKG-USER-HDNNP>`
* :ref:`USER-INTEL <PKG-USER-INTEL>` * :ref:`USER-INTEL <PKG-USER-INTEL>`
* :ref:`USER-LB <PKG-USER-LB>` * :ref:`USER-LB <PKG-USER-LB>`
* :ref:`USER-MANIFOLD <PKG-USER-MANIFOLD>` * :ref:`USER-MANIFOLD <PKG-USER-MANIFOLD>`
@ -99,6 +100,7 @@ page gives those details.
* :ref:`USER-QMMM <PKG-USER-QMMM>` * :ref:`USER-QMMM <PKG-USER-QMMM>`
* :ref:`USER-QTB <PKG-USER-QTB>` * :ref:`USER-QTB <PKG-USER-QTB>`
* :ref:`USER-QUIP <PKG-USER-QUIP>` * :ref:`USER-QUIP <PKG-USER-QUIP>`
* :ref:`USER-RANN <PKG-USER-RANN>`
* :ref:`USER-REACTION <PKG-USER-REACTION>` * :ref:`USER-REACTION <PKG-USER-REACTION>`
* :ref:`USER-REAXC <PKG-USER-REAXC>` * :ref:`USER-REAXC <PKG-USER-REAXC>`
* :ref:`USER-SCAFACOS <PKG-USER-SCAFACOS>` * :ref:`USER-SCAFACOS <PKG-USER-SCAFACOS>`
@ -133,8 +135,8 @@ particle models including ellipsoids, 2d lines, and 3d triangles.
* `doc/PDF/pair_resquared_extra.pdf <PDF/pair_resquared_extra.pdf>`_ * `doc/PDF/pair_resquared_extra.pdf <PDF/pair_resquared_extra.pdf>`_
* examples/ASPHERE * examples/ASPHERE
* examples/ellipse * examples/ellipse
* https://lammps.sandia.gov/movies.html#line * https://www.lammps.org/movies.html#line
* https://lammps.sandia.gov/movies.html#tri * https://www.lammps.org/movies.html#tri
---------- ----------
@ -330,7 +332,7 @@ This package has :ref:`specific installation instructions <gpu>` on the :doc:`Bu
* :doc:`package gpu <package>` * :doc:`package gpu <package>`
* :doc:`Commands <Commands_all>` pages (:doc:`pair <Commands_pair>`, :doc:`kspace <Commands_kspace>`) * :doc:`Commands <Commands_all>` pages (:doc:`pair <Commands_pair>`, :doc:`kspace <Commands_kspace>`)
for styles followed by (g) for styles followed by (g)
* `Benchmarks page <https://lammps.sandia.gov/bench.html>`_ of web site * `Benchmarks page <https://www.lammps.org/bench.html>`_ of web site
---------- ----------
@ -356,11 +358,11 @@ potentials.
* examples/granregion * examples/granregion
* examples/pour * examples/pour
* bench/in.chute * bench/in.chute
* https://lammps.sandia.gov/pictures.html#jamming * https://www.lammps.org/pictures.html#jamming
* https://lammps.sandia.gov/movies.html#hopper * https://www.lammps.org/movies.html#hopper
* https://lammps.sandia.gov/movies.html#dem * https://www.lammps.org/movies.html#dem
* https://lammps.sandia.gov/movies.html#brazil * https://www.lammps.org/movies.html#brazil
* https://lammps.sandia.gov/movies.html#granregion * https://www.lammps.org/movies.html#granregion
---------- ----------
@ -447,7 +449,7 @@ time via the "-sf kk" or "-suffix kk" :doc:`command-line switches <Run_options>`
:ref:`USER-INTEL <PKG-USER-INTEL>`, and :ref:`USER-OMP <PKG-USER-OMP>` packages, which :ref:`USER-INTEL <PKG-USER-INTEL>`, and :ref:`USER-OMP <PKG-USER-OMP>` packages, which
have styles optimized for CPUs, KNLs, and GPUs. have styles optimized for CPUs, KNLs, and GPUs.
You must have a C++11 compatible compiler to use this package. You must have a C++14 compatible compiler to use this package.
KOKKOS makes extensive use of advanced C++ features, which can KOKKOS makes extensive use of advanced C++ features, which can
expose compiler bugs, especially when compiling for maximum expose compiler bugs, especially when compiling for maximum
performance at high optimization levels. Please see the file performance at high optimization levels. Please see the file
@ -479,7 +481,7 @@ This package has :ref:`specific installation instructions <kokkos>` on the :doc:
* Search the :doc:`commands <Commands_all>` pages (:doc:`fix <Commands_fix>`, :doc:`compute <Commands_compute>`, * Search the :doc:`commands <Commands_all>` pages (:doc:`fix <Commands_fix>`, :doc:`compute <Commands_compute>`,
:doc:`pair <Commands_pair>`, :doc:`bond, angle, dihedral, improper <Commands_bond>`, :doc:`pair <Commands_pair>`, :doc:`bond, angle, dihedral, improper <Commands_bond>`,
:doc:`kspace <Commands_kspace>`) for styles followed by (k) :doc:`kspace <Commands_kspace>`) for styles followed by (k)
* `Benchmarks page <https://lammps.sandia.gov/bench.html>`_ of web site * `Benchmarks page <https://www.lammps.org/bench.html>`_ of web site
---------- ----------
@ -603,7 +605,7 @@ bonds, for performing atomic swaps, and performing grand-canonical MC
* :doc:`fix tfmc <fix_tfmc>` * :doc:`fix tfmc <fix_tfmc>`
* :doc:`fix widom <fix_widom>` * :doc:`fix widom <fix_widom>`
* :doc:`pair_style dsmc <pair_dsmc>` * :doc:`pair_style dsmc <pair_dsmc>`
* https://lammps.sandia.gov/movies.html#gcmc * https://www.lammps.org/movies.html#gcmc
---------- ----------
@ -660,8 +662,8 @@ listing, "ls src/MISC", to see the list of commands.
* :doc:`fix viscosity <fix_viscosity>` * :doc:`fix viscosity <fix_viscosity>`
* examples/KAPPA * examples/KAPPA
* examples/VISCOSITY * examples/VISCOSITY
* https://lammps.sandia.gov/pictures.html#ttm * https://www.lammps.org/pictures.html#ttm
* https://lammps.sandia.gov/movies.html#evaporation * https://www.lammps.org/movies.html#evaporation
---------- ----------
@ -816,7 +818,7 @@ This package has :ref:`specific installation instructions <opt>` on the :doc:`Bu
* :doc:`OPT package <Speed_opt>` * :doc:`OPT package <Speed_opt>`
* :doc:`Section 2.6 -sf opt <Run_options>` * :doc:`Section 2.6 -sf opt <Run_options>`
* Search the :doc:`pair style <Commands_pair>` page for styles followed by (t) * Search the :doc:`pair style <Commands_pair>` page for styles followed by (t)
* `Benchmarks page <https://lammps.sandia.gov/bench.html>`_ of web site * `Benchmarks page <https://www.lammps.org/bench.html>`_ of web site
---------- ----------
@ -847,7 +849,7 @@ Foster (UTSA).
* :doc:`compute damage/atom <compute_damage_atom>` * :doc:`compute damage/atom <compute_damage_atom>`
* :doc:`compute plasticity/atom <compute_plasticity_atom>` * :doc:`compute plasticity/atom <compute_plasticity_atom>`
* examples/peri * examples/peri
* https://lammps.sandia.gov/movies.html#peri * https://www.lammps.org/movies.html#peri
---------- ----------
@ -1008,8 +1010,8 @@ Also several computes which calculate properties of rigid bodies.
* examples/ASPHERE * examples/ASPHERE
* examples/rigid * examples/rigid
* bench/in.rhodo * bench/in.rhodo
* https://lammps.sandia.gov/movies.html#box * https://www.lammps.org/movies.html#box
* https://lammps.sandia.gov/movies.html#star * https://www.lammps.org/movies.html#star
---------- ----------
@ -1110,9 +1112,9 @@ colloidal particles.
* :doc:`fix wall/srd <fix_wall_srd>` * :doc:`fix wall/srd <fix_wall_srd>`
* examples/srd * examples/srd
* examples/ASPHERE * examples/ASPHERE
* https://lammps.sandia.gov/movies.html#tri * https://www.lammps.org/movies.html#tri
* https://lammps.sandia.gov/movies.html#line * https://www.lammps.org/movies.html#line
* https://lammps.sandia.gov/movies.html#poly * https://www.lammps.org/movies.html#poly
---------- ----------
@ -1204,7 +1206,7 @@ This package has :ref:`specific installation instructions <user-atc>` on the :do
* src/USER-ATC/README * src/USER-ATC/README
* :doc:`fix atc <fix_atc>` * :doc:`fix atc <fix_atc>`
* examples/USER/atc * examples/USER/atc
* https://lammps.sandia.gov/pictures.html#atc * https://www.lammps.org/pictures.html#atc
---------- ----------
@ -1337,7 +1339,7 @@ acids.
* :doc:`pair_style lj/sdk/\* <pair_sdk>` * :doc:`pair_style lj/sdk/\* <pair_sdk>`
* :doc:`angle_style sdk <angle_sdk>` * :doc:`angle_style sdk <angle_sdk>`
* examples/USER/cgsdk * examples/USER/cgsdk
* https://lammps.sandia.gov/pictures.html#cg * https://www.lammps.org/pictures.html#cg
---------- ----------
@ -1574,7 +1576,7 @@ tools/eff; see its README file.
* examples/USER/eff * examples/USER/eff
* tools/eff/README * tools/eff/README
* tools/eff * tools/eff
* https://lammps.sandia.gov/movies.html#eff * https://www.lammps.org/movies.html#eff
---------- ----------
@ -1639,6 +1641,39 @@ This package has :ref:`specific installation instructions <user-h5md>` on the :d
---------- ----------
.. _PKG-USER-HDNNP:
USER-HDNNP package
------------------
**Contents:**
A :doc:`pair_style hdnnp <pair_hdnnp>` command which allows to use
high-dimensional neural network potentials (HDNNPs), a form of machine learning
potentials. HDNNPs must be carefully trained prior to their application in a
molecular dynamics simulation.
.. _n2p2: https://github.com/CompPhysVienna/n2p2
To use this package you must have the `n2p2 <n2p2_>`_ library installed and
compiled on your system.
**Author:** Andreas Singraber
**Install:**
This package has :ref:`specific installation instructions <user-hdnnp>` on the :doc:`Build extras <Build_extras>` page.
**Supporting info:**
* src/USER-HDNNP: filenames -> commands
* src/USER-HDNNP/README
* lib/hdnnp/README
* :doc:`pair_style hdnnp <pair_hdnnp>`
* examples/USER/hdnnp
----------
.. _PKG-USER-INTEL: .. _PKG-USER-INTEL:
USER-INTEL package USER-INTEL package
@ -1683,7 +1718,7 @@ This package has :ref:`specific installation instructions <user-intel>` on the :
* Search the :doc:`commands <Commands_all>` pages (:doc:`fix <Commands_fix>`, :doc:`compute <Commands_compute>`, * Search the :doc:`commands <Commands_all>` pages (:doc:`fix <Commands_fix>`, :doc:`compute <Commands_compute>`,
:doc:`pair <Commands_pair>`, :doc:`bond, angle, dihedral, improper <Commands_bond>`, :doc:`kspace <Commands_kspace>`) for styles followed by (i) :doc:`pair <Commands_pair>`, :doc:`bond, angle, dihedral, improper <Commands_bond>`, :doc:`kspace <Commands_kspace>`) for styles followed by (i)
* src/USER-INTEL/TEST * src/USER-INTEL/TEST
* `Benchmarks page <https://lammps.sandia.gov/bench.html>`_ of web site * `Benchmarks page <https://www.lammps.org/bench.html>`_ of web site
---------- ----------
@ -1788,7 +1823,7 @@ Waltham, MA, USA)
* :doc:`fix nve/manifold/rattle <fix_nve_manifold_rattle>` * :doc:`fix nve/manifold/rattle <fix_nve_manifold_rattle>`
* :doc:`fix nvt/manifold/rattle <fix_nvt_manifold_rattle>` * :doc:`fix nvt/manifold/rattle <fix_nvt_manifold_rattle>`
* examples/USER/manifold * examples/USER/manifold
* https://lammps.sandia.gov/movies.html#manifold * https://www.lammps.org/movies.html#manifold
---------- ----------
@ -1866,10 +1901,10 @@ algorithm.
* :doc:`pair_style tdpd <pair_mesodpd>` * :doc:`pair_style tdpd <pair_mesodpd>`
* :doc:`fix mvv/dpd <fix_mvv_dpd>` * :doc:`fix mvv/dpd <fix_mvv_dpd>`
* examples/USER/mesodpd * examples/USER/mesodpd
* https://lammps.sandia.gov/movies.html#mesodpd * https://www.lammps.org/movies.html#mesodpd
* examples/USER/meso * examples/USER/meso
* http://lammps.sandia.gov/movies.html#mesodpd * http://www.lammps.org/movies.html#mesodpd
---------- ----------
@ -2085,7 +2120,7 @@ This package has :ref:`specific installation instructions <user-omp>` on the :do
* Search the :doc:`commands <Commands_all>` pages (:doc:`fix <Commands_fix>`, :doc:`compute <Commands_compute>`, * Search the :doc:`commands <Commands_all>` pages (:doc:`fix <Commands_fix>`, :doc:`compute <Commands_compute>`,
:doc:`pair <Commands_pair>`, :doc:`bond, angle, dihedral, improper <Commands_bond>`, :doc:`pair <Commands_pair>`, :doc:`bond, angle, dihedral, improper <Commands_bond>`,
:doc:`kspace <Commands_kspace>`) for styles followed by (o) :doc:`kspace <Commands_kspace>`) for styles followed by (o)
* `Benchmarks page <https://lammps.sandia.gov/bench.html>`_ of web site * `Benchmarks page <https://www.lammps.org/bench.html>`_ of web site
---------- ----------
@ -2243,6 +2278,31 @@ This package has :ref:`specific installation instructions <user-quip>` on the :d
---------- ----------
.. _PKG-USER-RANN:
USER-RANN package
-----------------
**Contents:**
A pair style for using rapid atomistic neural network (RANN) potentials.
These neural network potentials work by first generating a series of symmetry
functions from the neighbor list and then using these values as the input layer
of a neural network.
**Authors:**
This package was written by Christopher Barrett
with contributions by Doyl Dickel, Mississippi State University.
**Supporting info:**
* src/USER-RANN: filenames -> commands
* :doc:`pair_style rann <pair_rann>`
* examples/USER/rann
----------
.. _PKG-USER-REACTION: .. _PKG-USER-REACTION:
USER-REACTION package USER-REACTION package
@ -2268,8 +2328,8 @@ molecules, and chiral-sensitive reactions.
* src/USER-REACTION/README * src/USER-REACTION/README
* :doc:`fix bond/react <fix_bond_react>` * :doc:`fix bond/react <fix_bond_react>`
* examples/USER/reaction * examples/USER/reaction
* `2017 LAMMPS Workshop <https://lammps.sandia.gov/workshops/Aug17/pdf/gissinger.pdf>`_ * `2017 LAMMPS Workshop <https://www.lammps.org/workshops/Aug17/pdf/gissinger.pdf>`_
* `2019 LAMMPS Workshop <https://lammps.sandia.gov/workshops/Aug19/talk_gissinger.pdf>`_ * `2019 LAMMPS Workshop <https://www.lammps.org/workshops/Aug19/talk_gissinger.pdf>`_
* reacter.org * reacter.org
---------- ----------
@ -2396,7 +2456,7 @@ This package has :ref:`specific installation instructions <user-smd>` on the :do
* src/USER-SMD/README * src/USER-SMD/README
* doc/PDF/SMD_LAMMPS_userguide.pdf * doc/PDF/SMD_LAMMPS_userguide.pdf
* examples/USER/smd * examples/USER/smd
* https://lammps.sandia.gov/movies.html#smd * https://www.lammps.org/movies.html#smd
---------- ----------
@ -2453,7 +2513,7 @@ Dynamics, Ernst Mach Institute, Germany).
* src/USER-SPH/README * src/USER-SPH/README
* doc/PDF/SPH_LAMMPS_userguide.pdf * doc/PDF/SPH_LAMMPS_userguide.pdf
* examples/USER/sph * examples/USER/sph
* https://lammps.sandia.gov/movies.html#sph * https://www.lammps.org/movies.html#sph
---------- ----------

View File

@ -39,13 +39,13 @@ package:
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+ +----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
| :ref:`DIPOLE <PKG-DIPOLE>` | point dipole particles | :doc:`pair_style lj/.../dipole <pair_dipole>` | dipole | no | | :ref:`DIPOLE <PKG-DIPOLE>` | point dipole particles | :doc:`pair_style lj/.../dipole <pair_dipole>` | dipole | no |
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+ +----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
| :ref:`GPU <PKG-GPU>` | GPU-enabled styles | :doc:`Section gpu <Speed_gpu>` | `Benchmarks <https://lammps.sandia.gov/bench.html>`_ | int | | :ref:`GPU <PKG-GPU>` | GPU-enabled styles | :doc:`Section gpu <Speed_gpu>` | `Benchmarks <https://www.lammps.org/bench.html>`_ | int |
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+ +----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
| :ref:`GRANULAR <PKG-GRANULAR>` | granular systems | :doc:`Howto granular <Howto_granular>` | pour | no | | :ref:`GRANULAR <PKG-GRANULAR>` | granular systems | :doc:`Howto granular <Howto_granular>` | pour | no |
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+ +----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
| :ref:`KIM <PKG-KIM>` | OpenKIM wrapper | :doc:`pair_style kim <pair_kim>` | kim | ext | | :ref:`KIM <PKG-KIM>` | OpenKIM wrapper | :doc:`pair_style kim <pair_kim>` | kim | ext |
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+ +----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
| :ref:`KOKKOS <PKG-KOKKOS>` | Kokkos-enabled styles | :doc:`Speed kokkos <Speed_kokkos>` | `Benchmarks <https://lammps.sandia.gov/bench.html>`_ | no | | :ref:`KOKKOS <PKG-KOKKOS>` | Kokkos-enabled styles | :doc:`Speed kokkos <Speed_kokkos>` | `Benchmarks <https://www.lammps.org/bench.html>`_ | no |
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+ +----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
| :ref:`KSPACE <PKG-KSPACE>` | long-range Coulombic solvers | :doc:`kspace_style <kspace_style>` | peptide | no | | :ref:`KSPACE <PKG-KSPACE>` | long-range Coulombic solvers | :doc:`kspace_style <kspace_style>` | peptide | no |
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+ +----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
@ -67,7 +67,7 @@ package:
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+ +----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
| :ref:`MSCG <PKG-MSCG>` | multi-scale coarse-graining wrapper | :doc:`fix mscg <fix_mscg>` | mscg | ext | | :ref:`MSCG <PKG-MSCG>` | multi-scale coarse-graining wrapper | :doc:`fix mscg <fix_mscg>` | mscg | ext |
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+ +----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
| :ref:`OPT <PKG-OPT>` | optimized pair styles | :doc:`Speed opt <Speed_opt>` | `Benchmarks <https://lammps.sandia.gov/bench.html>`_ | no | | :ref:`OPT <PKG-OPT>` | optimized pair styles | :doc:`Speed opt <Speed_opt>` | `Benchmarks <https://www.lammps.org/bench.html>`_ | no |
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+ +----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+
| :ref:`PERI <PKG-PERI>` | Peridynamics models | :doc:`pair_style peri <pair_peri>` | peri | no | | :ref:`PERI <PKG-PERI>` | Peridynamics models | :doc:`pair_style peri <pair_peri>` | peri | no |
+----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+ +----------------------------------+--------------------------------------+----------------------------------------------------+------------------------------------------------------+---------+

View File

@ -59,7 +59,9 @@ package:
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-H5MD <PKG-USER-H5MD>` | dump output via HDF5 | :doc:`dump h5md <dump_h5md>` | n/a | ext | | :ref:`USER-H5MD <PKG-USER-H5MD>` | dump output via HDF5 | :doc:`dump h5md <dump_h5md>` | n/a | ext |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-INTEL <PKG-USER-INTEL>` | optimized Intel CPU and KNL styles | :doc:`Speed intel <Speed_intel>` | `Benchmarks <https://lammps.sandia.gov/bench.html>`_ | no | | :ref:`USER-HDNNP <PKG-USER-HDNNP>` | High-dimensional neural network potentials | :doc:`pair_style hdnnp <pair_hdnnp>` | USER/hdnnp | ext |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-INTEL <PKG-USER-INTEL>` | optimized Intel CPU and KNL styles | :doc:`Speed intel <Speed_intel>` | `Benchmarks <https://www.lammps.org/bench.html>`_ | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-LB <PKG-USER-LB>` | Lattice Boltzmann fluid | :doc:`fix lb/fluid <fix_lb_fluid>` | USER/lb | no | | :ref:`USER-LB <PKG-USER-LB>` | Lattice Boltzmann fluid | :doc:`fix lb/fluid <fix_lb_fluid>` | USER/lb | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
@ -83,7 +85,7 @@ package:
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-NETCDF <PKG-USER-NETCDF>` | dump output via NetCDF | :doc:`dump netcdf <dump_netcdf>` | n/a | ext | | :ref:`USER-NETCDF <PKG-USER-NETCDF>` | dump output via NetCDF | :doc:`dump netcdf <dump_netcdf>` | n/a | ext |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-OMP <PKG-USER-OMP>` | OpenMP-enabled styles | :doc:`Speed omp <Speed_omp>` | `Benchmarks <https://lammps.sandia.gov/bench.html>`_ | no | | :ref:`USER-OMP <PKG-USER-OMP>` | OpenMP-enabled styles | :doc:`Speed omp <Speed_omp>` | `Benchmarks <https://www.lammps.org/bench.html>`_ | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-PACE <PKG-USER-PACE>` | Fast implementation of Atomic Cluster Expansion (ACE) potential | :doc:`pair pace <pair_pace>` | USER/pace | ext | | :ref:`USER-PACE <PKG-USER-PACE>` | Fast implementation of Atomic Cluster Expansion (ACE) potential | :doc:`pair pace <pair_pace>` | USER/pace | ext |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
@ -99,6 +101,8 @@ package:
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-QUIP <PKG-USER-QUIP>` | QUIP/libatoms interface | :doc:`pair_style quip <pair_quip>` | USER/quip | ext | | :ref:`USER-QUIP <PKG-USER-QUIP>` | QUIP/libatoms interface | :doc:`pair_style quip <pair_quip>` | USER/quip | ext |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-RANN <PKG-USER-RANN>` | rapid atomistic neural network (RANN) potentials | :doc:`pair rann <pair_rann>` | USER/rann | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-REACTION <PKG-USER-REACTION>` | chemical reactions in classical MD | :doc:`fix bond/react <fix_bond_react>` | USER/reaction | no | | :ref:`USER-REACTION <PKG-USER-REACTION>` | chemical reactions in classical MD | :doc:`fix bond/react <fix_bond_react>` | USER/reaction | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-REAXC <PKG-USER-REAXC>` | ReaxFF potential (C/C++) | :doc:`pair_style reaxc <pair_reaxc>` | reax | no | | :ref:`USER-REAXC <PKG-USER-REAXC>` | ReaxFF potential (C/C++) | :doc:`pair_style reaxc <pair_reaxc>` | reax | no |

View File

@ -10,6 +10,7 @@ letter abbreviation can be used:
* :ref:`-i or -in <file>` * :ref:`-i or -in <file>`
* :ref:`-k or -kokkos <run-kokkos>` * :ref:`-k or -kokkos <run-kokkos>`
* :ref:`-l or -log <log>` * :ref:`-l or -log <log>`
* :ref:`-mdi <mdi>`
* :ref:`-m or -mpicolor <mpicolor>` * :ref:`-m or -mpicolor <mpicolor>`
* :ref:`-c or -cite <cite>` * :ref:`-c or -cite <cite>`
* :ref:`-nc or -nocite <nocite>` * :ref:`-nc or -nocite <nocite>`
@ -196,9 +197,23 @@ Option -plog will override the name of the partition log files file.N.
---------- ----------
.. _mdi:
**-mdi 'multiple flags'**
This flag is only recognized and used when LAMMPS has support for the MolSSI
Driver Interface (MDI) included as part of the :ref:`USER-MDI <PKG-USER-MDI>`
package. This flag is specific to the MDI library and controls how LAMMPS
interacts with MDI. There are usually multiple flags that have to follow it
and those have to be placed in quotation marks. For more information about
how to launch LAMMPS in MDI client/server mode please refer to the
:doc:`MDI Howto <Howto_mdi>`.
----------
.. _mpicolor: .. _mpicolor:
**-mpicolor** color **-mpicolor color**
If used, this must be the first command-line argument after the LAMMPS If used, this must be the first command-line argument after the LAMMPS
executable name. It is only used when LAMMPS is launched by an mpirun executable name. It is only used when LAMMPS is launched by an mpirun
@ -223,7 +238,7 @@ links with from the lib/message directory. See the
.. _cite: .. _cite:
**-cite style or file name** **-cite style** or **file name**
Select how and where to output a reminder about citing contributions Select how and where to output a reminder about citing contributions
to the LAMMPS code that were used during the run. Available styles are to the LAMMPS code that were used during the run. Available styles are

View File

@ -12,7 +12,7 @@ accelerator packages provided with LAMMPS that contain code optimized
for certain kinds of hardware, including multi-core CPUs, GPUs, and for certain kinds of hardware, including multi-core CPUs, GPUs, and
Intel Xeon Phi co-processors. Intel Xeon Phi co-processors.
The `Benchmark page <https://lammps.sandia.gov/bench.html>`_ of the LAMMPS The `Benchmark page <https://www.lammps.org/bench.html>`_ of the LAMMPS
web site gives performance results for the various accelerator web site gives performance results for the various accelerator
packages discussed on the :doc:`Speed packages <Speed_packages>` doc packages discussed on the :doc:`Speed packages <Speed_packages>` doc
page, for several of the standard LAMMPS benchmark problems, as a page, for several of the standard LAMMPS benchmark problems, as a

View File

@ -1,7 +1,7 @@
Benchmarks Benchmarks
========== ==========
Current LAMMPS performance is discussed on the `Benchmarks page <https://lammps.sandia.gov/bench.html>`_ of the `LAMMPS website <lws_>`_ Current LAMMPS performance is discussed on the `Benchmarks page <https://www.lammps.org/bench.html>`_ of the `LAMMPS website <lws_>`_
where timings and parallel efficiency are listed. The page has where timings and parallel efficiency are listed. The page has
several sections, which are briefly described below: several sections, which are briefly described below:
@ -43,11 +43,11 @@ to build LAMMPS and run on that kind of hardware.
The bench/POTENTIALS directory has input files which correspond to the The bench/POTENTIALS directory has input files which correspond to the
table of results on the table of results on the
`Potentials <https://lammps.sandia.gov/bench.html#potentials>`_ section of `Potentials <https://www.lammps.org/bench.html#potentials>`_ section of
the Benchmarks web page. So you can also run those test problems on the Benchmarks web page. So you can also run those test problems on
your machine. your machine.
The `billion-atom <https://lammps.sandia.gov/bench.html#billion>`_ section The `billion-atom <https://www.lammps.org/bench.html#billion>`_ section
of the Benchmarks web page has performance data for very large of the Benchmarks web page has performance data for very large
benchmark runs of simple Lennard-Jones (LJ) models, which use the benchmark runs of simple Lennard-Jones (LJ) models, which use the
bench/in.lj input script. bench/in.lj input script.
@ -73,4 +73,4 @@ estimate parallel performance for multi-node runs using the same logic
as for all-MPI mode, except that now you will typically need many more as for all-MPI mode, except that now you will typically need many more
atoms/node to achieve good scalability. atoms/node to achieve good scalability.
.. _lws: https://lammps.sandia.gov .. _lws: https://www.lammps.org

View File

@ -152,7 +152,7 @@ in OpenCL mode on CPUs (which uses vectorization and multithreading) is
usually resulting in inferior performance compared to using LAMMPS' native usually resulting in inferior performance compared to using LAMMPS' native
threading and vectorization support in the USER-OMP and USER-INTEL packages. threading and vectorization support in the USER-OMP and USER-INTEL packages.
See the `Benchmark page <https://lammps.sandia.gov/bench.html>`_ of the See the `Benchmark page <https://www.lammps.org/bench.html>`_ of the
LAMMPS web site for performance of the GPU package on various LAMMPS web site for performance of the GPU package on various
hardware, including the Titan HPC platform at ORNL. hardware, including the Titan HPC platform at ORNL.

View File

@ -406,7 +406,7 @@ Generally speaking, the following rules of thumb apply:
package also can increase the vector length of vector instructions package also can increase the vector length of vector instructions
by switching to single or mixed precision mode. by switching to single or mixed precision mode.
See the `Benchmark page <https://lammps.sandia.gov/bench.html>`_ of the See the `Benchmark page <https://www.lammps.org/bench.html>`_ of the
LAMMPS web site for performance of the KOKKOS package on different LAMMPS web site for performance of the KOKKOS package on different
hardware. hardware.

View File

@ -145,7 +145,7 @@ sub-directories with Make.py commands and input scripts for using all
the accelerator packages on various machines. See the README files in the accelerator packages on various machines. See the README files in
those directories. those directories.
As mentioned above, the `Benchmark page <https://lammps.sandia.gov/bench.html>`_ of the LAMMPS web site gives As mentioned above, the `Benchmark page <https://www.lammps.org/bench.html>`_ of the LAMMPS web site 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
size and number of compute nodes, on different hardware platforms. size and number of compute nodes, on different hardware platforms.

View File

@ -6,15 +6,15 @@ molecular dynamics computations. Additional pre- and post-processing
steps are often necessary to setup and analyze a simulation. A list steps are often necessary to setup and analyze a simulation. A list
of such tools can be found on the `LAMMPS webpage <lws_>`_ at these links: of such tools can be found on the `LAMMPS webpage <lws_>`_ at these links:
* `Pre/Post processing <https://lammps.sandia.gov/prepost.html>`_ * `Pre/Post processing <https://www.lammps.org/prepost.html>`_
* `Offsite LAMMPS packages & tools <https://lammps.sandia.gov/offsite.html>`_ * `Offsite LAMMPS packages & tools <https://www.lammps.org/offsite.html>`_
* `Pizza.py toolkit <pizza_>`_ * `Pizza.py toolkit <pizza_>`_
The last link for `Pizza.py <pizza_>`_ is a Python-based tool developed at The last link for `Pizza.py <pizza_>`_ is a Python-based tool developed at
Sandia which provides tools for doing setup, analysis, plotting, and Sandia which provides tools for doing setup, analysis, plotting, and
visualization for LAMMPS simulations. visualization for LAMMPS simulations.
.. _lws: https://lammps.sandia.gov .. _lws: https://www.lammps.org
.. _pizza: https://pizza.sandia.gov .. _pizza: https://pizza.sandia.gov
.. _python: https://www.python.org .. _python: https://www.python.org

View File

@ -69,7 +69,6 @@ parenthesized comments):
HAM (keyword is the first text on line) HAM (keyword is the first text on line)
N 181 FP 0 0 EQ 90.0 (N, FP, EQ parameters) N 181 FP 0 0 EQ 90.0 (N, FP, EQ parameters)
(blank line) (blank line)
N 181 FP 0 0 (N, FP parameters)
1 0.0 200.5 2.5 (index, angle, energy, derivative) 1 0.0 200.5 2.5 (index, angle, energy, derivative)
2 1.0 198.0 2.5 2 1.0 198.0 2.5
... ...

View File

@ -80,7 +80,7 @@ LAMMPS commands require a map, even for atomic systems, and will
generate an error if one does not exist. The *map* keyword thus generate an error if one does not exist. The *map* keyword thus
allows you to force the creation of a map. The *yes* value will allows you to force the creation of a map. The *yes* value will
create either an *array* or *hash* style map, as explained in the next create either an *array* or *hash* style map, as explained in the next
paragraph. The *array* and *hash* values create an atom-style or paragraph. The *array* and *hash* values create an array-style or
hash-style map respectively. hash-style map respectively.
For an *array*\ -style map, each processor stores a lookup table of For an *array*\ -style map, each processor stores a lookup table of

View File

@ -244,6 +244,7 @@ accelerated styles exist.
* :doc:`lb/viscous <fix_lb_viscous>` - * :doc:`lb/viscous <fix_lb_viscous>` -
* :doc:`lineforce <fix_lineforce>` - constrain atoms to move in a line * :doc:`lineforce <fix_lineforce>` - constrain atoms to move in a line
* :doc:`manifoldforce <fix_manifoldforce>` - restrain atoms to a manifold during minimization * :doc:`manifoldforce <fix_manifoldforce>` - restrain atoms to a manifold during minimization
* :doc:`mdi/engine <fix_mdi_engine>` - connect LAMMPS to external programs via the MolSSI Driver Interface (MDI)
* :doc:`meso/move <fix_meso_move>` - move mesoscopic SPH/SDPD particles in a prescribed fashion * :doc:`meso/move <fix_meso_move>` - move mesoscopic SPH/SDPD particles in a prescribed fashion
* :doc:`momentum <fix_momentum>` - zero the linear and/or angular momentum of a group of atoms * :doc:`momentum <fix_momentum>` - zero the linear and/or angular momentum of a group of atoms
* :doc:`momentum/chunk <fix_momentum>` - zero the linear and/or angular momentum of a chunk of atoms * :doc:`momentum/chunk <fix_momentum>` - zero the linear and/or angular momentum of a chunk of atoms

View File

@ -17,7 +17,7 @@ Syntax
* ID, group-ID are documented in :doc:`fix <fix>` command. * ID, group-ID are documented in :doc:`fix <fix>` command.
* bond/react = style name of this fix command * bond/react = style name of this fix command
* the common keyword/values may be appended directly after 'bond/react' * the common keyword/values may be appended directly after 'bond/react'
* this applies to all reaction specifications (below) * common keywords apply to all reaction specifications
* common_keyword = *stabilization* or *reset_mol_ids* * common_keyword = *stabilization* or *reset_mol_ids*
.. parsed-literal:: .. parsed-literal::
@ -525,12 +525,12 @@ reaction can be imposed as follows:
.. code-block:: LAMMPS .. code-block:: LAMMPS
compute 1 all pe/atom # in LAMMPS input script compute 1 all pe/atom # in LAMMPS input script
variable my_pe atom c_1 # in LAMMPS input script variable my_pe atom c_1 # in LAMMPS input script
.. code-block:: LAMMPS .. code-block:: LAMMPS
custom "rxnsum(v_my_pe) > 100" # in Constraints section of map file custom "rxnsum(v_my_pe) > 100" # in Constraints section of map file
The above example prevents the reaction from occurring unless the The above example prevents the reaction from occurring unless the
total potential energy of the reaction site is above 100. The variable total potential energy of the reaction site is above 100. The variable

View File

@ -92,6 +92,11 @@ The :doc:`thermo_modify <thermo_modify>` *press* option is supported
by this fix to add the rescaled kinetic pressure as part of by this fix to add the rescaled kinetic pressure as part of
:doc:`thermodynamic output <thermo_style>`. :doc:`thermodynamic output <thermo_style>`.
This fix computes a global scalar which can be accessed by various
:doc:`output commands <Howto_output>`. The scalar is the effective
temperature :math:`T_{eff}`. The scalar value calculated by this
fix is "intensive".
Restrictions Restrictions
"""""""""""" """"""""""""

View File

@ -1,4 +1,4 @@
.. index:: fix move .. index:: fix mdi/engine
fix mdi/engine command fix mdi/engine command
====================== ======================

View File

@ -65,7 +65,7 @@ non-granular particles and simpler wall geometries, respectively.
Here are snapshots of example models using this command. Corresponding Here are snapshots of example models using this command. Corresponding
input scripts can be found in examples/granregion. Movies of these input scripts can be found in examples/granregion. Movies of these
simulations are `here on the Movies page <https://lammps.sandia.gov/movies.html#granregion>`_ simulations are `here on the Movies page <https://www.lammps.org/movies.html#granregion>`_
of the LAMMPS web site. of the LAMMPS web site.
.. |wallgran1| image:: img/gran_funnel.png .. |wallgran1| image:: img/gran_funnel.png

View File

@ -278,7 +278,7 @@ pressure simulation with MSM will cause the code to run slower.
---------- ----------
The *scafacos* style is a wrapper on the `ScaFaCoS Coulomb solver library <http://www.scafacos.de>`_ which provides a variety of solver The *scafacos* style is a wrapper on the `ScaFaCoS Coulomb solver library <http://www.scafacos.de>`_ which provides a variety of solver
methods which can be used with LAMMPS. The paper by :ref:`(Who) <Who2012>` methods which can be used with LAMMPS. The paper by :ref:`(Sutman) <Sutmann2014>`
gives an overview of ScaFaCoS. gives an overview of ScaFaCoS.
ScaFaCoS was developed by a consortium of German research facilities ScaFaCoS was developed by a consortium of German research facilities
@ -550,7 +550,7 @@ Illinois at Urbana-Champaign, (2006).
**(Cerda)** Cerda, Ballenegger, Lenz, Holm, J Chem Phys 129, 234104 (2008) **(Cerda)** Cerda, Ballenegger, Lenz, Holm, J Chem Phys 129, 234104 (2008)
.. _Who2012: .. _Sutmann2014:
**(Who)** Who, Author2, Author3, J of Long Range Solvers, 35, 164-177 **(Sutmann)** G. Sutmann. ScaFaCoS - a Scalable library of Fast Coulomb Solvers for particle Systems.
(2012). In Bajaj, Zavattieri, Koslowski, Siegmund, Proceedings of the Society of Engineering Science 51st Annual Technical Meeting. 2014.

View File

@ -1,4 +1,4 @@
.. index:: mdi_engine .. index:: mdi/engine
mdi_engine command mdi_engine command
================== ==================

230
doc/src/pair_hdnnp.rst Normal file
View File

@ -0,0 +1,230 @@
.. index:: pair_style hdnnp
pair_style hdnnp command
========================
Syntax
""""""
.. code-block:: LAMMPS
pair_style hdnnp cutoff keyword value ...
* cutoff = short-range cutoff of HDNNP (maximum symmetry function cutoff radius)
* zero or more keyword/value pairs may be appended
* keyword = *dir* or *showew* or *showewsum* or *maxew* or *resetew* or *cflength* or *cfenergy*
* value depends on the preceding keyword:
.. parsed-literal::
*dir* value = directory
directory = Path to HDNNP configuration files
*showew* value = *yes* or *no*
*showewsum* value = summary
summary = Write EW summary every this many timesteps (*0* turns summary off)
*maxew* value = threshold
threshold = Maximum number of EWs allowed
*resetew* value = *yes* or *no*
*cflength* value = length
length = Length unit conversion factor
*cfenergy* value = energy
energy = Energy unit conversion factor
Examples
""""""""
.. code-block:: LAMMPS
pair_style hdnnp 6.35 showew yes showewsum 100 maxew 1000 resetew yes cflength 1.8897261328 cfenergy 0.0367493254
pair_coeff * * H O
pair_style hdnnp 6.01 dir "./" showewsum 10000
pair_coeff * * S Cu NULL Cu
Description
"""""""""""
This pair style adds an interaction based on the high-dimensional neural network
potential (HDNNP) method as presented in :ref:`(Behler and Parrinello 2007)
<Behler_Parrinello_2007>`. HDNNPs are machine learning potentials which require
careful training of neural networks prior to application in MD simulations. The
pair style uses an interface to the *n2p2* library :ref:`(Singraber, Behler and
Dellago 2019) <Singraber_Behler_Dellago_2019>` which is available on Github
`here <https://github.com/CompPhysVienna/n2p2>`__. Please see the *n2p2*
`documentation <https://compphysvienna.github.io/n2p2/>`__ for further details.
*n2p2* (and hence this pair style) is compatible with neural network potentials
trained with its own tools :ref:`(Singraber et al 2019) <Singraber_et_al_2019>`
and with `RuNNer <https://www.uni-goettingen.de/de/560580.html>`__.
Only a single *pair_coeff* command with two asterisk wild-cards is used with this
pair style. Its additional arguments define the mapping of LAMMPS atom types to
n2p2 elements.
.. code-block:: LAMMPS
pair_coeff * * H O
In the above example LAMMPS types 1 and 2 are mapped to the elements "H" and "O"
in n2p2, respectively. Multiple types may map to the same element, or some types
may not be mapped at all. For example, if the LAMMPS simulation has four atom
types, the command
.. code-block:: LAMMPS
pair_coeff * * H H O NULL
maps atom types 1 and 2 to the element "H", type 3 to "O" and type 4 is not mapped
(indicated by NULL). Atoms mapped to NULL are ignored by the HDNNP calculation,
i.e. they do not contribute in any way to the evaluation of HDNNP energies and forces.
This may be useful in a setup with :doc:`hybrid pair styles <pair_hybrid>`.
----
The mandatory pair style argument *cutoff* must match the short-range cutoff radius
of the HDNNP. This corresponds to the maximum cutoff radius of all symmetry
functions (the atomic environment descriptors of HDNNPs) used.
.. note::
The cutoff must be given in LAMMPS length units, even if the neural network
potential has been trained using a different unit system (see remarks about the
*cflength* and *cfenergy* keywords below for details).
The numeric value may be slightly larger than the actual maximum symmetry
function cutoff radius (to account for rounding errors when converting units),
but must not be smaller.
Use the *dir* keyword to specify the directory containing the HDNNP configuration
files. The directory must contain ``input.nn`` with neural network and symmetry
function setup, ``scaling.data`` with symmetry function scaling data and
``weights.???.data`` with weight parameters for each element.
The keyword *showew* can be used to turn on/off the display of extrapolation
warnings (EWs) which are issued whenever a symmetry function value is out of
bounds defined by minimum/maximum values in ``scaling.data``. An extrapolation
warning may look like this:
.. code-block:: LAMMPS
### NNP EXTRAPOLATION WARNING ### STRUCTURE: 0 ATOM: 119 ELEMENT: Cu SYMFUNC: 32 TYPE: 3 VALUE: 2.166E-02 MIN: 2.003E-05 MAX: 1.756E-02
stating that the value 2.166E-02 of symmetry function 32 of type 3 (Narrow Angular symmetry function), element Cu (see the log file for a symmetry function listing) was out
of bounds (maximum in ``scaling.data`` is 1.756E-02) for atom 119. Here, the
atom index refers to the LAMMPS tag (global index) and the structure index is
used to print out the MPI rank the atom belongs to.
.. note::
The *showew* keyword should only be set to *yes* for debugging purposes.
Extrapolation warnings may add lots of overhead as they are communicated each
timestep. Also, if the simulation is run in a region where the HDNNP was not
correctly trained, lots of extrapolation warnings may clog log files and the
console. In a production run use *showewsum* instead.
The keyword *showewsum* can be used to get an overview of extrapolation warnings
occurring during an MD simulation. The argument specifies the interval at which
extrapolation warning summaries are displayed and logged. An EW summary may look
like this:
.. code-block:: LAMMPS
### NNP EW SUMMARY ### TS: 100 EW 11 EWPERSTEP 1.100E-01
Here, at timestep 100 the occurrence of 11 extrapolation warnings since the last
summary is reported, which corresponds to an EW rate of 0.11 per timestep.
Setting *showewsum* to 0 deactivates the EW summaries.
A maximum number of allowed extrapolation warnings can be specified with the
*maxew* keyword. If the number of EWs exceeds the *maxew* argument the
simulation is stopped. Note however that this is merely an approximate threshold
since the check is only performed at the end of each timestep and each MPI
process counts individually to minimize communication overhead.
The keyword *resetew* alters the behavior of the above mentioned *maxew*
threshold. If *resetew* is set to *yes* the threshold is applied on a
per-timestep basis and the internal EW counters are reset at the beginning of
each timestep. With *resetew* set to *no* the counters accumulate EWs along the
whole trajectory.
If the training of a neural network potential has been performed with different
physical units for length and energy than those set in LAMMPS, it is still
possible to use the potential when the unit conversion factors are provided via
the *cflength* and *cfenergy* keywords. If for example, the HDNNP was
parameterized with Bohr and Hartree training data and symmetry function
parameters (i.e. distances and energies in "input.nn" are given in Bohr and
Hartree) but LAMMPS is set to use *metal* units (Angstrom and eV) the correct
conversion factors are:
.. code-block:: LAMMPS
cflength 1.8897261328
cfenergy 0.0367493254
Thus, arguments of *cflength* and *cfenergy* are the multiplicative factors
required to convert lengths and energies given in LAMMPS units to respective
quantities in native HDNNP units (1 Angstrom = 1.8897261328 Bohr, 1 eV =
0.0367493254 Hartree).
----
Mixing, shift, table, tail correction, restart, rRESPA info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
This style does not support mixing. The :doc:`pair_coeff <pair_coeff>` command
should only be invoked with asterisk wild cards (see above).
This style does not support the :doc:`pair_modify <pair_modify>`
shift, table, and tail options.
This style does not write information to :doc:`binary restart files <restart>`.
Thus, you need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
This style can only be used via the *pair* keyword of the :doc:`run_style respa
<run_style>` command. It does not support the *inner*\ , *middle*\ , *outer*
keywords.
Restrictions
""""""""""""
This pair style is part of the USER-HDNNP package. It is only enabled if LAMMPS
was built with that package. See the :doc:`Build package <Build_package>` doc
page for more info.
Please report bugs and feature requests to the `n2p2 GitHub issue page
<https://github.com/CompPhysVienna/n2p2/issues>`__.
Related commands
^^^^^^^^^^^^^^^^
:doc:`pair_coeff <pair_coeff>`, :doc:`pair_hybrid <pair_hybrid>`, :doc:`units <units>`
Default
^^^^^^^
The default options are *dir* = "hdnnp/", *showew* = yes, *showewsum* = 0, *maxew*
= 0, *resetew* = no, *cflength* = 1.0, *cfenergy* = 1.0.
----
.. _Behler_Parrinello_2007:
**(Behler and Parrinello 2007)** `Behler, J.; Parrinello, M. Generalized
Neural-Network Representation of High-Dimensional Potential-Energy Surfaces.
Phys. Rev. Lett. 2007, 98 (14), 146401.
<https://doi.org/10.1103/PhysRevLett.98.146401>`__
.. _Singraber_Behler_Dellago_2019:
**(Singraber, Behler and Dellago 2019)** `Singraber, A.; Behler, J.; Dellago, C.
Library-Based LAMMPS Implementation of High-Dimensional Neural Network
Potentials. J. Chem. Theory Comput. 2019, 15 (3), 1827-1840
<https://doi.org/10.1021/acs.jctc.8b00770>`__
.. _Singraber_et_al_2019:
**(Singraber et al 2019)** `Singraber, A.; Morawietz, T.; Behler, J.; Dellago,
C. Parallel Multistream Training of High-Dimensional Neural Network Potentials.
J. Chem. Theory Comput. 2019, 15 (5), 3075-3092.
<https://doi.org/10.1021/acs.jctc.8b01092>`__

View File

@ -145,6 +145,22 @@ specified since a Coulombic cutoff cannot be specified for an individual I,J
type pair. All type pairs use the same global Coulombic cutoff specified in type pair. All type pairs use the same global Coulombic cutoff specified in
the pair_style command. the pair_style command.
.. warning::
Because of how these pair styles implement the coulomb interactions
by implicitly defining a fourth site for the negative charge
of the TIP4P and similar water models, special care must be taken
when using these pair styles with other computations that also use
charges. Unless they are specially set up to also handle the implicit
definition of the 4th site, results are likely incorrect. Example:
:doc:`compute dipole/chunk <compute_dipole_chunk>`. For the same
reason, when using one of these pair styles with
:doc:`pair_style hybrid <pair_hybrid>`, **all** coulomb interactions
should be handled by a single sub-style with TIP4P support. All other
instances and styles will "see" the M point charges at the position
of the Oxygen atom and thus compute incorrect forces and energies.
LAMMPS will print a warning when it detects one of these issues.
---------- ----------
A version of these styles with a soft core, *lj/cut/tip4p/long/soft*\ , suitable A version of these styles with a soft core, *lj/cut/tip4p/long/soft*\ , suitable

412
doc/src/pair_rann.rst Normal file
View File

@ -0,0 +1,412 @@
.. index:: pair_style rann
pair_style rann command
=======================
Syntax
""""""
.. code-block:: LAMMPS
pair_style rann
pair_coeff file Type1_element Type2_element Type3_element...
Examples
""""""""
.. code-block:: LAMMPS
pair_style rann
pair_coeff ** Mg.rann Mg
pair_coeff ** MgAlalloy.rann Mg Mg Al Mg
Description
"""""""""""
Pair style *rann* computes pairwise interactions for a variety of
materials using rapid atomistic neural network (RANN) potentials
(:ref:`Dickel <Dickel>` , :ref:`Nitol <Nitol>`). Neural network
potentials work by first generating a series of symmetry functions
i.e. structural fingerprints from the neighbor list and then using these
values as the input layer of a neural network. There is a single output
neuron in the final layer which is the energy. Atomic forces are found
by analytical derivatives computed via back-propagation. For alloy
systems, each element has a unique network.
Potential file syntax
"""""""""""""""""""""
The RANN potential is defined by a single text file which contains all
the fitting parameters for the alloy system. The potential file also
defines the active fingerprints, network architecture, activation
functions, etc. The potential file is divided into several sections
which are identified by one of the following keywords:
* atomtypes
* mass
* fingerprintsperelement
* fingerprints
* fingerprintconstants
* screening (optional)
* networklayers
* layersize
* weight
* bias
* activationfunctions
* calibrationparameters (ignored)
The '#' character is treated as a comment marker, similar to LAMMPS
input scripts. Sections are not required to follow a rigid ordering,
but do require previous definition of prerequisite information. E.g.,
fingerprintconstants for a particular fingerprint must follow the
fingerprints definition; layersize for a particular layer must follow
the declaration of network layers.
*atomtypes* are defined as follows using element keywords separated by spaces.
.. code-block::
atomtypes:
Fe Mg Al etc.
*mass* must be specified for each element keyword as follows:
.. code-block::
mass:Mg:
24.305
mass:Fe:
55.847
mass:Al:
26.982
*fingerprintsperelement* specifies how many fingerprints are active for
computing the energy of a given atom. This number must be specified for
each element keyword. Active elements for each fingerprint depend upon
the type of the central atom and the neighboring atoms. Pairwise
fingerprints may be defined for a Mg atom based exclusively on its Al
neighbors, for example. Bond fingerprints may use two neighbor lists of
different element types. In computing fingerprintsperelement from all
defined fingerprints, only the fingerprints defined for atoms of a
particular element should be considered, regardless of the elements used
in its neighbor list. In the following code, for example, some
fingerprints may compute pairwise fingerprints summing contributions
about Fe atoms based on a neighbor list of exclusively Al atoms, but if
there are no fingerprints summing contributions of all neighbors about a
central Al atom, then fingerprintsperelement of Al is zero:
.. code-block::
fingerprintsperelement:Mg:
5
fingerprintsperelement:Fe:
2
fingerprintsperelement:Al:
0
*fingerprints* specifies the active fingerprints for a certain element
combination. Pair fingerprints are specified for two elements, while
bond fingerprints are specified for three elements. Only one
fingerprints header should be used for an individual combination of
elements. The ordering of the fingerprints in the network input layer
is determined by the order of element combinations specified by
subsequent *fingerprints* lines, and the order of the fingerprints
defined for each element combination. Multiple fingerprints of the same
style or different ones may be specified. If the same style and element
combination is used for multiple fingerprints, they should have
different id numbers. The first element specifies the atoms for which
this fingerprint is computed while the other(s) specify which atoms to
use in the neighbor lists for the computation. Switching the second and
third element type in bond fingerprints has no effect on the
computation:
.. code-block::
fingerprints:Mg_Mg:
radial_0 radialscreened_0 radial_1
fingerprints:Mg_Al_Fe:
bond_0 bondspin_0
fingerprints:Mg_Al:
radial_0 radialscreened_0
The following fingerprint styles are currently defined. See the
:ref:`formulation section <fingerprints>` below for their definitions:
* radial
* radialscreened
* radialspin
* radialscreenedspin
* bond
* bondscreened
* bondspin
* bondscreenedspin
*fingerprintconstants* specifies the meta-parameters for a defined fingerprint. For all radial styles, re, rc,
alpha, dr, o, and n must be specified. re should usually be the stable interatomic distance, rc is the cutoff
radius, dr is the cutoff smoothing distance, o is the lowest radial power term (which may be negative), and n
is the highest power term. The total length of the fingerprint vector is (n-o+1). alpha is a list of decay parameters
used for exponential decay of radial contributions. It may be set proportionally to the bulk modulus similarly
to MEAM potentials, but other values may provided better fitting in special cases. Bond style fingerprints require
specification of re, rc, alphak, dr, k, and m. Here m is the power of the bond cosines and k is the number of
decay parameters. Cosine powers go from 0 to m-1 and are each computed for all values of alphak. Thus the total
length of the fingerprint vector is m*k.
.. code-block::
fingerprintconstants:Mg_Mg:radialscreened_0:re:
3.193592
fingerprintconstants:Mg_Mg:radialscreened_0:rc:
6.000000
fingerprintconstants:Mg_Mg:radialscreened_0:alpha:
5.520000 5.520000 5.520000 5.520000 5.520000
fingerprintconstants:Mg_Mg:radialscreened_0:dr:
2.806408
fingerprintconstants:Mg_Mg:radialscreened_0:o:
-1
fingerprintconstants:Mg_Mg:radialscreened_0:n:
3
*screening* specifies the Cmax and Cmin values used in the screening
fingerprints. Contributions form neighbors to the fingerprint are
omitted if they are blocked by a closer neighbor, and reduced if they
are partially blocked. Larger values of Cmin correspond to neighbors
being blocked more easily. Cmax cannot be greater than 3, and Cmin
cannot be greater than Cmax or less than zero. Screening may be omitted
in which case the default values Cmax = 2.8, Cmin = 0.8 are used. Since
screening is a bond computation, it is specified separately for each
combination of three elements in which the latter two may be
interchanged with no effect.
.. code-block::
screening:Mg_Mg_Mg:Cmax:
2.700000
screening:Mg_Mg_Mg:Cmin:
0.400000
*networklayers* species the size of the neural network for each atom.
It counts both the input and output layer and so is 2 + \<hidden layers\>.
.. code-block::
networklayers:Mg:
3
*layersize* specifies the length of each layer, including the input
layer and output layer. The input layer is layer 0. The size of the
input layer size must match the summed length of all the fingerprints
for that element, and the output layer size must be 1:
.. code-block::
layersize:Mg:0:
14
layersize:Mg:1:
20
layersize:Mg:2:
1
*weight* specifies the weight for a given element and layer. Weight
cannot be specified for the output layer. The weight of layer i is a
*m* x *n* matrix where *m* is the layer size of *i* and *n* is the layer size of
*i*\ +1:
.. code-block::
weight:Mg:0:
w11 w12 w13 ...
w21 w22 w23 ...
...
*bias* specifies the bias for a given element and layer. Bias cannot be
specified for the output layer. The bias of layer i is a nx1 vector
where n is the layer size of i+1:
.. code-block::
bias:Mg:0:
b1
b2
b3
...
*activationfunctions* specifies the activation function for a given
element and layer. Activation functions cannot be specified for the
output layer:
.. code-block::
activationfunctions:Mg:0:
sigI
activationfunctions:Mg:1:
linear
The following activation styles are currently specified. See the
:ref:`formulation section <activations>` below for their definitions.
* sigI
* linear
*calibrationparameters* specifies a number of parameters used to calibrate the potential. These are ignored
by LAMMPS.
Formulation
"""""""""""
In the RANN formulation, the total energy of a system of atoms
is given by:
.. math::
E = \sum_{\alpha} E^{\alpha}\\\\
E^{\alpha} = {}^{N}\!A^{\alpha}\\\\
{}^{n+1}\!A_i^{\alpha} = {}^{n}\!F\left({}^{n}\!W_{ij}{\;}^{n}\!A_j^{\alpha}+{}^{n}\!B_i\right)\\\\
{}^{0}\!A_i^{\alpha} = \left[\begin{array}{c} {}^1\!S\!f^\alpha\\ {}^2\!S\!f^\alpha \\...\\\end{array}\right]
Here :math:`E^\alpha` is the energy of atom :math:`\alpha`,
:math:`{}^n\!F()`, :math:`{}^n\!W_{ij}` and :math:`{}^n\!B_i` are the
activation function, weight matrix and bias vector of the n-th layer
respectively. The inputs to the first layer are a collection of
structural fingerprints which are collected and reshaped into a single
long vector. The individual fingerprints may be defined in any order
and have various shapes and sizes. Multiple fingerprints of the same
type and varying parameters may also be defined in the input layer.
Eight types of structural fingerprints are currently defined. In the
following, :math:`\beta` and :math:`\gamma` span the full neighbor list
of atom :math:`\alpha`. :math:`\delta_i` are decay meta-parameters, and
:math:`r_e` is a meta-parameter roughly proportional to the first
neighbor distance. :math:`r_c` and :math:`dr` are the neighbor cutoff
distance and cutoff smoothing distance respectively.
:math:`S^{\alpha\beta}` is the MEAM screening function :ref:`(Baskes)
<Baskes97>`, :math:`s_i^\alpha` and :math:`s_i^\beta` are the atom spin
vectors :ref:`(Tranchida) <Tranchida7>`. :math:`r^{\alpha\beta}` is the
distance from atom :math:`\alpha` to atom :math:`\beta`, and
:math:`\theta^{\alpha\beta\gamma}` is the bond angle:
.. math ::
cos\left(\theta^{\alpha\beta\gamma}\right)=\frac{\mathbf{r}^{\alpha\beta} \cdot \mathbf{r}^{\alpha\gamma}}{r^{\alpha\beta}r^{\alpha\gamma}}
:math:`S^{\alpha\beta}` is defined as :ref:`(Baskes) <Baskes97>`:
.. math::
X^{\gamma\beta} = \left(\frac{r^{\gamma\beta}}{r^{\alpha\beta}}\right)^2\\
\\
X^{\alpha\gamma} = \left(\frac{r^{\alpha\gamma}}{r^{\alpha\beta}}\right)^2\\
\\
C = \frac{2\left(X^{\alpha\gamma}+X^{\gamma\beta}\right)-\left(X^{\alpha\gamma}-X^{\gamma\beta}\right)^2-1}{1-\left(X^{\alpha\gamma}-X^{\gamma\beta}\right)^2}\\
\\
f_c(x) = \left[\begin{array}{l} 1 \; \: x \geq 1\\ \left(1-\left(1-x\right)^4\right)^2 \; \: 0<x<1\\0\; \; x\leq0\end{array}\right.\\
\\
S^{\alpha\beta\gamma} = f_c\left(\frac{C-C_{min}}{C_{max}-C_{min}}\right)\\
\\
S^{\alpha\beta} = \prod_\gamma S^{\alpha\beta\gamma}\\
The structural fingerprints are computed as follows:
.. _fingerprints:
* **radial**
.. math::
{}^r\!S\!f_i^\alpha = \sum_{\beta} \left(\frac{r^{\alpha\beta}}{r_e}\right)^ie^{-\delta_i \frac{r^{\alpha\beta}}{r_e}}f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)
* **bond**
.. math::
{}^b\!S\!f_{ij}^\alpha = \sum_{\beta}\sum_{\gamma} \left(cos(\theta_{\alpha\beta\gamma})\right)^ie^{-\delta_j \frac{r^{\alpha\beta}}{r_e}}e^{-\delta_j \frac{r^{\alpha\gamma}}{r_e}}f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)f_c\left(\frac{r_c-r^{\alpha\gamma}}{dr}\right)
* **radialscreened**
.. math::
{}^{rsc}\!S\!f_i^\alpha = \sum_{\beta} \left(\frac{r^{\alpha\beta}}{r_e}\right)^ie^{-\delta_i \frac{r^{\alpha\beta}}{r_e}}S^{\alpha\beta}f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)
* **bondscreened**
.. math::
{}^{bsc}\!S\!f_{ij}^\alpha = \sum_{\beta}\sum_{\gamma} \left(cos(\theta_{\alpha\beta\gamma})\right)^ie^{-\delta_j \frac{r^{\alpha\beta}}{r_e}}e^{-\delta_j \frac{r^{\alpha\gamma}}{r_e}}S^{\alpha\beta}S^{\alpha\gamma}f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)f_c\left(\frac{r_c-r^{\alpha\gamma}}{dr}\right)
* **radialspin**
.. math::
{}^{rsp}\!S\!f_i^\alpha = \sum_{\beta} \left(\frac{r^{\alpha\beta}}{r_e}\right)^ie^{-\delta_i \frac{r^{\alpha\beta}}{r_e}}\left(\mathbf{s^\alpha \cdot s^\beta}\right)f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)
* **bondspin**
.. math::
{}^{bsp}\!S\!f_{ij}^\alpha = \sum_{\beta}\sum_{\gamma} \left(cos(\theta_{\alpha\beta\gamma})\right)^ie^{-\delta_j \frac{r^{\alpha\beta}}{r_e}}e^{-\delta_j \frac{r^{\alpha\gamma}}{r_e}}\left(\mathbf{s^\alpha \cdot s^\beta}\right)\left(\mathbf{s^\alpha \cdot s^\gamma}\right)f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)f_c\left(\frac{r_c-r^{\alpha\gamma}}{dr}\right)
* **radialscreenedspin**
.. math::
{}^{rscsp}\!S\!f_i^\alpha = \sum_{\beta} \left(\frac{r^{\alpha\beta}}{r_e}\right)^ie^{-\delta_i \frac{r^{\alpha\beta}}{r_e}}S^{\alpha\beta}\left(\mathbf{s^\alpha \cdot s^\beta}\right)f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)
* **bondscreenedspin**
.. math::
{}^{bscsp}\!S\!f_{ij}^\alpha = \sum_{\beta}\sum_{\gamma} \left(cos(\theta_{\alpha\beta\gamma})\right)^ie^{-\delta_j \frac{r^{\alpha\beta}}{r_e}}e^{-\delta_j \frac{r^{\alpha\gamma}}{r_e}}S^{\alpha\beta}S^{\alpha\gamma}\left(\mathbf{s^\alpha \cdot s^\beta}\right)\left(\mathbf{s^\alpha \cdot s^\gamma}\right)f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)f_c\left(\frac{r_c-r^{\alpha\gamma}}{dr}\right)
The activation functions are computed as follows:
.. _activations:
* **sigI**
.. math::
F^{sigI}(x) = 0.1x+0.9ln\left(e^x+1\right)
* **linear**
.. math::
F^{linear}(x) = x
Restrictions
""""""""""""
Pair style *rann* is part of the USER-RANN package. It is only enabled if LAMMPS was built with that
package. Additionally, if any spin fingerprint styles are used LAMMPS must be built with the SPIN
package as well.
Defaults
""""""""""""
Cmin = 0.8, Cmax = 2.8.
----------
.. _Baskes97:
**(Baskes)** Baskes,
Materials Chemistry and Physics, 50(2), 152-158, (1997).
.. _Dickel:
**(Dickel)** Dickel, Francis, and Barrett,
Computational Materials Science 171 (2020): 109157.
.. _Nitol:
**(Nitol)** Nitol, Dickel, and Barrett,
Computational Materials Science 188 (2021): 110207.
.. _Tranchida7:
**(Tranchida)** Tranchida, Plimpton, Thibaudeau and Thompson,
Journal of Computational Physics, 372, 406-425, (2018).

View File

@ -182,6 +182,7 @@ accelerated styles exist.
* :doc:`gw/zbl <pair_gw>` - Gao-Weber potential with a repulsive ZBL core * :doc:`gw/zbl <pair_gw>` - Gao-Weber potential with a repulsive ZBL core
* :doc:`hbond/dreiding/lj <pair_hbond_dreiding>` - DREIDING hydrogen bonding LJ potential * :doc:`hbond/dreiding/lj <pair_hbond_dreiding>` - DREIDING hydrogen bonding LJ potential
* :doc:`hbond/dreiding/morse <pair_hbond_dreiding>` - DREIDING hydrogen bonding Morse potential * :doc:`hbond/dreiding/morse <pair_hbond_dreiding>` - DREIDING hydrogen bonding Morse potential
* :doc:`hdnnp <pair_hdnnp>` - High-dimensional neural network potential
* :doc:`ilp/graphene/hbn <pair_ilp_graphene_hbn>` - registry-dependent interlayer potential (ILP) * :doc:`ilp/graphene/hbn <pair_ilp_graphene_hbn>` - registry-dependent interlayer potential (ILP)
* :doc:`kim <pair_kim>` - interface to potentials provided by KIM project * :doc:`kim <pair_kim>` - interface to potentials provided by KIM project
* :doc:`kolmogorov/crespi/full <pair_kolmogorov_crespi_full>` - Kolmogorov-Crespi (KC) potential with no simplifications * :doc:`kolmogorov/crespi/full <pair_kolmogorov_crespi_full>` - Kolmogorov-Crespi (KC) potential with no simplifications
@ -290,6 +291,7 @@ accelerated styles exist.
* :doc:`polymorphic <pair_polymorphic>` - polymorphic 3-body potential * :doc:`polymorphic <pair_polymorphic>` - polymorphic 3-body potential
* :doc:`python <pair_python>` - * :doc:`python <pair_python>` -
* :doc:`quip <pair_quip>` - * :doc:`quip <pair_quip>` -
* :doc:`rann <pair_rann>` -
* :doc:`reax/c <pair_reaxc>` - ReaxFF potential in C * :doc:`reax/c <pair_reaxc>` - ReaxFF potential in C
* :doc:`rebo <pair_airebo>` - second generation REBO potential of Brenner * :doc:`rebo <pair_airebo>` - second generation REBO potential of Brenner
* :doc:`resquared <pair_resquared>` - Everaers RE-Squared ellipsoidal potential * :doc:`resquared <pair_resquared>` - Everaers RE-Squared ellipsoidal potential

2
doc/utils/converters/lammpsdoc/rst_anchor_check.py Normal file → Executable file
View File

@ -1,4 +1,4 @@
#! /usr/bin/env python3 #!/usr/bin/env python3
# LAMMPS Documentation Utilities # LAMMPS Documentation Utilities
# #
# Scan for duplicate anchor labels in documentation files # Scan for duplicate anchor labels in documentation files

View File

@ -1,7 +1,7 @@
from setuptools import setup from setuptools import setup
setup(name='LAMMPS Documentation Utilities', setup(name='LAMMPS Documentation Utilities',
version='2.0.0', version='2.0.1',
description='Utilities to convert existing LAMMPS documentation text files into ReStructured Text', description='Utilities to convert existing LAMMPS documentation text files into ReStructured Text',
url='https://github.com/rbberger/lammps-doc-utils', url='https://github.com/rbberger/lammps-doc-utils',
author='Richard Berger', author='Richard Berger',
@ -11,8 +11,6 @@ setup(name='LAMMPS Documentation Utilities',
test_suite='nose.collector', test_suite='nose.collector',
tests_require=['nose'], tests_require=['nose'],
entry_points = { entry_points = {
"console_scripts": ['txt2html = lammpsdoc.txt2html:main', "console_scripts": ['rst_anchor_check = lammpsdoc.rst_anchor_check:main ']
'txt2rst = lammpsdoc.txt2rst:main',
'rst_anchor_check = lammpsdoc.rst_anchor_check:main ']
}, },
) )

View File

@ -35,6 +35,10 @@ hr {
display: none; display: none;
} }
#command-reference.section h2 {
display: none;
}
.ui.tabular.menu .item { .ui.tabular.menu .item {
padding-right: 1em; padding-right: 1em;
padding-left: 1em; padding-left: 1em;

View File

@ -134,14 +134,8 @@
</a> </a>
{% if theme_display_version %} {% if theme_display_version %}
{%- set nav_version = version %} <div class="lammps_version">Version: <b>{{ current_version }}</b></div>
{% if READTHEDOCS and current_version %}
{%- set nav_version = current_version %}
{% endif %}
{% if nav_version %}
<div class="lammps_version">Version: <b>{{ nav_version }}</b></div>
<div class="lammps_release">git info: {{ release }}</div> <div class="lammps_release">git info: {{ release }}</div>
{% endif %}
{% endif %} {% endif %}
{% include "searchbox.html" %} {% include "searchbox.html" %}

View File

@ -1,9 +1,9 @@
{% if READTHEDOCS %} {% if READTHEDOCS or display_manual_versions %}
{# Add rst-badge after rst-versions for small badge style. #} {# Add rst-badge after rst-versions for small badge style. #}
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions"> <div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span> <span class="fa fa-book"> Version</span>
v: {{ current_version }} {{ current_version }}
<span class="fa fa-caret-down"></span> <span class="fa fa-caret-down"></span>
</span> </span>
<div class="rst-other-versions"> <div class="rst-other-versions">
@ -20,14 +20,8 @@
{% endfor %} {% endfor %}
</dl> </dl>
<dl> <dl>
{# Translators: The phrase "Read the Docs" is not translated #} <dt>Git Info</dt>
<dt>{{ _('On Read the Docs') }}</dt> <dd><a href="https://github.com/lammps/lammps/tree/{{ git_commit }}" target="_blank">{{ release }}</a></dd>
<dd>
<a href="//{{ PRODUCTION_DOMAIN }}/projects/{{ slug }}/?fromdocs={{ slug }}">{{ _('Project Home') }}</a>
</dd>
<dd>
<a href="//{{ PRODUCTION_DOMAIN }}/builds/{{ slug }}/?fromdocs={{ slug }}">{{ _('Builds') }}</a>
</dd>
</dl> </dl>
</div> </div>
</div> </div>

View File

@ -99,6 +99,16 @@ def get_git_info():
pass pass
return git_n_date return git_n_date
def get_git_commit():
import subprocess,time
try:
commit = subprocess.run(['git','rev-parse','HEAD'],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
if commit.returncode == 0:
return commit.stdout.decode()
except:
pass
return ''
# The version info for the project you're documenting, acts as replacement for # The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the # |version| and |release|, also used in various other places throughout the
# built documents. # built documents.
@ -108,6 +118,8 @@ version = get_lammps_version()
# The full version, including alpha/beta/rc tags. # The full version, including alpha/beta/rc tags.
release = get_git_info() release = get_git_info()
git_commit = get_git_commit()
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.
#language = None #language = None
@ -241,7 +253,7 @@ html_show_sourcelink = False
# Output file base name for HTML help builder. # Output file base name for HTML help builder.
htmlhelp_basename = 'LAMMPSdoc' htmlhelp_basename = 'LAMMPSdoc'
html_add_permalinks = '' html_permalinks = True
if 'epub' in sys.argv: if 'epub' in sys.argv:
html_math_renderer = 'imgmath' html_math_renderer = 'imgmath'
@ -348,7 +360,7 @@ with funding from the DOE. It is an open-source code, distributed
freely under the terms of the GNU Public License (GPL). freely under the terms of the GNU Public License (GPL).
The primary author of the code is Steve Plimpton, who can be emailed The primary author of the code is Steve Plimpton, who can be emailed
at sjplimp@sandia.gov. The LAMMPS WWW Site at lammps.sandia.gov has at sjplimp@sandia.gov. The LAMMPS WWW Site at www.lammps.org has
more information about the code and its uses. more information about the code and its uses.
""" """
@ -389,3 +401,20 @@ breathe_domain_by_extension = { 'h' : 'cpp',
'cpp' : 'cpp', 'cpp' : 'cpp',
'c' : 'c', 'c' : 'c',
} }
# allows showing multiple versions
try:
html_context
except NameError:
html_context = dict()
is_website_build = os.environ.get('LAMMPS_WEBSITE_BUILD', '0') != '0'
html_context['display_manual_versions'] = is_website_build
html_context['current_version'] = os.environ.get('LAMMPS_WEBSITE_BUILD_VERSION', version)
html_context['git_commit'] = git_commit
html_context['versions'] = [
('latest', 'https://docs.lammps.org/latest/'),
(version, 'https://docs.lammps.org/')
]
html_context['downloads'] = [('PDF', 'Manual.pdf')]

View File

@ -23,6 +23,7 @@ acolor
acos acos
Acta Acta
actinide actinide
activationfunctions
acylindricity acylindricity
addforce addforce
Addington Addington
@ -75,6 +76,7 @@ allocaters
allosws allosws
AlO AlO
Alonso Alonso
alphak
alphashrink alphashrink
amap amap
Amatrix Amatrix
@ -153,6 +155,7 @@ atomfile
AtomicPairStyle AtomicPairStyle
atomID atomID
atomistic atomistic
atomtypes
attogram attogram
attograms attograms
attrac attrac
@ -187,6 +190,7 @@ backends
Baczewski Baczewski
Bagi Bagi
Bagnold Bagnold
Bajaj
Bkappa Bkappa
Bal Bal
balancer balancer
@ -287,6 +291,9 @@ BondAngle
BondBond BondBond
bondchk bondchk
bondmax bondmax
bondscreened
bondscreenedspin
bondspin
bondtype bondtype
Bonet Bonet
Bonomi Bonomi
@ -339,6 +346,8 @@ bz
cadetblue cadetblue
Cagin Cagin
calc calc
calibrationfunctions
calibrationparameters
calibre calibre
caltech caltech
Caltech Caltech
@ -669,6 +678,7 @@ diagonalized
diagonalizers diagonalizers
diagonalizing diagonalizing
Diallo Diallo
Dickel
diel diel
differentiable differentiable
diffusively diffusively
@ -721,6 +731,7 @@ doxygenclass
doxygenfunction doxygenfunction
downarrow downarrow
Doye Doye
Doyl
dpd dpd
DPD DPD
dpdTheta dpdTheta
@ -1228,6 +1239,8 @@ hbn
hbnewflag hbnewflag
hbond hbond
hcp hcp
hdnnp
HDNNP
heatconduction heatconduction
Hebbeker Hebbeker
Hebenstreit Hebenstreit
@ -1570,6 +1583,7 @@ Koning
Kooser Kooser
Korn Korn
Koskinen Koskinen
Koslowski
Kosovan Kosovan
Koster Koster
Kosztin Kosztin
@ -1634,6 +1648,7 @@ Laupretre
Lauriat Lauriat
lavenderblush lavenderblush
lawngreen lawngreen
layersize
lB lB
lbfgs lbfgs
lbl lbl
@ -2160,6 +2175,7 @@ nemd
netcdf netcdf
netstat netstat
Nettleton Nettleton
networklayers
Neumann Neumann
Nevent Nevent
nevery nevery
@ -2194,6 +2210,7 @@ Ninteger
NiO NiO
Nissila Nissila
nist nist
Nitol
nitride nitride
nitrides nitrides
niu niu
@ -2668,6 +2685,9 @@ qw
qx qx
qy qy
qz qz
radialscreened
radialscreenedspin
radialspin
radian radian
radians radians
Rafferty Rafferty
@ -2680,6 +2700,8 @@ ramping
Ramprasad Ramprasad
Randisi Randisi
randomizations randomizations
rann
RANN
Raphson Raphson
Rappe Rappe
Ravelo Ravelo
@ -2850,6 +2872,8 @@ Runge
runtime runtime
Rutuparna Rutuparna
rx rx
rxnave
rxnsum
ry ry
rz rz
Ryckaert Ryckaert
@ -2951,8 +2975,10 @@ shrinkexceed
Shugaev Shugaev
si si
SiC SiC
Siegmund
Siepmann Siepmann
Sievers Sievers
sigI
sigmoid sigmoid
Sij Sij
Sikandar Sikandar
@ -3616,6 +3642,7 @@ yx
yy yy
yz yz
Zannoni Zannoni
Zavattieri
zbl zbl
ZBL ZBL
Zc Zc
@ -3653,6 +3680,8 @@ zz
Zm Zm
PowerShell PowerShell
filesystems filesystems
fingerprintconstants
fingerprintsperelement
zincblende zincblende
Zstandard Zstandard
Zstd Zstd

View File

@ -10,7 +10,7 @@ systems. Some of the directories include a Python script, which can
be used with the Pizza.py tool to create the data file, e.g. for be used with the Pizza.py tool to create the data file, e.g. for
collections of rigid bodies. collections of rigid bodies.
The web site for Pizza.py is http://pizza.sandia.gov The web site for Pizza.py is https://pizza.sandia.gov
For example, If you have Pizza.py installed you can type "pizza.py -f For example, If you have Pizza.py installed you can type "pizza.py -f
box.py", which creates the data.box data file in the box dir. box.py", which creates the data.box data file in the box dir.
@ -18,7 +18,7 @@ box.py", which creates the data.box data file in the box dir.
If you uncomment the dump or dump image lines in the input scripts the If you uncomment the dump or dump image lines in the input scripts the
runs will produce dump files or JPG images which you can view or runs will produce dump files or JPG images which you can view or
animate. See the Movies page of the LAMMPS web site animate. See the Movies page of the LAMMPS web site
(http://lammps.sandia.gov/movies.html), for animations of these (https://www.lammps.org/movies.html), for animations of these
scripts. Most were done using the dump image command. A few were scripts. Most were done using the dump image command. A few were
done using the gl tool in Pizza.py; the Pizza.py scripts that do the done using the gl tool in Pizza.py; the Pizza.py scripts that do the
animation are given in the directory, e.g. as line.viz.py. animation are given in the directory, e.g. as line.viz.py.

View File

@ -67,7 +67,7 @@ delete_atoms overlap 1.0 small big
reset_timestep 0 reset_timestep 0
neighbor 0.3 bin neighbor 0.3 multi
neigh_modify delay 0 every 1 check yes neigh_modify delay 0 every 1 check yes
comm_modify mode multi group big vel yes comm_modify mode multi group big vel yes

View File

@ -67,7 +67,7 @@ delete_atoms overlap 1.0 small big
reset_timestep 0 reset_timestep 0
neighbor 0.3 bin neighbor 0.3 multi
neigh_modify delay 0 every 1 check yes neigh_modify delay 0 every 1 check yes
comm_modify mode multi group big vel yes comm_modify mode multi group big vel yes

View File

@ -61,7 +61,7 @@ delete_atoms overlap 0.5 small big
reset_timestep 0 reset_timestep 0
neighbor 0.3 bin neighbor 0.3 multi
neigh_modify delay 0 every 1 check yes neigh_modify delay 0 every 1 check yes
comm_modify mode multi group big vel yes comm_modify mode multi group big vel yes

View File

@ -61,7 +61,7 @@ delete_atoms overlap 0.5 small big
reset_timestep 0 reset_timestep 0
neighbor 0.3 bin neighbor 0.3 multi
neigh_modify delay 0 every 1 check yes neigh_modify delay 0 every 1 check yes
comm_modify mode multi group big vel yes comm_modify mode multi group big vel yes

View File

@ -72,7 +72,7 @@ delete_atoms overlap 1.6 small big
reset_timestep 0 reset_timestep 0
neighbor 0.3 bin neighbor 0.3 multi
neigh_modify delay 0 every 1 check yes neigh_modify delay 0 every 1 check yes
comm_modify mode multi group big vel yes comm_modify mode multi group big vel yes

View File

@ -72,7 +72,7 @@ delete_atoms overlap 1.6 small big
reset_timestep 0 reset_timestep 0
neighbor 0.3 bin neighbor 0.3 multi
neigh_modify delay 0 every 1 check yes neigh_modify delay 0 every 1 check yes
comm_modify mode multi group big vel yes comm_modify mode multi group big vel yes

View File

@ -34,7 +34,7 @@ reset_timestep 0
velocity small create 1.44 87287 loop geom velocity small create 1.44 87287 loop geom
neighbor 0.3 bin neighbor 0.3 multi
neigh_modify delay 0 every 1 check yes neigh_modify delay 0 every 1 check yes
neigh_modify exclude molecule/intra big include big neigh_modify exclude molecule/intra big include big

View File

@ -70,7 +70,7 @@ delete_atoms overlap 1.0 small big
reset_timestep 0 reset_timestep 0
neighbor 0.3 bin neighbor 0.3 multi
neigh_modify delay 0 every 1 check yes neigh_modify delay 0 every 1 check yes
comm_modify mode multi group big vel yes comm_modify mode multi group big vel yes

View File

@ -70,7 +70,7 @@ delete_atoms overlap 1.0 small big
reset_timestep 0 reset_timestep 0
neighbor 0.3 bin neighbor 0.3 multi
neigh_modify delay 0 every 1 check yes neigh_modify delay 0 every 1 check yes
comm_modify mode multi group big vel yes comm_modify mode multi group big vel yes

View File

@ -67,7 +67,7 @@ delete_atoms overlap 0.5 small big
reset_timestep 0 reset_timestep 0
neighbor 0.3 bin neighbor 0.3 multi
neigh_modify delay 0 every 1 check yes neigh_modify delay 0 every 1 check yes
comm_modify mode multi group big vel yes comm_modify mode multi group big vel yes

View File

@ -67,7 +67,7 @@ delete_atoms overlap 0.5 small big
reset_timestep 0 reset_timestep 0
neighbor 0.3 bin neighbor 0.3 multi
neigh_modify delay 0 every 1 check yes neigh_modify delay 0 every 1 check yes
comm_modify mode multi group big vel yes comm_modify mode multi group big vel yes

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