Merge remote-tracking branch 'lammps/master' into kim-simulator-models

This commit is contained in:
Ellad Tadmor
2019-06-24 15:35:06 -05:00
446 changed files with 64659 additions and 9735 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,28 @@
###############################################################################
# Coverage
#
# Requires latest gcovr (for GCC 8.1 support):#
# pip install git+https://github.com/gcovr/gcovr.git
###############################################################################
if(ENABLE_COVERAGE)
find_program(GCOVR_BINARY gcovr)
find_package_handle_standard_args(GCOVR DEFAULT_MSG GCOVR_BINARY)
if(GCOVR_FOUND)
get_filename_component(ABSOLUTE_LAMMPS_SOURCE_DIR ${LAMMPS_SOURCE_DIR} ABSOLUTE)
add_custom_target(
gen_coverage_xml
COMMAND ${GCOVR_BINARY} -s -x -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.xml
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Generating XML Coverage Report..."
)
add_custom_target(
gen_coverage_html
COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.html
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Generating HTML Coverage Report..."
)
endif()
endif()

View File

@ -0,0 +1,59 @@
###############################################################################
# Build documentation
###############################################################################
option(BUILD_DOC "Build LAMMPS documentation" OFF)
if(BUILD_DOC)
include(ProcessorCount)
ProcessorCount(NPROCS)
find_package(PythonInterp 3 REQUIRED)
set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv)
file(GLOB DOC_SOURCES ${LAMMPS_DOC_DIR}/src/[^.]*.txt)
file(GLOB PDF_EXTRA_SOURCES ${LAMMPS_DOC_DIR}/src/lammps_commands*.txt ${LAMMPS_DOC_DIR}/src/lammps_support.txt ${LAMMPS_DOC_DIR}/src/lammps_tutorials.txt)
list(REMOVE_ITEM DOC_SOURCES ${PDF_EXTRA_SOURCES})
add_custom_command(
OUTPUT docenv
COMMAND ${VIRTUALENV} docenv
)
set(DOCENV_BINARY_DIR ${CMAKE_BINARY_DIR}/docenv/bin)
add_custom_command(
OUTPUT requirements.txt
DEPENDS docenv
COMMAND ${CMAKE_COMMAND} -E copy ${LAMMPS_DOC_DIR}/utils/requirements.txt requirements.txt
COMMAND ${DOCENV_BINARY_DIR}/pip install -r requirements.txt --upgrade
COMMAND ${DOCENV_BINARY_DIR}/pip install --upgrade ${LAMMPS_DOC_DIR}/utils/converters
)
set(RST_FILES "")
set(RST_DIR ${CMAKE_BINARY_DIR}/rst)
file(MAKE_DIRECTORY ${RST_DIR})
foreach(TXT_FILE ${DOC_SOURCES})
get_filename_component(FILENAME ${TXT_FILE} NAME_WE)
set(RST_FILE ${RST_DIR}/${FILENAME}.rst)
list(APPEND RST_FILES ${RST_FILE})
add_custom_command(
OUTPUT ${RST_FILE}
DEPENDS requirements.txt docenv ${TXT_FILE}
COMMAND ${DOCENV_BINARY_DIR}/txt2rst -o ${RST_DIR} ${TXT_FILE}
)
endforeach()
add_custom_command(
OUTPUT html
DEPENDS ${RST_FILES}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LAMMPS_DOC_DIR}/src ${RST_DIR}
COMMAND ${DOCENV_BINARY_DIR}/sphinx-build -j ${NPROCS} -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${RST_DIR} html
)
add_custom_target(
doc ALL
DEPENDS html
SOURCES ${LAMMPS_DOC_DIR}/utils/requirements.txt ${DOC_SOURCES}
)
install(DIRECTORY ${CMAKE_BINARY_DIR}/html DESTINATION ${CMAKE_INSTALL_DOCDIR})
endif()

View File

@ -0,0 +1,71 @@
# Utility functions
function(list_to_bulletpoints result)
list(REMOVE_AT ARGV 0)
set(temp "")
foreach(item ${ARGV})
set(temp "${temp}* ${item}\n")
endforeach()
set(${result} "${temp}" PARENT_SCOPE)
endfunction(list_to_bulletpoints)
function(validate_option name values)
string(TOLOWER ${${name}} needle_lower)
string(TOUPPER ${${name}} needle_upper)
list(FIND ${values} ${needle_lower} IDX_LOWER)
list(FIND ${values} ${needle_upper} IDX_UPPER)
if(${IDX_LOWER} LESS 0 AND ${IDX_UPPER} LESS 0)
list_to_bulletpoints(POSSIBLE_VALUE_LIST ${${values}})
message(FATAL_ERROR "\n########################################################################\n"
"Invalid value '${${name}}' for option ${name}\n"
"\n"
"Possible values are:\n"
"${POSSIBLE_VALUE_LIST}"
"########################################################################")
endif()
endfunction(validate_option)
function(get_lammps_version version_header variable)
file(READ ${version_header} line)
set(MONTHS x Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\1" day "${line}")
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\2" month "${line}")
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\3" year "${line}")
string(STRIP ${day} day)
string(STRIP ${month} month)
string(STRIP ${year} year)
list(FIND MONTHS "${month}" month)
string(LENGTH ${day} day_length)
string(LENGTH ${month} month_length)
if(day_length EQUAL 1)
set(day "0${day}")
endif()
if(month_length EQUAL 1)
set(month "0${month}")
endif()
set(${variable} "${year}${month}${day}" PARENT_SCOPE)
endfunction()
function(check_for_autogen_files source_dir)
message(STATUS "Running check for auto-generated files from make-based build system")
file(GLOB SRC_AUTOGEN_FILES ${source_dir}/style_*.h)
file(GLOB SRC_AUTOGEN_PACKAGES ${source_dir}/packages_*.h)
list(APPEND SRC_AUTOGEN_FILES ${SRC_AUTOGEN_PACKAGES} ${source_dir}/lmpinstalledpkgs.h ${source_dir}/lmpgitversion.h)
foreach(_SRC ${SRC_AUTOGEN_FILES})
get_filename_component(FILENAME "${_SRC}" NAME)
if(EXISTS ${source_dir}/${FILENAME})
message(FATAL_ERROR "\n########################################################################\n"
"Found header file(s) generated by the make-based build system\n"
"\n"
"Please run\n"
"make -C ${source_dir} purge\n"
"to remove\n"
"########################################################################")
endif()
endforeach()
endfunction()
macro(pkg_depends PKG1 PKG2)
if(PKG_${PKG1} AND NOT (PKG_${PKG2} OR BUILD_${PKG2}))
message(FATAL_ERROR "${PKG1} package needs LAMMPS to be build with ${PKG2}")
endif()
endmacro()

View File

@ -0,0 +1,5 @@
if(PKG_COMPRESS)
find_package(ZLIB REQUIRED)
include_directories(${ZLIB_INCLUDE_DIRS})
list(APPEND LAMMPS_LINK_LIBS ${ZLIB_LIBRARIES})
endif()

View File

@ -0,0 +1,13 @@
if(PKG_CORESHELL)
set(CORESHELL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/CORESHELL)
set(CORESHELL_SOURCES)
set_property(GLOBAL PROPERTY "CORESHELL_SOURCES" "${CORESHELL_SOURCES}")
# detects styles which have a CORESHELL version
RegisterStylesExt(${CORESHELL_SOURCES_DIR} cs CORESHELL_SOURCES)
get_property(CORESHELL_SOURCES GLOBAL PROPERTY CORESHELL_SOURCES)
list(APPEND LIB_SOURCES ${CORESHELL_SOURCES})
include_directories(${CORESHELL_SOURCES_DIR})
endif()

View File

@ -0,0 +1,194 @@
if(PKG_GPU)
if (CMAKE_VERSION VERSION_LESS "3.1")
message(FATAL_ERROR "For the GPU package you need at least cmake-3.1")
endif()
set(GPU_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/GPU)
set(GPU_SOURCES ${GPU_SOURCES_DIR}/gpu_extra.h
${GPU_SOURCES_DIR}/fix_gpu.h
${GPU_SOURCES_DIR}/fix_gpu.cpp)
set(GPU_API "opencl" CACHE STRING "API used by GPU package")
set(GPU_API_VALUES opencl cuda)
set_property(CACHE GPU_API PROPERTY STRINGS ${GPU_API_VALUES})
validate_option(GPU_API GPU_API_VALUES)
string(TOUPPER ${GPU_API} GPU_API)
set(GPU_PREC "mixed" CACHE STRING "LAMMPS GPU precision")
set(GPU_PREC_VALUES double mixed single)
set_property(CACHE GPU_PREC PROPERTY STRINGS ${GPU_PREC_VALUES})
validate_option(GPU_PREC GPU_PREC_VALUES)
string(TOUPPER ${GPU_PREC} GPU_PREC)
if(GPU_PREC STREQUAL "DOUBLE")
set(GPU_PREC_SETTING "DOUBLE_DOUBLE")
elseif(GPU_PREC STREQUAL "MIXED")
set(GPU_PREC_SETTING "SINGLE_DOUBLE")
elseif(GPU_PREC STREQUAL "SINGLE")
set(GPU_PREC_SETTING "SINGLE_SINGLE")
endif()
file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp)
file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu)
if(GPU_API STREQUAL "CUDA")
find_package(CUDA REQUIRED)
find_program(BIN2C bin2c)
if(NOT BIN2C)
message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.")
endif()
option(CUDPP_OPT "Enable CUDPP_OPT" ON)
option(CUDA_MPS_SUPPORT "Enable tweaks to support CUDA Multi-process service (MPS)" OFF)
if(CUDA_MPS_SUPPORT)
set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY")
endif()
set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)")
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu)
list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu)
cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu ${LAMMPS_LIB_BINARY_DIR}/gpu)
if(CUDPP_OPT)
cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini)
file(GLOB GPU_LIB_CUDPP_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cpp)
file(GLOB GPU_LIB_CUDPP_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cu)
endif()
# build arch/gencode commands for nvcc based on CUDA toolkit version and use choice
# --arch translates directly instead of JIT, so this should be for the preferred or most common architecture
set(GPU_CUDA_GENCODE "-arch=${GPU_ARCH} ")
# Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0
if((CUDA_VERSION VERSION_GREATER "3.1") AND (CUDA_VERSION VERSION_LESS "9.0"))
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_20,code=[sm_20,compute_20] ")
endif()
# Kepler (GPU Arch 3.x) is supported by CUDA 5 and later
if(CUDA_VERSION VERSION_GREATER "4.9")
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_30,code=[sm_30,compute_30] -gencode arch=compute_35,code=[sm_35,compute_35] ")
endif()
# Maxwell (GPU Arch 5.x) is supported by CUDA 6 and later
if(CUDA_VERSION VERSION_GREATER "5.9")
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] ")
endif()
# Pascal (GPU Arch 6.x) is supported by CUDA 8 and later
if(CUDA_VERSION VERSION_GREATER "7.9")
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61] ")
endif()
# Volta (GPU Arch 7.0) is supported by CUDA 9 and later
if(CUDA_VERSION VERSION_GREATER "8.9")
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_70,code=[sm_70,compute_70] ")
endif()
# Turing (GPU Arch 7.5) is supported by CUDA 10 and later
if(CUDA_VERSION VERSION_GREATER "9.9")
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_75,code=[sm_75,compute_75] ")
endif()
cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING})
cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC}
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING})
foreach(CU_OBJ ${GPU_GEN_OBJS})
get_filename_component(CU_NAME ${CU_OBJ} NAME_WE)
string(REGEX REPLACE "^.*_lal_" "" CU_NAME "${CU_NAME}")
add_custom_command(OUTPUT ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h
COMMAND ${BIN2C} -c -n ${CU_NAME} ${CU_OBJ} > ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h
DEPENDS ${CU_OBJ}
COMMENT "Generating ${CU_NAME}_cubin.h")
list(APPEND GPU_LIB_SOURCES ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h)
endforeach()
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h")
add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS})
target_link_libraries(gpu ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS})
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS})
if(CUDPP_OPT)
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini)
target_compile_definitions(gpu PRIVATE -DUSE_CUDPP)
endif()
list(APPEND LAMMPS_LINK_LIBS gpu)
add_executable(nvc_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp)
target_compile_definitions(nvc_get_devices PRIVATE -DUCL_CUDADR)
target_link_libraries(nvc_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS})
elseif(GPU_API STREQUAL "OPENCL")
find_package(OpenCL REQUIRED)
set(OCL_TUNE "generic" CACHE STRING "OpenCL Device Tuning")
set(OCL_TUNE_VALUES intel fermi kepler cypress generic)
set_property(CACHE OCL_TUNE PROPERTY STRINGS ${OCL_TUNE_VALUES})
validate_option(OCL_TUNE OCL_TUNE_VALUES)
string(TOUPPER ${OCL_TUNE} OCL_TUNE)
include(OpenCLUtils)
set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h)
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu)
list(REMOVE_ITEM GPU_LIB_CU
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu
)
foreach(GPU_KERNEL ${GPU_LIB_CU})
get_filename_component(basename ${GPU_KERNEL} NAME_WE)
string(SUBSTRING ${basename} 4 -1 KERNEL_NAME)
GenerateOpenCLHeader(${KERNEL_NAME} ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h ${OCL_COMMON_HEADERS} ${GPU_KERNEL})
list(APPEND GPU_LIB_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h)
endforeach()
GenerateOpenCLHeader(gayberne ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu)
GenerateOpenCLHeader(gayberne_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu)
GenerateOpenCLHeader(re_squared ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu)
GenerateOpenCLHeader(re_squared_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu)
GenerateOpenCLHeader(tersoff ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu)
GenerateOpenCLHeader(tersoff_zbl ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu)
GenerateOpenCLHeader(tersoff_mod ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu)
list(APPEND GPU_LIB_SOURCES
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h
)
add_library(gpu STATIC ${GPU_LIB_SOURCES})
target_link_libraries(gpu ${OpenCL_LIBRARIES})
target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu ${OpenCL_INCLUDE_DIRS})
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT)
target_compile_definitions(gpu PRIVATE -DUSE_OPENCL)
list(APPEND LAMMPS_LINK_LIBS gpu)
add_executable(ocl_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp)
target_compile_definitions(ocl_get_devices PRIVATE -DUCL_OPENCL)
target_link_libraries(ocl_get_devices PRIVATE ${OpenCL_LIBRARIES})
target_include_directories(ocl_get_devices PRIVATE ${OpenCL_INCLUDE_DIRS})
endif()
# GPU package
FindStyleHeaders(${GPU_SOURCES_DIR} FIX_CLASS fix_ FIX)
set_property(GLOBAL PROPERTY "GPU_SOURCES" "${GPU_SOURCES}")
# detects styles which have GPU version
RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES)
get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES)
list(APPEND LIB_SOURCES ${GPU_SOURCES})
include_directories(${GPU_SOURCES_DIR})
endif()

View File

@ -0,0 +1,44 @@
if(PKG_KIM)
find_package(CURL)
if(CURL_FOUND)
include_directories(${CURL_INCLUDE_DIRS})
list(APPEND LAMMPS_LINK_LIBS ${CURL_LIBRARIES})
add_definitions(-DLMP_KIM_CURL)
endif()
find_package(KIM-API QUIET)
if(KIM-API_FOUND)
set(DOWNLOAD_KIM_DEFAULT OFF)
else()
set(DOWNLOAD_KIM_DEFAULT ON)
endif()
option(DOWNLOAD_KIM "Download KIM-API from OpenKIM instead of using an already installed one" ${DOWNLOAD_KIM_DEFAULT})
if(DOWNLOAD_KIM)
if(CMAKE_GENERATOR STREQUAL "Ninja")
message(FATAL_ERROR "Cannot build downloaded KIM-API library with Ninja build tool")
endif()
message(STATUS "KIM-API download requested - we will build our own")
enable_language(C)
enable_language(Fortran)
include(ExternalProject)
ExternalProject_Add(kim_build
GIT_REPOSITORY https://github.com/openkim/kim-api.git
GIT_TAG SimulatorModels
#URL https://s3.openkim.org/kim-api/kim-api-2.0.2.txz
#URL_MD5 537d9c0abd30f85b875ebb584f9143fa
BINARY_DIR build
CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER}
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
)
ExternalProject_get_property(kim_build INSTALL_DIR)
set(KIM-API_INCLUDE_DIRS ${INSTALL_DIR}/include/kim-api)
set(KIM-API_LDFLAGS ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX})
list(APPEND LAMMPS_DEPS kim_build)
else()
find_package(KIM-API REQUIRED)
endif()
list(APPEND LAMMPS_LINK_LIBS "${KIM-API_LDFLAGS}")
include_directories(${KIM-API_INCLUDE_DIRS})
endif()

View File

@ -0,0 +1,53 @@
if(PKG_KOKKOS)
set(LAMMPS_LIB_KOKKOS_SRC_DIR ${LAMMPS_LIB_SOURCE_DIR}/kokkos)
set(LAMMPS_LIB_KOKKOS_BIN_DIR ${LAMMPS_LIB_BINARY_DIR}/kokkos)
add_definitions(-DLMP_KOKKOS)
add_subdirectory(${LAMMPS_LIB_KOKKOS_SRC_DIR} ${LAMMPS_LIB_KOKKOS_BIN_DIR})
set(Kokkos_INCLUDE_DIRS ${LAMMPS_LIB_KOKKOS_SRC_DIR}/core/src
${LAMMPS_LIB_KOKKOS_SRC_DIR}/containers/src
${LAMMPS_LIB_KOKKOS_SRC_DIR}/algorithms/src
${LAMMPS_LIB_KOKKOS_BIN_DIR})
include_directories(${Kokkos_INCLUDE_DIRS})
list(APPEND LAMMPS_LINK_LIBS kokkos)
set(KOKKOS_PKG_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/KOKKOS)
set(KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/atom_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/atom_vec_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/comm_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/comm_tiled_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/neighbor_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/neigh_list_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/neigh_bond_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/fix_nh_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/nbin_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/npair_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/domain_kokkos.cpp
${KOKKOS_PKG_SOURCES_DIR}/modify_kokkos.cpp)
if(PKG_KSPACE)
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/gridcomm_kokkos.cpp)
endif()
set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}")
# detects styles which have KOKKOS version
RegisterStylesExt(${KOKKOS_PKG_SOURCES_DIR} kokkos KOKKOS_PKG_SOURCES)
# register kokkos-only styles
RegisterNBinStyle(${KOKKOS_PKG_SOURCES_DIR}/nbin_kokkos.h)
RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_kokkos.h)
if(PKG_USER-DPD)
get_property(KOKKOS_PKG_SOURCES GLOBAL PROPERTY KOKKOS_PKG_SOURCES)
list(APPEND KOKKOS_PKG_SOURCES ${KOKKOS_PKG_SOURCES_DIR}/npair_ssa_kokkos.cpp)
RegisterNPairStyle(${KOKKOS_PKG_SOURCES_DIR}/npair_ssa_kokkos.h)
set_property(GLOBAL PROPERTY "KOKKOS_PKG_SOURCES" "${KOKKOS_PKG_SOURCES}")
endif()
get_property(KOKKOS_PKG_SOURCES GLOBAL PROPERTY KOKKOS_PKG_SOURCES)
list(APPEND LIB_SOURCES ${KOKKOS_PKG_SOURCES})
include_directories(${KOKKOS_PKG_SOURCES_DIR})
endif()

