merged in current master
This commit is contained in:
7
.github/ISSUE_TEMPLATE/help_request.md
vendored
7
.github/ISSUE_TEMPLATE/help_request.md
vendored
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: Request for Help
|
name: Request for Help
|
||||||
about: "Don't post help requests here, email the lammps-users mailing list"
|
about: "Don't post help requests here, post in the LAMMPS forum"
|
||||||
title: ""
|
title: ""
|
||||||
labels: invalid
|
labels: invalid
|
||||||
assignees: ''
|
assignees: ''
|
||||||
@ -8,8 +8,9 @@ assignees: ''
|
|||||||
---
|
---
|
||||||
|
|
||||||
Please **do not** post requests for help (e.g. with installing or using LAMMPS) here.
|
Please **do not** post requests for help (e.g. with installing or using LAMMPS) here.
|
||||||
Instead send an e-mail to the lammps-users mailing list.
|
Instead, you can post to the LAMMPS category in the Materials Science Community
|
||||||
|
Discourse forum at: https://matsci.org/lammps/
|
||||||
|
|
||||||
This issue tracker is for tracking LAMMPS development related issues only.
|
This issue tracker is for tracking LAMMPS development related issues only.
|
||||||
|
|
||||||
Thanks for your cooperation.
|
Thank you in advance for your cooperation.
|
||||||
|
|||||||
4
README
4
README
@ -16,8 +16,8 @@ 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) version 2.
|
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 code is maintained by the LAMMPS development team who can be emailed
|
||||||
at sjplimp@sandia.gov. The LAMMPS WWW Site at www.lammps.org has
|
at developers@lammps.org. 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:
|
||||||
|
|||||||
@ -7,6 +7,10 @@ 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 ignoring ${CMAKE_REQUIRED_LIBRARIES} but use it
|
||||||
|
if(POLICY CMP0075)
|
||||||
|
cmake_policy(SET CMP0075 NEW)
|
||||||
|
endif()
|
||||||
# set policy to silence warnings about missing executable permissions in
|
# 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
|
# pythonx.y-config when cross-compiling. review occasionally if it may be set to NEW
|
||||||
if(POLICY CMP0109)
|
if(POLICY CMP0109)
|
||||||
@ -385,9 +389,9 @@ pkg_depends(EXTRA-MOLECULE MOLECULE)
|
|||||||
|
|
||||||
# detect if we may enable OpenMP support by default
|
# detect if we may enable OpenMP support by default
|
||||||
set(BUILD_OMP_DEFAULT OFF)
|
set(BUILD_OMP_DEFAULT OFF)
|
||||||
find_package(OpenMP QUIET)
|
find_package(OpenMP COMPONENTS CXX QUIET)
|
||||||
if(OpenMP_FOUND)
|
if(OpenMP_CXX_FOUND)
|
||||||
check_include_file_cxx(omp.h HAVE_OMP_H_INCLUDE)
|
check_omp_h_include()
|
||||||
if(HAVE_OMP_H_INCLUDE)
|
if(HAVE_OMP_H_INCLUDE)
|
||||||
set(BUILD_OMP_DEFAULT ON)
|
set(BUILD_OMP_DEFAULT ON)
|
||||||
endif()
|
endif()
|
||||||
@ -396,8 +400,8 @@ endif()
|
|||||||
option(BUILD_OMP "Build with OpenMP support" ${BUILD_OMP_DEFAULT})
|
option(BUILD_OMP "Build with OpenMP support" ${BUILD_OMP_DEFAULT})
|
||||||
|
|
||||||
if(BUILD_OMP)
|
if(BUILD_OMP)
|
||||||
find_package(OpenMP REQUIRED)
|
find_package(OpenMP COMPONENTS CXX REQUIRED)
|
||||||
check_include_file_cxx(omp.h HAVE_OMP_H_INCLUDE)
|
check_omp_h_include()
|
||||||
if(NOT HAVE_OMP_H_INCLUDE)
|
if(NOT HAVE_OMP_H_INCLUDE)
|
||||||
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()
|
||||||
@ -727,18 +731,17 @@ 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 command.h compute.h dihedral.h domain.h
|
||||||
input.h info.h kspace.h lammps.h lattice.h library.h lmppython.h lmptype.h memory.h modify.h neighbor.h neigh_list.h output.h
|
error.h exceptions.h fix.h force.h group.h improper.h input.h info.h kspace.h lammps.h lattice.h
|
||||||
pair.h pointers.h region.h timer.h universe.h update.h utils.h variable.h)
|
library.h lmppython.h lmptype.h memory.h modify.h neighbor.h neigh_list.h output.h pair.h
|
||||||
if(LAMMPS_EXCEPTIONS)
|
platform.h pointers.h region.h timer.h universe.h update.h utils.h variable.h)
|
||||||
list(APPEND LAMMPS_CXX_HEADERS exceptions.h)
|
set(LAMMPS_FMT_HEADERS core.h format.h)
|
||||||
endif()
|
|
||||||
|
|
||||||
set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_MACHINE})
|
set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_MACHINE})
|
||||||
set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION})
|
set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION})
|
||||||
set_target_properties(lammps PROPERTIES PREFIX "lib")
|
set_target_properties(lammps PROPERTIES PREFIX "lib")
|
||||||
target_include_directories(lammps PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/lammps>)
|
target_include_directories(lammps PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/lammps>)
|
||||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps)
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/fmt)
|
||||||
foreach(_HEADER ${LAMMPS_CXX_HEADERS})
|
foreach(_HEADER ${LAMMPS_CXX_HEADERS})
|
||||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LAMMPS_SOURCE_DIR}/${_HEADER} ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER} DEPENDS ${LAMMPS_SOURCE_DIR}/${_HEADER})
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LAMMPS_SOURCE_DIR}/${_HEADER} ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER} DEPENDS ${LAMMPS_SOURCE_DIR}/${_HEADER})
|
||||||
add_custom_target(${_HEADER} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER})
|
add_custom_target(${_HEADER} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/${_HEADER})
|
||||||
@ -747,6 +750,14 @@ foreach(_HEADER ${LAMMPS_CXX_HEADERS})
|
|||||||
install(FILES ${LAMMPS_SOURCE_DIR}/${_HEADER} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps)
|
install(FILES ${LAMMPS_SOURCE_DIR}/${_HEADER} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps)
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
foreach(_HEADER ${LAMMPS_FMT_HEADERS})
|
||||||
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/fmt/${_HEADER} COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LAMMPS_SOURCE_DIR}/fmt/${_HEADER} ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/fmt/${_HEADER} DEPENDS ${LAMMPS_SOURCE_DIR}/fmt/${_HEADER})
|
||||||
|
add_custom_target(fmt_${_HEADER} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/fmt/${_HEADER})
|
||||||
|
add_dependencies(lammps fmt_${_HEADER})
|
||||||
|
if(BUILD_SHARED_LIBS)
|
||||||
|
install(FILES ${LAMMPS_SOURCE_DIR}/fmt/${_HEADER} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps/fmt)
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
target_include_directories(lammps INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/includes>)
|
target_include_directories(lammps INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/includes>)
|
||||||
add_library(LAMMPS::lammps ALIAS lammps)
|
add_library(LAMMPS::lammps ALIAS lammps)
|
||||||
get_target_property(LAMMPS_DEFINES lammps INTERFACE_COMPILE_DEFINITIONS)
|
get_target_property(LAMMPS_DEFINES lammps INTERFACE_COMPILE_DEFINITIONS)
|
||||||
@ -969,9 +980,6 @@ if(PKG_GPU)
|
|||||||
endif()
|
endif()
|
||||||
message(STATUS "GPU precision: ${GPU_PREC}")
|
message(STATUS "GPU precision: ${GPU_PREC}")
|
||||||
endif()
|
endif()
|
||||||
if(PKG_KOKKOS)
|
|
||||||
message(STATUS "Kokkos Arch: ${KOKKOS_ARCH}")
|
|
||||||
endif()
|
|
||||||
if(PKG_KSPACE)
|
if(PKG_KSPACE)
|
||||||
message(STATUS "<<< FFT settings >>>
|
message(STATUS "<<< FFT settings >>>
|
||||||
-- Primary FFT lib: ${FFT}")
|
-- Primary FFT lib: ${FFT}")
|
||||||
|
|||||||
@ -1,5 +1,10 @@
|
|||||||
# Find clang-format
|
# Find clang-format
|
||||||
find_program(ClangFormat_EXECUTABLE NAMES clang-format
|
find_program(ClangFormat_EXECUTABLE NAMES clang-format
|
||||||
|
clang-format-15.0
|
||||||
|
clang-format-14.0
|
||||||
|
clang-format-13.0
|
||||||
|
clang-format-12.0
|
||||||
|
clang-format-11.0
|
||||||
clang-format-10.0
|
clang-format-10.0
|
||||||
clang-format-9.0
|
clang-format-9.0
|
||||||
clang-format-8.0
|
clang-format-8.0
|
||||||
@ -14,19 +19,27 @@ if(ClangFormat_EXECUTABLE)
|
|||||||
OUTPUT_VARIABLE clang_format_version
|
OUTPUT_VARIABLE clang_format_version
|
||||||
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
if(clang_format_version MATCHES "^(Ubuntu |)clang-format version .*")
|
||||||
if(clang_format_version MATCHES "^clang-format version .*")
|
# Arch Linux output:
|
||||||
# Arch Linux
|
|
||||||
# clang-format version 10.0.0
|
# clang-format version 10.0.0
|
||||||
|
#
|
||||||
# Ubuntu 18.04 LTS Output
|
# Ubuntu 18.04 LTS output:
|
||||||
# clang-format version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
|
# clang-format version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
|
||||||
string(REGEX REPLACE "clang-format version ([0-9.]+).*"
|
#
|
||||||
"\\1"
|
# Ubuntu 20.04 LTS output:
|
||||||
|
# clang-format version 10.0.0-4ubuntu1
|
||||||
|
#
|
||||||
|
# Ubuntu 22.04 LTS output:
|
||||||
|
# Ubuntu clang-format version 14.0.0-1ubuntu1
|
||||||
|
#
|
||||||
|
# Fedora 36 output:
|
||||||
|
# clang-format version 14.0.5 (Fedora 14.0.5-1.fc36)
|
||||||
|
string(REGEX REPLACE "^(Ubuntu |)clang-format version ([0-9.]+).*"
|
||||||
|
"\\2"
|
||||||
ClangFormat_VERSION
|
ClangFormat_VERSION
|
||||||
"${clang_format_version}")
|
"${clang_format_version}")
|
||||||
elseif(clang_format_version MATCHES ".*LLVM version .*")
|
elseif(clang_format_version MATCHES ".*LLVM version .*")
|
||||||
# CentOS 7 Output
|
# CentOS 7 output:
|
||||||
# LLVM (http://llvm.org/):
|
# LLVM (http://llvm.org/):
|
||||||
# LLVM version 3.4.2
|
# LLVM version 3.4.2
|
||||||
# Optimized build.
|
# Optimized build.
|
||||||
|
|||||||
@ -22,7 +22,7 @@ endif()
|
|||||||
if(Python_EXECUTABLE)
|
if(Python_EXECUTABLE)
|
||||||
get_filename_component(_python_path ${Python_EXECUTABLE} PATH)
|
get_filename_component(_python_path ${Python_EXECUTABLE} PATH)
|
||||||
find_program(Cythonize_EXECUTABLE
|
find_program(Cythonize_EXECUTABLE
|
||||||
NAMES cythonize3 cythonize cythonize.bat
|
NAMES cythonize-${Python_VERSION_MAJOR}.${Python_VERSION_MINOR} cythonize3 cythonize cythonize.bat
|
||||||
HINTS ${_python_path})
|
HINTS ${_python_path})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@ -24,6 +24,21 @@ function(validate_option name values)
|
|||||||
endif()
|
endif()
|
||||||
endfunction(validate_option)
|
endfunction(validate_option)
|
||||||
|
|
||||||
|
# helper function to check for usable omp.h header
|
||||||
|
function(check_omp_h_include)
|
||||||
|
find_package(OpenMP COMPONENTS CXX QUIET)
|
||||||
|
if(OpenMP_CXX_FOUND)
|
||||||
|
set(CMAKE_REQUIRED_FLAGS ${OpenMP_CXX_FLAGS})
|
||||||
|
set(CMAKE_REQUIRED_INCLUDES ${OpenMP_CXX_INCLUDE_DIRS})
|
||||||
|
set(CMAKE_REQUIRED_LINK_OPTIONS ${OpenMP_CXX_FLAGS})
|
||||||
|
set(CMAKE_REQUIRED_LIBRARIES ${OpenMP_CXX_LIBRARIES})
|
||||||
|
check_include_file_cxx(omp.h _have_omp_h)
|
||||||
|
else()
|
||||||
|
set(_have_omp_h FALSE)
|
||||||
|
endif()
|
||||||
|
set(HAVE_OMP_H_INCLUDE ${_have_omp_h} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
# helper function for getting the most recently modified file or folder from a glob pattern
|
# helper function for getting the most recently modified file or folder from a glob pattern
|
||||||
function(get_newest_file path variable)
|
function(get_newest_file path variable)
|
||||||
file(GLOB _dirs ${path})
|
file(GLOB _dirs ${path})
|
||||||
|
|||||||
@ -15,8 +15,9 @@ if(Kokkos_ENABLE_OPENMP)
|
|||||||
if(NOT BUILD_OMP)
|
if(NOT BUILD_OMP)
|
||||||
message(FATAL_ERROR "Must enable BUILD_OMP with Kokkos_ENABLE_OPENMP")
|
message(FATAL_ERROR "Must enable BUILD_OMP with Kokkos_ENABLE_OPENMP")
|
||||||
else()
|
else()
|
||||||
if(LAMMPS_OMP_COMPAT_LEVEL LESS 4)
|
# NVHPC does not seem to provide a detectable OpenMP version, but is far beyond version 3.1
|
||||||
message(FATAL_ERROR "Compiler must support OpenMP 4.0 or later with Kokkos_ENABLE_OPENMP")
|
if((OpenMP_CXX_VERSION VERSION_LESS 3.1) AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "NVHPC"))
|
||||||
|
message(FATAL_ERROR "Compiler must support OpenMP 3.1 or later with Kokkos_ENABLE_OPENMP")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@ -138,6 +139,12 @@ if(PKG_KSPACE)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(PKG_ML-IAP)
|
||||||
|
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/mliap_data_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/mliap_descriptor_so3_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/mliap_model_linear_kokkos.cpp
|
||||||
|
${KOKKOS_PKG_SOURCES_DIR}/mliap_so3_kokkos.cpp)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(PKG_PHONON)
|
if(PKG_PHONON)
|
||||||
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/dynamical_matrix_kokkos.cpp)
|
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/dynamical_matrix_kokkos.cpp)
|
||||||
|
|||||||
@ -2,7 +2,13 @@
|
|||||||
set(MLIAP_ENABLE_PYTHON_DEFAULT OFF)
|
set(MLIAP_ENABLE_PYTHON_DEFAULT OFF)
|
||||||
if(PKG_PYTHON)
|
if(PKG_PYTHON)
|
||||||
find_package(Cythonize QUIET)
|
find_package(Cythonize QUIET)
|
||||||
if(Cythonize_FOUND)
|
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.14)
|
||||||
|
find_package(Python COMPONENTS NumPy QUIET)
|
||||||
|
else()
|
||||||
|
# assume we have NumPy
|
||||||
|
set(Python_NumPy_FOUND ON)
|
||||||
|
endif()
|
||||||
|
if(Cythonize_FOUND AND Python_NumPy_FOUND)
|
||||||
set(MLIAP_ENABLE_PYTHON_DEFAULT ON)
|
set(MLIAP_ENABLE_PYTHON_DEFAULT ON)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@ -11,6 +17,9 @@ option(MLIAP_ENABLE_PYTHON "Build ML-IAP package with Python support" ${MLIAP_EN
|
|||||||
|
|
||||||
if(MLIAP_ENABLE_PYTHON)
|
if(MLIAP_ENABLE_PYTHON)
|
||||||
find_package(Cythonize REQUIRED)
|
find_package(Cythonize REQUIRED)
|
||||||
|
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.14)
|
||||||
|
find_package(Python COMPONENTS NumPy REQUIRED)
|
||||||
|
endif()
|
||||||
if(NOT PKG_PYTHON)
|
if(NOT PKG_PYTHON)
|
||||||
message(FATAL_ERROR "Must enable PYTHON package for including Python support in ML-IAP")
|
message(FATAL_ERROR "Must enable PYTHON package for including Python support in ML-IAP")
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2022.09.27.fix10Oct.tar.gz" CACHE STRING "URL for PACE evaluator library sources")
|
set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2022.10.15.tar.gz" CACHE STRING "URL for PACE evaluator library sources")
|
||||||
|
|
||||||
set(PACELIB_MD5 "766cebcc0e5c4b8430c2f3cd202d9905" CACHE STRING "MD5 checksum of PACE evaluator library tarball")
|
set(PACELIB_MD5 "848ad6a6cc79fa82745927001fb1c9b5" CACHE STRING "MD5 checksum of PACE evaluator library tarball")
|
||||||
mark_as_advanced(PACELIB_URL)
|
mark_as_advanced(PACELIB_URL)
|
||||||
mark_as_advanced(PACELIB_MD5)
|
mark_as_advanced(PACELIB_MD5)
|
||||||
|
|
||||||
|
|||||||
@ -58,12 +58,12 @@ if(DOWNLOAD_QUIP)
|
|||||||
BUILD_COMMAND env QUIP_ARCH=lammps make libquip
|
BUILD_COMMAND env QUIP_ARCH=lammps make libquip
|
||||||
INSTALL_COMMAND ""
|
INSTALL_COMMAND ""
|
||||||
BUILD_IN_SOURCE YES
|
BUILD_IN_SOURCE YES
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/build/lammps/libquip.a
|
BUILD_BYPRODUCTS <SOURCE_DIR>/build/lammps/${CMAKE_STATIC_LIBRARY_PREFIX}quip${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||||
)
|
)
|
||||||
ExternalProject_get_property(quip_build SOURCE_DIR)
|
ExternalProject_get_property(quip_build SOURCE_DIR)
|
||||||
add_library(LAMMPS::QUIP UNKNOWN IMPORTED)
|
add_library(LAMMPS::QUIP UNKNOWN IMPORTED)
|
||||||
set_target_properties(LAMMPS::QUIP PROPERTIES
|
set_target_properties(LAMMPS::QUIP PROPERTIES
|
||||||
IMPORTED_LOCATION "${SOURCE_DIR}/build/lammps/libquip.a"
|
IMPORTED_LOCATION "${SOURCE_DIR}/build/lammps/${CMAKE_STATIC_LIBRARY_PREFIX}quip${CMAKE_STATIC_LIBRARY_SUFFIX}"
|
||||||
INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}")
|
INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}")
|
||||||
target_link_libraries(lammps PRIVATE LAMMPS::QUIP)
|
target_link_libraries(lammps PRIVATE LAMMPS::QUIP)
|
||||||
add_dependencies(LAMMPS::QUIP quip_build)
|
add_dependencies(LAMMPS::QUIP quip_build)
|
||||||
|
|||||||
@ -47,15 +47,15 @@ if(DOWNLOAD_PLUMED)
|
|||||||
endif()
|
endif()
|
||||||
message(STATUS "PLUMED download requested - we will build our own")
|
message(STATUS "PLUMED download requested - we will build our own")
|
||||||
if(PLUMED_MODE STREQUAL "STATIC")
|
if(PLUMED_MODE STREQUAL "STATIC")
|
||||||
set(PLUMED_BUILD_BYPRODUCTS "<INSTALL_DIR>/lib/libplumed.a")
|
set(PLUMED_BUILD_BYPRODUCTS "<INSTALL_DIR>/lib/${CMAKE_STATIC_LIBRARY_PREFIX}plumed${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||||||
elseif(PLUMED_MODE STREQUAL "SHARED")
|
elseif(PLUMED_MODE STREQUAL "SHARED")
|
||||||
set(PLUMED_BUILD_BYPRODUCTS "<INSTALL_DIR>/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX};<INSTALL_DIR>/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
set(PLUMED_BUILD_BYPRODUCTS "<INSTALL_DIR>/lib/${CMAKE_SHARED_LIBRARY_PREFIX}plumed${CMAKE_SHARED_LIBRARY_SUFFIX};<INSTALL_DIR>/lib/${CMAKE_SHARED_LIBRARY_PREFIX}plumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||||
elseif(PLUMED_MODE STREQUAL "RUNTIME")
|
elseif(PLUMED_MODE STREQUAL "RUNTIME")
|
||||||
set(PLUMED_BUILD_BYPRODUCTS "<INSTALL_DIR>/lib/libplumedWrapper.a")
|
set(PLUMED_BUILD_BYPRODUCTS "<INSTALL_DIR>/lib/${CMAKE_STATIC_LIBRARY_PREFIX}plumedWrapper${CMAKE_STATIC_LIBRARY_PREFIX}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.7.4/plumed-src-2.7.4.tgz" CACHE STRING "URL for PLUMED tarball")
|
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.8.1/plumed-src-2.8.1.tgz" CACHE STRING "URL for PLUMED tarball")
|
||||||
set(PLUMED_MD5 "858e0b6aed173748fc85b6bc8a9dcb3e" CACHE STRING "MD5 checksum of PLUMED tarball")
|
set(PLUMED_MD5 "6bfe72ebdae63dc38a9ca27d9b0e08f8" CACHE STRING "MD5 checksum of PLUMED tarball")
|
||||||
|
|
||||||
mark_as_advanced(PLUMED_URL)
|
mark_as_advanced(PLUMED_URL)
|
||||||
mark_as_advanced(PLUMED_MD5)
|
mark_as_advanced(PLUMED_MD5)
|
||||||
@ -78,12 +78,12 @@ if(DOWNLOAD_PLUMED)
|
|||||||
add_library(LAMMPS::PLUMED UNKNOWN IMPORTED)
|
add_library(LAMMPS::PLUMED UNKNOWN IMPORTED)
|
||||||
add_dependencies(LAMMPS::PLUMED plumed_build)
|
add_dependencies(LAMMPS::PLUMED plumed_build)
|
||||||
if(PLUMED_MODE STREQUAL "STATIC")
|
if(PLUMED_MODE STREQUAL "STATIC")
|
||||||
set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed.a INTERFACE_LINK_LIBRARIES "${PLUMED_LINK_LIBS};${CMAKE_DL_LIBS}")
|
set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}plumed${CMAKE_STATIC_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${PLUMED_LINK_LIBS};${CMAKE_DL_LIBS}")
|
||||||
elseif(PLUMED_MODE STREQUAL "SHARED")
|
elseif(PLUMED_MODE STREQUAL "SHARED")
|
||||||
set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumed${CMAKE_SHARED_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX};${CMAKE_DL_LIBS}")
|
set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}plumed${CMAKE_SHARED_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}plumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX};${CMAKE_DL_LIBS}")
|
||||||
elseif(PLUMED_MODE STREQUAL "RUNTIME")
|
elseif(PLUMED_MODE STREQUAL "RUNTIME")
|
||||||
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_DEFAULT_KERNEL=${INSTALL_DIR}/lib/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_DEFAULT_KERNEL=${INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}plumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||||
set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumedWrapper.a INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}")
|
set_target_properties(LAMMPS::PLUMED PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}plumedWrapper${CMAKE_STATIC_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}")
|
||||||
endif()
|
endif()
|
||||||
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
|
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
|
||||||
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
|
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
|
||||||
@ -96,7 +96,7 @@ else()
|
|||||||
elseif(PLUMED_MODE STREQUAL "SHARED")
|
elseif(PLUMED_MODE STREQUAL "SHARED")
|
||||||
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.shared)
|
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.shared)
|
||||||
elseif(PLUMED_MODE STREQUAL "RUNTIME")
|
elseif(PLUMED_MODE STREQUAL "RUNTIME")
|
||||||
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_COMPILE_DEFINITIONS "__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}plumedKernel${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||||
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.runtime)
|
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.runtime)
|
||||||
endif()
|
endif()
|
||||||
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_LINK_LIBRARIES "${PLUMED_LOAD}")
|
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_LINK_LIBRARIES "${PLUMED_LOAD}")
|
||||||
|
|||||||
@ -1,4 +1,9 @@
|
|||||||
find_package(VTK REQUIRED NO_MODULE)
|
find_package(VTK REQUIRED NO_MODULE)
|
||||||
include(${VTK_USE_FILE})
|
|
||||||
target_compile_definitions(lammps PRIVATE -DLAMMPS_VTK)
|
target_compile_definitions(lammps PRIVATE -DLAMMPS_VTK)
|
||||||
target_link_libraries(lammps PRIVATE ${VTK_LIBRARIES})
|
if (VTK_MAJOR_VERSION VERSION_LESS 9.0)
|
||||||
|
include(${VTK_USE_FILE})
|
||||||
|
target_link_libraries(lammps PRIVATE ${VTK_LIBRARIES})
|
||||||
|
else()
|
||||||
|
target_link_libraries(lammps PRIVATE VTK::CommonCore VTK::IOCore VTK::CommonDataModel VTK::IOXML VTK::IOLegacy VTK::IOParallelXML)
|
||||||
|
vtk_module_autoinit(TARGETS lammps MODULES VTK::CommonCore VTK::IOCore VTK::CommonDataModel VTK::IOXML VTK::IOLegacy VTK::IOParallelXML)
|
||||||
|
endif()
|
||||||
|
|||||||
@ -28,10 +28,3 @@ 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_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_CXX "clang++" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE)
|
|
||||||
|
|||||||
@ -19,11 +19,3 @@ set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -Og -g -std=f2003" CACHE STRING "" FORCE)
|
|||||||
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -O2 -DNDEBUG -std=f2003" CACHE STRING "" FORCE)
|
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -O2 -DNDEBUG -std=f2003" CACHE STRING "" FORCE)
|
||||||
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG -std=f2003" CACHE STRING "" FORCE)
|
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG -std=f2003" CACHE STRING "" FORCE)
|
||||||
unset(HAVE_OMP_H_INCLUDE CACHE)
|
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||||
|
|
||||||
set(OpenMP_C "gcc" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_C_LIB_NAMES "gomp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_CXX "g++" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_CXX_LIB_NAMES "gomp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_omp_LIBRARY "libgomp.so" CACHE PATH "" FORCE)
|
|
||||||
|
|||||||
9
cmake/presets/nvhpc.cmake
Normal file
9
cmake/presets/nvhpc.cmake
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# preset that will enable Nvidia HPC SDK compilers with support for MPI and OpenMP (on Linux boxes)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_COMPILER "nvc++" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_C_COMPILER "nvc" CACHE STRING "" FORCE)
|
||||||
|
set(CMAKE_Fortran_COMPILER "nvfortran" CACHE STRING "" FORCE)
|
||||||
|
set(MPI_CXX "nvc++" CACHE STRING "" FORCE)
|
||||||
|
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
||||||
|
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
# preset that will restore gcc/g++ with support for MPI and OpenMP (on Linux boxes)
|
# preset that will set gcc/g++ with extra warnings enabled and support for MPI and OpenMP (on Linux boxes)
|
||||||
|
|
||||||
set(CMAKE_CXX_COMPILER "g++" CACHE STRING "" FORCE)
|
set(CMAKE_CXX_COMPILER "g++" CACHE STRING "" FORCE)
|
||||||
set(CMAKE_C_COMPILER "gcc" CACHE STRING "" FORCE)
|
set(CMAKE_C_COMPILER "gcc" CACHE STRING "" FORCE)
|
||||||
@ -17,10 +17,3 @@ set(MPI_Fortran "gfortran" CACHE STRING "" FORCE)
|
|||||||
set(MPI_Fortran_COMPILER "mpifort" CACHE STRING "" FORCE)
|
set(MPI_Fortran_COMPILER "mpifort" CACHE STRING "" FORCE)
|
||||||
unset(HAVE_OMP_H_INCLUDE CACHE)
|
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||||
|
|
||||||
set(OpenMP_C "gcc" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_C_LIB_NAMES "gomp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_CXX "g++" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_CXX_LIB_NAMES "gomp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_omp_LIBRARY "libgomp.so" CACHE PATH "" FORCE)
|
|
||||||
|
|||||||
@ -7,10 +7,3 @@ set(MPI_CXX "pgc++" 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 "pgcc" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_C_FLAGS "-mp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_CXX "pgc++" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_CXX_FLAGS "-mp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_CXX_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
|
||||||
set(OpenMP_omp_LIBRARY "libomp.so" CACHE PATH "" FORCE)
|
|
||||||
|
|||||||
16
doc/Makefile
16
doc/Makefile
@ -38,16 +38,14 @@ endif
|
|||||||
# override settings for PIP commands
|
# override settings for PIP commands
|
||||||
# PIP_OPTIONS = --cert /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt --proxy http://proxy.mydomain.org
|
# PIP_OPTIONS = --cert /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt --proxy http://proxy.mydomain.org
|
||||||
|
|
||||||
#SPHINXEXTRA = -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiprocessing.cpu_count())') $(shell test -f $(BUILDDIR)/doxygen/xml/run.stamp && printf -- "-E")
|
|
||||||
|
|
||||||
# temporarily disable caching so that the hack for the sphinx-tabs extensions to get proper non-html output works
|
# temporarily disable caching so that the hack for the sphinx-tabs extensions to get proper non-html output works
|
||||||
SPHINXEXTRA = -E -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiprocessing.cpu_count())')
|
SPHINXEXTRA = -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiprocessing.cpu_count())')
|
||||||
|
|
||||||
# grab list of sources from doxygen config file.
|
# grab list of sources from doxygen config file.
|
||||||
# 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 char_check xmlgen fasthtml
|
.PHONY: help clean-all clean clean-spelling epub mobi html pdf spelling anchor_check style_check char_check xmlgen fasthtml
|
||||||
|
|
||||||
# ------------------------------------------
|
# ------------------------------------------
|
||||||
|
|
||||||
@ -89,6 +87,8 @@ html: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
|
|||||||
@$(MAKE) $(MFLAGS) -C graphviz all
|
@$(MAKE) $(MFLAGS) -C graphviz all
|
||||||
@(\
|
@(\
|
||||||
. $(VENV)/bin/activate ; env PYTHONWARNINGS= \
|
. $(VENV)/bin/activate ; env PYTHONWARNINGS= \
|
||||||
|
sphinx-build -E $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) html ;\
|
||||||
|
touch $(RSTDIR)/Fortran.rst ;\
|
||||||
sphinx-build $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) html ;\
|
sphinx-build $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) html ;\
|
||||||
ln -sf Manual.html html/index.html;\
|
ln -sf Manual.html html/index.html;\
|
||||||
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
||||||
@ -114,7 +114,9 @@ fasthtml: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
|
|||||||
@mkdir -p fasthtml
|
@mkdir -p fasthtml
|
||||||
@(\
|
@(\
|
||||||
. $(VENV)/bin/activate ; env PYTHONWARNINGS= \
|
. $(VENV)/bin/activate ; env PYTHONWARNINGS= \
|
||||||
sphinx-build -j 4 -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/fasthtml/doctrees $(RSTDIR) fasthtml ;\
|
sphinx-build $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/fasthtml/doctrees $(RSTDIR) fasthtml ;\
|
||||||
|
touch $(RSTDIR)/Fortran.rst ;\
|
||||||
|
sphinx-build $(SPHINXEXTRA) -b html -c $(SPHINXCONFIG) -d $(BUILDDIR)/fasthtml/doctrees $(RSTDIR) fasthtml ;\
|
||||||
deactivate ;\
|
deactivate ;\
|
||||||
)
|
)
|
||||||
@rm -rf fasthtml/_sources
|
@rm -rf fasthtml/_sources
|
||||||
@ -144,6 +146,8 @@ epub: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
|
|||||||
@cp src/JPG/*.* epub/JPG
|
@cp src/JPG/*.* epub/JPG
|
||||||
@(\
|
@(\
|
||||||
. $(VENV)/bin/activate ;\
|
. $(VENV)/bin/activate ;\
|
||||||
|
sphinx-build -E $(SPHINXEXTRA) -b epub -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) epub ;\
|
||||||
|
touch $(RSTDIR)/Fortran.rst ;\
|
||||||
sphinx-build $(SPHINXEXTRA) -b epub -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) epub ;\
|
sphinx-build $(SPHINXEXTRA) -b epub -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) epub ;\
|
||||||
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
||||||
deactivate ;\
|
deactivate ;\
|
||||||
@ -163,6 +167,8 @@ pdf: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
|
|||||||
@if [ "$(HAS_PDFLATEX)" == "NO" ] ; then echo "PDFLaTeX or latexmk were not found! Please check README for further instructions" 1>&2; exit 1; fi
|
@if [ "$(HAS_PDFLATEX)" == "NO" ] ; then echo "PDFLaTeX or latexmk were not found! Please check README for further instructions" 1>&2; exit 1; fi
|
||||||
@(\
|
@(\
|
||||||
. $(VENV)/bin/activate ; env PYTHONWARNINGS= \
|
. $(VENV)/bin/activate ; env PYTHONWARNINGS= \
|
||||||
|
sphinx-build -E $(SPHINXEXTRA) -b latex -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) latex ;\
|
||||||
|
touch $(RSTDIR)/Fortran.rst ;\
|
||||||
sphinx-build $(SPHINXEXTRA) -b latex -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) latex ;\
|
sphinx-build $(SPHINXEXTRA) -b latex -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) latex ;\
|
||||||
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
|
||||||
echo "############################################" ;\
|
echo "############################################" ;\
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
.TH LAMMPS "1" "15 September 2022" "2022-9-15"
|
.TH LAMMPS "1" "3 November 2022" "2022-11-3"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
.B LAMMPS
|
.B LAMMPS
|
||||||
\- Molecular Dynamics Simulator. Version 15 September 2022
|
\- Molecular Dynamics Simulator. Version 3 November 2022
|
||||||
|
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B lmp
|
.B lmp
|
||||||
|
|||||||
@ -147,6 +147,16 @@ compile and will download and compile a specific recent version of the
|
|||||||
`Googletest <https://github.com/google/googletest/>`_ C++ test framework
|
`Googletest <https://github.com/google/googletest/>`_ C++ test framework
|
||||||
for implementing the tests.
|
for implementing the tests.
|
||||||
|
|
||||||
|
.. admonition:: Software version requirements for testing
|
||||||
|
:class: note
|
||||||
|
|
||||||
|
The compiler and library version requirements for the testing
|
||||||
|
framework are more strict than for the main part of LAMMPS. For
|
||||||
|
example the default GNU C++ and Fortran compilers of RHEL/CentOS 7.x
|
||||||
|
(version 4.8.x) are not sufficient. The CMake configuration will try
|
||||||
|
to detect compatible versions and either skip incompatible tests or
|
||||||
|
stop with an error.
|
||||||
|
|
||||||
After compilation is complete, the unit testing is started in the build
|
After compilation is complete, the unit testing is started in the build
|
||||||
folder using the ``ctest`` command, which is part of the CMake software.
|
folder using the ``ctest`` command, which is part of the CMake software.
|
||||||
The output of this command will be looking something like this::
|
The output of this command will be looking something like this::
|
||||||
|
|||||||
@ -234,7 +234,7 @@ LAMMPS code. This also applies to the ``-DLAMMPS_BIGBIG``\ ,
|
|||||||
Makefile you use.
|
Makefile you use.
|
||||||
|
|
||||||
You can also build the library in one step from the ``lammps/src`` dir,
|
You can also build the library in one step from the ``lammps/src`` dir,
|
||||||
using a command like these, which simply invoke the ``lib/gpu/Install.py``
|
using a command like these, which simply invokes the ``lib/gpu/Install.py``
|
||||||
script with the specified args:
|
script with the specified args:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -350,7 +350,7 @@ minutes to hours) to build. Of course you only need to do that once.)
|
|||||||
You can download and build the KIM library manually if you prefer;
|
You can download and build the KIM library manually if you prefer;
|
||||||
follow the instructions in ``lib/kim/README``. You can also do
|
follow the instructions in ``lib/kim/README``. You can also do
|
||||||
this in one step from the lammps/src directory, using a command like
|
this in one step from the lammps/src directory, using a command like
|
||||||
these, which simply invoke the ``lib/kim/Install.py`` script with
|
these, which simply invokes the ``lib/kim/Install.py`` script with
|
||||||
the specified args.
|
the specified args.
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -954,7 +954,7 @@ more details.
|
|||||||
You can download and build the MS-CG library manually if you
|
You can download and build the MS-CG library manually if you
|
||||||
prefer; follow the instructions in ``lib/mscg/README``\ . You can
|
prefer; follow the instructions in ``lib/mscg/README``\ . You can
|
||||||
also do it in one step from the ``lammps/src`` dir, using a
|
also do it in one step from the ``lammps/src`` dir, using a
|
||||||
command like these, which simply invoke the
|
command like these, which simply invokes the
|
||||||
``lib/mscg/Install.py`` script with the specified args:
|
``lib/mscg/Install.py`` script with the specified args:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -1011,7 +1011,7 @@ POEMS package
|
|||||||
``lib/poems``\ . You can do this manually if you prefer; follow
|
``lib/poems``\ . You can do this manually if you prefer; follow
|
||||||
the instructions in ``lib/poems/README``\ . You can also do it in
|
the instructions in ``lib/poems/README``\ . You can also do it in
|
||||||
one step from the ``lammps/src`` dir, using a command like these,
|
one step from the ``lammps/src`` dir, using a command like these,
|
||||||
which simply invoke the ``lib/poems/Install.py`` script with the
|
which simply invokes the ``lib/poems/Install.py`` script with the
|
||||||
specified args:
|
specified args:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -1100,7 +1100,7 @@ binary package provided by your operating system.
|
|||||||
You can download and build the Voro++ library manually if you
|
You can download and build the Voro++ library manually if you
|
||||||
prefer; follow the instructions in ``lib/voronoi/README``. You
|
prefer; follow the instructions in ``lib/voronoi/README``. You
|
||||||
can also do it in one step from the ``lammps/src`` dir, using a
|
can also do it in one step from the ``lammps/src`` dir, using a
|
||||||
command like these, which simply invoke the
|
command like these, which simply invokes the
|
||||||
``lib/voronoi/Install.py`` script with the specified args:
|
``lib/voronoi/Install.py`` script with the specified args:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -1179,7 +1179,7 @@ The ATC package requires the MANYBODY package also be installed.
|
|||||||
``lib/atc``. You can do this manually if you prefer; follow the
|
``lib/atc``. You can do this manually if you prefer; follow the
|
||||||
instructions in ``lib/atc/README``. You can also do it in one
|
instructions in ``lib/atc/README``. You can also do it in one
|
||||||
step from the ``lammps/src`` dir, using a command like these,
|
step from the ``lammps/src`` dir, using a command like these,
|
||||||
which simply invoke the ``lib/atc/Install.py`` script with the
|
which simply invokes the ``lib/atc/Install.py`` script with the
|
||||||
specified args:
|
specified args:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -1230,7 +1230,7 @@ AWPMD package
|
|||||||
``lib/awpmd``. You can do this manually if you prefer; follow the
|
``lib/awpmd``. You can do this manually if you prefer; follow the
|
||||||
instructions in ``lib/awpmd/README``. You can also do it in one
|
instructions in ``lib/awpmd/README``. You can also do it in one
|
||||||
step from the ``lammps/src`` dir, using a command like these,
|
step from the ``lammps/src`` dir, using a command like these,
|
||||||
which simply invoke the ``lib/awpmd/Install.py`` script with the
|
which simply invokes the ``lib/awpmd/Install.py`` script with the
|
||||||
specified args:
|
specified args:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -1293,7 +1293,7 @@ be built for the most part with all major versions of the C++ language.
|
|||||||
|
|
||||||
In general, it is safer to use build setting consistent with the
|
In general, it is safer to use build setting consistent with the
|
||||||
rest of LAMMPS. This is best carried out from the LAMMPS src
|
rest of LAMMPS. This is best carried out from the LAMMPS src
|
||||||
directory using a command like these, which simply invoke the
|
directory using a command like these, which simply invokes the
|
||||||
``lib/colvars/Install.py`` script with the specified args:
|
``lib/colvars/Install.py`` script with the specified args:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -1334,20 +1334,30 @@ This package depends on the KSPACE package.
|
|||||||
|
|
||||||
.. tab:: CMake build
|
.. tab:: CMake build
|
||||||
|
|
||||||
No additional settings are needed besides ``-D PKG_KSPACE=yes`` and ``-D
|
No additional settings are needed besides ``-D PKG_KSPACE=yes`` and
|
||||||
PKG_ELECTRODE=yes``.
|
``-D PKG_ELECTRODE=yes``.
|
||||||
|
|
||||||
.. tab:: Traditional make
|
.. tab:: Traditional make
|
||||||
|
|
||||||
The package is activated with ``make yes-KSPACE`` and ``make
|
Before building LAMMPS, you must configure the ELECTRODE support
|
||||||
yes-ELECTRODE``
|
libraries and settings in ``lib/electrode``. You can do this
|
||||||
|
manually, if you prefer, or do it in one step from the
|
||||||
|
``lammps/src`` dir, using a command like these, which simply
|
||||||
|
invokes the ``lib/electrode/Install.py`` script with the specified
|
||||||
|
args:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ make lib-electrode # print help message
|
||||||
|
$ make lib-electrode args="-m serial" # build with GNU g++ compiler and MPI STUBS (settings as with "make serial")
|
||||||
|
$ make lib-electrode args="-m mpi" # build with default MPI compiler (settings as with "make mpi")
|
||||||
|
|
||||||
|
|
||||||
Note that the ``Makefile.lammps`` file has settings for the BLAS and
|
Note that the ``Makefile.lammps`` file has settings for the BLAS
|
||||||
LAPACK linear algebra libraries. As explained in ``lib/awpmd/README``
|
and LAPACK linear algebra libraries. These can either exist on
|
||||||
these can either exist on your system, or you can use the files provided
|
your system, or you can use the files provided in ``lib/linalg``.
|
||||||
in ``lib/linalg``. In the latter case you also need to build the library
|
In the latter case you also need to build the library in
|
||||||
in ``lib/linalg`` with a command like these:
|
``lib/linalg`` with a command like these:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -1356,6 +1366,9 @@ This package depends on the KSPACE package.
|
|||||||
$ make lib-linalg args="-m mpi" # build with default MPI Fortran compiler (settings as with "make mpi")
|
$ make lib-linalg args="-m mpi" # build with default MPI Fortran compiler (settings as with "make mpi")
|
||||||
$ make lib-linalg args="-m gfortran" # build with GNU Fortran compiler
|
$ make lib-linalg args="-m gfortran" # build with GNU Fortran compiler
|
||||||
|
|
||||||
|
The package itself is activated with ``make yes-KSPACE`` and
|
||||||
|
``make yes-ELECTRODE``
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
.. _ml-pace:
|
.. _ml-pace:
|
||||||
@ -1555,7 +1568,7 @@ the HDF5 library.
|
|||||||
``lib/h5md``. You can do this manually if you prefer; follow the
|
``lib/h5md``. You can do this manually if you prefer; follow the
|
||||||
instructions in ``lib/h5md/README``. You can also do it in one
|
instructions in ``lib/h5md/README``. You can also do it in one
|
||||||
step from the ``lammps/src`` dir, using a command like these,
|
step from the ``lammps/src`` dir, using a command like these,
|
||||||
which simply invoke the ``lib/h5md/Install.py`` script with the
|
which simply invokes the ``lib/h5md/Install.py`` script with the
|
||||||
specified args:
|
specified args:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -1611,7 +1624,7 @@ details please see ``lib/hdnnp/README`` and the `n2p2 build documentation
|
|||||||
You can download and build the *n2p2* library manually if you prefer;
|
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
|
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
|
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:
|
simply invokes the ``lib/hdnnp/Install.py`` script with the specified args:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -1748,7 +1761,7 @@ they will be downloaded the first time this package is installed.
|
|||||||
Before building LAMMPS, you must build the *mesont* library in
|
Before building LAMMPS, you must build the *mesont* library in
|
||||||
``lib/mesont``\ . You can also do it in one step from the
|
``lib/mesont``\ . You can also do it in one step from the
|
||||||
``lammps/src`` dir, using a command like these, which simply
|
``lammps/src`` dir, using a command like these, which simply
|
||||||
invoke the ``lib/mesont/Install.py`` script with the specified
|
invokes the ``lib/mesont/Install.py`` script with the specified
|
||||||
args:
|
args:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -1917,7 +1930,7 @@ verified to work in February 2020 with Quantum Espresso versions 6.3 to
|
|||||||
``lib/qmmm``. You can do this manually if you prefer; follow the
|
``lib/qmmm``. You can do this manually if you prefer; follow the
|
||||||
first two steps explained in ``lib/qmmm/README``. You can also do
|
first two steps explained in ``lib/qmmm/README``. You can also do
|
||||||
it in one step from the ``lammps/src`` dir, using a command like
|
it in one step from the ``lammps/src`` dir, using a command like
|
||||||
these, which simply invoke the ``lib/qmmm/Install.py`` script with
|
these, which simply invokes the ``lib/qmmm/Install.py`` script with
|
||||||
the specified args:
|
the specified args:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -2025,7 +2038,7 @@ To build with this package, you must download and build the
|
|||||||
You can download and build the ScaFaCoS library manually if you
|
You can download and build the ScaFaCoS library manually if you
|
||||||
prefer; follow the instructions in ``lib/scafacos/README``. You
|
prefer; follow the instructions in ``lib/scafacos/README``. You
|
||||||
can also do it in one step from the ``lammps/src`` dir, using a
|
can also do it in one step from the ``lammps/src`` dir, using a
|
||||||
command like these, which simply invoke the
|
command like these, which simply invokes the
|
||||||
``lib/scafacos/Install.py`` script with the specified args:
|
``lib/scafacos/Install.py`` script with the specified args:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
@ -2069,7 +2082,7 @@ Eigen3 is a template library, so you do not need to build it.
|
|||||||
You can download the Eigen3 library manually if you prefer; follow
|
You can download the Eigen3 library manually if you prefer; follow
|
||||||
the instructions in ``lib/smd/README``. You can also do it in one
|
the instructions in ``lib/smd/README``. You can also do it in one
|
||||||
step from the ``lammps/src`` dir, using a command like these,
|
step from the ``lammps/src`` dir, using a command like these,
|
||||||
which simply invoke the ``lib/smd/Install.py`` script with the
|
which simply invokes the ``lib/smd/Install.py`` script with the
|
||||||
specified args:
|
specified args:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|||||||
@ -205,7 +205,7 @@ OPT.
|
|||||||
* :doc:`mesont/tpm <pair_mesont_tpm>`
|
* :doc:`mesont/tpm <pair_mesont_tpm>`
|
||||||
* :doc:`mgpt <pair_mgpt>`
|
* :doc:`mgpt <pair_mgpt>`
|
||||||
* :doc:`mie/cut (g) <pair_mie>`
|
* :doc:`mie/cut (g) <pair_mie>`
|
||||||
* :doc:`mliap <pair_mliap>`
|
* :doc:`mliap (k) <pair_mliap>`
|
||||||
* :doc:`mm3/switch3/coulgauss/long <pair_lj_switch3_coulgauss_long>`
|
* :doc:`mm3/switch3/coulgauss/long <pair_lj_switch3_coulgauss_long>`
|
||||||
* :doc:`momb <pair_momb>`
|
* :doc:`momb <pair_momb>`
|
||||||
* :doc:`morse (gkot) <pair_morse>`
|
* :doc:`morse (gkot) <pair_morse>`
|
||||||
@ -295,6 +295,7 @@ OPT.
|
|||||||
* :doc:`vashishta (gko) <pair_vashishta>`
|
* :doc:`vashishta (gko) <pair_vashishta>`
|
||||||
* :doc:`vashishta/table (o) <pair_vashishta>`
|
* :doc:`vashishta/table (o) <pair_vashishta>`
|
||||||
* :doc:`wf/cut <pair_wf_cut>`
|
* :doc:`wf/cut <pair_wf_cut>`
|
||||||
|
* :doc:`ylz <pair_ylz>`
|
||||||
* :doc:`yukawa (gko) <pair_yukawa>`
|
* :doc:`yukawa (gko) <pair_yukawa>`
|
||||||
* :doc:`yukawa/colloid (go) <pair_yukawa_colloid>`
|
* :doc:`yukawa/colloid (go) <pair_yukawa_colloid>`
|
||||||
* :doc:`zbl (gko) <pair_zbl>`
|
* :doc:`zbl (gko) <pair_zbl>`
|
||||||
|
|||||||
@ -7,7 +7,7 @@ source files provided as a supplement to a publication) that are written
|
|||||||
for an older version of LAMMPS and thus need to be updated to be
|
for an older version of LAMMPS and thus need to be updated to be
|
||||||
compatible with the current version of LAMMPS. Due to the active
|
compatible with the current version of LAMMPS. Due to the active
|
||||||
development of LAMMPS it is likely to always be incomplete. Please
|
development of LAMMPS it is likely to always be incomplete. Please
|
||||||
contact developer@lammps.org in case you run across an issue that is not
|
contact developers@lammps.org in case you run across an issue that is not
|
||||||
(yet) listed here. Please also review the latest information about the
|
(yet) listed here. Please also review the latest information about the
|
||||||
LAMMPS :doc:`programming style conventions <Modify_style>`, especially
|
LAMMPS :doc:`programming style conventions <Modify_style>`, especially
|
||||||
if you are considering to submit the updated version for inclusion into
|
if you are considering to submit the updated version for inclusion into
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -8,18 +8,28 @@ This site M is located at a fixed distance away from the oxygen along
|
|||||||
the bisector of the HOH bond angle. A bond style of *harmonic* and an
|
the bisector of the HOH bond angle. A bond style of *harmonic* and an
|
||||||
angle style of *harmonic* or *charmm* should also be used.
|
angle style of *harmonic* or *charmm* should also be used.
|
||||||
|
|
||||||
A TIP4P model is run with LAMMPS using either this command
|
A TIP4P model is run with LAMMPS using either these commands
|
||||||
for a cutoff model:
|
for a cutoff model:
|
||||||
|
|
||||||
|
* :doc:`pair_style tip4p/cut <pair_lj_cut_tip4p>`
|
||||||
* :doc:`pair_style lj/cut/tip4p/cut <pair_lj_cut_tip4p>`
|
* :doc:`pair_style lj/cut/tip4p/cut <pair_lj_cut_tip4p>`
|
||||||
|
|
||||||
or these two commands for a long-range model:
|
or these commands for a long-range model:
|
||||||
|
|
||||||
|
* :doc:`pair_style tip4p/long <pair_coul>`
|
||||||
* :doc:`pair_style lj/cut/tip4p/long <pair_lj_cut_tip4p>`
|
* :doc:`pair_style lj/cut/tip4p/long <pair_lj_cut_tip4p>`
|
||||||
|
* :doc:`pair_style lj/long/tip4p/long <pair_lj_long>`
|
||||||
|
* :doc:`pair_style tip4p/long/soft <pair_fep_soft>`
|
||||||
|
* :doc:`pair_style lj/cut/tip4p/long/soft <pair_fep_soft>`
|
||||||
* :doc:`kspace_style pppm/tip4p <kspace_style>`
|
* :doc:`kspace_style pppm/tip4p <kspace_style>`
|
||||||
|
* :doc:`kspace_style pppm/disp/tip4p <kspace_style>`
|
||||||
|
|
||||||
For both models, the bond lengths and bond angles should be held fixed
|
The bond lengths and bond angles should be held fixed using the
|
||||||
using the :doc:`fix shake <fix_shake>` command.
|
:doc:`fix shake <fix_shake>` or :doc:`fix rattle <fix_shake>` command,
|
||||||
|
unless a parameterization for a flexible TIP4P model is used. The
|
||||||
|
parameter sets listed below are all for rigid TIP4P model variants and
|
||||||
|
thus the bond and angle force constants are not used and can be set to
|
||||||
|
any legal value; only equilibrium length and angle are used.
|
||||||
|
|
||||||
These are the additional parameters (in real units) to set for O and H
|
These are the additional parameters (in real units) to set for O and H
|
||||||
atoms and the water molecule to run a rigid TIP4P model with a cutoff
|
atoms and the water molecule to run a rigid TIP4P model with a cutoff
|
||||||
@ -87,15 +97,16 @@ solver (e.g. Ewald or PPPM in LAMMPS):
|
|||||||
| LJ :math:`\epsilon`, :math:`\sigma` of OH, HH = 0.0
|
| LJ :math:`\epsilon`, :math:`\sigma` of OH, HH = 0.0
|
||||||
|
|
|
|
||||||
|
|
||||||
Note that the when using the TIP4P pair style, the neighbor list
|
Note that the when using the TIP4P pair style, the neighbor list cutoff
|
||||||
cutoff for Coulomb interactions is effectively extended by a distance
|
for Coulomb interactions is effectively extended by a distance 2 \* (OM
|
||||||
2 \* (OM distance), to account for the offset distance of the
|
distance), to account for the offset distance of the fictitious charges
|
||||||
fictitious charges on O atoms in water molecules. Thus it is
|
on O atoms in water molecules. Thus it is typically best in an
|
||||||
typically best in an efficiency sense to use a LJ cutoff >= Coulomb
|
efficiency sense to use a LJ cutoff >= Coulomb cutoff + 2\*(OM
|
||||||
cutoff + 2\*(OM distance), to shrink the size of the neighbor list.
|
distance), to shrink the size of the neighbor list. This leads to
|
||||||
This leads to slightly larger cost for the long-range calculation, so
|
slightly larger cost for the long-range calculation, so you can test the
|
||||||
you can test the trade-off for your model. The OM distance and the LJ
|
trade-off for your model. The OM distance and the LJ and Coulombic
|
||||||
and Coulombic cutoffs are set in the :doc:`pair_style lj/cut/tip4p/long <pair_lj_cut_tip4p>` command.
|
cutoffs are set in the :doc:`pair_style lj/cut/tip4p/long
|
||||||
|
<pair_lj_cut_tip4p>` command.
|
||||||
|
|
||||||
Wikipedia also has a nice article on `water models <https://en.wikipedia.org/wiki/Water_model>`_.
|
Wikipedia also has a nice article on `water models <https://en.wikipedia.org/wiki/Water_model>`_.
|
||||||
|
|
||||||
|
|||||||
@ -2,12 +2,13 @@ LAMMPS Library Interfaces
|
|||||||
*************************
|
*************************
|
||||||
|
|
||||||
As described on the :doc:`library interface to LAMMPS <Howto_library>`
|
As described on the :doc:`library interface to LAMMPS <Howto_library>`
|
||||||
page, LAMMPS can be built as a library (static or shared), so that
|
page, LAMMPS can be built as a library (static or shared), so that it
|
||||||
it can be called by another code, used in a :doc:`coupled manner
|
can be called by another code, used in a :doc:`coupled manner
|
||||||
<Howto_couple>` with other codes, or driven through a :doc:`Python
|
<Howto_couple>` with other codes, or driven through a :doc:`Python
|
||||||
script <Python_head>`. Even the LAMMPS standalone executable is
|
script <Python_head>`. The LAMMPS standalone executable itself is
|
||||||
essentially a thin wrapper on top of the LAMMPS library, creating a
|
essentially a thin wrapper on top of the LAMMPS library, which creates a
|
||||||
LAMMPS instance, processing input and then existing.
|
LAMMPS instance, passes the input for processing to that instance, and
|
||||||
|
then exits.
|
||||||
|
|
||||||
Most of the APIs described below are based on C language wrapper
|
Most of the APIs described below are based on C language wrapper
|
||||||
functions in the files ``src/library.h`` and ``src/library.cpp``, but
|
functions in the files ``src/library.h`` and ``src/library.cpp``, but
|
||||||
@ -87,6 +88,18 @@ run LAMMPS in serial mode.
|
|||||||
message retrieved <lammps_get_last_error_message>`. We thus
|
message retrieved <lammps_get_last_error_message>`. We thus
|
||||||
recommend enabling C++ exceptions when using the library interface,
|
recommend enabling C++ exceptions when using the library interface,
|
||||||
|
|
||||||
|
.. admonition:: Using the C library interface as a plugin
|
||||||
|
:class: note
|
||||||
|
|
||||||
|
Rather than including the C library directly and link to the LAMMPS
|
||||||
|
library at compile time, you can use the ``liblammpsplugin.h`` header
|
||||||
|
file and the ``liblammpsplugin.c`` C code in the
|
||||||
|
``examples/COUPLE/plugin`` folder for an interface to LAMMPS that is
|
||||||
|
largely identical to the regular library interface, only that it will
|
||||||
|
load a LAMMPS shared library file at runtime. This can be useful for
|
||||||
|
applications where the interface to LAMMPS would be an optional
|
||||||
|
feature.
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
No checks are made on the arguments of the function calls of the C
|
No checks are made on the arguments of the function calls of the C
|
||||||
@ -163,5 +176,3 @@ The following links provide some examples and references to the C++ API.
|
|||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
Cplusplus
|
Cplusplus
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -42,7 +42,7 @@ descriptions of all commands included in the LAMMPS code.
|
|||||||
.. only:: html
|
.. only:: html
|
||||||
|
|
||||||
Once you are familiar with LAMMPS, you may want to bookmark
|
Once you are familiar with LAMMPS, you may want to bookmark
|
||||||
:doc:`this page <Commands_all>` since it gives quick access
|
:doc:`this page <Commands_all>` since it gives quick access to
|
||||||
the documentation for all LAMMPS commands.
|
the documentation for all LAMMPS commands.
|
||||||
|
|
||||||
.. _lws: https://www.lammps.org
|
.. _lws: https://www.lammps.org
|
||||||
|
|||||||
@ -359,6 +359,12 @@ you are uncertain, please ask.
|
|||||||
|
|
||||||
- I/O is done via the C-style stdio library and **not** iostreams.
|
- I/O is done via the C-style stdio library and **not** iostreams.
|
||||||
|
|
||||||
|
- Do not use so-called "alternative tokens" like ``and``, ``or``,
|
||||||
|
``not`` and similar, but rather use the corresponding operators
|
||||||
|
``&&``, ``||``, and ``!``. The alternative tokens are not available
|
||||||
|
by default on all compilers, and also we want to maintain a consistent
|
||||||
|
programming style.
|
||||||
|
|
||||||
- Output to the screen and the logfile should be using the corresponding
|
- Output to the screen and the logfile should be using the corresponding
|
||||||
FILE pointers and only be done on MPI rank 0. Use the :cpp:func:`utils::logmesg`
|
FILE pointers and only be done on MPI rank 0. Use the :cpp:func:`utils::logmesg`
|
||||||
convenience function where possible.
|
convenience function where possible.
|
||||||
|
|||||||
@ -200,6 +200,7 @@ particle models including ellipsoids, 2d lines, and 3d triangles.
|
|||||||
* :doc:`Howto spherical <Howto_spherical>`
|
* :doc:`Howto spherical <Howto_spherical>`
|
||||||
* :doc:`pair_style gayberne <pair_gayberne>`
|
* :doc:`pair_style gayberne <pair_gayberne>`
|
||||||
* :doc:`pair_style resquared <pair_resquared>`
|
* :doc:`pair_style resquared <pair_resquared>`
|
||||||
|
* :doc:`pair_style ylz <pair_ylz>`
|
||||||
* `doc/PDF/pair_gayberne_extra.pdf <PDF/pair_gayberne_extra.pdf>`_
|
* `doc/PDF/pair_gayberne_extra.pdf <PDF/pair_gayberne_extra.pdf>`_
|
||||||
* `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
|
||||||
@ -1736,8 +1737,6 @@ must be installed.
|
|||||||
|
|
||||||
.. versionadded:: 30Jun2020
|
.. versionadded:: 30Jun2020
|
||||||
|
|
||||||
.. versionadded:: 30Jun2020
|
|
||||||
|
|
||||||
**Supporting info:**
|
**Supporting info:**
|
||||||
|
|
||||||
* src/ML-IAP: filenames -> commands
|
* src/ML-IAP: filenames -> commands
|
||||||
|
|||||||
@ -16,46 +16,47 @@ simulation. An example set of statistics is shown here:
|
|||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
Loop time of 2.81192 on 4 procs for 300 steps with 2004 atoms
|
Loop time of 0.942801 on 4 procs for 300 steps with 2004 atoms
|
||||||
|
|
||||||
Performance: 18.436 ns/day 1.302 hours/ns 106.689 timesteps/s
|
Performance: 54.985 ns/day, 0.436 hours/ns, 318.201 timesteps/s, 637.674 katom-step/s
|
||||||
97.0% CPU use with 4 MPI tasks x no OpenMP threads
|
195.2% CPU use with 2 MPI tasks x 2 OpenMP threads
|
||||||
|
|
||||||
MPI task timings breakdown:
|
MPI task timing breakdown:
|
||||||
Section \| min time \| avg time \| max time \|%varavg\| %total
|
Section \| min time \| avg time \| max time \|%varavg\| %total
|
||||||
---------------------------------------------------------------
|
---------------------------------------------------------------
|
||||||
Pair \| 1.9808 \| 2.0134 \| 2.0318 \| 1.4 \| 71.60
|
Pair \| 0.61419 \| 0.62872 \| 0.64325 \| 1.8 \| 66.69
|
||||||
Bond \| 0.0021894 \| 0.0060319 \| 0.010058 \| 4.7 \| 0.21
|
Bond \| 0.0028608 \| 0.0028899 \| 0.002919 \| 0.1 \| 0.31
|
||||||
Kspace \| 0.3207 \| 0.3366 \| 0.36616 \| 3.1 \| 11.97
|
Kspace \| 0.12652 \| 0.14048 \| 0.15444 \| 3.7 \| 14.90
|
||||||
Neigh \| 0.28411 \| 0.28464 \| 0.28516 \| 0.1 \| 10.12
|
Neigh \| 0.10242 \| 0.10242 \| 0.10242 \| 0.0 \| 10.86
|
||||||
Comm \| 0.075732 \| 0.077018 \| 0.07883 \| 0.4 \| 2.74
|
Comm \| 0.026753 \| 0.027593 \| 0.028434 \| 0.5 \| 2.93
|
||||||
Output \| 0.00030518 \| 0.00042665 \| 0.00078821 \| 1.0 \| 0.02
|
Output \| 0.00018341 \| 0.00030942 \| 0.00043542 \| 0.0 \| 0.03
|
||||||
Modify \| 0.086606 \| 0.086631 \| 0.086668 \| 0.0 \| 3.08
|
Modify \| 0.039117 \| 0.039348 \| 0.039579 \| 0.1 \| 4.17
|
||||||
Other \| \| 0.007178 \| \| \| 0.26
|
Other \| \| 0.001041 \| \| \| 0.11
|
||||||
|
|
||||||
Nlocal: 501 ave 508 max 490 min
|
Nlocal: 1002 ave 1006 max 998 min
|
||||||
Histogram: 1 0 0 0 0 0 1 1 0 1
|
Histogram: 1 0 0 0 0 0 0 0 0 1
|
||||||
Nghost: 6586.25 ave 6628 max 6548 min
|
Nghost: 8670.5 ave 8691 max 8650 min
|
||||||
Histogram: 1 0 1 0 0 0 1 0 0 1
|
Histogram: 1 0 0 0 0 0 0 0 0 1
|
||||||
Neighs: 177007 ave 180562 max 170212 min
|
Neighs: 354010 ave 357257 max 350763 min
|
||||||
Histogram: 1 0 0 0 0 0 0 1 1 1
|
Histogram: 1 0 0 0 0 0 0 0 0 1
|
||||||
|
|
||||||
Total # of neighbors = 708028
|
Total # of neighbors = 708020
|
||||||
Ave neighs/atom = 353.307
|
Ave neighs/atom = 353.30339
|
||||||
Ave special neighs/atom = 2.34032
|
Ave special neighs/atom = 2.3403194
|
||||||
Neighbor list builds = 26
|
Neighbor list builds = 26
|
||||||
Dangerous builds = 0
|
Dangerous builds = 0
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
The first section provides a global loop timing summary. The *loop
|
The first section provides a global loop timing summary. The *loop time*
|
||||||
time* is the total wall-clock time for the simulation to run. The
|
is the total wall-clock time for the simulation to run. The
|
||||||
*Performance* line is provided for convenience to help predict how
|
*Performance* line is provided for convenience to help predict how long
|
||||||
long it will take to run a desired physical simulation. The *CPU use*
|
it will take to run a desired physical simulation and to have numbers
|
||||||
line provides the CPU utilization per MPI task; it should be close to
|
useful for performance comparison between different simulation settings
|
||||||
100% times the number of OpenMP threads (or 1 of not using OpenMP).
|
or system sizes. The *CPU use* line provides the CPU utilization per
|
||||||
Lower numbers correspond to delays due to file I/O or insufficient
|
MPI task; it should be close to 100% times the number of OpenMP threads
|
||||||
thread utilization.
|
(or 1 of not using OpenMP). Lower numbers correspond to delays due to
|
||||||
|
file I/O or insufficient thread utilization.
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@ Examples
|
|||||||
bond_coeff 5 80.0 1.2
|
bond_coeff 5 80.0 1.2
|
||||||
bond_coeff * 30.0 1.5 1.0 1.0
|
bond_coeff * 30.0 1.5 1.0 1.0
|
||||||
bond_coeff 1*4 30.0 1.5 1.0 1.0
|
bond_coeff 1*4 30.0 1.5 1.0 1.0
|
||||||
bond_coeff 1 harmonic 200.0 1.0 (for bond_style hybrid)
|
bond_coeff 1 harmonic 200.0 1.0 # (for bond_style hybrid)
|
||||||
|
|
||||||
labelmap bond 5 carbonyl
|
labelmap bond 5 carbonyl
|
||||||
bond_coeff carbonyl 80.0 1.2
|
bond_coeff carbonyl 80.0 1.2
|
||||||
|
|||||||
@ -23,15 +23,16 @@ Description
|
|||||||
"""""""""""
|
"""""""""""
|
||||||
|
|
||||||
This command deletes all atoms, restores all settings to their default
|
This command deletes all atoms, restores all settings to their default
|
||||||
values, and frees all memory allocated by LAMMPS. Once a clear
|
values, and frees all memory allocated by LAMMPS. Once a clear command
|
||||||
command has been executed, it is almost as if LAMMPS were starting
|
has been executed, it is almost as if LAMMPS were starting over, with
|
||||||
over, with only the exceptions noted below. This command enables
|
only the exceptions noted below. This command enables multiple jobs to
|
||||||
multiple jobs to be run sequentially from one input script.
|
be run sequentially from one input script.
|
||||||
|
|
||||||
These settings are not affected by a clear command: the working
|
These settings are not affected by a clear command: the working
|
||||||
directory (:doc:`shell <shell>` command), log file status
|
directory (:doc:`shell <shell>` command), log file status (:doc:`log
|
||||||
(:doc:`log <log>` command), echo status (:doc:`echo <echo>` command), and
|
<log>` command), echo status (:doc:`echo <echo>` command), and input
|
||||||
input script variables (:doc:`variable <variable>` command).
|
script variables except for *atomfile* style variables (:doc:`variable
|
||||||
|
<variable>` command).
|
||||||
|
|
||||||
Restrictions
|
Restrictions
|
||||||
""""""""""""
|
""""""""""""
|
||||||
|
|||||||
@ -17,7 +17,7 @@ Syntax
|
|||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
*replace* arg = name of per-atom variable
|
*refresh* arg = name of per-atom variable
|
||||||
|
|
||||||
Examples
|
Examples
|
||||||
""""""""
|
""""""""
|
||||||
|
|||||||
@ -6,7 +6,7 @@ compute rigid/local command
|
|||||||
Syntax
|
Syntax
|
||||||
""""""
|
""""""
|
||||||
|
|
||||||
.. parsed-literal::
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
compute ID group-ID rigid/local rigidID input1 input2 ...
|
compute ID group-ID rigid/local rigidID input1 input2 ...
|
||||||
|
|
||||||
@ -25,6 +25,9 @@ Syntax
|
|||||||
quatw, quati, quatj, quatk,
|
quatw, quati, quatj, quatk,
|
||||||
tqx, tqy, tqz,
|
tqx, tqy, tqz,
|
||||||
inertiax, inertiay, inertiaz
|
inertiax, inertiay, inertiaz
|
||||||
|
|
||||||
|
.. parsed-literal::
|
||||||
|
|
||||||
id = atom ID of atom within body which owns body properties
|
id = atom ID of atom within body which owns body properties
|
||||||
mol = molecule ID used to define body in :doc:`fix rigid/small <fix_rigid>` command
|
mol = molecule ID used to define body in :doc:`fix rigid/small <fix_rigid>` command
|
||||||
mass = total mass of body
|
mass = total mass of body
|
||||||
@ -69,8 +72,8 @@ the atoms owned on a processor. If the atom is not in the specified
|
|||||||
the atom within a body that is assigned to store the body information
|
the atom within a body that is assigned to store the body information
|
||||||
it is skipped (only one atom per body is so assigned). If it is the
|
it is skipped (only one atom per body is so assigned). If it is the
|
||||||
assigned atom, then the info for that body is output. This means that
|
assigned atom, then the info for that body is output. This means that
|
||||||
information for N bodies is generated. N may be less than the # of
|
information for :math:`N` bodies is generated. :math:`N` may be less than the
|
||||||
bodies defined by the fix rigid command, if the atoms in some bodies
|
number of bodies defined by the fix rigid command, if the atoms in some bodies
|
||||||
are not in the *group-ID*\ .
|
are not in the *group-ID*\ .
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
@ -119,7 +122,7 @@ The image flags for the body can be generated directly using the *ix*,
|
|||||||
*iy*, *iz* attributes. For periodic dimensions, they specify which
|
*iy*, *iz* attributes. For periodic dimensions, they specify which
|
||||||
image of the simulation box the COM is considered to be in. An image
|
image of the simulation box the COM is considered to be in. An image
|
||||||
of 0 means it is inside the box as defined. A value of 2 means add 2
|
of 0 means it is inside the box as defined. A value of 2 means add 2
|
||||||
box lengths to get the true value. A value of -1 means subtract 1 box
|
box lengths to get the true value. A value of :math:`-1` means subtract 1 box
|
||||||
length to get the true value. LAMMPS updates these flags as the rigid
|
length to get the true value. LAMMPS updates these flags as the rigid
|
||||||
body COMs cross periodic boundaries during the simulation.
|
body COMs cross periodic boundaries during the simulation.
|
||||||
|
|
||||||
@ -141,8 +144,8 @@ The *tqx*, *tqy*, *tqz* attributes are components of the torque acting
|
|||||||
on the body around its COM.
|
on the body around its COM.
|
||||||
|
|
||||||
The *inertiax*, *inertiay*, *inertiaz* attributes are components of
|
The *inertiax*, *inertiay*, *inertiaz* attributes are components of
|
||||||
diagonalized inertia tensor for the body, i.e the 3 moments of inertia
|
diagonalized inertia tensor for the body (i.e., the three moments of inertia
|
||||||
for the body around its principal axes, as computed internally by
|
for the body around its principal axes), as computed internally by
|
||||||
LAMMPS.
|
LAMMPS.
|
||||||
|
|
||||||
----------
|
----------
|
||||||
@ -169,10 +172,10 @@ corresponding attribute is in:
|
|||||||
* vx,vy,vz = velocity units
|
* vx,vy,vz = velocity units
|
||||||
* fx,fy,fz = force units
|
* fx,fy,fz = force units
|
||||||
* omegax,omegay,omegaz = radians/time units
|
* omegax,omegay,omegaz = radians/time units
|
||||||
* angmomx,angmomy,angmomz = mass\*distance\^2/time units
|
* angmomx,angmomy,angmomz = mass\*distance\ :math:`^2`\ /time units
|
||||||
* quatw,quati,quatj,quatk = unitless
|
* quatw,quati,quatj,quatk = unitless
|
||||||
* tqx,tqy,tqz = torque units
|
* tqx,tqy,tqz = torque units
|
||||||
* inertiax,inertiay,inertiaz = mass\*distance\^2 units
|
* inertiax,inertiay,inertiaz = mass\*distance\ :math:`^2` units
|
||||||
|
|
||||||
Restrictions
|
Restrictions
|
||||||
""""""""""""
|
""""""""""""
|
||||||
|
|||||||
@ -13,7 +13,7 @@ Syntax
|
|||||||
* ID, group-ID are documented in :doc:`compute <compute>` command
|
* ID, group-ID are documented in :doc:`compute <compute>` command
|
||||||
* voronoi/atom = style name of this compute command
|
* voronoi/atom = style name of this compute command
|
||||||
* zero or more keyword/value pairs may be appended
|
* zero or more keyword/value pairs may be appended
|
||||||
* keyword = *only_group* or *surface* or *radius* or *edge_histo* or *edge_threshold* or *face_threshold* or *neighbors* or *peratom*
|
* keyword = *only_group* or *occupation* or *surface* or *radius* or *edge_histo* or *edge_threshold* or *face_threshold* or *neighbors* or *peratom*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -28,7 +28,7 @@ Syntax
|
|||||||
region-ID = create atoms within this region, use NULL for entire simulation box
|
region-ID = create atoms within this region, use NULL for entire simulation box
|
||||||
|
|
||||||
* zero or more keyword/value pairs may be appended
|
* zero or more keyword/value pairs may be appended
|
||||||
* keyword = *mol* or *basis* or *ratio* or *subset* or *remap* or *var* or *set* or *rotate* or *overlap* or *maxtry* or *units*
|
* keyword = *mol* or *basis* or *ratio* or *subset* or *remap* or *var* or *set* or *radscale* or *meshmode* or *rotate* or *overlap* or *maxtry* or *units*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -26,6 +26,13 @@ Syntax
|
|||||||
* zero or more keywords may be appended
|
* zero or more keywords may be appended
|
||||||
* keyword = *any* or *undo* or *remove* or *special*
|
* keyword = *any* or *undo* or *remove* or *special*
|
||||||
|
|
||||||
|
.. parsed-literal::
|
||||||
|
|
||||||
|
*any* arg = none = turn off interactions if any atoms are in the group (or on if *undo* is also used)
|
||||||
|
*undo* arg = none = turn specified bonds on instead of off
|
||||||
|
*remove* arg = permanently remove bonds that have been turned off
|
||||||
|
*special* arg = recompute pairwise 1-2, 1-3, and 1-4 lists
|
||||||
|
|
||||||
Examples
|
Examples
|
||||||
""""""""
|
""""""""
|
||||||
|
|
||||||
@ -101,13 +108,13 @@ Several keywords can be appended to the argument list to alter the
|
|||||||
default behaviors.
|
default behaviors.
|
||||||
|
|
||||||
The *any* keyword changes the requirement that all atoms in the bond
|
The *any* keyword changes the requirement that all atoms in the bond
|
||||||
(angle, etc) must be in the specified group in order to turn off the
|
(angle, etc.) must be in the specified group in order to turn off the
|
||||||
interaction. Instead, if any of the atoms in the interaction are in
|
interaction. Instead, if any of the atoms in the interaction are in
|
||||||
the specified group, it will be turned off (or on if the *undo*
|
the specified group, it will be turned off (or on if the *undo*
|
||||||
keyword is used).
|
keyword is used).
|
||||||
|
|
||||||
The *undo* keyword inverts the delete_bonds command so that the
|
The *undo* keyword inverts the delete_bonds command so that the
|
||||||
specified bonds, angles, etc are turned on if they are currently
|
specified bonds, angles, etc. are turned on if they are currently
|
||||||
turned off. This means a negative value is toggled to positive. For
|
turned off. This means a negative value is toggled to positive. For
|
||||||
example, for style *angle*, if *type* is specified as 2, then all
|
example, for style *angle*, if *type* is specified as 2, then all
|
||||||
angles with current type = :math:`-2` are reset to type = :math:`2`.
|
angles with current type = :math:`-2` are reset to type = :math:`2`.
|
||||||
|
|||||||
@ -216,7 +216,7 @@ or multiple smaller files).
|
|||||||
to a dump file may be slightly outside the simulation box.
|
to a dump file may be slightly outside the simulation box.
|
||||||
Re-neighbor timesteps will not typically coincide with the
|
Re-neighbor timesteps will not typically coincide with the
|
||||||
timesteps dump snapshots are written. See the :doc:`dump_modify
|
timesteps dump snapshots are written. See the :doc:`dump_modify
|
||||||
pbc <dump_modify>` command if you with to force coordinates to be
|
pbc <dump_modify>` command if you wish to force coordinates to be
|
||||||
strictly inside the simulation box.
|
strictly inside the simulation box.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|||||||
@ -31,7 +31,7 @@ Syntax
|
|||||||
v_name = per-atom vector calculated by an atom-style variable with name
|
v_name = per-atom vector calculated by an atom-style variable with name
|
||||||
|
|
||||||
* zero or more keyword/arg pairs may be appended
|
* zero or more keyword/arg pairs may be appended
|
||||||
* keyword = *norm* or *ave* or *bias* or *adof* or *cdof* or *file* or *overwrite* or *title1* or *title2* or *title3*
|
* keyword = *norm* or *ave* or *bias* or *adof* or *cdof* or *file* or *overwrite* or *format* or *title1* or *title2* or *title3*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -35,7 +35,7 @@ Syntax
|
|||||||
v_name[I] = value calculated by a vector-style variable with name, I can include wildcard (see below)
|
v_name[I] = value calculated by a vector-style variable with name, I can include wildcard (see below)
|
||||||
|
|
||||||
* zero or more keyword/arg pairs may be appended
|
* zero or more keyword/arg pairs may be appended
|
||||||
* keyword = *mode* or *file* or *ave* or *start* or *beyond* or *overwrite* or *title1* or *title2* or *title3*
|
* keyword = *mode* or *kind* or *file* or *ave* or *start* or *beyond* or *overwrite* or *title1* or *title2* or *title3*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -28,7 +28,7 @@ Syntax
|
|||||||
v_name[I] = value calculated by a vector-style variable with name, I can include wildcard (see below)
|
v_name[I] = value calculated by a vector-style variable with name, I can include wildcard (see below)
|
||||||
|
|
||||||
* zero or more keyword/arg pairs may be appended
|
* zero or more keyword/arg pairs may be appended
|
||||||
* keyword = *mode* or *file* or *ave* or *start* or *off* or *overwrite* or *title1* or *title2* or *title3*
|
* keyword = *mode* or *file* or *ave* or *start* or *off* or *overwrite* or *format* or *title1* or *title2* or *title3*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -6,17 +6,28 @@ fix bocs command
|
|||||||
Syntax
|
Syntax
|
||||||
""""""
|
""""""
|
||||||
|
|
||||||
.. parsed-literal::
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
fix ID group-ID bocs keyword values ...
|
fix ID group-ID bocs keyword values ...
|
||||||
|
|
||||||
keyword = *temp* or *cgiso* or *analytic* or *linear_spline* or *cubic_spline*
|
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||||
|
* bocs = style name of this fix command
|
||||||
|
* two or more keyword/value pairs may be appended
|
||||||
|
* keyword = *temp* or *cgiso* or *tchain* or *pchain* or *mtk* or *tloop* or *ploop*
|
||||||
|
|
||||||
|
.. parsed-literal::
|
||||||
|
|
||||||
*temp* values = Tstart Tstop Tdamp
|
*temp* values = Tstart Tstop Tdamp
|
||||||
*cgiso* values = Pstart Pstop Pdamp
|
*cgiso* values = Pstart Pstop Pdamp basis_set args
|
||||||
*basis set*
|
basis_set = *analytic* or *linear_spline* or *cubic_spline*
|
||||||
*analytic* values = V_avg N_particles N_coeff Coeff_1 Coeff_2 ... Coeff_N
|
*analytic* args = V_avg N_particles N_coeff Coeff_1 Coeff_2 ... Coeff_N
|
||||||
*linear_spline* values = input_filename
|
*linear_spline* args = input_filename
|
||||||
*cubic_spline* values = input_filename
|
*cubic_spline* args = input_filename
|
||||||
|
*tchain* value = N = length of thermostat chain (1 = single thermostat)
|
||||||
|
*pchain* value = N = length of thermostat on barostat (0 = no thermostat)
|
||||||
|
*mtk* value = *yes* or *no* = add MTK adjustment term or not
|
||||||
|
*tloop* value = M = number of sub-cycles to perform on thermostat
|
||||||
|
*ploop* value = M = number of sub-cycles to perform on barostat
|
||||||
|
|
||||||
Examples
|
Examples
|
||||||
""""""""
|
""""""""
|
||||||
@ -24,25 +35,24 @@ Examples
|
|||||||
.. code-block:: LAMMPS
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 analytic 66476.015 968 2 245030.10 8962.20
|
fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 analytic 66476.015 968 2 245030.10 8962.20
|
||||||
|
|
||||||
fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 cubic_spline input_Fv.dat
|
fix 1 all bocs temp 300.0 300.0 100.0 cgiso 0.986 0.986 1000.0 cubic_spline input_Fv.dat
|
||||||
|
|
||||||
thermo_modify press 1_press
|
thermo_modify press 1_press
|
||||||
|
|
||||||
Description
|
Description
|
||||||
"""""""""""
|
"""""""""""
|
||||||
|
|
||||||
These commands incorporate a pressure correction as described by
|
These commands incorporate a pressure correction as described by
|
||||||
Dunn and Noid in :ref:`(Dunn1) <bocs-Dunn1>` to the standard MTTK
|
Dunn and Noid :ref:`(Dunn1) <bocs-Dunn1>` to the standard MTK
|
||||||
barostat by Martyna et. al. in :ref:`(Martyna) <bocs-Martyna>` .
|
barostat by Martyna et al. :ref:`(Martyna) <bocs-Martyna>`.
|
||||||
The first half of the command mimics a standard fix npt command:
|
The first half of the command mimics a standard :doc:`fix npt <fix_nh>`
|
||||||
|
command:
|
||||||
|
|
||||||
.. code-block:: LAMMPS
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
fix 1 all bocs temp Tstart Tstop Tcoupl cgiso Pstart Pstop Pdamp
|
fix 1 all bocs temp Tstart Tstop Tcoupl cgiso Pstart Pstop Pdamp
|
||||||
|
|
||||||
The two differences are replacing *npt* with *bocs*, and replacing
|
The two differences are replacing *npt* with *bocs*, and replacing
|
||||||
*iso*\ /\ *aniso*\ /\ *etc* with *cgiso*\ .
|
*iso*\ /\ *aniso*\ /\ etc. with *cgiso*\ .
|
||||||
The rest of the command details what form you would like to use for
|
The rest of the command details what form you would like to use for
|
||||||
the pressure correction equation. The choices are: *analytic*, *linear_spline*,
|
the pressure correction equation. The choices are: *analytic*, *linear_spline*,
|
||||||
or *cubic_spline*.
|
or *cubic_spline*.
|
||||||
@ -58,9 +68,9 @@ as a function of volume. The file must be formatted so each line has:
|
|||||||
Note both the COMMA and the SPACE separating the volume's
|
Note both the COMMA and the SPACE separating the volume's
|
||||||
value and its corresponding pressure correction. The volumes in the file
|
value and its corresponding pressure correction. The volumes in the file
|
||||||
must be uniformly spaced. Both the volumes and the pressure corrections
|
must be uniformly spaced. Both the volumes and the pressure corrections
|
||||||
should be provided in the proper units, e.g. if you are using *units real*,
|
should be provided in the proper units (e.g., if you are using *units real*,
|
||||||
the volumes should all be in cubic Angstroms, and the pressure corrections
|
the volumes should all be in :math:`\mathrm{\mathring{A}}^3` and the pressure
|
||||||
should all be in atmospheres. Furthermore, the table should start/end at a
|
corrections should all be in atm). Furthermore, the table should start/end at a
|
||||||
volume considerably smaller/larger than you expect your system to sample
|
volume considerably smaller/larger than you expect your system to sample
|
||||||
during the simulation. If the system ever reaches a volume outside of the
|
during the simulation. If the system ever reaches a volume outside of the
|
||||||
range provided, the simulation will stop.
|
range provided, the simulation will stop.
|
||||||
@ -71,9 +81,10 @@ With the *analytic* option, the arguments are as follows:
|
|||||||
|
|
||||||
... analytic V_avg N_particles N_coeff Coeff_1 Coeff_2 ... Coeff_N
|
... analytic V_avg N_particles N_coeff Coeff_1 Coeff_2 ... Coeff_N
|
||||||
|
|
||||||
Note that *V_avg* and *Coeff_i* should all be in the proper units, e.g. if you
|
Note that *V_avg* and *Coeff_i* should all be in the proper units (e.g., if you
|
||||||
are using *units real*, *V_avg* should be in cubic Angstroms, and the
|
are using *units real*, *V_avg* should be in :math:`\mathrm{\mathring{A}^3}`
|
||||||
coefficients should all be in atmospheres \* cubic Angstroms.
|
and the coefficients should all be in
|
||||||
|
:math:`\mathrm{atm}\cdot\mathrm{\mathring{A}^3}`\ ).
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
@ -122,7 +133,7 @@ are written to a file every so often. In order to have LAMMPS report the
|
|||||||
modified pressure, you must include the *thermo_modify* command given in
|
modified pressure, you must include the *thermo_modify* command given in
|
||||||
the examples. For the last argument in the command, you should put
|
the examples. For the last argument in the command, you should put
|
||||||
XXXX_press, where XXXX is the ID given to the fix bocs command (in the
|
XXXX_press, where XXXX is the ID given to the fix bocs command (in the
|
||||||
example, the ID of the fix bocs command is 1 ).
|
example, the ID of the fix bocs command is 1).
|
||||||
|
|
||||||
This fix is part of the BOCS package. It is only enabled if
|
This fix is part of the BOCS package. It is only enabled if
|
||||||
LAMMPS was built with that package. See the :doc:`Build package <Build_package>` page for more info.
|
LAMMPS was built with that package. See the :doc:`Build package <Build_package>` page for more info.
|
||||||
@ -132,7 +143,7 @@ Further information
|
|||||||
|
|
||||||
For more details about the pressure correction and the entire BOCS software
|
For more details about the pressure correction and the entire BOCS software
|
||||||
package, visit the `BOCS package on GitHub <bocsgithub_>`_ and read the release
|
package, visit the `BOCS package on GitHub <bocsgithub_>`_ and read the release
|
||||||
paper by Dunn et. al. :ref:`(Dunn2) <bocs-Dunn2>` .
|
paper by Dunn et al. :ref:`(Dunn2) <bocs-Dunn2>` .
|
||||||
|
|
||||||
.. _bocsgithub: https://github.com/noid-group/BOCS
|
.. _bocsgithub: https://github.com/noid-group/BOCS
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ fix bond/break command
|
|||||||
Syntax
|
Syntax
|
||||||
""""""
|
""""""
|
||||||
|
|
||||||
.. parsed-literal::
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
fix ID group-ID bond/break Nevery bondtype Rmax keyword values ...
|
fix ID group-ID bond/break Nevery bondtype Rmax keyword values ...
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ Syntax
|
|||||||
* Nevery = attempt bond breaking every this many steps
|
* Nevery = attempt bond breaking every this many steps
|
||||||
* bondtype = type of bonds to break
|
* bondtype = type of bonds to break
|
||||||
* Rmax = bond longer than Rmax can break (distance units)
|
* Rmax = bond longer than Rmax can break (distance units)
|
||||||
* zero or more keyword/value pairs may be appended to args
|
* zero or more keyword/value pairs may be appended
|
||||||
* keyword = *prob*
|
* keyword = *prob*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
@ -43,42 +43,42 @@ pair of atoms computed by the :doc:`bond_style <bond_style>` command.
|
|||||||
Once the bond is broken it will be permanently deleted, as will all
|
Once the bond is broken it will be permanently deleted, as will all
|
||||||
angle, dihedral, and improper interactions that bond is part of.
|
angle, dihedral, and improper interactions that bond is part of.
|
||||||
|
|
||||||
This is different than a :doc:`pairwise <pair_style>` bond-order
|
This is different than a :doc:`pair-wise <pair_style>` bond-order
|
||||||
potential such as Tersoff or AIREBO which infers bonds and many-body
|
potential such as Tersoff or AIREBO which infers bonds and many-body
|
||||||
interactions based on the current geometry of a small cluster of atoms
|
interactions based on the current geometry of a small cluster of atoms
|
||||||
and effectively creates and destroys bonds and higher-order many-body
|
and effectively creates and destroys bonds and higher-order many-body
|
||||||
interactions from timestep to timestep as atoms move.
|
interactions from timestep to timestep as atoms move.
|
||||||
|
|
||||||
A check for possible bond breakage is performed every *Nevery*
|
A check for possible bond breakage is performed every *Nevery*
|
||||||
timesteps. If two bonded atoms I,J are further than a distance *Rmax*
|
timesteps. If two bonded atoms :math:`i` and :math:`j` are farther than the
|
||||||
of each other, if the bond is of type *bondtype*, and if both I and J
|
distance *Rmax* from each other, the bond is of type *bondtype*, and both
|
||||||
are in the specified fix group, then I,J is labeled as a "possible"
|
:math:`i` and :math:`j` are in the specified fix group, then the bond between
|
||||||
bond to break.
|
:math:`i` and :math:`j` is labeled as a "possible" bond to break.
|
||||||
|
|
||||||
If several bonds involving an atom are stretched, it may have multiple
|
If several bonds involving an atom are stretched, it may have multiple
|
||||||
possible bonds to break. Every atom checks its list of possible bonds
|
possible bonds to break. Every atom checks its list of possible bonds
|
||||||
to break and labels the longest such bond as its "sole" bond to break.
|
to break and labels the longest such bond as its "sole" bond to break.
|
||||||
After this is done, if atom I is bonded to atom J in its sole bond,
|
After this is done, if atom :math:`i` is bonded to atom :math:`j` in its sole
|
||||||
and atom J is bonded to atom I in its sole bond, then the I,J bond is
|
bond, and atom :math:`j` is bonded to atom :math:`j` in its sole bond, then the
|
||||||
"eligible" to be broken.
|
bond between :math:`i` and :math:`j` is "eligible" to be broken.
|
||||||
|
|
||||||
Note that these rules mean an atom will only be part of at most one
|
Note that these rules mean an atom will only be part of at most one
|
||||||
broken bond on a given timestep. It also means that if atom I chooses
|
broken bond on a given time step. It also means that if atom :math:`i` chooses
|
||||||
atom J as its sole partner, but atom J chooses atom K is its sole
|
atom :math:`j` as its sole partner, but atom :math:`j` chooses atom :math:`k`
|
||||||
partner (due to Rjk > Rij), then this means atom I will not be part of
|
as its sole partner (because :math:`R_{jk} > R_{ij}`), then this means atom
|
||||||
a broken bond on this timestep, even if it has other possible bond
|
:math:`i` will not be part of a broken bond on this time step, even if it has
|
||||||
partners.
|
other possible bond partners.
|
||||||
|
|
||||||
The *prob* keyword can effect whether an eligible bond is actually
|
The *prob* keyword can effect whether an eligible bond is actually
|
||||||
broken. The *fraction* setting must be a value between 0.0 and 1.0.
|
broken. The *fraction* setting must be a value between 0.0 and 1.0.
|
||||||
A uniform random number between 0.0 and 1.0 is generated and the
|
A uniform random number between 0.0 and 1.0 is generated and the
|
||||||
eligible bond is only broken if the random number < fraction.
|
eligible bond is only broken if the random number is less than *fraction*.
|
||||||
|
|
||||||
When a bond is broken, data structures within LAMMPS that store bond
|
When a bond is broken, data structures within LAMMPS that store bond
|
||||||
topology are updated to reflect the breakage. Likewise, if the bond
|
topologies are updated to reflect the breakage. Likewise, if the bond
|
||||||
is part of a 3-body (angle) or 4-body (dihedral, improper)
|
is part of a 3-body (angle) or 4-body (dihedral, improper)
|
||||||
interaction, that interaction is removed as well. These changes
|
interaction, that interaction is removed as well. These changes
|
||||||
typically affect pairwise interactions between atoms that used to be
|
typically affect pair-wise interactions between atoms that used to be
|
||||||
part of bonds, angles, etc.
|
part of bonds, angles, etc.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
@ -88,17 +88,17 @@ part of bonds, angles, etc.
|
|||||||
becomes two molecules due to the broken bond, all atoms in both new
|
becomes two molecules due to the broken bond, all atoms in both new
|
||||||
molecules retain their original molecule IDs.
|
molecules retain their original molecule IDs.
|
||||||
|
|
||||||
Computationally, each timestep this fix operates, it loops over all
|
Computationally, each time step this fix is invoked, it loops over all
|
||||||
the bonds in the system and computes distances between pairs of bonded
|
the bonds in the system and computes distances between pairs of bonded
|
||||||
atoms. It also communicates between neighboring processors to
|
atoms. It also communicates between neighboring processors to
|
||||||
coordinate which bonds are broken. Moreover, if any bonds are broken,
|
coordinate which bonds are broken. Moreover, if any bonds are broken,
|
||||||
neighbor lists must be immediately updated on the same timestep. This
|
neighbor lists must be immediately updated on the same time step. This
|
||||||
is to insure that any pairwise interactions that should be turned "on"
|
is to ensure that any pair-wise interactions that should be turned "on"
|
||||||
due to a bond breaking, because they are no longer excluded by the
|
due to a bond breaking, because they are no longer excluded by the
|
||||||
presence of the bond and the settings of the
|
presence of the bond and the settings of the
|
||||||
:doc:`special_bonds <special_bonds>` command, will be immediately
|
:doc:`special_bonds <special_bonds>` command, will be immediately
|
||||||
recognized. All of these operations increase the cost of a timestep.
|
recognized. All of these operations increase the cost of a time step.
|
||||||
Thus you should be cautious about invoking this fix too frequently.
|
Thus, you should be cautious about invoking this fix too frequently.
|
||||||
|
|
||||||
You can dump out snapshots of the current bond topology via the :doc:`dump local <dump>` command.
|
You can dump out snapshots of the current bond topology via the :doc:`dump local <dump>` command.
|
||||||
|
|
||||||
@ -107,11 +107,11 @@ You can dump out snapshots of the current bond topology via the :doc:`dump local
|
|||||||
Breaking a bond typically alters the energy of a system. You
|
Breaking a bond typically alters the energy of a system. You
|
||||||
should be careful not to choose bond breaking criteria that induce a
|
should be careful not to choose bond breaking criteria that induce a
|
||||||
dramatic change in energy. For example, if you define a very stiff
|
dramatic change in energy. For example, if you define a very stiff
|
||||||
harmonic bond and break it when 2 atoms are separated by a distance
|
harmonic bond and break it when two atoms are separated by a distance
|
||||||
far from the equilibrium bond length, then the 2 atoms will be
|
far from the equilibrium bond length, then the two atoms will be
|
||||||
dramatically released when the bond is broken. More generally, you
|
dramatically released when the bond is broken. More generally, you
|
||||||
may need to thermostat your system to compensate for energy changes
|
may need to thermostat your system to compensate for energy changes
|
||||||
resulting from broken bonds (and angles, dihedrals, impropers).
|
resulting from broken bonds (as well as angles, dihedrals, and impropers).
|
||||||
|
|
||||||
See the :doc:`Howto <Howto_broken_bonds>` page on broken bonds for more
|
See the :doc:`Howto <Howto_broken_bonds>` page on broken bonds for more
|
||||||
information on related features in LAMMPS.
|
information on related features in LAMMPS.
|
||||||
@ -124,14 +124,14 @@ Restart, fix_modify, output, run start/stop, minimize info
|
|||||||
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
|
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
|
||||||
are relevant to this fix.
|
are relevant to this fix.
|
||||||
|
|
||||||
This fix computes two statistics which it stores in a global vector of
|
This fix computes two statistics, which it stores in a global vector of
|
||||||
length 2, which can be accessed by various :doc:`output commands <Howto_output>`. The vector values calculated by this fix
|
length 2. This vector can be accessed by various :doc:`output commands
|
||||||
are "intensive".
|
<Howto_output>`. The vector values calculated by this fix are "intensive".
|
||||||
|
|
||||||
These are the 2 quantities:
|
The two quantities in the global vector are
|
||||||
|
|
||||||
* (1) # of bonds broken on the most recent breakage timestep
|
(1) number of bonds broken on the most recent breakage time step
|
||||||
* (2) cumulative # of bonds broken
|
(2) cumulative number of bonds broken
|
||||||
|
|
||||||
No parameter of this fix can be used with the *start/stop* keywords of
|
No parameter of this fix can be used with the *start/stop* keywords of
|
||||||
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
|
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
|
||||||
|
|||||||
@ -10,7 +10,7 @@ fix bond/create/angle command
|
|||||||
Syntax
|
Syntax
|
||||||
""""""
|
""""""
|
||||||
|
|
||||||
.. parsed-literal::
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
fix ID group-ID bond/create Nevery itype jtype Rmin bondtype keyword values ...
|
fix ID group-ID bond/create Nevery itype jtype Rmin bondtype keyword values ...
|
||||||
|
|
||||||
@ -58,83 +58,84 @@ Description
|
|||||||
"""""""""""
|
"""""""""""
|
||||||
|
|
||||||
Create bonds between pairs of atoms as a simulation runs according to
|
Create bonds between pairs of atoms as a simulation runs according to
|
||||||
specified criteria. This can be used to model cross-linking of
|
specified criteria. This can be used to model the cross-linking of
|
||||||
polymers, the formation of a percolation network, etc. In this
|
polymers, the formation of a percolation network, etc. In this
|
||||||
context, a bond means an interaction between a pair of atoms computed
|
context, a bond means an interaction between a pair of atoms computed
|
||||||
by the :doc:`bond_style <bond_style>` command. Once the bond is created
|
by the :doc:`bond_style <bond_style>` command. Once the bond is created
|
||||||
it will be permanently in place. Optionally, the creation of a bond
|
it will be permanently in place. Optionally, the creation of a bond
|
||||||
can also create angle, dihedral, and improper interactions that bond
|
can also create angle, dihedral, and improper interactions that the bond
|
||||||
is part of. See the discussion of the *atype*, *dtype*, and *itype*
|
is part of. See the discussion of the *atype*, *dtype*, and *itype*
|
||||||
keywords below.
|
keywords below.
|
||||||
|
|
||||||
This is different than a :doc:`pairwise <pair_style>` bond-order
|
This process is different than a :doc:`pair-wise <pair_style>` bond-order
|
||||||
potential such as Tersoff or AIREBO which infers bonds and many-body
|
potential such as Tersoff or AIREBO, which infer bonds and many-body
|
||||||
interactions based on the current geometry of a small cluster of atoms
|
interactions based on the current geometry of a small cluster of atoms
|
||||||
and effectively creates and destroys bonds and higher-order many-body
|
and effectively create and destroy bonds and higher-order many-body
|
||||||
interactions from timestep to timestep as atoms move.
|
interactions from time step to time step as the atoms move.
|
||||||
|
|
||||||
A check for possible new bonds is performed every *Nevery* timesteps.
|
A check for possible new bonds is performed every *Nevery* time steps.
|
||||||
If two atoms I,J are within a distance *Rmin* of each other, if I is
|
If two atoms :math:`i` and :math:`j` are within a distance *Rmin* of each
|
||||||
of atom type *itype*, if J is of atom type *jtype*, if both I and J
|
other, atom :math:`i` is of type *itype*, atom :math:`j` is of type *jtype*,
|
||||||
are in the specified fix group, if a bond does not already exist
|
and both :math:`i` and :math:`j` are in the specified fix group, then if a bond
|
||||||
between I and J, and if both I and J meet their respective *maxbond*
|
does not already exist between atoms :math:`i` and :math:`j`, and if both
|
||||||
requirement (explained below), then I,J is labeled as a "possible"
|
:math:`i` and :math:`j` meet their respective *maxbond* requirements (explained
|
||||||
bond pair.
|
below), then :math:`i` and :math:`j` are labeled as a "possible" bond pair.
|
||||||
|
|
||||||
If several atoms are close to an atom, it may have multiple possible
|
If several atoms are close to an atom, it may have multiple possible
|
||||||
bond partners. Every atom checks its list of possible bond partners
|
bond partners. Every atom checks its list of possible bond partners
|
||||||
and labels the closest such partner as its "sole" bond partner. After
|
and labels the closest such partner as its "sole" bond partner. After
|
||||||
this is done, if atom I has atom J as its sole partner, and atom J has
|
this is done, if atom :math:`i` has atom :math:`j` as its sole partner and
|
||||||
atom I as its sole partner, then the I,J bond is "eligible" to be
|
atom :math:`j` has atom :math:`i` as its sole partner, then the
|
||||||
formed.
|
:math:`i,j` bond is "eligible" to be formed.
|
||||||
|
|
||||||
Note that these rules mean an atom will only be part of at most one
|
Note that these rules mean that an atom will only be part of at most one
|
||||||
created bond on a given timestep. It also means that if atom I
|
created bond on a given time step. It also means that if atom :math:`i`
|
||||||
chooses atom J as its sole partner, but atom J chooses atom K is its
|
chooses atom :math:`j` as its sole partner, but atom :math:`j` chooses atom
|
||||||
sole partner (due to Rjk < Rij), then this means atom I will not form
|
:math:`k` as its sole partner (because :math:`R_{jk} < R_{ij}`), then atom
|
||||||
a bond on this timestep, even if it has other possible bond partners.
|
:math:`i` will not form a bond on this time step, even if it has other possible
|
||||||
|
bond partners.
|
||||||
|
|
||||||
It is permissible to have *itype* = *jtype*\ . *Rmin* must be <= the
|
It is permissible to have *itype* = *jtype*\ . *Rmin* must be :math:`\leq` the
|
||||||
pairwise cutoff distance between *itype* and *jtype* atoms, as defined
|
pair-wise cutoff distance between *itype* and *jtype* atoms, as defined
|
||||||
by the :doc:`pair_style <pair_style>` command.
|
by the :doc:`pair_style <pair_style>` command.
|
||||||
|
|
||||||
The *iparam* and *jparam* keywords can be used to limit the bonding
|
The *iparam* and *jparam* keywords can be used to limit the bonding
|
||||||
functionality of the participating atoms. Each atom keeps track of
|
functionality of the participating atoms. Each atom keeps track of
|
||||||
how many bonds of *bondtype* it already has. If atom I of
|
how many bonds of *bondtype* it already has. If atom :math:`i` of type
|
||||||
itype already has *maxbond* bonds (as set by the *iparam*
|
*itype* already has *maxbond* bonds (as set by the *iparam*
|
||||||
keyword), then it will not form any more. Likewise for atom J. If
|
keyword), then it will not form any more, and likewise for atom :math:`j`.
|
||||||
*maxbond* is set to 0, then there is no limit on the number of bonds
|
If *maxbond* is set to 0, then there is no limit on the number of bonds
|
||||||
that can be formed with that atom.
|
that can be formed with that atom.
|
||||||
|
|
||||||
The *newtype* value for *iparam* and *jparam* can be used to change
|
The *newtype* value for *iparam* and *jparam* can be used to change
|
||||||
the atom type of atom I or J when it reaches *maxbond* number of bonds
|
the atom type of atom :math:`i` or :math:`j` when it reaches *maxbond* number
|
||||||
of type *bondtype*\ . This means it can now interact in a pairwise
|
of bonds of type *bondtype*\ . This means it can now interact in a pair-wise
|
||||||
fashion with other atoms in a different way by specifying different
|
fashion with other atoms in a different way by specifying different
|
||||||
:doc:`pair_coeff <pair_coeff>` coefficients. If you do not wish the
|
:doc:`pair_coeff <pair_coeff>` coefficients. If you do not wish the
|
||||||
atom type to change, simply specify *newtype* as *itype* or *jtype*\ .
|
atom type to change, simply specify *newtype* as *itype* or *jtype*\ .
|
||||||
|
|
||||||
The *prob* keyword can also effect whether an eligible bond is
|
The *prob* keyword can also affect whether an eligible bond is
|
||||||
actually created. The *fraction* setting must be a value between 0.0
|
actually created. The *fraction* setting must be a value between 0.0
|
||||||
and 1.0. A uniform random number between 0.0 and 1.0 is generated and
|
and 1.0. A uniform random number between 0.0 and 1.0 is generated and
|
||||||
the eligible bond is only created if the random number < fraction.
|
the eligible bond is only created if the random number is less than *fraction*.
|
||||||
|
|
||||||
The *aconstrain* keyword is only available with the fix
|
The *aconstrain* keyword is only available with the fix
|
||||||
bond/create/angle command. It allows to specify a minimal and maximal
|
bond/create/angle command. It allows one to specify minimum and maximum
|
||||||
angle *amin* and *amax* between the two prospective bonding partners and
|
angles *amin* and *amax*, respectively, between the two prospective bonding
|
||||||
a third particle that is already bonded to one of the two partners.
|
partners and a third particle that is already bonded to one of the two
|
||||||
Such a criterion can be important when new angles are defined together
|
partners. Such a criterion can be important when new angles are defined
|
||||||
with the formation of a new bond. Without a restriction on the
|
together with the formation of a new bond. Without a restriction on the
|
||||||
permissible angle, and for stiffer angle potentials, very large energies
|
permissible angle, and for stiffer angle potentials, very large energies
|
||||||
can arise and lead to uncontrolled behavior.
|
can arise and lead to unphysical behavior.
|
||||||
|
|
||||||
Any bond that is created is assigned a bond type of *bondtype*.
|
Any bond that is created is assigned a bond type of *bondtype*.
|
||||||
|
|
||||||
When a bond is created, data structures within LAMMPS that store bond
|
When a bond is created, data structures within LAMMPS that store bond
|
||||||
topology are updated to reflect the creation. If the bond is part of
|
topologies are updated to reflect the creation. If the bond is part of
|
||||||
new 3-body (angle) or 4-body (dihedral, improper) interactions, you
|
new 3-body (angle) or 4-body (dihedral, improper) interactions, you
|
||||||
can choose to create new angles, dihedrals, impropers as well, using
|
can choose to create new angles, dihedrals, and impropers as well using
|
||||||
the *atype*, *dtype*, and *itype* keywords. All of these changes
|
the *atype*, *dtype*, and *itype* keywords. All of these changes
|
||||||
typically affect pairwise interactions between atoms that are now part
|
typically affect pair-wise interactions between atoms that are now part
|
||||||
of new bonds, angles, etc.
|
of new bonds, angles, etc.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
@ -165,19 +166,19 @@ of type *angletype*, with parameters assigned by the corresponding
|
|||||||
when bonds are created. See the :doc:`read_data <read_data>` or
|
when bonds are created. See the :doc:`read_data <read_data>` or
|
||||||
:doc:`create_box <create_box>` command for more details. Note that a
|
:doc:`create_box <create_box>` command for more details. Note that a
|
||||||
data file with no atoms can be used if you wish to add non-bonded
|
data file with no atoms can be used if you wish to add non-bonded
|
||||||
atoms via the :doc:`create atoms <create_atoms>` command, e.g. for a
|
atoms via the :doc:`create atoms <create_atoms>` command (e.g., for a
|
||||||
percolation simulation.
|
percolation simulation).
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
LAMMPS stores and maintains a data structure with a list of the
|
LAMMPS stores and maintains a data structure with a list of the
|
||||||
first, second, and third neighbors of each atom (within the bond topology of
|
first, second, and third neighbors of each atom (within the bond topology of
|
||||||
the system) for use in weighting pairwise interactions for bonded
|
the system) for use in weighting pair-wise interactions for bonded
|
||||||
atoms. Note that adding a single bond always adds a new first neighbor
|
atoms. Note that adding a single bond always adds a new first neighbor
|
||||||
but may also induce \*many\* new second and third neighbors, depending on the
|
but may also induce **many** new second and third neighbors, depending on the
|
||||||
molecular topology of your system. The "extra special per atom"
|
molecular topology of your system. The "extra special per atom"
|
||||||
parameter must typically be set to allow for the new maximum total
|
parameter must typically be set to allow for the new maximum total
|
||||||
size (first + second + third neighbors) of this per-atom list. There are 2
|
size (first + second + third neighbors) of this per-atom list. There are two
|
||||||
ways to do this. See the :doc:`read_data <read_data>` or
|
ways to do this. See the :doc:`read_data <read_data>` or
|
||||||
:doc:`create_box <create_box>` commands for details.
|
:doc:`create_box <create_box>` commands for details.
|
||||||
|
|
||||||
@ -186,15 +187,16 @@ of type *angletype*, with parameters assigned by the corresponding
|
|||||||
Even if you do not use the *atype*, *dtype*, or *itype*
|
Even if you do not use the *atype*, *dtype*, or *itype*
|
||||||
keywords, the list of topological neighbors is updated for atoms
|
keywords, the list of topological neighbors is updated for atoms
|
||||||
affected by the new bond. This in turn affects which neighbors are
|
affected by the new bond. This in turn affects which neighbors are
|
||||||
considered for pairwise interactions, using the weighting rules set by
|
considered for pair-wise interactions, using the weighting rules set by
|
||||||
the :doc:`special_bonds <special_bonds>` command. Consider a new bond
|
the :doc:`special_bonds <special_bonds>` command. Consider a new bond
|
||||||
created between atoms I,J. If J has a bonded neighbor K, then K
|
created between atoms :math:`i` and :math:`j`. If :math:`j` has a bonded
|
||||||
becomes a second neighbor of I. Even if the *atype* keyword is not used
|
neighbor :math:`k`, then :math:`k` becomes a second neighbor of :math:`i`.
|
||||||
to create angle I-J-K, the pairwise interaction between I and K will
|
Even if the *atype* keyword is not used to create angle :math:`\angle ijk`,
|
||||||
be potentially turned off or weighted by the 1-3 weighting specified
|
the pair-wise interaction between :math:`i` and :math:`k` could potentially
|
||||||
|
be turned off or weighted by the 1--3 weighting specified
|
||||||
by the :doc:`special_bonds <special_bonds>` command. This is the case
|
by the :doc:`special_bonds <special_bonds>` command. This is the case
|
||||||
even if the "angle yes" option was used with that command. The same
|
even if the "angle yes" option was used with that command. The same
|
||||||
is true for third neighbors (1-4 interactions), the *dtype* keyword, and
|
is true for third neighbors (1--4 interactions), the *dtype* keyword, and
|
||||||
the "dihedral yes" option used with the
|
the "dihedral yes" option used with the
|
||||||
:doc:`special_bonds <special_bonds>` command.
|
:doc:`special_bonds <special_bonds>` command.
|
||||||
|
|
||||||
@ -203,20 +205,20 @@ define a :doc:`bond_style <bond_style>` and use the
|
|||||||
:doc:`bond_coeff <bond_coeff>` command to specify coefficients for the
|
:doc:`bond_coeff <bond_coeff>` command to specify coefficients for the
|
||||||
*bondtype*\ . Similarly, if new atom types are specified by the
|
*bondtype*\ . Similarly, if new atom types are specified by the
|
||||||
*iparam* or *jparam* keywords, they must be within the range of atom
|
*iparam* or *jparam* keywords, they must be within the range of atom
|
||||||
types allowed by the simulation and pairwise coefficients must be
|
types allowed by the simulation and pair-wise coefficients must be
|
||||||
specified for the new types.
|
specified for the new types.
|
||||||
|
|
||||||
Computationally, each timestep this fix operates, it loops over
|
Computationally, each time step this fix is invoked, it loops over
|
||||||
neighbor lists and computes distances between pairs of atoms in the
|
neighbor lists and computes distances between pairs of atoms in the
|
||||||
list. It also communicates between neighboring processors to
|
list. It also communicates between neighboring processors to
|
||||||
coordinate which bonds are created. Moreover, if any bonds are
|
coordinate which bonds are created. Moreover, if any bonds are
|
||||||
created, neighbor lists must be immediately updated on the same
|
created, neighbor lists must be immediately updated on the same
|
||||||
timestep. This is to insure that any pairwise interactions that
|
time step. This is to ensure that any pair-wise interactions that
|
||||||
should be turned "off" due to a bond creation, because they are now
|
should be turned "off" due to a bond creation, because they are now
|
||||||
excluded by the presence of the bond and the settings of the
|
excluded by the presence of the bond and the settings of the
|
||||||
:doc:`special_bonds <special_bonds>` command, will be immediately
|
:doc:`special_bonds <special_bonds>` command, will be immediately
|
||||||
recognized. All of these operations increase the cost of a timestep.
|
recognized. All of these operations increase the cost of a time step.
|
||||||
Thus you should be cautious about invoking this fix too frequently.
|
Thus, you should be cautious about invoking this fix too frequently.
|
||||||
|
|
||||||
You can dump out snapshots of the current bond topology via the :doc:`dump local <dump>` command.
|
You can dump out snapshots of the current bond topology via the :doc:`dump local <dump>` command.
|
||||||
|
|
||||||
@ -225,8 +227,8 @@ You can dump out snapshots of the current bond topology via the :doc:`dump local
|
|||||||
Creating a bond typically alters the energy of a system. You
|
Creating a bond typically alters the energy of a system. You
|
||||||
should be careful not to choose bond creation criteria that induce a
|
should be careful not to choose bond creation criteria that induce a
|
||||||
dramatic change in energy. For example, if you define a very stiff
|
dramatic change in energy. For example, if you define a very stiff
|
||||||
harmonic bond and create it when 2 atoms are separated by a distance
|
harmonic bond and create it when two atoms are separated by a distance
|
||||||
far from the equilibrium bond length, then the 2 atoms will oscillate
|
far from the equilibrium bond length, then the two atoms will oscillate
|
||||||
dramatically when the bond is formed. More generally, you may need to
|
dramatically when the bond is formed. More generally, you may need to
|
||||||
thermostat your system to compensate for energy changes resulting from
|
thermostat your system to compensate for energy changes resulting from
|
||||||
created bonds (and angles, dihedrals, impropers).
|
created bonds (and angles, dihedrals, impropers).
|
||||||
@ -245,10 +247,10 @@ length 2, which can be accessed by various :doc:`output commands
|
|||||||
<Howto_output>`. The vector values calculated by this fix are
|
<Howto_output>`. The vector values calculated by this fix are
|
||||||
"intensive".
|
"intensive".
|
||||||
|
|
||||||
These are the 2 quantities:
|
The two quantities in the global vector are
|
||||||
|
|
||||||
* (1) # of bonds created on the most recent creation timestep
|
(1) number of bonds created on the most recent creation time step
|
||||||
* (2) cumulative # of bonds created
|
(2) cumulative number of bonds created
|
||||||
|
|
||||||
No parameter of this fix can be used with the *start/stop* keywords of
|
No parameter of this fix can be used with the *start/stop* keywords of
|
||||||
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
|
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
|
||||||
|
|||||||
@ -6,12 +6,12 @@ fix bond/react command
|
|||||||
Syntax
|
Syntax
|
||||||
""""""
|
""""""
|
||||||
|
|
||||||
.. parsed-literal::
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
fix ID group-ID bond/react common_keyword values ...
|
fix ID group-ID bond/react common_keyword values &
|
||||||
react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
|
react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values &
|
||||||
react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
|
react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values &
|
||||||
react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values ...
|
react react-ID react-group-ID Nevery Rmin Rmax template-ID(pre-reacted) template-ID(post-reacted) map_file individual_keyword values &
|
||||||
...
|
...
|
||||||
|
|
||||||
* ID, group-ID are documented in :doc:`fix <fix>` command.
|
* ID, group-ID are documented in :doc:`fix <fix>` command.
|
||||||
@ -22,11 +22,12 @@ Syntax
|
|||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
*stabilization* values = *no* or *yes* *group-ID* *xmax*
|
*stabilization* values = stabilize group_prefix xmax
|
||||||
*no* = no reaction site stabilization (default)
|
stabilize = *yes* or *no*
|
||||||
*yes* = perform reaction site stabilization
|
*yes* = perform reaction site stabilization
|
||||||
*group-ID* = user-assigned prefix for the dynamic group of atoms not currently involved in a reaction
|
*no* = no reaction site stabilization (default)
|
||||||
*xmax* = xmax value that is used by an internally-created :doc:`nve/limit <fix_nve_limit>` integrator
|
group_prefix = user-assigned prefix for the dynamic group of atoms not currently involved in a reaction
|
||||||
|
xmax = value that is used by an internally-created :doc:`nve/limit <fix_nve_limit>` integrator
|
||||||
*reset_mol_ids* values = *yes* or *no*
|
*reset_mol_ids* values = *yes* or *no*
|
||||||
*yes* = update molecule IDs based on new global topology (default)
|
*yes* = update molecule IDs based on new global topology (default)
|
||||||
*no* = do not update molecule IDs
|
*no* = do not update molecule IDs
|
||||||
@ -51,18 +52,18 @@ Syntax
|
|||||||
*max_rxn* value = N
|
*max_rxn* value = N
|
||||||
N = maximum number of reactions allowed to occur
|
N = maximum number of reactions allowed to occur
|
||||||
*stabilize_steps* value = timesteps
|
*stabilize_steps* value = timesteps
|
||||||
timesteps = number of timesteps to apply the internally-created :doc:`nve/limit <fix_nve_limit>` fix to reacting atoms
|
timesteps = number of time steps to apply the internally-created :doc:`nve/limit <fix_nve_limit>` fix to reacting atoms
|
||||||
*custom_charges* value = *no* or *fragmentID*
|
*custom_charges* value = *no* or fragment-ID
|
||||||
no = update all atomic charges (default)
|
*no* = update all atomic charges (default)
|
||||||
fragmentID = ID of molecule fragment whose charges are updated
|
fragment-ID = ID of molecule fragment whose charges are updated
|
||||||
*molecule* value = *off* or *inter* or *intra*
|
*molecule* value = *off* or *inter* or *intra*
|
||||||
off = allow both inter- and intramolecular reactions (default)
|
*off* = allow both inter- and intramolecular reactions (default)
|
||||||
inter = search for reactions between molecules with different IDs
|
*inter* = search for reactions between molecules with different IDs
|
||||||
intra = search for reactions within the same molecule
|
*intra* = search for reactions within the same molecule
|
||||||
*modify_create* keyword values
|
*modify_create* values = keyword arg
|
||||||
*fit* value = *all* or *fragmentID*
|
*fit* arg = *all* or fragment-ID
|
||||||
all = use all eligible atoms for create-atoms fit (default)
|
*all* = use all eligible atoms for create-atoms fit (default)
|
||||||
fragmentID = ID of molecule fragment used for create-atoms fit
|
fragment-ID = ID of molecule fragment used for create-atoms fit
|
||||||
*overlap* value = R
|
*overlap* value = R
|
||||||
R = only insert atom/molecule if further than R from existing particles (distance units)
|
R = only insert atom/molecule if further than R from existing particles (distance units)
|
||||||
|
|
||||||
@ -99,31 +100,32 @@ other molecules can be identified and deleted. Finally, atoms can be
|
|||||||
created and inserted at specific positions relative to the reaction
|
created and inserted at specific positions relative to the reaction
|
||||||
site.
|
site.
|
||||||
|
|
||||||
Fix bond/react does not use quantum mechanical (eg. fix qmmm) or
|
Fix bond/react does not use quantum mechanical (e.g., :doc:`fix qmmm <fix_qmmm>`) or
|
||||||
pairwise bond-order potential (eg. Tersoff or AIREBO) methods to
|
pairwise bond-order potential (e.g., :doc:`Tersoff <pair_tersoff>` or
|
||||||
|
:doc:`AIREBO <pair_airebo>`) methods to
|
||||||
determine bonding changes a priori. Rather, it uses a distance-based
|
determine bonding changes a priori. Rather, it uses a distance-based
|
||||||
probabilistic criteria to effect predetermined topology changes in
|
probabilistic criteria to effect predetermined topology changes in
|
||||||
simulations using standard force fields.
|
simulations using standard force fields.
|
||||||
|
|
||||||
This fix was created to facilitate the dynamic creation of polymeric,
|
This fix was created to facilitate the dynamic creation of polymeric,
|
||||||
amorphous or highly cross-linked systems. A suggested workflow for
|
amorphous or highly cross-linked systems. A suggested workflow for
|
||||||
using this fix is: 1) identify a reaction to be simulated 2) build a
|
using this fix is
|
||||||
molecule template of the reaction site before the reaction has
|
|
||||||
occurred 3) build a molecule template of the reaction site after the
|
(1) identify a reaction to be simulated
|
||||||
reaction has occurred 4) create a map that relates the
|
(2) build a molecule template of the reaction site before the reaction has occurred
|
||||||
template-atom-IDs of each atom between pre- and post-reaction molecule
|
(3) build a molecule template of the reaction site after the reaction has occurred
|
||||||
templates 5) fill a simulation box with molecules and run a simulation
|
(4) create a map that relates the template-atom-IDs of each atom between pre- and post-reaction molecule templates
|
||||||
with fix bond/react.
|
(5) fill a simulation box with molecules and run a simulation with fix bond/react.
|
||||||
|
|
||||||
Only one 'fix bond/react' command can be used at a time. Multiple
|
Only one 'fix bond/react' command can be used at a time. Multiple
|
||||||
reactions can be simultaneously applied by specifying multiple *react*
|
reactions can be simultaneously applied by specifying multiple *react*
|
||||||
arguments to a single 'fix bond/react' command. This syntax is
|
arguments to a single 'fix bond/react' command. This syntax is
|
||||||
necessary because the 'common keywords' are applied to all reactions.
|
necessary because the "common" keywords are applied to all reactions.
|
||||||
|
|
||||||
The *stabilization* keyword enables reaction site stabilization.
|
The *stabilization* keyword enables reaction site stabilization.
|
||||||
Reaction site stabilization is performed by including reacting atoms
|
Reaction site stabilization is performed by including reacting atoms
|
||||||
in an internally-created fix :doc:`nve/limit <fix_nve_limit>` time
|
in an internally-created fix :doc:`nve/limit <fix_nve_limit>` time
|
||||||
integrator for a set number of timesteps given by the
|
integrator for a set number of time steps given by the
|
||||||
*stabilize_steps* keyword. While reacting atoms are being time
|
*stabilize_steps* keyword. While reacting atoms are being time
|
||||||
integrated by the internal nve/limit, they are prevented from being
|
integrated by the internal nve/limit, they are prevented from being
|
||||||
involved in any new reactions. The *xmax* value keyword should
|
involved in any new reactions. The *xmax* value keyword should
|
||||||
@ -133,53 +135,54 @@ during the simulation.
|
|||||||
Fix bond/react creates and maintains two important dynamic groups of
|
Fix bond/react creates and maintains two important dynamic groups of
|
||||||
atoms when using the *stabilization* keyword. The first group contains
|
atoms when using the *stabilization* keyword. The first group contains
|
||||||
all atoms currently involved in a reaction; this group is
|
all atoms currently involved in a reaction; this group is
|
||||||
automatically thermostatted by an internally-created
|
automatically time-integrated by an internally-created
|
||||||
:doc:`nve/limit <fix_nve_limit>` integrator. The second group contains
|
:doc:`nve/limit <fix_nve_limit>` integrator. The second group contains
|
||||||
all atoms currently not involved in a reaction. This group should be
|
all atoms currently not involved in a reaction. This group should be
|
||||||
used by a thermostat in order to time integrate the system. The name
|
controlled by a thermostat in order to time integrate the system. The name
|
||||||
of this group of non-reacting atoms is created by appending '_REACT'
|
of this group of non-reacting atoms is created by appending '_REACT'
|
||||||
to the group-ID argument of the *stabilization* keyword, as shown in
|
to the group-ID argument of the *stabilization* keyword, as shown in
|
||||||
the second example above.
|
the second example above.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
When using reaction stabilization, you should generally not have
|
When using reaction stabilization, you should generally **not** have
|
||||||
a separate thermostat which acts on the 'all' group.
|
a separate thermostat that acts on the "all" group.
|
||||||
|
|
||||||
The group-ID set using the *stabilization* keyword can be an existing
|
The group-ID set using the *stabilization* keyword can be an existing
|
||||||
static group or a previously-unused group-ID. It cannot be specified
|
static group or a previously-unused group-ID. It cannot be specified
|
||||||
as 'all'. If the group-ID is previously unused, the fix bond/react
|
as "all". If the group-ID is previously unused, the fix bond/react
|
||||||
command creates a :doc:`dynamic group <group>` that is initialized to
|
command creates a :doc:`dynamic group <group>` that is initialized to
|
||||||
include all atoms. If the group-ID is that of an existing static
|
include all atoms. If the group-ID is that of an existing static
|
||||||
group, the group is used as the parent group of new,
|
group, the group is used as the parent group of new,
|
||||||
internally-created dynamic group. In both cases, this new dynamic
|
internally-created dynamic group. In both cases, this new dynamic
|
||||||
group is named by appending '_REACT' to the group-ID, e.g.
|
group is named by appending '_REACT' to the group-ID (e.g.,
|
||||||
nvt_grp_REACT. By specifying an existing group, you may thermostat
|
nvt_grp_REACT). By specifying an existing group, you may thermostat
|
||||||
constant-topology parts of your system separately. The dynamic group
|
constant-topology parts of your system separately. The dynamic group
|
||||||
contains only atoms not involved in a reaction at a given timestep,
|
contains only atoms not involved in a reaction at a given time step,
|
||||||
and therefore should be used by a subsequent system-wide time
|
and therefore should be used by a subsequent system-wide time
|
||||||
integrator such as nvt, npt, or nve, as shown in the second example
|
integrator such as :doc:`fix nvt <fix_nh>`, :doc:`fix npt <fix_nh>`, or
|
||||||
above (full examples can be found at examples/PACKAGES/reaction). The time
|
:doc:`fix nve <fix_nve>`, as shown in the second example
|
||||||
|
above (full examples can be found in examples/PACKAGES/reaction). The time
|
||||||
integration command should be placed after the fix bond/react command
|
integration command should be placed after the fix bond/react command
|
||||||
due to the internal dynamic grouping performed by fix bond/react.
|
due to the internal dynamic grouping performed by fix bond/react.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
If the group-ID is an existing static group, react-group-IDs
|
If the group-ID is an existing static group, react-group-IDs
|
||||||
should also be specified as this static group, or a subset.
|
should also be specified as this static group or a subset.
|
||||||
|
|
||||||
The *reset_mol_ids* keyword invokes the :doc:`reset_mol_ids <reset_mol_ids>`
|
The *reset_mol_ids* keyword invokes the :doc:`reset_mol_ids <reset_mol_ids>`
|
||||||
command after a reaction occurs, to ensure that molecule IDs are
|
command after a reaction occurs, to ensure that molecule IDs are
|
||||||
consistent with the new bond topology. The group-ID used for
|
consistent with the new bond topology. The group-ID used for
|
||||||
:doc:`reset_mol_ids <reset_mol_ids>` is the group-ID for this fix.
|
:doc:`reset_mol_ids <reset_mol_ids>` is the group-ID for this fix.
|
||||||
Resetting molecule IDs is necessarily a global operation, and so can
|
Resetting molecule IDs is necessarily a global operation, so it can
|
||||||
be slow for very large systems.
|
be slow for very large systems.
|
||||||
|
|
||||||
The following comments pertain to each *react* argument (in other
|
The following comments pertain to each *react* argument (in other
|
||||||
words, can be customized for each reaction, or reaction step):
|
words, they can be customized for each reaction, or reaction step):
|
||||||
|
|
||||||
A check for possible new reaction sites is performed every *Nevery*
|
A check for possible new reaction sites is performed every *Nevery*
|
||||||
timesteps. *Nevery* can be specified with an equal-style
|
time steps. *Nevery* can be specified with an equal-style
|
||||||
:doc:`variable <variable>`, whose value is rounded up to the nearest
|
:doc:`variable <variable>`, whose value is rounded up to the nearest
|
||||||
integer.
|
integer.
|
||||||
|
|
||||||
@ -194,11 +197,11 @@ reaction site is eligible to be modified to match the post-reaction
|
|||||||
template.
|
template.
|
||||||
|
|
||||||
An initiator atom pair will be identified if several conditions are
|
An initiator atom pair will be identified if several conditions are
|
||||||
met. First, a pair of atoms I,J within the specified react-group-ID of
|
met. First, a pair of atoms :math:`i` and :math:`j` within the specified
|
||||||
type itype and jtype must be separated by a distance between *Rmin*
|
react-group-ID of type *itype* and *jtype* must be separated by a distance
|
||||||
and *Rmax*\ . *Rmin* and *Rmax* can be specified with equal-style
|
between *Rmin* and *Rmax*\ . *Rmin* and *Rmax* can be specified with
|
||||||
:doc:`variables <variable>`. For example, these reaction cutoffs can
|
equal-style :doc:`variables <variable>`. For example, these reaction cutoffs
|
||||||
be a function of the reaction conversion using the following commands:
|
can be functions of the reaction conversion using the following commands:
|
||||||
|
|
||||||
.. code-block:: LAMMPS
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
@ -207,23 +210,28 @@ be a function of the reaction conversion using the following commands:
|
|||||||
variable rmax equal 3+f_myrxn[1]/100 # arbitrary function of reaction count
|
variable rmax equal 3+f_myrxn[1]/100 # arbitrary function of reaction count
|
||||||
|
|
||||||
The following criteria are used if multiple candidate initiator atom
|
The following criteria are used if multiple candidate initiator atom
|
||||||
pairs are identified within the cutoff distance: 1) If the initiator
|
pairs are identified within the cutoff distance:
|
||||||
atoms in the pre-reaction template are not 1-2 neighbors (i.e. not
|
|
||||||
directly bonded) the closest potential partner is chosen. 2)
|
(1) If the initiator atoms in the pre-reaction template are not 1--2
|
||||||
Otherwise, if the initiator atoms in the pre-reaction template are 1-2
|
neighbors (i.e., not directly bonded) the closest potential partner is
|
||||||
neighbors (i.e. directly bonded) the farthest potential partner is
|
chosen.
|
||||||
chosen. 3) Then, if both an atom I and atom J have each other as their
|
(2) Otherwise, if the initiator atoms in the pre-reaction template are 1--2
|
||||||
initiator partners, these two atoms are identified as the initiator
|
neighbors (i.e. directly bonded) the farthest potential partner is
|
||||||
atom pair of the reaction site. Note that it can be helpful to select
|
chosen.
|
||||||
|
(3) Then, if both an atom :math:`i` and atom :math:`j` have each other as
|
||||||
|
initiator partners, these two atoms are identified as the initiator atom
|
||||||
|
pair of the reaction site.
|
||||||
|
|
||||||
|
Note that it can be helpful to select
|
||||||
unique atom types for the initiator atoms: if an initiator atom pair
|
unique atom types for the initiator atoms: if an initiator atom pair
|
||||||
is identified, as described in the previous steps, but does not
|
is identified, as described in the previous steps, but it does not
|
||||||
correspond to the same pair specified in the pre-reaction template, an
|
correspond to the same pair specified in the pre-reaction template, an
|
||||||
otherwise eligible reaction could be prevented from occurring. Once
|
otherwise eligible reaction could be prevented from occurring. Once
|
||||||
this unique initiator atom pair is identified for each reaction, there
|
this unique initiator atom pair is identified for each reaction, there
|
||||||
could be two or more reactions that involve the same atom on the same
|
could be two or more reactions that involve the same atom on the same
|
||||||
timestep. If this is the case, only one such reaction is permitted to
|
time step. If this is the case, only one such reaction is permitted to
|
||||||
occur. This reaction is chosen randomly from all potential reactions
|
occur. This reaction is chosen randomly from all potential reactions
|
||||||
involving the overlapping atom. This capability allows e.g. for
|
involving the overlapping atom. This capability allows, for example,
|
||||||
different reaction pathways to proceed from identical reaction sites
|
different reaction pathways to proceed from identical reaction sites
|
||||||
with user-specified probabilities.
|
with user-specified probabilities.
|
||||||
|
|
||||||
@ -247,19 +255,19 @@ pre-reaction template atoms should be linked to an initiator atom, via
|
|||||||
at least one path that does not involve edge atoms. When the
|
at least one path that does not involve edge atoms. When the
|
||||||
pre-reaction template contains edge atoms, not all atoms, bonds,
|
pre-reaction template contains edge atoms, not all atoms, bonds,
|
||||||
charges, etc. specified in the reaction templates will be updated.
|
charges, etc. specified in the reaction templates will be updated.
|
||||||
Specifically, topology that involves only atoms that are 'too near' to
|
Specifically, topology that involves only atoms that are "too near" to
|
||||||
template edges will not be updated. The definition of 'too near the
|
template edges will not be updated. The definition of "too near the
|
||||||
edge' depends on which interactions are defined in the simulation. If
|
edge" depends on which interactions are defined in the simulation. If
|
||||||
the simulation has defined dihedrals, atoms within two bonds of edge
|
the simulation has defined dihedrals, atoms within two bonds of edge
|
||||||
atoms are considered 'too near the edge.' If the simulation defines
|
atoms are considered "too near the edge." If the simulation defines
|
||||||
angles, but not dihedrals, atoms within one bond of edge atoms are
|
angles, but not dihedrals, atoms within one bond of edge atoms are
|
||||||
considered 'too near the edge.' If just bonds are defined, only edge
|
considered "too near the edge." If just bonds are defined, only edge
|
||||||
atoms are considered 'too near the edge.'
|
atoms are considered "too near the edge."
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
Small molecules, i.e. ones that have all their atoms contained
|
Small molecules (i.e., ones that have all their atoms contained
|
||||||
within the reaction templates, never have edge atoms.
|
within the reaction templates) never have edge atoms.
|
||||||
|
|
||||||
Note that some care must be taken when a building a molecule template
|
Note that some care must be taken when a building a molecule template
|
||||||
for a given simulation. All atom types in the pre-reacted template
|
for a given simulation. All atom types in the pre-reacted template
|
||||||
@ -282,7 +290,7 @@ provided on the :doc:`molecule <molecule>` command page.
|
|||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
When a reaction occurs, it is possible that the resulting
|
When a reaction occurs, it is possible that the resulting
|
||||||
topology/atom (e.g. special bonds, dihedrals, etc.) exceeds that of
|
topology/atom (e.g., special bonds, dihedrals) exceeds that of
|
||||||
the existing system and reaction templates. As when inserting
|
the existing system and reaction templates. As when inserting
|
||||||
molecules, enough space for this increased topology/atom must be
|
molecules, enough space for this increased topology/atom must be
|
||||||
reserved by using the relevant "extra" keywords to the
|
reserved by using the relevant "extra" keywords to the
|
||||||
@ -292,14 +300,14 @@ The map file is a text document with the following format:
|
|||||||
|
|
||||||
A map file has a header and a body. The header of map file the
|
A map file has a header and a body. The header of map file the
|
||||||
contains one mandatory keyword and five optional keywords. The
|
contains one mandatory keyword and five optional keywords. The
|
||||||
mandatory keyword is 'equivalences':
|
mandatory keyword is *equivalences*\ :
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
N *equivalences* = # of atoms N in the reaction molecule templates
|
N *equivalences* = # of atoms N in the reaction molecule templates
|
||||||
|
|
||||||
The optional keywords are 'edgeIDs', 'deleteIDs', 'chiralIDs' and
|
The optional keywords are *edgeIDs*\ , *deleteIDs*\ , *chiralIDs*\ , and
|
||||||
'constraints':
|
*constraints*\ :
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
@ -311,25 +319,25 @@ The optional keywords are 'edgeIDs', 'deleteIDs', 'chiralIDs' and
|
|||||||
|
|
||||||
The body of the map file contains two mandatory sections and five
|
The body of the map file contains two mandatory sections and five
|
||||||
optional sections. The first mandatory section begins with the keyword
|
optional sections. The first mandatory section begins with the keyword
|
||||||
'InitiatorIDs' and lists the two atom IDs of the initiator atom pair
|
"InitiatorIDs" and lists the two atom IDs of the initiator atom pair
|
||||||
in the pre-reacted molecule template. The second mandatory section
|
in the pre-reacted molecule template. The second mandatory section
|
||||||
begins with the keyword 'Equivalences' and lists a one-to-one
|
begins with the keyword "Equivalences" and lists a one-to-one
|
||||||
correspondence between atom IDs of the pre- and post-reacted
|
correspondence between atom IDs of the pre- and post-reacted
|
||||||
templates. The first column is an atom ID of the pre-reacted molecule
|
templates. The first column is an atom ID of the pre-reacted molecule
|
||||||
template, and the second column is the corresponding atom ID of the
|
template, and the second column is the corresponding atom ID of the
|
||||||
post-reacted molecule template. The first optional section begins with
|
post-reacted molecule template. The first optional section begins with
|
||||||
the keyword 'EdgeIDs' and lists the atom IDs of edge atoms in the
|
the keyword "EdgeIDs" and lists the atom IDs of edge atoms in the
|
||||||
pre-reacted molecule template. The second optional section begins with
|
pre-reacted molecule template. The second optional section begins with
|
||||||
the keyword 'DeleteIDs' and lists the atom IDs of pre-reaction
|
the keyword "DeleteIDs" and lists the atom IDs of pre-reaction
|
||||||
template atoms to delete. The third optional section begins with the
|
template atoms to delete. The third optional section begins with the
|
||||||
keyword 'CreateIDs' and lists the atom IDs of the post-reaction
|
keyword "CreateIDs" and lists the atom IDs of the post-reaction
|
||||||
template atoms to create. The fourth optional section begins with the
|
template atoms to create. The fourth optional section begins with the
|
||||||
keyword 'ChiralIDs' lists the atom IDs of chiral atoms whose
|
keyword "ChiralIDs" lists the atom IDs of chiral atoms whose
|
||||||
handedness should be enforced. The fifth optional section begins with
|
handedness should be enforced. The fifth optional section begins with
|
||||||
the keyword 'Constraints' and lists additional criteria that must be
|
the keyword "Constraints" and lists additional criteria that must be
|
||||||
satisfied in order for the reaction to occur. Currently, there are
|
satisfied in order for the reaction to occur. Currently, there are
|
||||||
six types of constraints available, as discussed below: 'distance',
|
six types of constraints available, as discussed below: "distance",
|
||||||
'angle', 'dihedral', 'arrhenius', 'rmsd', and 'custom'.
|
"angle", "dihedral", "arrhenius", "rmsd", and "custom".
|
||||||
|
|
||||||
A sample map file is given below:
|
A sample map file is given below:
|
||||||
|
|
||||||
@ -384,18 +392,24 @@ two sub-keywords, *fit* and *overlap*. One or more of the sub-keywords
|
|||||||
may be used after the *modify_create* keyword. The *fit* sub-keyword
|
may be used after the *modify_create* keyword. The *fit* sub-keyword
|
||||||
can be used to specify which post-reaction atoms are used for the
|
can be used to specify which post-reaction atoms are used for the
|
||||||
optimal translation and rotation of the post-reaction template. The
|
optimal translation and rotation of the post-reaction template. The
|
||||||
*fragmentID* value of the *fit* sub-keyword must be the name of a
|
fragment-ID value of the *fit* sub-keyword must be the name of a
|
||||||
molecule fragment defined in the post-reaction :doc:`molecule
|
molecule fragment defined in the post-reaction :doc:`molecule
|
||||||
<molecule>` template, and only atoms in this fragment are used for the
|
<molecule>` template, and only atoms in this fragment are used for the
|
||||||
fit. Atoms are created only if no current atom in the simulation is
|
fit. Atoms are created only if no current atom in the simulation is
|
||||||
within a distance R of any created atom, including the effect of
|
within a distance :math:`R` of any created atom, including the effect of
|
||||||
periodic boundary conditions if applicable. R is defined by the
|
periodic boundary conditions if applicable. :math:`R` is defined by the
|
||||||
*overlap* sub-keyword. Note that the default value for R is 0.0, which
|
*overlap* sub-keyword. Note that the default value for :math:`R` is 0.0, which
|
||||||
will allow atoms to strongly overlap if you are inserting where other
|
will allow atoms to strongly overlap if you are inserting where other
|
||||||
atoms are present. The velocity of each created atom is initialized in
|
atoms are present. The velocity of each created atom is initialized in
|
||||||
a random direction with a magnitude calculated from the instantaneous
|
a random direction with a magnitude calculated from the instantaneous
|
||||||
temperature of the reaction site.
|
temperature of the reaction site.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The 'Coords' section must be included in the post-reaction template
|
||||||
|
when creating atoms because these coordinates are used to determine
|
||||||
|
where new atoms are inserted.
|
||||||
|
|
||||||
The handedness of atoms that are chiral centers can be enforced by
|
The handedness of atoms that are chiral centers can be enforced by
|
||||||
listing their IDs in the ChiralIDs section. A chiral atom must be
|
listing their IDs in the ChiralIDs section. A chiral atom must be
|
||||||
bonded to four atoms with mutually different atom types. This feature
|
bonded to four atoms with mutually different atom types. This feature
|
||||||
@ -406,40 +420,40 @@ and the relative position of the fourth bonded atom determines the
|
|||||||
chiral center's handedness.
|
chiral center's handedness.
|
||||||
|
|
||||||
Any number of additional constraints may be specified in the
|
Any number of additional constraints may be specified in the
|
||||||
Constraints section of the map file. The constraint of type 'distance'
|
Constraints section of the map file. The constraint of type "distance"
|
||||||
has syntax as follows:
|
has syntax as follows:
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
distance *ID1* *ID2* *rmin* *rmax*
|
distance *ID1* *ID2* *rmin* *rmax*
|
||||||
|
|
||||||
where 'distance' is the required keyword, *ID1* and *ID2* are
|
where "distance" is the required keyword, *ID1* and *ID2* are
|
||||||
pre-reaction atom IDs (or molecule-fragment IDs, see below), and these
|
pre-reaction atom IDs (or molecule-fragment IDs, see below), and these
|
||||||
two atoms must be separated by a distance between *rmin* and *rmax*
|
two atoms must be separated by a distance between *rmin* and *rmax*
|
||||||
for the reaction to occur.
|
for the reaction to occur.
|
||||||
|
|
||||||
The constraint of type 'angle' has the following syntax:
|
The constraint of type "angle" has the following syntax:
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
angle *ID1* *ID2* *ID3* *amin* *amax*
|
angle *ID1* *ID2* *ID3* *amin* *amax*
|
||||||
|
|
||||||
where 'angle' is the required keyword, *ID1*, *ID2* and *ID3* are
|
where "angle" is the required keyword, *ID1*, *ID2* and *ID3* are
|
||||||
pre-reaction atom IDs (or molecule-fragment IDs, see below), and these
|
pre-reaction atom IDs (or molecule-fragment IDs, see below), and these
|
||||||
three atoms must form an angle between *amin* and *amax* for the
|
three atoms must form an angle between *amin* and *amax* for the
|
||||||
reaction to occur (where *ID2* is the central atom). Angles must be
|
reaction to occur (where *ID2* is the central atom). Angles must be
|
||||||
specified in degrees. This constraint can be used to enforce a certain
|
specified in degrees. This constraint can be used to enforce a certain
|
||||||
orientation between reacting molecules.
|
orientation between reacting molecules.
|
||||||
|
|
||||||
The constraint of type 'dihedral' has the following syntax:
|
The constraint of type "dihedral" has the following syntax:
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
dihedral *ID1* *ID2* *ID3* *ID4* *amin* *amax* *amin2* *amax2*
|
dihedral *ID1* *ID2* *ID3* *ID4* *amin* *amax* *amin2* *amax2*
|
||||||
|
|
||||||
where 'dihedral' is the required keyword, and *ID1*, *ID2*, *ID3*
|
where "dihedral" is the required keyword, and *ID1*, *ID2*, *ID3*
|
||||||
and *ID4* are pre-reaction atom IDs (or molecule-fragment IDs, see
|
and *ID4* are pre-reaction atom IDs (or molecule-fragment IDs, see
|
||||||
below). Dihedral angles are calculated in the interval (-180,180].
|
below). Dihedral angles are calculated in the interval :math:`(-180^\circ,180^\circ]`.
|
||||||
Refer to the :doc:`dihedral style <dihedral_style>` documentation for
|
Refer to the :doc:`dihedral style <dihedral_style>` documentation for
|
||||||
further details on convention. If *amin* is less than *amax*, these
|
further details on convention. If *amin* is less than *amax*, these
|
||||||
four atoms must form a dihedral angle greater than *amin* **and** less
|
four atoms must form a dihedral angle greater than *amin* **and** less
|
||||||
@ -447,7 +461,7 @@ than *amax* for the reaction to occur. If *amin* is greater than
|
|||||||
*amax*, these four atoms must form a dihedral angle greater than
|
*amax*, these four atoms must form a dihedral angle greater than
|
||||||
*amin* **or** less than *amax* for the reaction to occur. Angles must
|
*amin* **or** less than *amax* for the reaction to occur. Angles must
|
||||||
be specified in degrees. Optionally, a second range of permissible
|
be specified in degrees. Optionally, a second range of permissible
|
||||||
angles *amin2*-*amax2* can be specified.
|
angles *amin2* to *amax2* can be specified.
|
||||||
|
|
||||||
For the 'distance', 'angle', and 'dihedral' constraints (explained
|
For the 'distance', 'angle', and 'dihedral' constraints (explained
|
||||||
above), atom IDs can be replaced by pre-reaction molecule-fragment
|
above), atom IDs can be replaced by pre-reaction molecule-fragment
|
||||||
@ -457,11 +471,11 @@ fragment. The molecule fragment must have been defined in the
|
|||||||
:doc:`molecule <molecule>` command for the pre-reaction template.
|
:doc:`molecule <molecule>` command for the pre-reaction template.
|
||||||
|
|
||||||
The constraint of type 'arrhenius' imposes an additional reaction
|
The constraint of type 'arrhenius' imposes an additional reaction
|
||||||
probability according to the temperature-dependent Arrhenius equation:
|
probability according to the modified Arrhenius equation,
|
||||||
|
|
||||||
.. math::
|
.. math::
|
||||||
|
|
||||||
k = AT^{n}e^{\frac{-E_{a}}{k_{B}T}}
|
k = AT^{n}e^{-E_{a}/k_{B}T}.
|
||||||
|
|
||||||
The Arrhenius constraint has the following syntax:
|
The Arrhenius constraint has the following syntax:
|
||||||
|
|
||||||
@ -469,11 +483,11 @@ The Arrhenius constraint has the following syntax:
|
|||||||
|
|
||||||
arrhenius *A* *n* *E_a* *seed*
|
arrhenius *A* *n* *E_a* *seed*
|
||||||
|
|
||||||
where 'arrhenius' is the required keyword, *A* is the pre-exponential
|
where "arrhenius" is the required keyword, *A* is the pre-exponential
|
||||||
factor, *n* is the exponent of the temperature dependence, :math:`E_a`
|
factor, *n* is the exponent of the temperature dependence, :math:`E_a`
|
||||||
is the activation energy (:doc:`units <units>` of energy), and *seed* is a
|
is the activation energy (:doc:`units <units>` of energy), and *seed* is a
|
||||||
random number seed. The temperature is defined as the instantaneous
|
random number seed. The temperature is defined as the instantaneous
|
||||||
temperature averaged over all atoms in the reaction site, and is
|
temperature averaged over all atoms in the reaction site and is
|
||||||
calculated in the same manner as for example
|
calculated in the same manner as for example
|
||||||
:doc:`compute temp/chunk <compute_temp_chunk>`. Currently, there are no
|
:doc:`compute temp/chunk <compute_temp_chunk>`. Currently, there are no
|
||||||
options for additional temperature averaging or velocity-biased
|
options for additional temperature averaging or velocity-biased
|
||||||
@ -487,7 +501,7 @@ The constraint of type 'rmsd' has the following syntax:
|
|||||||
|
|
||||||
rmsd *RMSDmax* *molfragment*
|
rmsd *RMSDmax* *molfragment*
|
||||||
|
|
||||||
where 'rmsd' is the required keyword, and *RMSDmax* is the maximum
|
where "rmsd" is the required keyword, and *RMSDmax* is the maximum
|
||||||
root-mean-square deviation between atom positions of the pre-reaction
|
root-mean-square deviation between atom positions of the pre-reaction
|
||||||
template and the local reaction site (distance units), after optimal
|
template and the local reaction site (distance units), after optimal
|
||||||
translation and rotation of the pre-reaction template. Optionally, the
|
translation and rotation of the pre-reaction template. Optionally, the
|
||||||
@ -500,26 +514,26 @@ example, the molecule fragment could consist of only the backbone
|
|||||||
atoms of a polymer chain. This constraint can be used to enforce a
|
atoms of a polymer chain. This constraint can be used to enforce a
|
||||||
specific relative position and orientation between reacting molecules.
|
specific relative position and orientation between reacting molecules.
|
||||||
|
|
||||||
The constraint of type 'custom' has the following syntax:
|
The constraint of type "custom" has the following syntax:
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
custom *varstring*
|
custom *varstring*
|
||||||
|
|
||||||
where 'custom' is the required keyword, and *varstring* is a
|
where "custom" is the required keyword, and *varstring* is a
|
||||||
variable expression. The expression must be a valid equal-style
|
variable expression. The expression must be a valid equal-style
|
||||||
variable formula that can be read by the :doc:`variable <variable>` command,
|
variable formula that can be read by the :doc:`variable <variable>` command,
|
||||||
after any special reaction functions are evaluated. If the resulting
|
after any special reaction functions are evaluated. If the resulting
|
||||||
expression is zero, the reaction is prevented from occurring;
|
expression is zero, the reaction is prevented from occurring;
|
||||||
otherwise, it is permitted to occur. There are two special reaction
|
otherwise, it is permitted to occur. There are two special reaction
|
||||||
functions available, 'rxnsum' and 'rxnave'. These functions operate
|
functions available, "rxnsum" and "rxnave". These functions operate
|
||||||
over the atoms in a given reaction site, and have one mandatory
|
over the atoms in a given reaction site, and have one mandatory
|
||||||
argument and one optional argument. The mandatory argument is the
|
argument and one optional argument. The mandatory argument is the
|
||||||
identifier for an atom-style variable. The second, optional argument
|
identifier for an atom-style variable. The second, optional argument
|
||||||
is the name of a molecule fragment in the pre-reaction template, and
|
is the name of a molecule fragment in the pre-reaction template, and
|
||||||
can be used to operate over a subset of atoms in the reaction site.
|
can be used to operate over a subset of atoms in the reaction site.
|
||||||
The 'rxnsum' function sums the atom-style variable over the reaction
|
The "rxnsum" function sums the atom-style variable over the reaction
|
||||||
site, while the 'rxnave' returns the average value. For example, a
|
site, while the "rxnave" returns the average value. For example, a
|
||||||
constraint on the total potential energy of atoms involved in the
|
constraint on the total potential energy of atoms involved in the
|
||||||
reaction can be imposed as follows:
|
reaction can be imposed as follows:
|
||||||
|
|
||||||
@ -535,8 +549,8 @@ reaction can be imposed as follows:
|
|||||||
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
|
||||||
expression can be interpreted as the probability of the reaction
|
expression can be interpreted as the probability of the reaction
|
||||||
occurring by using an inequality and the 'random(x,y,z)' function
|
occurring by using an inequality and the :doc:`random(x,y,z) <variable>`
|
||||||
available as an equal-style variable input, similar to the 'arrhenius'
|
function available for equal-style variables, similar to the 'arrhenius'
|
||||||
constraint above.
|
constraint above.
|
||||||
|
|
||||||
By default, all constraints must be satisfied for the reaction to
|
By default, all constraints must be satisfied for the reaction to
|
||||||
@ -561,40 +575,42 @@ within LAMMPS that store bond topology are updated to reflect the
|
|||||||
post-reacted molecule template. All force fields with fixed bonds,
|
post-reacted molecule template. All force fields with fixed bonds,
|
||||||
angles, dihedrals or impropers are supported.
|
angles, dihedrals or impropers are supported.
|
||||||
|
|
||||||
A few capabilities to note: 1) You may specify as many *react*
|
A few capabilities to note:
|
||||||
arguments as desired. For example, you could break down a complicated
|
|
||||||
reaction mechanism into several reaction steps, each defined by its
|
(1) You may specify as many *react* arguments as desired. For example, you
|
||||||
own *react* argument. 2) While typically a bond is formed or removed
|
could break down a complicated reaction mechanism into several reaction
|
||||||
between the initiator atoms specified in the pre-reacted molecule
|
steps, each defined by its own *react* argument.
|
||||||
template, this is not required. 3) By reversing the order of the pre-
|
(2) While typically a bond is formed or removed between the initiator atoms
|
||||||
and post- reacted molecule templates in another *react* argument, you
|
specified in the pre-reacted molecule template, this is not required.
|
||||||
can allow for the possibility of one or more reverse reactions.
|
(3) By reversing the order of the pre- and post-reacted molecule templates in
|
||||||
|
another *react* argument, you can allow for the possibility of one or
|
||||||
|
more reverse reactions.
|
||||||
|
|
||||||
The optional keywords deal with the probability of a given reaction
|
The optional keywords deal with the probability of a given reaction
|
||||||
occurring as well as the stable equilibration of each reaction site as
|
occurring as well as the stable equilibration of each reaction site as
|
||||||
it occurs:
|
it occurs.
|
||||||
|
|
||||||
The *prob* keyword can affect whether or not an eligible reaction
|
The *prob* keyword can affect whether or not an eligible reaction
|
||||||
actually occurs. The fraction setting must be a value between 0.0 and
|
actually occurs. The fraction setting must be a value between 0.0 and
|
||||||
1.0, and can be specified with an equal-style :doc:`variable <variable>`.
|
1.0, and can be specified with an equal-style :doc:`variable <variable>`.
|
||||||
A uniform random number between 0.0 and 1.0 is generated and the
|
A uniform random number between 0.0 and 1.0 is generated and the
|
||||||
eligible reaction only occurs if the random number is less than the
|
eligible reaction only occurs if the random number is less than the
|
||||||
fraction. Up to N reactions are permitted to occur, as optionally
|
fraction. Up to :math:`N` reactions are permitted to occur, as optionally
|
||||||
specified by the *max_rxn* keyword.
|
specified by the *max_rxn* keyword.
|
||||||
|
|
||||||
The *stabilize_steps* keyword allows for the specification of how many
|
The *stabilize_steps* keyword allows for the specification of how many
|
||||||
timesteps a reaction site is stabilized before being returned to the
|
time steps a reaction site is stabilized before being returned to the
|
||||||
overall system thermostat. In order to produce the most physical
|
overall system thermostat. In order to produce the most physical
|
||||||
behavior, this 'reaction site equilibration time' should be tuned to
|
behavior, this "reaction site equilibration time" should be tuned to
|
||||||
be as small as possible while retaining stability for a given system
|
be as small as possible while retaining stability for a given system
|
||||||
or reaction step. After a limited number of case studies, this number
|
or reaction step. After a limited number of case studies, this number
|
||||||
has been set to a default of 60 timesteps. Ideally, it should be
|
has been set to a default of 60 time steps. Ideally, it should be
|
||||||
individually tuned for each fix reaction step. Note that in some
|
individually tuned for each fix reaction step. Note that in some
|
||||||
situations, decreasing rather than increasing this parameter will
|
situations, decreasing rather than increasing this parameter will
|
||||||
result in an increase in stability.
|
result in an increase in stability.
|
||||||
|
|
||||||
The *custom_charges* keyword can be used to specify which atoms'
|
The *custom_charges* keyword can be used to specify which atoms'
|
||||||
atomic charges are updated. When the value is set to 'no', all atomic
|
atomic charges are updated. When the value is set to *no*\ , all atomic
|
||||||
charges are updated to those specified by the post-reaction template
|
charges are updated to those specified by the post-reaction template
|
||||||
(default). Otherwise, the value should be the name of a molecule
|
(default). Otherwise, the value should be the name of a molecule
|
||||||
fragment defined in the pre-reaction molecule template. In this case,
|
fragment defined in the pre-reaction molecule template. In this case,
|
||||||
@ -602,10 +618,10 @@ only the atomic charges of atoms in the molecule fragment are updated.
|
|||||||
|
|
||||||
The *molecule* keyword can be used to force the reaction to be
|
The *molecule* keyword can be used to force the reaction to be
|
||||||
intermolecular, intramolecular or either. When the value is set to
|
intermolecular, intramolecular or either. When the value is set to
|
||||||
'off', molecule IDs are not considered when searching for reactions
|
*off*\ , molecule IDs are not considered when searching for reactions
|
||||||
(default). When the value is set to 'inter', the initiator atoms must
|
(default). When the value is set to *inter*\ , the initiator atoms must
|
||||||
have different molecule IDs in order to be considered for the
|
have different molecule IDs in order to be considered for the
|
||||||
reaction. When the value is set to 'intra', only initiator atoms with
|
reaction. When the value is set to *intra*\ , only initiator atoms with
|
||||||
the same molecule ID are considered for the reaction.
|
the same molecule ID are considered for the reaction.
|
||||||
|
|
||||||
A few other considerations:
|
A few other considerations:
|
||||||
@ -627,15 +643,15 @@ all currently-reacting atoms:
|
|||||||
This command must be added after the fix bond/react command, and
|
This command must be added after the fix bond/react command, and
|
||||||
will apply to all reactions.
|
will apply to all reactions.
|
||||||
|
|
||||||
Computationally, each timestep this fix operates, it loops over
|
Computationally, each time step this fix is invoked, it loops over
|
||||||
neighbor lists (for bond-forming reactions) and computes distances
|
neighbor lists (for bond-forming reactions) and computes distances
|
||||||
between pairs of atoms in the list. It also communicates between
|
between pairs of atoms in the list. It also communicates between
|
||||||
neighboring processors to coordinate which bonds are created and/or
|
neighboring processors to coordinate which bonds are created and/or
|
||||||
removed. All of these operations increase the cost of a timestep. Thus
|
removed. All of these operations increase the cost of a time step. Thus,
|
||||||
you should be cautious about invoking this fix too frequently.
|
you should be cautious about invoking this fix too frequently.
|
||||||
|
|
||||||
You can dump out snapshots of the current bond topology via the dump
|
You can dump out snapshots of the current bond topology via the
|
||||||
local command.
|
:doc:`dump local <dump>` command.
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
@ -649,20 +665,20 @@ allow for smooth restarts. None of the :doc:`fix_modify <fix_modify>`
|
|||||||
options are relevant to this fix.
|
options are relevant to this fix.
|
||||||
|
|
||||||
This fix computes one statistic for each *react* argument that it
|
This fix computes one statistic for each *react* argument that it
|
||||||
stores in a global vector, of length 'number of react arguments', that
|
stores in a global vector, of length (number of react arguments), that
|
||||||
can be accessed by various :doc:`output commands <Howto_output>`. The
|
can be accessed by various :doc:`output commands <Howto_output>`. The
|
||||||
vector values calculated by this fix are "intensive".
|
vector values calculated by this fix are "intensive".
|
||||||
|
|
||||||
These is 1 quantity for each react argument:
|
There is one quantity in the global vector for each *react* argument:
|
||||||
|
|
||||||
* (1) cumulative # of reactions occurred
|
(1) cumulative number of reactions that occurred
|
||||||
|
|
||||||
No parameter of this fix can be used with the *start/stop* keywords
|
No parameter of this fix can be used with the *start/stop* keywords
|
||||||
of the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
|
of the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
|
||||||
|
|
||||||
When fix bond/react is 'unfixed', all internally-created groups are
|
When fix bond/react is ":doc:`unfixed <unfix>`", all internally-created
|
||||||
deleted. Therefore, fix bond/react can only be unfixed after unfixing
|
groups are deleted. Therefore, fix bond/react can only be unfixed after
|
||||||
all other fixes that use any group created by fix bond/react.
|
unfixing all other fixes that use any group created by fix bond/react.
|
||||||
|
|
||||||
Restrictions
|
Restrictions
|
||||||
""""""""""""
|
""""""""""""
|
||||||
@ -683,7 +699,7 @@ Default
|
|||||||
"""""""
|
"""""""
|
||||||
|
|
||||||
The option defaults are stabilization = no, prob = 1.0, stabilize_steps = 60,
|
The option defaults are stabilization = no, prob = 1.0, stabilize_steps = 60,
|
||||||
reset_mol_ids = yes, custom_charges = no, molecule = off, modify_create = no
|
reset_mol_ids = yes, custom_charges = no, molecule = off, modify_create = *fit all*
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ fix brownian/asphere command
|
|||||||
Syntax
|
Syntax
|
||||||
""""""
|
""""""
|
||||||
|
|
||||||
.. parsed-literal::
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
fix ID group-ID style_name temp seed keyword args
|
fix ID group-ID style_name temp seed keyword args
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ Syntax
|
|||||||
*gt* = magnitude of the (isotropic) translational friction tensor
|
*gt* = magnitude of the (isotropic) translational friction tensor
|
||||||
*rotation_temp* values = *T* for *brownian/sphere* and *brownian/asphere*
|
*rotation_temp* values = *T* for *brownian/sphere* and *brownian/asphere*
|
||||||
*T* = rotation temperature, which can be different then *temp* when out of equilibrium
|
*T* = rotation temperature, which can be different then *temp* when out of equilibrium
|
||||||
*planar_rotation* values = None (constrains rotational diffusion to be in xy plane if in 3D)
|
*planar_rotation* values = none (constrains rotational diffusion to be in xy plane if in 3D)
|
||||||
|
|
||||||
Examples
|
Examples
|
||||||
""""""""
|
""""""""
|
||||||
@ -71,9 +71,10 @@ positions is
|
|||||||
|
|
||||||
.. math::
|
.. math::
|
||||||
|
|
||||||
d\mathbf{r} = \mathbf{\gamma}_t^{-1}\mathbf{F}dt+\sqrt{2k_BT}\mathbf{\gamma}_t^{-1/2}d\mathbf{W}_t,
|
d\mathbf{r} = \boldsymbol{\gamma}_t^{-1}\mathbf{F}dt
|
||||||
|
+ \sqrt{2k_B T}\boldsymbol{\gamma}_t^{-1/2}d\mathbf{W}_t,
|
||||||
|
|
||||||
in the lab-frame (i.e. :math:`\mathbf{\gamma}_t` is not diagonal, but
|
in the lab-frame (i.e., :math:`\boldsymbol{\gamma}_t` is not diagonal, but
|
||||||
only depends on orientation and so the noise is still additive).
|
only depends on orientation and so the noise is still additive).
|
||||||
|
|
||||||
The rotational motion for the spherical and ellipsoidal particles is not
|
The rotational motion for the spherical and ellipsoidal particles is not
|
||||||
@ -92,15 +93,15 @@ updated. This style therefore requires the hybrid atom style
|
|||||||
|
|
||||||
.. math::
|
.. math::
|
||||||
|
|
||||||
\mathbf{\mu}(t+dt) = \frac{\mathbf{\mu}(t) + \mathbf{\omega} \times \mathbf{\mu}dt
|
\boldsymbol{\mu}(t+dt) = \frac{\boldsymbol{\mu}(t) + \boldsymbol{\omega} \times \boldsymbol{\mu}dt
|
||||||
}{|\mathbf{\mu}(t) + \mathbf{\omega} \times \mathbf{\mu}|}
|
}{|\boldsymbol{\mu}(t) + \boldsymbol{\omega} \times \boldsymbol{\mu}|}
|
||||||
|
|
||||||
which correctly reproduces a Boltzmann distribution of orientations and
|
which correctly reproduces a Boltzmann distribution of orientations and
|
||||||
rotational diffusion moments (see :ref:`(Ilie) <Ilie1>`) when
|
rotational diffusion moments (see :ref:`(Ilie) <Ilie1>`) when
|
||||||
|
|
||||||
.. math::
|
.. math::
|
||||||
|
|
||||||
\mathbf{\omega} = \frac{\mathbf{T}}{\gamma_r} + \sqrt{\frac{2 k_B T_{rot}}{\gamma_r}\frac{d\mathbf{W}}{dt}},
|
\boldsymbol{\omega} = \frac{\mathbf{T}}{\gamma_r} + \sqrt{\frac{2 k_B T_{rot}}{\gamma_r}\frac{d\mathbf{W}}{dt}},
|
||||||
|
|
||||||
with :math:`d\mathbf{W}` being a random number with zero mean and variance :math:`dt`
|
with :math:`d\mathbf{W}` being a random number with zero mean and variance :math:`dt`
|
||||||
and :math:`T_{rot}` is *rotation_temp*.
|
and :math:`T_{rot}` is *rotation_temp*.
|
||||||
@ -114,19 +115,20 @@ the quaternion
|
|||||||
|
|
||||||
.. math::
|
.. math::
|
||||||
|
|
||||||
\mathbf{q}(t+dt) = \frac{\mathbf{q}(t) + d\mathbf{q}}{|\mathbf{q}(t) + d\mathbf{q}|}
|
\mathbf{q}(t+dt) = \frac{\mathbf{q}(t) + d\mathbf{q}}{\lVert\mathbf{q}(t) + d\mathbf{q}\rVert}
|
||||||
|
|
||||||
which correctly reproduces a Boltzmann distribution of orientations and rotational
|
which correctly reproduces a Boltzmann distribution of orientations and rotational
|
||||||
diffusion moments (see :ref:`(Ilie) <Ilie1>`) when the quaternion step given by
|
diffusion moments [see :ref:`(Ilie) <Ilie1>`] when the quaternion step is given by
|
||||||
|
|
||||||
.. math::
|
.. math::
|
||||||
|
|
||||||
d\mathbf{q} = \mathbf{\Psi}\mathbf{\omega}dt
|
d\mathbf{q} = \boldsymbol{\Psi}\boldsymbol{\omega}dt
|
||||||
|
|
||||||
where :math:`\mathbf{Psi}` has rows :math:`(-q_1,-q_2,-q_3)`, :math:`(q_0,-q_3,q_2)`,
|
where :math:`\boldsymbol{\Psi}` has rows :math:`(-q_1,-q_2,-q_3)`,
|
||||||
:math:`(q_3,q_0,-q_1)`, and :math:`(-q_2,q_1,q_0)`. :math:`\mathbf{\omega}` is
|
:math:`(q_0,-q_3,q_2)`, :math:`(q_3,q_0,-q_1)`, and :math:`(-q_2,q_1,q_0)`.
|
||||||
evaluated in the body frame of reference where the friction tensor is diagonal.
|
:math:`\boldsymbol{\omega}` is evaluated in the body frame of reference where the
|
||||||
See :ref:`(Delong) <Delong1>` for more details of a similar algorithm.
|
friction tensor is diagonal. See :ref:`(Delong) <Delong1>` for more details of
|
||||||
|
a similar algorithm.
|
||||||
|
|
||||||
|
|
||||||
---------
|
---------
|
||||||
@ -136,11 +138,11 @@ See :ref:`(Delong) <Delong1>` for more details of a similar algorithm.
|
|||||||
This integrator does not by default assume a relationship between the
|
This integrator does not by default assume a relationship between the
|
||||||
rotational and translational friction tensors, though such a
|
rotational and translational friction tensors, though such a
|
||||||
relationship should exist in the case of no-slip boundary conditions
|
relationship should exist in the case of no-slip boundary conditions
|
||||||
between the particles and the surrounding (implicit) solvent. E.g. in
|
between the particles and the surrounding (implicit) solvent. For example,
|
||||||
the case of spherical particles, the condition
|
in the case of spherical particles, the condition
|
||||||
:math:`\gamma_t=3\gamma_r/\sigma^2` must be explicitly accounted for
|
:math:`\gamma_t=3\gamma_r/\sigma^2` must be explicitly accounted for
|
||||||
by setting *gamma_t* to 3x and *gamma_r* to x (where :math:`\sigma`
|
by setting *gamma_t* to 3x and *gamma_r* to x (where :math:`\sigma`
|
||||||
is the spherical diameter). A similar (though more complex)
|
is the sphere's diameter). A similar (though more complex)
|
||||||
relationship holds for ellipsoids and rod-like particles. The
|
relationship holds for ellipsoids and rod-like particles. The
|
||||||
translational diffusion and rotational diffusion are given by
|
translational diffusion and rotational diffusion are given by
|
||||||
*temp/gamma_t* and *rotation_temp/gamma_r*.
|
*temp/gamma_t* and *rotation_temp/gamma_r*.
|
||||||
@ -150,7 +152,7 @@ See :ref:`(Delong) <Delong1>` for more details of a similar algorithm.
|
|||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
Temperature computation using the :doc:`compute temp <compute_temp>`
|
Temperature computation using the :doc:`compute temp <compute_temp>`
|
||||||
will not correctly compute temperature of these overdamped dynamics
|
will not correctly compute the temperature of these overdamped dynamics
|
||||||
since we are explicitly neglecting inertial effects. Furthermore,
|
since we are explicitly neglecting inertial effects. Furthermore,
|
||||||
this time integrator does not add the stochastic terms or viscous
|
this time integrator does not add the stochastic terms or viscous
|
||||||
terms to the force and/or torques. Rather, they are just added in to
|
terms to the force and/or torques. Rather, they are just added in to
|
||||||
@ -165,7 +167,7 @@ is generated from a uniform distribution (see
|
|||||||
of noise generation as used in :doc:`fix_langevin <fix_langevin>`.
|
of noise generation as used in :doc:`fix_langevin <fix_langevin>`.
|
||||||
|
|
||||||
If the *rng* keyword is used with the *gaussian* value, then the noise
|
If the *rng* keyword is used with the *gaussian* value, then the noise
|
||||||
is generated from a gaussian distribution. Typically this added
|
is generated from a Gaussian distribution. Typically this added
|
||||||
complexity is unnecessary, and one should be fine using the *uniform*
|
complexity is unnecessary, and one should be fine using the *uniform*
|
||||||
value for reasons argued in :ref:`(Dunweg) <Dunweg7>`.
|
value for reasons argued in :ref:`(Dunweg) <Dunweg7>`.
|
||||||
|
|
||||||
@ -184,8 +186,8 @@ The *gamma_r_eigen*, and *gamma_t_eigen* keywords are the eigenvalues of
|
|||||||
the rotational and viscous damping tensors (having the same units as
|
the rotational and viscous damping tensors (having the same units as
|
||||||
their isotropic counterparts). Required for (and only compatible with)
|
their isotropic counterparts). Required for (and only compatible with)
|
||||||
*brownian/asphere*. For a 2D system, the first two values of
|
*brownian/asphere*. For a 2D system, the first two values of
|
||||||
*gamma_r_eigen* must be inf (only rotation in xy plane), and the third
|
*gamma_r_eigen* must be *inf* (only rotation in *x*\ --\ *y* plane), and the third
|
||||||
value of *gamma_t_eigen* must be inf (only diffusion in xy plane).
|
value of *gamma_t_eigen* must be *inf* (only diffusion in the *x*\ --\ *y* plane).
|
||||||
|
|
||||||
If the *dipole* keyword is used, then the dipole moments of the particles
|
If the *dipole* keyword is used, then the dipole moments of the particles
|
||||||
are updated as described above. Only compatible with *brownian/asphere*
|
are updated as described above. Only compatible with *brownian/asphere*
|
||||||
@ -196,13 +198,13 @@ will be occur at this prescribed temperature instead of *temp*. Only
|
|||||||
compatible with *brownian/sphere* and *brownian/asphere*.
|
compatible with *brownian/sphere* and *brownian/asphere*.
|
||||||
|
|
||||||
If the *planar_rotation* keyword is used, then rotation is constrained
|
If the *planar_rotation* keyword is used, then rotation is constrained
|
||||||
to the xy plane in a 3D simulation. Only compatible with
|
to the *x*\ -- *y* plane in a 3D simulation. Only compatible with
|
||||||
*brownian/sphere* and *brownian/asphere* in 3D.
|
*brownian/sphere* and *brownian/asphere* in 3D.
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
For style *brownian/asphere*, the components *gamma_t_eigen* =(x,x,x) and
|
For style *brownian/asphere*, the components *gamma_t_eigen* = (x,x,x) and
|
||||||
*gamma_r_eigen* = (y,y,y), the dynamics will replicate those of the
|
*gamma_r_eigen* = (y,y,y), the dynamics will replicate those of the
|
||||||
*brownian/sphere* style with *gamma_t* = x and *gamma_r* = y.
|
*brownian/sphere* style with *gamma_t* = x and *gamma_r* = y.
|
||||||
|
|
||||||
@ -215,7 +217,6 @@ No information about this fix is written to :doc:`binary restart files
|
|||||||
<restart>`. No global or per-atom quantities are stored by this fix for
|
<restart>`. No global or per-atom quantities are stored by this fix for
|
||||||
access by various :doc:`output commands <Howto_output>`.
|
access by various :doc:`output commands <Howto_output>`.
|
||||||
|
|
||||||
|
|
||||||
No parameter of this fix can be used with the *start/stop* keywords of
|
No parameter of this fix can be used with the *start/stop* keywords of
|
||||||
the :doc:`run <run>` command. This fix is not invoked during
|
the :doc:`run <run>` command. This fix is not invoked during
|
||||||
:doc:`energy minimization <minimize>`.
|
:doc:`energy minimization <minimize>`.
|
||||||
|
|||||||
@ -13,7 +13,7 @@ Syntax
|
|||||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||||
* colvars = style name of this fix command
|
* colvars = style name of this fix command
|
||||||
* configfile = the configuration file for the colvars module
|
* configfile = the configuration file for the colvars module
|
||||||
* keyword = *input* or *output* or *seed* or *tstat*
|
* keyword = *input* or *output* or *seed* or *unwrap* or *tstat*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ Syntax
|
|||||||
* M = insert a single atom or molecule every M steps
|
* M = insert a single atom or molecule every M steps
|
||||||
* seed = random # seed (positive integer)
|
* seed = random # seed (positive integer)
|
||||||
* one or more keyword/value pairs may be appended to args
|
* one or more keyword/value pairs may be appended to args
|
||||||
* keyword = *region* or *id* or *global* or *local* or *near* or *gaussian* or *attempt* or *rate* or *vx* or *vy* or *vz* or *mol* or *rigid* or *shake* or *units*
|
* keyword = *region* or *id* or *global* or *local* or *near* or *gaussian* or *attempt* or *rate* or *vx* or *vy* or *vz* or *target* or *mol* or *molfrac* or *rigid* or *shake* or *orient* or *units*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@ Syntax
|
|||||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||||
* imd = style name of this fix command
|
* imd = style name of this fix command
|
||||||
* port = port number on which the fix listens for an IMD client
|
* port = port number on which the fix listens for an IMD client
|
||||||
* keyword = *unwrap* or *fscale* or *trate*
|
* keyword = *unwrap* or *fscale* or *trate* or *nowait*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@ Syntax
|
|||||||
* damp = damping parameter (time units)
|
* damp = damping parameter (time units)
|
||||||
* seed = random number seed to use for white noise (positive integer)
|
* seed = random number seed to use for white noise (positive integer)
|
||||||
* zero or more keyword/value pairs may be appended
|
* zero or more keyword/value pairs may be appended
|
||||||
* keyword = *angmom* or *omega* or *scale* or *tally* or *zero*
|
* keyword = *angmom* or *gjf* or *omega* or *scale* or *tally* or *zero*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ Syntax
|
|||||||
* viscosity = the fluid viscosity (units of mass/(time\*length)).
|
* viscosity = the fluid viscosity (units of mass/(time\*length)).
|
||||||
* density = the fluid density.
|
* density = the fluid density.
|
||||||
* zero or more keyword/value pairs may be appended
|
* zero or more keyword/value pairs may be appended
|
||||||
* keyword = *dx* or *dm* or *noise* or *stencil* or *read_restart* or *write_restart* or *zwall_velocity* or *pressurebcx* or *bodyforce* or *D3Q19* or *dumpxdmf* or *dof* or *scaleGamma* or *a0* or *npits* or *wp* or *sw*
|
* keyword = *dx* or *dm* or *noise* or *stencil* or *read_restart* or *write_restart* or *zwall_velocity* or *pressurebcx* or *bodyforce* or *D3Q19* or *dumpxdmf* or *linearInit* or *dof* or *scaleGamma* or *a0* or *npits* or *wp* or *sw*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
@ -36,6 +36,7 @@ Syntax
|
|||||||
N = output the force and torque every N timesteps
|
N = output the force and torque every N timesteps
|
||||||
file = output file name
|
file = output file name
|
||||||
timeI = 1 (use simulation time to index xdmf file), 0 (use output frame number to index xdmf file)
|
timeI = 1 (use simulation time to index xdmf file), 0 (use output frame number to index xdmf file)
|
||||||
|
*linearInit* values = none = initialize density and velocity using linear interpolation (default is uniform density, no velocities)
|
||||||
*dof* values = dof = specify the number of degrees of freedom for temperature calculation
|
*dof* values = dof = specify the number of degrees of freedom for temperature calculation
|
||||||
*scaleGamma* values = type gammaFactor
|
*scaleGamma* values = type gammaFactor
|
||||||
type = atom type (1-N)
|
type = atom type (1-N)
|
||||||
|
|||||||
@ -13,7 +13,7 @@ Syntax
|
|||||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||||
* style_name = *npt/cauchy*
|
* style_name = *npt/cauchy*
|
||||||
* one or more keyword/value pairs may be appended
|
* one or more keyword/value pairs may be appended
|
||||||
* keyword = *temp* or *iso* or *aniso* or *tri* or *x* or *y* or *z* or *xy* or *yz* or *xz* or *couple* or *tchain* or *pchain* or *mtk* or *tloop* or *ploop* or *nreset* or *drag* or *dilate* or *scalexy* or *scaleyz* or *scalexz* or *flip* or *fixedpoint*
|
* keyword = *temp* or *iso* or *aniso* or *tri* or *x* or *y* or *z* or *xy* or *yz* or *xz* or *couple* or *tchain* or *pchain* or *mtk* or *tloop* or *ploop* or *nreset* or *drag* or *dilate* or *scalexy* or *scaleyz* or *scalexz* or *flip* or *alpha* or *continue* or *fixedpoint*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ Syntax
|
|||||||
* type = atom type to assign to inserted particles (offset for molecule insertion)
|
* type = atom type to assign to inserted particles (offset for molecule insertion)
|
||||||
* seed = random # seed (positive integer)
|
* seed = random # seed (positive integer)
|
||||||
* one or more keyword/value pairs may be appended to args
|
* one or more keyword/value pairs may be appended to args
|
||||||
* keyword = *region* or *diam* or *vol* or *rate* or *dens* or *vel* or *mol* or *rigid* or *shake* or *ignore*
|
* keyword = *region* or *diam* or *id* or *vol* or *rate* or *dens* or *vel* or *mol* or *molfrac* or *rigid* or *shake* or *ignore*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -80,7 +80,7 @@ Syntax
|
|||||||
groupID1, groupID2, ... = list of N group IDs
|
groupID1, groupID2, ... = list of N group IDs
|
||||||
|
|
||||||
* zero or more keyword/value pairs may be appended
|
* zero or more keyword/value pairs may be appended
|
||||||
* keyword = *langevin* or *reinit* or *temp* or *iso* or *aniso* or *x* or *y* or *z* or *couple* or *tparam* or *pchain* or *dilate* or *force* or *torque* or *infile*
|
* keyword = *langevin* or *reinit* or *temp* or *iso* or *aniso* or *x* or *y* or *z* or *couple* or *tparam* or *pchain* or *dilate* or *force* or *torque* or *infile* or *gravity*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
@ -115,6 +115,11 @@ Syntax
|
|||||||
xflag,yflag,zflag = off/on if component of center-of-mass torque is active
|
xflag,yflag,zflag = off/on if component of center-of-mass torque is active
|
||||||
*infile* filename
|
*infile* filename
|
||||||
filename = file with per-body values of mass, center-of-mass, moments of inertia
|
filename = file with per-body values of mass, center-of-mass, moments of inertia
|
||||||
|
*gravity* values = gravity-ID
|
||||||
|
gravity-ID = ID of fix gravity command to add gravitational forces
|
||||||
|
|
||||||
|
..
|
||||||
|
FIXME These don't seem to be included in the source code
|
||||||
*mol* value = template-ID
|
*mol* value = template-ID
|
||||||
template-ID = ID of molecule template specified in a separate :doc:`molecule <molecule>` command
|
template-ID = ID of molecule template specified in a separate :doc:`molecule <molecule>` command
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ Syntax
|
|||||||
* pdim = *x* or *y* or *z* = direction of momentum transfer
|
* pdim = *x* or *y* or *z* = direction of momentum transfer
|
||||||
* Nbin = # of layers in pdim direction (must be even number)
|
* Nbin = # of layers in pdim direction (must be even number)
|
||||||
* zero or more keyword/value pairs may be appended
|
* zero or more keyword/value pairs may be appended
|
||||||
* keyword = *swap* or *target*
|
* keyword = *swap* or *vtarget*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -70,7 +70,7 @@ Syntax
|
|||||||
cutoff = distance from wall at which wall-particle interaction is cut off (distance units)
|
cutoff = distance from wall at which wall-particle interaction is cut off (distance units)
|
||||||
|
|
||||||
* zero or more keyword/value pairs may be appended
|
* zero or more keyword/value pairs may be appended
|
||||||
* keyword = *units* or *fld*
|
* keyword = *units* or *fld* or *pbc*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ Syntax
|
|||||||
* wall/piston = style name of this fix command
|
* wall/piston = style name of this fix command
|
||||||
* face = *zlo*
|
* face = *zlo*
|
||||||
* zero or more keyword/value pairs may be appended
|
* zero or more keyword/value pairs may be appended
|
||||||
* keyword = *pos* or *vel* or *ramp* or *units*
|
* keyword = *pos* or *vel* or *ramp* or *temp* or *units*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
@ -32,6 +32,10 @@ Syntax
|
|||||||
*lattice* = the wall position is defined in lattice units
|
*lattice* = the wall position is defined in lattice units
|
||||||
*box* = the wall position is defined in simulation box units
|
*box* = the wall position is defined in simulation box units
|
||||||
|
|
||||||
|
..
|
||||||
|
FIXME: There are several "undocumented" key words for this fix: *rough*,
|
||||||
|
*rampNL1*, *rampNL2*, *rampNL3*, *rampNL4*, and *rampNL5*.
|
||||||
|
|
||||||
Examples
|
Examples
|
||||||
""""""""
|
""""""""
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ Syntax
|
|||||||
kspace_modify keyword value ...
|
kspace_modify keyword value ...
|
||||||
|
|
||||||
* one or more keyword/value pairs may be listed
|
* one or more keyword/value pairs may be listed
|
||||||
* keyword = *collective* or *compute* or *cutoff/adjust* or *diff* or *disp/auto* or *fftbench* or *force/disp/kspace* or *force/disp/real* or *force* or *gewald/disp* or *gewald* or *kmax/ewald* or *mesh* or *minorder* or *mix/disp* or *order/disp* or *order* or *overlap* or *scafacos* or *slab* or *splittol*
|
* keyword = *collective* or *compute* or *cutoff/adjust* or *diff* or *disp/auto* or *fftbench* or *force/disp/kspace* or *force/disp/real* or *force* or *gewald/disp* or *gewald* or *kmax/ewald* or *mesh* or *minorder* or *mix/disp* or *order/disp* or *order* or *overlap* or *scafacos* or *slab* or *splittol* or *wire*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ mdi command
|
|||||||
Syntax
|
Syntax
|
||||||
""""""
|
""""""
|
||||||
|
|
||||||
.. parsed-literal::
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
mdi option args
|
mdi option args
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ Syntax
|
|||||||
*elements* args = N_1 N_2 ... N_ntypes
|
*elements* args = N_1 N_2 ... N_ntypes
|
||||||
N_1,N_2,...N_ntypes = atomic number for each of ntypes LAMMPS atom types
|
N_1,N_2,...N_ntypes = atomic number for each of ntypes LAMMPS atom types
|
||||||
*plugin* args = name keyword value keyword value ...
|
*plugin* args = name keyword value keyword value ...
|
||||||
name = name of plugin library, e.g. lammps means a liblammps.so library will be loaded
|
name = name of plugin library (e.g., *lammps* means a liblammps.so library will be loaded)
|
||||||
keyword/value pairs in any order, some are required, some are optional
|
keyword/value pairs in any order, some are required, some are optional
|
||||||
keywords = *mdi* or *infile* or *extra* or *command*
|
keywords = *mdi* or *infile* or *extra* or *command*
|
||||||
*mdi* value = args passed to MDI for driver to operate with plugins (required)
|
*mdi* value = args passed to MDI for driver to operate with plugins (required)
|
||||||
@ -173,8 +173,8 @@ commands, which are described further below.
|
|||||||
atom type values are consistent in both codes, then the >TYPES
|
atom type values are consistent in both codes, then the >TYPES
|
||||||
command can be used. If not, the optional *elements* keyword can
|
command can be used. If not, the optional *elements* keyword can
|
||||||
be used to specify what element each LAMMPS atom type corresponds
|
be used to specify what element each LAMMPS atom type corresponds
|
||||||
to. This is specified by the atomic number of the element, e.g. 13
|
to. This is specified by the atomic number of the element (e.g., 13
|
||||||
for Al. An atomic number must be specified for each of the ntypes
|
for Al). An atomic number must be specified for each of the ntypes
|
||||||
LAMMPS atom types. Ntypes is typically specified via the
|
LAMMPS atom types. Ntypes is typically specified via the
|
||||||
create_box command or in the data file read by the read_data
|
create_box command or in the data file read by the read_data
|
||||||
command. In this has been done, the MDI driver can send an
|
command. In this has been done, the MDI driver can send an
|
||||||
@ -325,15 +325,15 @@ able to initiate and terminate the connection to the engine code.
|
|||||||
|
|
||||||
The only current MDI driver command in LAMMPS is the :doc:`fix mdi/qm
|
The only current MDI driver command in LAMMPS is the :doc:`fix mdi/qm
|
||||||
<fix_mdi_qm>` command. If it is only used once in an input script
|
<fix_mdi_qm>` command. If it is only used once in an input script
|
||||||
then it can initiate and terminate the connection. But if it is being
|
then it can initiate and terminate the connection, but if it is being
|
||||||
issued multiple times, e.g. in a loop that issues a :doc:`clear
|
issued multiple times (e.g., in a loop that issues a :doc:`clear
|
||||||
<clear>` command, then it cannot initiate or terminate the connection
|
<clear>` command), then it cannot initiate or terminate the connection
|
||||||
multiple times. Instead, the *mdi connect* and *mdi exit* commands
|
multiple times. Instead, the *mdi connect* and *mdi exit* commands
|
||||||
should be used outside the loop to initiate or terminate the connection.
|
should be used outside the loop to initiate or terminate the connection.
|
||||||
|
|
||||||
See the examples/mdi/in.series.driver script for an example of how
|
See the examples/mdi/in.series.driver script for an example of how
|
||||||
this is done. The LOOP in that script is reading a series of data
|
this is done. The LOOP in that script is reading a series of data
|
||||||
file configurations and passing them to an MDI engine (e.g. quantum
|
file configurations and passing them to an MDI engine (e.g., quantum
|
||||||
code) for energy and force evaluation. A *clear* command inside the
|
code) for energy and force evaluation. A *clear* command inside the
|
||||||
loop wipes out the current system so a new one can be defined. This
|
loop wipes out the current system so a new one can be defined. This
|
||||||
operation also destroys all fixes. So the :doc:`fix mdi/qm
|
operation also destroys all fixes. So the :doc:`fix mdi/qm
|
||||||
@ -356,7 +356,7 @@ LAMMPS and MDI units, which the other codes will also perform in their
|
|||||||
preferred units.
|
preferred units.
|
||||||
|
|
||||||
LAMMPS can also be used as an MDI engine in other unit choices it
|
LAMMPS can also be used as an MDI engine in other unit choices it
|
||||||
supports, e.g. *lj*, but then no unit conversion is performed.
|
supports (e.g., *lj*), but then no unit conversion is performed.
|
||||||
|
|
||||||
Related commands
|
Related commands
|
||||||
""""""""""""""""
|
""""""""""""""""
|
||||||
|
|||||||
@ -16,12 +16,12 @@ Syntax
|
|||||||
|
|
||||||
keyword = *delay* or *every* or *check* or *once* or *cluster* or *include* or *exclude* or *page* or *one* or *binsize* or *collection/type* or *collection/interval*
|
keyword = *delay* or *every* or *check* or *once* or *cluster* or *include* or *exclude* or *page* or *one* or *binsize* or *collection/type* or *collection/interval*
|
||||||
*delay* value = N
|
*delay* value = N
|
||||||
N = delay building until this many steps since last build
|
N = delay building neighbor lists until this many steps since last build
|
||||||
*every* value = M
|
*every* value = M
|
||||||
M = build neighbor list every this many steps
|
M = consider building neighbor lists every this many steps
|
||||||
*check* value = *yes* or *no*
|
*check* value = *yes* or *no*
|
||||||
*yes* = only build if some atom has moved half the skin distance or more
|
*yes* = only build if at least one atom has moved half the skin distance or more
|
||||||
*no* = always build on 1st step that *every* and *delay* are satisfied
|
*no* = always build on 1st step where *every* and *delay* are conditions are satisfied
|
||||||
*once* value = *yes* or *no*
|
*once* value = *yes* or *no*
|
||||||
*yes* = only build neighbor list once at start of run and never rebuild
|
*yes* = only build neighbor list once at start of run and never rebuild
|
||||||
*no* = rebuild neighbor list according to other settings
|
*no* = rebuild neighbor list according to other settings
|
||||||
@ -71,30 +71,53 @@ Description
|
|||||||
"""""""""""
|
"""""""""""
|
||||||
|
|
||||||
This command sets parameters that affect the building and use of
|
This command sets parameters that affect the building and use of
|
||||||
pairwise neighbor lists. Depending on what pair interactions and
|
pairwise neighbor lists. Depending on what pair interactions and other
|
||||||
other commands are defined, a simulation may require one or more
|
commands are defined, a simulation may require one or more neighbor
|
||||||
neighbor lists.
|
lists.
|
||||||
|
|
||||||
The *every*, *delay*, *check*, and *once* options affect how often
|
The *every*, *delay*, *check*, and *once* options affect how often lists
|
||||||
lists are built as a simulation runs. The *delay* setting means never
|
are built as a simulation runs. The *delay* setting means never build
|
||||||
build new lists until at least N steps after the previous build. The
|
new lists until at least N steps after the previous build. The *every*
|
||||||
*every* setting means build lists every M steps (after the delay has
|
setting means attempt to build lists every M steps (after the delay has
|
||||||
passed). If the *check* setting is *no*, the lists are built on the
|
passed). If the *check* setting is *no*, the lists are built on the
|
||||||
first step that satisfies the *delay* and *every* settings. If the
|
first step that satisfies the *delay* and *every* settings. If the
|
||||||
*check* setting is *yes*, then the *every* and *delay* settings
|
*check* setting is *yes*, then the *every* and *delay* settings
|
||||||
determine when a build may possibly be performed, but an actual build
|
determine when a build may possibly be performed, but an actual build
|
||||||
only occurs if some atom has moved more than half the skin distance
|
only occurs if at least one atom has moved more than half the neighbor
|
||||||
(specified in the :doc:`neighbor <neighbor>` command) since the last
|
skin distance (specified in the :doc:`neighbor <neighbor>` command)
|
||||||
build.
|
since the last neighbor list build.
|
||||||
|
|
||||||
If the *once* setting is yes, then the neighbor list is only built
|
.. admonition:: Impact of neighbor list settings
|
||||||
once at the beginning of each run, and never rebuilt, except on steps
|
:class: note
|
||||||
when a restart file is written, or steps when a fix forces a rebuild
|
|
||||||
to occur (e.g. fixes that create or delete atoms, such as :doc:`fix deposit <fix_deposit>` or :doc:`fix evaporate <fix_evaporate>`).
|
The choice of neighbor list settings can have a significant impact on
|
||||||
This setting should only be made if you are certain atoms will not
|
the (parallel) performance of LAMMPS and the correctness of the
|
||||||
move far enough that the neighbor list should be rebuilt, e.g. running
|
simulation results. Since building the neighbor lists is time
|
||||||
a simulation of a cold crystal. Note that it is not that expensive to
|
consuming, doing it less frequently can speed up a calculation. If
|
||||||
check if neighbor lists should be rebuilt.
|
the lists are rebuilt too infrequently, however, interacting pairs
|
||||||
|
may be missing and thus the resulting pairwise interactions
|
||||||
|
incorrect. The optimal settings depend on many factors like the
|
||||||
|
properties of the simulated system (density, geometry, topology,
|
||||||
|
temperature, pressure), the force field parameters and settings, the
|
||||||
|
size of the timestep, neighbor list skin distance and more. The
|
||||||
|
default settings are chosen to be very conservative to guarantee
|
||||||
|
correctness of the simulation. They depend on the *check* flag
|
||||||
|
heuristics to reduce the number of neighbor list rebuilds at a minor
|
||||||
|
expense for executing the check. Determining the correctness of a
|
||||||
|
specific choice of neighbor list settings is complicated by the fact
|
||||||
|
that a neighbor list rebuild changes the order in which pairwise
|
||||||
|
interactions are computed and thus
|
||||||
|
- due to the limitations of floating-point math - the trajectory.
|
||||||
|
|
||||||
|
If the *once* setting is yes, then the neighbor list is only built once
|
||||||
|
at the beginning of each run, and never rebuilt, except on steps when a
|
||||||
|
restart file is written, or steps when a fix forces a rebuild to occur
|
||||||
|
(e.g. fixes that create or delete atoms, such as :doc:`fix deposit
|
||||||
|
<fix_deposit>` or :doc:`fix evaporate <fix_evaporate>`). This setting
|
||||||
|
should only be made if you are certain atoms will not move far enough
|
||||||
|
that the neighbor list should be rebuilt, e.g. running a simulation of a
|
||||||
|
cold crystal. Note that it is not that expensive to check if neighbor
|
||||||
|
lists should be rebuilt.
|
||||||
|
|
||||||
When the rRESPA integrator is used (see the :doc:`run_style <run_style>`
|
When the rRESPA integrator is used (see the :doc:`run_style <run_style>`
|
||||||
command), the *every* and *delay* parameters refer to the longest
|
command), the *every* and *delay* parameters refer to the longest
|
||||||
@ -234,11 +257,11 @@ depend on their atom type.
|
|||||||
Restrictions
|
Restrictions
|
||||||
""""""""""""
|
""""""""""""
|
||||||
|
|
||||||
If the "delay" setting is non-zero, then it must be a multiple of the
|
If the *delay* setting is non-zero, then it must be a multiple of the
|
||||||
"every" setting.
|
*every* setting.
|
||||||
|
|
||||||
The molecule/intra and molecule/inter exclude options can only be used
|
The *molecule/intra* and *molecule/inter* exclusion options can only
|
||||||
with atom styles that define molecule IDs.
|
be used with atom styles that define molecule IDs.
|
||||||
|
|
||||||
The value of the *page* setting must be at least 10x larger than the
|
The value of the *page* setting must be at least 10x larger than the
|
||||||
*one* setting. This insures neighbor pages are not mostly empty
|
*one* setting. This insures neighbor pages are not mostly empty
|
||||||
@ -252,6 +275,6 @@ Related commands
|
|||||||
Default
|
Default
|
||||||
"""""""
|
"""""""
|
||||||
|
|
||||||
The option defaults are delay = 10, every = 1, check = yes, once = no,
|
The option defaults are delay = 0, every = 1, check = yes, once = no,
|
||||||
cluster = no, include = all (same as no include option defined),
|
cluster = no, include = all (same as no include option defined),
|
||||||
exclude = none, page = 100000, one = 2000, and binsize = 0.0.
|
exclude = none, page = 100000, one = 2000, and binsize = 0.0.
|
||||||
|
|||||||
@ -156,7 +156,7 @@ settings.
|
|||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
.. versionadded:: TBD
|
.. versionadded:: 3Nov2022
|
||||||
|
|
||||||
The *amoeba* and *hippo* pair styles support extraction of two per-atom
|
The *amoeba* and *hippo* pair styles support extraction of two per-atom
|
||||||
quantities by the :doc:`fix pair <fix_pair>` command. This allows the
|
quantities by the :doc:`fix pair <fix_pair>` command. This allows the
|
||||||
|
|||||||
@ -58,22 +58,26 @@ Examples
|
|||||||
|
|
||||||
.. code-block:: LAMMPS
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
pair_style lj/cut/dipole/cut 10.0
|
pair_style lj/cut/dipole/cut 2.5 5.0
|
||||||
pair_coeff * * 1.0 1.0
|
pair_coeff * * 1.0 1.0
|
||||||
pair_coeff 2 3 1.0 1.0 2.5 4.0
|
pair_coeff 2 3 0.8 1.0 2.5 4.0
|
||||||
|
|
||||||
pair_style lj/sf/dipole/sf 9.0
|
pair_style lj/sf/dipole/sf 9.0
|
||||||
pair_coeff * * 1.0 1.0
|
pair_coeff * * 1.0 1.0
|
||||||
pair_coeff 2 3 1.0 1.0 2.5 4.0 scale 0.5
|
pair_coeff 2 3 1.0 1.0 2.5 4.0 scale 0.5
|
||||||
pair_coeff 2 3 1.0 1.0 2.5 4.0
|
pair_coeff 2 3 0.8 1.0 2.5 4.0
|
||||||
|
|
||||||
pair_style lj/cut/dipole/long 10.0
|
pair_style lj/cut/dipole/long 2.5 3.5
|
||||||
pair_coeff * * 1.0 1.0
|
pair_coeff * * 1.0 1.0
|
||||||
pair_coeff 2 3 1.0 1.0 2.5 4.0
|
pair_coeff 2 3 0.8 1.0 3.0
|
||||||
|
|
||||||
pair_style lj/long/dipole/long long long 3.5 10.0
|
pair_style lj/long/dipole/long long long 3.5
|
||||||
pair_coeff * * 1.0 1.0
|
pair_coeff * * 1.0 1.0
|
||||||
pair_coeff 2 3 1.0 1.0 2.5 4.0
|
pair_coeff 2 3 0.8 1.0
|
||||||
|
|
||||||
|
pair_style lj/long/dipole/long cut long 2.5 3.5
|
||||||
|
pair_coeff * * 1.0 1.0
|
||||||
|
pair_coeff 2 3 0.8 1.0 3.0
|
||||||
|
|
||||||
Description
|
Description
|
||||||
"""""""""""
|
"""""""""""
|
||||||
@ -254,23 +258,28 @@ long-range LJ interactions, the :doc:`kspace_style ewald/disp
|
|||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
The following coefficients must be defined for each pair of atoms
|
The following coefficients must be defined for each pair of atoms types
|
||||||
types via the :doc:`pair_coeff <pair_coeff>` command as in the examples
|
via the :doc:`pair_coeff <pair_coeff>` command as in the examples above,
|
||||||
above, or in the data file or restart files read by the
|
or in the data file or restart files read by the :doc:`read_data
|
||||||
:doc:`read_data <read_data>` or :doc:`read_restart <read_restart>`
|
<read_data>` or :doc:`read_restart <read_restart>` commands, or by
|
||||||
commands, or by mixing as described below:
|
mixing as described below:
|
||||||
|
|
||||||
* :math:`\epsilon` (energy units)
|
* :math:`\epsilon` (energy units)
|
||||||
* :math:`\sigma` (distance units)
|
* :math:`\sigma` (distance units)
|
||||||
* cutoff1 (distance units)
|
* cutoff1 (distance units)
|
||||||
* cutoff2 (distance units)
|
* cutoff2 (distance units)
|
||||||
|
|
||||||
The latter 2 coefficients are optional. If not specified, the global
|
The latter 2 coefficients are optional. If not specified, the global LJ
|
||||||
LJ and Coulombic cutoffs specified in the pair_style command are used.
|
and Coulombic cutoffs specified in the pair_style command are used. If
|
||||||
If only one cutoff is specified, it is used as the cutoff for both LJ
|
only one cutoff is specified, it is used as the cutoff for both LJ and
|
||||||
and Coulombic interactions for this type pair. If both coefficients
|
Coulombic interactions for this type pair. If both coefficients are
|
||||||
are specified, they are used as the LJ and Coulombic cutoffs for this
|
specified, they are used as the LJ and Coulombic cutoffs for this type
|
||||||
type pair.
|
pair. When using a long-rang Coulomb solver, only a global Coulomb
|
||||||
|
cutoff may be used and only the LJ cutoff may be changed with the
|
||||||
|
:doc:`pair_coeff <pair_coeff>` command. When using the
|
||||||
|
*lj/long/dipole/long* pair style with *long* *long* setting, only a
|
||||||
|
single global cutoff may be provided and no cutoff for the
|
||||||
|
:doc:`pair_coeff <pair_coeff>` command.
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
|||||||
@ -440,7 +440,7 @@ identical to the FS EAM files (see above).
|
|||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
.. versionadded:: TBD
|
.. versionadded:: 3Nov2022
|
||||||
|
|
||||||
The *eam*, *eam/alloy*, *eam/fs*, and *eam/he* pair styles support
|
The *eam*, *eam/alloy*, *eam/fs*, and *eam/he* pair styles support
|
||||||
extraction of two per-atom quantities by the :doc:`fix pair <fix_pair>`
|
extraction of two per-atom quantities by the :doc:`fix pair <fix_pair>`
|
||||||
|
|||||||
@ -97,7 +97,7 @@ on particle *i* due to contact with particle *j* is given by:
|
|||||||
|
|
||||||
Where :math:`\delta_{ij} = R_i + R_j - \|\mathbf{r}_{ij}\|` is the particle
|
Where :math:`\delta_{ij} = R_i + R_j - \|\mathbf{r}_{ij}\|` is the particle
|
||||||
overlap, :math:`R_i, R_j` are the particle radii, :math:`\mathbf{r}_{ij} = \mathbf{r}_i - \mathbf{r}_j` is the vector separating the two
|
overlap, :math:`R_i, R_j` are the particle radii, :math:`\mathbf{r}_{ij} = \mathbf{r}_i - \mathbf{r}_j` is the vector separating the two
|
||||||
particle centers (note the i-j ordering so that :math:`F_{ne}` is
|
particle centers (note the i-j ordering so that :math:`\mathbf{F}_{ne}` is
|
||||||
positive for repulsion), and :math:`\mathbf{n} = \frac{\mathbf{r}_{ij}}{\|\mathbf{r}_{ij}\|}`. Therefore,
|
positive for repulsion), and :math:`\mathbf{n} = \frac{\mathbf{r}_{ij}}{\|\mathbf{r}_{ij}\|}`. Therefore,
|
||||||
for *hooke*, the units of the spring constant :math:`k_n` are
|
for *hooke*, the units of the spring constant :math:`k_n` are
|
||||||
*force*\ /\ *distance*, or equivalently *mass*\ /*time\^2*.
|
*force*\ /\ *distance*, or equivalently *mass*\ /*time\^2*.
|
||||||
|
|||||||
@ -57,7 +57,7 @@ The format of the list file is as follows:
|
|||||||
ID2 = atom ID of second atom
|
ID2 = atom ID of second atom
|
||||||
style = style of interaction
|
style = style of interaction
|
||||||
coeffs = list of coeffs
|
coeffs = list of coeffs
|
||||||
cutoff = cutoff for interaction (optional, except for style *quartic*)
|
cutoff = cutoff for interaction (optional)
|
||||||
|
|
||||||
The cutoff parameter is optional for all but the *quartic* interactions.
|
The cutoff parameter is optional for all but the *quartic* interactions.
|
||||||
If it is not specified, the global cutoff is used.
|
If it is not specified, the global cutoff is used.
|
||||||
@ -71,7 +71,7 @@ Here is an example file:
|
|||||||
15 259 lj126 1.0 1.0 50.0
|
15 259 lj126 1.0 1.0 50.0
|
||||||
15 603 morse 10.0 1.2 2.0 10.0 # and another comment
|
15 603 morse 10.0 1.2 2.0 10.0 # and another comment
|
||||||
18 470 harmonic 50.0 1.2 5.0
|
18 470 harmonic 50.0 1.2 5.0
|
||||||
19 332 quartic 5.0 -1.2 1.2 5.0
|
19 332 quartic 10.0 5.0 -1.2 1.2
|
||||||
|
|
||||||
The style *lj126* computes pairwise interactions with the formula
|
The style *lj126* computes pairwise interactions with the formula
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ The style *harmonic* computes pairwise interactions with the formula
|
|||||||
|
|
||||||
.. math::
|
.. math::
|
||||||
|
|
||||||
E = K (r - r_0)^2
|
E = K (r - r_0)^2 \qquad r < r_c
|
||||||
|
|
||||||
and the coefficients:
|
and the coefficients:
|
||||||
|
|
||||||
@ -113,16 +113,14 @@ The style *quartic* computes pairwise interactions with the formula
|
|||||||
|
|
||||||
.. math::
|
.. math::
|
||||||
|
|
||||||
E = K (r - r_c)^2 (r - r_c -b_1) (r - r_c - b_2) \qquad r < r_c
|
E = K (r - r_0)^2 (r - r_0 -b_1) (r - r_0 - b_2) \qquad r < r_c
|
||||||
|
|
||||||
and the coefficients:
|
and the coefficients:
|
||||||
|
|
||||||
* :math:`K` (energy units)
|
* :math:`K` (energy units)
|
||||||
|
* :math:`r_0` (distance units)
|
||||||
* :math:`b_1` (distance units)
|
* :math:`b_1` (distance units)
|
||||||
* :math:`b_2` (distance units)
|
* :math:`b_2` (distance units)
|
||||||
* :math:`r_c` (distance units)
|
|
||||||
|
|
||||||
Note that the per list entry cutoff :math:`r_c` is **required** for *quartic* interactions.
|
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,11 @@
|
|||||||
.. index:: pair_style mliap
|
.. index:: pair_style mliap
|
||||||
|
.. index:: pair_style mliap/kk
|
||||||
|
|
||||||
pair_style mliap command
|
pair_style mliap command
|
||||||
========================
|
========================
|
||||||
|
|
||||||
|
Accelerator Variants: *mliap/kk*
|
||||||
|
|
||||||
Syntax
|
Syntax
|
||||||
""""""
|
""""""
|
||||||
|
|
||||||
@ -177,7 +180,7 @@ to specify the path for these *model* and *descriptor* files.
|
|||||||
larger systems since their size depends on the total number of
|
larger systems since their size depends on the total number of
|
||||||
neighbors per MPI process.
|
neighbors per MPI process.
|
||||||
|
|
||||||
.. versionadded:: TBD
|
.. versionadded:: 3Nov2022
|
||||||
|
|
||||||
The *unified* keyword is followed by an argument specifying the
|
The *unified* keyword is followed by an argument specifying the
|
||||||
filename containing the serialized unified Python object and the "ghostneigh" toggle
|
filename containing the serialized unified Python object and the "ghostneigh" toggle
|
||||||
@ -207,6 +210,12 @@ cutoff manually, such as in the following example.
|
|||||||
on the active LAMMPS object before the pair style is defined. This call locates
|
on the active LAMMPS object before the pair style is defined. This call locates
|
||||||
and loads the mliap-specific python module that is built into LAMMPS.
|
and loads the mliap-specific python module that is built into LAMMPS.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. include:: accel_styles.rst
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
Mixing, shift, table, tail correction, restart, rRESPA info
|
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
|||||||
@ -112,8 +112,7 @@ requests to compute `gamma`, as shown in example below:
|
|||||||
compute max_pace_gamma all reduce max f_pace_gamma
|
compute max_pace_gamma all reduce max f_pace_gamma
|
||||||
variable dump_skip equal "c_max_pace_gamma < 5"
|
variable dump_skip equal "c_max_pace_gamma < 5"
|
||||||
|
|
||||||
|
dump pace_dump all custom 20 extrapolative_structures.dump id type x y z f_pace_gamma
|
||||||
dump pace_dump all custom 20 extrapolative_structures.dump id x y z f_pace_gamma
|
|
||||||
dump_modify pace_dump skip v_dump_skip
|
dump_modify pace_dump skip v_dump_skip
|
||||||
|
|
||||||
variable max_pace_gamma equal c_max_pace_gamma
|
variable max_pace_gamma equal c_max_pace_gamma
|
||||||
|
|||||||
@ -374,6 +374,7 @@ accelerated styles exist.
|
|||||||
* :doc:`vashishta <pair_vashishta>` - Vashishta 2-body and 3-body potential
|
* :doc:`vashishta <pair_vashishta>` - Vashishta 2-body and 3-body potential
|
||||||
* :doc:`vashishta/table <pair_vashishta>` -
|
* :doc:`vashishta/table <pair_vashishta>` -
|
||||||
* :doc:`wf/cut <pair_wf_cut>` - Wang-Frenkel Potential for short-ranged interactions
|
* :doc:`wf/cut <pair_wf_cut>` - Wang-Frenkel Potential for short-ranged interactions
|
||||||
|
* :doc:`ylz <pair_ylz>` - Yuan-Li-Zhang Potential for anisotropic interactions
|
||||||
* :doc:`yukawa <pair_yukawa>` - Yukawa potential
|
* :doc:`yukawa <pair_yukawa>` - Yukawa potential
|
||||||
* :doc:`yukawa/colloid <pair_yukawa_colloid>` - screened Yukawa potential for finite-size particles
|
* :doc:`yukawa/colloid <pair_yukawa_colloid>` - screened Yukawa potential for finite-size particles
|
||||||
* :doc:`zbl <pair_zbl>` - Ziegler-Biersack-Littmark potential
|
* :doc:`zbl <pair_zbl>` - Ziegler-Biersack-Littmark potential
|
||||||
|
|||||||
177
doc/src/pair_ylz.rst
Normal file
177
doc/src/pair_ylz.rst
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
.. index:: pair_style ylz
|
||||||
|
|
||||||
|
pair_style ylz command
|
||||||
|
===========================
|
||||||
|
|
||||||
|
Syntax
|
||||||
|
""""""
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
pair_style ylz cutoff
|
||||||
|
|
||||||
|
|
||||||
|
* cutoff = global cutoff for interactions (distance units)
|
||||||
|
|
||||||
|
Examples
|
||||||
|
""""""""
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
pair_style ylz 2.6
|
||||||
|
pair_coeff * * 1.0 1.0 4 3 0.0 2.6
|
||||||
|
|
||||||
|
|
||||||
|
Description
|
||||||
|
"""""""""""
|
||||||
|
|
||||||
|
.. versionadded:: 3Nov2022
|
||||||
|
|
||||||
|
The *ylz* (Yuan-Li-Zhang) style computes an anisotropic interaction
|
||||||
|
between pairs of coarse-grained particles considering the relative
|
||||||
|
particle orientations. This potential was originally developed as a
|
||||||
|
particle-based solvent-free model for biological membranes
|
||||||
|
:ref:`(Yuan2010a) <Yuan>`. Unlike :doc:`pair_style gayberne
|
||||||
|
<pair_gayberne>`, whose orientation dependence is strictly derived from
|
||||||
|
the closest distance between two ellipsoidal rigid bodies, the
|
||||||
|
orientation-dependence of this pair style is mathematically defined such
|
||||||
|
that the particles can self-assemble into one-particle-thick fluid
|
||||||
|
membranes. The potential of this pair style is described by:
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
|
||||||
|
U ( \mathbf{r}_{ij}, \mathbf{n}_i, \mathbf{n}_j ) =\left\{\begin{matrix} {u}_R(r)+\left [ 1-\phi (\mathbf{\hat{r}}_{ij}, \mathbf{n}_i, \mathbf{n}_j ) \right ]\epsilon, ~~ r<{r}_{min} \\ {u}_A(r)\phi (\mathbf{\hat{r}}_{ij}, \mathbf{n}_i, \mathbf{n}_j ),~~ {r}_{min}<r<{r}_{c} \\ \end{matrix}\right.\\\\ \phi (\mathbf{\hat{r}}_{ij}, \mathbf{n}_i, \mathbf{n}_j )=1+\left [ \mu (a(\mathbf{\hat{r}}_{ij}, \mathbf{n}_i, \mathbf{n}_j )-1) \right ] \\\\a(\mathbf{\hat{r}}_{ij}, \mathbf{n}_i, \mathbf{n}_j )=(\mathbf{n}_i\times\mathbf{\hat{r}}_{ij} )\cdot (\mathbf{n}_j\times\mathbf{\hat{r}}_{ij} )+{\beta}(\mathbf{n}_i-\mathbf{n}_j)\cdot \mathbf{\hat{r}}_{ij}-\beta^{2}\\\\ {u}_R(r)=\epsilon \left [ \left ( \frac{{r}_{min}}{r} \right )^{4}-2\left ( \frac{{r}_{min}}{r}\right )^{2} \right ] \\\\ {u}_A(r)=-\epsilon\;cos^{2\zeta }\left [ \frac{\pi}{2}\frac{\left ( {r}-{r}_{min} \right )}{\left ( {r}_{c}-{r}_{min} \right )} \right ]\\
|
||||||
|
|
||||||
|
where :math:`\mathbf{r}_{i}` and :math:`\mathbf{r}_{j}` are the center
|
||||||
|
position vectors of particles i and j, respectively,
|
||||||
|
:math:`\mathbf{r}_{ij}=\mathbf{r}_{i}-\mathbf{r}_{j}` is the
|
||||||
|
inter-particle distance vector, :math:`r=\left|\mathbf{r}_{ij} \right|`
|
||||||
|
and :math:`{\hat{\mathbf{r}}}_{ij}=\mathbf{r}_{ij}/r`. The unit vectors
|
||||||
|
:math:`\mathbf{n}_{i}` and :math:`\mathbf{n}_{j}` represent the axes of
|
||||||
|
symmetry of particles i and j, respectively, :math:`u_R` and :math:`u_A`
|
||||||
|
are the repulsive and attractive potentials, :math:`\phi` is an angular
|
||||||
|
function which depends on the relative orientation between pair
|
||||||
|
particles, :math:`\mu` is the parameter related to the bending rigidity
|
||||||
|
of the membrane, :math:`\beta` is the parameter related to the
|
||||||
|
spontaneous curvature, and :math:`\epsilon` is the energy unit,
|
||||||
|
respectively. The :math:`\zeta` controls the slope of the attractive
|
||||||
|
branch and hence the diffusivity of the particles in the in-plane
|
||||||
|
direction of the membrane. :math:`{r}_{c}` is the cutoff radius,
|
||||||
|
:math:`r_{min}` is the distance which minimizes the potential energy
|
||||||
|
:math:`u_{A}(r)` and :math:`r_{min}=2^{1/6}\sigma`, where :math:`\sigma`
|
||||||
|
is the length unit.
|
||||||
|
|
||||||
|
This pair style is suited for solvent-free coarse-grained simulations of
|
||||||
|
biological systems involving lipid bilayer membranes, such as vesicle
|
||||||
|
shape transformations :ref:`(Yuan2010b) <Yuan>`, nanoparticle
|
||||||
|
endocytosis :ref:`(Huang) <Huang>`, modeling of red blood cell membranes
|
||||||
|
:ref:`(Fu) <Fu>`, :ref:`(Appshaw) <Appshaw>`, and modeling of cell
|
||||||
|
elasticity :ref:`(Becton) <Becton>`.
|
||||||
|
|
||||||
|
Use of this pair style requires the NVE, NVT, or NPT fixes with the
|
||||||
|
*asphere* extension (e.g. :doc:`fix nve/asphere <fix_nve_asphere>`) in
|
||||||
|
order to integrate particle rotation. Additionally, :doc:`atom_style
|
||||||
|
ellipsoid <atom_style>` should be used since it defines the rotational
|
||||||
|
state of each particle.
|
||||||
|
|
||||||
|
The following coefficients must be defined for each pair of atoms types
|
||||||
|
via the :doc:`pair_coeff <pair_coeff>` command as in the examples above,
|
||||||
|
or in the data file or restart files read by the :doc:`read_data
|
||||||
|
<read_data>` or :doc:`read_restart <read_restart>` commands, or by
|
||||||
|
mixing as described below:
|
||||||
|
|
||||||
|
* :math:`\epsilon` = well depth (energy units)
|
||||||
|
* :math:`\sigma` = minimum effective particle radii (distance units)
|
||||||
|
* :math:`\zeta` = tune parameter for the slope of the attractive branch
|
||||||
|
* :math:`\mu` = parameter related to bending rigidity
|
||||||
|
* :math:`\beta` = parameter related to the spontaneous curvature
|
||||||
|
* cutoff (distance units)
|
||||||
|
|
||||||
|
The last coefficient is optional. If not specified, the global
|
||||||
|
cutoff specified in the pair_style command is used.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||||
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
For atom type pairs I,J and I != J, the epsilon and sigma coefficients
|
||||||
|
and cutoff distance for this pair style can be mixed. The default mix
|
||||||
|
value is *geometric*\ . See the "pair_modify" command for details.
|
||||||
|
|
||||||
|
The :doc:`pair_modify <pair_modify>` table option is not relevant for
|
||||||
|
this pair style.
|
||||||
|
|
||||||
|
This pair style does not support the :doc:`pair_modify <pair_modify>`
|
||||||
|
tail option for adding long-range tail corrections to energy and
|
||||||
|
pressure.
|
||||||
|
|
||||||
|
This pair style writes its information to :doc:`binary restart files
|
||||||
|
<restart>`, so pair_style and pair_coeff commands do not need to be
|
||||||
|
specified in an input script that reads a restart file.
|
||||||
|
|
||||||
|
This pair 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
|
||||||
|
""""""""""""
|
||||||
|
|
||||||
|
The *ylz* style is part of the ASPHERE package. It is only enabled if
|
||||||
|
LAMMPS was built with that package. See the :doc:`Build package
|
||||||
|
<Build_package>` page for more info.
|
||||||
|
|
||||||
|
This pair style requires that atoms store torque and a quaternion to
|
||||||
|
represent their orientation, as defined by the :doc:`atom_style
|
||||||
|
<atom_style>`. It also requires they store a per-atom :doc:`shape
|
||||||
|
<set>`. The particles cannot store a per-particle diameter. To avoid
|
||||||
|
being mistakenly considered as point particles, the shape parameters ought
|
||||||
|
to be non-spherical, like [1 0.99 0.99]. Unlike the :doc:`resquared
|
||||||
|
<pair_resquared>` pair style for which the shape directly determines the
|
||||||
|
mathematical expressions of the potential, the shape parameters for this
|
||||||
|
pair style is only involved in the computation of the moment of inertia
|
||||||
|
and thus only influences the rotational dynamics of individual
|
||||||
|
particles.
|
||||||
|
|
||||||
|
This pair style requires that **all** atoms are ellipsoids as defined by
|
||||||
|
the :doc:`atom_style ellipsoid <atom_style>` command.
|
||||||
|
|
||||||
|
|
||||||
|
Related commands
|
||||||
|
""""""""""""""""
|
||||||
|
|
||||||
|
:doc:`pair_coeff <pair_coeff>`, :doc:`fix nve/asphere
|
||||||
|
:doc:<fix_nve_asphere>`, `compute temp/asphere <compute_temp_asphere>`,
|
||||||
|
:doc::doc:`pair_style resquared <pair_resquared>`, :doc:`pair_style
|
||||||
|
:doc:gayberne <pair_gayberne>`
|
||||||
|
|
||||||
|
Default
|
||||||
|
"""""""
|
||||||
|
|
||||||
|
none
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. _Yuan:
|
||||||
|
|
||||||
|
**(Yuan2010a)** Yuan, Huang, Li, Lykotrafitis, Zhang, Phys. Rev. E, 82, 011905(2010).
|
||||||
|
|
||||||
|
**(Yuan2010b)** Yuan, Huang, Zhang, Soft. Matter, 6, 4571(2010).
|
||||||
|
|
||||||
|
.. _Huang:
|
||||||
|
|
||||||
|
**(Huang)** Huang, Zhang, Yuan, Gao, Zhang, Nano Lett. 13, 4546(2013).
|
||||||
|
|
||||||
|
.. _Fu:
|
||||||
|
|
||||||
|
**(Fu)** Fu, Peng, Yuan, Kfoury, Young, Comput. Phys. Commun, 210, 193-203(2017).
|
||||||
|
|
||||||
|
.. _Appshaw:
|
||||||
|
|
||||||
|
**(Appshaw)** Appshaw, Seddon, Hanna, Soft. Matter,18, 1747(2022).
|
||||||
|
|
||||||
|
.. _Becton:
|
||||||
|
|
||||||
|
**(Becton)** Becton, Averett, Wang, Biomech. Model. Mechanobiology, 18, 425-433(2019).
|
||||||
@ -18,7 +18,7 @@ Syntax
|
|||||||
* compute-ID = ID of the compute used for event detection
|
* compute-ID = ID of the compute used for event detection
|
||||||
* random_seed = random # seed (positive integer)
|
* random_seed = random # seed (positive integer)
|
||||||
* zero or more keyword/value pairs may be appended
|
* zero or more keyword/value pairs may be appended
|
||||||
* keyword = *min* or *temp* or *vel*
|
* keyword = *min* or *temp* or *vel* or *time*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -18,18 +18,17 @@ Syntax
|
|||||||
|
|
||||||
*grid* arg = gstyle params ...
|
*grid* arg = gstyle params ...
|
||||||
gstyle = *onelevel* or *twolevel* or *numa* or *custom*
|
gstyle = *onelevel* or *twolevel* or *numa* or *custom*
|
||||||
onelevel params = none
|
*onelevel* params = none
|
||||||
twolevel params = Nc Cx Cy Cz
|
*twolevel* params = Nc Cx Cy Cz
|
||||||
Nc = number of cores per node
|
Nc = number of cores per node
|
||||||
Cx,Cy,Cz = # of cores in each dimension of 3d sub-grid assigned to each node
|
Cx,Cy,Cz = # of cores in each dimension of 3d sub-grid assigned to each node
|
||||||
numa params = none
|
*numa* params = none
|
||||||
custom params = infile
|
*custom* params = infile
|
||||||
infile = file containing grid layout
|
infile = file containing grid layout
|
||||||
*map* arg = *cart* or *cart/reorder* or *xyz* or *xzy* or *yxz* or *yzx* or *zxy* or *zyx*
|
*map* arg = *cart* or *cart/reorder* or *xyz* or *xzy* or *yxz* or *yzx* or *zxy* or *zyx*
|
||||||
cart = use MPI_Cart() methods to map processors to 3d grid with reorder = 0
|
cart = use MPI_Cart() methods to map processors to 3d grid with reorder = 0
|
||||||
cart/reorder = use MPI_Cart() methods to map processors to 3d grid with reorder = 1
|
cart/reorder = use MPI_Cart() methods to map processors to 3d grid with reorder = 1
|
||||||
xyz,xzy,yxz,yzx,zxy,zyx = map processors to 3d grid in IJK ordering
|
xyz,xzy,yxz,yzx,zxy,zyx = map processors to 3d grid in IJK ordering
|
||||||
*numa* arg = none
|
|
||||||
*part* args = Psend Precv cstyle
|
*part* args = Psend Precv cstyle
|
||||||
Psend = partition # (1 to Np) which will send its processor layout
|
Psend = partition # (1 to Np) which will send its processor layout
|
||||||
Precv = partition # (1 to Np) which will recv the processor layout
|
Precv = partition # (1 to Np) which will recv the processor layout
|
||||||
|
|||||||
@ -71,8 +71,14 @@ Also see the explanation of the :doc:`-restart command-line switch
|
|||||||
|
|
||||||
This command can be used multiple times to add new atoms and their
|
This command can be used multiple times to add new atoms and their
|
||||||
properties to an existing system by using the *add*, *offset*, and
|
properties to an existing system by using the *add*, *offset*, and
|
||||||
*shift* keywords. See more details below, which includes the use case
|
*shift* keywords. However, it is important to understand that several
|
||||||
for the *extra* keywords.
|
system parameters, like the number of types of different kinds and per
|
||||||
|
atom settings are **locked in** after the first *read_data* command,
|
||||||
|
which means that no type ID (including its offset) may have a larger
|
||||||
|
value when processing additional data files than what is set by the
|
||||||
|
first data file and the corresponding *read_data* command options. See
|
||||||
|
more details on this situation below, which includes the use case for
|
||||||
|
the *extra* keywords.
|
||||||
|
|
||||||
The *group* keyword adds all the atoms in the data file to the
|
The *group* keyword adds all the atoms in the data file to the
|
||||||
specified group-ID. The group will be created if it does not already
|
specified group-ID. The group will be created if it does not already
|
||||||
|
|||||||
@ -101,7 +101,7 @@ Py2 by Pz2, then Px1 must be an integer multiple of Px2, and similarly
|
|||||||
for Py1 a multiple of Py2, and Pz1 a multiple of Pz2.
|
for Py1 a multiple of Py2, and Pz1 a multiple of Pz2.
|
||||||
|
|
||||||
Typically the best way to do this is to let the first partition choose
|
Typically the best way to do this is to let the first partition choose
|
||||||
its onn optimal layout, then require the second partition's layout to
|
its own optimal layout, then require the second partition's layout to
|
||||||
match the integer multiple constraint. See the
|
match the integer multiple constraint. See the
|
||||||
:doc:`processors <processors>` command with its *part* keyword for a way
|
:doc:`processors <processors>` command with its *part* keyword for a way
|
||||||
to control this, e.g.
|
to control this, e.g.
|
||||||
|
|||||||
@ -18,7 +18,7 @@ Syntax
|
|||||||
* tmax = reciprocal of lowest expected pre-exponential factor (time units)
|
* tmax = reciprocal of lowest expected pre-exponential factor (time units)
|
||||||
* compute-ID = ID of the compute used for event detection
|
* compute-ID = ID of the compute used for event detection
|
||||||
* zero or more keyword/value pairs may be appended
|
* zero or more keyword/value pairs may be appended
|
||||||
* keyword = *min* or *neb* or *min_style* or *neb_style* or *neb_log*
|
* keyword = *min* or *neb* or *neb_style* or *neb_step* or *neb_log*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -28,6 +28,7 @@ Syntax
|
|||||||
*format* values = *line* string, *int* string, *float* string, ID string, or *none*
|
*format* values = *line* string, *int* string, *float* string, ID string, or *none*
|
||||||
string = C-style format string
|
string = C-style format string
|
||||||
ID = integer from 1 to N, or integer from -1 to -N, where N = # of quantities being output
|
ID = integer from 1 to N, or integer from -1 to -N, where N = # of quantities being output
|
||||||
|
*or* an integer range such as 2*6 (negative values are not allowed)
|
||||||
*or* a thermo keyword or reference to compute, fix, property or variable.
|
*or* a thermo keyword or reference to compute, fix, property or variable.
|
||||||
*temp* value = compute ID that calculates a temperature
|
*temp* value = compute ID that calculates a temperature
|
||||||
*press* value = compute ID that calculates a pressure
|
*press* value = compute ID that calculates a pressure
|
||||||
@ -65,10 +66,10 @@ atom can be "lost" if it moves across a non-periodic simulation box
|
|||||||
:doc:`boundary <boundary>` or if it moves more than a box length outside
|
:doc:`boundary <boundary>` or if it moves more than a box length outside
|
||||||
the simulation domain (or more than a processor sub-domain length)
|
the simulation domain (or more than a processor sub-domain length)
|
||||||
before reneighboring occurs. The latter case is typically due to bad
|
before reneighboring occurs. The latter case is typically due to bad
|
||||||
dynamics, e.g. too large a timestep or huge forces and velocities. If
|
dynamics (e.g., too large a time step and/or huge forces and velocities). If
|
||||||
the value is *ignore*, LAMMPS does not check for lost atoms. If the
|
the value is *ignore*, LAMMPS does not check for lost atoms. If the
|
||||||
value is *error* or *warn*, LAMMPS checks and either issues an error or
|
value is *error* or *warn*, LAMMPS checks and either issues an error or
|
||||||
warning. The code will exit with an error and continue with a warning.
|
warning. The simulation will exit with an error and continue with a warning.
|
||||||
A warning will only be issued once, the first time an atom is lost.
|
A warning will only be issued once, the first time an atom is lost.
|
||||||
This can be a useful debugging option.
|
This can be a useful debugging option.
|
||||||
|
|
||||||
@ -89,10 +90,10 @@ that should be investigated, but LAMMPS cannot determine for
|
|||||||
certain whether they are an indication of an error.
|
certain whether they are an indication of an error.
|
||||||
|
|
||||||
Some warning messages are printed during a run (or immediately before)
|
Some warning messages are printed during a run (or immediately before)
|
||||||
each time a specific MPI rank encounters the issue, e.g. bonds that are
|
each time a specific MPI rank encounters the issue (e.g., bonds that are
|
||||||
stretched too far or dihedrals in extreme configurations. These number
|
stretched too far or dihedrals in extreme configurations). These number
|
||||||
of these can quickly blow up the size of the log file and screen output.
|
of these can quickly blow up the size of the log file and screen output.
|
||||||
Thus a limit of 100 warning messages is applied by default. The warning
|
Thus, a limit of 100 warning messages is applied by default. The warning
|
||||||
count is applied to the entire input unless reset with a ``thermo_modify
|
count is applied to the entire input unless reset with a ``thermo_modify
|
||||||
warn reset`` command. If there are more warnings than the limit, LAMMPS
|
warn reset`` command. If there are more warnings than the limit, LAMMPS
|
||||||
will print one final warning that it will not print any additional
|
will print one final warning that it will not print any additional
|
||||||
@ -160,8 +161,8 @@ for a column or field of thermodynamic output. The setting for *ID
|
|||||||
string* replaces the default text with the provided string. *ID* can be
|
string* replaces the default text with the provided string. *ID* can be
|
||||||
a positive integer when it represents the column number counting from
|
a positive integer when it represents the column number counting from
|
||||||
the left, a negative integer when it represents the column number from
|
the left, a negative integer when it represents the column number from
|
||||||
the right (i.e. -1 is the last column/keyword), or a thermo keyword (or
|
the right (i.e., :math:`-1` is the last column/keyword), or a thermo keyword
|
||||||
compute, fix, property, or variable reference) and then it replaces the
|
(or compute, fix, property, or variable reference) and then it replaces the
|
||||||
string for that specific thermo keyword.
|
string for that specific thermo keyword.
|
||||||
|
|
||||||
The *colname* keyword can be used multiple times. If multiple *colname*
|
The *colname* keyword can be used multiple times. If multiple *colname*
|
||||||
@ -171,19 +172,22 @@ to their default values.
|
|||||||
|
|
||||||
The *format* keyword can be used to change the default numeric format of
|
The *format* keyword can be used to change the default numeric format of
|
||||||
any of quantities the :doc:`thermo_style <thermo_style>` command
|
any of quantities the :doc:`thermo_style <thermo_style>` command
|
||||||
outputs. All the specified format strings are C-style formats, e.g. as
|
outputs. All the specified format strings are C-style formats (i.e., as
|
||||||
used by the C/C++ printf() command. The *line* keyword takes a single
|
used by the C/C++ printf() command). The *line* keyword takes a single
|
||||||
argument which is the format string for the entire line of thermo
|
argument which is the format string for the entire line of thermo
|
||||||
output, with N fields, which you must enclose in quotes if it is more
|
output, with :math:`N` fields, which you must enclose in quotes if it is more
|
||||||
than one field. The *int* and *float* keywords take a single format
|
than one field. The *int* and *float* keywords take a single format
|
||||||
argument and are applied to all integer or floating-point quantities
|
argument and are applied to all integer or floating-point quantities
|
||||||
output. The setting for *ID string* also takes a single format argument
|
output. The setting for *ID string* also takes a single format argument
|
||||||
which is used for the indexed value in each line. The interpretation is
|
that is used for the indexed value in each line. The interpretation is
|
||||||
the same as for *colname*, i.e. a positive integer is the n-th value
|
the same as for *colname* (i.e., a positive integer is the n-th value
|
||||||
corresponding to the n-th thermo keyword, a negative integer is counting
|
corresponding to the n-th thermo keyword, a negative integer is counting
|
||||||
backwards, and a string matches the entry with the thermo keyword.,
|
backwards, and a string matches the entry with the thermo keyword).
|
||||||
e.g. the fifth column is output in high precision for "format 5 %20.15g"
|
For example, the fifth column is output in high precision for
|
||||||
and the pair energy for "format epair %20.15g".
|
"format 5 %20.15g", and the pair energy for "format epair %20.15g".
|
||||||
|
The *ID* field can be a range, such as "3\*6", "*", "2*", or "\*3";
|
||||||
|
in such cases, all fields in the range (inclusive) are set to the specified
|
||||||
|
format string. Ranges containing negative numbers are not supported.
|
||||||
|
|
||||||
The *format* keyword can be used multiple times. The precedence is
|
The *format* keyword can be used multiple times. The precedence is
|
||||||
that for each value in a line of output, the *ID* format (if specified)
|
that for each value in a line of output, the *ID* format (if specified)
|
||||||
@ -201,8 +205,8 @@ settings, reverting all values to their default format.
|
|||||||
to the corresponding 8-byte form when it is applied to those
|
to the corresponding 8-byte form when it is applied to those
|
||||||
keywords. However, when specifying the *line* option or *format ID
|
keywords. However, when specifying the *line* option or *format ID
|
||||||
string* option for *step* and *natoms*, you should specify a format
|
string* option for *step* and *natoms*, you should specify a format
|
||||||
string appropriate for an 8-byte signed integer, e.g. one with "%ld"
|
string appropriate for an 8-byte signed integer (i.e., one with "%ld"
|
||||||
or "%lld" depending on the platform.
|
or "%lld", depending on the platform).
|
||||||
|
|
||||||
The *temp* keyword is used to determine how thermodynamic temperature is
|
The *temp* keyword is used to determine how thermodynamic temperature is
|
||||||
calculated, which is used by all thermo quantities that require a
|
calculated, which is used by all thermo quantities that require a
|
||||||
|
|||||||
@ -213,6 +213,9 @@ from the list of active variables, and is thus available to be
|
|||||||
re-defined in a subsequent variable command. The *delete* style does
|
re-defined in a subsequent variable command. The *delete* style does
|
||||||
the same thing.
|
the same thing.
|
||||||
|
|
||||||
|
Variables are **not** deleted by the :doc:`clear <clear>` command with
|
||||||
|
the exception of atomfile-style variables.
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
The :doc:`Commands parse <Commands_parse>` page explains how
|
The :doc:`Commands parse <Commands_parse>` page explains how
|
||||||
@ -265,7 +268,7 @@ the first string is assigned to the variable. Each time a
|
|||||||
string is assigned. All processors assign the same string to the
|
string is assigned. All processors assign the same string to the
|
||||||
variable.
|
variable.
|
||||||
|
|
||||||
*Index* style variables with a single string value can also be set by
|
Index-style variables with a single string value can also be set by
|
||||||
using the :doc:`command-line switch -var <Run_options>`.
|
using the :doc:`command-line switch -var <Run_options>`.
|
||||||
|
|
||||||
The *loop* style is identical to the *index* style except that the
|
The *loop* style is identical to the *index* style except that the
|
||||||
@ -285,7 +288,7 @@ be one string for each processor partition or "world". LAMMPS can be
|
|||||||
run with multiple partitions via the :doc:`-partition command-line
|
run with multiple partitions via the :doc:`-partition command-line
|
||||||
switch <Run_options>`. This variable command assigns one string to
|
switch <Run_options>`. This variable command assigns one string to
|
||||||
each world. All processors in the world are assigned the same string.
|
each world. All processors in the world are assigned the same string.
|
||||||
The next command cannot be used with *equal* style variables, since
|
The next command cannot be used with equal-style variables, since
|
||||||
there is only one value per world. This style of variable is useful
|
there is only one value per world. This style of variable is useful
|
||||||
when you wish to run different simulations on different partitions, or
|
when you wish to run different simulations on different partitions, or
|
||||||
when performing a parallel tempering simulation (see the :doc:`temper
|
when performing a parallel tempering simulation (see the :doc:`temper
|
||||||
@ -303,7 +306,7 @@ string. This continues until all the variable strings are consumed.
|
|||||||
Thus, this command can be used to run 50 simulations on 8 processor
|
Thus, this command can be used to run 50 simulations on 8 processor
|
||||||
partitions. The simulations will be run one after the other on
|
partitions. The simulations will be run one after the other on
|
||||||
whatever partition becomes available, until they are all finished.
|
whatever partition becomes available, until they are all finished.
|
||||||
*Universe* style variables are incremented using the files
|
Universe-style variables are incremented using the files
|
||||||
"tmp.lammps.variable" and "tmp.lammps.variable.lock" which you will
|
"tmp.lammps.variable" and "tmp.lammps.variable.lock" which you will
|
||||||
see in your directory during such a LAMMPS run.
|
see in your directory during such a LAMMPS run.
|
||||||
|
|
||||||
@ -341,7 +344,9 @@ variable can be used to adapt the behavior of LAMMPS input scripts via
|
|||||||
environment variable settings, or to retrieve information that has
|
environment variable settings, or to retrieve information that has
|
||||||
been previously stored with the :doc:`shell putenv <shell>` command.
|
been previously stored with the :doc:`shell putenv <shell>` command.
|
||||||
Note that because environment variable settings are stored by the
|
Note that because environment variable settings are stored by the
|
||||||
operating systems, they persist beyond a :doc:`clear <clear>` command.
|
operating systems, they persist even if the corresponding *getenv*
|
||||||
|
style variable is deleted, and also are set for sub-shells executed
|
||||||
|
by the :doc:`shell <shell>` command.
|
||||||
|
|
||||||
For the *file* style, a filename is provided which contains a list of
|
For the *file* style, a filename is provided which contains a list of
|
||||||
strings to assign to the variable, one per line. The strings can be
|
strings to assign to the variable, one per line. The strings can be
|
||||||
@ -373,7 +378,9 @@ This means the variable can then be evaluated as many times as desired
|
|||||||
and will return those values. There are two ways to cause the next
|
and will return those values. There are two ways to cause the next
|
||||||
set of per-atom values from the file to be read: use the
|
set of per-atom values from the file to be read: use the
|
||||||
:doc:`next <next>` command or the next() function in an atom-style
|
:doc:`next <next>` command or the next() function in an atom-style
|
||||||
variable, as discussed below.
|
variable, as discussed below. Unlike most variable styles
|
||||||
|
atomfile-style variables are **deleted** during a :doc:`clear <clear>`
|
||||||
|
command.
|
||||||
|
|
||||||
The rules for formatting the file are as follows. Each time a set of
|
The rules for formatting the file are as follows. Each time a set of
|
||||||
per-atom values is read, a non-blank line is searched for in the file.
|
per-atom values is read, a non-blank line is searched for in the file.
|
||||||
|
|||||||
@ -33,7 +33,7 @@ Syntax
|
|||||||
*angular* = zero the angular momentum
|
*angular* = zero the angular momentum
|
||||||
|
|
||||||
* zero or more keyword/value pairs may be appended
|
* zero or more keyword/value pairs may be appended
|
||||||
* keyword = *dist* or *sum* or *mom* or *rot* or *temp* or *bias* or *loop* or *units*
|
* keyword = *dist* or *sum* or *mom* or *rot* or *temp* or *bias* or *loop* or *rigid* or *units*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
# Python rewrite of txt2html
|
# Python rewrite of txt2html
|
||||||
# The original txt2html was written in C by Steve Plimpton
|
# The original txt2html was written in C by Steve Plimpton
|
||||||
# (http://www.cs.sandia.gov/cgi-bin/sjplimp/)
|
# (https://sjplimp.github.io/)
|
||||||
#
|
#
|
||||||
# Copyright (C) 2015 Richard Berger
|
# Copyright (C) 2015 Richard Berger
|
||||||
#
|
#
|
||||||
|
|||||||
@ -9,8 +9,8 @@ LAMMPS_COMMANDS = ("angle_coeff", "angle_style", "atom_modify", "atom_style",
|
|||||||
"displace_atoms", "dump_modify", "dynamical_matrix", "echo", "elif", "else",
|
"displace_atoms", "dump_modify", "dynamical_matrix", "echo", "elif", "else",
|
||||||
"fix_modify", "group2ndx", "hyper", "if", "improper_coeff",
|
"fix_modify", "group2ndx", "hyper", "if", "improper_coeff",
|
||||||
"improper_style", "include", "info", "jump", "kim",
|
"improper_style", "include", "info", "jump", "kim",
|
||||||
"kspace_modify", "kspace_style", "label", "lattice",
|
"kspace_modify", "kspace_style", "label", "labelmap", "lattice", "log",
|
||||||
"log", "mass", "message", "minimize", "min_modify", "min_style", "molecule",
|
"mass", "mdi", "message", "minimize", "min_modify", "min_style", "molecule",
|
||||||
"ndx2group", "neb", "neb/spin", "neighbor", "neigh_modify", "newton", "next",
|
"ndx2group", "neb", "neb/spin", "neighbor", "neigh_modify", "newton", "next",
|
||||||
"package", "pair_coeff", "pair_modify", "pair_style", "pair_write",
|
"package", "pair_coeff", "pair_modify", "pair_style", "pair_write",
|
||||||
"partition", "prd", "print", "processors", "python", "quit", "read_data",
|
"partition", "prd", "print", "processors", "python", "quit", "read_data",
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -38,7 +38,7 @@ sys.path.append(os.path.join(LAMMPS_DOC_DIR, 'src', '_ext'))
|
|||||||
# -- General configuration ------------------------------------------------
|
# -- General configuration ------------------------------------------------
|
||||||
|
|
||||||
# If your documentation needs a minimal Sphinx version, state it here.
|
# If your documentation needs a minimal Sphinx version, state it here.
|
||||||
#needs_sphinx = '1.0'
|
needs_sphinx = '5.2.0'
|
||||||
|
|
||||||
# Add any Sphinx extension module names here, as strings. They can be
|
# Add any Sphinx extension module names here, as strings. They can be
|
||||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||||
@ -53,10 +53,6 @@ extensions = [
|
|||||||
'tab_or_note',
|
'tab_or_note',
|
||||||
'breathe',
|
'breathe',
|
||||||
]
|
]
|
||||||
# 2017-12-07: commented out, since this package is broken with Sphinx 16.x
|
|
||||||
# yet we can no longer use Sphinx 15.x, since that breaks with
|
|
||||||
# newer version of the multiprocessor module.
|
|
||||||
# 'sphinxcontrib.images',
|
|
||||||
|
|
||||||
images_config = {
|
images_config = {
|
||||||
'default_image_width' : '25%',
|
'default_image_width' : '25%',
|
||||||
@ -287,7 +283,48 @@ latex_elements = {
|
|||||||
# Additional stuff for the LaTeX preamble.
|
# Additional stuff for the LaTeX preamble.
|
||||||
'preamble': r'''
|
'preamble': r'''
|
||||||
\setcounter{tocdepth}{2}
|
\setcounter{tocdepth}{2}
|
||||||
|
\renewcommand{\sfdefault}{ptm} % Use Times New Roman font for \textrm
|
||||||
|
\renewcommand{\sfdefault}{phv} % Use Helvetica font for \textsf
|
||||||
|
% Set up math fonts to match text fonts
|
||||||
|
\DeclareSymbolFont{operators} {OT1}{ptm}{m}{n}
|
||||||
|
\DeclareSymbolFont{bold} {OT1}{ptm}{bx}{n}
|
||||||
|
\DeclareSymbolFont{italic} {OT1}{ptm}{m}{it}
|
||||||
|
\DeclareSymbolFont{extraops} {OT1}{ztmcm}{m}{n}
|
||||||
|
\DeclareSymbolFont{letters} {OML}{ztmcm}{m}{it}
|
||||||
|
\DeclareSymbolFont{largesymbols}{OMX}{ztmcm}{m}{n}
|
||||||
|
% symbols (and \mathcal) are taken from computer modern.
|
||||||
|
% setup mappings
|
||||||
|
\DeclareSymbolFontAlphabet{\mathrm} {operators}
|
||||||
|
\DeclareSymbolFontAlphabet{\mathnormal}{letters}
|
||||||
|
\DeclareMathAlphabet{\mathnormal}{OT1}{ptm}{m}{n}
|
||||||
|
\DeclareMathAlphabet{\mathrm}{OT1}{ptm}{m}{n}
|
||||||
|
\DeclareMathAlphabet{\mathbf}{OT1}{ptm}{bx}{n}
|
||||||
|
\DeclareMathAlphabet{\mathit}{OT1}{ptm}{m}{it}
|
||||||
|
\DeclareMathAlphabet{\mathtt}{OT1}{pcr}{m}{n}
|
||||||
|
\SetMathAlphabet\mathit{bold}{OT1}{ptm}{bx}{it}
|
||||||
|
% declare missing operators
|
||||||
|
\DeclareMathSymbol{\omicron}{0}{operators}{`\o}
|
||||||
|
\DeclareMathSymbol{\Gamma}{\mathalpha}{extraops}{"00}
|
||||||
|
\DeclareMathSymbol{\Delta}{\mathalpha}{extraops}{"01}
|
||||||
|
\DeclareMathSymbol{\Theta}{\mathalpha}{extraops}{"02}
|
||||||
|
\DeclareMathSymbol{\Lambda}{\mathalpha}{extraops}{"03}
|
||||||
|
\DeclareMathSymbol{\Xi}{\mathalpha}{extraops}{"04}
|
||||||
|
\DeclareMathSymbol{\Pi}{\mathalpha}{extraops}{"05}
|
||||||
|
\DeclareMathSymbol{\Sigma}{\mathalpha}{extraops}{"06}
|
||||||
|
\DeclareMathSymbol{\Upsilon}{\mathalpha}{extraops}{"07}
|
||||||
|
\DeclareMathSymbol{\Phi}{\mathalpha}{extraops}{"08}
|
||||||
|
\DeclareMathSymbol{\Psi}{\mathalpha}{extraops}{"09}
|
||||||
|
\DeclareMathSymbol{\Omega}{\mathalpha}{extraops}{"0A}
|
||||||
|
|
||||||
\renewcommand{\AA}{\mbox{\textrm{\r{A}}}}
|
\renewcommand{\AA}{\mbox{\textrm{\r{A}}}}
|
||||||
|
% Make ToC number fields wider to accommodate sections with >= 100 subsections
|
||||||
|
% or >= 10 subsections with >= 10 subsubsections
|
||||||
|
\makeatletter
|
||||||
|
\renewcommand*{\sphinxtableofcontentshook}{%
|
||||||
|
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{3.1em}}
|
||||||
|
\renewcommand*\l@subsection{\@dottedtocline{2}{4.6em}{4.5em}}
|
||||||
|
}
|
||||||
|
\makeatother
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,9 +409,9 @@ at Sandia National Laboratories, a US Department of Energy facility,
|
|||||||
with funding from the DOE. It is an open-source code, distributed
|
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 LAMMPS developers can be contacted at developers@lammps.org.
|
||||||
at sjplimp@sandia.gov. The LAMMPS WWW Site at www.lammps.org has
|
The LAMMPS WWW Site at www.lammps.org has more information about
|
||||||
more information about the code and its uses.
|
the code and its uses.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
epub_author = 'The LAMMPS Developers'
|
epub_author = 'The LAMMPS Developers'
|
||||||
|
|||||||
@ -123,6 +123,7 @@ Antonelli
|
|||||||
api
|
api
|
||||||
Apoorva
|
Apoorva
|
||||||
Appl
|
Appl
|
||||||
|
Appshaw
|
||||||
apptainer
|
apptainer
|
||||||
Apu
|
Apu
|
||||||
arallel
|
arallel
|
||||||
@ -181,6 +182,7 @@ Avalos
|
|||||||
avalue
|
avalue
|
||||||
aveforce
|
aveforce
|
||||||
Avendano
|
Avendano
|
||||||
|
Averett
|
||||||
avi
|
avi
|
||||||
AVX
|
AVX
|
||||||
awpmd
|
awpmd
|
||||||
@ -237,6 +239,7 @@ bcolor
|
|||||||
bdiam
|
bdiam
|
||||||
bdw
|
bdw
|
||||||
Beckman
|
Beckman
|
||||||
|
Becton
|
||||||
Belak
|
Belak
|
||||||
Bellott
|
Bellott
|
||||||
bem
|
bem
|
||||||
@ -270,6 +273,7 @@ bilayers
|
|||||||
binsize
|
binsize
|
||||||
binstyle
|
binstyle
|
||||||
binutils
|
binutils
|
||||||
|
Biomech
|
||||||
biomolecular
|
biomolecular
|
||||||
biomolecule
|
biomolecule
|
||||||
Biomolecules
|
Biomolecules
|
||||||
@ -925,6 +929,7 @@ Emmrich
|
|||||||
emol
|
emol
|
||||||
eN
|
eN
|
||||||
endian
|
endian
|
||||||
|
endocytosis
|
||||||
energetics
|
energetics
|
||||||
energyCorr
|
energyCorr
|
||||||
eng
|
eng
|
||||||
@ -1156,6 +1161,7 @@ ftm
|
|||||||
ftol
|
ftol
|
||||||
fuer
|
fuer
|
||||||
fugacity
|
fugacity
|
||||||
|
Fu
|
||||||
Fumi
|
Fumi
|
||||||
func
|
func
|
||||||
funcs
|
funcs
|
||||||
@ -1308,6 +1314,7 @@ Hamaker
|
|||||||
Hamel
|
Hamel
|
||||||
Hammerschmidt
|
Hammerschmidt
|
||||||
Hanley
|
Hanley
|
||||||
|
Hanna
|
||||||
haptic
|
haptic
|
||||||
Haque
|
Haque
|
||||||
Hara
|
Hara
|
||||||
@ -1659,6 +1666,7 @@ kepler
|
|||||||
keV
|
keV
|
||||||
Keyes
|
Keyes
|
||||||
keyfile
|
keyfile
|
||||||
|
Kfoury
|
||||||
Khersonskii
|
Khersonskii
|
||||||
Khrapak
|
Khrapak
|
||||||
Khvostov
|
Khvostov
|
||||||
@ -1914,6 +1922,7 @@ lwsock
|
|||||||
lx
|
lx
|
||||||
ly
|
ly
|
||||||
Lybrand
|
Lybrand
|
||||||
|
Lykotrafitis
|
||||||
lyon
|
lyon
|
||||||
Lysogorskiy
|
Lysogorskiy
|
||||||
Lyulin
|
Lyulin
|
||||||
@ -2024,6 +2033,7 @@ MEAM
|
|||||||
meamf
|
meamf
|
||||||
meanDist
|
meanDist
|
||||||
mech
|
mech
|
||||||
|
Mechanobiology
|
||||||
Mecke
|
Mecke
|
||||||
mediumaquamarine
|
mediumaquamarine
|
||||||
mediumblue
|
mediumblue
|
||||||
@ -2542,7 +2552,6 @@ oneAPI
|
|||||||
onelevel
|
onelevel
|
||||||
oneway
|
oneway
|
||||||
onlysalt
|
onlysalt
|
||||||
onn
|
|
||||||
ons
|
ons
|
||||||
OO
|
OO
|
||||||
Oord
|
Oord
|
||||||
@ -2740,6 +2749,7 @@ Polym
|
|||||||
polymorph
|
polymorph
|
||||||
polymorphism
|
polymorphism
|
||||||
Ponder
|
Ponder
|
||||||
|
Ponte
|
||||||
popen
|
popen
|
||||||
Popoola
|
Popoola
|
||||||
Popov
|
Popov
|
||||||
@ -3145,6 +3155,7 @@ seagreen
|
|||||||
Secor
|
Secor
|
||||||
sectoring
|
sectoring
|
||||||
sed
|
sed
|
||||||
|
Seddon
|
||||||
segmental
|
segmental
|
||||||
Seifert
|
Seifert
|
||||||
Seleson
|
Seleson
|
||||||
@ -3694,6 +3705,7 @@ vdw
|
|||||||
vdW
|
vdW
|
||||||
vdwl
|
vdwl
|
||||||
vec
|
vec
|
||||||
|
Vecchio
|
||||||
vectorial
|
vectorial
|
||||||
vectorization
|
vectorization
|
||||||
Vectorization
|
Vectorization
|
||||||
@ -3903,6 +3915,7 @@ yhi
|
|||||||
yi
|
yi
|
||||||
ylat
|
ylat
|
||||||
ylo
|
ylo
|
||||||
|
ylz
|
||||||
ymax
|
ymax
|
||||||
ymin
|
ymin
|
||||||
yml
|
yml
|
||||||
|
|||||||
@ -29,8 +29,10 @@ stochastic rotation dynamics solvent, using the fix srd command.
|
|||||||
box = 2d rigid box particles in SRDs, self-diffusion and viscosity
|
box = 2d rigid box particles in SRDs, self-diffusion and viscosity
|
||||||
dimer = 2d rigid dimers in SRDs, self-diffusion and viscosity
|
dimer = 2d rigid dimers in SRDs, self-diffusion and viscosity
|
||||||
ellipsoid = 2d ellipsoids in SRDs, self-diffusion and viscosity
|
ellipsoid = 2d ellipsoids in SRDs, self-diffusion and viscosity
|
||||||
|
flat_membrane = 2d flat membrane in NVE, self-diffusion and viscosity
|
||||||
line = 2d line-faceted rigid particles, NEMD shearing for viscosity,
|
line = 2d line-faceted rigid particles, NEMD shearing for viscosity,
|
||||||
implicit and in SRDs
|
implicit and in SRDs
|
||||||
poly = 2d poly-disperse spheroids in SRDs, self-diffusion and viscosity
|
poly = 2d poly-disperse spheroids in SRDs, self-diffusion and viscosity
|
||||||
star = 2d rigid star particles in SRDs, self-diffusion and viscosity
|
star = 2d rigid star particles in SRDs, self-diffusion and viscosity
|
||||||
tri = 3d triangle-faceted rigid particles in SRDs, NEMD shearing for viscosity
|
tri = 3d triangle-faceted rigid particles in SRDs, NEMD shearing for viscosity
|
||||||
|
vesicle = 3d vesicle in NVE, self-diffusionand viscosity
|
||||||
|
|||||||
55
examples/ASPHERE/flat_membrane/in.flat_membrane
Normal file
55
examples/ASPHERE/flat_membrane/in.flat_membrane
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
# flat membrane demo
|
||||||
|
variable r0 equal 0.97
|
||||||
|
variable d1 equal ${r0}
|
||||||
|
variable d2 equal sqrt(3.0)*${r0}
|
||||||
|
variable d3 equal 3.0*${r0}
|
||||||
|
variable ro equal 2./${d1}/${d2}/${d3}
|
||||||
|
|
||||||
|
variable T equal 0.23
|
||||||
|
variable LD equal 1.0
|
||||||
|
|
||||||
|
units lj
|
||||||
|
atom_style ellipsoid
|
||||||
|
|
||||||
|
boundary p p p
|
||||||
|
|
||||||
|
lattice custom ${ro} a1 ${d1} 0.0 0.0 a2 0.0 ${d2} 0.0 &
|
||||||
|
a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0
|
||||||
|
|
||||||
|
|
||||||
|
region box block 0 40 0 24 -20 20
|
||||||
|
create_box 1 box
|
||||||
|
region membrane block 0 40 0 24 -0.5 0.5
|
||||||
|
create_atoms 1 region membrane
|
||||||
|
|
||||||
|
group membrane region membrane
|
||||||
|
|
||||||
|
set type 1 mass 1.0
|
||||||
|
|
||||||
|
set type 1 shape 1 0.99 0.99
|
||||||
|
|
||||||
|
set group all quat 0 -1 0 90
|
||||||
|
|
||||||
|
#compute memb all temp/com
|
||||||
|
#compute rot all temp/asphere bias memb
|
||||||
|
velocity all create ${T} 87287 loop geom
|
||||||
|
|
||||||
|
pair_style ylz 2.6
|
||||||
|
pair_coeff * * 1.0 1.0 4 3 0.0 2.6
|
||||||
|
neighbor 1.0 bin
|
||||||
|
|
||||||
|
|
||||||
|
thermo_style custom step temp press pxx pyy
|
||||||
|
thermo 200
|
||||||
|
|
||||||
|
timestep 0.01
|
||||||
|
|
||||||
|
#dump 1 all atom 10 dump_onlymembrane.lammpstrj
|
||||||
|
|
||||||
|
fix 1 all langevin ${T} ${T} ${LD} 48279
|
||||||
|
|
||||||
|
|
||||||
|
fix 2 all nve/asphere
|
||||||
|
run 3000
|
||||||
|
|
||||||
|
|
||||||
159
examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.1
Normal file
159
examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.1
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
LAMMPS (15 Sep 2022)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# flat membrane demo
|
||||||
|
variable r0 equal 0.97
|
||||||
|
variable d1 equal ${r0}
|
||||||
|
variable d1 equal 0.97
|
||||||
|
variable d2 equal sqrt(3.0)*${r0}
|
||||||
|
variable d2 equal sqrt(3.0)*0.97
|
||||||
|
variable d3 equal 3.0*${r0}
|
||||||
|
variable d3 equal 3.0*0.97
|
||||||
|
variable ro equal 2./${d1}/${d2}/${d3}
|
||||||
|
variable ro equal 2./0.97/${d2}/${d3}
|
||||||
|
variable ro equal 2./0.97/1.68008928334181/${d3}
|
||||||
|
variable ro equal 2./0.97/1.68008928334181/2.91
|
||||||
|
|
||||||
|
variable T equal 0.23
|
||||||
|
variable LD equal 1.0
|
||||||
|
|
||||||
|
units lj
|
||||||
|
atom_style ellipsoid
|
||||||
|
|
||||||
|
boundary p p p
|
||||||
|
|
||||||
|
lattice custom ${ro} a1 ${d1} 0.0 0.0 a2 0.0 ${d2} 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0
|
||||||
|
lattice custom 0.421728460751825 a1 ${d1} 0.0 0.0 a2 0.0 ${d2} 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0
|
||||||
|
lattice custom 0.421728460751825 a1 0.97 0.0 0.0 a2 0.0 ${d2} 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0
|
||||||
|
lattice custom 0.421728460751825 a1 0.97 0.0 0.0 a2 0.0 1.68008928334181 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0
|
||||||
|
lattice custom 0.421728460751825 a1 0.97 0.0 0.0 a2 0.0 1.68008928334181 0.0 a3 0.0 0.0 2.91 basis 0.0 0.0 0.0 basis 0.5 0.5 0.0
|
||||||
|
Lattice spacing in x,y,z = 0.97 1.6800893 2.91
|
||||||
|
|
||||||
|
|
||||||
|
region box block 0 40 0 24 -20 20
|
||||||
|
create_box 1 box
|
||||||
|
Created orthogonal box = (0 0 -58.2) to (38.8 40.322143 58.2)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
region membrane block 0 40 0 24 -0.5 0.5
|
||||||
|
create_atoms 1 region membrane
|
||||||
|
Created 1920 atoms
|
||||||
|
using lattice units in orthogonal box = (0 0 -58.2) to (38.8 40.322143 58.2)
|
||||||
|
create_atoms CPU = 0.001 seconds
|
||||||
|
|
||||||
|
group membrane region membrane
|
||||||
|
1920 atoms in group membrane
|
||||||
|
|
||||||
|
set type 1 mass 1.0
|
||||||
|
Setting atom values ...
|
||||||
|
1920 settings made for mass
|
||||||
|
|
||||||
|
set type 1 shape 1 1 1
|
||||||
|
Setting atom values ...
|
||||||
|
1920 settings made for shape
|
||||||
|
|
||||||
|
set group all quat 0 -1 0 90
|
||||||
|
Setting atom values ...
|
||||||
|
1920 settings made for quat
|
||||||
|
|
||||||
|
#compute memb all temp/com
|
||||||
|
#compute rot all temp/asphere bias memb
|
||||||
|
velocity all create ${T} 87287 loop geom
|
||||||
|
velocity all create 0.23 87287 loop geom
|
||||||
|
|
||||||
|
pair_style ylz 2.6
|
||||||
|
pair_coeff * * 1.0 1.0 4 3 0.0 2.6
|
||||||
|
neighbor 1.0 bin
|
||||||
|
|
||||||
|
|
||||||
|
thermo_style custom step temp press pxx pyy
|
||||||
|
thermo 200
|
||||||
|
|
||||||
|
timestep 0.01
|
||||||
|
|
||||||
|
#dump 1 all atom 10 dump_onlymembrane.lammpstrj
|
||||||
|
|
||||||
|
fix 1 all langevin ${T} ${T} ${LD} 48279
|
||||||
|
fix 1 all langevin 0.23 ${T} ${LD} 48279
|
||||||
|
fix 1 all langevin 0.23 0.23 ${LD} 48279
|
||||||
|
fix 1 all langevin 0.23 0.23 1 48279
|
||||||
|
|
||||||
|
|
||||||
|
fix 2 all nve/asphere
|
||||||
|
run 3000
|
||||||
|
|
||||||
|
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||||
|
|
||||||
|
Your simulation uses code contributions which should be cited:
|
||||||
|
|
||||||
|
- pair ylz command:
|
||||||
|
|
||||||
|
@Article{Yuan10,
|
||||||
|
author = {H. Yuan, C. Huang, J. Li, G. Lykotrafitis, and S. Zhang},
|
||||||
|
title = {One-particle-thick, solvent-free, coarse-grained model for biological and biomimetic fluid membranes},
|
||||||
|
journal = {Phys. Rev. E},
|
||||||
|
year = 2010,
|
||||||
|
volume = 82,
|
||||||
|
pages = {011905}
|
||||||
|
}
|
||||||
|
|
||||||
|
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||||
|
|
||||||
|
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||||
|
Neighbor list info ...
|
||||||
|
update: every = 1 steps, delay = 10 steps, check = yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 3.6
|
||||||
|
ghost atom cutoff = 3.6
|
||||||
|
binsize = 1.8, bins = 22 23 65
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair ylz, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 5.024 | 5.024 | 5.024 Mbytes
|
||||||
|
Step Temp Press Pxx Pyy
|
||||||
|
0 0.23 -0.0073508785 -0.012283389 -0.012234574
|
||||||
|
200 0.20903886 -0.0010605951 -0.0011885957 -0.00198842
|
||||||
|
400 0.21898026 -0.00069250685 -0.0013217981 -0.00073225707
|
||||||
|
600 0.22689361 -0.00057919328 -0.00076880503 -0.0010242283
|
||||||
|
800 0.22983221 -0.00032145682 -0.00051928834 -0.00059337525
|
||||||
|
1000 0.23819392 -0.00027969126 -0.00088082301 -5.2666567e-05
|
||||||
|
1200 0.22053795 -0.00029571329 -0.0004446455 -0.00035529929
|
||||||
|
1400 0.22285021 -0.0002690371 -0.00068896571 -3.6258442e-05
|
||||||
|
1600 0.22687044 2.8599875e-05 -0.00032651798 0.0004056081
|
||||||
|
1800 0.23356905 -2.28742e-05 -0.00027073251 0.00025081131
|
||||||
|
2000 0.22499821 8.8230586e-06 -7.5750159e-05 0.0001988705
|
||||||
|
2200 0.23162995 -9.026855e-05 -0.00025832535 5.4904927e-05
|
||||||
|
2400 0.22920223 0.00016700455 3.5283125e-05 0.00034955857
|
||||||
|
2600 0.2260299 5.3095557e-05 0.00025691786 0.00013353467
|
||||||
|
2800 0.2296401 0.00043234854 0.00058344966 0.00063645193
|
||||||
|
3000 0.22564577 2.6423111e-05 8.9918406e-05 0.00022146229
|
||||||
|
Loop time of 6.76659 on 1 procs for 3000 steps with 1920 atoms
|
||||||
|
|
||||||
|
Performance: 383058.431 tau/day, 443.355 timesteps/s
|
||||||
|
99.8% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 5.7968 | 5.7968 | 5.7968 | 0.0 | 85.67
|
||||||
|
Neigh | 0.086077 | 0.086077 | 0.086077 | 0.0 | 1.27
|
||||||
|
Comm | 0.034761 | 0.034761 | 0.034761 | 0.0 | 0.51
|
||||||
|
Output | 0.00038014 | 0.00038014 | 0.00038014 | 0.0 | 0.01
|
||||||
|
Modify | 0.8268 | 0.8268 | 0.8268 | 0.0 | 12.22
|
||||||
|
Other | | 0.02181 | | | 0.32
|
||||||
|
|
||||||
|
Nlocal: 1920 ave 1920 max 1920 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 772 ave 772 max 772 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 46804 ave 46804 max 46804 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 46804
|
||||||
|
Ave neighs/atom = 24.377083
|
||||||
|
Neighbor list builds = 99
|
||||||
|
Dangerous builds = 0
|
||||||
|
|
||||||
|
|
||||||
|
Total wall time: 0:00:06
|
||||||
159
examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.4
Normal file
159
examples/ASPHERE/flat_membrane/log.18Oct22.flat_membrane.g++.4
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
LAMMPS (15 Sep 2022)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# flat membrane demo
|
||||||
|
variable r0 equal 0.97
|
||||||
|
variable d1 equal ${r0}
|
||||||
|
variable d1 equal 0.97
|
||||||
|
variable d2 equal sqrt(3.0)*${r0}
|
||||||
|
variable d2 equal sqrt(3.0)*0.97
|
||||||
|
variable d3 equal 3.0*${r0}
|
||||||
|
variable d3 equal 3.0*0.97
|
||||||
|
variable ro equal 2./${d1}/${d2}/${d3}
|
||||||
|
variable ro equal 2./0.97/${d2}/${d3}
|
||||||
|
variable ro equal 2./0.97/1.68008928334181/${d3}
|
||||||
|
variable ro equal 2./0.97/1.68008928334181/2.91
|
||||||
|
|
||||||
|
variable T equal 0.23
|
||||||
|
variable LD equal 1.0
|
||||||
|
|
||||||
|
units lj
|
||||||
|
atom_style ellipsoid
|
||||||
|
|
||||||
|
boundary p p p
|
||||||
|
|
||||||
|
lattice custom ${ro} a1 ${d1} 0.0 0.0 a2 0.0 ${d2} 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0
|
||||||
|
lattice custom 0.421728460751825 a1 ${d1} 0.0 0.0 a2 0.0 ${d2} 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0
|
||||||
|
lattice custom 0.421728460751825 a1 0.97 0.0 0.0 a2 0.0 ${d2} 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0
|
||||||
|
lattice custom 0.421728460751825 a1 0.97 0.0 0.0 a2 0.0 1.68008928334181 0.0 a3 0.0 0.0 ${d3} basis 0.0 0.0 0.0 basis 0.5 0.5 0.0
|
||||||
|
lattice custom 0.421728460751825 a1 0.97 0.0 0.0 a2 0.0 1.68008928334181 0.0 a3 0.0 0.0 2.91 basis 0.0 0.0 0.0 basis 0.5 0.5 0.0
|
||||||
|
Lattice spacing in x,y,z = 0.97 1.6800893 2.91
|
||||||
|
|
||||||
|
|
||||||
|
region box block 0 40 0 24 -20 20
|
||||||
|
create_box 1 box
|
||||||
|
Created orthogonal box = (0 0 -58.2) to (38.8 40.322143 58.2)
|
||||||
|
1 by 1 by 4 MPI processor grid
|
||||||
|
region membrane block 0 40 0 24 -0.5 0.5
|
||||||
|
create_atoms 1 region membrane
|
||||||
|
Created 1920 atoms
|
||||||
|
using lattice units in orthogonal box = (0 0 -58.2) to (38.8 40.322143 58.2)
|
||||||
|
create_atoms CPU = 0.001 seconds
|
||||||
|
|
||||||
|
group membrane region membrane
|
||||||
|
1920 atoms in group membrane
|
||||||
|
|
||||||
|
set type 1 mass 1.0
|
||||||
|
Setting atom values ...
|
||||||
|
1920 settings made for mass
|
||||||
|
|
||||||
|
set type 1 shape 1 1 1
|
||||||
|
Setting atom values ...
|
||||||
|
1920 settings made for shape
|
||||||
|
|
||||||
|
set group all quat 0 -1 0 90
|
||||||
|
Setting atom values ...
|
||||||
|
1920 settings made for quat
|
||||||
|
|
||||||
|
#compute memb all temp/com
|
||||||
|
#compute rot all temp/asphere bias memb
|
||||||
|
velocity all create ${T} 87287 loop geom
|
||||||
|
velocity all create 0.23 87287 loop geom
|
||||||
|
|
||||||
|
pair_style ylz 2.6
|
||||||
|
pair_coeff * * 1.0 1.0 4 3 0.0 2.6
|
||||||
|
neighbor 1.0 bin
|
||||||
|
|
||||||
|
|
||||||
|
thermo_style custom step temp press pxx pyy
|
||||||
|
thermo 200
|
||||||
|
|
||||||
|
timestep 0.01
|
||||||
|
|
||||||
|
#dump 1 all atom 10 dump_onlymembrane.lammpstrj
|
||||||
|
|
||||||
|
fix 1 all langevin ${T} ${T} ${LD} 48279
|
||||||
|
fix 1 all langevin 0.23 ${T} ${LD} 48279
|
||||||
|
fix 1 all langevin 0.23 0.23 ${LD} 48279
|
||||||
|
fix 1 all langevin 0.23 0.23 1 48279
|
||||||
|
|
||||||
|
|
||||||
|
fix 2 all nve/asphere
|
||||||
|
run 3000
|
||||||
|
|
||||||
|
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||||
|
|
||||||
|
Your simulation uses code contributions which should be cited:
|
||||||
|
|
||||||
|
- pair ylz command:
|
||||||
|
|
||||||
|
@Article{Yuan10,
|
||||||
|
author = {H. Yuan, C. Huang, J. Li, G. Lykotrafitis, and S. Zhang},
|
||||||
|
title = {One-particle-thick, solvent-free, coarse-grained model for biological and biomimetic fluid membranes},
|
||||||
|
journal = {Phys. Rev. E},
|
||||||
|
year = 2010,
|
||||||
|
volume = 82,
|
||||||
|
pages = {011905}
|
||||||
|
}
|
||||||
|
|
||||||
|
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||||
|
|
||||||
|
Generated 0 of 0 mixed pair_coeff terms from geometric mixing rule
|
||||||
|
Neighbor list info ...
|
||||||
|
update: every = 1 steps, delay = 10 steps, check = yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 3.6
|
||||||
|
ghost atom cutoff = 3.6
|
||||||
|
binsize = 1.8, bins = 22 23 65
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair ylz, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 4.182 | 4.794 | 5.472 Mbytes
|
||||||
|
Step Temp Press Pxx Pyy
|
||||||
|
0 0.23 -0.0073508785 -0.012283389 -0.012234574
|
||||||
|
200 0.20647718 -0.0012368074 -0.0021167303 -0.0015343502
|
||||||
|
400 0.21648371 -0.00085695085 -0.0015627331 -0.0011177093
|
||||||
|
600 0.22929515 -0.00050218657 -0.0008332 -0.00062622609
|
||||||
|
800 0.22062664 -0.00049172378 -0.000611884 -0.00075089294
|
||||||
|
1000 0.22422425 -0.00039405068 -0.00037600355 -0.00070786572
|
||||||
|
1200 0.2298767 -0.00025939082 -0.00021616578 -0.00053125505
|
||||||
|
1400 0.2335927 5.8028332e-05 0.00017530192 -3.1675138e-05
|
||||||
|
1600 0.22884878 -0.0001733902 -0.0008056431 0.00014276754
|
||||||
|
1800 0.22813498 0.00019873459 0.00051040124 5.8860949e-05
|
||||||
|
2000 0.2273166 -3.3595127e-05 0.0001705632 -0.00026498213
|
||||||
|
2200 0.2251643 -2.4517311e-05 -4.0618888e-05 1.066658e-05
|
||||||
|
2400 0.22460629 -4.5661259e-05 -0.00019144039 -1.6649099e-05
|
||||||
|
2600 0.23085675 0.00014029405 0.00017983536 0.00017895001
|
||||||
|
2800 0.22364591 4.2999164e-05 -0.00011000466 0.00024363243
|
||||||
|
3000 0.23421357 0.00023505702 0.00020752013 0.00053567111
|
||||||
|
Loop time of 4.68577 on 4 procs for 3000 steps with 1920 atoms
|
||||||
|
|
||||||
|
Performance: 553164.568 tau/day, 640.237 timesteps/s
|
||||||
|
95.6% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 0.00015072 | 1.6029 | 3.8573 | 131.7 | 34.21
|
||||||
|
Neigh | 0.00055747 | 0.025423 | 0.065858 | 17.0 | 0.54
|
||||||
|
Comm | 0.0052259 | 0.48173 | 1.624 | 96.5 | 10.28
|
||||||
|
Output | 0.0003894 | 0.023428 | 0.047223 | 15.0 | 0.50
|
||||||
|
Modify | 0.00037337 | 0.2141 | 0.44595 | 46.3 | 4.57
|
||||||
|
Other | | 2.338 | | | 49.90
|
||||||
|
|
||||||
|
Nlocal: 480 ave 1011 max 0 min
|
||||||
|
Histogram: 2 0 0 0 0 0 0 0 1 1
|
||||||
|
Nghost: 860 ave 1771 max 0 min
|
||||||
|
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||||
|
Neighs: 11697.8 ave 30095 max 0 min
|
||||||
|
Histogram: 2 0 0 0 0 1 0 0 0 1
|
||||||
|
|
||||||
|
Total # of neighbors = 46791
|
||||||
|
Ave neighs/atom = 24.370313
|
||||||
|
Neighbor list builds = 99
|
||||||
|
Dangerous builds = 0
|
||||||
|
|
||||||
|
|
||||||
|
Total wall time: 0:00:04
|
||||||
33
examples/ASPHERE/vesicle/in.vesicle
Normal file
33
examples/ASPHERE/vesicle/in.vesicle
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Vesicle demo
|
||||||
|
|
||||||
|
variable T equal 0.2
|
||||||
|
variable LD equal 1.0
|
||||||
|
|
||||||
|
units lj
|
||||||
|
atom_style ellipsoid
|
||||||
|
|
||||||
|
boundary p p p
|
||||||
|
|
||||||
|
read_data read_data.vesicle1026
|
||||||
|
|
||||||
|
compute ali all temp/com
|
||||||
|
compute rott all temp/asphere bias ali
|
||||||
|
|
||||||
|
velocity all create ${T} 87287 loop geom
|
||||||
|
|
||||||
|
pair_style ylz 2.6
|
||||||
|
pair_coeff * * 1.0 1.0 4 3 0.0 2.6
|
||||||
|
neighbor 1.0 bin
|
||||||
|
|
||||||
|
thermo_style custom step temp press pxx pyy
|
||||||
|
thermo 200
|
||||||
|
|
||||||
|
timestep 0.001
|
||||||
|
|
||||||
|
#dump 1 all atom 10 onlymembrane2.lammpstrj
|
||||||
|
|
||||||
|
fix 1 all langevin ${T} ${T} ${LD} 48279
|
||||||
|
fix 2 all nve/asphere
|
||||||
|
|
||||||
|
run 3000
|
||||||
|
|
||||||
122
examples/ASPHERE/vesicle/log.18Oct22.vesicle.g++.1
Normal file
122
examples/ASPHERE/vesicle/log.18Oct22.vesicle.g++.1
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
LAMMPS (15 Sep 2022)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# Vesicle demo
|
||||||
|
|
||||||
|
variable T equal 0.2
|
||||||
|
variable LD equal 1.0
|
||||||
|
|
||||||
|
units lj
|
||||||
|
atom_style ellipsoid
|
||||||
|
|
||||||
|
boundary p p p
|
||||||
|
|
||||||
|
read_data read_data.vesicle1026
|
||||||
|
Reading data file ...
|
||||||
|
orthogonal box = (-35 -35 -35) to (35 35 35)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
2938 atoms
|
||||||
|
2938 ellipsoids
|
||||||
|
read_data CPU = 0.010 seconds
|
||||||
|
|
||||||
|
compute ali all temp/com
|
||||||
|
compute rott all temp/asphere bias ali
|
||||||
|
|
||||||
|
velocity all create ${T} 87287 loop geom
|
||||||
|
velocity all create 0.2 87287 loop geom
|
||||||
|
|
||||||
|
pair_style ylz 2.6
|
||||||
|
pair_coeff * * 1.0 1.0 4 3 0.0 2.6
|
||||||
|
neighbor 1.0 bin
|
||||||
|
|
||||||
|
thermo_style custom step temp press pxx pyy
|
||||||
|
thermo 200
|
||||||
|
|
||||||
|
timestep 0.001
|
||||||
|
|
||||||
|
#dump 1 all atom 10 onlymembrane2.lammpstrj
|
||||||
|
|
||||||
|
fix 1 all langevin ${T} ${T} ${LD} 48279
|
||||||
|
fix 1 all langevin 0.2 ${T} ${LD} 48279
|
||||||
|
fix 1 all langevin 0.2 0.2 ${LD} 48279
|
||||||
|
fix 1 all langevin 0.2 0.2 1 48279
|
||||||
|
fix 2 all nve/asphere
|
||||||
|
|
||||||
|
run 3000
|
||||||
|
|
||||||
|
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||||
|
|
||||||
|
Your simulation uses code contributions which should be cited:
|
||||||
|
|
||||||
|
- pair ylz command:
|
||||||
|
|
||||||
|
@Article{Yuan10,
|
||||||
|
author = {H. Yuan, C. Huang, J. Li, G. Lykotrafitis, and S. Zhang},
|
||||||
|
title = {One-particle-thick, solvent-free, coarse-grained model for biological and biomimetic fluid membranes},
|
||||||
|
journal = {Phys. Rev. E},
|
||||||
|
year = 2010,
|
||||||
|
volume = 82,
|
||||||
|
pages = {011905}
|
||||||
|
}
|
||||||
|
|
||||||
|
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||||
|
|
||||||
|
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||||
|
Neighbor list info ...
|
||||||
|
update: every = 1 steps, delay = 10 steps, check = yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 3.6
|
||||||
|
ghost atom cutoff = 3.6
|
||||||
|
binsize = 1.8, bins = 39 39 39
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair ylz, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 5.091 | 5.091 | 5.091 Mbytes
|
||||||
|
Step Temp Press Pxx Pyy
|
||||||
|
0 0.2 -0.0054891414 -0.0052713616 -0.0053641136
|
||||||
|
200 0.12816247 -0.0051288861 -0.0048542514 -0.0049847561
|
||||||
|
400 0.1377632 -0.0048071582 -0.0045651263 -0.0048444087
|
||||||
|
600 0.14983781 -0.0045305725 -0.0043305994 -0.0046127777
|
||||||
|
800 0.16205271 -0.0041176346 -0.0040534483 -0.0041351779
|
||||||
|
1000 0.17462122 -0.0037000069 -0.0034938539 -0.0037915494
|
||||||
|
1200 0.18335448 -0.0032674318 -0.0032790248 -0.0031967931
|
||||||
|
1400 0.19195613 -0.0029332101 -0.0030823703 -0.0028287799
|
||||||
|
1600 0.19261762 -0.0025263447 -0.0025152249 -0.0026205398
|
||||||
|
1800 0.19758674 -0.0021087725 -0.001981333 -0.002309048
|
||||||
|
2000 0.19748896 -0.0017662369 -0.0019316344 -0.0016696035
|
||||||
|
2200 0.20196986 -0.0013363214 -0.0015581191 -0.0013384961
|
||||||
|
2400 0.20109248 -0.0009190831 -0.0010331417 -0.0010664316
|
||||||
|
2600 0.20228664 -0.00053590675 -0.00071808747 -0.00050218533
|
||||||
|
2800 0.20512955 -0.00030845899 -0.00016244901 -0.00047877516
|
||||||
|
3000 0.19855941 -7.9520073e-05 -0.00014969215 -5.4724226e-06
|
||||||
|
Loop time of 9.6866 on 1 procs for 3000 steps with 2938 atoms
|
||||||
|
|
||||||
|
Performance: 26758.610 tau/day, 309.706 timesteps/s
|
||||||
|
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 8.3097 | 8.3097 | 8.3097 | 0.0 | 85.79
|
||||||
|
Neigh | 0.039037 | 0.039037 | 0.039037 | 0.0 | 0.40
|
||||||
|
Comm | 0.0021766 | 0.0021766 | 0.0021766 | 0.0 | 0.02
|
||||||
|
Output | 0.00048628 | 0.00048628 | 0.00048628 | 0.0 | 0.01
|
||||||
|
Modify | 1.3043 | 1.3043 | 1.3043 | 0.0 | 13.47
|
||||||
|
Other | | 0.0309 | | | 0.32
|
||||||
|
|
||||||
|
Nlocal: 2938 ave 2938 max 2938 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 0 ave 0 max 0 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 73242 ave 73242 max 73242 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 73242
|
||||||
|
Ave neighs/atom = 24.929204
|
||||||
|
Neighbor list builds = 26
|
||||||
|
Dangerous builds = 0
|
||||||
|
|
||||||
|
Total wall time: 0:00:09
|
||||||
122
examples/ASPHERE/vesicle/log.18Oct22.vesicle.g++.4
Normal file
122
examples/ASPHERE/vesicle/log.18Oct22.vesicle.g++.4
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
LAMMPS (15 Sep 2022)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# Vesicle demo
|
||||||
|
|
||||||
|
variable T equal 0.2
|
||||||
|
variable LD equal 1.0
|
||||||
|
|
||||||
|
units lj
|
||||||
|
atom_style ellipsoid
|
||||||
|
|
||||||
|
boundary p p p
|
||||||
|
|
||||||
|
read_data read_data.vesicle1026
|
||||||
|
Reading data file ...
|
||||||
|
orthogonal box = (-35 -35 -35) to (35 35 35)
|
||||||
|
1 by 2 by 2 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
2938 atoms
|
||||||
|
2938 ellipsoids
|
||||||
|
read_data CPU = 0.137 seconds
|
||||||
|
|
||||||
|
compute ali all temp/com
|
||||||
|
compute rott all temp/asphere bias ali
|
||||||
|
|
||||||
|
velocity all create ${T} 87287 loop geom
|
||||||
|
velocity all create 0.2 87287 loop geom
|
||||||
|
|
||||||
|
pair_style ylz 2.6
|
||||||
|
pair_coeff * * 1.0 1.0 4 3 0.0 2.6
|
||||||
|
neighbor 1.0 bin
|
||||||
|
|
||||||
|
thermo_style custom step temp press pxx pyy
|
||||||
|
thermo 200
|
||||||
|
|
||||||
|
timestep 0.001
|
||||||
|
|
||||||
|
#dump 1 all atom 10 onlymembrane2.lammpstrj
|
||||||
|
|
||||||
|
fix 1 all langevin ${T} ${T} ${LD} 48279
|
||||||
|
fix 1 all langevin 0.2 ${T} ${LD} 48279
|
||||||
|
fix 1 all langevin 0.2 0.2 ${LD} 48279
|
||||||
|
fix 1 all langevin 0.2 0.2 1 48279
|
||||||
|
fix 2 all nve/asphere
|
||||||
|
|
||||||
|
run 3000
|
||||||
|
|
||||||
|
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||||
|
|
||||||
|
Your simulation uses code contributions which should be cited:
|
||||||
|
|
||||||
|
- pair ylz command:
|
||||||
|
|
||||||
|
@Article{Yuan10,
|
||||||
|
author = {H. Yuan, C. Huang, J. Li, G. Lykotrafitis, and S. Zhang},
|
||||||
|
title = {One-particle-thick, solvent-free, coarse-grained model for biological and biomimetic fluid membranes},
|
||||||
|
journal = {Phys. Rev. E},
|
||||||
|
year = 2010,
|
||||||
|
volume = 82,
|
||||||
|
pages = {011905}
|
||||||
|
}
|
||||||
|
|
||||||
|
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
|
||||||
|
|
||||||
|
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
|
||||||
|
Neighbor list info ...
|
||||||
|
update: every = 1 steps, delay = 10 steps, check = yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 3.6
|
||||||
|
ghost atom cutoff = 3.6
|
||||||
|
binsize = 1.8, bins = 39 39 39
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair ylz, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 4.899 | 4.9 | 4.902 Mbytes
|
||||||
|
Step Temp Press Pxx Pyy
|
||||||
|
0 0.2 -0.0054891414 -0.0052713616 -0.0053641136
|
||||||
|
200 0.12893798 -0.0051492794 -0.0048734875 -0.0049624005
|
||||||
|
400 0.13798694 -0.004875313 -0.0047071897 -0.0049305051
|
||||||
|
600 0.14725193 -0.0046349542 -0.004719983 -0.0045791451
|
||||||
|
800 0.16146954 -0.0042232199 -0.0040789193 -0.0043672895
|
||||||
|
1000 0.17268468 -0.0037146703 -0.0036270393 -0.0039169034
|
||||||
|
1200 0.18266242 -0.0032749755 -0.0032971704 -0.0033323855
|
||||||
|
1400 0.18500165 -0.0028179031 -0.0030659821 -0.0027519633
|
||||||
|
1600 0.19513132 -0.0023407512 -0.0025109801 -0.0023416835
|
||||||
|
1800 0.19645259 -0.0019995412 -0.0019064341 -0.0021757747
|
||||||
|
2000 0.19658104 -0.0015897919 -0.0015850523 -0.0016828478
|
||||||
|
2200 0.1989936 -0.0011794062 -0.0011779716 -0.0012070706
|
||||||
|
2400 0.20011525 -0.0009147432 -0.00094040885 -0.001073922
|
||||||
|
2600 0.2013975 -0.00059253676 -0.00051920304 -0.00075138934
|
||||||
|
2800 0.19715513 -0.00020995605 -0.00024386426 -0.0005475745
|
||||||
|
3000 0.1976782 -0.0001308553 5.693004e-05 -0.00034478469
|
||||||
|
Loop time of 8.46954 on 4 procs for 3000 steps with 2938 atoms
|
||||||
|
|
||||||
|
Performance: 30603.800 tau/day, 354.211 timesteps/s
|
||||||
|
77.9% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 2.1751 | 2.4162 | 2.6707 | 13.2 | 28.53
|
||||||
|
Neigh | 0.0090503 | 0.0098389 | 0.010503 | 0.6 | 0.12
|
||||||
|
Comm | 3.5807 | 4.1526 | 4.9283 | 24.3 | 49.03
|
||||||
|
Output | 0.00032165 | 0.0029648 | 0.010842 | 8.4 | 0.04
|
||||||
|
Modify | 0.34554 | 0.37442 | 0.39198 | 2.8 | 4.42
|
||||||
|
Other | | 1.514 | | | 17.87
|
||||||
|
|
||||||
|
Nlocal: 734.5 ave 739 max 730 min
|
||||||
|
Histogram: 1 0 1 0 0 0 0 1 0 1
|
||||||
|
Nghost: 420.25 ave 424 max 415 min
|
||||||
|
Histogram: 1 0 0 0 0 1 0 1 0 1
|
||||||
|
Neighs: 18304.5 ave 19839 max 16636 min
|
||||||
|
Histogram: 1 0 0 0 1 0 1 0 0 1
|
||||||
|
|
||||||
|
Total # of neighbors = 73218
|
||||||
|
Ave neighs/atom = 24.921035
|
||||||
|
Neighbor list builds = 25
|
||||||
|
Dangerous builds = 0
|
||||||
|
|
||||||
|
Total wall time: 0:00:08
|
||||||
5894
examples/ASPHERE/vesicle/read_data.vesicle1026
Normal file
5894
examples/ASPHERE/vesicle/read_data.vesicle1026
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
www.cs.sandia.gov/~sjplimp/lammps.html
|
https://www.lammps.org/, Sandia National Laboratories
|
||||||
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
LAMMPS development team: developers@lammps.org
|
||||||
|
|
||||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/* -----------------------------------------------------------------------
|
/* -----------------------------------------------------------------------
|
||||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
https://www.lammps.org/
|
https://www.lammps.org/, Sandia National Laboratories
|
||||||
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
LAMMPS development team: developers@lammps.org
|
||||||
|
|
||||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/* -----------------------------------------------------------------------
|
/* -----------------------------------------------------------------------
|
||||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
www.cs.sandia.gov/~sjplimp/lammps.html
|
https://www.lammps.org/, Sandia National Laboratories
|
||||||
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
LAMMPS development team: developers@lammps.org
|
||||||
|
|
||||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/* -----------------------------------------------------------------------
|
/* -----------------------------------------------------------------------
|
||||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
https://www.lammps.org/
|
https://www.lammps.org/, Sandia National Laboratories
|
||||||
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
LAMMPS development team: developers@lammps.org
|
||||||
|
|
||||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/* -----------------------------------------------------------------------
|
/* -----------------------------------------------------------------------
|
||||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
www.cs.sandia.gov/~sjplimp/lammps.html
|
https://www.lammps.org/, Sandia National Laboratories
|
||||||
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
LAMMPS development team: developers@lammps.org
|
||||||
|
|
||||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/* -----------------------------------------------------------------------
|
/* -----------------------------------------------------------------------
|
||||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
https://www.lammps.org/
|
https://www.lammps.org/, Sandia National Laboratories
|
||||||
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
LAMMPS development team: developers@lammps.org
|
||||||
|
|
||||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/* -----------------------------------------------------------------------
|
/* -----------------------------------------------------------------------
|
||||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
www.cs.sandia.gov/~sjplimp/lammps.html
|
https://www.lammps.org/, Sandia National Laboratories
|
||||||
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
LAMMPS development team: developers@lammps.org
|
||||||
|
|
||||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
https://www.lammps.org/
|
https://www.lammps.org/, Sandia National Laboratories
|
||||||
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
LAMMPS development team: developers@lammps.org
|
||||||
|
|
||||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||||
|
|||||||
1
examples/COUPLE/plugin/.gitignore
vendored
Normal file
1
examples/COUPLE/plugin/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/build
|
||||||
47
examples/COUPLE/plugin/CMakeLists.txt
Normal file
47
examples/COUPLE/plugin/CMakeLists.txt
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
##########################################
|
||||||
|
# CMake build system for coupling to the LAMMPS library
|
||||||
|
# where the library is loaded dynamically at runtime.
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.10)
|
||||||
|
|
||||||
|
# enforce out-of-source build
|
||||||
|
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
||||||
|
message(FATAL_ERROR "In-source builds are not allowed. You must create and use a build directory. "
|
||||||
|
"Please remove CMakeCache.txt and CMakeFiles first.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
project(liblammpsplugin VERSION 1.0 LANGUAGES C)
|
||||||
|
|
||||||
|
# by default, install into $HOME/.local (not /usr/local),
|
||||||
|
# so that no root access (and sudo) is needed
|
||||||
|
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||||
|
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "Default install path" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ugly hacks for MSVC which by default always reports an old C++ standard in the __cplusplus macro
|
||||||
|
# and prints lots of pointless warnings about "unsafe" functions
|
||||||
|
if(MSVC)
|
||||||
|
if(CMAKE_C_COMPILER_ID STREQUAL "MSVC")
|
||||||
|
if(LAMMPS_EXCEPTIONS)
|
||||||
|
add_compile_options(/EHsc)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package(MPI REQUIRED)
|
||||||
|
# do not include the (obsolete) MPI C++ bindings which makes
|
||||||
|
# for leaner object files and avoids namespace conflicts
|
||||||
|
set(MPI_CXX_SKIP_MPICXX TRUE)
|
||||||
|
|
||||||
|
##########################
|
||||||
|
|
||||||
|
add_executable(simple-plugin simple.c liblammpsplugin.c)
|
||||||
|
target_link_libraries(simple-plugin PRIVATE MPI::MPI_C)
|
||||||
|
target_compile_definitions(simple-plugin PRIVATE LAMMPS_LIB_MPI)
|
||||||
|
|
||||||
|
# link with -ldl or equivalent for plugin loading; except on Windows
|
||||||
|
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||||
|
target_link_libraries(simple-plugin PRIVATE ${CMAKE_DL_LIBS})
|
||||||
|
endif()
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user