merged in current master

This commit is contained in:
Steve Plimpton
2022-11-04 08:22:18 -06:00
3789 changed files with 21727 additions and 7888 deletions

View File

@ -1,6 +1,6 @@
---
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: ""
labels: invalid
assignees: ''
@ -8,8 +8,9 @@ assignees: ''
---
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.
Thanks for your cooperation.
Thank you in advance for your cooperation.

4
README
View File

@ -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
under the terms of the GNU Public License (GPL) version 2.
The primary author of the code is Steve Plimpton, who can be emailed
at sjplimp@sandia.gov. The LAMMPS WWW Site at www.lammps.org has
The code is maintained by the LAMMPS development team who can be emailed
at developers@lammps.org. The LAMMPS WWW Site at www.lammps.org has
more information about the code and its uses.
The LAMMPS distribution includes the following files and directories:

View File

@ -7,6 +7,10 @@ cmake_minimum_required(VERSION 3.10)
if(POLICY CMP0074)
cmake_policy(SET CMP0074 NEW)
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
# pythonx.y-config when cross-compiling. review occasionally if it may be set to NEW
if(POLICY CMP0109)
@ -385,9 +389,9 @@ pkg_depends(EXTRA-MOLECULE MOLECULE)
# detect if we may enable OpenMP support by default
set(BUILD_OMP_DEFAULT OFF)
find_package(OpenMP QUIET)
if(OpenMP_FOUND)
check_include_file_cxx(omp.h HAVE_OMP_H_INCLUDE)
find_package(OpenMP COMPONENTS CXX QUIET)
if(OpenMP_CXX_FOUND)
check_omp_h_include()
if(HAVE_OMP_H_INCLUDE)
set(BUILD_OMP_DEFAULT ON)
endif()
@ -396,8 +400,8 @@ endif()
option(BUILD_OMP "Build with OpenMP support" ${BUILD_OMP_DEFAULT})
if(BUILD_OMP)
find_package(OpenMP REQUIRED)
check_include_file_cxx(omp.h HAVE_OMP_H_INCLUDE)
find_package(OpenMP COMPONENTS CXX REQUIRED)
check_omp_h_include()
if(NOT HAVE_OMP_H_INCLUDE)
message(FATAL_ERROR "Cannot find the 'omp.h' header file required for full OpenMP support")
endif()
@ -727,18 +731,17 @@ list(FIND LANGUAGES "Fortran" _index)
if(_index GREATER -1)
target_link_libraries(lammps PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES})
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
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
pair.h pointers.h region.h timer.h universe.h update.h utils.h variable.h)
if(LAMMPS_EXCEPTIONS)
list(APPEND LAMMPS_CXX_HEADERS exceptions.h)
endif()
set(LAMMPS_CXX_HEADERS angle.h atom.h bond.h citeme.h comm.h command.h compute.h dihedral.h domain.h
error.h exceptions.h fix.h force.h group.h improper.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 pair.h
platform.h pointers.h region.h timer.h universe.h update.h utils.h variable.h)
set(LAMMPS_FMT_HEADERS core.h format.h)
set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_MACHINE})
set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION})
set_target_properties(lammps PROPERTIES PREFIX "lib")
target_include_directories(lammps PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/lammps>)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps ${CMAKE_CURRENT_BINARY_DIR}/includes/lammps/fmt)
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_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)
endif()
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>)
add_library(LAMMPS::lammps ALIAS lammps)
get_target_property(LAMMPS_DEFINES lammps INTERFACE_COMPILE_DEFINITIONS)
@ -969,9 +980,6 @@ if(PKG_GPU)
endif()
message(STATUS "GPU precision: ${GPU_PREC}")
endif()
if(PKG_KOKKOS)
message(STATUS "Kokkos Arch: ${KOKKOS_ARCH}")
endif()
if(PKG_KSPACE)
message(STATUS "<<< FFT settings >>>
-- Primary FFT lib: ${FFT}")

View File

@ -1,5 +1,10 @@
# Find 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-9.0
clang-format-8.0
@ -14,19 +19,27 @@ if(ClangFormat_EXECUTABLE)
OUTPUT_VARIABLE clang_format_version
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(clang_format_version MATCHES "^clang-format version .*")
# Arch Linux
if(clang_format_version MATCHES "^(Ubuntu |)clang-format version .*")
# Arch Linux output:
# 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)
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
"${clang_format_version}")
elseif(clang_format_version MATCHES ".*LLVM version .*")
# CentOS 7 Output
# CentOS 7 output:
# LLVM (http://llvm.org/):
# LLVM version 3.4.2
# Optimized build.

View File

@ -22,7 +22,7 @@ endif()
if(Python_EXECUTABLE)
get_filename_component(_python_path ${Python_EXECUTABLE} PATH)
find_program(Cythonize_EXECUTABLE
NAMES cythonize3 cythonize cythonize.bat
NAMES cythonize-${Python_VERSION_MAJOR}.${Python_VERSION_MINOR} cythonize3 cythonize cythonize.bat
HINTS ${_python_path})
endif()

View File

@ -24,6 +24,21 @@ function(validate_option name values)
endif()
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
function(get_newest_file path variable)
file(GLOB _dirs ${path})

View File

@ -15,8 +15,9 @@ if(Kokkos_ENABLE_OPENMP)
if(NOT BUILD_OMP)
message(FATAL_ERROR "Must enable BUILD_OMP with Kokkos_ENABLE_OPENMP")
else()
if(LAMMPS_OMP_COMPAT_LEVEL LESS 4)
message(FATAL_ERROR "Compiler must support OpenMP 4.0 or later with Kokkos_ENABLE_OPENMP")
# NVHPC does not seem to provide a detectable OpenMP version, but is far beyond version 3.1
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()
@ -138,6 +139,12 @@ if(PKG_KSPACE)
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)
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/dynamical_matrix_kokkos.cpp)

View File

@ -2,7 +2,13 @@
set(MLIAP_ENABLE_PYTHON_DEFAULT OFF)
if(PKG_PYTHON)
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)
endif()
endif()
@ -11,6 +17,9 @@ option(MLIAP_ENABLE_PYTHON "Build ML-IAP package with Python support" ${MLIAP_EN
if(MLIAP_ENABLE_PYTHON)
find_package(Cythonize REQUIRED)
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.14)
find_package(Python COMPONENTS NumPy REQUIRED)
endif()
if(NOT PKG_PYTHON)
message(FATAL_ERROR "Must enable PYTHON package for including Python support in ML-IAP")
endif()

View File

@ -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_MD5)

View File

@ -58,12 +58,12 @@ if(DOWNLOAD_QUIP)
BUILD_COMMAND env QUIP_ARCH=lammps make libquip
INSTALL_COMMAND ""
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)
add_library(LAMMPS::QUIP UNKNOWN IMPORTED)
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}")
target_link_libraries(lammps PRIVATE LAMMPS::QUIP)
add_dependencies(LAMMPS::QUIP quip_build)

View File

@ -47,15 +47,15 @@ if(DOWNLOAD_PLUMED)
endif()
message(STATUS "PLUMED download requested - we will build our own")
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")
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")
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()
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.7.4/plumed-src-2.7.4.tgz" CACHE STRING "URL for PLUMED tarball")
set(PLUMED_MD5 "858e0b6aed173748fc85b6bc8a9dcb3e" CACHE STRING "MD5 checksum of PLUMED tarball")
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 "6bfe72ebdae63dc38a9ca27d9b0e08f8" CACHE STRING "MD5 checksum of PLUMED tarball")
mark_as_advanced(PLUMED_URL)
mark_as_advanced(PLUMED_MD5)
@ -78,12 +78,12 @@ if(DOWNLOAD_PLUMED)
add_library(LAMMPS::PLUMED UNKNOWN IMPORTED)
add_dependencies(LAMMPS::PLUMED plumed_build)
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")
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")
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 IMPORTED_LOCATION ${INSTALL_DIR}/lib/libplumedWrapper.a INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}")
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/${CMAKE_STATIC_LIBRARY_PREFIX}plumedWrapper${CMAKE_STATIC_LIBRARY_SUFFIX} INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}")
endif()
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
@ -96,7 +96,7 @@ else()
elseif(PLUMED_MODE STREQUAL "SHARED")
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.shared)
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)
endif()
set_target_properties(LAMMPS::PLUMED PROPERTIES INTERFACE_LINK_LIBRARIES "${PLUMED_LOAD}")

View File

@ -1,4 +1,9 @@
find_package(VTK REQUIRED NO_MODULE)
include(${VTK_USE_FILE})
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()

View File

@ -28,10 +28,3 @@ set(MPI_CXX "clang++" CACHE STRING "" FORCE)
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
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)

View File

@ -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_RELEASE "-O3 -DNDEBUG -std=f2003" CACHE STRING "" FORCE)
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)

View 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)

View File

@ -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_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)
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)

View File

@ -7,10 +7,3 @@ set(MPI_CXX "pgc++" CACHE STRING "" FORCE)
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
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)

View File

