Merge branch 'master' of github.com:lammps/lammps into granular-kokkos

This commit is contained in:
Stan Moore 2018-10-10 10:43:54 -06:00
commit 3d0722b974
1022 changed files with 49678 additions and 3465 deletions

68
.github/CODEOWNERS vendored
View File

@ -17,6 +17,7 @@ src/GPU/* @ndtrung81
src/KOKKOS/* @stanmoore1 src/KOKKOS/* @stanmoore1
src/KIM/* @ellio167 src/KIM/* @ellio167
src/LATTE/* @cnegre src/LATTE/* @cnegre
src/MESSAGE/* @sjplimp
src/SPIN/* @julient31 src/SPIN/* @julient31
src/USER-CGDNA/* @ohenrich src/USER-CGDNA/* @ohenrich
src/USER-CGSDK/* @akohlmey src/USER-CGSDK/* @akohlmey
@ -29,19 +30,86 @@ src/USER-MOFFF/* @hheenen
src/USER-MOLFILE/* @akohlmey src/USER-MOLFILE/* @akohlmey
src/USER-NETCDF/* @pastewka src/USER-NETCDF/* @pastewka
src/USER-PHONON/* @lingtikong src/USER-PHONON/* @lingtikong
src/USER-PTM/* @pmla
src/USER-OMP/* @akohlmey src/USER-OMP/* @akohlmey
src/USER-QMMM/* @akohlmey src/USER-QMMM/* @akohlmey
src/USER-REAXC/* @hasanmetin src/USER-REAXC/* @hasanmetin
src/USER-SCAFACOS/* @rhalver
src/USER-TALLY/* @akohlmey src/USER-TALLY/* @akohlmey
src/USER-UEF/* @danicholson src/USER-UEF/* @danicholson
src/USER-VTK/* @rbberger src/USER-VTK/* @rbberger
# individual files in packages # individual files in packages
src/GPU/pair_vashishta_gpu.* @andeplane src/GPU/pair_vashishta_gpu.* @andeplane
src/KOKKOS/pair_vashishta_kokkos.* @andeplane src/KOKKOS/pair_vashishta_kokkos.* @andeplane
src/MANYBODY/pair_vashishta_table.* @andeplane src/MANYBODY/pair_vashishta_table.* @andeplane
src/MANYBODY/pair_atm.* @sergeylishchuk
src/USER-MISC/fix_bond_react.* @jrgissing src/USER-MISC/fix_bond_react.* @jrgissing
src/USER-MISC/*_grem.* @dstelter92 src/USER-MISC/*_grem.* @dstelter92
src/USER-MISC/compute_stress_mop*.* @RomainVermorel
# core LAMMPS classes
src/lammps.* @sjplimp
src/pointers.h @sjplimp
src/atom.* @sjplimp
src/atom_vec.* @sjplimp
src/angle.* @sjplimp
src/bond.* @sjplimp
src/comm*.* @sjplimp
src/compute.* @sjplimp
src/dihedral.* @sjplimp
src/domain.* @sjplimp
src/dump*.* @sjplimp
src/error.* @sjplimp
src/finish.* @sjplimp
src/fix.* @sjplimp
src/force.* @sjplimp
src/group.* @sjplimp
src/improper.* @sjplimp
src/kspace.* @sjplimp
src/lmptyp.h @sjplimp
src/library.* @sjplimp
src/main.cpp @sjplimp
src/memory.* @sjplimp
src/modify.* @sjplimp
src/molecule.* @sjplimp
src/my_page.h @sjplimp
src/my_pool_chunk.h @sjplimp
src/npair*.* @sjplimp
src/ntopo*.* @sjplimp
src/nstencil*.* @sjplimp
src/neighbor.* @sjplimp
src/nbin*.* @sjplimp
src/neigh_*.* @sjplimp
src/output.* @sjplimp
src/pair.* @sjplimp
src/rcb.* @sjplimp
src/random_*.* @sjplimp
src/region*.* @sjplimp
src/rcb.* @sjplimp
src/read*.* @sjplimp
src/rerun.* @sjplimp
src/run.* @sjplimp
src/respa.* @sjplimp
src/set.* @sjplimp
src/special.* @sjplimp
src/suffix.h @sjplimp
src/thermo.* @sjplimp
src/universe.* @sjplimp
src/update.* @sjplimp
src/variable.* @sjplimp
src/verlet.* @sjplimp
src/velocity.* @sjplimp
src/write_data.* @sjplimp
src/write_restart.* @sjplimp
# overrides for specific files
src/dump_movie.* @akohlmey
src/exceptions.h @rbberger
src/fix_nh.* @athomps
src/info.* @akohlmey @rbberger
src/timer.* @akohlmey
# tools # tools
tools/msi2lmp/* @akohlmey tools/msi2lmp/* @akohlmey

2
.gitignore vendored
View File

@ -1,6 +1,7 @@
*~ *~
*.o *.o
*.so *.so
*.lo
*.cu_o *.cu_o
*.ptx *.ptx
*_ptx.h *_ptx.h
@ -32,6 +33,7 @@ log.cite
.Trashes .Trashes
ehthumbs.db ehthumbs.db
Thumbs.db Thumbs.db
.clang-format
#cmake #cmake
/build* /build*

View File

@ -13,7 +13,7 @@ get_filename_component(LAMMPS_DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../doc ABSOLUT
# To avoid conflicts with the conventional Makefile build system, we build everything here # To avoid conflicts with the conventional Makefile build system, we build everything here
file(GLOB LIB_SOURCES ${LAMMPS_SOURCE_DIR}/*.cpp) file(GLOB LIB_SOURCES ${LAMMPS_SOURCE_DIR}/[^.]*.cpp)
file(GLOB LMP_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp) file(GLOB LMP_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp)
list(REMOVE_ITEM LIB_SOURCES ${LMP_SOURCES}) list(REMOVE_ITEM LIB_SOURCES ${LMP_SOURCES})
@ -43,6 +43,29 @@ function(validate_option name values)
endif() endif()
endfunction(validate_option) 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()
get_lammps_version(${LAMMPS_SOURCE_DIR}/version.h LAMMPS_VERSION)
# Cmake modules/macros are in a subdirectory to keep this file cleaner # Cmake modules/macros are in a subdirectory to keep this file cleaner
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Modules) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Modules)
@ -113,6 +136,7 @@ if(BUILD_EXE)
if(LAMMPS_MACHINE) if(LAMMPS_MACHINE)
set(LAMMPS_MACHINE "_${LAMMPS_MACHINE}") set(LAMMPS_MACHINE "_${LAMMPS_MACHINE}")
endif() endif()
set(LAMMPS_BINARY lmp${LAMMPS_MACHINE})
endif() endif()
option(BUILD_LIB "Build LAMMPS library" OFF) option(BUILD_LIB "Build LAMMPS library" OFF)
@ -121,10 +145,10 @@ if(BUILD_LIB)
if(BUILD_SHARED_LIBS) # for all pkg libs, mpi_stubs and linalg if(BUILD_SHARED_LIBS) # for all pkg libs, mpi_stubs and linalg
set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif() endif()
set(LIB_SUFFIX "" CACHE STRING "Suffix to append to liblammps and pkg-config file") set(LAMMPS_LIB_SUFFIX "" CACHE STRING "Suffix to append to liblammps and pkg-config file")
mark_as_advanced(LIB_SUFFIX) mark_as_advanced(LAMMPS_LIB_SUFFIX)
if(LIB_SUFFIX) if(LAMMPS_LIB_SUFFIX)
set(LIB_SUFFIX "_${LIB_SUFFIX}") set(LAMMPS_LIB_SUFFIX "_${LAMMPS_LIB_SUFFIX}")
endif() endif()
endif() endif()
@ -139,6 +163,35 @@ set(LAMMPS_LINK_LIBS)
set(LAMMPS_DEPS) set(LAMMPS_DEPS)
set(LAMMPS_API_DEFINES) set(LAMMPS_API_DEFINES)
set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE GRANULAR
KSPACE MANYBODY MC MEAM MESSAGE MISC MOLECULE PERI REAX REPLICA RIGID SHOCK
SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI POEMS LATTE USER-ATC USER-AWPMD
USER-BOCS USER-CGDNA USER-MESO USER-CGSDK USER-COLVARS USER-DIFFRACTION
USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-LB USER-MANIFOLD
USER-MEAMC USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF
USER-PHONON USER-PTM USER-QTB USER-REAXC USER-SCAFACOS USER-SMD USER-SMTBQ
USER-SPH USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM)
set(ACCEL_PACKAGES USER-OMP KOKKOS OPT USER-INTEL GPU)
set(OTHER_PACKAGES CORESHELL QEQ)
foreach(PKG ${DEFAULT_PACKAGES})
option(PKG_${PKG} "Build ${PKG} Package" OFF)
endforeach()
foreach(PKG ${ACCEL_PACKAGES} ${OTHER_PACKAGES})
option(PKG_${PKG} "Build ${PKG} Package" OFF)
endforeach()
######################################################
# packages with special compiler needs or external libs
######################################################
if(PKG_REAX OR PKG_MEAM OR PKG_USER-QUIP OR PKG_USER-QMMM OR PKG_LATTE OR PKG_USER-SCAFACOS)
enable_language(Fortran)
endif()
if(PKG_MEAM OR PKG_USER-H5MD OR PKG_USER-QMMM OR PKG_USER-SCAFACOS)
enable_language(C)
endif()
# do MPI detection after language activation, if MPI for these language is required
find_package(MPI QUIET) find_package(MPI QUIET)
option(BUILD_MPI "Build MPI version" ${MPI_FOUND}) option(BUILD_MPI "Build MPI version" ${MPI_FOUND})
if(BUILD_MPI) if(BUILD_MPI)
@ -183,25 +236,52 @@ endif()
option(CMAKE_VERBOSE_MAKEFILE "Verbose makefile" OFF) option(CMAKE_VERBOSE_MAKEFILE "Verbose makefile" OFF)
option(ENABLE_TESTING "Enable testing" OFF) option(ENABLE_TESTING "Enable testing" OFF)
if(ENABLE_TESTING) if(ENABLE_TESTING AND BUILD_EXE)
enable_testing() enable_testing()
endif(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)
set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE GRANULAR if (CMAKE_VERSION VERSION_GREATER "3.10.3" AND NOT LAMMPS_TESTING_SOURCE_DIR)
KSPACE MANYBODY MC MEAM MISC MOLECULE PERI REAX REPLICA RIGID SHOCK SPIN SNAP include(FetchContent)
SRD KIM PYTHON MSCG MPIIO VORONOI POEMS LATTE USER-ATC USER-AWPMD USER-BOCS
USER-CGDNA USER-MESO USER-CGSDK USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE FetchContent_Declare(lammps-testing
USER-EFF USER-FEP USER-H5MD USER-LB USER-MANIFOLD USER-MEAMC USER-MGPT USER-MISC GIT_REPOSITORY https://github.com/lammps/lammps-testing.git
USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-QTB USER-REAXC USER-SMD GIT_TAG ${LAMMPS_TESTING_GIT_TAG}
USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM) )
set(ACCEL_PACKAGES USER-OMP KOKKOS OPT USER-INTEL GPU)
set(OTHER_PACKAGES CORESHELL QEQ) FetchContent_GetProperties(lammps-testing)
foreach(PKG ${DEFAULT_PACKAGES}) if(NOT lammps-testing_POPULATED)
option(PKG_${PKG} "Build ${PKG} Package" OFF) message(STATUS "Downloading tests...")
endforeach() FetchContent_Populate(lammps-testing)
foreach(PKG ${ACCEL_PACKAGES} ${OTHER_PACKAGES}) endif()
option(PKG_${PKG} "Build ${PKG} Package" OFF)
endforeach() 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()
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()
macro(pkg_depends PKG1 PKG2) macro(pkg_depends PKG1 PKG2)
if(PKG_${PKG1} AND NOT (PKG_${PKG2} OR BUILD_${PKG2})) if(PKG_${PKG1} AND NOT (PKG_${PKG2} OR BUILD_${PKG2}))
@ -215,17 +295,7 @@ pkg_depends(MPIIO MPI)
pkg_depends(USER-ATC MANYBODY) pkg_depends(USER-ATC MANYBODY)
pkg_depends(USER-LB MPI) pkg_depends(USER-LB MPI)
pkg_depends(USER-PHONON KSPACE) pkg_depends(USER-PHONON KSPACE)
pkg_depends(USER-SCAFACOS MPI)
######################################################
# packages with special compiler needs or external libs
######################################################
if(PKG_REAX OR PKG_MEAM OR PKG_USER-QUIP OR PKG_USER-QMMM OR PKG_LATTE)
enable_language(Fortran)
endif()
if(PKG_MEAM OR PKG_USER-H5MD OR PKG_USER-QMMM)
enable_language(C)
endif()
find_package(OpenMP QUIET) find_package(OpenMP QUIET)
option(BUILD_OMP "Build with OpenMP support" ${OpenMP_FOUND}) option(BUILD_OMP "Build with OpenMP support" ${OpenMP_FOUND})
@ -276,11 +346,14 @@ endif()
if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE) if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE)
find_package(LAPACK) find_package(LAPACK)
if(NOT LAPACK_FOUND) find_package(BLAS)
if(NOT LAPACK_FOUND OR NOT BLAS_FOUND)
enable_language(Fortran) enable_language(Fortran)
file(GLOB LAPACK_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/linalg/*.[fF]) file(GLOB LAPACK_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/linalg/[^.]*.[fF])
add_library(linalg STATIC ${LAPACK_SOURCES}) add_library(linalg STATIC ${LAPACK_SOURCES})
set(LAPACK_LIBRARIES linalg) set(LAPACK_LIBRARIES linalg)
else()
list(APPEND LAPACK_LIBRARIES ${BLAS_LIBRARIES})
endif() endif()
endif() endif()
@ -400,6 +473,57 @@ if(PKG_LATTE)
list(APPEND LAMMPS_LINK_LIBS ${LATTE_LIBRARIES} ${LAPACK_LIBRARIES}) list(APPEND LAMMPS_LINK_LIBS ${LATTE_LIBRARIES} ${LAPACK_LIBRARIES})
endif() endif()
if(PKG_USER-SCAFACOS)
find_package(GSL REQUIRED)
option(DOWNLOAD_SCAFACOS "Download ScaFaCoS (instead of using the system's one)" OFF)
if(DOWNLOAD_SCAFACOS)
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
$<$<BOOL:${BUILD_SHARED_LIBS}>:--with-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 scafacos REQUIRED)
list(APPEND LAMMPS_LINK_LIBS ${SCAFACOS_LDFLAGS})
endif()
include_directories(${SCAFACOS_INCLUDE_DIRS})
endif()
if(PKG_USER-MOLFILE) if(PKG_USER-MOLFILE)
add_library(molfile INTERFACE) add_library(molfile INTERFACE)
target_include_directories(molfile INTERFACE ${LAMMPS_LIB_SOURCE_DIR}/molfile) target_include_directories(molfile INTERFACE ${LAMMPS_LIB_SOURCE_DIR}/molfile)
@ -409,8 +533,8 @@ endif()
if(PKG_USER-NETCDF) if(PKG_USER-NETCDF)
find_package(NetCDF REQUIRED) find_package(NetCDF REQUIRED)
include_directories(NETCDF_INCLUDE_DIR) include_directories(${NETCDF_INCLUDE_DIRS})
list(APPEND LAMMPS_LINK_LIBS ${NETCDF_LIBRARY}) list(APPEND LAMMPS_LINK_LIBS ${NETCDF_LIBRARIES})
add_definitions(-DLMP_HAS_NETCDF -DNC_64BIT_DATA=0x0020) add_definitions(-DLMP_HAS_NETCDF -DNC_64BIT_DATA=0x0020)
endif() endif()
@ -427,8 +551,9 @@ if(PKG_USER-SMD)
set(EIGEN3_INCLUDE_DIR ${SOURCE_DIR}) set(EIGEN3_INCLUDE_DIR ${SOURCE_DIR})
list(APPEND LAMMPS_DEPS Eigen3_build) list(APPEND LAMMPS_DEPS Eigen3_build)
else() else()
find_package(Eigen3) find_package(Eigen3 NO_MODULE)
if(NOT Eigen3_FOUND) 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") 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()
endif() endif()
@ -478,6 +603,40 @@ if(PKG_KIM)
include_directories(${KIM_INCLUDE_DIRS}) include_directories(${KIM_INCLUDE_DIRS})
endif() endif()
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)
if(BUILD_SHARED_LIBS)
add_library(cslib SHARED ${cslib_SOURCES})
else()
add_library(cslib STATIC ${cslib_SOURCES})
endif()
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)
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()
if(PKG_MSCG) if(PKG_MSCG)
find_package(GSL REQUIRED) find_package(GSL REQUIRED)
option(DOWNLOAD_MSCG "Download latte (instead of using the system's one)" OFF) option(DOWNLOAD_MSCG "Download latte (instead of using the system's one)" OFF)
@ -564,8 +723,8 @@ RegisterStyles(${LAMMPS_SOURCE_DIR})
foreach(PKG ${DEFAULT_PACKAGES}) foreach(PKG ${DEFAULT_PACKAGES})
set(${PKG}_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/${PKG}) set(${PKG}_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/${PKG})
file(GLOB ${PKG}_SOURCES ${${PKG}_SOURCES_DIR}/*.cpp) file(GLOB ${PKG}_SOURCES ${${PKG}_SOURCES_DIR}/[^.]*.cpp)
file(GLOB ${PKG}_HEADERS ${${PKG}_SOURCES_DIR}/*.h) file(GLOB ${PKG}_HEADERS ${${PKG}_SOURCES_DIR}/[^.]*.h)
# check for package files in src directory due to old make system # check for package files in src directory due to old make system
DetectBuildSystemConflict(${LAMMPS_SOURCE_DIR} ${${PKG}_SOURCES} ${${PKG}_HEADERS}) DetectBuildSystemConflict(${LAMMPS_SOURCE_DIR} ${${PKG}_SOURCES} ${${PKG}_HEADERS})
@ -583,8 +742,8 @@ endforeach()
foreach(PKG ${ACCEL_PACKAGES}) foreach(PKG ${ACCEL_PACKAGES})
set(${PKG}_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/${PKG}) set(${PKG}_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/${PKG})
file(GLOB ${PKG}_SOURCES ${${PKG}_SOURCES_DIR}/*.cpp) file(GLOB ${PKG}_SOURCES ${${PKG}_SOURCES_DIR}/[^.]*.cpp)
file(GLOB ${PKG}_HEADERS ${${PKG}_SOURCES_DIR}/*.h) file(GLOB ${PKG}_HEADERS ${${PKG}_SOURCES_DIR}/[^.]*.h)
# check for package files in src directory due to old make system # check for package files in src directory due to old make system
DetectBuildSystemConflict(${LAMMPS_SOURCE_DIR} ${${PKG}_SOURCES} ${${PKG}_HEADERS}) DetectBuildSystemConflict(${LAMMPS_SOURCE_DIR} ${${PKG}_SOURCES} ${${PKG}_HEADERS})
@ -598,8 +757,10 @@ foreach(SIMPLE_LIB REAX MEAM POEMS USER-ATC USER-AWPMD USER-COLVARS USER-H5MD
if(PKG_${SIMPLE_LIB}) if(PKG_${SIMPLE_LIB})
string(REGEX REPLACE "^USER-" "" PKG_LIB "${SIMPLE_LIB}") string(REGEX REPLACE "^USER-" "" PKG_LIB "${SIMPLE_LIB}")
string(TOLOWER "${PKG_LIB}" PKG_LIB) string(TOLOWER "${PKG_LIB}" PKG_LIB)
file(GLOB_RECURSE ${PKG_LIB}_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/*.F file(GLOB_RECURSE ${PKG_LIB}_SOURCES
${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/*.c ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/*.cpp) ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.F
${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.c
${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.cpp)
add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES}) add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES})
list(APPEND LAMMPS_LINK_LIBS ${PKG_LIB}) list(APPEND LAMMPS_LINK_LIBS ${PKG_LIB})
if(PKG_LIB STREQUAL awpmd) if(PKG_LIB STREQUAL awpmd)
@ -674,13 +835,16 @@ if(PKG_USER-OMP)
set(USER-OMP_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-OMP) set(USER-OMP_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-OMP)
set(USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/thr_data.cpp set(USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/thr_data.cpp
${USER-OMP_SOURCES_DIR}/thr_omp.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_omp.cpp
${USER-OMP_SOURCES_DIR}/fix_nh_sphere_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}") set_property(GLOBAL PROPERTY "OMP_SOURCES" "${USER-OMP_SOURCES}")
# detects styles which have USER-OMP version # detects styles which have USER-OMP version
RegisterStylesExt(${USER-OMP_SOURCES_DIR} omp OMP_SOURCES) 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) get_property(USER-OMP_SOURCES GLOBAL PROPERTY OMP_SOURCES)
@ -880,7 +1044,7 @@ if(PKG_GPU)
set(GPU_PREC_SETTING "SINGLE_SINGLE") set(GPU_PREC_SETTING "SINGLE_SINGLE")
endif() endif()
file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/*.cpp) file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp)
file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu) file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu)
if(GPU_API STREQUAL "CUDA") if(GPU_API STREQUAL "CUDA")
@ -893,15 +1057,15 @@ if(PKG_GPU)
set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM architecture (e.g. sm_60)") set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM architecture (e.g. sm_60)")
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/*.cu) 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) 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) cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu ${LAMMPS_LIB_BINARY_DIR}/gpu)
if(CUDPP_OPT) if(CUDPP_OPT)
cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) 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_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cpp)
file(GLOB GPU_LIB_CUDPP_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/*.cu) file(GLOB GPU_LIB_CUDPP_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cu)
endif() endif()
cuda_compile_cubin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS cuda_compile_cubin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS
@ -950,7 +1114,7 @@ if(PKG_GPU)
include(OpenCLUtils) include(OpenCLUtils)
set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h) 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) 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) list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu)
foreach(GPU_KERNEL ${GPU_LIB_CU}) foreach(GPU_KERNEL ${GPU_LIB_CU})
@ -1008,7 +1172,9 @@ include_directories(${LAMMPS_STYLE_HEADERS_DIR})
###################################### ######################################
set(temp "#ifndef LMP_INSTALLED_PKGS_H\n#define LMP_INSTALLED_PKGS_H\n") set(temp "#ifndef LMP_INSTALLED_PKGS_H\n#define LMP_INSTALLED_PKGS_H\n")
set(temp "${temp}const char * LAMMPS_NS::LAMMPS::installed_packages[] = {\n") set(temp "${temp}const char * LAMMPS_NS::LAMMPS::installed_packages[] = {\n")
foreach(PKG ${DEFAULT_PACKAGES} ${ACCEL_PACKAGES} ${OTHER_PACKAGES}) set(temp_PKG_LIST ${DEFAULT_PACKAGES} ${ACCEL_PACKAGES} ${OTHER_PACKAGES})
list(SORT temp_PKG_LIST)
foreach(PKG ${temp_PKG_LIST})
if(PKG_${PKG}) if(PKG_${PKG})
set(temp "${temp} \"${PKG}\",\n") set(temp "${temp} \"${PKG}\",\n")
endif() endif()
@ -1033,14 +1199,14 @@ if(BUILD_LIB)
if(LAMMPS_DEPS) if(LAMMPS_DEPS)
add_dependencies(lammps ${LAMMPS_DEPS}) add_dependencies(lammps ${LAMMPS_DEPS})
endif() endif()
set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LIB_SUFFIX}) set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_LIB_SUFFIX})
if(BUILD_SHARED_LIBS) set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION})
set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION}) install(TARGETS lammps LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(TARGETS lammps LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES ${LAMMPS_SOURCE_DIR}/library.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps)
install(FILES ${LAMMPS_SOURCE_DIR}/library.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps) configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc @ONLY)
configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LIB_SUFFIX}.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LIB_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) configure_file(FindLAMMPS.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FindLAMMPS${LAMMPS_LIB_SUFFIX}.cmake @ONLY)
endif() install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FindLAMMPS${LAMMPS_LIB_SUFFIX}.cmake DESTINATION ${CMAKE_INSTALL_DATADIR}/cmake/Module)
else() else()
list(APPEND LMP_SOURCES ${LIB_SOURCES}) list(APPEND LMP_SOURCES ${LIB_SOURCES})
endif() endif()
@ -1056,10 +1222,11 @@ if(BUILD_EXE)
endif() endif()
endif() endif()
set_target_properties(lmp PROPERTIES OUTPUT_NAME lmp${LAMMPS_MACHINE}) set_target_properties(lmp PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY})
install(TARGETS lmp DESTINATION ${CMAKE_INSTALL_BINDIR}) install(TARGETS lmp DESTINATION ${CMAKE_INSTALL_BINDIR})
install(FILES ${LAMMPS_DOC_DIR}/lammps.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 RENAME ${LAMMPS_BINARY}.1)
if(ENABLE_TESTING) if(ENABLE_TESTING)
add_test(ShowHelp lmp${LAMMPS_MACHINE} -help) add_test(ShowHelp ${LAMMPS_BINARY} -help)
endif() endif()
endif() endif()
@ -1074,7 +1241,7 @@ if(BUILD_DOC)
set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv) set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv)
file(GLOB DOC_SOURCES ${LAMMPS_DOC_DIR}/src/*.txt) 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) 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}) list(REMOVE_ITEM DOC_SOURCES ${PDF_EXTRA_SOURCES})
@ -1127,7 +1294,7 @@ endif()
# Install potential files in data directory # Install potential files in data directory
############################################################################### ###############################################################################
set(LAMMPS_POTENTIALS_DIR ${CMAKE_INSTALL_FULL_DATADIR}/lammps/potentials) set(LAMMPS_POTENTIALS_DIR ${CMAKE_INSTALL_FULL_DATADIR}/lammps/potentials)
install(DIRECTORY ${LAMMPS_SOURCE_DIR}/../potentials DESTINATION ${CMAKE_INSTALL_DATADIR}/lammps/potentials) install(DIRECTORY ${LAMMPS_SOURCE_DIR}/../potentials/ DESTINATION ${LAMMPS_POTENTIALS_DIR})
configure_file(etc/profile.d/lammps.sh.in ${CMAKE_BINARY_DIR}/etc/profile.d/lammps.sh @ONLY) configure_file(etc/profile.d/lammps.sh.in ${CMAKE_BINARY_DIR}/etc/profile.d/lammps.sh @ONLY)
configure_file(etc/profile.d/lammps.csh.in ${CMAKE_BINARY_DIR}/etc/profile.d/lammps.csh @ONLY) configure_file(etc/profile.d/lammps.csh.in ${CMAKE_BINARY_DIR}/etc/profile.d/lammps.csh @ONLY)
@ -1169,7 +1336,7 @@ endif()
############################################################################### ###############################################################################
# Print package summary # Print package summary
############################################################################### ###############################################################################
foreach(PKG ${DEFAULT_PACKAGES} ${ACCEL_PACKAGES}) foreach(PKG ${DEFAULT_PACKAGES} ${ACCEL_PACKAGES} ${OTHER_PACKAGES})
if(PKG_${PKG}) if(PKG_${PKG})
message(STATUS "Building package: ${PKG}") message(STATUS "Building package: ${PKG}")
endif() endif()

48
cmake/FindLAMMPS.cmake.in Normal file
View File

@ -0,0 +1,48 @@
# - Find liblammps
# Find the native liblammps headers and libraries.
#
# The following variables will set:
# LAMMPS_INCLUDE_DIRS - where to find lammps/library.h, etc.
# LAMMPS_LIBRARIES - List of libraries when using lammps.
# LAMMPS_API_DEFINES - lammps library api defines
# LAMMPS_VERSION - lammps library version
# LAMMPS_FOUND - True if liblammps found.
#
# In addition a LAMMPS::LAMMPS imported target is getting created.
#
# LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
# http://lammps.sandia.gov, Sandia National Laboratories
# Steve Plimpton, sjplimp@sandia.gov
#
# Copyright (2003) Sandia Corporation. Under the terms of Contract
# DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
# certain rights in this software. This software is distributed under
# the GNU General Public License.
#
# See the README file in the top-level LAMMPS directory.
#
find_package(PkgConfig)
pkg_check_modules(PC_LAMMPS liblammps@LAMMPS_LIB_SUFFIX@)
find_path(LAMMPS_INCLUDE_DIR lammps/library.h HINTS ${PC_LAMMPS_INCLUDE_DIRS} @CMAKE_INSTALL_FULL_INCLUDEDIR@)
set(LAMMPS_VERSION @LAMMPS_VERSION@)
set(LAMMPS_API_DEFINES @LAMMPS_API_DEFINES@)
find_library(LAMMPS_LIBRARY NAMES lammps@LAMMPS_LIB_SUFFIX@ HINTS ${PC_LAMMPS_LIBRARY_DIRS} @CMAKE_INSTALL_FULL_LIBDIR@)
set(LAMMPS_INCLUDE_DIRS "${LAMMPS_INCLUDE_DIR}")
set(LAMMPS_LIBRARIES "${LAMMPS_LIBRARY}")
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LAMMPS_FOUND to TRUE
# if all listed variables are TRUE
find_package_handle_standard_args(LAMMPS REQUIRED_VARS LAMMPS_LIBRARY LAMMPS_INCLUDE_DIR VERSION_VAR LAMMPS_VERSION)
mark_as_advanced(LAMMPS_INCLUDE_DIR LAMMPS_LIBRARY)
if(LAMMPS_FOUND AND NOT TARGET LAMMPS::LAMMPS)
add_library(LAMMPS::LAMMPS UNKNOWN IMPORTED)
set_target_properties(LAMMPS::LAMMPS PROPERTIES IMPORTED_LOCATION "${LAMMPS_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${LAMMPS_INCLUDE_DIR}" INTERFACE_COMPILE_DEFINITIONS "${LAMMPS_API_DEFINES}")
endif()

View File

@ -0,0 +1,8 @@
find_path(ZMQ_INCLUDE_DIR zmq.h)
find_library(ZMQ_LIBRARY NAMES zmq)
set(ZMQ_LIBRARIES ${ZMQ_LIBRARY})
set(ZMQ_INCLUDE_DIRS ${ZMQ_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(ZMQ DEFAULT_MSG ZMQ_LIBRARY ZMQ_INCLUDE_DIR)

View File

@ -48,8 +48,13 @@ function(CreateStyleHeader path filename)
set(temp "") set(temp "")
if(ARGC GREATER 2) if(ARGC GREATER 2)
list(REMOVE_AT ARGV 0 1) list(REMOVE_AT ARGV 0 1)
set(header_list)
foreach(FNAME ${ARGV}) foreach(FNAME ${ARGV})
get_filename_component(FNAME ${FNAME} NAME) get_filename_component(FNAME ${FNAME} NAME)
list(APPEND header_list ${FNAME})
endforeach()
list(SORT header_list)
foreach(FNAME ${header_list})
set(temp "${temp}#include \"${FNAME}\"\n") set(temp "${temp}#include \"${FNAME}\"\n")
endforeach() endforeach()
endif() endif()
@ -80,19 +85,23 @@ function(RegisterNPairStyle path)
AddStyleHeader(${path} NPAIR) AddStyleHeader(${path} NPAIR)
endfunction(RegisterNPairStyle) endfunction(RegisterNPairStyle)
function(RegisterFixStyle path)
AddStyleHeader(${path} FIX)
endfunction(RegisterFixStyle)
function(RegisterStyles search_path) function(RegisterStyles search_path)
FindStyleHeaders(${search_path} ANGLE_CLASS angle_ ANGLE ) # angle ) # force FindStyleHeaders(${search_path} ANGLE_CLASS angle_ ANGLE ) # angle ) # force
FindStyleHeaders(${search_path} ATOM_CLASS atom_vec_ ATOM_VEC ) # atom ) # atom atom_vec_hybrid FindStyleHeaders(${search_path} ATOM_CLASS atom_vec_ ATOM_VEC ) # atom ) # atom atom_vec_hybrid
FindStyleHeaders(${search_path} BODY_CLASS body_ BODY ) # body ) # atom_vec_body FindStyleHeaders(${search_path} BODY_CLASS body_ BODY ) # body ) # atom_vec_body
FindStyleHeaders(${search_path} BOND_CLASS bond_ BOND ) # bond ) # force FindStyleHeaders(${search_path} BOND_CLASS bond_ BOND ) # bond ) # force
FindStyleHeaders(${search_path} COMMAND_CLASS "" COMMAND ) # command ) # input FindStyleHeaders(${search_path} COMMAND_CLASS "[^.]" COMMAND ) # command ) # input
FindStyleHeaders(${search_path} COMPUTE_CLASS compute_ COMPUTE ) # compute ) # modify FindStyleHeaders(${search_path} COMPUTE_CLASS compute_ COMPUTE ) # compute ) # modify
FindStyleHeaders(${search_path} DIHEDRAL_CLASS dihedral_ DIHEDRAL ) # dihedral ) # force FindStyleHeaders(${search_path} DIHEDRAL_CLASS dihedral_ DIHEDRAL ) # dihedral ) # force
FindStyleHeaders(${search_path} DUMP_CLASS dump_ DUMP ) # dump ) # output write_dump FindStyleHeaders(${search_path} DUMP_CLASS dump_ DUMP ) # dump ) # output write_dump
FindStyleHeaders(${search_path} FIX_CLASS fix_ FIX ) # fix ) # modify FindStyleHeaders(${search_path} FIX_CLASS fix_ FIX ) # fix ) # modify
FindStyleHeaders(${search_path} IMPROPER_CLASS improper_ IMPROPER ) # improper ) # force FindStyleHeaders(${search_path} IMPROPER_CLASS improper_ IMPROPER ) # improper ) # force
FindStyleHeaders(${search_path} INTEGRATE_CLASS "" INTEGRATE ) # integrate ) # update FindStyleHeaders(${search_path} INTEGRATE_CLASS "[^.]" INTEGRATE ) # integrate ) # update
FindStyleHeaders(${search_path} KSPACE_CLASS "" KSPACE ) # kspace ) # force FindStyleHeaders(${search_path} KSPACE_CLASS "[^.]" KSPACE ) # kspace ) # force
FindStyleHeaders(${search_path} MINIMIZE_CLASS min_ MINIMIZE ) # minimize ) # update FindStyleHeaders(${search_path} MINIMIZE_CLASS min_ MINIMIZE ) # minimize ) # update
FindStyleHeaders(${search_path} NBIN_CLASS nbin_ NBIN ) # nbin ) # neighbor FindStyleHeaders(${search_path} NBIN_CLASS nbin_ NBIN ) # nbin ) # neighbor
FindStyleHeaders(${search_path} NPAIR_CLASS npair_ NPAIR ) # npair ) # neighbor FindStyleHeaders(${search_path} NPAIR_CLASS npair_ NPAIR ) # npair ) # neighbor

View File

@ -275,6 +275,16 @@ cmake -C ../cmake/presets/std_nolib.cmake -D PKG_GPU=on ../cmake
</dl> </dl>
</td> </td>
</tr> </tr>
<tr>
<td><code>BUILD_EXE</code></td>
<td>control whether to build LAMMPS executable</td>
<td>
<dl>
<dt><code>on</code> (default)</dt>
<dt><code>off</code></dt>
</dl>
</td>
</tr>
<tr> <tr>
<td><code>BUILD_SHARED_LIBS</code></td> <td><code>BUILD_SHARED_LIBS</code></td>
<td>control whether to build LAMMPS as a shared-library</td> <td>control whether to build LAMMPS as a shared-library</td>

View File

@ -4,15 +4,15 @@
# after you added @CMAKE_INSTALL_FULL_LIBDIR@/pkg-config to PKG_CONFIG_PATH, # after you added @CMAKE_INSTALL_FULL_LIBDIR@/pkg-config to PKG_CONFIG_PATH,
# e.g. export PKG_CONFIG_PATH=@CMAKE_INSTALL_FULL_LIBDIR@/pkgconfig # e.g. export PKG_CONFIG_PATH=@CMAKE_INSTALL_FULL_LIBDIR@/pkgconfig
prefix=@CMAKE_INSTALL_FULL_PREFIX@ prefix=@CMAKE_INSTALL_PREFIX@
libdir=@CMAKE_INSTALL_FULL_LIBDIR@ libdir=@CMAKE_INSTALL_FULL_LIBDIR@
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
Name: liblammps@LAMMPS_MACHINE@ Name: liblammps@LAMMPS_MACHINE@
Description: Large-scale Atomic/Molecular Massively Parallel Simulator Library Description: Large-scale Atomic/Molecular Massively Parallel Simulator Library
URL: http://lammps.sandia.gov URL: http://lammps.sandia.gov
Version: Version: @LAMMPS_VERSION@
Requires: Requires:
Libs: -L${libdir} -llammps@LIB_SUFFIX@@ Libs: -L${libdir} -llammps@LAMMPS_LIB_SUFFIX@
Libs.private: -lm Libs.private: -lm
Cflags: -I${includedir} @LAMMPS_API_DEFINES@ Cflags: -I${includedir} @LAMMPS_API_DEFINES@

View File

@ -31,17 +31,19 @@ SPHINXEXTRA = -j $(shell $(PYTHON) -c 'import multiprocessing;print(multiprocess
SOURCES=$(filter-out $(wildcard src/lammps_commands*.txt) src/lammps_support.txt src/lammps_tutorials.txt,$(wildcard src/*.txt)) SOURCES=$(filter-out $(wildcard src/lammps_commands*.txt) src/lammps_support.txt src/lammps_tutorials.txt,$(wildcard src/*.txt))
OBJECTS=$(SOURCES:src/%.txt=$(RSTDIR)/%.rst) OBJECTS=$(SOURCES:src/%.txt=$(RSTDIR)/%.rst)
.PHONY: help clean-all clean epub html pdf old venv spelling anchor_check .PHONY: help clean-all clean epub mobi html pdf old venv spelling anchor_check
# ------------------------------------------ # ------------------------------------------
help: help:
@echo "Please use \`make <target>' where <target> is one of" @echo "Please use \`make <target>' where <target> is one of"
@echo " html create HTML doc pages in html dir" @echo " html create HTML doc pages in html dir"
@echo " pdf create Manual.pdf and Developer.pdf in this dir" @echo " pdf create Developer.pdf and Manual.pdf in this dir"
@echo " old create old-style HTML doc pages in old dir" @echo " old create old-style HTML doc pages in old dir"
@echo " fetch fetch HTML and PDF files from LAMMPS web site" @echo " fetch fetch HTML and PDF files from LAMMPS web site"
@echo " epub create ePUB format manual for e-book readers" @echo " epub create ePUB format manual for e-book readers"
@echo " mobi convert ePUB to MOBI format manual for e-book readers (e.g. Kindle)"
@echo " (requires ebook-convert tool from calibre)"
@echo " clean remove all intermediate RST files" @echo " clean remove all intermediate RST files"
@echo " clean-all reset the entire build environment" @echo " clean-all reset the entire build environment"
@echo " txt2html build txt2html tool" @echo " txt2html build txt2html tool"
@ -106,20 +108,25 @@ epub: $(OBJECTS)
@rm -rf epub @rm -rf epub
@echo "Build finished. The ePUB manual file is created." @echo "Build finished. The ePUB manual file is created."
mobi: epub
@rm -f LAMMPS.mobi
@ebook-convert LAMMPS.epub LAMMPS.mobi
@echo "Conversion finished. The MOBI manual file is created."
pdf: utils/txt2html/txt2html.exe pdf: utils/txt2html/txt2html.exe
@(\ @(\
set -e; \ set -e; \
cd src; \ cd src/Developer; \
pdflatex developer; \
pdflatex developer; \
mv developer.pdf ../../Developer.pdf; \
cd ..; \
../utils/txt2html/txt2html.exe -b *.txt; \ ../utils/txt2html/txt2html.exe -b *.txt; \
htmldoc --batch lammps.book; \ htmldoc --batch lammps.book; \
for s in `echo *.txt | sed -e 's,\.txt,\.html,g'` ; \ for s in `echo *.txt | sed -e 's,\.txt,\.html,g'` ; \
do grep -q $$s lammps.book || \ do grep -q $$s lammps.book || \
echo doc file $$s missing in src/lammps.book; done; \ echo doc file $$s missing in src/lammps.book; done; \
rm *.html; \ rm *.html; \
cd Developer; \
pdflatex developer; \
pdflatex developer; \
mv developer.pdf ../../Developer.pdf; \
) )
old: utils/txt2html/txt2html.exe old: utils/txt2html/txt2html.exe

45
doc/lammps.1 Normal file
View File

@ -0,0 +1,45 @@
.TH LAMMPS "2018-08-22"
.SH NAME
.B LAMMPS
\- Molecular Dynamics Simulator.
.SH SYNOPSIS
.B lmp
-in in.file
or
mpirun \-np 2
.B lmp
-in in.file
.SH DESCRIPTION
.B LAMMPS
LAMMPS is a classical molecular dynamics code, and an acronym for Large-scale
Atomic/Molecular Massively Parallel Simulator. LAMMPS has potentials for soft
materials (biomolecules, polymers) and solid-state materials (metals,
semiconductors) and coarse-grained or mesoscopic systems. It can be used to
model atoms or, more generically, as a parallel particle simulator at the
atomic, meso, or continuum scale.
See http://lammps.sandia.gov/ for documentation.
.SH OPTIONS
See https://lammps.sandia.gov/doc/Run_options.html for details on
command-line options.
.SH COPYRIGHT
© 2003--2018 Sandia Corporation
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL-2'.

View File

@ -28,6 +28,7 @@ as described on the "Install"_Install.html doc page.
Build_settings Build_settings
Build_package Build_package
Build_extras Build_extras
Build_windows
END_RST --> END_RST -->
@ -39,7 +40,8 @@ END_RST -->
"Basic build options"_Build_basics.html "Basic build options"_Build_basics.html
"Optional build settings"_Build_settings.html "Optional build settings"_Build_settings.html
"Include packages in build"_Build_package.html "Include packages in build"_Build_package.html
"Packages with extra build options"_Build_extras.html :all(b) "Packages with extra build options"_Build_extras.html
"Notes for building LAMMPS on Windows"_Build_windows.html :all(b)
If you have problems building LAMMPS, it is often due to software If you have problems building LAMMPS, it is often due to software
issues on your local machine. If you can, find a local expert to issues on your local machine. If you can, find a local expert to

View File

@ -61,7 +61,7 @@ library files. Failing this, these 3 variables can be used to specify
where the mpi.h file (MPI_INC), and the MPI library files (MPI_PATH) where the mpi.h file (MPI_INC), and the MPI library files (MPI_PATH)
are found, and the name of the library files (MPI_LIB). are found, and the name of the library files (MPI_LIB).
For a serial build, you need to specify the 3 varaibles, as shown For a serial build, you need to specify the 3 variables, as shown
above. above.
For a serial LAMMPS build, use the dummy MPI library provided in For a serial LAMMPS build, use the dummy MPI library provided in
@ -145,7 +145,7 @@ By default CMake will use a compiler it finds and it will add
optimization flags appropriate to that compiler and any "accelerator optimization flags appropriate to that compiler and any "accelerator
packages"_Speed_packages.html you have included in the build. packages"_Speed_packages.html you have included in the build.
You can tell CMake to look for a specific compiler with these varaible You can tell CMake to look for a specific compiler with these variable
settings. Likewise you can specify the FLAGS variables if you want to settings. Likewise you can specify the FLAGS variables if you want to
experiment with alternate optimization flags. You should specify all experiment with alternate optimization flags. You should specify all
3 compilers, so that the small number of LAMMPS source files written 3 compilers, so that the small number of LAMMPS source files written
@ -216,8 +216,8 @@ LAMMPS can be built as either an executable or as a static or shared
library. The LAMMPS library can be called from another application or library. The LAMMPS library can be called from another application or
a scripting language. See the "Howto couple"_Howto_couple.html doc a scripting language. See the "Howto couple"_Howto_couple.html doc
page for more info on coupling LAMMPS to other codes. See the page for more info on coupling LAMMPS to other codes. See the
"Python"_Python doc page for more info on wrapping and running LAMMPS "Python"_Python_head.html doc page for more info on wrapping and
from Python via its library interface. running LAMMPS from Python via its library interface.
[CMake variables]: [CMake variables]:
@ -247,7 +247,7 @@ Note that for a shared library to be usable by a calling program, all
the auxiliary libraries it depends on must also exist as shared the auxiliary libraries it depends on must also exist as shared
libraries. This will be the case for libraries included with LAMMPS, libraries. This will be the case for libraries included with LAMMPS,
such as the dummy MPI library in src/STUBS or any package libraries in such as the dummy MPI library in src/STUBS or any package libraries in
the lib/packages directroy, since they are always built as shared the lib/packages directory, since they are always built as shared
libraries using the -fPIC switch. However, if a library like MPI or libraries using the -fPIC switch. However, if a library like MPI or
FFTW does not exist as a shared library, the shared library build will FFTW does not exist as a shared library, the shared library build will
generate an error. This means you will need to install a shared generate an error. This means you will need to install a shared
@ -292,6 +292,10 @@ This will create a lammps/doc/html dir with the HTML doc pages so that
you can browse them locally on your system. Type "make" from the you can browse them locally on your system. Type "make" from the
lammps/doc dir to see other options. lammps/doc dir to see other options.
NOTE: You can also download a tarball of the documention for the
current LAMMPS version (HTML and PDF files), from the website
"download page"_http://lammps.sandia.gov/download.html.
:line :line
Install LAMMPS after a build :h4,link(install) Install LAMMPS after a build :h4,link(install)
@ -299,7 +303,7 @@ Install LAMMPS after a build :h4,link(install)
After building LAMMPS, you may wish to copy the LAMMPS executable of After building LAMMPS, you may wish to copy the LAMMPS executable of
library, along with other LAMMPS files (library header, doc files) to library, along with other LAMMPS files (library header, doc files) to
a globally visible place on your system, for others to access. Note a globally visible place on your system, for others to access. Note
that you may need super-user priveleges (e.g. sudo) if the directory that you may need super-user privileges (e.g. sudo) if the directory
you want to copy files to is protected. you want to copy files to is protected.
[CMake variable]: [CMake variable]:

View File

@ -40,7 +40,7 @@ executable called "lmp" and a library called "liblammps.a" in the
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
CPU cores) can be much faster. If you plan to do development on CPU cores) can be much faster. If you plan to do development on
LAMMPS or need to recompile LAMMPS repeatedly, installation of the LAMMPS or need to re-compile LAMMPS repeatedly, installation of the
ccache (= Compiler Cache) software may speed up compilation even more. ccache (= Compiler Cache) software may speed up compilation even more.
After compilation, you can optionally copy the LAMMPS executable and After compilation, you can optionally copy the LAMMPS executable and
@ -50,7 +50,7 @@ make install # optional, copy LAMMPS executable & library elsewhere :pre
:line :line
There are 3 variants of CMake: a command-line verison (cmake), a text mode There are 3 variants of CMake: a command-line version (cmake), a text mode
UI version (ccmake), and a graphical GUI version (cmake-GUI). You can use UI version (ccmake), and a graphical GUI version (cmake-GUI). You can use
any of them interchangeably to configure and create the LAMMPS build any of them interchangeably to configure and create the LAMMPS build
environment. On Linux all the versions produce a Makefile as their environment. On Linux all the versions produce a Makefile as their
@ -188,7 +188,7 @@ module list # is a cmake module already loaded?
module avail # is a cmake module available? module avail # is a cmake module available?
module load cmake3 # load cmake module with appropriate name :pre module load cmake3 # load cmake module with appropriate name :pre
Most Linux distributions offer precompiled cmake packages through Most Linux distributions offer pre-compiled cmake packages through
their package management system. If you do not have CMake or a new their package management system. If you do not have CMake or a new
enough version, you can download the latest version at enough version, you can download the latest version at
"https://cmake.org/download/"_https://cmake.org/download/. "https://cmake.org/download/"_https://cmake.org/download/.

View File

@ -31,6 +31,7 @@ This is the list of packages that may require additional steps.
"KOKKOS"_#kokkos, "KOKKOS"_#kokkos,
"LATTE"_#latte, "LATTE"_#latte,
"MEAM"_#meam, "MEAM"_#meam,
"MESSAGE"_#message,
"MSCG"_#mscg, "MSCG"_#mscg,
"OPT"_#opt, "OPT"_#opt,
"POEMS"_#poems, "POEMS"_#poems,
@ -47,6 +48,7 @@ This is the list of packages that may require additional steps.
"USER-OMP"_#user-omp, "USER-OMP"_#user-omp,
"USER-QMMM"_#user-qmmm, "USER-QMMM"_#user-qmmm,
"USER-QUIP"_#user-quip, "USER-QUIP"_#user-quip,
"USER-SCAFACOS"_#user-scafacos,
"USER-SMD"_#user-smd, "USER-SMD"_#user-smd,
"USER-VTK"_#user-vtk :tb(c=6,ea=c,a=l) "USER-VTK"_#user-vtk :tb(c=6,ea=c,a=l)
@ -340,7 +342,7 @@ 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 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 the Fortran code in the MEAM library to C++. The code in USER-MEAMC
should be functionally equivalent to the MEAM package, fully supports should be functionally equivalent to the MEAM package, fully supports
use of "pair_style hybrid"_pair_hybrid.html (the MEAM packaged doesn use of "pair_style hybrid"_pair_hybrid.html (the MEAM package does
not), and has optimizations that make it significantly faster than the not), and has optimizations that make it significantly faster than the
MEAM package. MEAM package.
@ -361,6 +363,10 @@ make lib-meam args="-m mpi" # build with default Fortran compiler compatible
make lib-meam args="-m serial" # build with compiler compatible with "make serial" (GNU Fortran) 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 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 The build should produce two files: lib/meam/libmeam.a and
lib/meam/Makefile.lammps. The latter is copied from an existing lib/meam/Makefile.lammps. The latter is copied from an existing
Makefile.lammps.* and has settings needed to link C++ (LAMMPS) with Makefile.lammps.* and has settings needed to link C++ (LAMMPS) with
@ -373,6 +379,35 @@ file.
:line :line
MESSAGE package :h4,link(message)
This package can optionally include support for messaging via sockets,
using the open-source "ZeroMQ library"_http://zeromq.org, which must
be installed on your system.
[CMake build]:
-D MESSAGE_ZMQ=value # build with ZeroMQ support, value = no (default) or yes
[Traditional make]:
Before building LAMMPS, you must build the CSlib library in
lib/message. You can build the CSlib library manually if you prefer;
follow the instructions in lib/message/README. You can also do it in
one step from the lammps/src dir, using a command like these, which
simply invoke the lib/message/Install.py script with the specified args:
make lib-message # print help message
make lib-message args="-m -z" # build with MPI and socket (ZMQ) support
make lib-message args="-s" # build as serial lib with no ZMQ support
The build should produce two files: lib/message/cslib/src/libmessage.a
and lib/message/Makefile.lammps. The latter is copied from an
existing Makefile.lammps.* and has settings to link with the ZeroMQ
library if requested in the build.
:line
MSCG package :h4,link(mscg) MSCG package :h4,link(mscg)
To build with this package, you must download and build the MS-CG To build with this package, you must download and build the MS-CG
@ -470,7 +505,7 @@ lib/python/README for more details.
-D PYTHON_EXECUTABLE=path # path to Python executable to use :pre -D PYTHON_EXECUTABLE=path # path to Python executable to use :pre
Without this setting, CMake will ues the default Python on your Without this setting, CMake will guess the default Python on your
system. To use a different Python version, you can either create a system. To use a different Python version, you can either create a
virtualenv, activate it and then run cmake. Or you can set the virtualenv, activate it and then run cmake. Or you can set the
PYTHON_EXECUTABLE variable to specify which Python interpreter should PYTHON_EXECUTABLE variable to specify which Python interpreter should
@ -687,7 +722,7 @@ the HDF5 library.
No additional settings are needed besides "-D PKG_USER-H5MD=yes". No additional settings are needed besides "-D PKG_USER-H5MD=yes".
This should autodetect the H5MD library on your system. Several This should auto-detect the H5MD library on your system. Several
advanced CMake H5MD options exist if you need to specify where it is advanced CMake H5MD options exist if you need to specify where it is
installed. Use the ccmake (terminal window) or cmake-gui (graphical) installed. Use the ccmake (terminal window) or cmake-gui (graphical)
tools to see these options and set them interactively from their user tools to see these options and set them interactively from their user
@ -777,7 +812,7 @@ on your system.
No additional settings are needed besides "-D PKG_USER-NETCDF=yes". No additional settings are needed besides "-D PKG_USER-NETCDF=yes".
This should autodetect the NETCDF library if it is installed on your This should auto-detect the NETCDF library if it is installed on your
system at standard locations. Several advanced CMake NETCDF options system at standard locations. Several advanced CMake NETCDF options
exist if you need to specify where it was installed. Use the ccmake exist if you need to specify where it was installed. Use the ccmake
(terminal window) or cmake-gui (graphical) tools to see these options (terminal window) or cmake-gui (graphical) tools to see these options
@ -894,6 +929,45 @@ successfully build on your system.
:line :line
USER-SCAFACOS package :h4,link(user-scafacos)
To build with this package, you must download and build the "ScaFaCoS
Coulomb solver library"_scafacos_home
:link(scafacos_home,http://www.scafacos.de)
[CMake build]:
-D DOWNLOAD_SCAFACOS=value # download ScaFaCoS for build, value = no (default) or yes
-D SCAFACOS_LIBRARY=path # ScaFaCos library file (only needed if at custom location)
-D SCAFACOS_INCLUDE_DIR=path # ScaFaCoS include directory (only needed if at custom location) :pre
If DOWNLOAD_SCAFACOS is set, the ScaFaCoS library will be downloaded
and built inside the CMake build directory. If the ScaFaCoS library
is already on your system (in a location CMake cannot find it),
SCAFACOS_LIBRARY is the filename (plus path) of the ScaFaCoS library
file, not the directory the library file is in. SCAFACOS_INCLUDE_DIR
is the directory the ScaFaCoS include file is in.
[Traditional make]:
You can download and build the ScaFaCoS library manually if you
prefer; follow the instructions in lib/scafacos/README. You can also
do it in one step from the lammps/src dir, using a command like these,
which simply invoke the lib/scafacos/Install.py script with the
specified args:
make lib-scafacos # print help message
make lib-scafacos args="-b" # download and build in lib/scafacos/scafacos-<version>
make lib-scafacos args="-p $HOME/scafacos # use existing ScaFaCoS installation in $HOME/scafacos
Note that 2 symbolic (soft) links, "includelink" and "liblink", are
created in lib/scafacos to point to the ScaFaCoS src dir. When LAMMPS
builds in src it will use these links. You should not need to edit
the lib/scafacos/Makefile.lammps file.
:line
USER-SMD package :h4,link(user-smd) USER-SMD package :h4,link(user-smd)
To build with this package, you must download the Eigen3 library. To build with this package, you must download the Eigen3 library.
@ -905,7 +979,7 @@ Eigen3 is a template library, so you do not need to build it.
-D EIGEN3_INCLUDE_DIR=path # path to Eigen library (only needed if a custom location) :pre -D EIGEN3_INCLUDE_DIR=path # path to Eigen library (only needed if a custom location) :pre
If DOWNLOAD_EIGEN3 is set, the Eigen3 library will be downloaded and If DOWNLOAD_EIGEN3 is set, the Eigen3 library will be downloaded and
inside the CMake build directory. If the Eig3n3 library is already on inside the CMake build directory. If the Eigen3 library is already on
your system (in a location CMake cannot find it), EIGEN3_INCLUDE_DIR your system (in a location CMake cannot find it), EIGEN3_INCLUDE_DIR
is the directory the Eigen3++ include file is in. is the directory the Eigen3++ include file is in.
@ -936,7 +1010,7 @@ your system.
No additional settings are needed besides "-D PKG_USER-VTK=yes". No additional settings are needed besides "-D PKG_USER-VTK=yes".
This should autodetect the VTK library if it is installed on your This should auto-detect the VTK library if it is installed on your
system at standard locations. Several advanced VTK options exist if system at standard locations. Several advanced VTK options exist if
you need to specify where it was installed. Use the ccmake (terminal you need to specify where it was installed. Use the ccmake (terminal
window) or cmake-gui (graphical) tools to see these options and set window) or cmake-gui (graphical) tools to see these options and set

View File

@ -35,16 +35,16 @@ This initial compilation can take a long time, since LAMMPS is a large
project with many features. If your machine has multiple CPU cores project with many features. If your machine has multiple CPU cores
(most do these days), using a command like "make -jN mpi" (with N = (most do these days), using a command like "make -jN mpi" (with N =
the number of available CPU cores) can be much faster. If you plan to the number of available CPU cores) can be much faster. If you plan to
do development on LAMMPS or need to recompile LAMMPS repeatedly, the do development on LAMMPS or need to re-compile LAMMPS repeatedly, the
installation of the ccache (= Compiler Cache) software may speed up installation of the ccache (= Compiler Cache) software may speed up
compilation even more. compilation even more.
After the initial build, whenever you edit LAMMPS source files, or add After the initial build, whenever you edit LAMMPS source files, or add
or remove new files to the source directory (e.g. by installing or or remove new files to the source directory (e.g. by installing or
uninstalling packages), you must recompile and relink the LAMMPS uninstalling packages), you must re-compile and relink the LAMMPS
executable with the same "make" command. This makefiles dependencies executable with the same "make" command. This makefiles dependencies
should insure that only the subset of files that need to be are should insure that only the subset of files that need to be are
recompiled. re-compiled.
NOTE: When you build LAMMPS for the first time, a long list of *.d NOTE: When you build LAMMPS for the first time, a long list of *.d
files will be printed out rapidly. This is not an error; it is the files will be printed out rapidly. This is not an error; it is the
@ -71,8 +71,8 @@ Makefiles you may wish to try include these (some require a package
first be installed). Many of these include specific compiler flags first be installed). Many of these include specific compiler flags
for optimized performance. Please note, however, that some of these for optimized performance. Please note, however, that some of these
customized machine Makefile are contributed by users. Since both customized machine Makefile are contributed by users. Since both
compilers, OS configs, and LAMMPS itself keep changing, their settings compilers, OS configurations, and LAMMPS itself keep changing, their
may become outdated: settings may become outdated:
make mac # build serial LAMMPS on a Mac make mac # build serial LAMMPS on a Mac
make mac_mpi # build parallel LAMMPS on a Mac make mac_mpi # build parallel LAMMPS on a Mac

View File

@ -42,6 +42,7 @@ packages:
"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, "MEAM"_Build_extras.html#meam,
"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,
"POEMS"_Build_extras.html#poems, "POEMS"_Build_extras.html#poems,
@ -58,6 +59,7 @@ packages:
"USER-OMP"_Build_extras.html#user-omp, "USER-OMP"_Build_extras.html#user-omp,
"USER-QMMM"_Build_extras.html#user-qmmm, "USER-QMMM"_Build_extras.html#user-qmmm,
"USER-QUIP"_Build_extras.html#user-quip, "USER-QUIP"_Build_extras.html#user-quip,
"USER-SCAFACOS"_Build_extras.html#user-scafacos,
"USER-SMD"_Build_extras.html#user-smd, "USER-SMD"_Build_extras.html#user-smd,
"USER-VTK"_Build_extras.html#user-vtk :tb(c=6,ea=c,a=l) "USER-VTK"_Build_extras.html#user-vtk :tb(c=6,ea=c,a=l)

View File

@ -80,8 +80,8 @@ per-timestep CPU cost, FFTs are only a portion of long-range
Coulombics, and 1d FFTs are only a portion of the FFT cost (parallel Coulombics, and 1d FFTs are only a portion of the FFT cost (parallel
communication can be costly). A breakdown of these timings is printed communication can be costly). A breakdown of these timings is printed
to the screen at the end of a run using the "kspace_style to the screen at the end of a run using the "kspace_style
pppm"_kspace_style.html command. The "Run output"_doc page gives more pppm"_kspace_style.html command. The "Run output"_Run_output.html
details. doc page gives more details.
FFTW is a fast, portable FFT library that should also work on any FFTW is a fast, portable FFT library that should also work on any
platform and can be faster than the KISS FFT library. You can platform and can be faster than the KISS FFT library. You can
@ -101,7 +101,7 @@ Performing 3d FFTs in parallel can be time consuming due to data
access and required communication. This cost can be reduced by access and required communication. This cost can be reduced by
performing single-precision FFTs instead of double precision. Single performing single-precision FFTs instead of double precision. Single
precision means the real and imaginary parts of a complex datum are precision means the real and imaginary parts of a complex datum are
4-byte floats. Double precesion means they are 8-byte doubles. Note 4-byte floats. Double precision means they are 8-byte doubles. Note
that Fourier transform and related PPPM operations are somewhat less that Fourier transform and related PPPM operations are somewhat less
sensitive to floating point truncation errors and thus the resulting sensitive to floating point truncation errors and thus the resulting
error is less than the difference in precision. Using the -DFFT_SINGLE error is less than the difference in precision. Using the -DFFT_SINGLE
@ -193,7 +193,7 @@ Output of JPG, PNG, and movie files :h4,link(graphics)
The "dump image"_dump_image.html command has options to output JPEG or The "dump image"_dump_image.html command has options to output JPEG or
PNG image files. Likewise the "dump movie"_dump_image.html command PNG image files. Likewise the "dump movie"_dump_image.html command
ouputs movie files in MPEG format. Using these options requires the outputs movie files in MPEG format. Using these options requires the
following settings: following settings:
[CMake variables]: [CMake variables]:
@ -206,7 +206,7 @@ following settings:
# default = yes if CMake can find ffmpeg, else no :pre # default = yes if CMake can find ffmpeg, else no :pre
Usually these settings are all that is needed. If CMake cannot find Usually these settings are all that is needed. If CMake cannot find
the graphics header, library, executuable files, you can set these the graphics header, library, executable files, you can set these
variables: variables:
-D JPEG_INCLUDE_DIR=path # path to jpeglib.h header file -D JPEG_INCLUDE_DIR=path # path to jpeglib.h header file

97
doc/src/Build_windows.txt Normal file
View File

@ -0,0 +1,97 @@
"Higher level section"_Build.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_all.html)
:line
Notes for building LAMMPS on Windows :h3
"General remarks"_#generic
"Running Linux on Windows"_#linux
"Using GNU GCC ported to Windows"_#gnu
"Using a cross-compiler"_#cross :ul
:line
General remarks :h4,link(generic)
LAMMPS is developed and tested primarily on Linux machines. The vast
majority of HPC clusters and supercomputers today runs on Linux as well.
Thus portability to other platforms is desired, but not always achieved.
The LAMMPS developers strongly rely on LAMMPS users giving feedback and
providing assistance in resolving portability issues. This particularly
true for compiling LAMMPS on Windows, since this platform has significant
differences with some low-level functionality.
Running Linux on Windows :h4,link(linux)
So before trying to build LAMMPS on Windows, please consider if using
the pre-compiled Windows binary packages are sufficient for your needs
(as an aside, those packages themselves are build on a Linux machine
using cross-compilers). If it is necessary for your to compile LAMMPS
on a Windows machine (e.g. because it is your main desktop), please also
consider using a virtual machine software and run a Linux virtual machine,
or - if have a recently updated Windows 10 installation - consider using
the Windows subsystem for Linux, which allows to run a bash shell from
Ubuntu and from there on, you can pretty much use that shell like you
are running on an Ubuntu Linux machine (e.g. installing software via
apt-get). For more details on that, please see "this tutorial"_Howto_bash.html
Using GNU GCC ported to Windows :h4,link(gnu)
One option for compiling LAMMPS on Windows natively, that has been known
to work in the past is to install a bash shell, unix shell utilities,
perl, GNU make, and a GNU compiler ported to Windows. The Cygwin package
provides a unix/linux interface to low-level Windows functions, so LAMMPS
can be compiled on Windows. The necessary (minor) modifications to LAMMPS
are included, but may not always up-to-date for recently added functionality
and the corresponding new code. A machine makefile for using cygwin for
the old build system is provided. The CMake build system is untested
for this; you will have to request that makefiles are generated and
manually set the compiler.
When compiling for Windows [not] set the -DLAMMPS_MEMALIGN define
in the LMP_INC makefile variable and add -lwsock32 -lpsapi to the linker
flags in LIB makefile variable. Try adding -static-libgcc or -static or
both to the linker flags when your resulting LAMMPS Windows executable
complains about missing .dll files. The CMake configuration should set
this up automatically, but is untested.
In case of problems, you are recommended to contact somebody with
experience in using cygwin. If you do come across portability problems
requiring changes to the LAMMPS source code, or figure out corrections
yourself, please report them on the lammps-users mailing list, or file
them as an issue or pull request on the LAMMPS github project.
Using a cross-compiler :h4,link(cross)
If you need to provide custom LAMMPS binaries for Windows, but do not
need to do the compilation on Windows, please consider using a Linux
to Windows cross-compiler. This is how currently the Windows binary
packages are created by the LAMMPS developers. Because of that, this is
probably the currently best tested and supported way to build LAMMPS
executables for Windows. There are makefiles provided for the
traditional build system, but CMake has also been successfully tested
using the mingw32-cmake and mingw64-cmake wrappers that are bundled
with the cross-compiler environment on Fedora machines.
Please keep in mind, though, that this only applies to compiling LAMMPS.
Whether the resulting binaries do work correctly is no tested by the
LAMMPS developers. We instead rely on the feedback of the users
of these pre-compiled LAMMPS packages for Windows. We will try to resolve
issues to the best of our abilities if we become aware of them. However
this is subject to time constraints and focus on HPC platforms.
Native Visual C++ support :h4,link(native)
Support for the Visual C++ compilers is currently not available. The
CMake build system is capable of creating suitable a Visual Studio
style build environment, but the LAMMPS code itself is not fully ported
to support Visual C++. Volunteers to take on this task are welcome.

View File

@ -19,7 +19,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
All commands :h3 All commands :h3
An alphabetic list of all LAMMPS commmands. An alphabetic list of all LAMMPS commands.
"angle_coeff"_angle_coeff.html, "angle_coeff"_angle_coeff.html,
"angle_style"_angle_style.html, "angle_style"_angle_style.html,
@ -71,6 +71,7 @@ An alphabetic list of all LAMMPS commmands.
"lattice"_lattice.html, "lattice"_lattice.html,
"log"_log.html, "log"_log.html,
"mass"_mass.html, "mass"_mass.html,
"message"_message.html,
"minimize"_minimize.html, "minimize"_minimize.html,
"min_modify"_min_modify.html, "min_modify"_min_modify.html,
"min_style"_min_style.html, "min_style"_min_style.html,
@ -103,6 +104,7 @@ An alphabetic list of all LAMMPS commmands.
"restart"_restart.html, "restart"_restart.html,
"run"_run.html, "run"_run.html,
"run_style"_run_style.html, "run_style"_run_style.html,
"server"_server.html,
"set"_set.html, "set"_set.html,
"shell"_shell.html, "shell"_shell.html,
"special_bonds"_special_bonds.html, "special_bonds"_special_bonds.html,

View File

@ -70,7 +70,7 @@ OPT.
"fourier/simple (o)"_angle_fourier_simple.html, "fourier/simple (o)"_angle_fourier_simple.html,
"harmonic (iko)"_angle_harmonic.html, "harmonic (iko)"_angle_harmonic.html,
"quartic (o)"_angle_quartic.html, "quartic (o)"_angle_quartic.html,
"sdk"_angle_sdk.html, "sdk (o)"_angle_sdk.html,
"table (o)"_angle_table.html :tb(c=4,ea=c) "table (o)"_angle_table.html :tb(c=4,ea=c)
:line :line
@ -95,7 +95,7 @@ OPT.
"helix (o)"_dihedral_helix.html, "helix (o)"_dihedral_helix.html,
"multi/harmonic (o)"_dihedral_multi_harmonic.html, "multi/harmonic (o)"_dihedral_multi_harmonic.html,
"nharmonic (o)"_dihedral_nharmonic.html, "nharmonic (o)"_dihedral_nharmonic.html,
"opls (iko)"_dihedral_opls.htm;, "opls (iko)"_dihedral_opls.html,
"quadratic (o)"_dihedral_quadratic.html, "quadratic (o)"_dihedral_quadratic.html,
"spherical (o)"_dihedral_spherical.html, "spherical (o)"_dihedral_spherical.html,
"table (o)"_dihedral_table.html, "table (o)"_dihedral_table.html,

View File

@ -35,6 +35,7 @@ KOKKOS, o = USER-OMP, t = OPT.
"bond/local"_compute_bond_local.html, "bond/local"_compute_bond_local.html,
"centro/atom"_compute_centro_atom.html, "centro/atom"_compute_centro_atom.html,
"chunk/atom"_compute_chunk_atom.html, "chunk/atom"_compute_chunk_atom.html,
"chunk/spread/atom"_compute_chunk_spread_atom.html,
"cluster/atom"_compute_cluster_atom.html, "cluster/atom"_compute_cluster_atom.html,
"cna/atom"_compute_cna_atom.html, "cna/atom"_compute_cna_atom.html,
"cnp/atom"_compute_cnp_atom.html, "cnp/atom"_compute_cnp_atom.html,
@ -95,8 +96,10 @@ KOKKOS, o = USER-OMP, t = OPT.
"property/atom"_compute_property_atom.html, "property/atom"_compute_property_atom.html,
"property/chunk"_compute_property_chunk.html, "property/chunk"_compute_property_chunk.html,
"property/local"_compute_property_local.html, "property/local"_compute_property_local.html,
"ptm/atom"_compute_ptm_atom.html,
"rdf"_compute_rdf.html, "rdf"_compute_rdf.html,
"reduce"_compute_reduce.html, "reduce"_compute_reduce.html,
"reduce/chunk"_compute_reduce_chunk.html,
"reduce/region"_compute_reduce.html, "reduce/region"_compute_reduce.html,
"rigid/local"_compute_rigid_local.html, "rigid/local"_compute_rigid_local.html,
"saed"_compute_saed.html, "saed"_compute_saed.html,
@ -115,7 +118,7 @@ KOKKOS, o = USER-OMP, t = OPT.
"smd/tlsph/strain"_compute_smd_tlsph_strain.html, "smd/tlsph/strain"_compute_smd_tlsph_strain.html,
"smd/tlsph/strain/rate"_compute_smd_tlsph_strain_rate.html, "smd/tlsph/strain/rate"_compute_smd_tlsph_strain_rate.html,
"smd/tlsph/stress"_compute_smd_tlsph_stress.html, "smd/tlsph/stress"_compute_smd_tlsph_stress.html,
"smd/triangle/mesh/vertices"_compute_smd_triangle_mesh_vertices.html, "smd/triangle/mesh/vertices"_compute_smd_triangle_vertices.html,
"smd/ulsph/num/neighs"_compute_smd_ulsph_num_neighs.html, "smd/ulsph/num/neighs"_compute_smd_ulsph_num_neighs.html,
"smd/ulsph/strain"_compute_smd_ulsph_strain.html, "smd/ulsph/strain"_compute_smd_ulsph_strain.html,
"smd/ulsph/strain/rate"_compute_smd_ulsph_strain_rate.html, "smd/ulsph/strain/rate"_compute_smd_ulsph_strain_rate.html,

View File

@ -65,6 +65,7 @@ OPT.
"eos/table/rx (k)"_fix_eos_table_rx.html, "eos/table/rx (k)"_fix_eos_table_rx.html,
"evaporate"_fix_evaporate.html, "evaporate"_fix_evaporate.html,
"external"_fix_external.html, "external"_fix_external.html,
"ffl"_fix_ffl.html,
"filter/corotate"_fix_filter_corotate.html, "filter/corotate"_fix_filter_corotate.html,
"flow/gauss"_fix_flow_gauss.html, "flow/gauss"_fix_flow_gauss.html,
"freeze (k)"_fix_freeze.html, "freeze (k)"_fix_freeze.html,
@ -216,7 +217,7 @@ OPT.
"wall/body/polyhedron"_fix_wall_body_polyhedron.html, "wall/body/polyhedron"_fix_wall_body_polyhedron.html,
"wall/colloid"_fix_wall.html, "wall/colloid"_fix_wall.html,
"wall/ees"_fix_wall_ees.html, "wall/ees"_fix_wall_ees.html,
"wall/gran"_fix_wall_gran.html, "wall/gran (o)"_fix_wall_gran.html,
"wall/gran/region"_fix_wall_gran_region.html, "wall/gran/region"_fix_wall_gran_region.html,
"wall/harmonic"_fix_wall.html, "wall/harmonic"_fix_wall.html,
"wall/lj1043"_fix_wall.html, "wall/lj1043"_fix_wall.html,

View File

@ -33,4 +33,5 @@ OPT.
"pppm/disp (i)"_kspace_style.html, "pppm/disp (i)"_kspace_style.html,
"pppm/disp/tip4p"_kspace_style.html, "pppm/disp/tip4p"_kspace_style.html,
"pppm/stagger"_kspace_style.html, "pppm/stagger"_kspace_style.html,
"pppm/tip4p (o)"_kspace_style.html :tb(c=4,ea=c) "pppm/tip4p (o)"_kspace_style.html,
"scafacos"_kspace_style.html :tb(c=4,ea=c)

View File

@ -26,13 +26,14 @@ OPT.
"none"_pair_none.html, "none"_pair_none.html,
"zero"_pair_zero.html, "zero"_pair_zero.html,
"hybrid"_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 :tb(c=4,ea=c)
"adp (o)"_pair_adp.html, "adp (o)"_pair_adp.html,
"agni (o)"_pair_agni.html, "agni (o)"_pair_agni.html,
"airebo (oi)"_pair_airebo.html, "airebo (oi)"_pair_airebo.html,
"airebo/morse (oi)"_pair_airebo.html, "airebo/morse (oi)"_pair_airebo.html,
"atm"_pair_atm.html,
"awpmd/cut"_pair_awpmd.html, "awpmd/cut"_pair_awpmd.html,
"beck (go)"_pair_beck.html, "beck (go)"_pair_beck.html,
"body/nparticle"_pair_body_nparticle.html, "body/nparticle"_pair_body_nparticle.html,
@ -80,6 +81,7 @@ OPT.
"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,
"eam/cd/old (o)"_pair_eam.html,
"eam/fs (gikot)"_pair_eam.html, "eam/fs (gikot)"_pair_eam.html,
"edip (o)"_pair_edip.html, "edip (o)"_pair_edip.html,
"edip/multi"_pair_edip.html, "edip/multi"_pair_edip.html,
@ -166,7 +168,7 @@ OPT.
"morse/soft"_pair_morse.html, "morse/soft"_pair_morse.html,
"multi/lucy"_pair_multi_lucy.html, "multi/lucy"_pair_multi_lucy.html,
"multi/lucy/rx (k)"_pair_multi_lucy_rx.html, "multi/lucy/rx (k)"_pair_multi_lucy_rx.html,
"nb3b/harmonic (o)"_pair_nb3b_harmonic.html, "nb3b/harmonic"_pair_nb3b_harmonic.html,
"nm/cut (o)"_pair_nm.html, "nm/cut (o)"_pair_nm.html,
"nm/cut/coul/cut (o)"_pair_nm.html, "nm/cut/coul/cut (o)"_pair_nm.html,
"nm/cut/coul/long (o)"_pair_nm.html, "nm/cut/coul/long (o)"_pair_nm.html,

View File

@ -14,7 +14,7 @@ LAMMPS commands are case sensitive. Command names are lower-case, as
are specified command arguments. Upper case letters may be used in are specified command arguments. Upper case letters may be used in
file names or user-chosen ID strings. file names or user-chosen ID strings.
Here are 6 rulse for how each line in the input script is parsed by Here are 6 rules for how each line in the input script is parsed by
LAMMPS: LAMMPS:
(1) If the last printable character on the line is a "&" character, (1) If the last printable character on the line is a "&" character,
@ -71,7 +71,7 @@ floating-point value. The format string is used to output the result
of the variable expression evaluation. If a format string is not of the variable expression evaluation. If a format string is not
specified a high-precision "%.20g" is used as the default. specified a high-precision "%.20g" is used as the default.
This can be useful for formatting print output to a desired precion: This can be useful for formatting print output to a desired precision:
print "Final energy per atom: $(pe/atoms:%10.3f) eV/atom" :pre print "Final energy per atom: $(pe/atoms:%10.3f) eV/atom" :pre

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

9
doc/src/Eqs/pair_atm.tex Normal file
View File

@ -0,0 +1,9 @@
\documentclass[12pt]{article}
\begin{document}
\begin{equation}
E=\nu\frac{1+3\cos\gamma_1\cos\gamma_2\cos\gamma_3}{r_{12}^3r_{23}^3r_{31}^3}
\end{equation}
\end{document}

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

21
doc/src/Eqs/ptm_rmsd.tex Normal file
View File

@ -0,0 +1,21 @@
\documentclass[12pt,article]{article}
\usepackage{indentfirst}
\usepackage{amsmath}
\newcommand{\set}[1]{\ensuremath{\mathbf{#1}}}
\newcommand{\mean}[1]{\ensuremath{\overline{#1}}}
\newcommand{\norm}[1]{\ensuremath{\left|\left|{#1}\right|\right|}}
\begin{document}
\begin{equation*}
\text{RMSD}(\set{u}, \set{v}) = \min_{s, \set{Q}} \sqrt{\frac{1}{N} \sum\limits_{i=1}^{N}
\norm{
s[\vec{u_i} - \mean{\set{u}}]
-
\set{Q} \vec{v_i}
}^2}
\end{equation*}
\end{document}

View File

@ -743,7 +743,7 @@ Self-explanatory. :dd
Self-explanatory. :dd Self-explanatory. :dd
{Cannot (yet) use single precision with MSM (remove -DFFT_SINGLE from Makefile and recompile)} :dt {Cannot (yet) use single precision with MSM (remove -DFFT_SINGLE from Makefile and re-compile)} :dt
Single precision cannot be used with MSM. :dd Single precision cannot be used with MSM. :dd
@ -1092,11 +1092,6 @@ correct. :dd
The specified file cannot be opened. Check that the path and name are The specified file cannot be opened. Check that the path and name are
correct. :dd correct. :dd
{Cannot open fix ave/spatial file %s} :dt
The specified file cannot be opened. Check that the path and name are
correct. :dd
{Cannot open fix ave/time file %s} :dt {Cannot open fix ave/time file %s} :dt
The specified file cannot be opened. Check that the path and name are The specified file cannot be opened. Check that the path and name are
@ -1677,10 +1672,6 @@ provided by an atom map. An atom map does not exist (by default) for
non-molecular problems. Using the atom_modify map command will force non-molecular problems. Using the atom_modify map command will force
an atom map to be created. :dd an atom map to be created. :dd
{Cannot use fix ave/spatial z for 2 dimensional model} :dt
Self-explanatory. :dd
{Cannot use fix bond/break with non-molecular systems} :dt {Cannot use fix bond/break with non-molecular systems} :dt
Only systems with bonds that can be changed can be used. Atom_style Only systems with bonds that can be changed can be used. Atom_style
@ -2425,10 +2416,6 @@ Self-explanatory. :dd
Self-explanatory. :dd Self-explanatory. :dd
{Compute ID for fix ave/spatial does not exist} :dt
Self-explanatory. :dd
{Compute ID for fix ave/time does not exist} :dt {Compute ID for fix ave/time does not exist} :dt
Self-explanatory. :dd Self-explanatory. :dd
@ -4074,10 +4061,6 @@ Self-explanatory. :dd
Self-explanatory. :dd Self-explanatory. :dd
{Fix ID for fix ave/spatial does not exist} :dt
Self-explanatory. :dd
{Fix ID for fix ave/time does not exist} :dt {Fix ID for fix ave/time does not exist} :dt
Self-explanatory. :dd Self-explanatory. :dd
@ -4379,51 +4362,6 @@ same style. :dd
Self-explanatory. :dd Self-explanatory. :dd
{Fix ave/spatial compute does not calculate a per-atom array} :dt
Self-explanatory. :dd
{Fix ave/spatial compute does not calculate a per-atom vector} :dt
A compute used by fix ave/spatial must generate per-atom values. :dd
{Fix ave/spatial compute does not calculate per-atom values} :dt
A compute used by fix ave/spatial must generate per-atom values. :dd
{Fix ave/spatial compute vector is accessed out-of-range} :dt
The index for the vector is out of bounds. :dd
{Fix ave/spatial fix does not calculate a per-atom array} :dt
Self-explanatory. :dd
{Fix ave/spatial fix does not calculate a per-atom vector} :dt
A fix used by fix ave/spatial must generate per-atom values. :dd
{Fix ave/spatial fix does not calculate per-atom values} :dt
A fix used by fix ave/spatial must generate per-atom values. :dd
{Fix ave/spatial fix vector is accessed out-of-range} :dt
The index for the vector is out of bounds. :dd
{Fix ave/spatial for triclinic boxes requires units reduced} :dt
Self-explanatory. :dd
{Fix ave/spatial settings invalid with changing box size} :dt
If the box size changes, only the units reduced option can be
used. :dd
{Fix ave/spatial variable is not atom-style variable} :dt
A variable used by fix ave/spatial must generate per-atom values. :dd
{Fix ave/time cannot set output array intensive/extensive from these inputs} :dt {Fix ave/time cannot set output array intensive/extensive from these inputs} :dt
One of more of the vector inputs has individual elements which are One of more of the vector inputs has individual elements which are
@ -5078,7 +5016,7 @@ Self-explanatory. :dd
Occurs when number of neighbor atoms for an atom increased too much Occurs when number of neighbor atoms for an atom increased too much
during a run. Increase SAFE_ZONE and MIN_CAP in fix_qeq.h and during a run. Increase SAFE_ZONE and MIN_CAP in fix_qeq.h and
recompile. :dd re-compile. :dd
{Fix qeq/point requires atom attribute q} :dt {Fix qeq/point requires atom attribute q} :dt
@ -5092,7 +5030,7 @@ Self-explanatory. :dd
Occurs when number of neighbor atoms for an atom increased too much Occurs when number of neighbor atoms for an atom increased too much
during a run. Increase SAFE_ZONE and MIN_CAP in fix_qeq.h and during a run. Increase SAFE_ZONE and MIN_CAP in fix_qeq.h and
recompile. :dd re-compile. :dd
{Fix qeq/shielded requires atom attribute q} :dt {Fix qeq/shielded requires atom attribute q} :dt
@ -5110,7 +5048,7 @@ Self-explanatory. :dd
Occurs when number of neighbor atoms for an atom increased too much Occurs when number of neighbor atoms for an atom increased too much
during a run. Increase SAFE_ZONE and MIN_CAP in fix_qeq.h and during a run. Increase SAFE_ZONE and MIN_CAP in fix_qeq.h and
recompile. :dd re-compile. :dd
{Fix qeq/slater requires atom attribute q} :dt {Fix qeq/slater requires atom attribute q} :dt
@ -5541,7 +5479,7 @@ 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
Recompile Kokkos with CUDA support to use GPUs. :dd Re-compile Kokkos with CUDA support to use GPUs. :dd
{Ghost velocity forward comm not yet implemented with Kokkos} :dt {Ghost velocity forward comm not yet implemented with Kokkos} :dt

View File

@ -13,7 +13,7 @@ This is an alphabetic list of the WARNING messages LAMMPS prints out
and the reason why. If the explanation here is not sufficient, the and the reason why. If the explanation here is not sufficient, the
documentation for the offending command may help. Warning messages documentation for the offending command may help. Warning messages
also list the source file and line number where the warning was also list the source file and line number where the warning was
generated. For example, a message lile this: generated. For example, a message like this:
WARNING: Bond atom missing in box size check (domain.cpp:187) :pre WARNING: Bond atom missing in box size check (domain.cpp:187) :pre
@ -291,24 +291,6 @@ This may cause accuracy problems. :dd
This may cause accuracy problems. :dd This may cause accuracy problems. :dd
{Fix thermal/conductivity comes before fix ave/spatial} :dt
The order of these 2 fixes in your input script is such that fix
thermal/conductivity comes first. If you are using fix ave/spatial to
measure the temperature profile induced by fix viscosity, then this
may cause a glitch in the profile since you are averaging immediately
after swaps have occurred. Flipping the order of the 2 fixes
typically helps. :dd
{Fix viscosity comes before fix ave/spatial} :dt
The order of these 2 fixes in your input script is such that
fix viscosity comes first. If you are using fix ave/spatial
to measure the velocity profile induced by fix viscosity, then
this may cause a glitch in the profile since you are averaging
immediately after swaps have occurred. Flipping the order
of the 2 fixes typically helps. :dd
{Fixes cannot send data in Kokkos communication, switching to classic communication} :dt {Fixes cannot send data in Kokkos communication, switching to classic communication} :dt
This is current restriction with Kokkos. :dd This is current restriction with Kokkos. :dd

View File

@ -54,6 +54,7 @@ General howto :h3
Howto_replica Howto_replica
Howto_library Howto_library
Howto_couple Howto_couple
Howto_client_server
END_RST --> END_RST -->
@ -64,7 +65,8 @@ END_RST -->
"Run multiple simulations from one input script"_Howto_multiple.html "Run multiple simulations from one input script"_Howto_multiple.html
"Multi-replica simulations"_Howto_replica.html "Multi-replica simulations"_Howto_replica.html
"Library interface to LAMMPS"_Howto_library.html "Library interface to LAMMPS"_Howto_library.html
"Couple LAMMPS to other codes"_Howto_couple.html :all(b) "Couple LAMMPS to other codes"_Howto_couple.html
"Using LAMMPS in client/server mode"_Howto_client_server.html :all(b)
<!-- END_HTML_ONLY --> <!-- END_HTML_ONLY -->

View File

@ -64,11 +64,11 @@ Thermodynamic output, which can be setup via the
"thermo_style"_thermo_style.html command, often includes pressure "thermo_style"_thermo_style.html command, often includes pressure
values. As explained on the doc page for the values. As explained on the doc page for the
"thermo_style"_thermo_style.html command, the default pressure is "thermo_style"_thermo_style.html command, the default pressure is
setup by the thermo command itself. It is NOT the presure associated setup by the thermo command itself. It is NOT the pressure associated
with any barostatting fix you have defined or with any compute you with any barostatting fix you have defined or with any compute you
have defined that calculates a presure. The doc pages for the have defined that calculates a pressure. The doc pages for the
barostatting fixes explain the ID of the pressure compute they create. barostatting fixes explain the ID of the pressure compute they create.
Thus if you want to view these pressurse, you need to specify them Thus if you want to view these pressures, you need to specify them
explicitly via the "thermo_style custom"_thermo_style.html command. explicitly via the "thermo_style custom"_thermo_style.html command.
Or you can use the "thermo_modify"_thermo_modify.html command to Or you can use the "thermo_modify"_thermo_modify.html command to
re-define what pressure compute is used for default thermodynamic re-define what pressure compute is used for default thermodynamic

View File

@ -337,7 +337,7 @@ the sphere that surrounds each vertex. The diameter value can be
different for each body particle. These floating-point values can be different for each body particle. These floating-point values can be
listed on as many lines as you wish; see the listed on as many lines as you wish; see the
"read_data"_read_data.html command for more details. Because the "read_data"_read_data.html command for more details. Because the
maxmimum vertices per face is hard-coded to be 4 maximum number of vertices per face is hard-coded to be 4
(i.e. quadrilaterals), faces with more than 4 vertices need to be (i.e. quadrilaterals), faces with more than 4 vertices need to be
split into triangles or quadrilaterals. For triangular faces, the split into triangles or quadrilaterals. For triangular faces, the
last vertex index should be set to -1. last vertex index should be set to -1.

View File

@ -22,7 +22,7 @@ commands, to calculate various properties of a system:
"fix ave/chunk"_fix_ave_chunk.html "fix ave/chunk"_fix_ave_chunk.html
any of the "compute */chunk"_compute.html commands :ul any of the "compute */chunk"_compute.html commands :ul
Here, each of the 3 kinds of chunk-related commands is briefly Here, each of the 4 kinds of chunk-related commands is briefly
overviewed. Then some examples are given of how to compute different overviewed. Then some examples are given of how to compute different
properties with chunk commands. properties with chunk commands.
@ -83,8 +83,9 @@ chunk.
Compute */chunk commands: :h4 Compute */chunk commands: :h4
Currently the following computes operate on chunks of atoms to produce The following computes operate on chunks of atoms to produce per-chunk
per-chunk values. values. Any compute whose style name ends in "/chunk" is in this
category:
"compute com/chunk"_compute_com_chunk.html "compute com/chunk"_compute_com_chunk.html
"compute gyration/chunk"_compute_gyration_chunk.html "compute gyration/chunk"_compute_gyration_chunk.html
@ -111,8 +112,8 @@ of a center of mass, which requires summing mass*position over the
atoms and then dividing by summed mass. atoms and then dividing by summed mass.
All of these computes produce a global vector or global array as All of these computes produce a global vector or global array as
output, wih one or more values per chunk. They can be used output, wih one or more values per chunk. The output can be used in
in various ways: various ways:
As input to the "fix ave/time"_fix_ave_time.html command, which can As input to the "fix ave/time"_fix_ave_time.html command, which can
write the values to a file and optionally time average them. :ulb,l write the values to a file and optionally time average them. :ulb,l
@ -122,9 +123,27 @@ histogram values across chunks. E.g. a histogram of cluster sizes or
molecule diffusion rates. :l molecule diffusion rates. :l
As input to special functions of "equal-style As input to special functions of "equal-style
variables"_variable.html, like sum() and max(). E.g. to find the variables"_variable.html, like sum() and max() and ave(). E.g. to
largest cluster or fastest diffusing molecule. :l find the largest cluster or fastest diffusing molecule or average
:ule radius-of-gyration of a set of molecules (chunks). :l,ule
Other chunk commands: :h4
"compute chunk/spread/atom"_compute_chunk_spread_atom.html
"compute reduce/chunk"_compute_reduce_chunk.html :ul
The "compute chunk/spread/atom"_compute_chunk_spread_atom.html command
spreads per-chunk values to each atom in the chunk, producing per-atom
values as its output. This can be useful for outputting per-chunk
values to a per-atom "dump file"_dump.html. Or for using an atom's
associated chunk value in an "atom-style variable"_variable.html.
The "compute reduce/chunk"_compute_reduce_chunk.html command reduces a
peratom value across the atoms in each chunk to produce a value per
chunk. When used with the "compute
chunk/spread/atom"_compute_chunk_spread_atom.html command it can
create peratom values that induce a new set of chunks with a second
"compute chunk/atom"_compute_chunk_atom.html command.
Example calculations with chunks :h4 Example calculations with chunks :h4
@ -164,3 +183,13 @@ compute cluster all cluster/atom 1.0
compute cc1 all chunk/atom c_cluster compress yes compute cc1 all chunk/atom c_cluster compress yes
compute size all property/chunk cc1 count compute size all property/chunk cc1 count
fix 1 all ave/histo 100 1 100 0 20 20 c_size mode vector ave running beyond ignore file tmp.histo :pre fix 1 all ave/histo 100 1 100 0 20 20 c_size mode vector ave running beyond ignore file tmp.histo :pre
(6) An example of using a per-chunk value to apply per-atom forces to
compress individual polymer chains (molecules) in a mixture, is
explained on the "compute
chunk/spread/atom"_compute_chunk_spread_atom.html command doc page.
(7) An example of using one set of per-chunk values for molecule
chunks, to create a 2nd set of micelle-scale chunks (clustered
molecules, due to hydrophobicity), is explained on the "compute
chunk/reduce"_compute_reduce_chunk.html command doc page.