View File

@ -0,0 +1,38 @@
if(PKG_KSPACE)
option(FFT_SINGLE "Use single precision FFT instead of double" OFF)
set(FFTW "FFTW3")
if(FFT_SINGLE)
set(FFTW "FFTW3F")
add_definitions(-DFFT_SINGLE)
endif()
find_package(${FFTW} QUIET)
if(${FFTW}_FOUND)
set(FFT "${FFTW}" CACHE STRING "FFT library for KSPACE package")
else()
set(FFT "KISS" CACHE STRING "FFT library for KSPACE package")
endif()
set(FFT_VALUES KISS ${FFTW} MKL)
set_property(CACHE FFT PROPERTY STRINGS ${FFT_VALUES})
validate_option(FFT FFT_VALUES)
string(TOUPPER ${FFT} FFT)
if(NOT FFT STREQUAL "KISS")
find_package(${FFT} REQUIRED)
if(NOT FFT STREQUAL "FFTW3F")
add_definitions(-DFFT_FFTW)
else()
add_definitions(-DFFT_${FFT})
endif()
include_directories(${${FFT}_INCLUDE_DIRS})
list(APPEND LAMMPS_LINK_LIBS ${${FFT}_LIBRARIES})
else()
add_definitions(-DFFT_KISS)
endif()
set(FFT_PACK "array" CACHE STRING "Optimization for FFT")
set(FFT_PACK_VALUES array pointer memcpy)
set_property(CACHE FFT_PACK PROPERTY STRINGS ${FFT_PACK_VALUES})
validate_option(FFT_PACK FFT_PACK_VALUES)
if(NOT FFT_PACK STREQUAL "array")
string(TOUPPER ${FFT_PACK} FFT_PACK)
add_definitions(-DFFT_PACK_${FFT_PACK})
endif()
endif()

View File

@ -0,0 +1,38 @@
if(PKG_LATTE)
enable_language(Fortran)
find_package(LATTE)
if(LATTE_FOUND)
set(DOWNLOAD_LATTE_DEFAULT OFF)
else()
set(DOWNLOAD_LATTE_DEFAULT ON)
endif()
option(DOWNLOAD_LATTE "Download the LATTE library instead of using an already installed one" ${DOWNLOAD_LATTE_DEFAULT})
if(DOWNLOAD_LATTE)
if (CMAKE_VERSION VERSION_LESS "3.7") # due to SOURCE_SUBDIR
message(FATAL_ERROR "For downlading LATTE you need at least cmake-3.7")
endif()
if(CMAKE_GENERATOR STREQUAL "Ninja")
message(FATAL_ERROR "Cannot build downloaded LATTE library with Ninja build tool")
endif()
message(STATUS "LATTE download requested - we will build our own")
include(ExternalProject)
ExternalProject_Add(latte_build
URL https://github.com/lanl/LATTE/archive/v1.2.1.tar.gz
URL_MD5 85ac414fdada2d04619c8f936344df14
SOURCE_SUBDIR cmake
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> ${CMAKE_REQUEST_PIC}
-DBLAS_LIBRARIES=${BLAS_LIBRARIES} -DLAPACK_LIBRARIES=${LAPACK_LIBRARIES}
-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} -DCMAKE_Fortran_FLAGS=${CMAKE_Fortran_FLAGS}
-DCMAKE_Fortran_FLAGS_${BTYPE}=${CMAKE_Fortran_FLAGS_${BTYPE}} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
)
ExternalProject_get_property(latte_build INSTALL_DIR)
set(LATTE_LIBRARIES ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/liblatte.a)
list(APPEND LAMMPS_DEPS latte_build)
else()
find_package(LATTE)
if(NOT LATTE_FOUND)
message(FATAL_ERROR "LATTE library not found, help CMake to find it by setting LATTE_LIBRARY, or set DOWNLOAD_LATTE=ON to download it")
endif()
endif()
list(APPEND LAMMPS_LINK_LIBS ${LATTE_LIBRARIES} ${LAPACK_LIBRARIES})
endif()

View File

@ -0,0 +1,29 @@
if(PKG_MESSAGE)
option(MESSAGE_ZMQ "Use ZeroMQ in MESSAGE package" OFF)
file(GLOB_RECURSE cslib_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.F
${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.c
${LAMMPS_LIB_SOURCE_DIR}/message/cslib/[^.]*.cpp)
add_library(cslib STATIC ${cslib_SOURCES})
if(BUILD_MPI)
target_compile_definitions(cslib PRIVATE -DMPI_YES)
set_target_properties(cslib PROPERTIES OUTPUT_NAME "csmpi")
else()
target_compile_definitions(cslib PRIVATE -DMPI_NO)
target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_MPI)
set_target_properties(cslib PROPERTIES OUTPUT_NAME "csnompi")
endif()
if(MESSAGE_ZMQ)
target_compile_definitions(cslib PRIVATE -DZMQ_YES)
find_package(ZMQ REQUIRED)
target_include_directories(cslib PRIVATE ${ZMQ_INCLUDE_DIRS})
target_link_libraries(cslib PUBLIC ${ZMQ_LIBRARIES})
else()
target_compile_definitions(cslib PRIVATE -DZMQ_NO)
target_include_directories(cslib PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src/STUBS_ZMQ)
endif()
list(APPEND LAMMPS_LINK_LIBS cslib)
include_directories(${LAMMPS_LIB_SOURCE_DIR}/message/cslib/src)
endif()

View File

@ -0,0 +1,45 @@
if(PKG_MSCG)
find_package(GSL REQUIRED)
find_package(MSCG QUIET)
if(MSGC_FOUND)
set(DOWNLOAD_MSCG_DEFAULT OFF)
else()
set(DOWNLOAD_MSCG_DEFAULT ON)
endif()
option(DOWNLOAD_MSCG "Download MSCG library instead of using an already installed one)" ${DOWNLOAD_MSCG_DEFAULT})
if(DOWNLOAD_MSCG)
if (CMAKE_VERSION VERSION_LESS "3.7") # due to SOURCE_SUBDIR
message(FATAL_ERROR "For downlading MSCG you need at least cmake-3.7")
endif()
if(CMAKE_GENERATOR STREQUAL "Ninja")
message(FATAL_ERROR "Cannot build downloaded MSCG library with Ninja build tool")
endif()
include(ExternalProject)
if(NOT LAPACK_FOUND)
set(EXTRA_MSCG_OPTS "-DLAPACK_LIBRARIES=${CMAKE_CURRENT_BINARY_DIR}/liblinalg.a")
endif()
ExternalProject_Add(mscg_build
URL https://github.com/uchicago-voth/MSCG-release/archive/1.7.3.1.tar.gz
URL_MD5 8c45e269ee13f60b303edd7823866a91
SOURCE_SUBDIR src/CMake
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> ${CMAKE_REQUEST_PIC} ${EXTRA_MSCG_OPTS}
BUILD_COMMAND make mscg INSTALL_COMMAND ""
)
ExternalProject_get_property(mscg_build BINARY_DIR)
set(MSCG_LIBRARIES ${BINARY_DIR}/libmscg.a)
ExternalProject_get_property(mscg_build SOURCE_DIR)
set(MSCG_INCLUDE_DIRS ${SOURCE_DIR}/src)
list(APPEND LAMMPS_DEPS mscg_build)
if(NOT LAPACK_FOUND)
file(MAKE_DIRECTORY ${MSCG_INCLUDE_DIRS})
add_dependencies(mscg_build linalg)
endif()
else()
find_package(MSCG)
if(NOT MSCG_FOUND)
message(FATAL_ERROR "MSCG not found, help CMake to find it by setting MSCG_LIBRARY and MSCG_INCLUDE_DIRS, or set DOWNLOAD_MSCG=ON to download it")
endif()
endif()
list(APPEND LAMMPS_LINK_LIBS ${MSCG_LIBRARIES} ${GSL_LIBRARIES} ${LAPACK_LIBRARIES})
include_directories(${MSCG_INCLUDE_DIRS})
endif()

View File

@ -0,0 +1,13 @@
if(PKG_OPT)
set(OPT_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/OPT)
set(OPT_SOURCES)
set_property(GLOBAL PROPERTY "OPT_SOURCES" "${OPT_SOURCES}")
# detects styles which have OPT version
RegisterStylesExt(${OPT_SOURCES_DIR} opt OPT_SOURCES)
get_property(OPT_SOURCES GLOBAL PROPERTY OPT_SOURCES)
list(APPEND LIB_SOURCES ${OPT_SOURCES})
include_directories(${OPT_SOURCES_DIR})
endif()

View File

@ -0,0 +1,6 @@
if(PKG_PYTHON)
find_package(PythonLibs REQUIRED)
add_definitions(-DLMP_PYTHON)
include_directories(${PYTHON_INCLUDE_DIR})
list(APPEND LAMMPS_LINK_LIBS ${PYTHON_LIBRARY})
endif()

View File

@ -0,0 +1,20 @@
# Fix qeq/fire requires MANYBODY (i.e. COMB and COMB3) to be installed
if(PKG_QEQ)
set(QEQ_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/QEQ)
file(GLOB QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix*.h)
file(GLOB QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix*.cpp)
if(NOT PKG_MANYBODY)
list(REMOVE_ITEM QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix_qeq_fire.h)
list(REMOVE_ITEM QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix_qeq_fire.cpp)
endif()
set_property(GLOBAL PROPERTY "QEQ_SOURCES" "${QEQ_SOURCES}")
foreach(MY_HEADER ${QEQ_HEADERS})
AddStyleHeader(${MY_HEADER} FIX)
endforeach()
get_property(QEQ_SOURCES GLOBAL PROPERTY QEQ_SOURCES)
list(APPEND LIB_SOURCES ${QEQ_SOURCES})
include_directories(${QEQ_SOURCES_DIR})
endif()

View File

@ -0,0 +1,8 @@
if(PKG_USER-H5MD)
enable_language(C)
find_package(HDF5 REQUIRED)
target_link_libraries(h5md ${HDF5_LIBRARIES})
target_include_directories(h5md PRIVATE ${HDF5_INCLUDE_DIRS})
include_directories(${HDF5_INCLUDE_DIRS})
endif()

View File

@ -0,0 +1,118 @@
if(PKG_USER-INTEL)
check_include_file_cxx(immintrin.h FOUND_IMMINTRIN)
if(NOT FOUND_IMMINTRIN)
message(FATAL_ERROR "immintrin.h header not found, Intel package won't work without it")
endif()
add_definitions(-DLMP_USER_INTEL)
set(INTEL_ARCH "cpu" CACHE STRING "Architectures used by USER-INTEL (cpu or knl)")
set(INTEL_ARCH_VALUES cpu knl)
set_property(CACHE INTEL_ARCH PROPERTY STRINGS ${INTEL_ARCH_VALUES})
validate_option(INTEL_ARCH INTEL_ARCH_VALUES)
string(TOUPPER ${INTEL_ARCH} INTEL_ARCH)
find_package(Threads QUIET)
if(Threads_FOUND)
set(INTEL_LRT_MODE "threads" CACHE STRING "Long-range threads mode (none, threads, or c++11)")
else()
set(INTEL_LRT_MODE "none" CACHE STRING "Long-range threads mode (none, threads, or c++11)")
endif()
set(INTEL_LRT_VALUES none threads c++11)
set_property(CACHE INTEL_LRT_MODE PROPERTY STRINGS ${INTEL_LRT_VALUES})
validate_option(INTEL_LRT_MODE INTEL_LRT_VALUES)
string(TOUPPER ${INTEL_LRT_MODE} INTEL_LRT_MODE)
if(INTEL_LRT_MODE STREQUAL "THREADS")
if(Threads_FOUND)
add_definitions(-DLMP_INTEL_USELRT)
list(APPEND LAMMPS_LINK_LIBS ${CMAKE_THREAD_LIBS_INIT})
else()
message(FATAL_ERROR "Must have working threads library for Long-range thread support")
endif()
endif()
if(INTEL_LRT_MODE STREQUAL "C++11")
add_definitions(-DLMP_INTEL_USERLRT -DLMP_INTEL_LRT11)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
message(FATAL_ERROR "USER-INTEL needs at least a 2016 Intel compiler, found ${CMAKE_CXX_COMPILER_VERSION}")
endif()
else()
message(WARNING "USER-INTEL gives best performance with Intel compilers")
endif()
find_package(TBB QUIET)
if(TBB_FOUND)
list(APPEND LAMMPS_LINK_LIBS ${TBB_MALLOC_LIBRARIES})
else()
add_definitions(-DLMP_INTEL_NO_TBB)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
message(WARNING "USER-INTEL with Intel compilers should use TBB malloc libraries")
endif()
endif()
find_package(MKL QUIET)
if(MKL_FOUND)
add_definitions(-DLMP_USE_MKL_RNG)
list(APPEND LAMMPS_LINK_LIBS ${MKL_LIBRARIES})
else()
message(STATUS "Pair style dpd/intel will be faster with MKL libraries")
endif()
if((NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "64") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "128") AND (NOT ${LAMMPS_MEMALIGN} STREQUAL "256"))
message(FATAL_ERROR "USER-INTEL only supports memory alignment of 64, 128 or 256 on this platform")
endif()
if(INTEL_ARCH STREQUAL "KNL")
if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
message(FATAL_ERROR "Must use Intel compiler with USER-INTEL for KNL architecture")
endif()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -xHost -qopenmp -qoffload")
set(MIC_OPTIONS "-qoffload-option,mic,compiler,\"-fp-model fast=2 -mGLOB_default_function_attrs=\\\"gather_scatter_loop_unroll=4\\\"\"")
add_compile_options(-xMIC-AVX512 -qoffload -fno-alias -ansi-alias -restrict -qoverride-limits ${MIC_OPTIONS})
add_definitions(-DLMP_INTEL_OFFLOAD)
else()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
if(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.3 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 17.4)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xCOMMON-AVX512")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHost")
endif()
include(CheckCXXCompilerFlag)
foreach(_FLAG -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high -qno-offload -fno-alias -ansi-alias -restrict)
check_cxx_compiler_flag("${__FLAG}" COMPILER_SUPPORTS${_FLAG})
if(COMPILER_SUPPORTS${_FLAG})
add_compile_options(${_FLAG})
endif()
endforeach()
else()
add_compile_options(-O3 -ffast-math)
endif()
endif()
# collect sources
set(USER-INTEL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-INTEL)
set(USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/fix_intel.cpp
${USER-INTEL_SOURCES_DIR}/fix_nh_intel.cpp
${USER-INTEL_SOURCES_DIR}/intel_buffers.cpp
${USER-INTEL_SOURCES_DIR}/nbin_intel.cpp
${USER-INTEL_SOURCES_DIR}/npair_intel.cpp)
set_property(GLOBAL PROPERTY "USER-INTEL_SOURCES" "${USER-INTEL_SOURCES}")
# detect styles which have a USER-INTEL version
RegisterStylesExt(${USER-INTEL_SOURCES_DIR} intel USER-INTEL_SOURCES)
RegisterNBinStyle(${USER-INTEL_SOURCES_DIR}/nbin_intel.h)
RegisterNPairStyle(${USER-INTEL_SOURCES_DIR}/npair_intel.h)
RegisterFixStyle(${USER-INTEL_SOURCES_DIR}/fix_intel.h)
get_property(USER-INTEL_SOURCES GLOBAL PROPERTY USER-INTEL_SOURCES)
if(PKG_KSPACE)
list(APPEND USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.cpp)
RegisterIntegrateStyle(${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.h)
endif()
list(APPEND LIB_SOURCES ${USER-INTEL_SOURCES})
include_directories(${USER-INTEL_SOURCES_DIR})
endif()

View File

@ -0,0 +1,10 @@
if(PKG_USER-MOLFILE)
set(MOLFILE_INCLUDE_DIRS "${LAMMPS_LIB_SOURCE_DIR}/molfile" CACHE STRING "Path to VMD molfile plugin headers")
add_library(molfile INTERFACE)
target_include_directories(molfile INTERFACE ${MOLFILE_INCLUDE_DIRS})
# no need to link with -ldl on windows
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
target_link_libraries(molfile INTERFACE ${CMAKE_DL_LIBS})
endif()
list(APPEND LAMMPS_LINK_LIBS molfile)
endif()

View File

@ -0,0 +1,6 @@
if(PKG_USER-NETCDF)
find_package(NetCDF REQUIRED)
include_directories(${NETCDF_INCLUDE_DIRS})
list(APPEND LAMMPS_LINK_LIBS ${NETCDF_LIBRARIES})
add_definitions(-DLMP_HAS_NETCDF -DNC_64BIT_DATA=0x0020)
endif()

View File

@ -0,0 +1,42 @@
if(PKG_USER-OMP)
set(USER-OMP_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-OMP)
set(USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/thr_data.cpp
${USER-OMP_SOURCES_DIR}/thr_omp.cpp
${USER-OMP_SOURCES_DIR}/fix_omp.cpp
${USER-OMP_SOURCES_DIR}/fix_nh_omp.cpp
${USER-OMP_SOURCES_DIR}/fix_nh_sphere_omp.cpp
${USER-OMP_SOURCES_DIR}/domain_omp.cpp)
add_definitions(-DLMP_USER_OMP)
set_property(GLOBAL PROPERTY "OMP_SOURCES" "${USER-OMP_SOURCES}")
# detects styles which have USER-OMP version
RegisterStylesExt(${USER-OMP_SOURCES_DIR} omp OMP_SOURCES)
RegisterFixStyle(${USER-OMP_SOURCES_DIR}/fix_omp.h)
get_property(USER-OMP_SOURCES GLOBAL PROPERTY OMP_SOURCES)
# manually add package dependent source files from USER-OMP that do not provide styles
if(PKG_ASPHERE)
list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_nh_asphere_omp.cpp)
endif()
if(PKG_RIGID)
list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_rigid_nh_omp.cpp)
endif()
if(PKG_USER-REAXC)
list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/reaxc_bond_orders_omp.cpp
${USER-OMP_SOURCES_DIR}/reaxc_hydrogen_bonds_omp.cpp
${USER-OMP_SOURCES_DIR}/reaxc_nonbonded_omp.cpp
${USER-OMP_SOURCES_DIR}/reaxc_bonds_omp.cpp
${USER-OMP_SOURCES_DIR}/reaxc_init_md_omp.cpp
${USER-OMP_SOURCES_DIR}/reaxc_torsion_angles_omp.cpp
${USER-OMP_SOURCES_DIR}/reaxc_forces_omp.cpp
${USER-OMP_SOURCES_DIR}/reaxc_multi_body_omp.cpp
${USER-OMP_SOURCES_DIR}/reaxc_valence_angles_omp.cpp)
endif()
list(APPEND LIB_SOURCES ${USER-OMP_SOURCES})
include_directories(${USER-OMP_SOURCES_DIR})
endif()

View File