@ -38,16 +38,14 @@ endif
# override settings for PIP commands
# 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
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.
# we only want to use explicitly listed files.
DOXYFILES = $(shell sed -n -e 's/\#.*$$//' -e '/^ *INPUT \+=/,/^[A-Z_]\+ \+=/p' doxygen/Doxyfile.in | sed -e 's/@LAMMPS_SOURCE_DIR@/..\/src/g' -e 's/\\//g' -e 's/ \+/ /' -e 's/[A-Z_]\+ \+= *\(YES\|NO\|\)//')
.PHONY: help clean-all clean clean-spelling epub mobi rst html pdf spelling anchor_check style_check char_check xmlgen 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
@(\
. $(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 ;\
ln -sf Manual.html html/index.html;\
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
@ -114,7 +114,9 @@ fasthtml: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX)
@mkdir -p fasthtml
@(\
. $(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 ;\
)
@rm -rf fasthtml/_sources
@ -144,6 +146,8 @@ epub: xmlgen $(VENV) $(SPHINXCONFIG)/conf.py $(ANCHORCHECK)
@cp src/JPG/*.* epub/JPG
@(\
. $(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 ;\
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
deactivate ;\
@ -163,7 +167,9 @@ 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
@(\
. $(VENV)/bin/activate ; env PYTHONWARNINGS= \
sphinx-build $(SPHINXEXTRA) -b latex -c $(SPHINXCONFIG) -d $(BUILDDIR)/doctrees $(RSTDIR) latex ;\
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 ;\
rm -f $(BUILDDIR)/doxygen/xml/run.stamp;\
echo "############################################" ;\
rst_anchor_check src/*.rst ;\

View File

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

View File

@ -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
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
folder using the ``ctest`` command, which is part of the CMake software.
The output of this command will be looking something like this::

View File

@ -234,7 +234,7 @@ LAMMPS code. This also applies to the ``-DLAMMPS_BIGBIG``\ ,
Makefile you use.
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:
.. 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;
follow the instructions in ``lib/kim/README``. You can also do
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.
.. code-block:: bash
@ -954,7 +954,7 @@ more details.
You can download and build the MS-CG library manually if you
prefer; follow the instructions in ``lib/mscg/README``\ . You 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/mscg/Install.py`` script with the specified args:
.. code-block:: bash
@ -1011,7 +1011,7 @@ POEMS package
``lib/poems``\ . You can do this manually if you prefer; follow
the instructions in ``lib/poems/README``\ . You can also do it in
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:
.. 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
prefer; follow the instructions in ``lib/voronoi/README``. You
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:
.. 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
instructions in ``lib/atc/README``. You can also do it in one
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:
.. code-block:: bash
@ -1230,7 +1230,7 @@ AWPMD package
``lib/awpmd``. You can do this manually if you prefer; follow the
instructions in ``lib/awpmd/README``. You can also do it in one
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:
.. 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
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:
.. code-block:: bash
@ -1334,20 +1334,30 @@ This package depends on the KSPACE package.
.. tab:: CMake build
No additional settings are needed besides ``-D PKG_KSPACE=yes`` and ``-D
PKG_ELECTRODE=yes``.
No additional settings are needed besides ``-D PKG_KSPACE=yes`` and
``-D PKG_ELECTRODE=yes``.
.. tab:: Traditional make
The package is activated with ``make yes-KSPACE`` and ``make
yes-ELECTRODE``
Before building LAMMPS, you must configure the ELECTRODE support
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
LAPACK linear algebra libraries. As explained in ``lib/awpmd/README``
these can either exist on your system, or you can use the files provided
in ``lib/linalg``. In the latter case you also need to build the library
in ``lib/linalg`` with a command like these:
Note that the ``Makefile.lammps`` file has settings for the BLAS
and LAPACK linear algebra libraries. These can either exist on
your system, or you can use the files provided in ``lib/linalg``.
In the latter case you also need to build the library in
``lib/linalg`` with a command like these:
.. code-block:: bash
@ -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 gfortran" # build with GNU Fortran compiler
The package itself is activated with ``make yes-KSPACE`` and
``make yes-ELECTRODE``
----------
.. _ml-pace:
@ -1555,7 +1568,7 @@ the HDF5 library.
``lib/h5md``. You can do this manually if you prefer; follow the
instructions in ``lib/h5md/README``. You can also do it in one
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:
.. 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;
follow the instructions in ``lib/hdnnp/README``\ . You can also do it in
one step from the ``lammps/src`` dir, using a command like these, which
simply invoke the ``lib/hdnnp/Install.py`` script with the specified args:
simply invokes the ``lib/hdnnp/Install.py`` script with the specified args:
.. 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
``lib/mesont``\ . You can also do it in one step from the
``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:
.. 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
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
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:
.. 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
prefer; follow the instructions in ``lib/scafacos/README``. You
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:
.. 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
the instructions in ``lib/smd/README``. You can also do it in one
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:
.. code-block:: bash

View File

@ -205,7 +205,7 @@ OPT.
* :doc:`mesont/tpm <pair_mesont_tpm>`
* :doc:`mgpt <pair_mgpt>`
* :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:`momb <pair_momb>`
* :doc:`morse (gkot) <pair_morse>`
@ -295,6 +295,7 @@ OPT.
* :doc:`vashishta (gko) <pair_vashishta>`
* :doc:`vashishta/table (o) <pair_vashishta>`
* :doc:`wf/cut <pair_wf_cut>`
* :doc:`ylz <pair_ylz>`
* :doc:`yukawa (gko) <pair_yukawa>`
* :doc:`yukawa/colloid (go) <pair_yukawa_colloid>`
* :doc:`zbl (gko) <pair_zbl>`

View File

@ -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
compatible with the current version of LAMMPS. Due to the active
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
LAMMPS :doc:`programming style conventions <Modify_style>`, especially
if you are considering to submit the updated version for inclusion into

File diff suppressed because it is too large Load Diff

View File

@ -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
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:
* :doc:`pair_style 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/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/disp/tip4p <kspace_style>`
For both models, the bond lengths and bond angles should be held fixed
using the :doc:`fix shake <fix_shake>` command.
The bond lengths and bond angles should be held fixed using the
: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
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
|
Note that the when using the TIP4P pair style, the neighbor list
cutoff for Coulomb interactions is effectively extended by a distance
2 \* (OM distance), to account for the offset distance of the
fictitious charges on O atoms in water molecules. Thus it is
typically best in an efficiency sense to use a LJ cutoff >= Coulomb
cutoff + 2\*(OM distance), to shrink the size of the neighbor list.
This leads to slightly larger cost for the long-range calculation, so
you can test the trade-off for your model. The OM distance and the LJ
and Coulombic cutoffs are set in the :doc:`pair_style lj/cut/tip4p/long <pair_lj_cut_tip4p>` command.
Note that the when using the TIP4P pair style, the neighbor list cutoff
for Coulomb interactions is effectively extended by a distance 2 \* (OM
distance), to account for the offset distance of the fictitious charges
on O atoms in water molecules. Thus it is typically best in an
efficiency sense to use a LJ cutoff >= Coulomb cutoff + 2\*(OM
distance), to shrink the size of the neighbor list. This leads to
slightly larger cost for the long-range calculation, so you can test the
trade-off for your model. The OM distance and the LJ and Coulombic
cutoffs are set in the :doc:`pair_style lj/cut/tip4p/long
<pair_lj_cut_tip4p>` command.
Wikipedia also has a nice article on `water models <https://en.wikipedia.org/wiki/Water_model>`_.

View File

@ -2,12 +2,13 @@ LAMMPS Library Interfaces
*************************
As described on the :doc:`library interface to LAMMPS <Howto_library>`
page, LAMMPS can be built as a library (static or shared), so that
it can be called by another code, used in a :doc:`coupled manner
page, LAMMPS can be built as a library (static or shared), so that it
can be called by another code, used in a :doc:`coupled manner
<Howto_couple>` with other codes, or driven through a :doc:`Python
script <Python_head>`. Even the LAMMPS standalone executable is
essentially a thin wrapper on top of the LAMMPS library, creating a
LAMMPS instance, processing input and then existing.
script <Python_head>`. The LAMMPS standalone executable itself is
essentially a thin wrapper on top of the LAMMPS library, which creates a
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
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
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::
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
Cplusplus

View File

@ -42,7 +42,7 @@ descriptions of all commands included in the LAMMPS code.
.. only:: html
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.
.. _lws: https://www.lammps.org

View File

@ -359,6 +359,12 @@ you are uncertain, please ask.
- 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
FILE pointers and only be done on MPI rank 0. Use the :cpp:func:`utils::logmesg`
convenience function where possible.

View File

@ -200,6 +200,7 @@ particle models including ellipsoids, 2d lines, and 3d triangles.
* :doc:`Howto spherical <Howto_spherical>`
* :doc:`pair_style gayberne <pair_gayberne>`
* :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_resquared_extra.pdf <PDF/pair_resquared_extra.pdf>`_
* examples/ASPHERE
@ -1736,8 +1737,6 @@ must be installed.
.. versionadded:: 30Jun2020
.. versionadded:: 30Jun2020
**Supporting info:**
* src/ML-IAP: filenames -> commands

View File

@ -16,46 +16,47 @@ simulation. An example set of statistics is shown here:
.. 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
97.0% CPU use with 4 MPI tasks x no OpenMP threads
Performance: 54.985 ns/day, 0.436 hours/ns, 318.201 timesteps/s, 637.674 katom-step/s
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
---------------------------------------------------------------
Pair \| 1.9808 \| 2.0134 \| 2.0318 \| 1.4 \| 71.60
Bond \| 0.0021894 \| 0.0060319 \| 0.010058 \| 4.7 \| 0.21
Kspace \| 0.3207 \| 0.3366 \| 0.36616 \| 3.1 \| 11.97
Neigh \| 0.28411 \| 0.28464 \| 0.28516 \| 0.1 \| 10.12
Comm \| 0.075732 \| 0.077018 \| 0.07883 \| 0.4 \| 2.74
Output \| 0.00030518 \| 0.00042665 \| 0.00078821 \| 1.0 \| 0.02
Modify \| 0.086606 \| 0.086631 \| 0.086668 \| 0.0 \| 3.08
Other \| \| 0.007178 \| \| \| 0.26
Pair \| 0.61419 \| 0.62872 \| 0.64325 \| 1.8 \| 66.69
Bond \| 0.0028608 \| 0.0028899 \| 0.002919 \| 0.1 \| 0.31
Kspace \| 0.12652 \| 0.14048 \| 0.15444 \| 3.7 \| 14.90
Neigh \| 0.10242 \| 0.10242 \| 0.10242 \| 0.0 \| 10.86
Comm \| 0.026753 \| 0.027593 \| 0.028434 \| 0.5 \| 2.93
Output \| 0.00018341 \| 0.00030942 \| 0.00043542 \| 0.0 \| 0.03
Modify \| 0.039117 \| 0.039348 \| 0.039579 \| 0.1 \| 4.17
Other \| \| 0.001041 \| \| \| 0.11
Nlocal: 501 ave 508 max 490 min
Histogram: 1 0 0 0 0 0 1 1 0 1
Nghost: 6586.25 ave 6628 max 6548 min
Histogram: 1 0 1 0 0 0 1 0 0 1
Neighs: 177007 ave 180562 max 170212 min
Histogram: 1 0 0 0 0 0 0 1 1 1
Nlocal: 1002 ave 1006 max 998 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Nghost: 8670.5 ave 8691 max 8650 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Neighs: 354010 ave 357257 max 350763 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Total # of neighbors = 708028
Ave neighs/atom = 353.307
Ave special neighs/atom = 2.34032
Total # of neighbors = 708020
Ave neighs/atom = 353.30339
Ave special neighs/atom = 2.3403194
Neighbor list builds = 26
Dangerous builds = 0
----------
The first section provides a global loop timing summary. The *loop
time* is the total wall-clock time for the simulation to run. The
*Performance* line is provided for convenience to help predict how
long it will take to run a desired physical simulation. The *CPU use*
line provides the CPU utilization per MPI task; it should be close to
100% times the number of OpenMP threads (or 1 of not using OpenMP).
Lower numbers correspond to delays due to file I/O or insufficient
thread utilization.
The first section provides a global loop timing summary. The *loop time*
is the total wall-clock time for the simulation to run. The
*Performance* line is provided for convenience to help predict how long
it will take to run a desired physical simulation and to have numbers
useful for performance comparison between different simulation settings
or system sizes. The *CPU use* line provides the CPU utilization per
MPI task; it should be close to 100% times the number of OpenMP threads
(or 1 of not using OpenMP). Lower numbers correspond to delays due to
file I/O or insufficient thread utilization.
----------

View File

@ -21,7 +21,7 @@ Examples
bond_coeff 5 80.0 1.2
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 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
bond_coeff carbonyl 80.0 1.2

View File

@ -23,15 +23,16 @@ Description
"""""""""""
This command deletes all atoms, restores all settings to their default
values, and frees all memory allocated by LAMMPS. Once a clear
command has been executed, it is almost as if LAMMPS were starting
over, with only the exceptions noted below. This command enables
multiple jobs to be run sequentially from one input script.
values, and frees all memory allocated by LAMMPS. Once a clear command
has been executed, it is almost as if LAMMPS were starting over, with
only the exceptions noted below. This command enables multiple jobs to
be run sequentially from one input script.
These settings are not affected by a clear command: the working
directory (:doc:`shell <shell>` command), log file status
(:doc:`log <log>` command), echo status (:doc:`echo <echo>` command), and
input script variables (:doc:`variable <variable>` command).
directory (:doc:`shell <shell>` command), log file status (:doc:`log
<log>` command), echo status (:doc:`echo <echo>` command), and input
script variables except for *atomfile* style variables (:doc:`variable
<variable>` command).
Restrictions
""""""""""""

View File

@ -17,7 +17,7 @@ Syntax
.. parsed-literal::
*replace* arg = name of per-atom variable
*refresh* arg = name of per-atom variable
Examples
""""""""

View File

@ -6,7 +6,7 @@ compute rigid/local command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
compute ID group-ID rigid/local rigidID input1 input2 ...
@ -25,6 +25,9 @@ Syntax
quatw, quati, quatj, quatk,
tqx, tqy, tqz,
inertiax, inertiay, inertiaz
.. parsed-literal::
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
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
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
information for N bodies is generated. N may be less than the # of
bodies defined by the fix rigid command, if the atoms in some bodies
information for :math:`N` bodies is generated. :math:`N` may be less than the
number of bodies defined by the fix rigid command, if the atoms in some bodies
are not in the *group-ID*\ .
.. 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
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
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
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.
The *inertiax*, *inertiay*, *inertiaz* attributes are components of
diagonalized inertia tensor for the body, i.e the 3 moments of inertia
for the body around its principal axes, as computed internally by
diagonalized inertia tensor for the body (i.e., the three moments of inertia
for the body around its principal axes), as computed internally by
LAMMPS.
----------
@ -169,10 +172,10 @@ corresponding attribute is in:
* vx,vy,vz = velocity units
* fx,fy,fz = force 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
* tqx,tqy,tqz = torque units
* inertiax,inertiay,inertiaz = mass\*distance\^2 units
* inertiax,inertiay,inertiaz = mass\*distance\ :math:`^2` units
Restrictions
""""""""""""

View File

@ -13,7 +13,7 @@ Syntax
* ID, group-ID are documented in :doc:`compute <compute>` command
* voronoi/atom = style name of this compute command
* 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::

View File

@ -28,7 +28,7 @@ Syntax
region-ID = create atoms within this region, use NULL for entire simulation box
* 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::

View File

@ -26,6 +26,13 @@ Syntax
* zero or more keywords may be appended
* 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
""""""""
@ -101,13 +108,13 @@ Several keywords can be appended to the argument list to alter the
default behaviors.
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
the specified group, it will be turned off (or on if the *undo*
keyword is used).
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
example, for style *angle*, if *type* is specified as 2, then all
angles with current type = :math:`-2` are reset to type = :math:`2`.

View File

@ -216,7 +216,7 @@ or multiple smaller files).
to a dump file may be slightly outside the simulation box.
Re-neighbor timesteps will not typically coincide with the
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.
.. note::

View File

@ -31,7 +31,7 @@ Syntax
v_name = per-atom vector calculated by an atom-style variable with name
* 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::

View File

@ -35,7 +35,7 @@ Syntax
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
* 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::

View File

@ -28,7 +28,7 @@ Syntax
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
* 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::

View File

@ -6,17 +6,28 @@ fix bocs command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID bocs keyword values ...
fix ID group-ID bocs keyword values ...
* 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::
keyword = *temp* or *cgiso* or *analytic* or *linear_spline* or *cubic_spline*
*temp* values = Tstart Tstop Tdamp
*cgiso* values = Pstart Pstop Pdamp
*basis set*
*analytic* values = V_avg N_particles N_coeff Coeff_1 Coeff_2 ... Coeff_N
*linear_spline* values = input_filename
*cubic_spline* values = input_filename
*cgiso* values = Pstart Pstop Pdamp basis_set args
basis_set = *analytic* or *linear_spline* or *cubic_spline*
*analytic* args = V_avg N_particles N_coeff Coeff_1 Coeff_2 ... Coeff_N
*linear_spline* args = 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
""""""""
@ -24,25 +35,24 @@ Examples
.. 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 cubic_spline input_Fv.dat
thermo_modify press 1_press
Description
"""""""""""
These commands incorporate a pressure correction as described by
Dunn and Noid in :ref:`(Dunn1) <bocs-Dunn1>` to the standard MTTK
barostat by Martyna et. al. in :ref:`(Martyna) <bocs-Martyna>` .
The first half of the command mimics a standard fix npt command:
Dunn and Noid :ref:`(Dunn1) <bocs-Dunn1>` to the standard MTK
barostat by Martyna et al. :ref:`(Martyna) <bocs-Martyna>`.
The first half of the command mimics a standard :doc:`fix npt <fix_nh>`
command:
.. code-block:: LAMMPS
fix 1 all bocs temp Tstart Tstop Tcoupl cgiso Pstart Pstop Pdamp
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 pressure correction equation. The choices are: *analytic*, *linear_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
value and its corresponding pressure correction. The volumes in the file
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*,
the volumes should all be in cubic Angstroms, and the pressure corrections
should all be in atmospheres. Furthermore, the table should start/end at a
should be provided in the proper units (e.g., if you are using *units real*,
the volumes should all be in :math:`\mathrm{\mathring{A}}^3` and the pressure
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
during the simulation. If the system ever reaches a volume outside of the
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
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
coefficients should all be in atmospheres \* cubic Angstroms.
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 :math:`\mathrm{\mathring{A}^3}`
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
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
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
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
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

View File

@ -6,7 +6,7 @@ fix bond/break command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID bond/break Nevery bondtype Rmax keyword values ...
@ -15,7 +15,7 @@ Syntax
* Nevery = attempt bond breaking every this many steps
* bondtype = type of bonds to break
* 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*
.. 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
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
interactions based on the current geometry of a small cluster of atoms
and effectively creates and destroys bonds and higher-order many-body
interactions from timestep to timestep as atoms move.
A check for possible bond breakage is performed every *Nevery*
timesteps. If two bonded atoms I,J are further than a distance *Rmax*
of each other, if the bond is of type *bondtype*, and if both I and J
are in the specified fix group, then I,J is labeled as a "possible"
bond to break.
timesteps. If two bonded atoms :math:`i` and :math:`j` are farther than the
distance *Rmax* from each other, the bond is of type *bondtype*, and both
:math:`i` and :math:`j` are in the specified fix group, then the bond between
: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
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.
After this is done, if atom I is bonded to atom J in its sole bond,
and atom J is bonded to atom I in its sole bond, then the I,J bond is
"eligible" to be broken.
After this is done, if atom :math:`i` is bonded to atom :math:`j` in its sole
bond, and atom :math:`j` is bonded to atom :math:`j` in its sole bond, then the
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
broken bond on a given timestep. It also means that if atom I chooses
atom J as its sole partner, but atom J chooses atom K is its sole
partner (due to Rjk > Rij), then this means atom I will not be part of
a broken bond on this timestep, even if it has other possible bond
partners.
broken bond on a given time step. It also means that if atom :math:`i` chooses
atom :math:`j` as its sole partner, but atom :math:`j` chooses atom :math:`k`
as its sole partner (because :math:`R_{jk} > R_{ij}`), then this means atom
:math:`i` will not be part of a broken bond on this time step, even if it has
other possible bond partners.
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.
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
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)
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.
.. note::
@ -88,17 +88,17 @@ part of bonds, angles, etc.
becomes two molecules due to the broken bond, all atoms in both new
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
atoms. It also communicates between neighboring processors to
coordinate which bonds are broken. Moreover, if any bonds are broken,
neighbor lists must be immediately updated on the same timestep. This
is to insure that any pairwise interactions that should be turned "on"
neighbor lists must be immediately updated on the same time step. This
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
presence of the bond and the settings of the
:doc:`special_bonds <special_bonds>` command, will be immediately
recognized. All of these operations increase the cost of a timestep.
Thus you should be cautious about invoking this fix too frequently.
recognized. All of these operations increase the cost of a time step.
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.
@ -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
should be careful not to choose bond breaking criteria that induce a
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
far from the equilibrium bond length, then the 2 atoms will be
harmonic bond and break it when two atoms are separated by a distance
far from the equilibrium bond length, then the two atoms will be
dramatically released when the bond is broken. More generally, you
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
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
are relevant to this fix.
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
are "intensive".
This fix computes two statistics, which it stores in a global vector of
length 2. This vector can be accessed by various :doc:`output commands
<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
* (2) cumulative # of bonds broken
(1) number of bonds broken on the most recent breakage time step
(2) cumulative number of bonds broken
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>`.

View File

@ -10,7 +10,7 @@ fix bond/create/angle command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
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
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
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
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*
keywords below.
This is different than a :doc:`pairwise <pair_style>` bond-order
potential such as Tersoff or AIREBO which infers bonds and many-body
This process is different than a :doc:`pair-wise <pair_style>` bond-order
potential such as Tersoff or AIREBO, which infer bonds and many-body
interactions based on the current geometry of a small cluster of atoms
and effectively creates and destroys bonds and higher-order many-body
interactions from timestep to timestep as atoms move.
and effectively create and destroy bonds and higher-order many-body
interactions from time step to time step as the atoms move.
A check for possible new bonds is performed every *Nevery* timesteps.
If two atoms I,J are within a distance *Rmin* of each other, if I is
of atom type *itype*, if J is of atom type *jtype*, if both I and J
are in the specified fix group, if a bond does not already exist
between I and J, and if both I and J meet their respective *maxbond*
requirement (explained below), then I,J is labeled as a "possible"
bond pair.
A check for possible new bonds is performed every *Nevery* time steps.
If two atoms :math:`i` and :math:`j` are within a distance *Rmin* of each
other, atom :math:`i` is of type *itype*, atom :math:`j` is of type *jtype*,
and both :math:`i` and :math:`j` are in the specified fix group, then if a bond
does not already exist between atoms :math:`i` and :math:`j`, and if both
:math:`i` and :math:`j` meet their respective *maxbond* requirements (explained
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
bond partners. Every atom checks its list of possible bond partners
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
atom I as its sole partner, then the I,J bond is "eligible" to be
formed.
this is done, if atom :math:`i` has atom :math:`j` as its sole partner and
atom :math:`j` has atom :math:`i` as its sole partner, then the
:math:`i,j` bond is "eligible" to be formed.
Note that these rules mean an atom will only be part of at most one
created bond on a given timestep. It also means that if atom I
chooses atom J as its sole partner, but atom J chooses atom K is its
sole partner (due to Rjk < Rij), then this means atom I will not form
a bond on this timestep, even if it has other possible bond partners.
Note that these rules mean that an atom will only be part of at most one
created bond on a given time step. It also means that if atom :math:`i`
chooses atom :math:`j` as its sole partner, but atom :math:`j` chooses atom
:math:`k` as its sole partner (because :math:`R_{jk} < R_{ij}`), then atom
: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
pairwise cutoff distance between *itype* and *jtype* atoms, as defined
It is permissible to have *itype* = *jtype*\ . *Rmin* must be :math:`\leq` the
pair-wise cutoff distance between *itype* and *jtype* atoms, as defined
by the :doc:`pair_style <pair_style>` command.
The *iparam* and *jparam* keywords can be used to limit the bonding
functionality of the participating atoms. Each atom keeps track of
how many bonds of *bondtype* it already has. If atom I of
itype already has *maxbond* bonds (as set by the *iparam*
keyword), then it will not form any more. Likewise for atom J. If
*maxbond* is set to 0, then there is no limit on the number of bonds
how many bonds of *bondtype* it already has. If atom :math:`i` of type
*itype* already has *maxbond* bonds (as set by the *iparam*
keyword), then it will not form any more, and likewise for atom :math:`j`.
If *maxbond* is set to 0, then there is no limit on the number of bonds
that can be formed with that atom.
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
of type *bondtype*\ . This means it can now interact in a pairwise
the atom type of atom :math:`i` or :math:`j` when it reaches *maxbond* number
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
:doc:`pair_coeff <pair_coeff>` coefficients. If you do not wish the
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
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
bond/create/angle command. It allows to specify a minimal and maximal
angle *amin* and *amax* between the two prospective bonding partners and
a third particle that is already bonded to one of the two partners.
Such a criterion can be important when new angles are defined together
with the formation of a new bond. Without a restriction on the
bond/create/angle command. It allows one to specify minimum and maximum
angles *amin* and *amax*, respectively, between the two prospective bonding
partners and a third particle that is already bonded to one of the two
partners. Such a criterion can be important when new angles are defined
together with the formation of a new bond. Without a restriction on the
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*.
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
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
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.
.. 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
: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
atoms via the :doc:`create atoms <create_atoms>` command, e.g. for a
percolation simulation.
atoms via the :doc:`create atoms <create_atoms>` command (e.g., for a
percolation simulation).
.. note::
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
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
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"
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
: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*
keywords, the list of topological neighbors is updated for atoms
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
created between atoms I,J. If J has a bonded neighbor K, then K
becomes a second neighbor of I. Even if the *atype* keyword is not used
to create angle I-J-K, the pairwise interaction between I and K will
be potentially turned off or weighted by the 1-3 weighting specified
created between atoms :math:`i` and :math:`j`. If :math:`j` has a bonded
neighbor :math:`k`, then :math:`k` becomes a second neighbor of :math:`i`.
Even if the *atype* keyword is not used to create angle :math:`\angle ijk`,
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
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
: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
*bondtype*\ . Similarly, if new atom types are specified by the
*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.
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
list. It also communicates between neighboring processors to
coordinate which bonds are created. Moreover, if any bonds are
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
excluded by the presence of the bond and the settings of the
:doc:`special_bonds <special_bonds>` command, will be immediately
recognized. All of these operations increase the cost of a timestep.
Thus you should be cautious about invoking this fix too frequently.
recognized. All of these operations increase the cost of a time step.
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.
@ -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
should be careful not to choose bond creation criteria that induce a
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
far from the equilibrium bond length, then the 2 atoms will oscillate
harmonic bond and create it when two atoms are separated by a distance
far from the equilibrium bond length, then the two atoms will oscillate
dramatically when the bond is formed. More generally, you may need to
thermostat your system to compensate for energy changes resulting from
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
"intensive".
These are the 2 quantities:
The two quantities in the global vector are
* (1) # of bonds created on the most recent creation timestep
* (2) cumulative # of bonds created
(1) number of bonds created on the most recent creation time step
(2) cumulative number of bonds created
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>`.

View File

@ -6,12 +6,12 @@ fix bond/react command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
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 ...
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 &
...
* ID, group-ID are documented in :doc:`fix <fix>` command.
@ -22,11 +22,12 @@ Syntax
.. parsed-literal::
*stabilization* values = *no* or *yes* *group-ID* *xmax*
*no* = no reaction site stabilization (default)
*yes* = perform reaction site stabilization
*group-ID* = user-assigned prefix for the dynamic group of atoms not currently involved in a reaction
*xmax* = xmax value that is used by an internally-created :doc:`nve/limit <fix_nve_limit>` integrator
*stabilization* values = stabilize group_prefix xmax
stabilize = *yes* or *no*
*yes* = perform reaction site stabilization
*no* = no reaction site stabilization (default)
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*
*yes* = update molecule IDs based on new global topology (default)
*no* = do not update molecule IDs
@ -51,18 +52,18 @@ Syntax
*max_rxn* value = N
N = maximum number of reactions allowed to occur
*stabilize_steps* value = timesteps
timesteps = number of timesteps to apply the internally-created :doc:`nve/limit <fix_nve_limit>` fix to reacting atoms
*custom_charges* value = *no* or *fragmentID*
no = update all atomic charges (default)
fragmentID = ID of molecule fragment whose charges are updated
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 fragment-ID
*no* = update all atomic charges (default)
fragment-ID = ID of molecule fragment whose charges are updated
*molecule* value = *off* or *inter* or *intra*
off = allow both inter- and intramolecular reactions (default)
inter = search for reactions between molecules with different IDs
intra = search for reactions within the same molecule
*modify_create* keyword values
*fit* value = *all* or *fragmentID*
all = use all eligible atoms for create-atoms fit (default)
fragmentID = ID of molecule fragment used for create-atoms fit
*off* = allow both inter- and intramolecular reactions (default)
*inter* = search for reactions between molecules with different IDs
*intra* = search for reactions within the same molecule
*modify_create* values = keyword arg
*fit* arg = *all* or fragment-ID
*all* = use all eligible atoms for create-atoms fit (default)
fragment-ID = ID of molecule fragment used for create-atoms fit
*overlap* value = R
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
site.
Fix bond/react does not use quantum mechanical (eg. fix qmmm) or
pairwise bond-order potential (eg. Tersoff or AIREBO) methods to
Fix bond/react does not use quantum mechanical (e.g., :doc:`fix qmmm <fix_qmmm>`) or
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
probabilistic criteria to effect predetermined topology changes in
simulations using standard force fields.
This fix was created to facilitate the dynamic creation of polymeric,
amorphous or highly cross-linked systems. A suggested workflow for
using this fix is: 1) identify a reaction to be simulated 2) build a
molecule template of the reaction site before the reaction has
occurred 3) build a molecule template of the reaction site after the
reaction has occurred 4) create a map that relates the
template-atom-IDs of each atom between pre- and post-reaction molecule
templates 5) fill a simulation box with molecules and run a simulation
with fix bond/react.
using this fix is
(1) identify a reaction to be simulated
(2) build a molecule template of the reaction site before the reaction has occurred
(3) build a molecule template of the reaction site after the reaction has occurred
(4) create a map that relates the template-atom-IDs of each atom between pre- and post-reaction molecule templates
(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
reactions can be simultaneously applied by specifying multiple *react*
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.
Reaction site stabilization is performed by including reacting atoms
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
integrated by the internal nve/limit, they are prevented from being
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
atoms when using the *stabilization* keyword. The first group contains
all atoms currently involved in a reaction; this group is
automatically thermostatted by an internally-created
automatically time-integrated by an internally-created
:doc:`nve/limit <fix_nve_limit>` integrator. The second group contains
all atoms currently not involved in a reaction. This group should be
used by a thermostat in order to time integrate the system. The name
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'
to the group-ID argument of the *stabilization* keyword, as shown in
the second example above.
.. note::
When using reaction stabilization, you should generally not have
a separate thermostat which acts on the 'all' group.
When using reaction stabilization, you should generally **not** have
a separate thermostat that acts on the "all" group.
The group-ID set using the *stabilization* keyword can be an existing
static group or a previously-unused group-ID. It cannot be specified
as 'all'. If the group-ID is previously unused, the fix bond/react
as "all". If the group-ID is previously unused, the fix bond/react
command creates a :doc:`dynamic group <group>` that is initialized to
include all atoms. If the group-ID is that of an existing static
group, the group is used as the parent group of new,
internally-created dynamic group. In both cases, this new dynamic
group is named by appending '_REACT' to the group-ID, e.g.
nvt_grp_REACT. By specifying an existing group, you may thermostat
group is named by appending '_REACT' to the group-ID (e.g.,
nvt_grp_REACT). By specifying an existing group, you may thermostat
constant-topology parts of your system separately. The dynamic group
contains only 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
integrator such as nvt, npt, or nve, as shown in the second example
above (full examples can be found at examples/PACKAGES/reaction). The time
integrator such as :doc:`fix nvt <fix_nh>`, :doc:`fix npt <fix_nh>`, or
: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
due to the internal dynamic grouping performed by fix bond/react.
.. note::
If the group-ID is an existing static group, react-group-IDs
should also be specified as this static group, or a subset.
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>`
command after a reaction occurs, to ensure that molecule IDs are
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.
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.
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*
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
integer.
@ -194,11 +197,11 @@ reaction site is eligible to be modified to match the post-reaction
template.
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
type itype and jtype must be separated by a distance between *Rmin*
and *Rmax*\ . *Rmin* and *Rmax* can be specified with equal-style
:doc:`variables <variable>`. For example, these reaction cutoffs can
be a function of the reaction conversion using the following commands:
met. First, a pair of atoms :math:`i` and :math:`j` within the specified
react-group-ID of type *itype* and *jtype* must be separated by a distance
between *Rmin* and *Rmax*\ . *Rmin* and *Rmax* can be specified with
equal-style :doc:`variables <variable>`. For example, these reaction cutoffs
can be functions of the reaction conversion using the following commands:
.. 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
The following criteria are used if multiple candidate initiator atom
pairs are identified within the cutoff distance: 1) If the initiator
atoms in the pre-reaction template are not 1-2 neighbors (i.e. not
directly bonded) the closest potential partner is chosen. 2)
Otherwise, if the initiator atoms in the pre-reaction template are 1-2
neighbors (i.e. directly bonded) the farthest potential partner is
chosen. 3) Then, if both an atom I and atom J have each other as their
initiator partners, these two atoms are identified as the initiator
atom pair of the reaction site. Note that it can be helpful to select
pairs are identified within the cutoff distance:
(1) If the initiator atoms in the pre-reaction template are not 1--2
neighbors (i.e., not directly bonded) the closest potential partner is
chosen.
(2) Otherwise, if the initiator atoms in the pre-reaction template are 1--2
neighbors (i.e. directly bonded) the farthest potential partner is
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
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
otherwise eligible reaction could be prevented from occurring. Once
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
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
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
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
pre-reaction template contains edge atoms, not all atoms, bonds,
charges, etc. specified in the reaction templates will be updated.
Specifically, topology that involves only atoms that are 'too near' to
template edges will not be updated. The definition of 'too near the
edge' depends on which interactions are defined in the simulation. If
Specifically, topology that involves only atoms that are "too near" to
template edges will not be updated. The definition of "too near the
edge" depends on which interactions are defined in the simulation. If
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
considered 'too near the edge.' If just bonds are defined, only edge
atoms are considered 'too near the edge.'
considered "too near the edge." If just bonds are defined, only edge
atoms are considered "too near the edge."
.. note::
Small molecules, i.e. ones that have all their atoms contained
within the reaction templates, never have edge atoms.
Small molecules (i.e., ones that have all their atoms contained
within the reaction templates) never have edge atoms.
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
@ -282,7 +290,7 @@ provided on the :doc:`molecule <molecule>` command page.
.. note::
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
molecules, enough space for this increased topology/atom must be
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
contains one mandatory keyword and five optional keywords. The
mandatory keyword is 'equivalences':
mandatory keyword is *equivalences*\ :
.. parsed-literal::
N *equivalences* = # of atoms N in the reaction molecule templates
The optional keywords are 'edgeIDs', 'deleteIDs', 'chiralIDs' and
'constraints':
The optional keywords are *edgeIDs*\ , *deleteIDs*\ , *chiralIDs*\ , and
*constraints*\ :
.. 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
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
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
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
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
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
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
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
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
six types of constraints available, as discussed below: 'distance',
'angle', 'dihedral', 'arrhenius', 'rmsd', and 'custom'.
six types of constraints available, as discussed below: "distance",
"angle", "dihedral", "arrhenius", "rmsd", and "custom".
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
can be used to specify which post-reaction atoms are used for 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>` template, and only atoms in this fragment are used for the
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
periodic boundary conditions if applicable. R is defined by the
*overlap* sub-keyword. Note that the default value for R is 0.0, which
within a distance :math:`R` of any created atom, including the effect of
periodic boundary conditions if applicable. :math:`R` is defined by the
*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
atoms are present. The velocity of each created atom is initialized in
a random direction with a magnitude calculated from the instantaneous
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
listing their IDs in the ChiralIDs section. A chiral atom must be
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.
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:
.. parsed-literal::
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
two atoms must be separated by a distance between *rmin* and *rmax*
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::
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
three atoms must form an angle between *amin* and *amax* for the
reaction to occur (where *ID2* is the central atom). Angles must be
specified in degrees. This constraint can be used to enforce a certain
orientation between reacting molecules.
The constraint of type 'dihedral' has the following syntax:
The constraint of type "dihedral" has the following syntax:
.. parsed-literal::
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
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
further details on convention. If *amin* is less than *amax*, these
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
*amin* **or** less than *amax* for the reaction to occur. Angles must
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
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.
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::
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:
@ -469,11 +483,11 @@ The Arrhenius constraint has the following syntax:
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`
is the activation energy (:doc:`units <units>` of energy), and *seed* is a
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
:doc:`compute temp/chunk <compute_temp_chunk>`. Currently, there are no
options for additional temperature averaging or velocity-biased
@ -487,7 +501,7 @@ The constraint of type 'rmsd' has the following syntax:
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
template and the local reaction site (distance units), after optimal
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
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::
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 formula that can be read by the :doc:`variable <variable>` command,
after any special reaction functions are evaluated. If the resulting
expression is zero, the reaction is prevented from occurring;
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
argument and one optional argument. The mandatory argument is the
identifier for an atom-style variable. The second, optional argument
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.
The 'rxnsum' function sums the atom-style variable over the reaction
site, while the 'rxnave' returns the average value. For example, a
The "rxnsum" function sums the atom-style variable over the reaction
site, while the "rxnave" returns the average value. For example, a
constraint on the total potential energy of atoms involved in the
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
total potential energy of the reaction site is above 100. The variable
expression can be interpreted as the probability of the reaction
occurring by using an inequality and the 'random(x,y,z)' function
available as an equal-style variable input, similar to the 'arrhenius'
occurring by using an inequality and the :doc:`random(x,y,z) <variable>`
function available for equal-style variables, similar to the 'arrhenius'
constraint above.
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,
angles, dihedrals or impropers are supported.
A few capabilities to note: 1) You may specify as many *react*
arguments as desired. For example, you could break down a complicated
reaction mechanism into several reaction steps, each defined by its
own *react* argument. 2) While typically a bond is formed or removed
between the initiator atoms specified in the pre-reacted molecule
template, this is not required. 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.
A few capabilities to note:
(1) You may specify as many *react* arguments as desired. For example, you
could break down a complicated reaction mechanism into several reaction
steps, each defined by its own *react* argument.
(2) While typically a bond is formed or removed between the initiator atoms
specified in the pre-reacted molecule template, this is not required.
(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
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
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>`.
A uniform random number between 0.0 and 1.0 is generated and the
eligible reaction only occurs if the random number is less than the
fraction. Up to N reactions are permitted to occur, as optionally
fraction. Up to :math:`N` reactions are permitted to occur, as optionally
specified by the *max_rxn* keyword.
The *stabilize_steps* keyword allows for the specification of how many
timesteps a reaction site is stabilized before being returned to the
time steps a reaction site is stabilized before being returned to the
overall system thermostat. In order to produce the most physical
behavior, this 'reaction site equilibration time' should be tuned to
behavior, this "reaction site equilibration time" should be tuned to
be as small as possible while retaining stability for a given system
or reaction step. After a limited number of case studies, this number
has been set to a default of 60 timesteps. Ideally, it should be
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
situations, decreasing rather than increasing this parameter will
result in an increase in stability.
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
(default). Otherwise, the value should be the name of a molecule
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
intermolecular, intramolecular or either. When the value is set to
'off', molecule IDs are not considered when searching for reactions
(default). When the value is set to 'inter', the initiator atoms must
*off*\ , molecule IDs are not considered when searching for reactions
(default). When the value is set to *inter*\ , the initiator atoms must
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.
A few other considerations:
@ -627,15 +643,15 @@ all currently-reacting atoms:
This command must be added after the fix bond/react command, and
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
between pairs of atoms in the list. It also communicates between
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 can dump out snapshots of the current bond topology via the dump
local command.
You can dump out snapshots of the current bond topology via the
: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.
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
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
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
deleted. Therefore, fix bond/react can only be unfixed after unfixing
all other fixes that use any group created by fix bond/react.
When fix bond/react is ":doc:`unfixed <unfix>`", all internally-created
groups are deleted. Therefore, fix bond/react can only be unfixed after
unfixing all other fixes that use any group created by fix bond/react.
Restrictions
""""""""""""
@ -683,7 +699,7 @@ Default
"""""""
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*
----------

View File

@ -14,7 +14,7 @@ fix brownian/asphere command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID style_name temp seed keyword args
@ -27,23 +27,23 @@ Syntax
.. parsed-literal::
*rng* value = *uniform* or *gaussian* or *none*
*uniform* = use uniform random number generator
*gaussian* = use gaussian random number generator
*none* = turn off noise
*dipole* value = *mux* and *muy* and *muz* for *brownian/asphere*
*mux*, *muy*, and *muz* = update orientation of dipole having direction (*mux*,*muy*,*muz*) in body frame of rigid body
*gamma_r_eigen* values = *gr1* and *gr2* and *gr3* for *brownian/asphere*
*gr1*, *gr2*, and *gr3* = diagonal entries of body frame rotational friction tensor
*gamma_r* values = *gr* for *brownian/sphere*
*gr* = magnitude of the (isotropic) rotational friction tensor
*gamma_t_eigen* values = *gt1* and *gt2* and *gt3* for *brownian/asphere*
*gt1*, *gt2*, and *gt3* = diagonal entries of body frame translational friction tensor
*gamma_t* values = *gt* for *brownian* and *brownian/sphere*
*rng* value = *uniform* or *gaussian* or *none*
*uniform* = use uniform random number generator
*gaussian* = use gaussian random number generator
*none* = turn off noise
*dipole* value = *mux* and *muy* and *muz* for *brownian/asphere*
*mux*, *muy*, and *muz* = update orientation of dipole having direction (*mux*,*muy*,*muz*) in body frame of rigid body
*gamma_r_eigen* values = *gr1* and *gr2* and *gr3* for *brownian/asphere*
*gr1*, *gr2*, and *gr3* = diagonal entries of body frame rotational friction tensor
*gamma_r* values = *gr* for *brownian/sphere*
*gr* = magnitude of the (isotropic) rotational friction tensor
*gamma_t_eigen* values = *gt1* and *gt2* and *gt3* for *brownian/asphere*
*gt1*, *gt2*, and *gt3* = diagonal entries of body frame translational friction tensor
*gamma_t* values = *gt* for *brownian* and *brownian/sphere*
*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
*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
""""""""
@ -71,9 +71,10 @@ positions is
.. 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).
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::
\mathbf{\mu}(t+dt) = \frac{\mathbf{\mu}(t) + \mathbf{\omega} \times \mathbf{\mu}dt
}{|\mathbf{\mu}(t) + \mathbf{\omega} \times \mathbf{\mu}|}
\boldsymbol{\mu}(t+dt) = \frac{\boldsymbol{\mu}(t) + \boldsymbol{\omega} \times \boldsymbol{\mu}dt
}{|\boldsymbol{\mu}(t) + \boldsymbol{\omega} \times \boldsymbol{\mu}|}
which correctly reproduces a Boltzmann distribution of orientations and
rotational diffusion moments (see :ref:`(Ilie) <Ilie1>`) when
.. 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`
and :math:`T_{rot}` is *rotation_temp*.
@ -114,19 +115,20 @@ the quaternion
.. 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
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::
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)`,
:math:`(q_3,q_0,-q_1)`, and :math:`(-q_2,q_1,q_0)`. :math:`\mathbf{\omega}` is
evaluated in the body frame of reference where the friction tensor is diagonal.
See :ref:`(Delong) <Delong1>` for more details of a similar algorithm.
where :math:`\boldsymbol{\Psi}` has rows :math:`(-q_1,-q_2,-q_3)`,
:math:`(q_0,-q_3,q_2)`, :math:`(q_3,q_0,-q_1)`, and :math:`(-q_2,q_1,q_0)`.
:math:`\boldsymbol{\omega}` is evaluated in the body frame of reference where the
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
rotational and translational friction tensors, though such a
relationship should exist in the case of no-slip boundary conditions
between the particles and the surrounding (implicit) solvent. E.g. in
the case of spherical particles, the condition
between the particles and the surrounding (implicit) solvent. For example,
in the case of spherical particles, the condition
: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`
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
translational diffusion and rotational diffusion are given by
*temp/gamma_t* and *rotation_temp/gamma_r*.
@ -150,7 +152,7 @@ See :ref:`(Delong) <Delong1>` for more details of a similar algorithm.
.. note::
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,
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
@ -165,7 +167,7 @@ is generated from a uniform distribution (see
of noise generation as used in :doc:`fix_langevin <fix_langevin>`.
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*
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
their isotropic counterparts). Required for (and only compatible with)
*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
value of *gamma_t_eigen* must be inf (only diffusion in xy plane).
*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 the *x*\ --\ *y* plane).
If the *dipole* keyword is used, then the dipole moments of the particles
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*.
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.
----------
.. 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
*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
access by various :doc:`output commands <Howto_output>`.
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>`.

View File

@ -13,7 +13,7 @@ Syntax
* ID, group-ID are documented in :doc:`fix <fix>` command
* colvars = style name of this fix command
* 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::

View File

@ -17,7 +17,7 @@ Syntax
* M = insert a single atom or molecule every M steps
* seed = random # seed (positive integer)
* 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::

View File

@ -13,7 +13,7 @@ Syntax
* ID, group-ID are documented in :doc:`fix <fix>` command
* imd = style name of this fix command
* 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::

View File

@ -20,7 +20,7 @@ Syntax
* damp = damping parameter (time units)
* seed = random number seed to use for white noise (positive integer)
* 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::

View File

@ -16,7 +16,7 @@ Syntax
* viscosity = the fluid viscosity (units of mass/(time\*length)).
* density = the fluid density.
* 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::
@ -36,6 +36,7 @@ Syntax
N = output the force and torque every N timesteps
file = output file name
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
*scaleGamma* values = type gammaFactor
type = atom type (1-N)

View File

@ -12,7 +12,7 @@ Syntax
* fix-ID = ID of the fix to modify
* one or more keyword/value pairs may be appended
* keyword = *bodyforces* or *colname* or *dynamic/dof* or *energy* or *press* or *respa* or *temp* or *virial*
* keyword = *bodyforces* or *colname* or *dynamic/dof* or *energy* or *press* or *respa* or *temp* or *virial*
.. parsed-literal::

View File

@ -13,7 +13,7 @@ Syntax
* ID, group-ID are documented in :doc:`fix <fix>` command
* style_name = *npt/cauchy*
* 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::

View File

@ -16,7 +16,7 @@ Syntax
* type = atom type to assign to inserted particles (offset for molecule insertion)
* seed = random # seed (positive integer)
* 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::

View File

@ -80,7 +80,7 @@ Syntax
groupID1, groupID2, ... = list of N group IDs
* 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::
@ -115,6 +115,11 @@ Syntax
xflag,yflag,zflag = off/on if component of center-of-mass torque is active
*infile* filename
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
template-ID = ID of molecule template specified in a separate :doc:`molecule <molecule>` command

View File

@ -17,7 +17,7 @@ Syntax
* pdim = *x* or *y* or *z* = direction of momentum transfer
* Nbin = # of layers in pdim direction (must be even number)
* zero or more keyword/value pairs may be appended
* keyword = *swap* or *target*
* keyword = *swap* or *vtarget*
.. parsed-literal::

View File

@ -70,7 +70,7 @@ Syntax
cutoff = distance from wall at which wall-particle interaction is cut off (distance units)
* zero or more keyword/value pairs may be appended
* keyword = *units* or *fld*
* keyword = *units* or *fld* or *pbc*
.. parsed-literal::

View File

@ -14,7 +14,7 @@ Syntax
* wall/piston = style name of this fix command
* face = *zlo*
* 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::
@ -32,6 +32,10 @@ Syntax
*lattice* = the wall position is defined in lattice 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
""""""""

View File

@ -11,7 +11,7 @@ Syntax
kspace_modify keyword value ...
* 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::

View File

@ -6,7 +6,7 @@ mdi command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
mdi option args
@ -19,7 +19,7 @@ Syntax
*elements* args = N_1 N_2 ... N_ntypes
N_1,N_2,...N_ntypes = atomic number for each of ntypes LAMMPS atom types
*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
keywords = *mdi* or *infile* or *extra* or *command*
*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
command can be used. If not, the optional *elements* keyword can
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
for Al. An atomic number must be specified for each of the ntypes
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
LAMMPS atom types. Ntypes is typically specified via the
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
@ -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
<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
issued multiple times, e.g. in a loop that issues a :doc:`clear
<clear>` command, then it cannot initiate or terminate the connection
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
<clear>` command), then it cannot initiate or terminate the connection
multiple times. Instead, the *mdi connect* and *mdi exit* commands
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
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
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
@ -356,7 +356,7 @@ LAMMPS and MDI units, which the other codes will also perform in their
preferred units.
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
""""""""""""""""

View File

@ -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*
*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
M = build neighbor list every this many steps
M = consider building neighbor lists every this many steps
*check* value = *yes* or *no*
*yes* = only build if some atom has moved half the skin distance or more
*no* = always build on 1st step that *every* and *delay* are satisfied
*yes* = only build if at least one atom has moved half the skin distance or more
*no* = always build on 1st step where *every* and *delay* are conditions are satisfied
*once* value = *yes* or *no*
*yes* = only build neighbor list once at start of run and never rebuild
*no* = rebuild neighbor list according to other settings
@ -71,30 +71,53 @@ Description
"""""""""""
This command sets parameters that affect the building and use of
pairwise neighbor lists. Depending on what pair interactions and
other commands are defined, a simulation may require one or more
neighbor lists.
pairwise neighbor lists. Depending on what pair interactions and other
commands are defined, a simulation may require one or more neighbor
lists.
The *every*, *delay*, *check*, and *once* options affect how often
lists are built as a simulation runs. The *delay* setting means never
build new lists until at least N steps after the previous build. The
*every* setting means build lists every M steps (after the delay has
The *every*, *delay*, *check*, and *once* options affect how often lists
are built as a simulation runs. The *delay* setting means never build
new lists until at least N steps after the previous build. The *every*
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
first step that satisfies the *delay* and *every* settings. If the
*check* setting is *yes*, then the *every* and *delay* settings
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
(specified in the :doc:`neighbor <neighbor>` command) since the last
build.
only occurs if at least one atom has moved more than half the neighbor
skin distance (specified in the :doc:`neighbor <neighbor>` command)
since the last neighbor list build.
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.
.. admonition:: Impact of neighbor list settings
:class: note
The choice of neighbor list settings can have a significant impact on
the (parallel) performance of LAMMPS and the correctness of the
simulation results. Since building the neighbor lists is time
consuming, doing it less frequently can speed up a calculation. If
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>`
command), the *every* and *delay* parameters refer to the longest
@ -234,11 +257,11 @@ depend on their atom type.
Restrictions
""""""""""""
If the "delay" setting is non-zero, then it must be a multiple of the
"every" setting.
If the *delay* setting is non-zero, then it must be a multiple of the
*every* setting.
The molecule/intra and molecule/inter exclude options can only be used
with atom styles that define molecule IDs.
The *molecule/intra* and *molecule/inter* exclusion options can only
be used with atom styles that define molecule IDs.
The value of the *page* setting must be at least 10x larger than the
*one* setting. This insures neighbor pages are not mostly empty
@ -252,6 +275,6 @@ Related commands
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),
exclude = none, page = 100000, one = 2000, and binsize = 0.0.

View File

@ -156,7 +156,7 @@ settings.
----------
.. versionadded:: TBD
.. versionadded:: 3Nov2022
The *amoeba* and *hippo* pair styles support extraction of two per-atom
quantities by the :doc:`fix pair <fix_pair>` command. This allows the

View File

@ -58,22 +58,26 @@ Examples
.. 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 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_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
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 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 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
"""""""""""
@ -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
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:
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` (energy units)
* :math:`\sigma` (distance units)
* cutoff1 (distance units)
* cutoff2 (distance units)
The latter 2 coefficients are optional. If not specified, the global
LJ and Coulombic cutoffs specified in the pair_style command are used.
If only one cutoff is specified, it is used as the cutoff for both LJ
and Coulombic interactions for this type pair. If both coefficients
are specified, they are used as the LJ and Coulombic cutoffs for this
type pair.
The latter 2 coefficients are optional. If not specified, the global LJ
and Coulombic cutoffs specified in the pair_style command are used. If
only one cutoff is specified, it is used as the cutoff for both LJ and
Coulombic interactions for this type pair. If both coefficients are
specified, they are used as the LJ and Coulombic cutoffs for this type
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.
----------

View File

@ -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
extraction of two per-atom quantities by the :doc:`fix pair <fix_pair>`

View File

@ -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
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,
for *hooke*, the units of the spring constant :math:`k_n` are
*force*\ /\ *distance*, or equivalently *mass*\ /*time\^2*.

View File

@ -57,7 +57,7 @@ The format of the list file is as follows:
ID2 = atom ID of second atom
style = style of interaction
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.
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 603 morse 10.0 1.2 2.0 10.0 # and another comment
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
@ -100,7 +100,7 @@ The style *harmonic* computes pairwise interactions with the formula
.. math::
E = K (r - r_0)^2
E = K (r - r_0)^2 \qquad r < r_c
and the coefficients:
@ -113,16 +113,14 @@ The style *quartic* computes pairwise interactions with the formula
.. 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:
* :math:`K` (energy units)
* :math:`r_0` (distance units)
* :math:`b_1` (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.
----------

View File

@ -1,8 +1,11 @@
.. index:: pair_style mliap
.. index:: pair_style mliap/kk
pair_style mliap command
========================
Accelerator Variants: *mliap/kk*
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
neighbors per MPI process.
.. versionadded:: TBD
.. versionadded:: 3Nov2022
The *unified* keyword is followed by an argument specifying the
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
and loads the mliap-specific python module that is built into LAMMPS.
----------
.. include:: accel_styles.rst
----------
Mixing, shift, table, tail correction, restart, rRESPA info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

View File

@ -104,7 +104,7 @@ requests to compute `gamma`, as shown in example below:
.. code-block:: LAMMPS
pair_style pace/extrapolation
pair_style pace/extrapolation
pair_coeff * * Cu.yaml Cu.asi Cu
fix pace_gamma all pair 10 pace/extrapolation gamma 1
@ -112,8 +112,7 @@ requests to compute `gamma`, as shown in example below:
compute max_pace_gamma all reduce max f_pace_gamma
variable dump_skip equal "c_max_pace_gamma < 5"
dump pace_dump all custom 20 extrapolative_structures.dump id x y z f_pace_gamma
dump pace_dump all custom 20 extrapolative_structures.dump id type x y z f_pace_gamma
dump_modify pace_dump skip v_dump_skip
variable max_pace_gamma equal c_max_pace_gamma

View File

@ -374,6 +374,7 @@ accelerated styles exist.
* :doc:`vashishta <pair_vashishta>` - Vashishta 2-body and 3-body potential
* :doc:`vashishta/table <pair_vashishta>` -
* :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/colloid <pair_yukawa_colloid>` - screened Yukawa potential for finite-size particles
* :doc:`zbl <pair_zbl>` - Ziegler-Biersack-Littmark potential

177
doc/src/pair_ylz.rst Normal file
View 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).

View File

@ -18,7 +18,7 @@ Syntax
* compute-ID = ID of the compute used for event detection
* random_seed = random # seed (positive integer)
* 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::

View File

@ -18,18 +18,17 @@ Syntax
*grid* arg = gstyle params ...
gstyle = *onelevel* or *twolevel* or *numa* or *custom*
onelevel params = none
twolevel params = Nc Cx Cy Cz
*onelevel* params = none
*twolevel* params = Nc Cx Cy Cz
Nc = number of cores per node
Cx,Cy,Cz = # of cores in each dimension of 3d sub-grid assigned to each node
numa params = none
custom params = infile
*numa* params = none
*custom* params = infile
infile = file containing grid layout
*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/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
*numa* arg = none
*part* args = Psend Precv cstyle
Psend = partition # (1 to Np) which will send its processor layout
Precv = partition # (1 to Np) which will recv the processor layout

View File

@ -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
properties to an existing system by using the *add*, *offset*, and
*shift* keywords. See more details below, which includes the use case
for the *extra* keywords.
*shift* keywords. However, it is important to understand that several
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
specified group-ID. The group will be created if it does not already

View File

@ -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.
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
:doc:`processors <processors>` command with its *part* keyword for a way
to control this, e.g.

View File

@ -18,7 +18,7 @@ Syntax
* tmax = reciprocal of lowest expected pre-exponential factor (time units)
* compute-ID = ID of the compute used for event detection
* 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::

View File

@ -28,6 +28,7 @@ Syntax
*format* values = *line* string, *int* string, *float* string, ID string, or *none*
string = C-style format string
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.
*temp* value = compute ID that calculates a temperature
*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
the simulation domain (or more than a processor sub-domain length)
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
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.
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.
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
stretched too far or dihedrals in extreme configurations. These number
each time a specific MPI rank encounters the issue (e.g., bonds that are
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.
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
warn reset`` command. If there are more warnings than the limit, LAMMPS
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
a positive integer when it represents the column number counting 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
compute, fix, property, or variable reference) and then it replaces the
the right (i.e., :math:`-1` is the last column/keyword), or a thermo keyword
(or compute, fix, property, or variable reference) and then it replaces the
string for that specific thermo keyword.
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
any of quantities the :doc:`thermo_style <thermo_style>` command
outputs. All the specified format strings are C-style formats, e.g. as
used by the C/C++ printf() command. The *line* keyword takes a single
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
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
argument and are applied to all integer or floating-point quantities
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
the same as for *colname*, i.e. a positive integer is the n-th value
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
corresponding to the n-th thermo keyword, a negative integer is counting
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"
and the pair energy for "format epair %20.15g".
backwards, and a string matches the entry with the thermo keyword).
For example, the fifth column is output in high precision for
"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
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
keywords. However, when specifying the *line* option or *format ID
string* option for *step* and *natoms*, you should specify a format
string appropriate for an 8-byte signed integer, e.g. one with "%ld"
or "%lld" depending on the platform.
string appropriate for an 8-byte signed integer (i.e., one with "%ld"
or "%lld", depending on the platform).
The *temp* keyword is used to determine how thermodynamic temperature is
calculated, which is used by all thermo quantities that require a

View File

@ -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
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
@ -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
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>`.
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
switch <Run_options>`. This variable command assigns one string to
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
when you wish to run different simulations on different partitions, or
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
partitions. The simulations will be run one after the other on
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
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
been previously stored with the :doc:`shell putenv <shell>` command.
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
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
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
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
per-atom values is read, a non-blank line is searched for in the file.

View File

@ -33,7 +33,7 @@ Syntax
*angular* = zero the angular momentum
* 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::

View File

@ -3,7 +3,7 @@
#
# Python rewrite of txt2html
# 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
#

View File

@ -9,8 +9,8 @@ LAMMPS_COMMANDS = ("angle_coeff", "angle_style", "atom_modify", "atom_style",
"displace_atoms", "dump_modify", "dynamical_matrix", "echo", "elif", "else",
"fix_modify", "group2ndx", "hyper", "if", "improper_coeff",
"improper_style", "include", "info", "jump", "kim",
"kspace_modify", "kspace_style", "label", "lattice",
"log", "mass", "message", "minimize", "min_modify", "min_style", "molecule",
"kspace_modify", "kspace_style", "label", "labelmap", "lattice", "log",
"mass", "mdi", "message", "minimize", "min_modify", "min_style", "molecule",
"ndx2group", "neb", "neb/spin", "neighbor", "neigh_modify", "newton", "next",
"package", "pair_coeff", "pair_modify", "pair_style", "pair_write",
"partition", "prd", "print", "processors", "python", "quit", "read_data",

File diff suppressed because one or more lines are too long

View File

@ -38,7 +38,7 @@ sys.path.append(os.path.join(LAMMPS_DOC_DIR, 'src', '_ext'))
# -- General configuration ------------------------------------------------
# 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
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
@ -53,10 +53,6 @@ extensions = [
'tab_or_note',
'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 = {
'default_image_width' : '25%',
@ -287,7 +283,48 @@ latex_elements = {
# Additional stuff for the LaTeX preamble.
'preamble': r'''
\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}}}}
% 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
freely under the terms of the GNU Public License (GPL).
The primary author of the code is Steve Plimpton, who can be emailed
at sjplimp@sandia.gov. The LAMMPS WWW Site at www.lammps.org has
more information about the code and its uses.
The LAMMPS developers can be contacted at developers@lammps.org.
The LAMMPS WWW Site at www.lammps.org has more information about
the code and its uses.
"""
epub_author = 'The LAMMPS Developers'

View File

@ -123,6 +123,7 @@ Antonelli
api
Apoorva
Appl
Appshaw
apptainer
Apu
arallel
@ -181,6 +182,7 @@ Avalos
avalue
aveforce
Avendano
Averett
avi
AVX
awpmd
@ -237,6 +239,7 @@ bcolor
bdiam
bdw
Beckman
Becton
Belak
Bellott
bem
@ -270,6 +273,7 @@ bilayers
binsize
binstyle
binutils
Biomech
biomolecular
biomolecule
Biomolecules
@ -925,6 +929,7 @@ Emmrich
emol
eN
endian
endocytosis
energetics
energyCorr
eng
@ -1156,6 +1161,7 @@ ftm
ftol
fuer
fugacity
Fu
Fumi
func
funcs
@ -1308,6 +1314,7 @@ Hamaker
Hamel
Hammerschmidt
Hanley
Hanna
haptic
Haque
Hara
@ -1659,6 +1666,7 @@ kepler
keV
Keyes
keyfile
Kfoury
Khersonskii
Khrapak
Khvostov
@ -1914,6 +1922,7 @@ lwsock
lx
ly
Lybrand
Lykotrafitis
lyon
Lysogorskiy
Lyulin
@ -2024,6 +2033,7 @@ MEAM
meamf
meanDist
mech
Mechanobiology
Mecke
mediumaquamarine
mediumblue
@ -2542,7 +2552,6 @@ oneAPI
onelevel
oneway
onlysalt
onn
ons
OO
Oord
@ -2740,6 +2749,7 @@ Polym
polymorph
polymorphism
Ponder
Ponte
popen
Popoola
Popov
@ -3145,6 +3155,7 @@ seagreen
Secor
sectoring
sed
Seddon
segmental
Seifert
Seleson
@ -3694,6 +3705,7 @@ vdw
vdW
vdwl
vec
Vecchio
vectorial
vectorization
Vectorization
@ -3903,6 +3915,7 @@ yhi
yi
ylat
ylo
ylz
ymax
ymin
yml

View File

@ -29,8 +29,10 @@ stochastic rotation dynamics solvent, using the fix srd command.
box = 2d rigid box particles 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
flat_membrane = 2d flat membrane in NVE, self-diffusion and viscosity
line = 2d line-faceted rigid particles, NEMD shearing for viscosity,
implicit and in SRDs
poly = 2d poly-disperse spheroids 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
vesicle = 3d vesicle in NVE, self-diffusionand viscosity

View 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

View 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

View 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

View 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

View 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

View 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

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
www.cs.sandia.gov/~sjplimp/lammps.html
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains

View File

@ -1,7 +1,7 @@
/* -----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains

View File

@ -1,7 +1,7 @@
/* -----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
www.cs.sandia.gov/~sjplimp/lammps.html
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains

View File

@ -1,7 +1,7 @@
/* -----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains

View File

@ -1,7 +1,7 @@
/* -----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
www.cs.sandia.gov/~sjplimp/lammps.html
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains

View File

@ -1,7 +1,7 @@
/* -----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains

View File

@ -1,7 +1,7 @@
/* -----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
www.cs.sandia.gov/~sjplimp/lammps.html
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains

View File

@ -1,7 +1,7 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
https://www.lammps.org/, Sandia National Laboratories
LAMMPS development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains

1
examples/COUPLE/plugin/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build

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