View File

@ -0,0 +1,131 @@
"Higher level section"_Howto.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_all.html)
:line
Using LAMMPS in client/server mode :h3
Client/server coupling of two codes is where one code is the "client"
and sends request messages to a "server" code. The server responds to
each request with a reply message. This enables the two codes to work
in tandem to perform a simulation. LAMMPS can act as either a client
or server code.
Some advantages of client/server coupling are that the two codes run
as stand-alone executables; they are not linked together. Thus
neither code needs to have a library interface. This often makes it
easier to run the two codes on different numbers of processors. If a
message protocol (format and content) is defined for a particular kind
of simulation, then in principle any code that implements the
client-side protocol can be used in tandem with any code that
implements the server-side protocol, without the two codes needing to
know anything more specific about each other.
A simple example of client/server coupling is where LAMMPS is the
client code performing MD timestepping. Each timestep it sends a
message to a server quantum code containing current coords of all the
atoms. The quantum code computes energy and forces based on the
coords. It returns them as a message to LAMMPS, which completes the
timestep.
Alternate methods for code coupling with LAMMPS are described on
the "Howto couple"_Howto_couple.html doc page.
LAMMPS support for client/server coupling is in its "MESSAGE
package"_Packages_details.html#PKG-MESSAGE which implements several
commands that enable LAMMPS to act as a client or server, as discussed
below. The MESSAGE package also wraps a client/server library called
CSlib which enables two codes to exchange messages in different ways,
either via files, sockets, or MPI. The CSlib is provided with LAMMPS
in the lib/message dir. The CSlib has its own
"website"_http://cslib.sandia.gov with documentation and test
programs.
NOTE: For client/server coupling to work between LAMMPS and another
code, the other code also has to use the CSlib. This can sometimes be
done without any modifications to the other code by simply wrapping it
with a Python script that exchanges CSlib messages with LAMMPS and
prepares input for or processes output from the other code. The other
code also has to implement a matching protocol for the format and
content of messages that LAMMPS exchanges with it.
These are the commands currently in the MESSAGE package for two
protocols, MD and MC (Monte Carlo). New protocols can easily be
defined and added to this directory, where LAMMPS acts as either the
client or server.
"message"_message.html
"fix client md"_fix_client_md.html = LAMMPS is a client for running MD
"server md"_server_md.html = LAMMPS is a server for computing MD forces
"server mc"_server_mc.html = LAMMPS is a server for computing a Monte Carlo energy :ul
The server doc files give details of the message protocols
for data that is exchanged bewteen the client and server.
These example directories illustrate how to use LAMMPS as either a
client or server code:
examples/message
examples/COUPLE/README
examples/COUPLE/lammps_mc
examples/COUPLE/lammps_vasp :ul
The examples/message dir couples a client instance of LAMMPS to a
server instance of LAMMPS.
The lammps_mc dir shows how to couple LAMMPS as a server to a simple
Monte Carlo client code as the driver.
The lammps_vasp dir shows how to couple LAMMPS as a client code
running MD timestepping to VASP acting as a server providing quantum
DFT forces, thru a Python wrapper script on VASP.
Here is how to launch a client and server code together for any of the
4 modes of message exchange that the "message"_message.html command
and the CSlib support. Here LAMMPS is used as both the client and
server code. Another code could be subsitituted for either.
The examples below show launching both codes from the same window (or
batch script), using the "&" character to launch the first code in the
background. For all modes except {mpi/one}, you could also launch the
codes in separate windows on your desktop machine. It does not
matter whether you launch the client or server first.
In these examples either code can be run on one or more processors.
If running in a non-MPI mode (file or zmq) you can launch a code on a
single processor without using mpirun.
IMPORTANT: If you run in mpi/two mode, you must launch both codes via
mpirun, even if one or both of them runs on a single processor. This
is so that MPI can figure out how to connect both MPI processes
together to exchange MPI messages between them.
For message exchange in {file}, {zmq}, or {mpi/two} modes:
% mpirun -np 1 lmp_mpi -log log.client < in.client &
% mpirun -np 2 lmp_mpi -log log.server < in.server :pre
% mpirun -np 4 lmp_mpi -log log.client < in.client &
% mpirun -np 1 lmp_mpi -log log.server < in.server :pre
% mpirun -np 2 lmp_mpi -log log.client < in.client &
% mpirun -np 4 lmp_mpi -log log.server < in.server :pre
For message exchange in {mpi/one} mode:
Launch both codes in a single mpirun command:
mpirun -np 2 lmp_mpi -mpicolor 0 -in in.message.client -log log.client : -np 4 lmp_mpi -mpicolor 1 -in in.message.server -log log.server :pre
The two -np values determine how many procs the client and the server
run on.
A LAMMPS executable run in this manner must use the -mpicolor color
command-line option as their its option, where color is an integer
label that will be used to distinguish one executable from another in
the multiple executables that the mpirun command launches. In this
example the client was colored with a 0, and the server with a 1.