@ -0,0 +1,79 @@
if(PKG_USER-PLUMED)
find_package(GSL REQUIRED)
set(PLUMED_MODE "static" CACHE STRING "Linkage mode for Plumed2 library")
set(PLUMED_MODE_VALUES static shared runtime)
set_property(CACHE PLUMED_MODE PROPERTY STRINGS ${PLUMED_MODE_VALUES})
validate_option(PLUMED_MODE PLUMED_MODE_VALUES)
string(TOUPPER ${PLUMED_MODE} PLUMED_MODE)
find_package(PkgConfig QUIET)
set(DOWNLOAD_PLUMED_DEFAULT ON)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PLUMED QUIET plumed)
if(PLUMED_FOUND)
set(DOWNLOAD_PLUMED_DEFAULT OFF)
endif()
endif()
option(DOWNLOAD_PLUMED "Download Plumed package instead of using an already installed one" ${DOWNLOAD_PLUMED_DEFAULT})
if(DOWNLOAD_PLUMED)
if(CMAKE_GENERATOR STREQUAL "Ninja")
message(FATAL_ERROR "Cannot build downloaded Plumed library with Ninja build tool")
endif()
if(BUILD_MPI)
set(PLUMED_CONFIG_MPI "--enable-mpi")
set(PLUMED_CONFIG_CC ${CMAKE_MPI_C_COMPILER})
set(PLUMED_CONFIG_CXX ${CMAKE_MPI_CXX_COMPILER})
else()
set(PLUMED_CONFIG_MPI "--disable-mpi")
set(PLUMED_CONFIG_CC ${CMAKE_C_COMPILER})
set(PLUMED_CONFIG_CXX ${CMAKE_CXX_COMPILER})
endif()
if(BUILD_OMP)
set(PLUMED_CONFIG_OMP "--enable-openmp")
else()
set(PLUMED_CONFIG_OMP "--disable-openmp")
endif()
message(STATUS "PLUMED download requested - we will build our own")
include(ExternalProject)
ExternalProject_Add(plumed_build
URL https://github.com/plumed/plumed2/releases/download/v2.5.1/plumed-src-2.5.1.tgz
URL_MD5 c2a7b519e32197a120cdf47e0f194f81
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
${CONFIGURE_REQUEST_PIC}
--enable-modules=all
${PLUMED_CONFIG_MPI}
${PLUMED_CONFIG_OMP}
CXX=${PLUMED_CONFIG_CXX}
CC=${PLUMED_CONFIG_CC}
)
ExternalProject_get_property(plumed_build INSTALL_DIR)
set(PLUMED_INSTALL_DIR ${INSTALL_DIR})
list(APPEND LAMMPS_DEPS plumed_build)
if(PLUMED_MODE STREQUAL "STATIC")
add_definitions(-D__PLUMED_WRAPPER_CXX=1)
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.a ${GSL_LIBRARIES} ${LAPACK_LIBRARIES} ${CMAKE_DL_LIBS})
elseif(PLUMED_MODE STREQUAL "SHARED")
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumed.so ${PLUMED_INSTALL_DIR}/lib/libplumedKernel.so ${CMAKE_DL_LIBS})
elseif(PLUMED_MODE STREQUAL "RUNTIME")
add_definitions(-D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_INSTALL_DIR}/lib/libplumedKernel.so)
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_INSTALL_DIR}/lib/libplumedWrapper.a -rdynamic ${CMAKE_DL_LIBS})
endif()
set(PLUMED_INCLUDE_DIRS "${PLUMED_INSTALL_DIR}/include")
else()
find_package(PkgConfig REQUIRED)
pkg_check_modules(PLUMED REQUIRED plumed)
if(PLUMED_MODE STREQUAL "STATIC")
add_definitions(-D__PLUMED_WRAPPER_CXX=1)
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.static)
elseif(PLUMED_MODE STREQUAL "SHARED")
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.shared)
elseif(PLUMED_MODE STREQUAL "RUNTIME")
add_definitions(-D__PLUMED_HAS_DLOPEN=1 -D__PLUMED_DEFAULT_KERNEL=${PLUMED_LIBDIR}/libplumedKernel.so)
include(${PLUMED_LIBDIR}/plumed/src/lib/Plumed.cmake.runtime)
endif()
list(APPEND LAMMPS_LINK_LIBS ${PLUMED_LOAD})
endif()
include_directories(${PLUMED_INCLUDE_DIRS})
endif()

View File

@ -0,0 +1,9 @@
if(PKG_USER-QMMM)
enable_language(Fortran)
enable_language(C)
message(WARNING "Building QMMM with CMake is still experimental")
find_package(QE REQUIRED)
include_directories(${QE_INCLUDE_DIRS})
list(APPEND LAMMPS_LINK_LIBS ${QE_LIBRARIES})
endif()

View File

@ -0,0 +1,5 @@
if(PKG_USER-QUIP)
enable_language(Fortran)
find_package(QUIP REQUIRED)
list(APPEND LAMMPS_LINK_LIBS ${QUIP_LIBRARIES} ${LAPACK_LIBRARIES})
endif()

View File

@ -0,0 +1,62 @@
if(PKG_USER-SCAFACOS)
enable_language(Fortran)
enable_language(C)
find_package(GSL REQUIRED)
find_package(PkgConfig QUIET)
set(DOWNLOAD_SCAFACOS_DEFAULT ON)
if(PKG_CONFIG_FOUND)
pkg_check_modules(SCAFACOS QUIET scafacos)
if(SCAFACOS_FOUND)
set(DOWNLOAD_SCAFACOS_DEFAULT OFF)
endif()
endif()
option(DOWNLOAD_SCAFACOS "Download ScaFaCoS library instead of using an already installed one" ${DOWNLOAD_SCAFACOS_DEFAULT})
if(DOWNLOAD_SCAFACOS)
if(CMAKE_GENERATOR STREQUAL "Ninja")
message(FATAL_ERROR "Cannot build downloaded ScaFaCoS library with Ninja build tool")
endif()
message(STATUS "ScaFaCoS download requested - we will build our own")
include(ExternalProject)
ExternalProject_Add(scafacos_build
URL https://github.com/scafacos/scafacos/releases/download/v1.0.1/scafacos-1.0.1.tar.gz
URL_MD5 bd46d74e3296bd8a444d731bb10c1738
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --disable-doc
--enable-fcs-solvers=fmm,p2nfft,direct,ewald,p3m
--with-internal-fftw --with-internal-pfft
--with-internal-pnfft ${CONFIGURE_REQUEST_PIC}
FC=${CMAKE_MPI_Fortran_COMPILER}
CXX=${CMAKE_MPI_CXX_COMPILER}
CC=${CMAKE_MPI_C_COMPILER}
F77=
)
ExternalProject_get_property(scafacos_build INSTALL_DIR)
set(SCAFACOS_BUILD_DIR ${INSTALL_DIR})
set(SCAFACOS_INCLUDE_DIRS ${SCAFACOS_BUILD_DIR}/include)
list(APPEND LAMMPS_DEPS scafacos_build)
# list and order from pkg_config file of ScaFaCoS build
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs.a)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_direct.a)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_ewald.a)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_fmm.a)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_p2nfft.a)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_p3m.a)
list(APPEND LAMMPS_LINK_LIBS ${GSL_LIBRARIES})
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_near.a)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_gridsort.a)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_resort.a)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_redist.a)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_common.a)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_pnfft.a)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_pfft.a)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_fftw3_mpi.a)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_BUILD_DIR}/lib/libfcs_fftw3.a)
list(APPEND LAMMPS_LINK_LIBS ${MPI_Fortran_LIBRARIES})
list(APPEND LAMMPS_LINK_LIBS ${MPI_C_LIBRARIES})
else()
find_package(PkgConfig REQUIRED)
pkg_check_modules(SCAFACOS REQUIRED scafacos)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_LDFLAGS})
endif()
include_directories(${SCAFACOS_INCLUDE_DIRS})
endif()

View File

@ -0,0 +1,13 @@
# Fix rigid/meso requires RIGID to be installed
if(PKG_USER-SDPD)
set(USER-SDPD_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-SDPD)
get_property(hlist GLOBAL PROPERTY FIX)
if(NOT PKG_RIGID)
list(REMOVE_ITEM hlist ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.h)
list(REMOVE_ITEM LIB_SOURCES ${USER-SDPD_SOURCES_DIR}/fix_rigid_meso.cpp)
endif()
set_property(GLOBAL PROPERTY FIX "${hlist}")
include_directories(${USER-SDPD_SOURCES_DIR})
endif()

View File

@ -0,0 +1,28 @@
if(PKG_USER-SMD)
find_package(Eigen3 NO_MODULE)
if(EIGEN3_FOUND)
set(DOWNLOAD_EIGEN3_DEFAULT OFF)
else()
set(DOWNLOAD_EIGEN3_DEFAULT ON)
endif()
option(DOWNLOAD_EIGEN3 "Download Eigen3 instead of using an already installed one)" ${DOWNLOAD_EIGEN3_DEFAULT})
if(DOWNLOAD_EIGEN3)
message(STATUS "Eigen3 download requested - we will build our own")
include(ExternalProject)
ExternalProject_Add(Eigen3_build
URL http://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz
URL_MD5 f2a417d083fe8ca4b8ed2bc613d20f07
CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND ""
)
ExternalProject_get_property(Eigen3_build SOURCE_DIR)
set(EIGEN3_INCLUDE_DIR ${SOURCE_DIR})
list(APPEND LAMMPS_DEPS Eigen3_build)
else()
find_package(Eigen3 NO_MODULE)
mark_as_advanced(Eigen3_DIR)
if(NOT EIGEN3_FOUND)
message(FATAL_ERROR "Eigen3 not found, help CMake to find it by setting EIGEN3_INCLUDE_DIR, or set DOWNLOAD_EIGEN3=ON to download it")
endif()
endif()
include_directories(${EIGEN3_INCLUDE_DIR})
endif()

View File

@ -0,0 +1,6 @@
if(PKG_USER-VTK)
find_package(VTK REQUIRED NO_MODULE)
include(${VTK_USE_FILE})
add_definitions(-DLAMMPS_VTK)
list(APPEND LAMMPS_LINK_LIBS ${VTK_LIBRARIES})
endif()

View File

@ -0,0 +1,41 @@
if(PKG_VORONOI)
find_package(VORO)
if(VORO_FOUND)
set(DOWNLOAD_VORO_DEFAULT OFF)
else()
set(DOWNLOAD_VORO_DEFAULT ON)
endif()
option(DOWNLOAD_VORO "Download and compile the Voro++ library instead of using an already installed one" ${DOWNLOAD_VORO_DEFAULT})
if(DOWNLOAD_VORO)
if(CMAKE_GENERATOR STREQUAL "Ninja")
message(FATAL_ERROR "Cannot build downloaded Voro++ library with Ninja build tool")
endif()
message(STATUS "Voro++ download requested - we will build our own")
include(ExternalProject)
if(BUILD_SHARED_LIBS)
set(VORO_BUILD_CFLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}")
else()
set(VORO_BUILD_CFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}")
endif()
string(APPEND VORO_BUILD_CFLAGS ${CMAKE_CXX_FLAGS})
set(VORO_BUILD_OPTIONS CXX=${CMAKE_CXX_COMPILER} CFLAGS=${VORO_BUILD_CFLAGS})
ExternalProject_Add(voro_build
URL https://download.lammps.org/thirdparty/voro++-0.4.6.tar.gz
URL_MD5 2338b824c3b7b25590e18e8df5d68af9
CONFIGURE_COMMAND "" BUILD_COMMAND make ${VORO_BUILD_OPTIONS} BUILD_IN_SOURCE 1 INSTALL_COMMAND ""
)
ExternalProject_get_property(voro_build SOURCE_DIR)
set(VORO_LIBRARIES ${SOURCE_DIR}/src/libvoro++.a)
set(VORO_INCLUDE_DIRS ${SOURCE_DIR}/src)
list(APPEND LAMMPS_DEPS voro_build)
else()
find_package(VORO)
if(NOT VORO_FOUND)
message(FATAL_ERROR "Voro++ library not found. Help CMake to find it by setting VORO_LIBRARY and VORO_INCLUDE_DIR, or set DOWNLOAD_VORO=ON to download it")
endif()
endif()
include_directories(${VORO_INCLUDE_DIRS})
list(APPEND LAMMPS_LINK_LIBS ${VORO_LIBRARIES})
endif()

View File

@ -181,3 +181,88 @@ function(DetectBuildSystemConflict lammps_src_dir)
endforeach() endforeach()
endif() endif()
endfunction(DetectBuildSystemConflict) endfunction(DetectBuildSystemConflict)
function(FindPackagesHeaders path style_class file_pattern headers)
file(GLOB files "${path}/${file_pattern}*.h")
get_property(plist GLOBAL PROPERTY ${headers})
foreach(file_name ${files})
file(STRINGS ${file_name} is_style LIMIT_COUNT 1 REGEX ${style_class})
if(is_style)
list(APPEND plist ${file_name})
endif()
endforeach()
set_property(GLOBAL PROPERTY ${headers} "${plist}")
endfunction(FindPackagesHeaders)
function(RegisterPackages search_path)
FindPackagesHeaders(${search_path} ANGLE_CLASS angle_ PKGANGLE ) # angle ) # force
FindPackagesHeaders(${search_path} ATOM_CLASS atom_vec_ PKGATOM_VEC ) # atom ) # atom atom_vec_hybrid
FindPackagesHeaders(${search_path} BODY_CLASS body_ PKGBODY ) # body ) # atom_vec_body
FindPackagesHeaders(${search_path} BOND_CLASS bond_ PKGBOND ) # bond ) # force
FindPackagesHeaders(${search_path} COMMAND_CLASS "[^.]" PKGCOMMAND ) # command ) # input
FindPackagesHeaders(${search_path} COMPUTE_CLASS compute_ PKGCOMPUTE ) # compute ) # modify
FindPackagesHeaders(${search_path} DIHEDRAL_CLASS dihedral_ PKGDIHEDRAL ) # dihedral ) # force
FindPackagesHeaders(${search_path} DUMP_CLASS dump_ PKGDUMP ) # dump ) # output write_dump
FindPackagesHeaders(${search_path} FIX_CLASS fix_ PKGFIX ) # fix ) # modify
FindPackagesHeaders(${search_path} IMPROPER_CLASS improper_ PKGIMPROPER ) # improper ) # force
FindPackagesHeaders(${search_path} INTEGRATE_CLASS "[^.]" PKGINTEGRATE ) # integrate ) # update
FindPackagesHeaders(${search_path} KSPACE_CLASS "[^.]" PKGKSPACE ) # kspace ) # force
FindPackagesHeaders(${search_path} MINIMIZE_CLASS min_ PKGMINIMIZE ) # minimize ) # update
FindPackagesHeaders(${search_path} NBIN_CLASS nbin_ PKGNBIN ) # nbin ) # neighbor
FindPackagesHeaders(${search_path} NPAIR_CLASS npair_ PKGNPAIR ) # npair ) # neighbor
FindPackagesHeaders(${search_path} NSTENCIL_CLASS nstencil_ PKGNSTENCIL ) # nstencil ) # neighbor
FindPackagesHeaders(${search_path} NTOPO_CLASS ntopo_ PKGNTOPO ) # ntopo ) # neighbor
FindPackagesHeaders(${search_path} PAIR_CLASS pair_ PKGPAIR ) # pair ) # force
FindPackagesHeaders(${search_path} READER_CLASS reader_ PKGREADER ) # reader ) # read_dump
FindPackagesHeaders(${search_path} REGION_CLASS region_ PKGREGION ) # region ) # domain
endfunction(RegisterPackages)
function(CreatePackagesHeader path filename)
set(temp "")
if(ARGC GREATER 2)
list(REMOVE_AT ARGV 0 1)
foreach(FNAME ${ARGV})
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${FNAME}")
get_filename_component(DNAME ${FNAME} DIRECTORY)
get_filename_component(DNAME ${DNAME} NAME)
get_filename_component(FNAME ${FNAME} NAME)
set(temp "${temp}#undef PACKAGE\n#define PACKAGE \"${DNAME}\"\n")
set(temp "${temp}#include \"${DNAME}/${FNAME}\"\n")
endforeach()
endif()
message(STATUS "Generating ${filename}...")
file(WRITE "${path}/${filename}.tmp" "${temp}" )
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${path}/${filename}.tmp" "${path}/${filename}")
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${path}/${filename}")
endfunction(CreatePackagesHeader)
function(GeneratePackagesHeader path property style)
get_property(files GLOBAL PROPERTY ${property})
CreatePackagesHeader("${path}" "packages_${style}.h" ${files})
endfunction(GeneratePackagesHeader)
function(GeneratePackagesHeaders output_path)
GeneratePackagesHeader(${output_path} PKGANGLE angle ) # force
GeneratePackagesHeader(${output_path} PKGATOM_VEC atom ) # atom atom_vec_hybrid
GeneratePackagesHeader(${output_path} PKGBODY body ) # atom_vec_body
GeneratePackagesHeader(${output_path} PKGBOND bond ) # force
GeneratePackagesHeader(${output_path} PKGCOMMAND command ) # input
GeneratePackagesHeader(${output_path} PKGCOMPUTE compute ) # modify
GeneratePackagesHeader(${output_path} PKGDIHEDRAL dihedral ) # force
GeneratePackagesHeader(${output_path} PKGDUMP dump ) # output write_dump
GeneratePackagesHeader(${output_path} PKGFIX fix ) # modify
GeneratePackagesHeader(${output_path} PKGIMPROPER improper ) # force
GeneratePackagesHeader(${output_path} PKGINTEGRATE integrate ) # update
GeneratePackagesHeader(${output_path} PKGKSPACE kspace ) # force
GeneratePackagesHeader(${output_path} PKGMINIMIZE minimize ) # update
GeneratePackagesHeader(${output_path} PKGNBIN nbin ) # neighbor
GeneratePackagesHeader(${output_path} PKGNPAIR npair ) # neighbor
GeneratePackagesHeader(${output_path} PKGNSTENCIL nstencil ) # neighbor
GeneratePackagesHeader(${output_path} PKGNTOPO ntopo ) # neighbor
GeneratePackagesHeader(${output_path} PKGPAIR pair ) # force
GeneratePackagesHeader(${output_path} PKGREADER reader ) # read_dump
GeneratePackagesHeader(${output_path} PKGREGION region ) # domain
endfunction(GeneratePackagesHeaders)

View File