View File

@ -16,10 +16,12 @@ atoms and pass those forces to LAMMPS. Or a continuum finite element
nodal points, compute a FE solution, and return interpolated forces on nodal points, compute a FE solution, and return interpolated forces on
MD atoms. MD atoms.
LAMMPS can be coupled to other codes in at least 3 ways. Each has LAMMPS can be coupled to other codes in at least 4 ways. Each has
advantages and disadvantages, which you'll have to think about in the advantages and disadvantages, which you'll have to think about in the
context of your application. context of your application.
:line
(1) Define a new "fix"_fix.html command that calls the other code. In (1) Define a new "fix"_fix.html command that calls the other code. In
this scenario, LAMMPS is the driver code. During its timestepping, this scenario, LAMMPS is the driver code. During its timestepping,
the fix is invoked, and can make library calls to the other code, the fix is invoked, and can make library calls to the other code,
@ -32,6 +34,8 @@ LAMMPS.
:link(poems,http://www.rpi.edu/~anderk5/lab) :link(poems,http://www.rpi.edu/~anderk5/lab)
:line
(2) Define a new LAMMPS command that calls the other code. This is (2) Define a new LAMMPS command that calls the other code. This is
conceptually similar to method (1), but in this case LAMMPS and the conceptually similar to method (1), but in this case LAMMPS and the
other code are on a more equal footing. Note that now the other code other code are on a more equal footing. Note that now the other code
@ -52,6 +56,8 @@ command writes and reads.
See the "Modify command"_Modify_command.html doc page for info on how See the "Modify command"_Modify_command.html doc page for info on how
to add a new command to LAMMPS. to add a new command to LAMMPS.
:line
(3) Use LAMMPS as a library called by another code. In this case the (3) Use LAMMPS as a library called by another code. In this case the
other code is the driver and calls LAMMPS as needed. Or a wrapper other code is the driver and calls LAMMPS as needed. Or a wrapper
code could link and call both LAMMPS and another code as libraries. code could link and call both LAMMPS and another code as libraries.
@ -102,3 +108,9 @@ on all the processors. Or it might allocate half the processors to
LAMMPS and half to the other code and run both codes simultaneously LAMMPS and half to the other code and run both codes simultaneously
before syncing them up periodically. Or it might instantiate multiple before syncing them up periodically. Or it might instantiate multiple
instances of LAMMPS to perform different calculations. instances of LAMMPS to perform different calculations.
:line
(4) Couple LAMMPS with another code in a client/server mode. This is
described on the "Howto client/server"_Howto_client_server.html doc
page.

View File

@ -171,16 +171,16 @@ void lammps_create_atoms(void *, int, tagint *, int *, double *, double *,
The gather functions collect peratom info of the requested type (atom The gather functions collect peratom info of the requested type (atom
coords, atom types, forces, etc) from all processors, and returns the coords, atom types, forces, etc) from all processors, and returns the
same vector of values to each callling processor. The scatter same vector of values to each calling processor. The scatter
functions do the inverse. They distribute a vector of peratom values, functions do the inverse. They distribute a vector of peratom values,
passed by all calling processors, to invididual atoms, which may be passed by all calling processors, to individual atoms, which may be
owned by different processos. owned by different processors.
The lammps_gather_atoms() function does this for all N atoms in the The lammps_gather_atoms() function does this for all N atoms in the
system, ordered by atom ID, from 1 to N. The system, ordered by atom ID, from 1 to N. The
lammps_gather_atoms_concat() function does it for all N atoms, but lammps_gather_atoms_concat() function does it for all N atoms, but
simply concatenates the subset of atoms owned by each processor. The simply concatenates the subset of atoms owned by each processor. The
resulting vector is not ordered by atom ID. Atom IDs can be requetsed resulting vector is not ordered by atom ID. Atom IDs can be requested
by the same function if the caller needs to know the ordering. The by the same function if the caller needs to know the ordering. The
lammps_gather_subset() function allows the caller to request values lammps_gather_subset() function allows the caller to request values
for only a subset of atoms (identified by ID). for only a subset of atoms (identified by ID).

View File

@ -24,6 +24,11 @@ by subtracting out the streaming velocity of the shearing atoms. The
velocity profile or other properties of the fluid can be monitored via velocity profile or other properties of the fluid can be monitored via
the "fix ave/chunk"_fix_ave_chunk.html command. the "fix ave/chunk"_fix_ave_chunk.html command.
NOTE: A recent (2017) book by "(Daivis and Todd)"_#Daivis-nemd
discusses use of the SLLOD method and non-equilibrium MD (NEMD)
thermostatting generally, for both simple and complex fluids,
e.g. molecular systems. The latter can be tricky to do correctly.
As discussed in the previous section on non-orthogonal simulation As discussed in the previous section on non-orthogonal simulation
boxes, the amount of tilt or skew that can be applied is limited by boxes, the amount of tilt or skew that can be applied is limited by
LAMMPS for computational efficiency to be 1/2 of the parallel box LAMMPS for computational efficiency to be 1/2 of the parallel box
@ -46,3 +51,9 @@ An alternative method for calculating viscosities is provided via the
NEMD simulations can also be used to measure transport properties of a fluid NEMD simulations can also be used to measure transport properties of a fluid
through a pore or channel. Simulations of steady-state flow can be performed through a pore or channel. Simulations of steady-state flow can be performed
using the "fix flow/gauss"_fix_flow_gauss.html command. using the "fix flow/gauss"_fix_flow_gauss.html command.
:line
:link(Daivis-nemd)
[(Daivis and Todd)] Daivis and Todd, Nonequilibrium Molecular Dyanmics (book),
Cambridge University Press, https://doi.org/10.1017/9781139017848, (2017).

View File

@ -73,7 +73,7 @@ that package into your current Python installation.
cd $LAMMPS_DIR/python cd $LAMMPS_DIR/python
python install.py :pre python install.py :pre
NOTE: Recompiling the shared library requires reinstalling the Python package NOTE: Recompiling the shared library requires re-installing the Python package
Installation inside of a virtualenv :h5 Installation inside of a virtualenv :h5

View File

@ -159,7 +159,7 @@ ellipsoidal particles:
The advantage of these fixes is that those which thermostat the The advantage of these fixes is that those which thermostat the
particles include the rotational degrees of freedom in the temperature particles include the rotational degrees of freedom in the temperature
calculation and thermostatting. The "fix langevin"_fix_langevin calculation and thermostatting. The "fix langevin"_fix_langevin.html
command can also be used with its {omgea} or {angmom} options to command can also be used with its {omgea} or {angmom} options to
thermostat the rotational degrees of freedom for spherical or thermostat the rotational degrees of freedom for spherical or
ellipsoidal particles. Other thermostatting fixes only operate on the ellipsoidal particles. Other thermostatting fixes only operate on the

View File

@ -9,10 +9,10 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
Magnetic spins :h3 Magnetic spins :h3
The magnetic spin simualtions are enabled by the SPIN package, whose The magnetic spin simulations are enabled by the SPIN package, whose
implementation is detailed in "Tranchida"_#Tranchida7. implementation is detailed in "Tranchida"_#Tranchida7.
The model representents the simulation of atomic magnetic spins coupled The model represents the simulation of atomic magnetic spins coupled
to lattice vibrations. The dynamics of those magnetic spins can be used to lattice vibrations. The dynamics of those magnetic spins can be used
to simulate a broad range a phenomena related to magneto-elasticity, or to simulate a broad range a phenomena related to magneto-elasticity, or
or to study the influence of defects on the magnetic properties of or to study the influence of defects on the magnetic properties of
@ -43,7 +43,7 @@ langevin/spin"_fix_langevin_spin.html. It allows to either dissipate
the thermal energy of the Langevin thermostat, or to perform a the thermal energy of the Langevin thermostat, or to perform a
relaxation of the magnetic configuration toward an equilibrium state. relaxation of the magnetic configuration toward an equilibrium state.
All the computed magnetic properties can be outputed by two main All the computed magnetic properties can be output by two main
commands. The first one is "compute spin"_compute_spin.html, that commands. The first one is "compute spin"_compute_spin.html, that
enables to evaluate magnetic averaged quantities, such as the total enables to evaluate magnetic averaged quantities, such as the total
magnetization of the system along x, y, or z, the spin temperature, or magnetization of the system along x, y, or z, the spin temperature, or

View File

@ -43,6 +43,11 @@ nvt/asphere"_fix_nvt_asphere.html thermostat not only translation
velocities but also rotational velocities for spherical and aspherical velocities but also rotational velocities for spherical and aspherical
particles. particles.
NOTE: A recent (2017) book by "(Daivis and Todd)"_#Daivis-thermostat
discusses use of the SLLOD method and non-equilibrium MD (NEMD)
thermostatting generally, for both simple and complex fluids,
e.g. molecular systems. The latter can be tricky to do correctly.
DPD thermostatting alters pairwise interactions in a manner analogous DPD thermostatting alters pairwise interactions in a manner analogous
to the per-particle thermostatting of "fix to the per-particle thermostatting of "fix
langevin"_fix_langevin.html. langevin"_fix_langevin.html.
@ -87,3 +92,9 @@ specify them explicitly via the "thermo_style
custom"_thermo_style.html command. Or you can use the custom"_thermo_style.html command. Or you can use the
"thermo_modify"_thermo_modify.html command to re-define what "thermo_modify"_thermo_modify.html command to re-define what
temperature compute is used for default thermodynamic output. temperature compute is used for default thermodynamic output.
:line
:link(Daivis-thermostat)
[(Daivis and Todd)] Daivis and Todd, Nonequilibrium Molecular Dyanmics (book),
Cambridge University Press, https://doi.org/10.1017/9781139017848, (2017).

View File

@ -37,6 +37,11 @@ used to shear the fluid in between them, again with some kind of
thermostat that modifies only the thermal (non-shearing) components of thermostat that modifies only the thermal (non-shearing) components of
velocity to prevent the fluid from heating up. velocity to prevent the fluid from heating up.
NOTE: A recent (2017) book by "(Daivis and Todd)"_#Daivis-viscosity
discusses use of the SLLOD method and non-equilibrium MD (NEMD)
thermostatting generally, for both simple and complex fluids,
e.g. molecular systems. The latter can be tricky to do correctly.
In both cases, the velocity profile setup in the fluid by this In both cases, the velocity profile setup in the fluid by this
procedure can be monitored by the "fix ave/chunk"_fix_ave_chunk.html procedure can be monitored by the "fix ave/chunk"_fix_ave_chunk.html
command, which determines grad(Vstream) in the equation above. command, which determines grad(Vstream) in the equation above.
@ -131,3 +136,9 @@ mean-square-displacement formulation for self-diffusivity. The
time-integrated momentum fluxes play the role of Cartesian time-integrated momentum fluxes play the role of Cartesian
coordinates, whose mean-square displacement increases linearly coordinates, whose mean-square displacement increases linearly
with time at sufficiently long times. with time at sufficiently long times.
:line
:link(Daivis-viscosity)
[(Daivis and Todd)] Daivis and Todd, Nonequilibrium Molecular Dyanmics (book),
Cambridge University Press, https://doi.org/10.1017/9781139017848, (2017).

View File

@ -9,39 +9,16 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
Download an executable for Linux :h3 Download an executable for Linux :h3
Binaries are available for many different versions of Linux: Binaries are available for different versions of Linux:
"Pre-built binary RPMs for Fedora/RedHat/CentOS/openSUSE"_#rpm
"Pre-built Ubuntu Linux executables"_#ubuntu "Pre-built Ubuntu Linux executables"_#ubuntu
"Pre-built Fedora Linux executables"_#fedora
"Pre-built EPEL Linux executables (RHEL, CentOS)"_#epel
"Pre-built OpenSuse Linux executables"_#opensuse
"Pre-built Gentoo Linux executable"_#gentoo :all(b) "Pre-built Gentoo Linux executable"_#gentoo :all(b)
:line :line
Pre-built binary RPMs for Fedora/RedHat/CentOS/openSUSE :h4,link(rpm)
Pre-built LAMMPS executables for various Linux distributions
can be downloaded as binary RPM files from this site:
"http://rpm.lammps.org"_http://rpm.lammps.org
There are multiple package variants supporting serial, parallel and
Python wrapper versions. The LAMMPS binaries contain all optional
packages included in the source distribution except: GPU, KIM, REAX,
and USER-INTEL.
Installation instructions for the various versions are here:
"http://rpm.lammps.org/install.html"_http://rpm.lammps.org/install.html
The instructions show how to enable the repository in the respective
system's package management system. Installing and updating are then
straightforward and automatic.
Thanks to Axel Kohlmeyer (Temple U, akohlmey at gmail.com) for setting
up this RPM capability.
:line
Pre-built Ubuntu Linux executables :h4,link(ubuntu) Pre-built Ubuntu Linux executables :h4,link(ubuntu)
A pre-built LAMMPS executable suitable for running on the latest A pre-built LAMMPS executable suitable for running on the latest
@ -60,10 +37,10 @@ To install LAMMPS do the following once:
sudo apt-get install lammps-daily :pre sudo apt-get install lammps-daily :pre
This downloads an executable named "lammps-daily" to your box, which This downloads an executable named "lmp_daily" to your box, which
can then be used in the usual way to run input scripts: can then be used in the usual way to run input scripts:
lammps-daily < in.lj :pre lmp_daily -in in.lj :pre
To update LAMMPS to the most current version, do the following: To update LAMMPS to the most current version, do the following:
@ -99,6 +76,80 @@ Ubuntu package capability.
:line :line
Pre-built Fedora Linux executables :h4,link(fedora)
Pre-built LAMMPS packages for stable releases are available
in the Fedora Linux distribution as of version 28. The packages
can be installed via the dnf package manager. There are 3 basic
varieties (lammps = no MPI, lammps-mpich = MPICH MPI library,
lammps-openmpi = OpenMPI MPI library) and for each support for
linking to the C library interface (lammps-devel, lammps-mpich-devel,
lammps-openmpi-devel), the header for compiling programs using
the C library interface (lammps-headers), and the LAMMPS python
module for Python 3. All packages can be installed at the same
time and the name of the LAMMPS executable is {lmp} in all 3 cases.
By default, {lmp} will refer to the serial executable, unless
one of the MPI environment modules is loaded
("module load mpi/mpich-x86_64" or "module load mpi/openmpi-x86_64").
Then the corresponding parallel LAMMPS executable is used.
The same mechanism applies when loading the LAMMPS python module.
To install LAMMPS with OpenMPI and run an input in.lj with 2 CPUs do:
dnf install lammps-openmpi
module load mpi/openmpi-x86_64
mpirun -np 2 lmp -in in.lj :pre
The "dnf install" command is needed only once. In case of a new LAMMPS
stable release, "dnf update" will automatically update to the newer
version as soon at the RPM files are built and uploaded to the download
mirrors. The "module load" command is needed once per (shell) session
or shell terminal instance, unless it is automatically loaded from the
shell profile.
Please use "lmp -help" to see which compilation options, packages,
and styles are included in the binary.
Thanks to Christoph Junghans (LANL) for making LAMMPS available in Fedora.
:line
Pre-built EPEL Linux executable :h4,link(epel)
Pre-built LAMMPS packages for stable releases are available
in the "Extra Packages for Enterprise Linux (EPEL) repository"_https://fedoraproject.org/wiki/EPEL
for use with Red Hat Enterprise Linux (RHEL) or CentOS version 7.x
and compatible Linux distributions. Names of packages, executable,
and content are the same as described above for Fedora Linux.
But RHEL/CentOS 7.x uses the "yum" package manager instead of "dnf"
in Fedora 28.
Please use "lmp -help" to see which compilation options, packages,
and styles are included in the binary.
Thanks to Christoph Junghans (LANL) for making LAMMPS available in EPEL.
:line
Pre-built OpenSuse Linux executable :h4,link(opensuse)
A pre-built LAMMPS package for stable releases is available
in OpenSuse as of Leap 15.0. You can install the package with:
zypper install lammps :pre
This includes support for OpenMPI. The name of the LAMMPS executable
is {lmp}. Thus to run an input in parallel on 2 CPUs you would do:
mpirun -np 2 lmp -in in.lj :pre
Please use "lmp -help" to see which compilation options, packages,
and styles are included in the binary.
Thanks to Christoph Junghans (LANL) for making LAMMPS available in OpenSuse.
:line
Pre-built Gentoo Linux executable :h4,link(gentoo) Pre-built Gentoo Linux executable :h4,link(gentoo)
LAMMPS is part of Gentoo's main package tree and can be installed by LAMMPS is part of Gentoo's main package tree and can be installed by

View File

@ -17,10 +17,11 @@ how to stay current are on the "Install git"_Install_git.html and
If you prefer to download a tarball, as described on the "Install If you prefer to download a tarball, as described on the "Install
git"_Install_tarball.html doc page, you can stay current by git"_Install_tarball.html doc page, you can stay current by
downloading "patch files" when new patch releases are made. A link to downloading "patch files" when new patch releases are made. A link to
a patch file is posted on the "bug and feature page"_bug of the a patch file is posted on the "bug and feature
website, along with a list of changed files and details about what is page"_http://lammps.sandia.gov/bug.html of the LAMMPS website, along
in the new patch release. This page explains how to apply the patch with a list of changed files and details about what is in the new patch
file to your local LAMMPS directory. release. This page explains how to apply the patch file to your local
LAMMPS directory.
NOTE: You should not apply patch files to a local Git or SVN repo of NOTE: You should not apply patch files to a local Git or SVN repo of
LAMMPS, only to an unpacked tarball. Use Git and SVN commands to LAMMPS, only to an unpacked tarball. Use Git and SVN commands to

View File

@ -7,7 +7,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
:line :line
Download source as a tarball :h3 Download source and documentation as a tarball :h3
You can download a current LAMMPS tarball from the "download page"_download You can download a current LAMMPS tarball from the "download page"_download
of the "LAMMPS website"_lws. of the "LAMMPS website"_lws.
@ -22,6 +22,10 @@ few times per year, and undergo more testing before release. Patch
releases occur a couple times per month. The new contents in all releases occur a couple times per month. The new contents in all
releases are listed on the "bug and feature page"_bug of the website. releases are listed on the "bug and feature page"_bug of the website.
Both tarballs include LAMMPS documentation (HTML and PDF files)
corresponding to that version. The download page also has an option
to download the current-version LAMMPS documentation by itself.
Older versions of LAMMPS can also be downloaded from "this Older versions of LAMMPS can also be downloaded from "this
page"_older. page"_older.

View File

@ -17,7 +17,7 @@ variety of interatomic potentials (force fields) and boundary
conditions. It can model 2d or 3d systems with only a few particles conditions. It can model 2d or 3d systems with only a few particles
up to millions or billions. up to millions or billions.
LAMMPS can be built and run on a laptop or destop machine, but is LAMMPS can be built and run on a laptop or desktop machine, but is
designed for parallel computers. It will run on any parallel machine designed for parallel computers. It will run on any parallel machine
that supports the "MPI"_mpi message-passing library. This includes that supports the "MPI"_mpi message-passing library. This includes
shared-memory boxes and distributed-memory clusters and shared-memory boxes and distributed-memory clusters and
@ -45,7 +45,7 @@ nature; some long-range models are included as well.
LAMMPS uses neighbor lists to keep track of nearby particles. The LAMMPS uses neighbor lists to keep track of nearby particles. The
lists are optimized for systems with particles that are repulsive at lists are optimized for systems with particles that are repulsive at
short distances, so that the local density of particles never becomes short distances, so that the local density of particles never becomes
too large. This is in contrast to methods used for modeling plasmas too large. This is in contrast to methods used for modeling plasma
or gravitational bodies (e.g. galaxy formation). or gravitational bodies (e.g. galaxy formation).
On parallel machines, LAMMPS uses spatial-decomposition techniques to On parallel machines, LAMMPS uses spatial-decomposition techniques to

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 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="16 Aug 2018 version"> <META NAME="docnumber" CONTENT="10 Oct 2018 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
16 Aug 2018 version :c,h2 10 Oct 2018 version :c,h2
"What is a LAMMPS version?"_Manual_version.html "What is a LAMMPS version?"_Manual_version.html

View File

@ -10,15 +10,16 @@ Section"_Manual.html :c
Building the LAMMPS manual :h2 Building the LAMMPS manual :h2
Depending on how you obtained LAMMPS, the doc directory has Depending on how you obtained LAMMPS, the doc directory has 2 or 3
2 or 3 sub-directories and optionally 2 PDF files and an ePUB file: sub-directories and optionally 2 PDF files and 2 e-book format files:
src # content files for LAMMPS documentation src # content files for LAMMPS documentation
html # HTML version of the LAMMPS manual (see html/Manual.html) html # HTML version of the LAMMPS manual (see html/Manual.html)
tools # tools and settings for building the documentation tools # tools and settings for building the documentation
Manual.pdf # large PDF version of entire manual Manual.pdf # large PDF version of entire manual
Developer.pdf # small PDF with info about how LAMMPS is structured Developer.pdf # small PDF with info about how LAMMPS is structured
LAMMPS.epub # Manual in ePUB format :pre LAMMPS.epub # Manual in ePUB e-book format
LAMMPS.mobi # Manual in MOBI e-book format :pre
If you downloaded LAMMPS as a tarball from the web site, all these If you downloaded LAMMPS as a tarball from the web site, all these
directories and files should be included. directories and files should be included.
@ -40,7 +41,7 @@ HTML files already exist. This requires various tools including
Sphinx, which the build process will attempt to download and install Sphinx, which the build process will attempt to download and install
on your system, if not already available. See more details below. on your system, if not already available. See more details below.
(c) You can genererate an older, simpler, less-fancy style of HTML (c) You can generate an older, simpler, less-fancy style of HTML
documentation by typing "make old". This will create an "old" documentation by typing "make old". This will create an "old"
directory. This can be useful if (b) does not work on your box for directory. This can be useful if (b) does not work on your box for
some reason, or you want to quickly view the HTML version of a doc some reason, or you want to quickly view the HTML version of a doc
@ -61,6 +62,7 @@ make old # generate old-style HTML pages in old dir via txt2html
make fetch # fetch HTML doc pages and 2 PDF files from web site make fetch # fetch HTML doc pages and 2 PDF files from web site
# as a tarball and unpack into html dir and 2 PDFs # as a tarball and unpack into html dir and 2 PDFs
make epub # generate LAMMPS.epub in ePUB format using Sphinx make epub # generate LAMMPS.epub in ePUB format using Sphinx
make mobi # generate LAMMPS.mobi in MOBI format using ebook-convert
make clean # remove intermediate RST files created by HTML build make clean # remove intermediate RST files created by HTML build
make clean-all # remove entire build folder and any cached data :pre make clean-all # remove entire build folder and any cached data :pre
@ -68,7 +70,7 @@ make clean-all # remove entire build folder and any cached data :pre
Installing prerequisites for HTML build :h3 Installing prerequisites for HTML build :h3
To run the HTML documention build toolchain, Python 3 and virtualenv To run the HTML documentation build toolchain, Python 3 and virtualenv
have to be installed. Here are instructions for common setups: have to be installed. Here are instructions for common setups:
Ubuntu :h4 Ubuntu :h4
@ -115,10 +117,8 @@ ePUB :h4
Same as for HTML. This uses the same tools and configuration Same as for HTML. This uses the same tools and configuration
files as the HTML tree. files as the HTML tree.
For converting the generated ePUB file to a mobi format file For converting the generated ePUB file to a MOBI format file
(for e-book readers like Kindle, that cannot read ePUB), you (for e-book readers like Kindle, that cannot read ePUB), you
also need to have the 'ebook-convert' tool from the "calibre" also need to have the 'ebook-convert' tool from the "calibre"
software installed. "http://calibre-ebook.com/"_http://calibre-ebook.com/ software installed. "http://calibre-ebook.com/"_http://calibre-ebook.com/
You first create the ePUB file with 'make epub' and then do: You first create the ePUB file and then convert it with 'make mobi'
ebook-convert LAMMPS.epub LAMMPS.mobi :pre

View File

@ -10,7 +10,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
Overview :h3 Overview :h3
The best way to add a new feature to LAMMPS is to find a similar The best way to add a new feature to LAMMPS is to find a similar
featureand look at the corresponding source and header files to figure feature and look at the corresponding source and header files to figure
out what it does. You will need some knowledge of C++ to be able to out what it does. You will need some knowledge of C++ to be able to
understand the hi-level structure of LAMMPS and its class understand the hi-level structure of LAMMPS and its class
organization, but functions (class methods) that do actual organization, but functions (class methods) that do actual

View File

@ -46,6 +46,7 @@ as contained in the file name.
"MANYBODY"_#PKG-MANYBODY, "MANYBODY"_#PKG-MANYBODY,
"MC"_#PKG-MC, "MC"_#PKG-MC,
"MEAM"_#PKG-MEAM, "MEAM"_#PKG-MEAM,
"MESSAGE"_#PKG-MESSAGE,
"MISC"_#PKG-MISC, "MISC"_#PKG-MISC,
"MOLECULE"_#PKG-MOLECULE, "MOLECULE"_#PKG-MOLECULE,
"MPIIO"_#PKG-MPIIO, "MPIIO"_#PKG-MPIIO,
@ -88,10 +89,12 @@ as contained in the file name.
"USER-NETCDF"_#PKG-USER-NETCDF, "USER-NETCDF"_#PKG-USER-NETCDF,
"USER-OMP"_#PKG-USER-OMP, "USER-OMP"_#PKG-USER-OMP,
"USER-PHONON"_#PKG-USER-PHONON, "USER-PHONON"_#PKG-USER-PHONON,
"USER-PTM"_#PKG-USER-PTM,
"USER-QMMM"_#PKG-USER-QMMM, "USER-QMMM"_#PKG-USER-QMMM,
"USER-QTB"_#PKG-USER-QTB, "USER-QTB"_#PKG-USER-QTB,
"USER-QUIP"_#PKG-USER-QUIP, "USER-QUIP"_#PKG-USER-QUIP,
"USER-REAXC"_#PKG-USER-REAXC, "USER-REAXC"_#PKG-USER-REAXC,
"USER-SCAFACOS"_#PKG-USER-SCAFACOS,
"USER-SMD"_#PKG-USER-SMD, "USER-SMD"_#PKG-USER-SMD,
"USER-SMTBQ"_#PKG-USER-SMTBQ, "USER-SMTBQ"_#PKG-USER-SMTBQ,
"USER-SPH"_#PKG-USER-SPH, "USER-SPH"_#PKG-USER-SPH,
@ -297,7 +300,7 @@ lib/gpu/README
"Section 2.6 -sf gpu"_Run_options.html "Section 2.6 -sf gpu"_Run_options.html
"Section 2.6 -pk gpu"_Run_options.html "Section 2.6 -pk gpu"_Run_options.html
"package gpu"_package.html "package gpu"_package.html
"Commands all"_Commands_all.html pages (pair,kspace) for styles followed by (g) "Commands all"_lc pages (pair,kspace) for styles followed by (g)
"Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
:line :line
@ -412,7 +415,7 @@ lib/kokkos/README
"Section 2.6 -sf kk"_Run_options.html "Section 2.6 -sf kk"_Run_options.html
"Section 2.6 -pk kokkos"_Run_options.html "Section 2.6 -pk kokkos"_Run_options.html
"package kokkos"_package.html "package kokkos"_package.html
"Commands all"_Commands_all.html pages (fix,compute,pair,etc) for styles followed by (k) "Commands all"_lc pages (fix,compute,pair,etc) for styles followed by (k)
"Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
:line :line
@ -549,10 +552,6 @@ This package has "specific installation
instructions"_Build_extras.html#gpu on the "Build instructions"_Build_extras.html#gpu on the "Build
extras"_Build_extras.html doc page. extras"_Build_extras.html doc page.
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.
[Supporting info:] [Supporting info:]
src/MEAM: filenames -> commands src/MEAM: filenames -> commands
@ -563,6 +562,31 @@ examples/meam :ul
:line :line
MESSAGE package :link(PKG-MESSAGE),h4
[Contents:]
Commands to use LAMMPS as either a client or server and couple it to
another application.
[Install:]
This package has "specific installation
instructions"_Build_extras.html#message on the "Build
extras"_Build_extras.html doc page.
[Supporting info:]
src/MESSAGE: filenames -> commands
lib/message/README
"message"_message.html
"fix client/md"_fix_client_md.html
"server md"_server_md.html
"server mc"_server_mc.html
examples/message :ul
:line
MISC package :link(PKG-MISC),h4 MISC package :link(PKG-MISC),h4
[Contents:] [Contents:]
@ -851,7 +875,7 @@ multi-replica simulations in LAMMPS. Methods in the package include
nudged elastic band (NEB), parallel replica dynamics (PRD), nudged elastic band (NEB), parallel replica dynamics (PRD),
temperature accelerated dynamics (TAD), parallel tempering, and a temperature accelerated dynamics (TAD), parallel tempering, and a
verlet/split algorithm for performing long-range Coulombics on one set verlet/split algorithm for performing long-range Coulombics on one set
of processors, and the remainder of the force field calcalation on of processors, and the remainder of the force field calculation on
another set. another set.
[Supporting info:] [Supporting info:]
@ -874,7 +898,7 @@ RIGID package :link(PKG-RIGID),h4
[Contents:] [Contents:]
Fixes which enforce rigid constraints on collections of atoms or Fixes which enforce rigid constraints on collections of atoms or
particles. This includes SHAKE and RATTLE, as well as varous particles. This includes SHAKE and RATTLE, as well as various
rigid-body integrators for a few large bodies or many small bodies. rigid-body integrators for a few large bodies or many small bodies.
Also several computes which calculate properties of rigid bodies. Also several computes which calculate properties of rigid bodies.
@ -1370,7 +1394,7 @@ which have styles optimized for CPUs and KNLs.
You need to have an Intel compiler, version 14 or higher to take full You need to have an Intel compiler, version 14 or higher to take full
advantage of this package. While compilation with GNU compilers is advantage of this package. While compilation with GNU compilers is
supported, performance will be suboptimal. supported, performance will be sub-optimal.
NOTE: the USER-INTEL package contains styles that require using the NOTE: the USER-INTEL package contains styles that require using the
-restrict flag, when compiling with Intel compilers. -restrict flag, when compiling with Intel compilers.
@ -1392,7 +1416,7 @@ src/USER-INTEL/README
"Section 2.6 -sf intel"_Run_options.html "Section 2.6 -sf intel"_Run_options.html
"Section 2.6 -pk intel"_Run_options.html "Section 2.6 -pk intel"_Run_options.html
"package intel"_package.html "package intel"_package.html
"Commands all"_Commands_all.html pages (fix,compute,pair,etc) for styles followed by (i) "Commands all"_lc pages (fix,compute,pair,etc) for styles followed by (i)
src/USER-INTEL/TEST src/USER-INTEL/TEST
"Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
@ -1582,8 +1606,6 @@ molecular visualization and analysis program, to enable LAMMPS to dump
snapshots in formats compatible with various molecular simulation snapshots in formats compatible with various molecular simulation
tools. tools.
:link(vmd_home,http://www.ks.uiuc.edu/Research/vmd)
To use this package you must have the desired VMD plugins available on To use this package you must have the desired VMD plugins available on
your system. your system.
@ -1593,7 +1615,7 @@ plugin via the "dump molfile"_dump_molfile.html command. Plugins can
be obtained from a VMD installation which has to match the platform be obtained from a VMD installation which has to match the platform
that you are using to compile LAMMPS for. By adding plugins to VMD, that you are using to compile LAMMPS for. By adding plugins to VMD,
support for new file formats can be added to LAMMPS (or VMD or other support for new file formats can be added to LAMMPS (or VMD or other
programs that use them) without having to recompile the application programs that use them) without having to re-compile the application
itself. More information about the VMD molfile plugins can be found itself. More information about the VMD molfile plugins can be found
at at
"http://www.ks.uiuc.edu/Research/vmd/plugins/molfile"_http://www.ks.uiuc.edu/Research/vmd/plugins/molfile. "http://www.ks.uiuc.edu/Research/vmd/plugins/molfile"_http://www.ks.uiuc.edu/Research/vmd/plugins/molfile.
@ -1635,6 +1657,7 @@ tools:
"AtomEye"_atomeye (the libAtoms version of AtomEye contains a NetCDF reader not present in the standard distribution) :ul "AtomEye"_atomeye (the libAtoms version of AtomEye contains a NetCDF reader not present in the standard distribution) :ul
:link(ovito,http://www.ovito.org) :link(ovito,http://www.ovito.org)
:link(vmd_home,https://www.ks.uiuc.edu/Research/vmd/)
:link(atomeye,http://www.libatoms.org) :link(atomeye,http://www.libatoms.org)
[Author:] Lars Pastewka (Karlsruhe Institute of Technology). [Author:] Lars Pastewka (Karlsruhe Institute of Technology).
@ -1698,7 +1721,7 @@ src/USER-OMP/README
"Section 2.6 -sf omp"_Run_options.html "Section 2.6 -sf omp"_Run_options.html
"Section 2.6 -pk omp"_Run_options.html "Section 2.6 -pk omp"_Run_options.html
"package omp"_package.html "package omp"_package.html
"Commands all"_Commands_all.html pages (fix,compute,pair,etc) for styles followed by (o) "Commands all"_lc pages (fix,compute,pair,etc) for styles followed by (o)
"Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul "Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
:line :line
@ -1722,6 +1745,24 @@ examples/USER/phonon :ul
:line :line
USER-PTM package :link(PKG-USER-PTM),h4
[Contents:]
A "compute ptm/atom"_compute_ptm_atom.html command that calculates
local structure characterization using the Polyhedral Template
Matching methodology.
[Author:] Peter Mahler Larsen (MIT).
[Supporting info:]
src/USER-PTM: filename starting with ptm_ -> supporting code, other filenames -> commands
src/USER-PTM/LICENSE
"compute ptm/atom"_compute_ptm_atom.html :ul
:line
USER-QMMM package :link(PKG-USER-QMMM),h4 USER-QMMM package :link(PKG-USER-QMMM),h4
[Contents:] [Contents:]
@ -1839,6 +1880,41 @@ examples/reax :ul
:line :line
USER-SCAFACOS package :link(PKG-USER-SCAFACOS),h4
[Contents:]
A KSpace style which wraps the "ScaFaCoS Coulomb solver
library"_http://www.scafacos.de to compute long-range Coulombic
interactions.
To use this package you must have the ScaFaCoS library available on
your system.
[Author:] Rene Halver (JSC) wrote the scafacos LAMMPS command.
ScaFaCoS itself was developed by a consortium of German research
facilities with a BMBF (German Ministry of Science and Education)
funded project in 2009-2012. Participants of the consortium were the
Universities of Bonn, Chemnitz, Stuttgart, and Wuppertal as well as
the Forschungszentrum Juelich.
[Install:]
This package has "specific installation
instructions"_Build_extras.html#user-scafacos on the "Build
extras"_Build_extras.html doc page.
[Supporting info:]
src/USER-SCAFACOS: filenames -> commands
src/USER-SCAFACOS/README
"kspace_style scafacos"_kspace_style.html
"kspace_modify"_kspace_modify.html
examples/USER/scafacos :ul
:line
USER-SMD package :link(PKG-USER-SMD),h4 USER-SMD package :link(PKG-USER-SMD),h4
[Contents:] [Contents:]
@ -1998,3 +2074,5 @@ src/USER-VTK: filenames -> commands
src/USER-VTK/README src/USER-VTK/README
lib/vtk/README lib/vtk/README
"dump vtk"_dump_vtk.html :ul "dump vtk"_dump_vtk.html :ul

View File

@ -47,7 +47,8 @@ Package, Description, Doc page, Example, Library
"MANYBODY"_Packages_details.html#PKG-MANYBODY, many-body potentials, "pair_style tersoff"_pair_tersoff.html, shear, no "MANYBODY"_Packages_details.html#PKG-MANYBODY, many-body potentials, "pair_style tersoff"_pair_tersoff.html, shear, no
"MC"_Packages_details.html#PKG-MC, Monte Carlo options, "fix gcmc"_fix_gcmc.html, n/a, no "MC"_Packages_details.html#PKG-MC, Monte Carlo options, "fix gcmc"_fix_gcmc.html, n/a, no
"MEAM"_Packages_details.html#PKG-MEAM, modified EAM potential, "pair_style meam"_pair_meam.html, meam, int "MEAM"_Packages_details.html#PKG-MEAM, modified EAM potential, "pair_style meam"_pair_meam.html, meam, int
"MISC"_Packages_details.html#PKG-MISC, miscellanous single-file commands, n/a, no, no "MESSAGE"_Packages_details.html#PKG-MESSAGE, client/server messaging, "message"_message.html, message, int
"MISC"_Packages_details.html#PKG-MISC, miscellaneous single-file commands, n/a, no, no
"MOLECULE"_Packages_details.html#PKG-MOLECULE, molecular system force fields, "Howto bioFF"_Howto_bioFF.html, peptide, no "MOLECULE"_Packages_details.html#PKG-MOLECULE, molecular system force fields, "Howto bioFF"_Howto_bioFF.html, peptide, no
"MPIIO"_Packages_details.html#PKG-MPIIO, MPI parallel I/O dump and restart, "dump"_dump.html, n/a, no "MPIIO"_Packages_details.html#PKG-MPIIO, MPI parallel I/O dump and restart, "dump"_dump.html, n/a, no
"MSCG"_Packages_details.html#PKG-MSCG, multi-scale coarse-graining wrapper, "fix mscg"_fix_mscg.html, mscg, ext "MSCG"_Packages_details.html#PKG-MSCG, multi-scale coarse-graining wrapper, "fix mscg"_fix_mscg.html, mscg, ext

View File

@ -58,14 +58,16 @@ Package, Description, Doc page, Example, Library
"USER-MGPT"_Packages_details.html#PKG-USER-MGPT, fast MGPT multi-ion potentials, "pair_style mgpt"_pair_mgpt.html, USER/mgpt, no "USER-MGPT"_Packages_details.html#PKG-USER-MGPT, fast MGPT multi-ion potentials, "pair_style mgpt"_pair_mgpt.html, USER/mgpt, no
"USER-MISC"_Packages_details.html#PKG-USER-MISC, single-file contributions, USER-MISC/README, USER/misc, no "USER-MISC"_Packages_details.html#PKG-USER-MISC, single-file contributions, USER-MISC/README, USER/misc, no
"USER-MOFFF"_Packages_details.html#PKG-USER-MOFFF, styles for "MOF-FF"_MOFplus force field, "pair_style buck6d/coul/gauss"_pair_buck6d_coul_gauss.html, USER/mofff, no "USER-MOFFF"_Packages_details.html#PKG-USER-MOFFF, styles for "MOF-FF"_MOFplus force field, "pair_style buck6d/coul/gauss"_pair_buck6d_coul_gauss.html, USER/mofff, no
"USER-MOLFILE"_Packages_details.html#PKG-USER-MOLFILE, "VMD"_vmd_home molfile plug-ins,"dump molfile"_dump_molfile.html, n/a, ext "USER-MOLFILE"_Packages_details.html#PKG-USER-MOLFILE, "VMD"_https://www.ks.uiuc.edu/Research/vmd/ molfile plug-ins,"dump molfile"_dump_molfile.html, n/a, ext
"USER-NETCDF"_Packages_details.html#PKG-USER-NETCDF, dump output via NetCDF,"dump netcdf"_dump_netcdf.html, n/a, ext "USER-NETCDF"_Packages_details.html#PKG-USER-NETCDF, dump output via NetCDF,"dump netcdf"_dump_netcdf.html, n/a, ext
"USER-OMP"_Packages_details.html#PKG-USER-OMP, OpenMP-enabled styles,"Speed omp"_Speed_omp.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, no "USER-OMP"_Packages_details.html#PKG-USER-OMP, OpenMP-enabled styles,"Speed omp"_Speed_omp.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, no
"USER-PHONON"_Packages_details.html#PKG-USER-PHONON, phonon dynamical matrix,"fix phonon"_fix_phonon.html, USER/phonon, no "USER-PHONON"_Packages_details.html#PKG-USER-PHONON, phonon dynamical matrix,"fix phonon"_fix_phonon.html, USER/phonon, no
"USER-PTM"_Packages_details.html#PKG-USER-PTM, Polyhedral Template Matching,"compute ptm/atom"_compute_ptm_atom.html, n/a, no
"USER-QMMM"_Packages_details.html#PKG-USER-QMMM, QM/MM coupling,"fix qmmm"_fix_qmmm.html, USER/qmmm, ext "USER-QMMM"_Packages_details.html#PKG-USER-QMMM, QM/MM coupling,"fix qmmm"_fix_qmmm.html, USER/qmmm, ext
"USER-QTB"_Packages_details.html#PKG-USER-QTB, quantum nuclear effects,"fix qtb"_fix_qtb.html "fix qbmsst"_fix_qbmsst.html, qtb, no "USER-QTB"_Packages_details.html#PKG-USER-QTB, quantum nuclear effects,"fix qtb"_fix_qtb.html "fix qbmsst"_fix_qbmsst.html, qtb, no
"USER-QUIP"_Packages_details.html#PKG-USER-QUIP, QUIP/libatoms interface,"pair_style quip"_pair_quip.html, USER/quip, ext "USER-QUIP"_Packages_details.html#PKG-USER-QUIP, QUIP/libatoms interface,"pair_style quip"_pair_quip.html, USER/quip, ext
"USER-REAXC"_Packages_details.html#PKG-USER-REAXC, ReaxFF potential (C/C++) ,"pair_style reaxc"_pair_reaxc.html, reax, no "USER-REAXC"_Packages_details.html#PKG-USER-REAXC, ReaxFF potential (C/C++) ,"pair_style reaxc"_pair_reaxc.html, reax, no
"USER-SCAFACOS"_Packages_details.html#PKG-USER-SCAFACOS, wrapper on ScaFaCoS solver,"kspace_style scafacos"_kspace_style.html, USER/scafacos, ext
"USER-SMD"_Packages_details.html#PKG-USER-SMD, smoothed Mach dynamics,"SMD User Guide"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, ext "USER-SMD"_Packages_details.html#PKG-USER-SMD, smoothed Mach dynamics,"SMD User Guide"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, ext
"USER-SMTBQ"_Packages_details.html#PKG-USER-SMTBQ, second moment tight binding QEq potential,"pair_style smtbq"_pair_smtbq.html, USER/smtbq, no "USER-SMTBQ"_Packages_details.html#PKG-USER-SMTBQ, second moment tight binding QEq potential,"pair_style smtbq"_pair_smtbq.html, USER/smtbq, no
"USER-SPH"_Packages_details.html#PKG-USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, no "USER-SPH"_Packages_details.html#PKG-USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, no

View File

@ -59,9 +59,9 @@ and callbacks to LAMMPS.
The "fix python/invoke"_fix_python_invoke.html command can execute The "fix python/invoke"_fix_python_invoke.html command can execute
Python code at selected timesteps during a simulation run. Python code at selected timesteps during a simulation run.
The "pair_style python"_pair_python command allows you to define The "pair_style python"_pair_python.html command allows you to define
pairwise potentials as python code which encodes a single pairwise pairwise potentials as python code which encodes a single pairwise
interaction. This is useful for rapid-developement and debugging of a interaction. This is useful for rapid development and debugging of a
new potential. new potential.
To use any of these commands, you only need to build LAMMPS with the To use any of these commands, you only need to build LAMMPS with the

View File

@ -62,11 +62,11 @@ library interface provided in src/library.h and src/library.h. That
interface is exposed to Python either when calling LAMMPS from Python interface is exposed to Python either when calling LAMMPS from Python
or when calling Python from a LAMMPS input script and then calling or when calling Python from a LAMMPS input script and then calling
back to LAMMPS from Python code. The library interface is designed to back to LAMMPS from Python code. The library interface is designed to
be easy to add funcionality to. Thus the Python interface to LAMMPS be easy to add functionality to. Thus the Python interface to LAMMPS
is also easy to extend as well. is also easy to extend as well.
If you create interesting Python scripts that run LAMMPS or If you create interesting Python scripts that run LAMMPS or
interesting Python functions that can be called from a LAMMPS input interesting Python functions that can be called from a LAMMPS input
script, that you think would be genearlly useful, please post them as script, that you think would be generally useful, please post them as
a pull request to our "GitHub site"_https://github.com/lammps/lammps, a pull request to our "GitHub site"_https://github.com/lammps/lammps,
and they can be added to the LAMMPS distribution or webpage. and they can be added to the LAMMPS distribution or webpage.

View File

@ -186,20 +186,20 @@ 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
simulation, as an int. simulation, as an int.
The set_variable() methosd sets an existing string-style variable to a The set_variable() method sets an existing string-style variable to a
new string value, so that subsequent LAMMPS commands can access the new string value, so that subsequent LAMMPS commands can access the
variable. variable.
The reset_box() emthods resets the size and shape of the simulation The reset_box() method resets the size and shape of the simulation
box, e.g. as part of restoring a previously extracted and saved state box, e.g. as part of restoring a previously extracted and saved state
of a simulation. of a simulation.
The gather methods collect peratom info of the requested type (atom The gather methods collect peratom info of the requested type (atom
coords, atom types, forces, etc) from all processors, and returns the coords, atom types, forces, etc) from all processors, and returns the
same vector of values to each callling processor. The scatter same vector of values to each calling processor. The scatter
functions do the inverse. They distribute a vector of peratom values, functions do the inverse. They distribute a vector of peratom values,
passed by all calling processors, to invididual atoms, which may be passed by all calling processors, to individual atoms, which may be
owned by different processos. owned by different processors.
Note that the data returned by the gather methods, Note that the data returned by the gather methods,
e.g. gather_atoms("x"), is different from the data structure returned e.g. gather_atoms("x"), is different from the data structure returned

View File

@ -75,7 +75,7 @@ setenv OMP_NUM_THREADS 2 # csh or tcsh :pre
This can also be done via the "package"_package.html command or via This can also be done via the "package"_package.html command or via
the "-pk command-line switch"_Run_options.html which invokes the the "-pk command-line switch"_Run_options.html which invokes the
package command. See the "package"_package.html command or package command. See the "package"_package.html command or
"Speed"_Speed.html doc pages for more details about which accerlarator "Speed"_Speed.html doc pages for more details about which accelerator
packages and which commands support multi-threading. packages and which commands support multi-threading.
:line :line

View File

@ -18,6 +18,7 @@ letter abbreviation can be used:
"-i or -in"_#file "-i or -in"_#file
"-k or -kokkos"_#run-kokkos "-k or -kokkos"_#run-kokkos
"-l or -log"_#log "-l or -log"_#log
"-m or -mpicolor"_#mpicolor
"-nc or -nocite"_#nocite "-nc or -nocite"_#nocite
"-pk or -package"_#package "-pk or -package"_#package
"-p or -partition"_#partition "-p or -partition"_#partition
@ -175,6 +176,30 @@ Option -plog will override the name of the partition log files file.N.
:line :line
[-mpicolor] color :link(mpicolor)
If used, this must be the first command-line argument after the LAMMPS
executable name. It is only used when LAMMPS is launched by an mpirun
command which also launches another executable(s) at the same time.
(The other executable could be LAMMPS as well.) The color is an
integer value which should be different for each executable (another
application may set this value in a different way). LAMMPS and the
other executable(s) perform an MPI_Comm_split() with their own colors
to shrink the MPI_COMM_WORLD communication to be the subset of
processors they are actually running on.
Currently, this is only used in LAMMPS to perform client/server
messaging with another application. LAMMPS can act as either a client
or server (or both). More details are given on the "Howto
client/server"_Howto_client_server.html doc page.
Specifically, this refers to the "mpi/one" mode of messaging provided
by the "message"_message.html command and the CSlib library LAMMPS
links with from the lib/message directory. See the
"message"_message.html command for more details.
:line
[-nocite] :link(nocite) [-nocite] :link(nocite)
Disable writing the log.cite file which is normally written to list Disable writing the log.cite file which is normally written to list

View File

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

View File

@ -11,7 +11,7 @@ Benchmarks :h3
Current LAMMPS performance is discussed on the "Benchmarks Current LAMMPS performance is discussed on the "Benchmarks
page"_http://lammps.sandia.gov/bench.html of the "LAMMPS website"_lws page"_http://lammps.sandia.gov/bench.html of the "LAMMPS website"_lws
where timings and parallel efficiencies are listed. The page has where timings and parallel efficiency are listed. The page has
several sections, which are briefly described below: several sections, which are briefly described below:
CPU performance on 5 standard problems, strong and weak scaling CPU performance on 5 standard problems, strong and weak scaling
@ -77,8 +77,8 @@ style, force field, cutoff, etc) can then be estimated.
Performance on a parallel machine can also be predicted from one-core Performance on a parallel machine can also be predicted from one-core
or one-node timings if the parallel efficiency can be estimated. The or one-node timings if the parallel efficiency can be estimated. The
communication bandwidth and latency of a particular parallel machine communication bandwidth and latency of a particular parallel machine
affects the efficiency. On most machines LAMMPS will give parallel affects the efficiency. On most machines LAMMPS will give a parallel
efficiencies on these benchmarks above 50% so long as the number of efficiency on these benchmarks above 50% so long as the number of
atoms/core is a few 100 or greater, and closer to 100% for large atoms/core is a few 100 or greater, and closer to 100% for large
numbers of atoms/core. This is for all-MPI mode with one MPI task per numbers of atoms/core. This is for all-MPI mode with one MPI task per
core. For nodes with accelerator options or hardware (OpenMP, GPU, core. For nodes with accelerator options or hardware (OpenMP, GPU,

View File

@ -9,17 +9,17 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
GPU package :h3 GPU package :h3
The GPU package was developed by Mike Brown at ORNL and his The GPU package was developed by Mike Brown while at SNL and ORNL
collaborators, particularly Trung Nguyen (ORNL). It provides GPU and his collaborators, particularly Trung Nguyen (now at Northwestern).
versions of many pair styles, including the 3-body Stillinger-Weber It provides GPU versions of many pair styles and for parts of the
pair style, and for "kspace_style pppm"_kspace_style.html for "kspace_style pppm"_kspace_style.html for long-range Coulombics.
long-range Coulombics. It has the following general features: It has the following general features:
It is designed to exploit common GPU hardware configurations where one It is designed to exploit common GPU hardware configurations where one
or more GPUs are coupled to many cores of one or more multi-core CPUs, or more GPUs are coupled to many cores of one or more multi-core CPUs,
e.g. within a node of a parallel machine. :ulb,l e.g. within a node of a parallel machine. :ulb,l
Atom-based data (e.g. coordinates, forces) moves back-and-forth Atom-based data (e.g. coordinates, forces) are moved back-and-forth
between the CPU(s) and GPU every timestep. :l between the CPU(s) and GPU every timestep. :l
Neighbor lists can be built on the CPU or on the GPU :l Neighbor lists can be built on the CPU or on the GPU :l
@ -28,8 +28,8 @@ The charge assignment and force interpolation portions of PPPM can be
run on the GPU. The FFT portion, which requires MPI communication run on the GPU. The FFT portion, which requires MPI communication
between processors, runs on the CPU. :l between processors, runs on the CPU. :l
Asynchronous force computations can be performed simultaneously on the Force computations of different style (pair vs. bond/angle/dihedral/improper)
CPU(s) and GPU. :l can be performed concurrently on the GPU and CPU(s), respectively. :l
It allows for GPU computations to be performed in single or double It allows for GPU computations to be performed in single or double
precision, or in mixed-mode precision, where pairwise forces are precision, or in mixed-mode precision, where pairwise forces are
@ -39,21 +39,32 @@ force vectors. :l
LAMMPS-specific code is in the GPU package. It makes calls to a LAMMPS-specific code is in the GPU package. It makes calls to a
generic GPU library in the lib/gpu directory. This library provides generic GPU library in the lib/gpu directory. This library provides
NVIDIA support as well as more general OpenCL support, so that the NVIDIA support as well as more general OpenCL support, so that the
same functionality can eventually be supported on a variety of GPU same functionality is supported on a variety of hardware. :l
hardware. :l
:ule :ule
[Required hardware/software:] [Required hardware/software:]
To use this package, you currently need to have an NVIDIA GPU and To compile and use this package in CUDA mode, you currently need
install the NVIDIA CUDA software on your system: to have an NVIDIA GPU and install the corresponding NVIDIA CUDA
toolkit software on your system (this is primarily tested on Linux
and completely unsupported on Windows):
Check if you have an NVIDIA GPU: cat Check if you have an NVIDIA GPU: cat /proc/driver/nvidia/gpus/*/information :ulb,l
/proc/driver/nvidia/gpus/0/information Go to Go to http://www.nvidia.com/object/cuda_get.html :l
http://www.nvidia.com/object/cuda_get.html Install a driver and Install a driver and toolkit appropriate for your system (SDK is not necessary) :l
toolkit appropriate for your system (SDK is not necessary) Run Run lammps/lib/gpu/nvc_get_devices (after building the GPU library, see below) to
lammps/lib/gpu/nvc_get_devices (after building the GPU library, see list supported devices and properties :ule,l
below) to list supported devices and properties :ul
To compile and use this package in OpenCL mode, you currently need
to have the OpenCL headers and the (vendor neutral) OpenCL library installed.
In OpenCL mode, the acceleration depends on having an "OpenCL Installable Client
Driver (ICD)"_https://www.khronos.org/news/permalink/opencl-installable-client-driver-icd-loader
installed. There can be multiple of them for the same or different hardware
(GPUs, CPUs, Accelerators) installed at the same time. OpenCL refers to those
as 'platforms'. The GPU library will select the [first] suitable platform,
but this can be overridden using the device option of the "package"_package.html
command. run lammps/lib/gpu/ocl_get_devices to get a list of available
platforms and devices with a suitable ICD available.
[Building LAMMPS with the GPU package:] [Building LAMMPS with the GPU package:]
@ -120,7 +131,10 @@ GPUs/node to use, as well as other options.
The performance of a GPU versus a multi-core CPU is a function of your The performance of a GPU versus a multi-core CPU is a function of your
hardware, which pair style is used, the number of atoms/GPU, and the hardware, which pair style is used, the number of atoms/GPU, and the
precision used on the GPU (double, single, mixed). precision used on the GPU (double, single, mixed). Using the GPU package
in OpenCL mode on CPUs (which uses vectorization and multithreading) is
usually resulting in inferior performance compared to using LAMMPS' native
threading and vectorization support in the USER-OMP and USER-INTEL packages.
See the "Benchmark page"_http://lammps.sandia.gov/bench.html of the See the "Benchmark page"_http://lammps.sandia.gov/bench.html of the
LAMMPS web site for performance of the GPU package on various LAMMPS web site for performance of the GPU package on various
@ -146,7 +160,7 @@ The "package gpu"_package.html command has several options for tuning
performance. Neighbor lists can be built on the GPU or CPU. Force performance. Neighbor lists can be built on the GPU or CPU. Force
calculations can be dynamically balanced across the CPU cores and calculations can be dynamically balanced across the CPU cores and
GPUs. GPU-specific settings can be made which can be optimized GPUs. GPU-specific settings can be made which can be optimized
for different hardware. See the "packakge"_package.html command for different hardware. See the "package"_package.html command
doc page for details. :l doc page for details. :l
As described by the "package gpu"_package.html command, GPU As described by the "package gpu"_package.html command, GPU

View File

@ -68,7 +68,7 @@ In most molecular dynamics software, parallelization parameters
to changing the order of operations with finite-precision to changing the order of operations with finite-precision
calculations. The USER-INTEL package is deterministic. This means calculations. The USER-INTEL package is deterministic. This means
that the results should be reproducible from run to run with the that the results should be reproducible from run to run with the
{same} parallel configurations and when using determinstic {same} parallel configurations and when using deterministic
libraries or library settings (MPI, OpenMP, FFT). However, there libraries or library settings (MPI, OpenMP, FFT). However, there
are differences in the USER-INTEL package that can change the are differences in the USER-INTEL package that can change the
order of operations compared to LAMMPS without acceleration: order of operations compared to LAMMPS without acceleration:
@ -400,7 +400,7 @@ within the input script to automatically append the "omp" suffix to
styles when USER-INTEL styles are not available. styles when USER-INTEL styles are not available.
NOTE: For simulations on higher node counts, add "processors * * * NOTE: For simulations on higher node counts, add "processors * * *
grid numa"_processors.html" to the beginning of the input script for grid numa"_processors.html to the beginning of the input script for
better scalability. better scalability.
When running on many nodes, performance might be better when using When running on many nodes, performance might be better when using

View File

@ -93,12 +93,12 @@ The "t Nt" option specifies how many OpenMP threads per MPI task to
use with a node. The default is Nt = 1, which is MPI-only mode. Note use with a node. The default is Nt = 1, which is MPI-only mode. Note
that the product of MPI tasks * OpenMP threads/task should not exceed that the product of MPI tasks * OpenMP threads/task should not exceed
the physical number of cores (on a node), otherwise performance will the physical number of cores (on a node), otherwise performance will
suffer. If hyperthreading is enabled, then the product of MPI tasks * suffer. If Hyper-Threading (HT) is enabled, then the product of MPI
OpenMP threads/task should not exceed the physical number of cores * tasks * OpenMP threads/task should not exceed the physical number of
hardware threads. The "-k on" switch also issues a "package kokkos" cores * hardware threads. The "-k on" switch also issues a
command (with no additional arguments) which sets various KOKKOS "package kokkos" command (with no additional arguments) which sets
options to default values, as discussed on the "package"_package.html various KOKKOS options to default values, as discussed on the
command doc page. "package"_package.html command doc page.
The "-sf kk" "command-line switch"_Run_options.html will automatically The "-sf kk" "command-line switch"_Run_options.html will automatically
append the "/kk" suffix to styles that support it. In this manner no append the "/kk" suffix to styles that support it. In this manner no
@ -106,6 +106,11 @@ modification to the input script is needed. Alternatively, one can run
with the KOKKOS package by editing the input script as described with the KOKKOS package by editing the input script as described
below. below.
NOTE: When using a single OpenMP thread, the Kokkos Serial backend (i.e.
Makefile.kokkos_mpi_only) will give better performance than the OpenMP
backend (i.e. Makefile.kokkos_omp) because some of the overhead to make
the code thread-safe is removed.
NOTE: The default for the "package kokkos"_package.html command is to NOTE: The default for the "package kokkos"_package.html command is to
use "full" neighbor lists and set the Newton flag to "off" for both use "full" neighbor lists and set the Newton flag to "off" for both
pairwise and bonded interactions. However, when running on CPUs, it pairwise and bonded interactions. However, when running on CPUs, it
@ -122,6 +127,22 @@ mpirun -np 16 lmp_kokkos_mpi_only -k on -sf kk -pk kokkos newton on neigh half c
If the "newton"_newton.html command is used in the input If the "newton"_newton.html command is used in the input
script, it can also override the Newton flag defaults. script, it can also override the Newton flag defaults.
For half neighbor lists and OpenMP, the KOKKOS package uses data
duplication (i.e. thread-private arrays) by default to avoid
thread-level write conflicts in the force arrays (and other data
structures as necessary). Data duplication is typically fastest for
small numbers of threads (i.e. 8 or less) but does increase memory
footprint and is not scalable to large numbers of threads. An
alternative to data duplication is to use thread-level atomics, which
don't require duplication. The use of atomics can be forced by compiling
with the "-DLMP_KOKKOS_USE_ATOMICS" compile switch. Most but not all
Kokkos-enabled pair_styles support data duplication. Alternatively, full
neighbor lists avoid the need for duplication or atomics but require
more compute operations per atom. When using the Kokkos Serial backend
or the OpenMP backend with a single thread, no duplication or atomics are
used. For CUDA and half neighbor lists, the KOKKOS package always uses
atomics.
[Core and Thread Affinity:] [Core and Thread Affinity:]
When using multi-threading, it is important for performance to bind When using multi-threading, it is important for performance to bind
@ -149,7 +170,7 @@ Intel Knight's Landing (KNL) Xeon Phi:
KNL Intel Phi chips have 68 physical cores. Typically 1 to 4 cores are KNL Intel Phi chips have 68 physical cores. Typically 1 to 4 cores are
reserved for the OS, and only 64 or 66 cores are used. Each core has 4 reserved for the OS, and only 64 or 66 cores are used. Each core has 4
hyperthreads,so there are effectively N = 256 (4*64) or N = 264 (4*66) Hyper-Threads,so there are effectively N = 256 (4*64) or N = 264 (4*66)
cores to run on. The product of MPI tasks * OpenMP threads/task should cores to run on. The product of MPI tasks * OpenMP threads/task should
not exceed this limit, otherwise performance will suffer. Note that not exceed this limit, otherwise performance will suffer. Note that
with the KOKKOS package you do not need to specify how many KNLs there with the KOKKOS package you do not need to specify how many KNLs there
@ -228,7 +249,7 @@ for details and default settings. Experimenting with its options can
provide a speed-up for specific calculations. For example: 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 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 neighborlist, 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
have Kepler generation GPUs (or later). The Kokkos library exploits have Kepler generation GPUs (or later). The Kokkos library exploits

View File

@ -50,6 +50,6 @@ inaccurate relative timing data, because processors have to wait when
communication occurs for other processors to catch up. Thus the communication occurs for other processors to catch up. Thus the
reported times for "Communication" or "Other" may be higher than they reported times for "Communication" or "Other" may be higher than they
really are, due to load-imbalance. If this is an issue, you can really are, due to load-imbalance. If this is an issue, you can
uncomment the MPI_Barrier() lines in src/timer.cpp, and recompile uncomment the MPI_Barrier() lines in src/timer.cpp, and re-compile
LAMMPS, to obtain synchronized timings. LAMMPS, to obtain synchronized timings.

View File

@ -29,7 +29,7 @@ instructions.
[Run with the USER-OMP package from the command line:] [Run with the USER-OMP package from the command line:]
These example asume one or more 16-core nodes. These examples assume one or more 16-core nodes.
env OMP_NUM_THREADS=16 lmp_omp -sf omp -in in.script # 1 MPI task, 16 threads according to OMP_NUM_THREADS env OMP_NUM_THREADS=16 lmp_omp -sf omp -in in.script # 1 MPI task, 16 threads according to OMP_NUM_THREADS
lmp_mpi -sf omp -in in.script # 1 MPI task, no threads, optimized kernels lmp_mpi -sf omp -in in.script # 1 MPI task, no threads, optimized kernels

View File

@ -72,7 +72,7 @@ Lennard-Jones "pair_style lj/cut"_pair_lj.html:
"pair_style lj/cut/opt"_pair_lj.html :ul "pair_style lj/cut/opt"_pair_lj.html :ul
To see what accelerate styles are currently available for a particular To see what accelerate styles are currently available for a particular
style, find the style name in the "Commands_all"_Commands_all.html style, find the style name in the "Commands_all"_lc
style pages (fix,compute,pair,etc) and see what suffixes are listed style pages (fix,compute,pair,etc) and see what suffixes are listed
(g,i,k,o,t) with it. The doc pages for individual commands (g,i,k,o,t) with it. The doc pages for individual commands
(e.g. "pair lj/cut"_pair_lj.html or "fix nve"_fix_nve.html) also list (e.g. "pair lj/cut"_pair_lj.html or "fix nve"_fix_nve.html) also list

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

View File

@ -11,7 +11,7 @@
<a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp; <a href="http://lammps.sandia.gov">LAMMPS Website</a> &nbsp; &nbsp;
<a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp; <a href="../../Manual.html">LAMMPS Manual</a> &nbsp; &nbsp;
<a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp; <a href="../../fix_atc.html">USER-AtC Manual</a> &nbsp; &nbsp;
<a href="../../Section_commands.html#comm">Commands</a> <a href="../../Commands_all.html">Commands</a>
</center> </center>
<hr> <hr>

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