@ -0,0 +1,52 @@
###############################################################################
# Testing
###############################################################################
option(ENABLE_TESTING "Enable testing" OFF)
if(ENABLE_TESTING AND BUILD_EXE)
enable_testing()
option(LAMMPS_TESTING_SOURCE_DIR "Location of lammps-testing source directory" "")
option(LAMMPS_TESTING_GIT_TAG "Git tag of lammps-testing" "master")
mark_as_advanced(LAMMPS_TESTING_SOURCE_DIR LAMMPS_TESTING_GIT_TAG)
if (CMAKE_VERSION VERSION_GREATER "3.10.3" AND NOT LAMMPS_TESTING_SOURCE_DIR)
include(FetchContent)
FetchContent_Declare(lammps-testing
GIT_REPOSITORY https://github.com/lammps/lammps-testing.git
GIT_TAG ${LAMMPS_TESTING_GIT_TAG}
)
FetchContent_GetProperties(lammps-testing)
if(NOT lammps-testing_POPULATED)
message(STATUS "Downloading tests...")
FetchContent_Populate(lammps-testing)
endif()
set(LAMMPS_TESTING_SOURCE_DIR ${lammps-testing_SOURCE_DIR})
elseif(NOT LAMMPS_TESTING_SOURCE_DIR)
message(WARNING "Full test-suite requires CMake >= 3.11 or copy of\n"
"https://github.com/lammps/lammps-testing in LAMMPS_TESTING_SOURCE_DIR")
endif()
add_test(ShowHelp ${CMAKE_BINARY_DIR}/${LAMMPS_BINARY} -help)
if(EXISTS ${LAMMPS_TESTING_SOURCE_DIR})
message(STATUS "Running test discovery...")
file(GLOB_RECURSE TEST_SCRIPTS ${LAMMPS_TESTING_SOURCE_DIR}/tests/core/*/in.*)
foreach(script_path ${TEST_SCRIPTS})
get_filename_component(TEST_NAME ${script_path} EXT)
get_filename_component(SCRIPT_NAME ${script_path} NAME)
get_filename_component(PARENT_DIR ${script_path} DIRECTORY)
string(SUBSTRING ${TEST_NAME} 1 -1 TEST_NAME)
string(REPLACE "-" "_" TEST_NAME ${TEST_NAME})
string(REPLACE "+" "_" TEST_NAME ${TEST_NAME})
set(TEST_NAME "test_core_${TEST_NAME}_serial")
add_test(${TEST_NAME} ${CMAKE_BINARY_DIR}/${LAMMPS_BINARY} -in ${SCRIPT_NAME})
set_tests_properties(${TEST_NAME} PROPERTIES WORKING_DIRECTORY ${PARENT_DIR})
endforeach()
list(LENGTH TEST_SCRIPTS NUM_TESTS)
message(STATUS "Found ${NUM_TESTS} tests.")
endif()
endif()

View File

@ -211,7 +211,7 @@ $(VENV):
@( \ @( \
$(VIRTUALENV) -p $(PYTHON) $(VENV); \ $(VIRTUALENV) -p $(PYTHON) $(VENV); \
. $(VENV)/bin/activate; \ . $(VENV)/bin/activate; \
pip install Sphinx==1.7.6; \ pip install Sphinx; \
deactivate;\ deactivate;\
) )

View File

@ -1,4 +1,4 @@
.TH LAMMPS "30 April 2019" "2019-04-30" .TH LAMMPS "18 June 2019" "2019-06-18"
.SH NAME .SH NAME
.B LAMMPS .B LAMMPS
\- Molecular Dynamics Simulator. \- Molecular Dynamics Simulator.

View File

@ -32,10 +32,18 @@ cmake \[options ...\] ../cmake # configuration with (command-line) cmake
make # compilation :pre make # compilation :pre
The cmake command will detect available features, enable selected The cmake command will detect available features, enable selected
packages and options, and will generate the build environment. The make packages and options, and will generate the build environment. By default
command will then compile and link LAMMPS, producing (by default) an this build environment will be created for "Unix Makefiles" on most
executable called "lmp" and a library called "liblammps.a" in the platforms and particularly on Linux. However, alternate build tools
"build" folder. (e.g. Ninja) and support files for Integrated Development Environments
(IDE) like Eclipse, CodeBlocks, or Kate can be generated, too. This is
selected via the "-G" command line flag. For the rest of the documentation
we will assume that the build environment is generated for makefiles
and thus the make command will be used to compile and link LAMMPS as
indicated above, producing (by default) an executable called "lmp" and
a library called "liblammps.a" in the "build" folder. When generating
a build environment for the "Ninja" build tool, the build command would
be "ninja" instead of "make".
If your machine has multiple CPU cores (most do these days), using a If your machine has multiple CPU cores (most do these days), using a
command like "make -jN" (with N being the number of available local command like "make -jN" (with N being the number of available local

View File

@ -30,7 +30,6 @@ This is the list of packages that may require additional steps.
"KIM"_#kim, "KIM"_#kim,
"KOKKOS"_#kokkos, "KOKKOS"_#kokkos,
"LATTE"_#latte, "LATTE"_#latte,
"MEAM"_#meam,
"MESSAGE"_#message, "MESSAGE"_#message,
"MSCG"_#mscg, "MSCG"_#mscg,
"OPT"_#opt, "OPT"_#opt,
@ -248,7 +247,10 @@ Maxwell50 = NVIDIA Maxwell generation CC 5.0
Maxwell52 = NVIDIA Maxwell generation CC 5.2 Maxwell52 = NVIDIA Maxwell generation CC 5.2
Maxwell53 = NVIDIA Maxwell generation CC 5.3 Maxwell53 = NVIDIA Maxwell generation CC 5.3
Pascal60 = NVIDIA Pascal generation CC 6.0 Pascal60 = NVIDIA Pascal generation CC 6.0
Pascal61 = NVIDIA Pascal generation CC 6.1 :ul Pascal61 = NVIDIA Pascal generation CC 6.1
Volta70 = NVIDIA Volta generation CC 7.0
Volta72 = NVIDIA Volta generation CC 7.2
Turing75 = NVIDIA Turing generation CC 7.5 :ul
[CMake build]: [CMake build]:
@ -349,49 +351,6 @@ the compiler you use on your system to build LATTE.
:line :line
MEAM package :h4,link(meam)
NOTE: the use of the MEAM package is discouraged, as it has been
superseded by the USER-MEAMC package, which is a direct translation of
the Fortran code in the MEAM library to C++. The code in USER-MEAMC
should be functionally equivalent to the MEAM package, fully supports
use of "pair_style hybrid"_pair_hybrid.html (the MEAM package does
not), and has optimizations that make it significantly faster than the
MEAM package.
[CMake build]:
No additional settings are needed besides "-D PKG_MEAM=yes".
[Traditional make]:
Before building LAMMPS, you must build the MEAM library in lib/meam.
You can build the MEAM library manually if you prefer; follow the
instructions in lib/meam/README. You can also do it in one step from
the lammps/src dir, using a command like these, which simply invoke
the lib/meam/Install.py script with the specified args:
make lib-meam # print help message
make lib-meam args="-m mpi" # build with default Fortran compiler compatible with your MPI library
make lib-meam args="-m serial" # build with compiler compatible with "make serial" (GNU Fortran)
make lib-meam args="-m ifort" # build with Intel Fortran compiler using Makefile.ifort :pre
NOTE: You should test building the MEAM library with both the Intel
and GNU compilers to see if a simulation runs faster with one versus
the other on your system.
The build should produce two files: lib/meam/libmeam.a and
lib/meam/Makefile.lammps. The latter is copied from an existing
Makefile.lammps.* and has settings needed to link C++ (LAMMPS) with
Fortran (MEAM library). Typically the two compilers used for LAMMPS
and the MEAM library need to be consistent (e.g. both Intel or both
GNU compilers). If necessary, you can edit/create a new
lib/meam/Makefile.machine file for your system, which should define an
EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
file.
:line
MESSAGE package :h4,link(message) MESSAGE package :h4,link(message)
This package can optionally include support for messaging via sockets, This package can optionally include support for messaging via sockets,

View File

@ -41,7 +41,6 @@ packages:
"KIM"_Build_extras.html#kim, "KIM"_Build_extras.html#kim,
"KOKKOS"_Build_extras.html#kokkos, "KOKKOS"_Build_extras.html#kokkos,
"LATTE"_Build_extras.html#latte, "LATTE"_Build_extras.html#latte,
"MEAM"_Build_extras.html#meam,
"MESSAGE"_Build_extras.html#message, "MESSAGE"_Build_extras.html#message,
"MSCG"_Build_extras.html#mscg, "MSCG"_Build_extras.html#mscg,
"OPT"_Build_extras.html#opt, "OPT"_Build_extras.html#opt,

View File

@ -33,6 +33,11 @@ commands in it are used to define a LAMMPS simulation.
Commands_bond Commands_bond
Commands_kspace Commands_kspace
.. toctree::
:maxdepth: 1
Commands_removed
END_RST --> END_RST -->
<!-- HTML_ONLY --> <!-- HTML_ONLY -->
@ -49,5 +54,7 @@ END_RST -->
"Bond, angle, dihedral, improper commands"_Commands_bond.html "Bond, angle, dihedral, improper commands"_Commands_bond.html
"KSpace solvers"_Commands_kspace.html :all(b) "KSpace solvers"_Commands_kspace.html :all(b)
"Removed commands and packages"_Commands_removed.html :all(b)
<!-- END_HTML_ONLY --> <!-- END_HTML_ONLY -->

View File

@ -85,7 +85,7 @@ An alphabetic list of all general LAMMPS commands.
"molecule"_molecule.html, "molecule"_molecule.html,
"ndx2group"_group2ndx.html, "ndx2group"_group2ndx.html,
"neb"_neb.html, "neb"_neb.html,
"neb_spin"_neb_spin.html, "neb/spin"_neb_spin.html,
"neigh_modify"_neigh_modify.html, "neigh_modify"_neigh_modify.html,
"neighbor"_neighbor.html, "neighbor"_neighbor.html,
"newton"_newton.html, "newton"_newton.html,

View File

@ -28,8 +28,12 @@ OPT.
"none"_bond_none.html, "none"_bond_none.html,
"zero"_bond_zero.html, "zero"_bond_zero.html,
"hybrid"_bond_hybrid.html :tb(c=3,ea=c) "hybrid"_bond_hybrid.html,
,
,
,
,
,
"class2 (ko)"_bond_class2.html, "class2 (ko)"_bond_class2.html,
"fene (iko)"_bond_fene.html, "fene (iko)"_bond_fene.html,
"fene/expand (o)"_bond_fene_expand.html, "fene/expand (o)"_bond_fene_expand.html,
@ -56,8 +60,12 @@ OPT.
"none"_angle_none.html, "none"_angle_none.html,
"zero"_angle_zero.html, "zero"_angle_zero.html,
"hybrid"_angle_hybrid.html :tb(c=3,ea=c) "hybrid"_angle_hybrid.html,
,
,
,
,
,
"charmm (iko)"_angle_charmm.html, "charmm (iko)"_angle_charmm.html,
"class2 (ko)"_angle_class2.html, "class2 (ko)"_angle_class2.html,
"class2/p6"_angle_class2.html, "class2/p6"_angle_class2.html,
@ -89,8 +97,12 @@ OPT.
"none"_dihedral_none.html, "none"_dihedral_none.html,
"zero"_dihedral_zero.html, "zero"_dihedral_zero.html,
"hybrid"_dihedral_hybrid.html :tb(c=3,ea=c) "hybrid"_dihedral_hybrid.html,
,
,
,
,
,
"charmm (iko)"_dihedral_charmm.html, "charmm (iko)"_dihedral_charmm.html,
"charmmfsw"_dihedral_charmm.html, "charmmfsw"_dihedral_charmm.html,
"class2 (ko)"_dihedral_class2.html, "class2 (ko)"_dihedral_class2.html,
@ -117,8 +129,12 @@ OPT.
"none"_improper_none.html, "none"_improper_none.html,
"zero"_improper_zero.html, "zero"_improper_zero.html,
"hybrid"_improper_hybrid.html :tb(c=3,ea=c) "hybrid"_improper_hybrid.html,
,
,
,
,
,
"class2 (ko)"_improper_class2.html, "class2 (ko)"_improper_class2.html,
"cossq (o)"_improper_cossq.html, "cossq (o)"_improper_cossq.html,
"cvff (io)"_improper_cvff.html, "cvff (io)"_improper_cvff.html,

View File

@ -27,8 +27,11 @@ OPT.
"none"_pair_none.html, "none"_pair_none.html,
"zero"_pair_zero.html, "zero"_pair_zero.html,
"hybrid (k)"_pair_hybrid.html, "hybrid (k)"_pair_hybrid.html,
"hybrid/overlay (k)"_pair_hybrid.html :tb(c=4,ea=c) "hybrid/overlay (k)"_pair_hybrid.html,
,
,
,
,
"adp (o)"_pair_adp.html, "adp (o)"_pair_adp.html,
"agni (o)"_pair_agni.html, "agni (o)"_pair_agni.html,
"airebo (io)"_pair_airebo.html, "airebo (io)"_pair_airebo.html,
@ -80,6 +83,8 @@ OPT.
"dpd/fdt/energy (k)"_pair_dpd_fdt.html, "dpd/fdt/energy (k)"_pair_dpd_fdt.html,
"dpd/tstat (go)"_pair_dpd.html, "dpd/tstat (go)"_pair_dpd.html,
"dsmc"_pair_dsmc.html, "dsmc"_pair_dsmc.html,
"e3b"_pair_e3b.html,
"drip"_pair_drip.html,
"eam (gikot)"_pair_eam.html, "eam (gikot)"_pair_eam.html,
"eam/alloy (gikot)"_pair_eam.html, "eam/alloy (gikot)"_pair_eam.html,
"eam/cd (o)"_pair_eam.html, "eam/cd (o)"_pair_eam.html,

View File

@ -0,0 +1,66 @@
"Higher level section"_Commands.html - "LAMMPS WWW Site"_lws - "LAMMPS
Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Commands.html)
:line
Removed commands and packages :h3
This page lists LAMMPS commands and packages that have been removed from
the distribution and provides suggestions for alternatives or replacements.
LAMMPS has special dummy styles implemented, that will stop LAMMPS and
print a suitable error message in most cases, when a style/command is used
that has been removed.
Fix ave/spatial and fix ave/spatial/sphere :h4
The fixes ave/spatial and ave/spatial/sphere have been removed from LAMMPS
since they were superseded by the more general and extensible "chunk
infrastructure". Here the system is partitioned in one of many possible
ways through the "compute chunk/atom"_compute_chunk_atom.html command
and then averaging is done using "fix ave/chunk"_fix_ave_chunk.html.
Please refer to the "chunk HOWTO"_Howto_chunk.html section for an overview.
MEAM package :h4
The MEAM package has been removed since it was superseded by the
"USER-MEAMC package"_Package_details.html#PKG-USER-MEAMC. The code in
the USER-MEAMC package is a translation of the Fortran code of MEAM into C++,
which removes several restrictions (e.g. there can be multiple instances
in hybrid pair styles) and allows for some optimizations leading
to better performance. The new pair style "meam/c"_pair_meamc.html has
the exact same syntax as the old "meam" pair style and thus pair style
"meam"_pair_meamc.html is an alias to the new style and backward
compatibility of old inputs is preserved.
REAX package :h4
The REAX package has been removed since it was superseded by the
"USER-REAXC package"_Package_details.html#PKG-USER-REAXC. The USER-REAXC
package has been tested to yield equivalent results to the REAX package,
offers better performance, supports OpenMP multi-threading via USER-OMP,
and GPU and threading parallelization through KOKKOS. The new pair styles
are not syntax compatible with the removed reax pair style, so input
files will have to be adapted.
USER-CUDA package :h4
The USER-CUDA package had been removed, since it had been unmaintained
for a long time and had known bugs and problems. Significant parts of
the design were transferred to the
"KOKKOS package"_Package_details.html#PKG-KOKKOS, which has similar
performance characteristics on Nvidia GPUs. Both, the KOKKOS
and the "GPU package"_Package_details.html#PKG-GPU are maintained
and allow running LAMMPS with GPU acceleration.
restart2data tool :h4
The functionality of the restart2data tool has been folded into the
LAMMPS executable directly instead of having a separate tool. A
combination of the commands "read_restart"_read_restart.html and
"write_data"_write_data.html can be used to the same effect. For added
convenience this conversion can also be triggered by "command line
flags"_Run_options.html

BIN
doc/src/Eqs/e3b.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

15
doc/src/Eqs/e3b.tex Normal file
View File

@ -0,0 +1,15 @@
\documentclass[12pt]{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
E =& E_2 \sum_{i,j}e^{-k_2 r_{ij}} + E_A \sum_{\substack{i,j,k,\ell \\\in \textrm{type A}}} f(r_{ij})f(r_{k\ell}) + E_B \sum_{\substack{i,j,k,\ell \\\in \textrm{type B}}} f(r_{ij})f(r_{k\ell}) + E_C \sum_{\substack{i,j,k,\ell \\\in \textrm{type C}}} f(r_{ij})f(r_{k\ell}) \\
f(r) =& e^{-k_3 r}s(r) \\
s(r) =& \begin{cases}
1 & r<R_s \\
\displaystyle\frac{(R_f-r)^2(R_f-3R_s+2r)}{(R_f-R_s)^3} & R_s\leq r\leq R_f \\
0 & r>R_f\\
\end{cases}
\end{align*}
\end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,21 @@
\documentclass[preview]{standalone}
\usepackage{varwidth}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath,amssymb,amsthm,bm}
\begin{document}
\begin{varwidth}{50in}
\begin{equation}
\bm{H}_{cubic} = -\sum_{{ i}=1}^{N} K_{1}
\Big[
\left(\vec{s}_{i} \cdot \vec{n1} \right)^2
\left(\vec{s}_{i} \cdot \vec{n2} \right)^2 +
\left(\vec{s}_{i} \cdot \vec{n2} \right)^2
\left(\vec{s}_{i} \cdot \vec{n3} \right)^2 +
\left(\vec{s}_{i} \cdot \vec{n1} \right)^2
\left(\vec{s}_{i} \cdot \vec{n3} \right)^2 \Big]
+K_{2}^{(c)} \left(\vec{s}_{i} \cdot \vec{n1} \right)^2
\left(\vec{s}_{i} \cdot \vec{n2} \right)^2
\left(\vec{s}_{i} \cdot \vec{n3} \right)^2 \nonumber
\end{equation}
\end{varwidth}
\end{document}

BIN
doc/src/Eqs/pair_drip.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

14
doc/src/Eqs/pair_drip.tex Normal file
View File

@ -0,0 +1,14 @@
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{bm}
\begin{document}
\begin{eqnarray*}
E &=& \frac{1}{2} \sum_{i} \sum_{j\notin\text{layer}\,i} \phi_{ij} \\\phi_{ij} &=& f_\text{c}(x_r) \left[ e^{-\lambda(r_{ij} - z_0 )} \left[C+f(\rho_{ij})+ g(\rho_{ij}, \{\alpha_{ij}^{(m)}\}) \right]- A\left (\frac{z_0}{r_{ij}} \right)^6 \right] \\
\end{eqnarray*}
\end{document}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -1,9 +1,9 @@
\documentclass[12pt]{article} \documentclass[12pt]{article}
\pagestyle{empty}
\begin{document} \begin{document}
$$ $$
E(r) = \frac{A}{r^{12}} - \frac{A}{r^{6}} E(r) = \frac{A}{r^{12}} - \frac{B}{r^{6}}
$$ $$
\end{document} \end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -0,0 +1,42 @@
\documentclass[preview]{standalone}
\usepackage{varwidth}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath,amssymb,graphics,bm,setspace}
\begin{document}
\begin{varwidth}{50in}
\begin{equation}
\mathcal{H}_{\rm long}=
-\frac{\mu_{0} \left( \mu_B\right)^2}{4\pi}
\sum_{i,j,i\neq j}^{N}
\frac{g_i g_j}{r_{ij}^3}
\Big(3
\left(\bm{e}_{ij}\cdot \bm{s}_{i}\right)
\left(\bm{e}_{ij}\cdot \bm{s}_{j}\right)
-\bm{s}_i\cdot\bm{s}_j \Big)
\nonumber
\end{equation}
\begin{equation}
\bm{\omega}_i =
\frac{\mu_0 (\mu_B)^2}{4\pi\hbar}\sum_{j}
\frac{g_i g_j}{r_{ij}^3}
\, \Big(
3\,(\bm{e}_{ij}\cdot\bm{s}_{j})\bm{e}_{ij}
-\bm{s}_{j} \Big) \nonumber
\end{equation}
\begin{equation}
\bm{F}_i =
\frac{3\, \mu_0 (\mu_B)^2}{4\pi} \sum_j
\frac{g_i g_j}{r_{ij}^4}
\Big[\big( (\bm{s}_i\cdot\bm{s}_j)
-5(\bm{e}_{ij}\cdot\bm{s}_i)
(\bm{e}_{ij}\cdot\bm{s}_j)\big) \bm{e}_{ij}+
\big(
(\bm{e}_{ij}\cdot\bm{s}_i)\bm{s}_j+
(\bm{e}_{ij}\cdot\bm{s}_j)\bm{s}_i
\big)
\Big]
\nonumber
\end{equation}
\end{varwidth}
\end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,20 @@
\documentclass[preview]{standalone}
\usepackage{varwidth}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath,amssymb,graphics,bm,setspace}
\begin{document}
\begin{varwidth}{50in}
\begin{equation}
\mathcal{H}_{\rm long}=
-\frac{\mu_{0} \left( \mu_B\right)^2}{4\pi}
\sum_{i,j,i\neq j}^{N}
\frac{g_i g_j}{r_{ij}^3}
\Big(3
\left(\bm{e}_{ij}\cdot \bm{s}_{i}\right)
\left(\bm{e}_{ij}\cdot \bm{s}_{j}\right)
-\bm{s}_i\cdot\bm{s}_j \Big)
\nonumber
\end{equation}
\end{varwidth}
\end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,23 @@
\documentclass[preview]{standalone}
\usepackage{varwidth}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath,amssymb,graphics,bm,setspace}
\begin{document}
\begin{varwidth}{50in}
\begin{equation}
\bm{F}_i =
\frac{\mu_0 (\mu_B)^2}{4\pi} \sum_j
\frac{g_i g_j}{r_{ij}^4}
\Big[\big( (\bm{s}_i\cdot\bm{s}_j)
-5(\bm{e}_{ij}\cdot\bm{s}_i)
(\bm{e}_{ij}\cdot\bm{s}_j)\big) \bm{e}_{ij}+
\big(
(\bm{e}_{ij}\cdot\bm{s}_i)\bm{s}_j+
(\bm{e}_{ij}\cdot\bm{s}_j)\bm{s}_i
\big)
\Big]
\nonumber
\end{equation}
\end{varwidth}
\end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@ -0,0 +1,17 @@
\documentclass[preview]{standalone}
\usepackage{varwidth}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath,amssymb,graphics,bm,setspace}
\begin{document}
\begin{varwidth}{50in}
\begin{equation}
\bm{\omega}_i =
\frac{\mu_0 (\mu_B)^2}{4\pi\hbar}\sum_{j}
\frac{g_i g_j}{r_{ij}^3}
\, \Big(
3\,(\bm{e}_{ij}\cdot\bm{s}_{j})\bm{e}_{ij}
-\bm{s}_{j} \Big) \nonumber
\end{equation}
\end{varwidth}
\end{document}

View File

@ -610,6 +610,62 @@ This means there is something invalid about the topology definitions. :dd
The data file header lists bonds but no bond types. :dd The data file header lists bonds but no bond types. :dd
{Bond/react: Cannot use fix bond/react with non-molecular systems} :dt
Only systems with bonds that can be changed can be used. Atom_style
template does not qualify. :dd
{Bond/react: Rmax cutoff is longer than pairwise cutoff} :dt
This is not allowed because bond creation is done using the pairwise
neighbor list. :dd
{Bond/react: Molecule template ID for fix bond/react does not exist} :dt
A valid molecule template must have been created with the molecule
command. :dd
{Bond/react: Reaction templates must contain the same number of atoms} :dt
There should be a one-to-one correspondence between atoms in the
pre-reacted and post-reacted templates, as specified by the map file. :dd
{Bond/react: Unknown section in map file} :dt
Please ensure reaction map files are properly formatted. :dd
{Bond/react: Atom affected by reaction too close to template edge} :dt
This means an atom which changes type or connectivity during the
reaction is too close to an 'edge' atom defined in the superimpose
file. This could cause incorrect assignment of bonds, angle, etc.
Generally, this means you must include more atoms in your templates,
such that there are at least two atoms between each atom involved in
the reaction and an edge atom. :dd
{Bond/react: Fix bond/react needs ghost atoms from farther away} :dt
This is because a processor needs to superimpose the entire unreacted
molecule template onto simulation atoms it knows about. The
comm_modify cutoff command can be used to extend the communication
range. :dd
{Bond/react: A deleted atom cannot remain bonded to an atom that is not deleted} :dt
Self-explanatory. :dd
{Bond/react special bond generation overflow} :dt
The number of special bonds per-atom created by a reaction exceeds the
system setting. See the read_data or create_box command for how to
specify this value. :dd
{Bond/react topology/atom exceed system topology/atom} :dt
The number of bonds, angles etc per-atom created by a reaction exceeds
the system setting. See the read_data or create_box command for how to
specify this value. :dd
{Both restart files must use % or neither} :dt {Both restart files must use % or neither} :dt
Self-explanatory. :dd Self-explanatory. :dd
@ -2146,10 +2202,6 @@ Self-explanatory. :dd
This is a current restriction in LAMMPS. :dd This is a current restriction in LAMMPS. :dd
{Cannot use pair hybrid with GPU neighbor list builds} :dt
Neighbor list builds must be done on the CPU for this pair style. :dd
{Cannot use pair tail corrections with 2d simulations} :dt {Cannot use pair tail corrections with 2d simulations} :dt
The correction factors are only currently defined for 3d systems. :dd The correction factors are only currently defined for 3d systems. :dd
@ -5467,10 +5519,6 @@ Self-explanatory. :dd
For this pair style, you cannot run part of the force calculation on For this pair style, you cannot run part of the force calculation on
the host. See the package command. :dd the host. See the package command. :dd
{GPU split param must be positive for hybrid pair styles} :dt
See the package gpu command. :dd
{GPUs are requested but Kokkos has not been compiled for CUDA} :dt {GPUs are requested but Kokkos has not been compiled for CUDA} :dt
Re-compile Kokkos with CUDA support to use GPUs. :dd Re-compile Kokkos with CUDA support to use GPUs. :dd
@ -5838,6 +5886,12 @@ Must have periodic x,y dimensions and non-periodic z dimension to use
Must have periodic x,y dimensions and non-periodic z dimension to use Must have periodic x,y dimensions and non-periodic z dimension to use
2d slab option with pppm/disp. :dd 2d slab option with pppm/disp. :dd
{Incorrect conversion in format string} :dt
A format style variable was not using either a %f, a %g, or a %e conversion.
Or an immediate variable with format suffix was not using either
a %f, a %g or a %e conversion in the format suffix. :dd
{Incorrect element names in ADP potential file} :dt {Incorrect element names in ADP potential file} :dt
The element names in the ADP file do not match those requested. :dd The element names in the ADP file do not match those requested. :dd
@ -7051,6 +7105,18 @@ Self-explanatory. :dd
One or more GPUs must be used when Kokkos is compiled for CUDA. :dd One or more GPUs must be used when Kokkos is compiled for CUDA. :dd
{Kspace_modify mesh parameter must be all zero or all positive} :dt
Valid kspace mesh parameters are >0. The code will try to auto-detect
suitable values when all three mesh sizes are set to zero (the default). :dd
{Kspace_modify mesh/disp parameter must be all zero or all positive} :dt
Valid kspace mesh/disp parameters are >0. The code will try to auto-detect
suitable values when all three mesh sizes are set to zero [and]
the required accuracy via {force/disp/real} as well as
{force/disp/kspace} is set. :dd
{Kspace style does not support compute group/group} :dt {Kspace style does not support compute group/group} :dt
Self-explanatory. :dd Self-explanatory. :dd
@ -7464,6 +7530,11 @@ The Atoms section of a data file must come before a Triangles section. :dd
The Atoms section of a data file must come before a Velocities The Atoms section of a data file must come before a Velocities
section. :dd section. :dd
{Must re-specify non-restarted pair style (xxx) after read_restart} :dt
For pair styles, that do not store their settings in a restart file,
it must be defined with a new 'pair_style' command after read_restart. :dd
{Must set both respa inner and outer} :dt {Must set both respa inner and outer} :dt
Cannot use just the inner or outer option with respa without using the Cannot use just the inner or outer option with respa without using the
@ -10023,25 +10094,25 @@ quote. :dd
Self-explanatory. :dd Self-explanatory. :dd
{Unexpected end of AngleCoeffs section} :dt {Unexpected empty line in AngleCoeffs section} :dt
Read a blank line. :dd Read a blank line where there should be coefficient data. :dd
{Unexpected end of BondCoeffs section} :dt {Unexpected empty line in BondCoeffs section} :dt
Read a blank line. :dd Read a blank line where there should be coefficient data. :dd
{Unexpected end of DihedralCoeffs section} :dt {Unexpected empty line in DihedralCoeffs section} :dt
Read a blank line. :dd Read a blank line where there should be coefficient data. :dd
{Unexpected end of ImproperCoeffs section} :dt {Unexpected empty line in ImproperCoeffs section} :dt
Read a blank line. :dd Read a blank line where there should be coefficient data. :dd
{Unexpected end of PairCoeffs section} :dt {Unexpected empty line in PairCoeffs section} :dt
Read a blank line. :dd Read a blank line where there should be coefficient data. :dd
{Unexpected end of custom file} :dt {Unexpected end of custom file} :dt
@ -10082,19 +10153,19 @@ create_box command. :dd
A universe or uloop style variable must specify a number of values >= to the A universe or uloop style variable must specify a number of values >= to the
number of processor partitions. :dd number of processor partitions. :dd
{Unknown angle style} :dt {Unrecognized angle style} :dt
The choice of angle style is unknown. :dd The choice of angle style is unknown. :dd
{Unknown atom style} :dt {Unrecognized atom style} :dt
The choice of atom style is unknown. :dd The choice of atom style is unknown. :dd
{Unknown body style} :dt {Unrecognized body style} :dt
The choice of body style is unknown. :dd The choice of body style is unknown. :dd
{Unknown bond style} :dt {Unrecognized bond style} :dt
The choice of bond style is unknown. :dd The choice of bond style is unknown. :dd
@ -10110,23 +10181,23 @@ Self-explanatory. :dd
Self-explanatory. :dd Self-explanatory. :dd
{Unknown command: %s} :dt {Unrecognized command: %s} :dt
The command is not known to LAMMPS. Check the input script. :dd The command is not known to LAMMPS. Check the input script. :dd
{Unknown compute style} :dt {Unrecognized compute style} :dt
The choice of compute style is unknown. :dd The choice of compute style is unknown. :dd
{Unknown dihedral style} :dt {Unrecognized dihedral style} :dt
The choice of dihedral style is unknown. :dd The choice of dihedral style is unknown. :dd
{Unknown dump reader style} :dt {Unrecognized dump reader style} :dt
The choice of dump reader style via the format keyword is unknown. :dd The choice of dump reader style via the format keyword is unknown. :dd
{Unknown dump style} :dt {Unrecognized dump style} :dt
The choice of dump style is unknown. :dd The choice of dump style is unknown. :dd
@ -10134,7 +10205,7 @@ The choice of dump style is unknown. :dd
Self-explanatory. :dd Self-explanatory. :dd
{Unknown fix style} :dt {Unrecognized fix style} :dt
The choice of fix style is unknown. :dd The choice of fix style is unknown. :dd
@ -10142,7 +10213,7 @@ The choice of fix style is unknown. :dd
A section of the data file cannot be read by LAMMPS. :dd A section of the data file cannot be read by LAMMPS. :dd
{Unknown improper style} :dt {Unrecognized improper style} :dt
The choice of improper style is unknown. :dd The choice of improper style is unknown. :dd
@ -10150,7 +10221,7 @@ The choice of improper style is unknown. :dd
One or more specified keywords are not recognized. :dd One or more specified keywords are not recognized. :dd
{Unknown kspace style} :dt {Unrecognized kspace style} :dt
The choice of kspace style is unknown. :dd The choice of kspace style is unknown. :dd
@ -10166,7 +10237,7 @@ Self-explanatory. :dd
Self-explanatory. :dd Self-explanatory. :dd
{Unknown pair style} :dt {Unrecognized pair style} :dt
The choice of pair style is unknown. :dd The choice of pair style is unknown. :dd
@ -10174,7 +10245,7 @@ The choice of pair style is unknown. :dd
The choice of sub-style is unknown. :dd The choice of sub-style is unknown. :dd
{Unknown region style} :dt {Unrecognized region style} :dt
The choice of region style is unknown. :dd The choice of region style is unknown. :dd

View File

@ -82,6 +82,15 @@ bond/angle/dihedral. LAMMPS computes this by taking the maximum bond
length, multiplying by the number of bonds in the interaction (e.g. 3 length, multiplying by the number of bonds in the interaction (e.g. 3
for a dihedral) and adding a small amount of stretch. :dd for a dihedral) and adding a small amount of stretch. :dd
{Bond/react: Atom affected by reaction too close to template edge} :dt
This means an atom which changes type or connectivity during the
reaction is too close to an 'edge' atom defined in the superimpose
file. This could cause incorrect assignment of bonds, angle, etc.
Generally, this means you must include more atoms in your templates,
such that there are at least two atoms between each atom involved in
the reaction and an edge atom. :dd
{Both groups in compute group/group have a net charge; the Kspace boundary correction to energy will be non-zero} :dt {Both groups in compute group/group have a net charge; the Kspace boundary correction to energy will be non-zero} :dt
Self-explanatory. :dd Self-explanatory. :dd

View File

@ -11,7 +11,7 @@ Section"_Tools.html :c
Example scripts :h3 Example scripts :h3
The LAMMPS distribution includes an examples sub-directory with many The LAMMPS distribution includes an examples sub-directory with many
sample problems. Many are 2d models that run quickly are are sample problems. Many are 2d models that run quickly and are
straightforward to visualize, requiring at most a couple of minutes to straightforward to visualize, requiring at most a couple of minutes to
run on a desktop machine. Each problem has an input script (in.*) and run on a desktop machine. Each problem has an input script (in.*) and
produces a log file (log.*) when it runs. Some use a data file produces a log file (log.*) when it runs. Some use a data file
@ -52,13 +52,14 @@ Lowercase directories :h4
accelerate: run with various acceleration options (OpenMP, GPU, Phi) accelerate: run with various acceleration options (OpenMP, GPU, Phi)
airebo: polyethylene with AIREBO potential airebo: polyethylene with AIREBO potential
atm: Axilrod-Teller-Muto potential example
balance: dynamic load balancing, 2d system balance: dynamic load balancing, 2d system
body: body particles, 2d system body: body particles, 2d system
cmap: CMAP 5-body contributions to CHARMM force field cmap: CMAP 5-body contributions to CHARMM force field
colloid: big colloid particles in a small particle solvent, 2d system colloid: big colloid particles in a small particle solvent, 2d system
comb: models using the COMB potential comb: models using the COMB potential
coreshell: core/shell model using CORESHELL package
controller: use of fix controller as a thermostat controller: use of fix controller as a thermostat
coreshell: core/shell model using CORESHELL package
crack: crack propagation in a 2d solid crack: crack propagation in a 2d solid
deposit: deposit atoms and molecules on a surface deposit: deposit atoms and molecules on a surface
dipole: point dipolar particles, 2d system dipole: point dipolar particles, 2d system
@ -70,10 +71,13 @@ friction: frictional contact of spherical asperities between 2d surfaces
gcmc: Grand Canonical Monte Carlo (GCMC) via the fix gcmc command gcmc: Grand Canonical Monte Carlo (GCMC) via the fix gcmc command
granregion: use of fix wall/region/gran as boundary on granular particles granregion: use of fix wall/region/gran as boundary on granular particles
hugoniostat: Hugoniostat shock dynamics hugoniostat: Hugoniostat shock dynamics
hyper: global and local hyperdynamics of diffusion on Pt surface
indent: spherical indenter into a 2d solid indent: spherical indenter into a 2d solid
kim: use of potentials in Knowledge Base for Interatomic Models (KIM) kim: use of potentials in Knowledge Base for Interatomic Models (KIM)
latte: examples for using fix latte for DFTB via the LATTE library
meam: MEAM test for SiC and shear (same as shear examples) meam: MEAM test for SiC and shear (same as shear examples)
melt: rapid melt of 3d LJ system melt: rapid melt of 3d LJ system
message: demos for LAMMPS client/server coupling with the MESSAGE package
micelle: self-assembly of small lipid-like molecules into 2d bilayers micelle: self-assembly of small lipid-like molecules into 2d bilayers
min: energy minimization of 2d LJ melt min: energy minimization of 2d LJ melt
mscg: parameterize a multi-scale coarse-graining (MSCG) model mscg: parameterize a multi-scale coarse-graining (MSCG) model
@ -88,6 +92,7 @@ pour: pouring of granular particles into a 3d box, then chute flow
prd: parallel replica dynamics of vacancy diffusion in bulk Si prd: parallel replica dynamics of vacancy diffusion in bulk Si
python: using embedded Python in a LAMMPS input script python: using embedded Python in a LAMMPS input script
qeq: use of the QEQ package for charge equilibration qeq: use of the QEQ package for charge equilibration
rdf-adf: computing radial and angle distribution functions for water
reax: RDX and TATB models using the ReaxFF reax: RDX and TATB models using the ReaxFF
rigid: rigid bodies modeled as independent or coupled rigid: rigid bodies modeled as independent or coupled
shear: sideways shear applied to 2d solid, with and without a void shear: sideways shear applied to 2d solid, with and without a void
@ -95,6 +100,7 @@ snap: NVE dynamics for BCC tantalum crystal using SNAP potential
srd: stochastic rotation dynamics (SRD) particles as solvent srd: stochastic rotation dynamics (SRD) particles as solvent
streitz: use of Streitz/Mintmire potential with charge equilibration streitz: use of Streitz/Mintmire potential with charge equilibration
tad: temperature-accelerated dynamics of vacancy diffusion in bulk Si tad: temperature-accelerated dynamics of vacancy diffusion in bulk Si
threebody: regression test input for a variety of manybody potentials
vashishta: use of the Vashishta potential vashishta: use of the Vashishta potential
voronoi: Voronoi tesselation via compute voronoi/atom command :tb(s=:) voronoi: Voronoi tesselation via compute voronoi/atom command :tb(s=:)
@ -131,8 +137,10 @@ COUPLE: examples of how to use LAMMPS as a library
DIFFUSE: compute diffusion coefficients via several methods DIFFUSE: compute diffusion coefficients via several methods
ELASTIC: compute elastic constants at zero temperature ELASTIC: compute elastic constants at zero temperature
ELASTIC_T: compute elastic constants at finite temperature ELASTIC_T: compute elastic constants at finite temperature
HEAT: compute thermal conductivity for LJ and water via fix ehex
KAPPA: compute thermal conductivity via several methods KAPPA: compute thermal conductivity via several methods
MC: using LAMMPS in a Monte Carlo mode to relax the energy of a system MC: using LAMMPS in a Monte Carlo mode to relax the energy of a system
SPIN: examples for features of the SPIN package
USER: examples for USER packages and USER-contributed commands USER: examples for USER packages and USER-contributed commands
VISCOSITY: compute viscosity via several methods :tb(s=:) VISCOSITY: compute viscosity via several methods :tb(s=:)

View File

@ -56,7 +56,7 @@ COMPASS is a general force field for atomistic simulation of common
organic molecules, inorganic small molecules, and polymers which was organic molecules, inorganic small molecules, and polymers which was
developed using ab initio and empirical parameterization techniques. developed using ab initio and empirical parameterization techniques.
See the "Tools"_Tools.html doc page for the msi2lmp tool for creating See the "Tools"_Tools.html doc page for the msi2lmp tool for creating
LAMMPS template input and data files from BIOVIAs Materials Studio LAMMPS template input and data files from BIOVIA's Materials Studio
files. Please note that the msi2lmp tool is very old and largely files. Please note that the msi2lmp tool is very old and largely
unmaintained, so it does not support all features of Materials Studio unmaintained, so it does not support all features of Materials Studio
provided force field files, especially additions during the last decade. provided force field files, especially additions during the last decade.
@ -129,7 +129,7 @@ Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995). Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).
:link(howto-Sun) :link(howto-Sun)
[(Sun)] Sun, J. Phys. Chem. B, 102, 73387364 (1998). [(Sun)] Sun, J. Phys. Chem. B, 102, 7338-7364 (1998).
:link(howto-Mayo) :link(howto-Mayo)
[(Mayo)] Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909 [(Mayo)] Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909

View File

@ -29,3 +29,5 @@ diffusion coefficient. The instantaneous VACF values can be
accumulated in a vector via the "fix vector"_fix_vector.html command, accumulated in a vector via the "fix vector"_fix_vector.html command,
and time integrated via the "variable trap"_variable.html function, and time integrated via the "variable trap"_variable.html function,
and thus extract D. and thus extract D.
:line

View File

@ -274,7 +274,7 @@ crash. Even without reaching this extreme case, the correlation
between nearby dipoles on the same molecule may be exaggerated. Often, between nearby dipoles on the same molecule may be exaggerated. Often,
special bond relations prevent bonded neighboring atoms to see the special bond relations prevent bonded neighboring atoms to see the
charge of each other's DP, so that the problem does not always appear. charge of each other's DP, so that the problem does not always appear.
It is possible to use screened dipole dipole interactions by using the It is possible to use screened dipole-dipole interactions by using the
"{pair_style thole}"_pair_thole.html. This is implemented as a "{pair_style thole}"_pair_thole.html. This is implemented as a
correction to the Coulomb pair_styles, which dampens at short distance correction to the Coulomb pair_styles, which dampens at short distance
the interactions between the charges representing the induced dipoles. the interactions between the charges representing the induced dipoles.

View File

@ -52,7 +52,7 @@ as if you unpacked a current LAMMPS tarball, with the exception, that
the HTML documentation files are not included. They can be fetched the HTML documentation files are not included. They can be fetched
from the LAMMPS website by typing "make fetch" in the doc directory. from the LAMMPS website by typing "make fetch" in the doc directory.
Or they can be generated from the content provided in doc/src by Or they can be generated from the content provided in doc/src by
typing "make html" from the the doc directory. typing "make html" from the doc directory.
After initial cloning, as bug fixes and new features are added to After initial cloning, as bug fixes and new features are added to
LAMMPS, as listed on "this page"_Errors_bugs.html, you can stay LAMMPS, as listed on "this page"_Errors_bugs.html, you can stay

View File

@ -40,7 +40,7 @@ as if you unpacked a current LAMMPS tarball, with the exception, that
the HTML documentation files are not included. They can be fetched the HTML documentation files are not included. They can be fetched
from the LAMMPS website by typing "make fetch" in the doc directory. from the LAMMPS website by typing "make fetch" in the doc directory.
Or they can be generated from the content provided in doc/src by Or they can be generated from the content provided in doc/src by
typing "make html" from the the doc directory. typing "make html" from the doc directory.
After initial checkout, as bug fixes and new features are added to After initial checkout, as bug fixes and new features are added to
LAMMPS, as listed on "this page"_Errors_bugs.html, you can stay LAMMPS, as listed on "this page"_Errors_bugs.html, you can stay

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -1,7 +1,7 @@
<!-- HTML_ONLY --> <!-- HTML_ONLY -->
<HEAD> <HEAD>
<TITLE>LAMMPS Users Manual</TITLE> <TITLE>LAMMPS Users Manual</TITLE>
<META NAME="docnumber" CONTENT="30 Apr 2019 version"> <META NAME="docnumber" CONTENT="18 Jun 2019 version">
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories"> <META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License."> <META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
</HEAD> </HEAD>
@ -21,7 +21,7 @@
:line :line
LAMMPS Documentation :c,h1 LAMMPS Documentation :c,h1
30 Apr 2019 version :c,h2 18 Jun 2019 version :c,h2
"What is a LAMMPS version?"_Manual_version.html "What is a LAMMPS version?"_Manual_version.html

View File

@ -208,7 +208,7 @@ available on your system.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#compress on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -373,7 +373,7 @@ interface in close collaboration with Ryan Elliott.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#kim on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -420,7 +420,7 @@ lib/kokkos.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#kokkos on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -493,7 +493,7 @@ Cawkwell, Anders Niklasson, and Christian Negre.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#latte on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -670,7 +670,7 @@ University of Chicago.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#mscg on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -702,7 +702,7 @@ and Vincent Natoli (Stone Ridge Technolgy).
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#opt on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -722,7 +722,7 @@ PERI package :link(PKG-PERI),h4
An atom style, several pair styles which implement different An atom style, several pair styles which implement different
Peridynamics materials models, and several computes which calculate Peridynamics materials models, and several computes which calculate
diagnostics. Peridynamics is a a particle-based meshless continuum diagnostics. Peridynamics is a particle-based meshless continuum
model. model.
[Authors:] The original package was created by Mike Parks (Sandia). [Authors:] The original package was created by Mike Parks (Sandia).
@ -759,7 +759,7 @@ connections at hinge points.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#poems on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -791,7 +791,7 @@ lib/python/README for more details.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#python on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -921,7 +921,7 @@ SPIN package :link(PKG-SPIN),h4
Model atomic magnetic spins classically, coupled to atoms moving in Model atomic magnetic spins classically, coupled to atoms moving in
the usual manner via MD. Various pair, fix, and compute styles. the usual manner via MD. Various pair, fix, and compute styles.
[Author:] Julian Tranchida (Sandia). [Author:] Julien Tranchida (Sandia).
[Supporting info:] [Supporting info:]
@ -981,7 +981,7 @@ and LBNL.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#voronoi on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -1033,7 +1033,7 @@ atomic information to continuum fields.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#user-atc on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -1060,7 +1060,7 @@ model.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#user-awpmd on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -1200,7 +1200,7 @@ Tribello.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#user-plumed on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -1245,7 +1245,7 @@ isothermal, isoenergetic, isobaric and isenthalpic conditions are
included. These enable long timesteps via the Shardlow splitting included. These enable long timesteps via the Shardlow splitting
algorithm. algorithm.
[Authors:] Jim Larentzos (ARL), Tim Mattox (Engility Corp), and and John [Authors:] Jim Larentzos (ARL), Tim Mattox (Engility Corp), and John
Brennan (ARL). Brennan (ARL).
[Supporting info:] [Supporting info:]
@ -1378,7 +1378,7 @@ H5MD format.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#user-h5md on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -1416,7 +1416,7 @@ NOTE: the USER-INTEL package contains styles that require using the
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#user-intel on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -1553,7 +1553,7 @@ USER-MESO package :link(PKG-USER-MESO),h4
[Contents:] [Contents:]
Several extensions of the the dissipative particle dynamics (DPD) Several extensions of the dissipative particle dynamics (DPD)
method. Specifically, energy-conserving DPD (eDPD) that can model method. Specifically, energy-conserving DPD (eDPD) that can model
non-isothermal processes, many-body DPD (mDPD) for simulating non-isothermal processes, many-body DPD (mDPD) for simulating
vapor-liquid coexistence, and transport DPD (tDPD) for modeling vapor-liquid coexistence, and transport DPD (tDPD) for modeling
@ -1636,7 +1636,7 @@ at
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#user-molfile on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -1676,7 +1676,7 @@ tools:
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#user-netcdf on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -1720,7 +1720,7 @@ install/un-install the package and build LAMMPS in the usual manner:
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#user-omp on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -1804,7 +1804,7 @@ without changes to LAMMPS itself.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#user-qmmm on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -1862,7 +1862,7 @@ on your system.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#user-quip on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -1980,7 +1980,7 @@ Dynamics, Ernst Mach Institute, Germany).
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#user-smd on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]
@ -2106,7 +2106,7 @@ system.
[Install:] [Install:]
This package has "specific installation This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#user-vtk on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
[Supporting info:] [Supporting info:]

View File

@ -180,7 +180,7 @@ doubles is returned, one value per atom, which you can use via normal
Python subscripting. The values will be zero for atoms not in the Python subscripting. The values will be zero for atoms not in the
specified group. specified group.
The get_thermo() method returns returns the current value of a thermo The get_thermo() method returns the current value of a thermo
keyword as a float. keyword as a float.
The get_natoms() method returns the total number of atoms in the The get_natoms() method returns the total number of atoms in the

View File

@ -242,7 +242,7 @@ processors.
Running with multiple partitions can be useful for running Running with multiple partitions can be useful for running
"multi-replica simulations"_Howto_replica.html, where each replica "multi-replica simulations"_Howto_replica.html, where each replica
runs on on one or a few processors. Note that with MPI installed on a runs on one or a few processors. Note that with MPI installed on a
machine (e.g. your desktop), you can run on more (virtual) processors machine (e.g. your desktop), you can run on more (virtual) processors
than you have physical processors. than you have physical processors.

View File

@ -93,7 +93,7 @@ monitor thread utilization and load balance is provided. A new {Thread
timings} section is also added, which lists the time spent in reducing timings} section is also added, which lists the time spent in reducing
the per-thread data elements to the storage for non-threaded the per-thread data elements to the storage for non-threaded
computation. These thread timings are measured for the first MPI rank computation. These thread timings are measured for the first MPI rank
only and and thus, because the breakdown for MPI tasks can change from only and thus, because the breakdown for MPI tasks can change from
MPI rank to MPI rank, this breakdown can be very different for MPI rank to MPI rank, this breakdown can be very different for
individual ranks. Here is an example output for this section: individual ranks. Here is an example output for this section:

View File

@ -104,7 +104,7 @@ code (with a performance penalty due to having data transfers between
host and GPU). :ulb,l host and GPU). :ulb,l
The GPU package requires neighbor lists to be built on the CPU when using The GPU package requires neighbor lists to be built on the CPU when using
exclusion lists, hybrid pair styles, or a triclinic simulation box. :l exclusion lists, or a triclinic simulation box. :l
The GPU package can be compiled for CUDA or OpenCL and thus supports The GPU package can be compiled for CUDA or OpenCL and thus supports
both, Nvidia and AMD GPUs well. On Nvidia hardware, using CUDA is typically both, Nvidia and AMD GPUs well. On Nvidia hardware, using CUDA is typically

View File

@ -46,7 +46,7 @@ software version 7.5 or later must be installed on your system. See
the discussion for the "GPU package"_Speed_gpu.html for details of how the discussion for the "GPU package"_Speed_gpu.html for details of how
to check and do this. to check and do this.
NOTE: Kokkos with CUDA currently implicitly assumes, that the MPI NOTE: Kokkos with CUDA currently implicitly assumes that the MPI
library is CUDA-aware and has support for GPU-direct. This is not library is CUDA-aware and has support for GPU-direct. This is not
always the case, especially when using pre-compiled MPI libraries always the case, especially when using pre-compiled MPI libraries
provided by a Linux distribution. This is not a problem when using provided by a Linux distribution. This is not a problem when using
@ -111,16 +111,10 @@ Makefile.kokkos_mpi_only) will give better performance than the OpenMP
back end (i.e. Makefile.kokkos_omp) because some of the overhead to make back end (i.e. Makefile.kokkos_omp) because some of the overhead to make
the code thread-safe is removed. the code thread-safe is removed.
NOTE: The default for the "package kokkos"_package.html command is to NOTE: Use the "-pk kokkos" "command-line switch"_Run_options.html to
use "full" neighbor lists and set the Newton flag to "off" for both change the default "package kokkos"_package.html options. See its doc
pairwise and bonded interactions. However, when running on CPUs, it page for details and default settings. Experimenting with its options
will typically be faster to use "half" neighbor lists and set the can provide a speed-up for specific calculations. For example:
Newton flag to "on", just as is the case for non-accelerated pair
styles. It can also be faster to use non-threaded communication. Use
the "-pk kokkos" "command-line switch"_Run_options.html to change the
default "package kokkos"_package.html options. See its doc page for
details and default settings. Experimenting with its options can
provide a speed-up for specific calculations. For example:
mpirun -np 16 lmp_kokkos_mpi_only -k on -sf kk -pk kokkos newton on neigh half comm no -in in.lj # Newton on, Half neighbor list, non-threaded comm :pre mpirun -np 16 lmp_kokkos_mpi_only -k on -sf kk -pk kokkos newton on neigh half comm no -in in.lj # Newton on, Half neighbor list, non-threaded comm :pre
@ -190,19 +184,18 @@ tasks/node. The "-k on t Nt" command-line switch sets the number of
threads/task as Nt. The product of these two values should be N, i.e. threads/task as Nt. The product of these two values should be N, i.e.
256 or 264. 256 or 264.
NOTE: The default for the "package kokkos"_package.html command is to NOTE: The default for the "package kokkos"_package.html command when
use "full" neighbor lists and set the Newton flag to "off" for both running on KNL is to use "half" neighbor lists and set the Newton flag
pairwise and bonded interactions. When running on KNL, this will to "on" for both pairwise and bonded interactions. This will typically
typically be best for pair-wise potentials. For many-body potentials, be best for many-body potentials. For simpler pair-wise potentials, it
using "half" neighbor lists and setting the Newton flag to "on" may be may be faster to use a "full" neighbor list with Newton flag to "off".
faster. It can also be faster to use non-threaded communication. Use Use the "-pk kokkos" "command-line switch"_Run_options.html to change
the "-pk kokkos" "command-line switch"_Run_options.html to change the the default "package kokkos"_package.html options. See its doc page for
default "package kokkos"_package.html options. See its doc page for details and default settings. Experimenting with its options can provide
details and default settings. Experimenting with its options can a speed-up for specific calculations. For example:
provide a speed-up for specific calculations. For example:
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos comm no -in in.lj # Newton off, full neighbor list, non-threaded comm mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos comm host -in in.reax # Newton on, half neighbor list, threaded comm
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos newton on neigh half comm no -in in.reax # Newton on, half neighbor list, non-threaded comm :pre mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos newton off neigh full comm no -in in.lj # Newton off, full neighbor list, non-threaded comm :pre
NOTE: MPI tasks and threads should be bound to cores as described NOTE: MPI tasks and threads should be bound to cores as described
above for CPUs. above for CPUs.
@ -214,19 +207,21 @@ supports.
[Running on GPUs:] [Running on GPUs:]
Use the "-k" "command-line switch"_Run_options.html to Use the "-k" "command-line switch"_Run_options.html to specify the
specify the number of GPUs per node. Typically the -np setting of the number of GPUs per node. Typically the -np setting of the mpirun command
mpirun command should set the number of MPI tasks/node to be equal to should set the number of MPI tasks/node to be equal to the number of
the number of physical GPUs on the node. You can assign multiple MPI physical GPUs on the node. You can assign multiple MPI tasks to the same
tasks to the same GPU with the KOKKOS package, but this is usually GPU with the KOKKOS package, but this is usually only faster if some
only faster if significant portions of the input script have not portions of the input script have not been ported to use Kokkos. In this
been ported to use Kokkos. Using CUDA MPS is recommended in this case, also packing/unpacking communication buffers on the host may give
scenario. Using a CUDA-aware MPI library with support for GPU-direct speedup (see the KOKKOS "package"_package.html command). Using CUDA MPS
is highly recommended. GPU-direct use can be avoided by using is recommended in this scenario.
"-pk kokkos gpu/direct no"_package.html.
As above for multi-core CPUs (and no GPU), if N is the number of Using a CUDA-aware MPI library with
physical cores/node, then the number of MPI tasks/node should not support for GPU-direct is highly recommended. GPU-direct use can be
exceed N. avoided by using "-pk kokkos gpu/direct no"_package.html. As above for
multi-core CPUs (and no GPU), if N is the number of physical cores/node,
then the number of MPI tasks/node should not exceed N.
-k on g Ng :pre -k on g Ng :pre
@ -236,19 +231,19 @@ one or more nodes, each with two GPUs:
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 1 node, 2 MPI tasks/node, 2 GPUs/node mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 1 node, 2 MPI tasks/node, 2 GPUs/node
mpirun -np 32 -ppn 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 16 nodes, 2 MPI tasks/node, 2 GPUs/node (32 GPUs total) :pre mpirun -np 32 -ppn 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 16 nodes, 2 MPI tasks/node, 2 GPUs/node (32 GPUs total) :pre
NOTE: The default for the "package kokkos"_package.html command is to NOTE: The default for the "package kokkos"_package.html command when
use "full" neighbor lists and set the Newton flag to "off" for both running on GPUs is to use "full" neighbor lists and set the Newton flag
pairwise and bonded interactions, along with threaded communication. to "off" for both pairwise and bonded interactions, along with threaded
When running on Maxwell or Kepler GPUs, this will typically be communication. When running on Maxwell or Kepler GPUs, this will
best. For Pascal GPUs, using "half" neighbor lists and setting the typically be best. For Pascal GPUs, using "half" neighbor lists and
Newton flag to "on" may be faster. For many pair styles, setting the setting the Newton flag to "on" may be faster. For many pair styles,
neighbor binsize equal to the ghost atom cutoff will give speedup. setting the neighbor binsize equal to twice the CPU default value will
Use the "-pk kokkos" "command-line switch"_Run_options.html to change give speedup, which is the default when running on GPUs. Use the "-pk
the default "package kokkos"_package.html options. See its doc page kokkos" "command-line switch"_Run_options.html to change the default
for details and default settings. Experimenting with its options can "package kokkos"_package.html options. See its doc page for details and
provide a speed-up for specific calculations. For example: default settings. Experimenting with its options can provide a speed-up
for specific calculations. For example:
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos binsize 2.8 -in in.lj # Set binsize = neighbor ghost cutoff
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos newton on neigh half binsize 2.8 -in in.lj # Newton on, half neighbor list, set binsize = neighbor ghost cutoff :pre mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos newton on neigh half binsize 2.8 -in in.lj # Newton on, half neighbor list, set binsize = neighbor ghost cutoff :pre
NOTE: For good performance of the KOKKOS package on GPUs, you must NOTE: For good performance of the KOKKOS package on GPUs, you must

View File

@ -77,6 +77,7 @@ Post-processing tools :h3
"python"_#pythontools, "python"_#pythontools,
"reax"_#reax_tool, "reax"_#reax_tool,
"smd"_#smd, "smd"_#smd,
"spin"_#spin,
"xmgrace"_#xmgrace :tb(c=6,ea=c,a=l) "xmgrace"_#xmgrace :tb(c=6,ea=c,a=l)
Miscellaneous tools :h3 Miscellaneous tools :h3
@ -511,6 +512,20 @@ Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de).
:line :line
spin tool :h4,link(spin)
The spin sub-directory contains a C file interpolate.c which can
be compiled and used to perform a cubic polynomial interpolation of
the MEP following a GNEB calculation.
See the README file in tools/spin/interpolate_gneb for more details.
This tool was written by the SPIN package author, Julien
Tranchida at Sandia National Labs (jtranch at sandia.gov, and by Aleksei
Ivanov, at University of Iceland (ali5 at hi.is).
:line
vim tool :h4,link(vim) vim tool :h4,link(vim)
The files in the tools/vim directory are add-ons to the VIM editor The files in the tools/vim directory are add-ons to the VIM editor

View File

@ -468,7 +468,7 @@ property/chunk"_compute_property_chunk.html command.
NOTE: The compression operation requires global communication across NOTE: The compression operation requires global communication across
all processors to share their chunk ID values. It can require large all processors to share their chunk ID values. It can require large
memory on every processor to store them, even after they are memory on every processor to store them, even after they are
compressed, if there are are a large number of unique chunk IDs with compressed, if there are a large number of unique chunk IDs with
atoms assigned to them. It uses a STL map to find unique chunk IDs atoms assigned to them. It uses a STL map to find unique chunk IDs
and store them in sorted order. Each time an atom is assigned a and store them in sorted order. Each time an atom is assigned a
compressed chunk ID, it must access the STL map. All of this means compressed chunk ID, it must access the STL map. All of this means

View File

@ -49,7 +49,7 @@ For inputs that are computes, they must be a compute that calculates
per-chunk values. These are computes whose style names end in per-chunk values. These are computes whose style names end in
"/chunk". "/chunk".
For inputs that are fixes, they should be a a fix that calculates For inputs that are fixes, they should be a fix that calculates
per-chunk values. For example, "fix ave/chunk"_fix_ave_chunk.html or per-chunk values. For example, "fix ave/chunk"_fix_ave_chunk.html or
"fix ave/time"_fix_ave_time.html (assuming it is time-averaging "fix ave/time"_fix_ave_time.html (assuming it is time-averaging
per-chunk data). per-chunk data).

View File

@ -15,8 +15,9 @@ compute ID group-ID coord/atom cstyle args ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l ID, group-ID are documented in "compute"_compute.html command :ulb,l
coord/atom = style name of this compute command :l coord/atom = style name of this compute command :l
cstyle = {cutoff} or {orientorder} :l cstyle = {cutoff} or {orientorder} :l
{cutoff} args = cutoff typeN {cutoff} args = cutoff \[group group2-ID\] typeN
cutoff = distance within which to count coordination neighbors (distance units) cutoff = distance within which to count coordination neighbors (distance units)
group {group2-ID} = select group-ID to restrict which atoms to consider for coordination number (optional)
typeN = atom type for Nth coordination count (see asterisk form below) typeN = atom type for Nth coordination count (see asterisk form below)
{orientorder} args = orientorderID threshold {orientorder} args = orientorderID threshold
orientorderID = ID of an orientorder/atom compute orientorderID = ID of an orientorder/atom compute
@ -28,6 +29,7 @@ cstyle = {cutoff} or {orientorder} :l
compute 1 all coord/atom cutoff 2.0 compute 1 all coord/atom cutoff 2.0
compute 1 all coord/atom cutoff 6.0 1 2 compute 1 all coord/atom cutoff 6.0 1 2
compute 1 all coord/atom cutoff 6.0 2*4 5*8 * compute 1 all coord/atom cutoff 6.0 2*4 5*8 *
compute 1 solute coord/atom cutoff 2.0 group solvent
compute 1 all coord/atom orientorder 2 0.5 :pre compute 1 all coord/atom orientorder 2 0.5 :pre
[Description:] [Description:]
@ -38,9 +40,14 @@ meaning of the resulting value depend on the {cstyle} keyword used.
The {cutoff} cstyle calculates one or more traditional coordination The {cutoff} cstyle calculates one or more traditional coordination
numbers for each atom. A coordination number is defined as the number numbers for each atom. A coordination number is defined as the number
of neighbor atoms with specified atom type(s) that are within the of neighbor atoms with specified atom type(s), and optionally within
specified cutoff distance from the central atom. Atoms not in the the specified group, that are within the specified cutoff distance from
specified group are included in the coordination number tally. the central atom. The compute group selects only the central atoms; all
neighboring atoms, unless selected by type, type range, or group option,
are included in the coordination number tally.
The optional {group} keyword allows to specify from which group atoms
contribute to the coordination number. Default setting is group 'all'.
The {typeN} keywords allow specification of which atom types The {typeN} keywords allow specification of which atom types
contribute to each coordination number. One coordination number is contribute to each coordination number. One coordination number is
@ -122,7 +129,9 @@ explained above.
"compute cluster/atom"_compute_cluster_atom.html "compute cluster/atom"_compute_cluster_atom.html
"compute orientorder/atom"_compute_orientorder_atom.html "compute orientorder/atom"_compute_orientorder_atom.html
[Default:] none [Default:]
group = all
:line :line

View File

@ -24,12 +24,7 @@ twojmax = band limit for bispectrum components (non-negative integer) :l
R_1, R_2,... = list of cutoff radii, one for each type (distance units) :l R_1, R_2,... = list of cutoff radii, one for each type (distance units) :l
w_1, w_2,... = list of neighbor weights, one for each type :l w_1, w_2,... = list of neighbor weights, one for each type :l
zero or more keyword/value pairs may be appended :l zero or more keyword/value pairs may be appended :l
keyword = {diagonal} or {rmin0} or {switchflag} or {bzeroflag} or {quadraticflag} :l keyword = {rmin0} or {switchflag} or {bzeroflag} or {quadraticflag} :l
{diagonal} value = {0} or {1} or {2} or {3}
{0} = all j1, j2, j <= twojmax, j2 <= j1
{1} = subset satisfying j1 == j2
{2} = subset satisfying j1 == j2 == j3
{3} = subset satisfying j2 <= j1 <= j
{rmin0} value = parameter in distance to angle conversion (distance units) {rmin0} value = parameter in distance to angle conversion (distance units)
{switchflag} value = {0} or {1} {switchflag} value = {0} or {1}
{0} = do not use switching function {0} = do not use switching function
@ -44,7 +39,7 @@ keyword = {diagonal} or {rmin0} or {switchflag} or {bzeroflag} or {quadraticflag
[Examples:] [Examples:]
compute b all sna/atom 1.4 0.99363 6 2.0 2.4 0.75 1.0 diagonal 3 rmin0 0.0 compute b all sna/atom 1.4 0.99363 6 2.0 2.4 0.75 1.0 rmin0 0.0
compute db all sna/atom 1.4 0.95 6 2.0 1.0 compute db all sna/atom 1.4 0.95 6 2.0 1.0
compute vb all sna/atom 1.4 0.95 6 2.0 1.0 :pre compute vb all sna/atom 1.4 0.95 6 2.0 1.0 :pre
@ -151,7 +146,7 @@ The argument {rfac0} and the optional keyword {rmin0} define the
linear mapping from radial distance to polar angle {theta0} on the linear mapping from radial distance to polar angle {theta0} on the
3-sphere. 3-sphere.
The argument {twojmax} and the keyword {diagonal} define which The argument {twojmax} defines which
bispectrum components are generated. See section below on output for a bispectrum components are generated. See section below on output for a
detailed explanation of the number of bispectrum components and the detailed explanation of the number of bispectrum components and the
ordered in which they are listed. ordered in which they are listed.
@ -192,23 +187,18 @@ command that includes all pairs in the neighbor list.
Compute {sna/atom} calculates a per-atom array, each column Compute {sna/atom} calculates a per-atom array, each column
corresponding to a particular bispectrum component. The total number corresponding to a particular bispectrum component. The total number
of columns and the identity of the bispectrum component contained in of columns and the identity of the bispectrum component contained in
each column depend on the values of {twojmax} and {diagonal}, as each column depend of the value of {twojmax}, as
described by the following piece of python code: described by the following piece of python code:
for j1 in range(0,twojmax+1): for j1 in range(0,twojmax+1):
if(diagonal==2): for j2 in range(0,j1+1):
print j1/2.,j1/2.,j1/2. for j in range(j1-j2,min(twojmax,j1+j2)+1,2):
elif(diagonal==1): if (j>=j1): print j1/2.,j2/2.,j/2. :pre
for j in range(0,min(twojmax,2*j1)+1,2):
print j1/2.,j1/2.,j/2. NOTE: the {diagonal} keyword allowing other possible choices
elif(diagonal==0): for the number of bispectrum components was removed in 2019,
for j2 in range(0,j1+1): since all potentials use the value of 3, corresponding to the
for j in range(j1-j2,min(twojmax,j1+j2)+1,2): above set of bispectrum components.
print j1/2.,j2/2.,j/2.
elif(diagonal==3):
for j2 in range(0,j1+1):
for j in range(j1-j2,min(twojmax,j1+j2)+1,2):
if (j>=j1): print j1/2.,j2/2.,j/2. :pre
Compute {snad/atom} evaluates a per-atom array. The columns are Compute {snad/atom} evaluates a per-atom array. The columns are
arranged into {ntypes} blocks, listed in order of atom type {I}. Each arranged into {ntypes} blocks, listed in order of atom type {I}. Each
@ -259,7 +249,7 @@ package"_Build_package.html doc page for more info.
[Default:] [Default:]
The optional keyword defaults are {diagonal} = 0, {rmin0} = 0, The optional keyword defaults are {rmin0} = 0,
{switchflag} = 1, {bzeroflag} = 1, {quadraticflag} = 0, {switchflag} = 1, {bzeroflag} = 1, {quadraticflag} = 0,
:line :line

View File

@ -88,6 +88,8 @@ potentials only include the pair potential portion of the EAM
interaction when used by this compute, not the embedding term. Also interaction when used by this compute, not the embedding term. Also
bonded or Kspace interactions do not contribute to this compute. bonded or Kspace interactions do not contribute to this compute.
The computes in this package are not compatible with dynamic groups.
[Related commands:] [Related commands:]
{compute group/group}_compute_group_group.html, {compute {compute group/group}_compute_group_group.html, {compute

View File

@ -96,7 +96,7 @@ group. The argument {maxedge} of the this keyword is the largest number
of edges on a single Voronoi cell face expected to occur in the of edges on a single Voronoi cell face expected to occur in the
sample. This keyword adds the generation of a global vector with sample. This keyword adds the generation of a global vector with
{maxedge}+1 entries. The last entry in the vector contains the number of {maxedge}+1 entries. The last entry in the vector contains the number of
faces with with more than {maxedge} edges. Since the polygon with the faces with more than {maxedge} edges. Since the polygon with the
smallest amount of edges is a triangle, entries 1 and 2 of the vector smallest amount of edges is a triangle, entries 1 and 2 of the vector
will always be zero. will always be zero.

View File

@ -47,7 +47,7 @@ division by sin(74.4)*sin(48.1) (the minima positions for theta1 and theta2).
The following coefficients must be defined for each dihedral type via the The following coefficients must be defined for each dihedral type via the
"dihedral_coeff"_dihedral_coeff.html command as in the example above, or in "dihedral_coeff"_dihedral_coeff.html command as in the example above, or in
the Dihedral Coeffs section of a data file file read by the the Dihedral Coeffs section of a data file read by the
"read_data"_read_data.html command: "read_data"_read_data.html command:
n (integer >= 1) n (integer >= 1)

View File

@ -174,7 +174,7 @@ radians instead of degrees. (Note: This changes the way the forces
are scaled in the 4th column of the data file.) are scaled in the 4th column of the data file.)
The optional "CHECKU" keyword is followed by a filename. This allows The optional "CHECKU" keyword is followed by a filename. This allows
the user to save all of the the {Ntable} different entries in the the user to save all of the {Ntable} different entries in the
interpolated energy table to a file to make sure that the interpolated interpolated energy table to a file to make sure that the interpolated
function agrees with the user's expectations. (Note: You can function agrees with the user's expectations. (Note: You can
temporarily increase the {Ntable} parameter to a high value for this temporarily increase the {Ntable} parameter to a high value for this

View File

@ -21,7 +21,7 @@ dump ID group-ID style N file args :pre
ID = user-assigned name for the dump :ulb,l ID = user-assigned name for the dump :ulb,l
group-ID = ID of the group of atoms to be dumped :l group-ID = ID of the group of atoms to be dumped :l
style = {atom} or {atom/gz} or {atom/mpiio} or {cfg} or {cfg/gz} or {cfg/mpiio} or {custom} or {custom/gz} or {custom/mpiio} or {dcd} or {h5md} or {image} or or {local} or {molfile} or {movie} or {netcdf} or {netcdf/mpiio} or {vtk} or {xtc} or {xyz} or {xyz/gz} or {xyz/mpiio} :l style = {atom} or {atom/gz} or {atom/mpiio} or {cfg} or {cfg/gz} or {cfg/mpiio} or {custom} or {custom/gz} or {custom/mpiio} or {dcd} or {h5md} or {image} or {local} or {molfile} or {movie} or {netcdf} or {netcdf/mpiio} or {vtk} or {xtc} or {xyz} or {xyz/gz} or {xyz/mpiio} :l
N = dump every this many timesteps :l N = dump every this many timesteps :l
file = name of file to write dump info to :l file = name of file to write dump info to :l
args = list of arguments for a particular style :l args = list of arguments for a particular style :l
@ -196,7 +196,7 @@ For post-processing purposes the {atom}, {local}, and {custom} text
files are self-describing in the following sense. files are self-describing in the following sense.
The dimensions of the simulation box are included in each snapshot. The dimensions of the simulation box are included in each snapshot.
For an orthogonal simulation box this information is is formatted as: For an orthogonal simulation box this information is formatted as:
ITEM: BOX BOUNDS xx yy zz ITEM: BOX BOUNDS xx yy zz
xlo xhi xlo xhi
@ -619,7 +619,7 @@ should be replaced by the actual name of the variable that has been
defined previously in the input script. Only an atom-style variable defined previously in the input script. Only an atom-style variable
can be referenced, since it is the only style that generates per-atom can be referenced, since it is the only style that generates per-atom
values. Variables of style {atom} can reference individual atom values. Variables of style {atom} can reference individual atom
attributes, per-atom atom attributes, thermodynamic keywords, or attributes, per-atom attributes, thermodynamic keywords, or
invoke other computes, fixes, or variables when they are evaluated, so invoke other computes, fixes, or variables when they are evaluated, so
this is a very general means of creating quantities to output to a this is a very general means of creating quantities to output to a
dump file. dump file.

View File

@ -310,7 +310,7 @@ NOTE: Atom and molecule IDs are stored internally as 4-byte or 8-byte
signed integers, depending on how LAMMPS was compiled. When signed integers, depending on how LAMMPS was compiled. When
specifying the {format int} option you can use a "%d"-style format specifying the {format int} option you can use a "%d"-style format
identifier in the format string and LAMMPS will convert this to the identifier in the format string and LAMMPS will convert this to the
corresponding 8-byte form it it is needed when outputting those corresponding 8-byte form if it is needed when outputting those
values. However, when specifying the {line} option or {format M values. However, when specifying the {line} option or {format M
string} option for those values, you should specify a format string string} option for those values, you should specify a format string
appropriate for an 8-byte signed integer, e.g. one with "%ld", if appropriate for an 8-byte signed integer, e.g. one with "%ld", if

View File

@ -321,20 +321,16 @@ accelerated styles exist.
"restrain"_fix_restrain.html - constrain a bond, angle, dihedral "restrain"_fix_restrain.html - constrain a bond, angle, dihedral
"rhok"_fix_rhok.html - "rhok"_fix_rhok.html -
"rigid"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NVE integration "rigid"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NVE integration
"rigid/nph"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NPH integration
"rigid/nph/small"_fix_rigid.html -
"rigid/npt"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NPT integration
"rigid/npt/small"_fix_rigid.html -
"rigid/nve"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with alternate NVE integration
"rigid/nve/small"_fix_rigid.html -
"rigid/nvt"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NVT integration
"rigid/nvt/small"_fix_rigid.html -
"rigid/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NVE integration
"rigid/small/nph"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NPH integration
"rigid/small/npt"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NPT integration
"rigid/small/nve"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with alternate NVE integration
"rigid/small/nvt"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NVT integration
"rigid/meso"_fix_rigid_meso.html - constrain clusters of mesoscopic SPH/SDPD particles to move as a rigid body "rigid/meso"_fix_rigid_meso.html - constrain clusters of mesoscopic SPH/SDPD particles to move as a rigid body
"rigid/nph"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NPH integration
"rigid/nph/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NPH integration
"rigid/npt"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NPT integration
"rigid/npt/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NPT integration
"rigid/nve"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with alternate NVE integration
"rigid/nve/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with alternate NVE integration
"rigid/nvt"_fix_rigid.html - constrain one or more clusters of atoms to move as a rigid body with NVT integration
"rigid/nvt/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NVT integration
"rigid/small"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NVE integration
"rx"_fix_rx.html - "rx"_fix_rx.html -
"saed/vtk"_fix_saed_vtk.html - "saed/vtk"_fix_saed_vtk.html -
"setforce"_fix_setforce.html - set the force on each atom "setforce"_fix_setforce.html - set the force on each atom

View File

@ -141,11 +141,16 @@ specify if this should be done.
This fix writes the state of the fix to "binary restart This fix writes the state of the fix to "binary restart
files"_restart.html. This includes information about the random files"_restart.html. This includes information about the random
number generator seed, the next timestep for MC exchanges, etc. See number generator seed, the next timestep for MC exchanges, the number
of exchange attempts and successes etc. See
the "read_restart"_read_restart.html command for info on how to the "read_restart"_read_restart.html command for info on how to
re-specify a fix in an input script that reads a restart file, so that re-specify a fix in an input script that reads a restart file, so that
the operation of the fix continues in an uninterrupted fashion. the operation of the fix continues in an uninterrupted fashion.
NOTE: For this to work correctly, the timestep must [not] be changed
after reading the restart with "reset_timestep"_reset_timestep.html.
The fix will try to detect it and stop with an error.
None of the "fix_modify"_fix_modify.html options are relevant to this None of the "fix_modify"_fix_modify.html options are relevant to this
fix. fix.

View File

@ -361,7 +361,7 @@ computes that calculate a temperature to see which ones implement a
bias. bias.
The {adof} and {cdof} keywords define the values used in the degree of The {adof} and {cdof} keywords define the values used in the degree of
freedom (DOF) formula described above for for temperature calculation freedom (DOF) formula described above for temperature calculation
for each chunk. They are only used when the {temp} value is for each chunk. They are only used when the {temp} value is
calculated. They can be used to calculate a more appropriate calculated. They can be used to calculate a more appropriate
temperature for some kinds of chunks. Here are 3 examples: temperature for some kinds of chunks. Here are 3 examples:

View File

@ -18,8 +18,8 @@ fix ID group-ID bond/react common_keyword values ...
ID, group-ID are documented in "fix"_fix.html command. Group-ID is ignored. :ulb,l ID, group-ID are documented in "fix"_fix.html command. Group-ID is ignored. :ulb,l
bond/react = style name of this fix command :l bond/react = style name of this fix command :l
zero or more common keyword/value pairs may be appended directly after 'bond/react' :l the common keyword/values may be appended directly after 'bond/react' :l
these apply to all reaction specifications (below) :l this applies to all reaction specifications (below) :l
common_keyword = {stabilization} :l common_keyword = {stabilization} :l
{stabilization} values = {no} or {yes} {group-ID} {xmax} {stabilization} values = {no} or {yes} {group-ID} {xmax}
{no} = no reaction site stabilization {no} = no reaction site stabilization
@ -136,10 +136,12 @@ words, can be customized for each reaction, or reaction step):
A check for possible new reaction sites is performed every {Nevery} A check for possible new reaction sites is performed every {Nevery}
timesteps. timesteps.
Two conditions must be met for a reaction to occur. First a bonding Three physical conditions must be met for a reaction to occur. First,
atom pair must be identified. Second, the topology surrounding the a bonding atom pair must be identified within the reaction distance
bonding atom pair must match the topology of the pre-reaction cutoffs. Second, the topology surrounding the bonding atom pair must
template. If both these conditions are met, the reaction site is match the topology of the pre-reaction template. Finally, any reaction
constraints listed in the map file (see below) must be satisfied. If
all of these conditions are met, the reaction site is eligible to be
modified to match the post-reaction template. modified to match the post-reaction template.
A bonding atom pair will be identified if several conditions are met. A bonding atom pair will be identified if several conditions are met.
@ -203,14 +205,24 @@ new types must also be defined during the setup of a given simulation.
A discussion of correctly handling this is also provided on the A discussion of correctly handling this is also provided on the
"molecule"_molecule.html command page. "molecule"_molecule.html command page.
NOTE: When a reaction occurs, it is possible that the resulting
topology/atom (e.g. special bonds, dihedrals, etc.) 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
"read_data"_read_data.html or "create_box"_create_box.html commands.
The map file is a text document with the following format: The map file is a text document with the following format:
A map file has a header and a body. The header of map file the A map file has a header and a body. The header of map file the
contains one mandatory keyword and three optional keywords. The contains one mandatory keyword and four optional keywords. The
mandatory keyword is 'equivalences' and the optional keywords are mandatory keyword is 'equivalences':
'edgeIDs' and 'deleteIDs' and 'customIDs':
N {equivalences} = # of atoms N in the reaction molecule templates :pre
The optional keywords are 'edgeIDs', 'deleteIDs', 'customIDs' and
'constraints':
N {equivalences} = # of atoms N in the reaction molecule templates
N {edgeIDs} = # of edge atoms N in the pre-reacted molecule template N {edgeIDs} = # of edge atoms N in the pre-reacted molecule template
N {deleteIDs} = # of atoms N that are specified for deletion N {deleteIDs} = # of atoms N that are specified for deletion
N {customIDs} = # of atoms N that are specified for a custom update N {customIDs} = # of atoms N that are specified for a custom update
@ -244,8 +256,8 @@ A sample map file is given below:
# this is a map file :pre # this is a map file :pre
2 edgeIDs 7 equivalences
7 equivalences :pre 2 edgeIDs :pre
BondingIDs :pre BondingIDs :pre
@ -297,26 +309,25 @@ can allow for the possibility of one or more reverse reactions.
The optional keywords deal with the probability of a given reaction The optional keywords deal with the probability of a given reaction
occurring as well as the stable equilibration of each reaction site as occurring as well as the stable equilibration of each reaction site as
it occurs. it occurs:
The {prob} keyword can affect whether an eligible reaction actually The {prob} keyword can affect whether or not an eligible reaction
occurs. The fraction setting must be a value between 0.0 and 1.0. A actually occurs. The fraction setting must be a value between 0.0 and
uniform random number between 0.0 and 1.0 is generated and the 1.0. A uniform random number between 0.0 and 1.0 is generated and the
eligible reaction only occurs if the random number is less than the eligible reaction only occurs if the random number is less than the
fraction. Up to N reactions are permitted to occur, as optionally fraction. Up to N reactions are permitted to occur, as optionally
specified by the {max_rxn} keyword. specified by the {max_rxn} keyword.
The {stabilize_steps} keyword allows for the specification of how many The {stabilize_steps} keyword allows for the specification of how many
timesteps a reaction site is stabilized before being returned to the timesteps a reaction site is stabilized before being returned to the
overall system thermostat. overall system thermostat. In order to produce the most physical
behavior, this 'reaction site equilibration time' should be tuned to
In order to produce the most physical behavior, this 'reaction site be as small as possible while retaining stability for a given system
equilibration time' should be tuned to be as small as possible while or reaction step. After a limited number of case studies, this number
retaining stability for a given system or reaction step. After a has been set to a default of 60 timesteps. Ideally, it should be
limited number of case studies, this number has been set to a default individually tuned for each fix reaction step. Note that in some
of 60 timesteps. Ideally, it should be individually tuned for each fix situations, decreasing rather than increasing this parameter will
reaction step. Note that in some situations, decreasing rather than result in an increase in stability.
increasing this parameter will result in an increase in stability.
The {update_edges} keyword can increase the number of atoms whose The {update_edges} keyword can increase the number of atoms whose
atomic charges are updated, when the pre-reaction template contains atomic charges are updated, when the pre-reaction template contains
@ -324,11 +335,11 @@ edge atoms. When the value is set to 'charges,' all atoms' atomic
charges are updated to those specified by the post-reaction template, charges are updated to those specified by the post-reaction template,
including atoms near the edge of reaction templates. When the value is including atoms near the edge of reaction templates. When the value is
set to 'custom,' an additional section must be included in the map set to 'custom,' an additional section must be included in the map
file that specifies whether to update charges, on a per-atom basis. file that specifies whether or not to update charges, on a per-atom
The format of this section is detailed above. Listing a pre-reaction basis. The format of this section is detailed above. Listing a
atom ID with a value of 'charges' will force the update of the atom's pre-reaction atom ID with a value of 'charges' will force the update
charge, even if it is near a template edge. Atoms not near a template of the atom's charge, even if it is near a template edge. Atoms not
edge are unaffected by this setting. near a template edge are unaffected by this setting.
A few other considerations: A few other considerations:

View File

@ -98,6 +98,16 @@ fix to add the energy change from the biasing force added by the fix
to the system's potential energy as part of "thermodynamic to the system's potential energy as part of "thermodynamic
output"_thermo_style.html. output"_thermo_style.html.
The {fix_modify configfile <config file>} option allows to add settings
from an additional config file to the colvars module. This option can
only be used, after the system has been initialized with a "run"_run.html
command.
The {fix_modify config <quoted string>} option allows to add settings
from inline strings. Those have to fit on a single line when enclosed
in a pair of double quotes ("), or can span multiple lines when bracketed
by a pair of triple double quotes (""", like python embedded documentation).
This fix computes a global scalar which can be accessed by various This fix computes a global scalar which can be accessed by various
"output commands"_Howto_output.html. The scalar is the cumulative "output commands"_Howto_output.html. The scalar is the cumulative
energy change due to this fix. The scalar value calculated by this energy change due to this fix. The scalar value calculated by this

View File

@ -261,6 +261,10 @@ next timestep for deposition, etc. See the
a fix in an input script that reads a restart file, so that the a fix in an input script that reads a restart file, so that the
operation of the fix continues in an uninterrupted fashion. operation of the fix continues in an uninterrupted fashion.
NOTE: For this to work correctly, the timestep must [not] be changed
after reading the restart with "reset_timestep"_reset_timestep.html.
The fix will try to detect it and stop with an error.
None of the "fix_modify"_fix_modify.html options are relevant to this None of the "fix_modify"_fix_modify.html options are relevant to this
fix. No global or per-atom quantities are stored by this fix for fix. No global or per-atom quantities are stored by this fix for
access by various "output commands"_Howto_output.html. No parameter access by various "output commands"_Howto_output.html. No parameter

View File

@ -373,11 +373,16 @@ adds all inserted atoms of the specified type to the
This fix writes the state of the fix to "binary restart This fix writes the state of the fix to "binary restart
files"_restart.html. This includes information about the random files"_restart.html. This includes information about the random
number generator seed, the next timestep for MC exchanges, etc. See number generator seed, the next timestep for MC exchanges, the number
of MC step attempts and successes etc. See
the "read_restart"_read_restart.html command for info on how to the "read_restart"_read_restart.html command for info on how to
re-specify a fix in an input script that reads a restart file, so that re-specify a fix in an input script that reads a restart file, so that
the operation of the fix continues in an uninterrupted fashion. the operation of the fix continues in an uninterrupted fashion.
NOTE: For this to work correctly, the timestep must [not] be changed
after reading the restart with "reset_timestep"_reset_timestep.html.
The fix will try to detect it and stop with an error.
None of the "fix_modify"_fix_modify.html options are relevant to this None of the "fix_modify"_fix_modify.html options are relevant to this
fix. fix.

View File

@ -113,12 +113,11 @@ state of the system, e.g. via a "write_dump"_write_dump.html or
"write_restart"_write_restart.html command. "write_restart"_write_restart.html command.
If its value is {continue}, the behavior is the same as for {soft}, If its value is {continue}, the behavior is the same as for {soft},
except subsequent subsequent "run"_run.html or except subsequent "run"_run.html or "minimize"_minimize.html commands
"minimize"_minimize.html commands are executed. This allows your are executed. This allows your script to remedy the condition that
script to remedy the condition that triggered the halt, if necessary. triggered the halt, if necessary. Note that you may wish use the
Note that you may wish use the "unfix"_unfix.html command on the fix "unfix"_unfix.html command on the fix halt ID, so that the same
halt ID, so that the same condition is not immediately triggered in a condition is not immediately triggered in a subsequent run.
subsequent run.
The optional {message} keyword determines whether a message is printed The optional {message} keyword determines whether a message is printed
to the screen and logfile when the halt condition is triggered. If to the screen and logfile when the halt condition is triggered. If

View File

@ -188,7 +188,7 @@ No information about this fix is written to "binary restart
files"_restart.html. files"_restart.html.
The "fix_modify"_fix_modify.html {energy} option is supported by this The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy of the bias potential to the the system's fix to add the energy of the bias potential to the system's
potential energy as part of "thermodynamic output"_thermo_style.html. potential energy as part of "thermodynamic output"_thermo_style.html.
This fix computes a global scalar and global vector of length 12, which This fix computes a global scalar and global vector of length 12, which

View File

@ -301,7 +301,7 @@ No information about this fix is written to "binary restart
files"_restart.html. files"_restart.html.
The "fix_modify"_fix_modify.html {energy} option is supported by this The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy of the bias potential to the the system's fix to add the energy of the bias potential to the system's
potential energy as part of "thermodynamic output"_thermo_style.html. potential energy as part of "thermodynamic output"_thermo_style.html.
This fix computes a global scalar and global vector of length 21, This fix computes a global scalar and global vector of length 21,
@ -322,13 +322,13 @@ vector stores the following quantities:
9 = fraction of biased bonds with negative strain during this run 9 = fraction of biased bonds with negative strain during this run
10 = average bias coeff for all bonds during this run (unitless) 10 = average bias coeff for all bonds during this run (unitless)
11 = min bias coeff for any bond during this run (unitless) 11 = min bias coeff for any bond during this run (unitless)
12 = max bias coeff for any bond during this run (unitless) 12 = max bias coeff for any bond during this run (unitless) :ul
13 = max drift distance of any bond atom during this run (distance units) 13 = max drift distance of any bond atom during this run (distance units)
14 = max distance from proc subbox of any ghost atom with maxstrain < qfactor during this run (distance units) 14 = max distance from proc subbox of any ghost atom with maxstrain < qfactor during this run (distance units)
15 = max distance outside my box of any ghost atom with any maxstrain during this run (distance units) 15 = max distance outside my box of any ghost atom with any maxstrain during this run (distance units)
16 = count of ghost atoms that could not be found on reneighbor steps during this run 16 = count of ghost atoms that could not be found on reneighbor steps during this run
17 = count of bias overlaps (< Dcut) found during this run 17 = count of bias overlaps (< Dcut) found during this run :ul
18 = cumulative hyper time since fix created (time units) 18 = cumulative hyper time since fix created (time units)
19 = cumulative count of event timesteps since fix created 19 = cumulative count of event timesteps since fix created

View File

@ -14,19 +14,23 @@ fix ID group precession/spin style args :pre
ID, group are documented in "fix"_fix.html command :ulb,l ID, group are documented in "fix"_fix.html command :ulb,l
precession/spin = style name of this fix command :l precession/spin = style name of this fix command :l
style = {zeeman} or {anisotropy} :l style = {zeeman} or {anisotropy} or {cubic} :l
{zeeman} args = H x y z {zeeman} args = H x y z
H = intensity of the magnetic field (in Tesla) H = intensity of the magnetic field (in Tesla)
x y z = vector direction of the field x y z = vector direction of the field
{anisotropy} args = K x y z {anisotropy} args = K x y z
K = intensity of the magnetic anisotropy (in eV) K = intensity of the magnetic anisotropy (in eV)
x y z = vector direction of the anisotropy :pre x y z = vector direction of the anisotropy :pre
{cubic} args = K1 K2c n1x n1y n1x n2x n2y n2z n3x n3y n3z
K1 and K2c = intensity of the magnetic anisotropy (in eV)
n1x to n3z = three direction vectors of the cubic anisotropy :pre
:ule :ule
[Examples:] [Examples:]
fix 1 all precession/spin zeeman 0.1 0.0 0.0 1.0 fix 1 all precession/spin zeeman 0.1 0.0 0.0 1.0
fix 1 all precession/spin anisotropy 0.001 0.0 0.0 1.0 fix 1 3 precession/spin anisotropy 0.001 0.0 0.0 1.0
fix 1 iron precession/spin cubic 0.001 0.0005 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0
fix 1 all precession/spin zeeman 0.1 0.0 0.0 1.0 anisotropy 0.001 0.0 0.0 1.0 :pre fix 1 all precession/spin zeeman 0.1 0.0 0.0 1.0 anisotropy 0.001 0.0 0.0 1.0 :pre
[Description:] [Description:]
@ -50,10 +54,29 @@ for the magnetic spins in the defined group:
with n defining the direction of the anisotropy, and K (in eV) its intensity. with n defining the direction of the anisotropy, and K (in eV) its intensity.
If K>0, an easy axis is defined, and if K<0, an easy plane is defined. If K>0, an easy axis is defined, and if K<0, an easy plane is defined.
In both cases, the choice of (x y z) imposes the vector direction for the force. Style {cubic} is used to simulate a cubic anisotropy, with three
Only the direction of the vector is important; it's length is ignored. possible easy axis for the magnetic spins in the defined group:
Both styles can be combined within one single command line. :c,image(Eqs/fix_spin_cubic.jpg)
with K1 and K2c (in eV) the intensity coefficients and
n1, n2 and n3 defining the three anisotropic directions
defined by the command (from n1x to n3z).
For n1 = (100), n2 = (010), and n3 = (001), K1 < 0 defines an
iron type anisotropy (easy axis along the (001)-type cube
edges), and K1 > 0 defines a nickel type anisotropy (easy axis
along the (111)-type cube diagonals).
K2^c > 0 also defines easy axis along the (111)-type cube
diagonals.
See chapter 2 of "(Skomski)"_#Skomski1 for more details on cubic
anisotropies.
In all cases, the choice of (x y z) only imposes the vector
directions for the forces. Only the direction of the vector is
important; it's length is ignored (the entered vectors are
normalized).
Those styles can be combined within one single command line.
:line :line
@ -85,3 +108,9 @@ package"_Build_package.html doc page for more info.
"atom_style spin"_atom_style.html "atom_style spin"_atom_style.html
[Default:] none [Default:] none
:line
:link(Skomski1)
[(Skomski)] Skomski, R. (2008). Simple models of magnetism.
Oxford University Press.

View File

@ -14,7 +14,7 @@ fix ID group-ID print N string keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l ID, group-ID are documented in "fix"_fix.html command :ulb,l
print = style name of this fix command :l print = style name of this fix command :l
N = print every N steps :l N = print every N steps; N can be a variable (see below) :l
string = text string to print with optional variable names :l string = text string to print with optional variable names :l
zero or more keyword/value pairs may be appended :l zero or more keyword/value pairs may be appended :l
keyword = {file} or {append} or {screen} or {title} :l keyword = {file} or {append} or {screen} or {title} :l
@ -40,6 +40,21 @@ If it contains variables it must be enclosed in double quotes to
insure they are not evaluated when the input script line is read, but insure they are not evaluated when the input script line is read, but
will instead be evaluated each time the string is printed. will instead be evaluated each time the string is printed.
Instead of a numeric value, N can be specified as an "equal-style
variable"_variable.html, which should be specified as v_name, where
name is the variable name. In this case, the variable is evaluated at
the beginning of a run to determine the [next] timestep at which the
string will be written out. On that timestep, the variable will be
evaluated again to determine the next timestep, etc.
Thus the variable should return timestep values. See the stagger()
and logfreq() and stride() math functions for "equal-style
variables"_variable.html, as examples of useful functions to use in
this context. For example, the following commands will print output at
timesteps 10,20,30,100,200,300,1000,2000,etc:
variable s equal logfreq(10,3,10)
fix extra all print v_s "Coords of marker atom = $x $y $z" :pre
The specified group-ID is ignored by this fix. The specified group-ID is ignored by this fix.
See the "variable"_variable.html command for a description of {equal} See the "variable"_variable.html command for a description of {equal}

View File

@ -27,7 +27,7 @@ The {fourier} improper style uses the following potential:
where K is the force constant and omega is the angle between the IL where K is the force constant and omega is the angle between the IL
axis and the IJK plane: axis and the IJK plane:
:c,image(Eqs/umbrella.jpg) :c,image(JPG/umbrella.jpg)
If all parameter (see bellow) is not zero, the all the three possible angles will taken in account. If all parameter (see bellow) is not zero, the all the three possible angles will taken in account.

View File

@ -28,7 +28,7 @@ where K is the force constant and omega is the angle evaluated for
all three axis-plane combinations centered around the atom I. For all three axis-plane combinations centered around the atom I. For
the IL axis and the IJK plane omega looks as follows: the IL axis and the IJK plane omega looks as follows:
:c,image(Eqs/umbrella.jpg) :c,image(JPG/umbrella.jpg)
Note that the {inversion/harmonic} angle term evaluation differs to Note that the {inversion/harmonic} angle term evaluation differs to
the "improper_umbrella"_improper_umbrella.html due to the cyclic the "improper_umbrella"_improper_umbrella.html due to the cyclic

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