forked from lijiext/lammps
Merge branch 'master' into pair_rann
# Conflicts: # cmake/CMakeLists.txt # src/Makefile
This commit is contained in:
commit
61b1126c3d
|
@ -1,3 +1,4 @@
|
|||
.gitattributes export-ignore
|
||||
.gitignore export-ignore
|
||||
.github export-ignore
|
||||
.lgtm.yml export-ignore
|
||||
|
|
|
@ -13,29 +13,37 @@ lib/kim/* @ellio167
|
|||
lib/mesont/* @iafoss
|
||||
|
||||
# whole packages
|
||||
src/COMPRESS/* @akohlmey
|
||||
src/COMPRESS/* @rbberger
|
||||
src/GPU/* @ndtrung81
|
||||
src/KOKKOS/* @stanmoore1
|
||||
src/KIM/* @ellio167
|
||||
src/LATTE/* @cnegre
|
||||
src/MESSAGE/* @sjplimp
|
||||
src/MLIAP/* @athomps
|
||||
src/SNAP/* @athomps
|
||||
src/SPIN/* @julient31
|
||||
src/USER-BROWNIAN/* @samueljmcameron
|
||||
src/USER-CGDNA/* @ohenrich
|
||||
src/USER-CGSDK/* @akohlmey
|
||||
src/USER-COLVARS/* @giacomofiorin
|
||||
src/USER-FEP/* @agiliopadua
|
||||
src/USER-HDNNP/* @singraber
|
||||
src/USER-INTEL/* @wmbrownintel
|
||||
src/USER-MANIFOLD/* @Pakketeretet2
|
||||
src/USER-MDI/* @taylor-a-barnes
|
||||
src/USER-MEAMC/* @martok
|
||||
src/USER-MESONT/* @iafoss
|
||||
src/USER-MOFFF/* @hheenen
|
||||
src/USER-MOLFILE/* @akohlmey
|
||||
src/USER-NETCDF/* @pastewka
|
||||
src/USER-PACE/* @yury-lysogorskiy
|
||||
src/USER-PLUMED/* @gtribello
|
||||
src/USER-PHONON/* @lingtikong
|
||||
src/USER-PTM/* @pmla
|
||||
src/USER-OMP/* @akohlmey
|
||||
src/USER-QMMM/* @akohlmey
|
||||
src/USER-REAXC/* @hasanmetin
|
||||
src/USER-REACTION/* @jrgissing
|
||||
src/USER-SCAFACOS/* @rhalver
|
||||
src/USER-TALLY/* @akohlmey
|
||||
src/USER-UEF/* @danicholson
|
||||
|
@ -47,7 +55,6 @@ src/GPU/pair_vashishta_gpu.* @andeplane
|
|||
src/KOKKOS/pair_vashishta_kokkos.* @andeplane
|
||||
src/MANYBODY/pair_vashishta_table.* @andeplane
|
||||
src/MANYBODY/pair_atm.* @sergeylishchuk
|
||||
src/USER-REACTION/fix_bond_react.* @jrgissing
|
||||
src/USER-MISC/*_grem.* @dstelter92
|
||||
src/USER-MISC/compute_stress_mop*.* @RomainVermorel
|
||||
|
||||
|
@ -122,6 +129,8 @@ tools/emacs/* @HaoZeke
|
|||
tools/singularity/* @akohlmey @rbberger
|
||||
tools/code_standard/* @rbberger
|
||||
tools/valgrind/* @akohlmey
|
||||
tools/swig/* @akohlmey
|
||||
tools/offline/* @rbberger
|
||||
|
||||
# tests
|
||||
unittest/* @akohlmey @rbberger
|
||||
|
@ -130,7 +139,7 @@ unittest/* @akohlmey @rbberger
|
|||
cmake/* @junghans @rbberger
|
||||
cmake/Modules/Packages/USER-COLVARS.cmake @junghans @rbberger @giacomofiorin
|
||||
cmake/Modules/Packages/KIM.cmake @junghans @rbberger @ellio167
|
||||
cmake/presets/*.cmake @junghans @rbberger @akohlmey
|
||||
cmake/presets/*.cmake @akohlmey
|
||||
|
||||
# python
|
||||
python/* @rbberger
|
||||
|
@ -142,6 +151,7 @@ fortran/* @akohlmey
|
|||
doc/utils/*/* @rbberger
|
||||
doc/Makefile @rbberger
|
||||
doc/README @rbberger
|
||||
examples/plugin/* @akohlmey
|
||||
|
||||
# for releases
|
||||
src/version.h @sjplimp
|
||||
|
|
|
@ -26,11 +26,11 @@ __
|
|||
|
||||
## I don't want to read this whole thing I just have a question!
|
||||
|
||||
> **Note:** Please do not file an issue to ask a general question about LAMMPS, its features, how to use specific commands, or how perform simulations or analysis in LAMMPS. Instead post your question to the ['lammps-users' mailing list](https://lammps.sandia.gov/mail.html). You do not need to be subscribed to post to the list (but a mailing list subscription avoids having your post delayed until it is approved by a mailing list moderator). Most posts to the mailing list receive a response within less than 24 hours. Before posting to the mailing list, please read the [mailing list guidelines](https://lammps.sandia.gov/guidelines.html). Following those guidelines will help greatly to get a helpful response. Always mention which LAMMPS version you are using.
|
||||
> **Note:** Please do not file an issue to ask a general question about LAMMPS, its features, how to use specific commands, or how perform simulations or analysis in LAMMPS. Instead post your question to either the ['lammps-users' mailing list](https://lammps.sandia.gov/mail.html) or the [LAMMPS Material Science Discourse forum](https://matsci.org/lammps). You do not need to be subscribed to post to the list (but a mailing list subscription avoids having your post delayed until it is approved by a mailing list moderator). Most posts to the mailing list receive a response within less than 24 hours. Before posting to the mailing list, please read the [mailing list guidelines](https://lammps.sandia.gov/guidelines.html). Following those guidelines will help greatly to get a helpful response. Always mention which LAMMPS version you are using. The LAMMPS forum was recently created as part of a larger effort to build a materials science community and have discussions not just about using LAMMPS. Thus the forum may be also used for discussions that would be off-topic for the mailing list. Those will just have to be moved to a more general category.
|
||||
|
||||
## How Can I Contribute?
|
||||
|
||||
There are several ways how you can actively contribute to the LAMMPS project: you can discuss compiling and using LAMMPS, and solving LAMMPS related problems with other LAMMPS users on the lammps-users mailing list, you can report bugs or suggest enhancements by creating issues on GitHub (or posting them to the lammps-users mailing list), and you can contribute by submitting pull requests on GitHub or e-mail your code
|
||||
There are several ways how you can actively contribute to the LAMMPS project: you can discuss compiling and using LAMMPS, and solving LAMMPS related problems with other LAMMPS users on the lammps-users mailing list, you can report bugs or suggest enhancements by creating issues on GitHub (or posting them to the lammps-users mailing list or posting in the LAMMPS Materials Science Discourse forum), and you can contribute by submitting pull requests on GitHub or e-mail your code
|
||||
to one of the [LAMMPS core developers](https://lammps.sandia.gov/authors.html). As you may see from the aforementioned developer page, the LAMMPS software package includes the efforts of a very large number of contributors beyond the principal authors and maintainers.
|
||||
|
||||
### Discussing How To Use LAMMPS
|
||||
|
@ -42,6 +42,8 @@ Anyone can browse/search previous questions/answers in the archives. You do not
|
|||
|
||||
If you post a message and you are a subscriber, your message will appear immediately. If you are not a subscriber, your message will be moderated, which typically takes one business day. Either way, when someone replies the reply will usually be sent to both, your personal email address and the mailing list. When replying to people, that responded to your post to the list, please always included the mailing list in your replies (i.e. use "Reply All" and **not** "Reply"). Responses will appear on the list in a few minutes, but it can take a few hours for postings and replies to show up in the SourceForge archive. Sending replies also to the mailing list is important, so that responses are archived and people with a similar issue can search for possible solutions in the mailing list archive.
|
||||
|
||||
The LAMMPS Materials Science Discourse forum was created recently to facilitate discussion not just about LAMMPS and as part of a larger effort towards building a materials science community. The forum contains a read-only sub-category with the continually updated mailing list archive, so you won't miss anything by joining only the forum and not the mailing list.
|
||||
|
||||
### Reporting Bugs
|
||||
|
||||
While developers writing code for LAMMPS are careful to test their code, LAMMPS is such a large and complex software, that it is impossible to test for all combinations of features under all normal and not so normal circumstances. Thus bugs do happen, and if you suspect, that you have encountered one, please try to document it and report it as an [Issue](https://github.com/lammps/lammps/issues) on the LAMMPS GitHub project web page. However, before reporting a bug, you need to check whether this is something that may have already been corrected. The [Latest Features and Bug Fixes in LAMMPS](https://lammps.sandia.gov/bug.html) web page lists all significant changes to LAMMPS over the years. It also tells you what the current latest development version of LAMMPS is, and you should test whether your issue still applies to that version.
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
paths:
|
||||
- src
|
||||
- lib
|
||||
- tools
|
|
@ -0,0 +1,5 @@
|
|||
paths:
|
||||
- python/lammps
|
||||
|
||||
queries:
|
||||
- uses: security-and-quality
|
|
@ -31,16 +31,18 @@ jobs:
|
|||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
config-file: ./.github/codeql/${{ matrix.language }}.yml
|
||||
|
||||
- name: Create Build Environment
|
||||
run: cmake -E make_directory ${{github.workspace}}/build
|
||||
if: ${{ matrix.language == 'cpp' }}
|
||||
run: mkdir build
|
||||
|
||||
- name: Building LAMMPS via CMake
|
||||
if: ${{ matrix.language == 'cpp' }}
|
||||
shell: bash
|
||||
working-directory: ${{github.workspace}}/build
|
||||
working-directory: build
|
||||
run: |
|
||||
cmake -C $GITHUB_WORKSPACE/cmake/presets/most.cmake $GITHUB_WORKSPACE/cmake
|
||||
cmake -C ../cmake/presets/most.cmake ../cmake
|
||||
cmake --build . --parallel 2
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
|
|
|
@ -10,6 +10,8 @@ jobs:
|
|||
name: MacOS Unit Test
|
||||
if: ${{ github.repository == 'lammps/lammps' }}
|
||||
runs-on: macos-latest
|
||||
env:
|
||||
CCACHE_DIR: ${{ github.workspace }}/.ccache
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
|
@ -17,20 +19,36 @@ jobs:
|
|||
with:
|
||||
fetch-depth: 2
|
||||
|
||||
- name: Install ccache
|
||||
run: brew install ccache
|
||||
|
||||
- name: Create Build Environment
|
||||
run: cmake -E make_directory ${{github.workspace}}/build
|
||||
run: mkdir build
|
||||
|
||||
- name: Set up ccache
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ${{ env.CCACHE_DIR }}
|
||||
key: macos-ccache-${{ github.sha }}
|
||||
restore-keys: macos-ccache-
|
||||
|
||||
- name: Building LAMMPS via CMake
|
||||
shell: bash
|
||||
working-directory: ${{github.workspace}}/build
|
||||
working-directory: build
|
||||
run: |
|
||||
cmake -C $GITHUB_WORKSPACE/cmake/presets/clang.cmake \
|
||||
-C $GITHUB_WORKSPACE/cmake/presets/most.cmake \
|
||||
$GITHUB_WORKSPACE/cmake \
|
||||
-DENABLE_TESTING=ON -DBUILD_SHARED_LIBS=ON -DLAMMPS_EXCEPTIONS=ON
|
||||
ccache -z
|
||||
cmake -C ../cmake/presets/clang.cmake \
|
||||
-C ../cmake/presets/most.cmake \
|
||||
-D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||
-D CMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||
-D ENABLE_TESTING=on \
|
||||
-D BUILD_SHARED_LIBS=on \
|
||||
-D LAMMPS_EXCEPTIONS=on \
|
||||
../cmake
|
||||
cmake --build . --parallel 2
|
||||
ccache -s
|
||||
|
||||
- name: Run Tests
|
||||
working-directory: ${{github.workspace}}/build
|
||||
working-directory: build
|
||||
shell: bash
|
||||
run: ctest -V
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
extraction:
|
||||
cpp:
|
||||
configure:
|
||||
command:
|
||||
- "mkdir build"
|
||||
- "cd build"
|
||||
- "cmake -G Ninja -C ../cmake/presets/minimal.cmake ../cmake"
|
||||
index:
|
||||
build_command:
|
||||
- "cd build"
|
||||
- "ninja"
|
||||
python:
|
||||
python_setup:
|
||||
version: 3
|
|
@ -0,0 +1,35 @@
|
|||
# Security Policy
|
||||
|
||||
LAMMPS is designed as a user-level application to conduct computer
|
||||
simulations for research using classical mechanics. As such LAMMPS
|
||||
depends to some degrees on users providing correctly formatted input and
|
||||
LAMMPS needs to read and write files based on uncontrolled user input.
|
||||
As a parallel application for use in high-performance computing
|
||||
environments, performance critical steps are also done without checking
|
||||
data.
|
||||
|
||||
LAMMPS also is interfaced to a number of external libraries, including
|
||||
libraries with experimental research software, that are not validated
|
||||
and tested by the LAMMPS developers, so it is easy to import bad
|
||||
behavior from calling functions in one of those libraries.
|
||||
|
||||
Thus is is quite easy to crash LAMMPS through malicious input and do all
|
||||
kinds of filesystem manipulations. And because of that LAMMPS should
|
||||
**NEVER** be compiled or **run** as superuser, either from a "root" or
|
||||
"administrator" account directly or indirectly via "sudo" or "su".
|
||||
|
||||
Therefore what could be seen as a security vulnerability is usually
|
||||
either a user mistake or a bug in the code. Bugs can be reported in
|
||||
the LAMMPS project
|
||||
[issue tracker on GitHub](https://github.com/lammps/lammps/issues).
|
||||
|
||||
|
||||
# Version Updates
|
||||
|
||||
LAMMPS follows continuous release development model. We aim to keep all
|
||||
release versions (stable or patch) fully functional and employ a variety
|
||||
of automatic testing procedures to detect failures of existing
|
||||
functionality from adding new features before releases are made. Thus
|
||||
bugfixes and updates are only integrated into the current development
|
||||
branch and thus the next (patch) release and users are recommended to
|
||||
update regularly.
|
|
@ -7,6 +7,11 @@ cmake_minimum_required(VERSION 3.10)
|
|||
if(POLICY CMP0074)
|
||||
cmake_policy(SET CMP0074 NEW)
|
||||
endif()
|
||||
# set policy to silence warnings about missing executable permissions in
|
||||
# pythonx.y-config when cross-compiling. review occasionally if it may be set to NEW
|
||||
if (POLICY CMP0109)
|
||||
cmake_policy(SET CMP0109 OLD)
|
||||
endif()
|
||||
########################################
|
||||
|
||||
project(lammps CXX)
|
||||
|
@ -104,6 +109,12 @@ endif()
|
|||
option(BUILD_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF)
|
||||
option(BUILD_LAMMPS_SHELL "Build and install the LAMMPS shell" OFF)
|
||||
|
||||
# allow enabling clang-tidy for C++ files
|
||||
set(ENABLE_CLANG_TIDY OFF CACHE BOOL "Include clang-tidy processing when compiling")
|
||||
if(ENABLE_CLANG_TIDY)
|
||||
set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-checks=*-header-filter=.*" CACHE STRING "")
|
||||
endif()
|
||||
|
||||
include(GNUInstallDirs)
|
||||
file(GLOB ALL_SOURCES ${LAMMPS_SOURCE_DIR}/[^.]*.cpp)
|
||||
file(GLOB MAIN_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp)
|
||||
|
@ -121,10 +132,10 @@ set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE
|
|||
PLUGIN QEQ REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI
|
||||
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESODPD USER-CGSDK
|
||||
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
|
||||
USER-LB USER-MANIFOLD USER-MEAMC USER-MESONT USER-MGPT USER-MISC USER-MOFFF
|
||||
USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESONT USER-MGPT USER-MISC USER-MOFFF
|
||||
USER-MOLFILE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB
|
||||
USER-RANN USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH
|
||||
USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-PACE)
|
||||
USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-PACE USER-BROWNIAN)
|
||||
|
||||
set(SUFFIX_PACKAGES CORESHELL GPU KOKKOS OPT USER-INTEL USER-OMP)
|
||||
|
||||
|
@ -245,69 +256,6 @@ if(BUILD_OMP)
|
|||
target_link_libraries(lammps PRIVATE OpenMP::OpenMP_CXX)
|
||||
endif()
|
||||
|
||||
# Compiler specific features for testing
|
||||
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
|
||||
option(ENABLE_COVERAGE "Enable collecting code coverage data" OFF)
|
||||
mark_as_advanced(ENABLE_COVERAGE)
|
||||
if(ENABLE_COVERAGE)
|
||||
if(CMAKE_VERSION VERSION_LESS 3.13)
|
||||
if(CMAKE_CXX_FLAGS)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_${CMAKE_BUILD_TYPE}_FLAGS} --coverage")
|
||||
endif()
|
||||
else()
|
||||
target_compile_options(lammps PUBLIC --coverage)
|
||||
target_link_options(lammps PUBLIC --coverage)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#######################################
|
||||
# add custom target for IWYU analysis
|
||||
#######################################
|
||||
set(ENABLE_IWYU OFF CACHE BOOL "Add 'iwyu' build target to call the include-what-you-use tool")
|
||||
mark_as_advanced(ENABLE_IWYU)
|
||||
if(ENABLE_IWYU)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
find_program(IWYU_EXE NAMES include-what-you-use iwyu)
|
||||
find_program(IWYU_TOOL NAMES iwyu_tool iwyu-tool iwyu_tool.py)
|
||||
if (IWYU_EXE AND IWYU_TOOL)
|
||||
add_custom_target(
|
||||
iwyu
|
||||
${IWYU_TOOL} -o clang -p ${CMAKE_CURRENT_BINARY_DIR} -- -Xiwyu --mapping_file=${CMAKE_CURRENT_SOURCE_DIR}/iwyu/iwyu-extra-map.imp
|
||||
COMMENT "Running IWYU")
|
||||
add_dependencies(iwyu lammps)
|
||||
else()
|
||||
message(FATAL_ERROR "To use IWYU you need the include-what-you-use/iwyu executable"
|
||||
"and the iwyu-tool/iwyu_tool script installed in your PATH")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(ENABLE_SANITIZER "none" CACHE STRING "Select a code sanitizer option (none (default), address, leak, thread, undefined)")
|
||||
mark_as_advanced(ENABLE_SANITIZER)
|
||||
set(ENABLE_SANITIZER_VALUES none address leak thread undefined)
|
||||
set_property(CACHE ENABLE_SANITIZER PROPERTY STRINGS ${ENABLE_SANITIZER_VALUES})
|
||||
validate_option(ENABLE_SANITIZER ENABLE_SANITIZER_VALUES)
|
||||
string(TOLOWER ${ENABLE_SANITIZER} ENABLE_SANITIZER)
|
||||
if(NOT ENABLE_SANITIZER STREQUAL "none")
|
||||
if((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang"))
|
||||
if(CMAKE_VERSION VERSION_LESS 3.13)
|
||||
if(CMAKE_CXX_FLAGS)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=${ENABLE_SANITIZER}")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_${CMAKE_BUILD_TYPE}_FLAGS} -fsanitize=${ENABLE_SANITIZER}")
|
||||
endif()
|
||||
else()
|
||||
target_compile_options(lammps PUBLIC -fsanitize=${ENABLE_SANITIZER})
|
||||
target_link_options(lammps PUBLIC -fsanitize=${ENABLE_SANITIZER})
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "ENABLE_SANITIZER option not supported by ${CMAKE_CXX_COMPILER_ID} compilers. Ignoring.")
|
||||
set(ENABLE_SANITIZER "none")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE)
|
||||
enable_language(C)
|
||||
find_package(LAPACK)
|
||||
|
@ -387,8 +335,8 @@ else()
|
|||
set(CUDA_REQUEST_PIC)
|
||||
endif()
|
||||
|
||||
foreach(PKG_WITH_INCL KSPACE PYTHON MLIAP VORONOI USER-COLVARS USER-MOLFILE USER-NETCDF USER-PLUMED USER-QMMM
|
||||
USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS USER-PACE)
|
||||
foreach(PKG_WITH_INCL KSPACE PYTHON MLIAP VORONOI USER-COLVARS USER-MDI USER-MOLFILE USER-NETCDF USER-PLUMED
|
||||
USER-QMMM USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS USER-PACE)
|
||||
if(PKG_${PKG_WITH_INCL})
|
||||
include(Packages/${PKG_WITH_INCL})
|
||||
endif()
|
||||
|
|
|
@ -55,8 +55,8 @@ if(BUILD_DOC)
|
|||
COMMAND ${DOCENV_BINARY_DIR}/pip $ENV{PIP_OPTIONS} install -r ${DOC_BUILD_DIR}/requirements.txt --upgrade
|
||||
)
|
||||
|
||||
set(MATHJAX_URL "https://github.com/mathjax/MathJax/archive/3.1.2.tar.gz" CACHE STRING "URL for MathJax tarball")
|
||||
set(MATHJAX_MD5 "a4a6a093a89bc2ccab1452d766b98e53" CACHE STRING "MD5 checksum of MathJax tarball")
|
||||
set(MATHJAX_URL "https://github.com/mathjax/MathJax/archive/3.1.3.tar.gz" CACHE STRING "URL for MathJax tarball")
|
||||
set(MATHJAX_MD5 "d1c98c746888bfd52ca8ebc10704f92f" CACHE STRING "MD5 checksum of MathJax tarball")
|
||||
mark_as_advanced(MATHJAX_URL)
|
||||
|
||||
# download mathjax distribution and unpack to folder "mathjax"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
# utility script to call WriteOpenCLHeader function
|
||||
include(${SOURCE_DIR}/Modules/OpenCLUtils.cmake)
|
||||
WriteOpenCLHeader(${VARNAME} ${HEADER_FILE} ${SOURCE_FILES})
|
|
@ -1,6 +1,6 @@
|
|||
message(STATUS "Downloading and building OpenCL loader library")
|
||||
set(OPENCL_LOADER_URL "${LAMMPS_THIRDPARTY_URL}/opencl-loader-2020.12.18.tar.gz" CACHE STRING "URL for OpenCL loader tarball")
|
||||
set(OPENCL_LOADER_MD5 "011cdcbd41030be94f3fced6d763a52a" CACHE STRING "MD5 checksum of OpenCL loader tarball")
|
||||
set(OPENCL_LOADER_URL "${LAMMPS_THIRDPARTY_URL}/opencl-loader-2021.05.02.tar.gz" CACHE STRING "URL for OpenCL loader tarball")
|
||||
set(OPENCL_LOADER_MD5 "29180b05056578afda92f0d394c3a373" CACHE STRING "MD5 checksum of OpenCL loader tarball")
|
||||
mark_as_advanced(OPENCL_LOADER_URL)
|
||||
mark_as_advanced(OPENCL_LOADER_MD5)
|
||||
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
function(GenerateOpenCLHeader varname outfile files)
|
||||
message("Creating ${outfile}...")
|
||||
function(WriteOpenCLHeader varname outfile files)
|
||||
file(WRITE ${outfile} "const char * ${varname} = \n")
|
||||
math(EXPR ARG_END "${ARGC}-1")
|
||||
separate_arguments(files)
|
||||
|
||||
foreach(IDX RANGE 2 ${ARG_END})
|
||||
list(GET ARGV ${IDX} filename)
|
||||
foreach(filename ${files})
|
||||
file(READ ${filename} content)
|
||||
string(REGEX REPLACE "\\s*//[^\n]*\n" "\n" content "${content}")
|
||||
string(REGEX REPLACE "\\\\" "\\\\\\\\" content "${content}")
|
||||
|
@ -15,4 +13,16 @@ function(GenerateOpenCLHeader varname outfile files)
|
|||
endforeach()
|
||||
|
||||
file(APPEND ${outfile} ";\n")
|
||||
endfunction(WriteOpenCLHeader)
|
||||
|
||||
function(GenerateOpenCLHeader varname outfile files)
|
||||
list(REMOVE_AT ARGV 0 1)
|
||||
add_custom_command(OUTPUT ${outfile}
|
||||
COMMAND ${CMAKE_COMMAND} -D SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}
|
||||
-D VARNAME=${varname}
|
||||
-D HEADER_FILE=${outfile}
|
||||
-D SOURCE_FILES="${ARGV}"
|
||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/Modules/GenerateOpenCLHeader.cmake
|
||||
DEPENDS ${ARGV}
|
||||
COMMENT "Generating ${outfile}...")
|
||||
endfunction(GenerateOpenCLHeader)
|
||||
|
|
|
@ -112,10 +112,10 @@ if(GPU_API STREQUAL "CUDA")
|
|||
endif()
|
||||
|
||||
cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS ${CUDA_REQUEST_PIC}
|
||||
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING})
|
||||
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES})
|
||||
|
||||
cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC}
|
||||
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING})
|
||||
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES})
|
||||
|
||||
foreach(CU_OBJ ${GPU_GEN_OBJS})
|
||||
get_filename_component(CU_NAME ${CU_OBJ} NAME_WE)
|
||||
|
@ -145,7 +145,14 @@ if(GPU_API STREQUAL "CUDA")
|
|||
target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS})
|
||||
|
||||
elseif(GPU_API STREQUAL "OPENCL")
|
||||
option(USE_STATIC_OPENCL_LOADER "Download and include a static OpenCL ICD loader" ON)
|
||||
# the static OpenCL loader doesn't seem to work on macOS. use the system provided
|
||||
# version by default instead (for as long as it will be available)
|
||||
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
|
||||
set(_opencl_static_default OFF)
|
||||
else()
|
||||
set(_opencl_static_default ON)
|
||||
endif()
|
||||
option(USE_STATIC_OPENCL_LOADER "Download and include a static OpenCL ICD loader" ${_opencl_static_default})
|
||||
mark_as_advanced(USE_STATIC_OPENCL_LOADER)
|
||||
if (USE_STATIC_OPENCL_LOADER)
|
||||
include(OpenCLLoader)
|
||||
|
@ -289,18 +296,18 @@ elseif(GPU_API STREQUAL "HIP")
|
|||
|
||||
if(HIP_COMPILER STREQUAL "clang")
|
||||
add_custom_command(OUTPUT ${CUBIN_FILE}
|
||||
VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco --offload-arch=${HIP_ARCH} -O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_CPP_FILE}
|
||||
VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco --offload-arch=${HIP_ARCH} -O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_CPP_FILE}
|
||||
DEPENDS ${CU_CPP_FILE}
|
||||
COMMENT "Generating ${CU_NAME}.cubin")
|
||||
else()
|
||||
add_custom_command(OUTPUT ${CUBIN_FILE}
|
||||
VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco -t="${HIP_ARCH}" -f=\"-O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu\" -o ${CUBIN_FILE} ${CU_CPP_FILE}
|
||||
VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco -t="${HIP_ARCH}" -f=\"-O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES} -I${LAMMPS_LIB_SOURCE_DIR}/gpu\" -o ${CUBIN_FILE} ${CU_CPP_FILE}
|
||||
DEPENDS ${CU_CPP_FILE}
|
||||
COMMENT "Generating ${CU_NAME}.cubin")
|
||||
endif()
|
||||
elseif(HIP_PLATFORM STREQUAL "nvcc")
|
||||
add_custom_command(OUTPUT ${CUBIN_FILE}
|
||||
VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --fatbin --use_fast_math -DUSE_HIP -D_${GPU_PREC_SETTING} ${HIP_CUDA_GENCODE} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_FILE}
|
||||
VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --fatbin --use_fast_math -DUSE_HIP -D_${GPU_PREC_SETTING} -DLAMMPS_${LAMMPS_SIZES} ${HIP_CUDA_GENCODE} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_FILE}
|
||||
DEPENDS ${CU_FILE}
|
||||
COMMENT "Generating ${CU_NAME}.cubin")
|
||||
endif()
|
||||
|
|
|
@ -37,8 +37,8 @@ if(DOWNLOAD_KOKKOS)
|
|||
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}")
|
||||
list(APPEND KOKKOS_LIB_BUILD_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}")
|
||||
include(ExternalProject)
|
||||
set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/3.3.01.tar.gz" CACHE STRING "URL for KOKKOS tarball")
|
||||
set(KOKKOS_MD5 "08201d1c7cf5bc458ce0f5b44a629d5a" CACHE STRING "MD5 checksum of KOKKOS tarball")
|
||||
set(KOKKOS_URL "https://github.com/kokkos/kokkos/archive/3.4.00.tar.gz" CACHE STRING "URL for KOKKOS tarball")
|
||||
set(KOKKOS_MD5 "c2fdcedb6953e6160c765366f6045abb" CACHE STRING "MD5 checksum of KOKKOS tarball")
|
||||
mark_as_advanced(KOKKOS_URL)
|
||||
mark_as_advanced(KOKKOS_MD5)
|
||||
ExternalProject_Add(kokkos_build
|
||||
|
@ -58,7 +58,7 @@ if(DOWNLOAD_KOKKOS)
|
|||
target_link_libraries(lmp PRIVATE LAMMPS::KOKKOS)
|
||||
add_dependencies(LAMMPS::KOKKOS kokkos_build)
|
||||
elseif(EXTERNAL_KOKKOS)
|
||||
find_package(Kokkos 3.3.01 REQUIRED CONFIG)
|
||||
find_package(Kokkos 3.4.00 REQUIRED CONFIG)
|
||||
target_link_libraries(lammps PRIVATE Kokkos::kokkos)
|
||||
target_link_libraries(lmp PRIVATE Kokkos::kokkos)
|
||||
else()
|
||||
|
|
|
@ -79,9 +79,11 @@ if(INTEL_ARCH STREQUAL "KNL")
|
|||
else()
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||
include(CheckCXXCompilerFlag)
|
||||
foreach(_FLAG -O2 -fp-model fast=2 -no-prec-div -qoverride-limits -qopt-zmm-usage=high -qno-offload -fno-alias -ansi-alias -restrict)
|
||||
check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAG})
|
||||
if(COMPILER_SUPPORTS${_FLAG})
|
||||
foreach(_FLAG -O2 "-fp-model fast=2" -no-prec-div -qoverride-limits -qopt-zmm-usage=high -qno-offload -fno-alias -ansi-alias -restrict)
|
||||
string(REGEX REPLACE "[ =\"]" "" _FLAGX ${_FLAG})
|
||||
check_cxx_compiler_flag("${_FLAG}" COMPILER_SUPPORTS${_FLAGX})
|
||||
if(COMPILER_SUPPORTS${_FLAGX})
|
||||
separate_arguments(_FLAG UNIX_COMMAND "${_FLAG}")
|
||||
target_compile_options(lammps PRIVATE ${_FLAG})
|
||||
endif()
|
||||
endforeach()
|
||||
|
|
|
@ -0,0 +1,118 @@
|
|||
find_package(mdi QUIET)
|
||||
if(${mdi_FOUND})
|
||||
set(DOWNLOAD_MDI_DEFAULT OFF)
|
||||
else()
|
||||
set(DOWNLOAD_MDI_DEFAULT ON)
|
||||
endif()
|
||||
option(DOWNLOAD_MDI "Download and compile the MDI library instead of using an already installed one" ${DOWNLOAD_MDI_DEFAULT})
|
||||
|
||||
if(DOWNLOAD_MDI)
|
||||
message(STATUS "MDI download requested - we will build our own")
|
||||
set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.2.9.tar.gz" CACHE STRING "URL for MDI tarball")
|
||||
set(MDI_MD5 "ddfa46d6ee15b4e59cfd527ec7212184" CACHE STRING "MD5 checksum for MDI tarball")
|
||||
mark_as_advanced(MDI_URL)
|
||||
mark_as_advanced(MDI_MD5)
|
||||
enable_language(C)
|
||||
|
||||
# only ON/OFF are allowed for "mpi" flag when building MDI library
|
||||
# so translate boolean value of BUILD_MPI
|
||||
# always disable MPI when cross-compiling to Windows.
|
||||
if((BUILD_MPI) AND NOT((CMAKE_SYSTEM_NAME STREQUAL Windows) AND CMAKE_CROSSCOMPILING))
|
||||
set(MDI_USE_MPI ON)
|
||||
else()
|
||||
set(MDI_USE_MPI OFF)
|
||||
endif()
|
||||
|
||||
# detect if we have python development support and thus can enable python plugins
|
||||
set(MDI_USE_PYTHON_PLUGINS OFF)
|
||||
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||
find_package(PythonLibs QUIET) # Deprecated since version 3.12
|
||||
if (PYTHONLIBS_FOUND)
|
||||
set(MDI_USE_PYTHON_PLUGINS ON)
|
||||
endif()
|
||||
else()
|
||||
find_package(Python QUIET COMPONENTS Development)
|
||||
if (Python_Development_FOUND)
|
||||
set(MDI_USE_PYTHON_PLUGINS ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# download/ build MDI library
|
||||
# always build static library with -fpic
|
||||
# support cross-compilation and ninja-build
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(mdi_build
|
||||
URL ${MDI_URL}
|
||||
URL_MD5 ${MDI_MD5}
|
||||
CMAKE_ARGS ${CMAKE_REQUEST_PIC}
|
||||
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
|
||||
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
|
||||
-Dlanguage=C
|
||||
-Dlibtype=STATIC
|
||||
-Dmpi=${MDI_USE_MPI}
|
||||
-Dpython_plugins=${MDI_USE_PYTHON_PLUGINS}
|
||||
UPDATE_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
BUILD_BYPRODUCTS "<BINARY_DIR>/MDI_Library/libmdi.a"
|
||||
)
|
||||
|
||||
# where is the compiled library?
|
||||
ExternalProject_get_property(mdi_build BINARY_DIR)
|
||||
set(MDI_BINARY_DIR "${BINARY_DIR}/MDI_Library")
|
||||
# workaround for older CMake versions
|
||||
file(MAKE_DIRECTORY ${MDI_BINARY_DIR})
|
||||
|
||||
# create imported target for the MDI library
|
||||
add_library(LAMMPS::MDI UNKNOWN IMPORTED)
|
||||
add_dependencies(LAMMPS::MDI mdi_build)
|
||||
set_target_properties(LAMMPS::MDI PROPERTIES
|
||||
IMPORTED_LOCATION "${MDI_BINARY_DIR}/libmdi.a"
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${MDI_BINARY_DIR}
|
||||
)
|
||||
|
||||
set(MDI_DEP_LIBS "")
|
||||
# if compiling with python plugins we need
|
||||
# to add python libraries as dependency.
|
||||
if(MDI_USE_PYTHON_PLUGINS)
|
||||
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||
list(APPEND MDI_DEP_LIBS ${PYTHON_LIBRARIES})
|
||||
else()
|
||||
list(APPEND MDI_DEP_LIBS Python::Python)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
# need to add support for dlopen/dlsym, except when compiling for Windows.
|
||||
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
list(APPEND MDI_DEP_LIBS "${CMAKE_DL_LIBS}")
|
||||
endif()
|
||||
if(MDI_DEP_LIBS)
|
||||
set_target_properties(LAMMPS::MDI PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LIBRARIES "${MDI_DEP_LIBS}")
|
||||
endif()
|
||||
|
||||
target_link_libraries(lammps PRIVATE LAMMPS::MDI)
|
||||
target_link_libraries(lmp PRIVATE LAMMPS::MDI)
|
||||
|
||||
else()
|
||||
|
||||
find_package(mdi)
|
||||
if(NOT mdi_FOUND)
|
||||
message(FATAL_ERROR "MDI library not found. Help CMake to find it "
|
||||
"by setting mdi_LIBRARY and mdi_INCLUDE_DIR, or set DOWNLOAD_MDI=ON "
|
||||
"to download and compile it")
|
||||
endif()
|
||||
|
||||
# Link the lammps library against MDI
|
||||
target_include_directories(lammps PRIVATE ${mdi_INCLUDE_DIR})
|
||||
target_link_libraries(lammps PRIVATE ${mdi_LIBRARY})
|
||||
|
||||
# Link the lammps executable against MDI
|
||||
target_include_directories(lmp PRIVATE ${mdi_INCLUDE_DIR})
|
||||
target_link_libraries(lmp PRIVATE ${mdi_LIBRARY})
|
||||
endif()
|
||||
|
||||
target_compile_definitions(lammps PRIVATE -DLMP_USER_MDI)
|
||||
target_compile_definitions(lmp PRIVATE -DLMP_USER_MDI)
|
|
@ -14,13 +14,12 @@ execute_process(
|
|||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
||||
|
||||
file(GLOB PACE_EVALUATOR_INCLUDE_DIR ${CMAKE_BINARY_DIR}/lammps-user-pace-*/USER-PACE)
|
||||
file(GLOB PACE_EVALUATOR_SOURCES ${CMAKE_BINARY_DIR}/lammps-user-pace-*/USER-PACE/*.cpp)
|
||||
list(FILTER PACE_EVALUATOR_SOURCES EXCLUDE REGEX pair_pace.cpp)
|
||||
|
||||
add_library(pace STATIC ${PACE_EVALUATOR_SOURCES})
|
||||
set_target_properties(pace PROPERTIES OUTPUT_NAME pace${LAMMPS_MACHINE})
|
||||
set_target_properties(pace PROPERTIES CXX_EXTENSIONS ON OUTPUT_NAME lammps_pace${LAMMPS_MACHINE})
|
||||
target_include_directories(pace PUBLIC ${PACE_EVALUATOR_INCLUDE_DIR})
|
||||
target_link_libraries(lammps PRIVATE pace)
|
||||
|
||||
|
|
|
@ -56,3 +56,76 @@ if(ENABLE_TESTING)
|
|||
get_filename_component(LAMMPS_UNITTEST_BIN ${CMAKE_BINARY_DIR}/unittest ABSOLUTE)
|
||||
add_subdirectory(${LAMMPS_UNITTEST_DIR} ${LAMMPS_UNITTEST_BIN})
|
||||
endif()
|
||||
|
||||
# Compiler specific features for testing
|
||||
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
|
||||
option(ENABLE_COVERAGE "Enable collecting code coverage data" OFF)
|
||||
mark_as_advanced(ENABLE_COVERAGE)
|
||||
if(ENABLE_COVERAGE)
|
||||
if(CMAKE_VERSION VERSION_LESS 3.13)
|
||||
if(CMAKE_CXX_FLAGS)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_${CMAKE_BUILD_TYPE}_FLAGS} --coverage")
|
||||
endif()
|
||||
else()
|
||||
target_compile_options(lammps PUBLIC --coverage)
|
||||
target_link_options(lammps PUBLIC --coverage)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#######################################
|
||||
# add custom target for IWYU analysis
|
||||
#######################################
|
||||
set(ENABLE_IWYU OFF CACHE BOOL "Add 'iwyu' build target to call the include-what-you-use tool")
|
||||
mark_as_advanced(ENABLE_IWYU)
|
||||
if(ENABLE_IWYU)
|
||||
# enforce these settings
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Enable reporting compilation commands to compile_commands.json" FORCE)
|
||||
if (NOT ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")))
|
||||
message(FATAL_ERROR "IWYU is only supported with Clang or GNU compilers")
|
||||
endif()
|
||||
# detect the "native" header folder so we can include them first
|
||||
execute_process(COMMAND ${CMAKE_CXX_COMPILER} --print-search-dirs OUTPUT_VARIABLE IWYU_SEARCH_PATHS)
|
||||
string(REGEX REPLACE ".*libraries: *=([^:]+):.*" "\\1/include" IWYU_EXTRA_INCLUDE_DIR ${IWYU_SEARCH_PATHS})
|
||||
find_program(IWYU_EXE NAMES include-what-you-use iwyu)
|
||||
find_program(IWYU_TOOL NAMES iwyu_tool iwyu-tool iwyu_tool.py)
|
||||
if (IWYU_EXE AND IWYU_TOOL)
|
||||
add_custom_target(
|
||||
iwyu
|
||||
${IWYU_TOOL} -o clang -p ${CMAKE_CURRENT_BINARY_DIR} -- -I${IWYU_EXTRA_INCLUDE_DIR} -Xiwyu --mapping_file=${CMAKE_CURRENT_SOURCE_DIR}/iwyu/iwyu-extra-map.imp
|
||||
COMMENT "Running IWYU")
|
||||
add_dependencies(iwyu lammps)
|
||||
else()
|
||||
message(FATAL_ERROR "To use IWYU you need the include-what-you-use/iwyu executable"
|
||||
"and the iwyu-tool/iwyu_tool script installed in your PATH")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#######################################
|
||||
# select code sanitizer options
|
||||
#######################################
|
||||
set(ENABLE_SANITIZER "none" CACHE STRING "Select a code sanitizer option (none (default), address, leak, thread, undefined)")
|
||||
mark_as_advanced(ENABLE_SANITIZER)
|
||||
set(ENABLE_SANITIZER_VALUES none address leak thread undefined)
|
||||
set_property(CACHE ENABLE_SANITIZER PROPERTY STRINGS ${ENABLE_SANITIZER_VALUES})
|
||||
validate_option(ENABLE_SANITIZER ENABLE_SANITIZER_VALUES)
|
||||
string(TOLOWER ${ENABLE_SANITIZER} ENABLE_SANITIZER)
|
||||
if(NOT ENABLE_SANITIZER STREQUAL "none")
|
||||
if((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang"))
|
||||
if(CMAKE_VERSION VERSION_LESS 3.13)
|
||||
if(CMAKE_CXX_FLAGS)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=${ENABLE_SANITIZER}")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_${CMAKE_BUILD_TYPE}_FLAGS} -fsanitize=${ENABLE_SANITIZER}")
|
||||
endif()
|
||||
else()
|
||||
target_compile_options(lammps PUBLIC -fsanitize=${ENABLE_SANITIZER})
|
||||
target_link_options(lammps PUBLIC -fsanitize=${ENABLE_SANITIZER})
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "ENABLE_SANITIZER option not supported by ${CMAKE_CXX_COMPILER_ID} compilers. Ignoring.")
|
||||
set(ENABLE_SANITIZER "none")
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
@ -6,15 +6,27 @@ set(YAML_MD5 "bb15429d8fb787e7d3f1c83ae129a999" CACHE STRING "MD5 checksum of li
|
|||
mark_as_advanced(YAML_URL)
|
||||
mark_as_advanced(YAML_MD5)
|
||||
|
||||
# support cross-compilation to windows
|
||||
if(CMAKE_CROSSCOMPILING AND (CMAKE_SYSTEM_NAME STREQUAL "Windows"))
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86")
|
||||
set(YAML_CROSS_HOST --host=i686-mingw64)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||
set(YAML_CROSS_HOST --host=x86_64-mingw64)
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported cross-compilation "
|
||||
" for ${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}"
|
||||
" on ${CMAKE_HOST_SYSTEM}/${CMAKE_HOST_SYSTEM_PROCESSOR}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(libyaml
|
||||
URL ${YAML_URL}
|
||||
URL_MD5 ${YAML_MD5}
|
||||
SOURCE_DIR "${CMAKE_BINARY_DIR}/yaml-src"
|
||||
BINARY_DIR "${CMAKE_BINARY_DIR}/yaml-build"
|
||||
CONFIGURE_COMMAND <SOURCE_DIR>/configure ${CONFIGURE_REQUEST_PIC}
|
||||
CXX=${CMAKE_CXX_COMPILER}
|
||||
CC=${CMAKE_C_COMPILER}
|
||||
--prefix=<INSTALL_DIR> --disable-shared
|
||||
CXX=${CMAKE_CXX_COMPILER} CC=${CMAKE_C_COMPILER}
|
||||
--prefix=<INSTALL_DIR> --disable-shared ${YAML_CROSS_HOST}
|
||||
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libyaml${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
TEST_COMMAND "")
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ if(GIT_FOUND AND EXISTS ${LAMMPS_DIR}/.git)
|
|||
ERROR_QUIET
|
||||
WORKING_DIRECTORY ${LAMMPS_DIR}
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} describe --dirty=-modified
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} describe --dirty=-modified --always
|
||||
OUTPUT_VARIABLE temp_git_describe
|
||||
ERROR_QUIET
|
||||
WORKING_DIRECTORY ${LAMMPS_DIR}
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
# an existing package selection without losing any other settings
|
||||
|
||||
set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
|
||||
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MISC MESSAGE MLIAP
|
||||
MOLECULE MPIIO MSCG OPT PERI POEMS PYTHON QEQ REPLICA RIGID SHOCK
|
||||
SNAP SPIN SRD VORONOI
|
||||
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK
|
||||
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP
|
||||
USER-H5MD USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESODPD
|
||||
USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
|
||||
USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP
|
||||
USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ
|
||||
USER-SPH USER-TALLY USER-UEF USER-VTK USER-YAFF)
|
||||
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MESSAGE MISC MLIAP MOLECULE
|
||||
MPIIO MSCG OPT PERI PLUGIN POEMS PYTHON QEQ REPLICA RIGID SHOCK SNAP SPIN
|
||||
SRD VORONOI
|
||||
USER-ADIOS USER-ATC USER-AWPMD USER-BROWNIAN USER-BOCS USER-CGDNA USER-CGSDK
|
||||
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
|
||||
USER-INTEL USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESODPD USER-MESONT
|
||||
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP USER-PACE
|
||||
USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP USER-REACTION
|
||||
USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY
|
||||
USER-UEF USER-VTK USER-YAFF)
|
||||
|
||||
foreach(PKG ${ALL_PACKAGES})
|
||||
set(PKG_${PKG} OFF CACHE BOOL "" FORCE)
|
||||
|
|
|
@ -4,16 +4,16 @@
|
|||
# with just a working C++ compiler and an MPI library.
|
||||
|
||||
set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
|
||||
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MISC MESSAGE MLIAP
|
||||
MOLECULE MPIIO MSCG OPT PERI POEMS PYTHON QEQ REPLICA RIGID SHOCK
|
||||
SNAP SPIN SRD VORONOI
|
||||
USER-ADIOS USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK
|
||||
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP
|
||||
USER-H5MD USER-INTEL USER-LB USER-MANIFOLD USER-MEAMC USER-MESODPD
|
||||
USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
|
||||
USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP
|
||||
USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ
|
||||
USER-SPH USER-TALLY USER-UEF USER-VTK USER-YAFF)
|
||||
GRANULAR KIM KOKKOS KSPACE LATTE MANYBODY MC MESSAGE MISC MLIAP MOLECULE
|
||||
MPIIO MSCG OPT PERI PLUGIN POEMS PYTHON QEQ REPLICA RIGID SHOCK SNAP SPIN
|
||||
SRD VORONOI
|
||||
USER-ADIOS USER-ATC USER-AWPMD USER-BROWNIAN USER-BOCS USER-CGDNA USER-CGSDK
|
||||
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
|
||||
USER-INTEL USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESODPD USER-MESONT
|
||||
USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP USER-PACE
|
||||
USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP USER-REACTION
|
||||
USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY
|
||||
USER-UEF USER-VTK USER-YAFF)
|
||||
|
||||
foreach(PKG ${ALL_PACKAGES})
|
||||
set(PKG_${PKG} ON CACHE BOOL "" FORCE)
|
||||
|
|
|
@ -4,10 +4,18 @@ set(CMAKE_CXX_COMPILER "clang++" CACHE STRING "" FORCE)
|
|||
set(CMAKE_C_COMPILER "clang" CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
|
||||
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
|
||||
set(MPI_CXX "clang++" CACHE STRING "" FORCE)
|
||||
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
||||
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||
|
||||
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||
set(OpenMP_C "clang" CACHE STRING "" FORCE)
|
||||
set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "" FORCE)
|
||||
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# preset that turns on packages with automatic downloads of sources of potentials
|
||||
# compilation of libraries like Plumed or ScaFaCoS can take a considerable amount of time.
|
||||
# Preset that turns on packages with automatic downloads of sources or potentials.
|
||||
# Compilation of libraries like Plumed or ScaFaCoS can take a considerable amount of time.
|
||||
|
||||
set(ALL_PACKAGES KIM LATTE MSCG VORONOI USER-PLUMED USER-SCAFACOS USER-SMD USER-MESONT)
|
||||
set(ALL_PACKAGES KIM LATTE MSCG VORONOI USER-PLUMED USER-SCAFACOS USER-SMD USER-MESONT USER-MDI USER-PACE)
|
||||
|
||||
foreach(PKG ${ALL_PACKAGES})
|
||||
set(PKG_${PKG} ON CACHE BOOL "" FORCE)
|
||||
|
@ -9,9 +9,11 @@ endforeach()
|
|||
|
||||
set(DOWNLOAD_KIM ON CACHE BOOL "" FORCE)
|
||||
set(DOWNLOAD_LATTE ON CACHE BOOL "" FORCE)
|
||||
set(DOWNLOAD_MDI ON CACHE BOOL "" FORCE)
|
||||
set(DOWNLOAD_MSCG ON CACHE BOOL "" FORCE)
|
||||
set(DOWNLOAD_VORO ON CACHE BOOL "" FORCE)
|
||||
set(DOWNLOAD_EIGEN3 ON CACHE BOOL "" FORCE)
|
||||
set(DOWNLOAD_PACE ON CACHE BOOL "" FORCE)
|
||||
set(DOWNLOAD_PLUMED ON CACHE BOOL "" FORCE)
|
||||
set(DOWNLOAD_SCAFACOS ON CACHE BOOL "" FORCE)
|
||||
|
||||
|
|
|
@ -3,10 +3,20 @@
|
|||
set(CMAKE_CXX_COMPILER "icpc" CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_COMPILER "icc" CACHE STRING "" FORCE)
|
||||
set(CMAKE_Fortran_COMPILER "ifort" CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
|
||||
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
|
||||
set(MPI_CXX "icpc" CACHE STRING "" FORCE)
|
||||
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
||||
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||
|
||||
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||
set(OpenMP_C "icc" CACHE STRING "" FORCE)
|
||||
set(OpenMP_C_FLAGS "-qopenmp" CACHE STRING "" FORCE)
|
||||
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
set(WIN_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
|
||||
GRANULAR KSPACE LATTE MANYBODY MC MISC MLIAP MOLECULE OPT
|
||||
PERI POEMS QEQ REPLICA RIGID SHOCK SNAP SPIN SRD VORONOI
|
||||
USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-CGSDK
|
||||
USER-ATC USER-AWPMD USER-BOCS USER-BROWNIAN USER-CGDNA USER-CGSDK
|
||||
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF
|
||||
USER-FEP USER-INTEL USER-MANIFOLD USER-MEAMC USER-MESODPD
|
||||
USER-MESONT USER-MISC USER-MGPT USER-MOFFF USER-MOLFILE USER-OMP
|
||||
USER-PHONON USER-PTM USER-QTB USER-REACTION USER-REAXC
|
||||
USER-PACE USER-PHONON USER-PTM USER-QTB USER-REACTION USER-REAXC
|
||||
USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF
|
||||
USER-YAFF)
|
||||
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE
|
||||
GRANULAR KSPACE MANYBODY MC MISC MLIAP MOLECULE OPT PERI
|
||||
PLUGIN POEMS PYTHON QEQ REPLICA RIGID SHOCK SNAP SPIN SRD VORONOI
|
||||
USER-BOCS USER-CGDNA USER-CGSDK USER-COLVARS USER-DIFFRACTION
|
||||
USER-DPD USER-DRUDE USER-EFF USER-FEP USER-MEAMC USER-MESODPD
|
||||
USER-MISC USER-MOFFF USER-OMP USER-PHONON USER-REACTION
|
||||
USER-BROWNIAN USER-BOCS USER-CGDNA USER-CGSDK USER-COLVARS
|
||||
USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-MEAMC
|
||||
USER-MESODPD USER-MISC USER-MOFFF USER-OMP USER-PHONON USER-REACTION
|
||||
USER-REAXC USER-SDPD USER-SPH USER-SMD USER-UEF USER-YAFF)
|
||||
|
||||
foreach(PKG ${ALL_PACKAGES})
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
# preset that turns off all packages that require some form of external
|
||||
# library or special compiler (fortran or cuda) or equivalent.
|
||||
|
||||
set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MPIIO MSCG PYTHON
|
||||
VORONOI USER-ADIOS USER-ATC USER-AWPMD USER-H5MD USER-LB
|
||||
USER-MOLFILE USER-MESONT USER-NETCDF USER-PLUMED USER-QMMM USER-QUIP
|
||||
USER-SCAFACOS USER-SMD USER-VTK)
|
||||
set(PACKAGES_WITH_LIB COMPRESS GPU KIM KOKKOS LATTE MESSAGE MPIIO MSCG
|
||||
PYTHON VORONOI
|
||||
USER-ADIOS USER-ATC USER-AWPMD USER-H5MD USER-LB USER-MOLFILE USER-MESONT
|
||||
USER-MDI USER-NETCDF USER-PACE USER-PLUMED USER-QMMM USER-QUIP USER-SCAFACOS
|
||||
USER-SMD USER-VTK)
|
||||
|
||||
foreach(PKG ${PACKAGES_WITH_LIB})
|
||||
set(PKG_${PKG} OFF CACHE BOOL "" FORCE)
|
||||
|
|
|
@ -1,12 +1,22 @@
|
|||
# preset that will enable the LLVM based Intel compilers with support for MPI and OpenMP (on Linux boxes)
|
||||
# preset that will enable the LLVM based Intel compilers with support for MPI and OpenMP and Fortran (on Linux boxes)
|
||||
|
||||
set(CMAKE_CXX_COMPILER "icpx" CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_COMPILER "icx" CACHE STRING "" FORCE)
|
||||
set(CMAKE_Fortran_COMPILER "ifx" CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_Fortran_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
|
||||
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_FLAGS_DEBUG "-Wall -Wextra -g" CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-Wall -Wextra -g -O2 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "" FORCE)
|
||||
|
||||
set(MPI_CXX "icpx" CACHE STRING "" FORCE)
|
||||
set(MPI_CXX_COMPILER "mpicxx" CACHE STRING "" FORCE)
|
||||
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||
|
||||
unset(HAVE_OMP_H_INCLUDE CACHE)
|
||||
set(OpenMP_C "icx" CACHE STRING "" FORCE)
|
||||
set(OpenMP_C_FLAGS "-qopenmp" CACHE STRING "" FORCE)
|
||||
set(OpenMP_C_LIB_NAMES "omp" CACHE STRING "" FORCE)
|
||||
|
|
|
@ -236,7 +236,7 @@ $(VENV):
|
|||
)
|
||||
|
||||
$(MATHJAX):
|
||||
@git clone --depth 1 git://github.com/mathjax/MathJax.git $@
|
||||
@git clone -b 3.1.4 -c advice.detachedHead=0 --depth 1 git://github.com/mathjax/MathJax.git $@
|
||||
|
||||
$(TXT2RST) $(ANCHORCHECK): $(VENV)
|
||||
@( \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.TH LAMMPS "8 April 2021" "2021-04-08"
|
||||
.TH LAMMPS "14 May 2021" "2021-05-14"
|
||||
.SH NAME
|
||||
.B LAMMPS
|
||||
\- Molecular Dynamics Simulator.
|
||||
|
|
|
@ -28,6 +28,28 @@ variable VERBOSE set to 1:
|
|||
|
||||
----------
|
||||
|
||||
.. _clang-tidy
|
||||
|
||||
Enable static code analysis with clang-tidy
|
||||
-------------------------------------------
|
||||
|
||||
The `clang-tidy tool <https://clang.llvm.org/extra/clang-tidy/>`_ is a
|
||||
static code analysis tool to diagnose (and potentially fix) typical
|
||||
programming errors or coding style violations. It has a modular framework
|
||||
of tests that can be adjusted to help identifying problems before they
|
||||
become bugs and also assist in modernizing large code bases (like LAMMPS).
|
||||
It can be enabled for all C++ code with the following CMake flag
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D ENABLE_CLANG_TIDY=value # value = no (default) or yes
|
||||
|
||||
With this flag enabled all source files will be processed twice, first to
|
||||
be compiled and then to be analyzed. Please note that the analysis can be
|
||||
significantly more time consuming than the compilation itself.
|
||||
|
||||
----------
|
||||
|
||||
.. _iwyu_processing:
|
||||
|
||||
Report missing and unneeded '#include' statements
|
||||
|
|
|
@ -49,6 +49,7 @@ This is the list of packages that may require additional steps.
|
|||
* :ref:`USER-COLVARS <user-colvars>`
|
||||
* :ref:`USER-H5MD <user-h5md>`
|
||||
* :ref:`USER-INTEL <user-intel>`
|
||||
* :ref:`USER-MDI <user-mdi>`
|
||||
* :ref:`USER-MESONT <user-mesont>`
|
||||
* :ref:`USER-MOLFILE <user-molfile>`
|
||||
* :ref:`USER-NETCDF <user-netcdf>`
|
||||
|
@ -467,6 +468,9 @@ They must be specified in uppercase.
|
|||
* - ARMV8_THUNDERX2
|
||||
- HOST
|
||||
- ARMv8 Cavium ThunderX2 CPU
|
||||
* - A64FX
|
||||
- HOST
|
||||
- ARMv8.2 with SVE Support
|
||||
* - WSM
|
||||
- HOST
|
||||
- Intel Westmere CPU (SSE 4.2)
|
||||
|
@ -539,6 +543,9 @@ They must be specified in uppercase.
|
|||
* - AMPERE80
|
||||
- GPU
|
||||
- NVIDIA Ampere generation CC 8.0 GPU
|
||||
* - AMPERE86
|
||||
- GPU
|
||||
- NVIDIA Ampere generation CC 8.6 GPU
|
||||
* - VEGA900
|
||||
- GPU
|
||||
- AMD GPU MI25 GFX900
|
||||
|
@ -547,12 +554,12 @@ They must be specified in uppercase.
|
|||
- AMD GPU MI50/MI60 GFX906
|
||||
* - VEGA908
|
||||
- GPU
|
||||
- AMD GPU GFX908
|
||||
- AMD GPU MI100 GFX908
|
||||
* - INTEL_GEN
|
||||
- GPU
|
||||
- Intel GPUs Gen9+
|
||||
|
||||
This list was last updated for version 3.3 of the Kokkos library.
|
||||
This list was last updated for version 3.4 of the Kokkos library.
|
||||
|
||||
.. tabs::
|
||||
|
||||
|
@ -1533,6 +1540,35 @@ TBB and MKL.
|
|||
|
||||
----------
|
||||
|
||||
.. _user-mdi:
|
||||
|
||||
USER-MDI package
|
||||
-----------------------------
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: CMake build
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-D DOWNLOAD_MDI=value # download MDI Library for build, value = no (default) or yes
|
||||
|
||||
.. tab:: Traditional make
|
||||
|
||||
Before building LAMMPS, you must build the MDI Library in
|
||||
``lib/mdi``\ . You can do this by executing a command like one
|
||||
of the following from the ``lib/mdi`` directory:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ python Install.py -m gcc # build using gcc compiler
|
||||
$ python Install.py -m icc # build using icc compiler
|
||||
|
||||
The build should produce two files: ``lib/mdi/includelink/mdi.h``
|
||||
and ``lib/mdi/liblink/libmdi.so``\ .
|
||||
|
||||
----------
|
||||
|
||||
.. _user-mesont:
|
||||
|
||||
USER-MESONT package
|
||||
|
|
|
@ -67,6 +67,7 @@ An alphabetic list of all general LAMMPS commands.
|
|||
* :doc:`lattice <lattice>`
|
||||
* :doc:`log <log>`
|
||||
* :doc:`mass <mass>`
|
||||
* :doc:`mdi/engine <mdi_engine>`
|
||||
* :doc:`message <message>`
|
||||
* :doc:`minimize <minimize>`
|
||||
* :doc:`min_modify <min_modify>`
|
||||
|
|
|
@ -39,6 +39,9 @@ OPT.
|
|||
* :doc:`ave/time <fix_ave_time>`
|
||||
* :doc:`aveforce <fix_aveforce>`
|
||||
* :doc:`balance <fix_balance>`
|
||||
* :doc:`brownian <fix_brownian>`
|
||||
* :doc:`brownian/asphere <fix_brownian>`
|
||||
* :doc:`brownian/sphere <fix_brownian>`
|
||||
* :doc:`bocs <fix_bocs>`
|
||||
* :doc:`bond/break <fix_bond_break>`
|
||||
* :doc:`bond/create <fix_bond_create>`
|
||||
|
@ -98,6 +101,7 @@ OPT.
|
|||
* :doc:`lb/viscous <fix_lb_viscous>`
|
||||
* :doc:`lineforce <fix_lineforce>`
|
||||
* :doc:`manifoldforce <fix_manifoldforce>`
|
||||
* :doc:`mdi/engine <fix_mdi_engine>`
|
||||
* :doc:`meso/move <fix_meso_move>`
|
||||
* :doc:`momentum (k) <fix_momentum>`
|
||||
* :doc:`momentum/chunk <fix_momentum>`
|
||||
|
|
|
@ -87,6 +87,8 @@ OPT.
|
|||
* :doc:`coul/wolf/cs <pair_cs>`
|
||||
* :doc:`dpd (gio) <pair_dpd>`
|
||||
* :doc:`dpd/fdt <pair_dpd_fdt>`
|
||||
* :doc:`dpd/ext <pair_dpd_ext>`
|
||||
* :doc:`dpd/ext/tstat <pair_dpd_ext>`
|
||||
* :doc:`dpd/fdt/energy (k) <pair_dpd_fdt>`
|
||||
* :doc:`dpd/tstat (go) <pair_dpd>`
|
||||
* :doc:`dsmc <pair_dsmc>`
|
||||
|
@ -169,7 +171,7 @@ OPT.
|
|||
* :doc:`lj/sdk/coul/long (go) <pair_sdk>`
|
||||
* :doc:`lj/sdk/coul/msm (o) <pair_sdk>`
|
||||
* :doc:`lj/sf/dipole/sf (go) <pair_dipole>`
|
||||
* :doc:`lj/smooth (o) <pair_lj_smooth>`
|
||||
* :doc:`lj/smooth (go) <pair_lj_smooth>`
|
||||
* :doc:`lj/smooth/linear (o) <pair_lj_smooth_linear>`
|
||||
* :doc:`lj/switch3/coulgauss/long <pair_lj_switch3_coulgauss_long>`
|
||||
* :doc:`lj96/cut (go) <pair_lj96>`
|
||||
|
|
|
@ -9,14 +9,29 @@ reading or writing to files with error checking or translation of
|
|||
strings into specific types of numbers with checking for validity. This
|
||||
reduces redundant implementations and encourages consistent behavior.
|
||||
|
||||
I/O with status check
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
I/O with status check and similar functions
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
These are wrappers around the corresponding C library calls like
|
||||
``fgets()`` or ``fread()``. They will check if there were errors
|
||||
on reading or an unexpected end-of-file state was reached. In that
|
||||
case, the functions will stop the calculation with an error message,
|
||||
indicating the name of the problematic file, if possible.
|
||||
The the first two functions are wrappers around the corresponding C
|
||||
library calls ``fgets()`` or ``fread()``. They will check if there
|
||||
were errors on reading or an unexpected end-of-file state was reached.
|
||||
In that case, the functions will stop with an error message, indicating
|
||||
the name of the problematic file, if possible unless the *error* argument
|
||||
is a NULL pointer.
|
||||
|
||||
The :cpp:func:`fgets_trunc` function will work similar for ``fgets()``
|
||||
but it will read in a whole line (i.e. until the end of line or end
|
||||
of file), but store only as many characters as will fit into the buffer
|
||||
including a final newline character and the terminating NULL byte.
|
||||
If the line in the file is longer it will thus be truncated in the buffer.
|
||||
This function is used by :cpp:func:`read_lines_from_file` to read individual
|
||||
lines but make certain they follow the size constraints.
|
||||
|
||||
The :cpp:func:`read_lines_from_file` function will read the requested
|
||||
number of lines of a maximum length into a buffer and will return 0
|
||||
if successful or 1 if not. It also guarantees that all lines are
|
||||
terminated with a newline character and the entire buffer with a
|
||||
NULL character.
|
||||
|
||||
----------
|
||||
|
||||
|
@ -26,6 +41,12 @@ indicating the name of the problematic file, if possible.
|
|||
.. doxygenfunction:: sfread
|
||||
:project: progguide
|
||||
|
||||
.. doxygenfunction:: fgets_trunc
|
||||
:project: progguide
|
||||
|
||||
.. doxygenfunction:: read_lines_from_file
|
||||
:project: progguide
|
||||
|
||||
----------
|
||||
|
||||
String to number conversions with validity check
|
||||
|
@ -164,7 +185,10 @@ Argument processing
|
|||
Convenience functions
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. doxygenfunction:: logmesg
|
||||
.. doxygenfunction:: logmesg(LAMMPS *lmp, const S &format, Args&&... args)
|
||||
:project: progguide
|
||||
|
||||
.. doxygenfunction:: logmesg(LAMMPS *lmp, const std::string &mesg)
|
||||
:project: progguide
|
||||
|
||||
.. doxygenfunction:: getsyserror
|
||||
|
|
|
@ -108,6 +108,8 @@ Lowercase directories
|
|||
+-------------+------------------------------------------------------------------+
|
||||
| msst | MSST shock dynamics |
|
||||
+-------------+------------------------------------------------------------------+
|
||||
| multi | multi neighboring for systems with large interaction disparities |
|
||||
+-------------+------------------------------------------------------------------+
|
||||
| nb3b | use of non-bonded 3-body harmonic pair style |
|
||||
+-------------+------------------------------------------------------------------+
|
||||
| neb | nudged elastic band (NEB) calculation for barrier finding |
|
||||
|
|
|
@ -23,6 +23,7 @@ General howto
|
|||
Howto_library
|
||||
Howto_couple
|
||||
Howto_client_server
|
||||
Howto_mdi
|
||||
|
||||
Settings howto
|
||||
==============
|
||||
|
|
|
@ -9,6 +9,8 @@ USER-DRUDE package activated. Then, the data file and input scripts
|
|||
have to be modified to include the Drude dipoles and how to handle
|
||||
them.
|
||||
|
||||
Example input scripts available: examples/USER/drude
|
||||
|
||||
----------
|
||||
|
||||
**Overview of Drude induced dipoles**
|
||||
|
|
|
@ -0,0 +1,132 @@
|
|||
Using LAMMPS with the MDI library for code coupling
|
||||
===================================================
|
||||
|
||||
.. note::
|
||||
|
||||
This Howto doc page will eventually replace the
|
||||
:doc:`Howto client/server <Howto_client_server>` doc page.
|
||||
|
||||
Client/server coupling of two codes is where one code is the "client"
|
||||
and sends request messages (data) 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; it does this by using the `MolSSI
|
||||
Driver Interface (MDI) library
|
||||
<https://molssi-mdi.github.io/MDI_Library/html/index.html>`_,
|
||||
developed by the `Molecular Sciences Software Institute (MolSSI)
|
||||
<https://molssi.org>`_.
|
||||
|
||||
Alternate methods for code coupling with LAMMPS are described on the
|
||||
:doc:`Howto couple <Howto_couple>` doc page.
|
||||
|
||||
Some advantages of client/server coupling are that the two codes can run
|
||||
as stand-alone executables; they need not be linked together. Thus
|
||||
neither code needs to have a library interface. This also makes it easy
|
||||
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 which implements the client-side
|
||||
protocol can be used in tandem with any code which implements the
|
||||
server-side protocol. Neither code needs to know what specific other
|
||||
code it is working with.
|
||||
|
||||
In MDI nomenclature, a client code is the "driver", and a server code is
|
||||
an "engine". One driver code can communicate with one or more instances
|
||||
of one or more engine codes. Driver and engine codes can be written in
|
||||
any language: C, C++, Fortran, Python, etc.
|
||||
|
||||
In addition to allowing driver and engine(s) running to run as
|
||||
stand-alone executables, MDI also enables a server code to be a
|
||||
"plugin" to the client code. In this scenario, server code(s) are
|
||||
compiled as shared libraries, and one (or more) instances of the
|
||||
server are instantiated by the driver code. If the driver code runs
|
||||
in parallel, it can split its MPI communicator into multiple
|
||||
sub-communicators, and launch each plugin engine instance on a
|
||||
sub-communicator. Driver processors in that sub-communicator exchange
|
||||
messages with that engine instance, and can also send MPI messages to
|
||||
other processors in the driver. The driver code can also destroy
|
||||
engine instances and re-instantiate them.
|
||||
|
||||
The way that a driver communicates with an engine is by making
|
||||
MDI_Send() and MDI_Recv() calls, which are conceptually similar to
|
||||
MPI_Send() and MPI_Recv() calls. Each send or receive has a string
|
||||
which identifies the command name, and optionally some data, which can
|
||||
be a single value or vector of values of any data type. Inside the
|
||||
MDI library, data is exchanged between the driver and engine via MPI
|
||||
calls or sockets. This a run-time choice by the user.
|
||||
|
||||
-------------
|
||||
|
||||
As an example, LAMMPS and the ``pw.x`` command from Quantum Espresso (a
|
||||
suite of quantum DFT codes), can work together via the MDI library to
|
||||
perform an ab initio MD (AIMD) simulation, where LAMMPS runs an MD
|
||||
simulation and sends a message each timestep to ``pw.x`` asking it to
|
||||
compute quantum forces on the current configuration of atoms. Here is
|
||||
how the 2 codes are launched to communicate by MPI:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
% mpirun -np 2 lmp_mpi -mdi "-role DRIVER -name d -method MPI" \
|
||||
-in in.aimd : -np 16 pw.x -in qe.in -mdi "-role ENGINE -name e -method MPI"
|
||||
|
||||
In this case LAMMPS runs on 2 processors (MPI tasks), ``pw.x`` runs on 16
|
||||
processors.
|
||||
|
||||
Here is how the 2 codes are launched to communicate by sockets:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
% mpirun -np 2 lmp_mpi -mdi "-role DRIVER -name d -method TCP -port 8021" -in in.aimd
|
||||
% mpirun -np 16 pw.x -in qe.in -mdi "-role ENGINE -name e -method TCP -port 8021 -hostname localhost"
|
||||
|
||||
These commands could be issued in different windows on a desktop
|
||||
machine. Or in the same window, if the first command is ended with
|
||||
"&" so as to run in the background. If "localhost" is replaced by an
|
||||
IP address, ``pw.x`` could be run on another machine on the same network, or
|
||||
even on another machine across the country.
|
||||
|
||||
After both codes initialize themselves to model the same system, this is
|
||||
what occurs each timestep:
|
||||
|
||||
* LAMMPS send a ">COORDS" message to ``pw.x`` with a 3*N vector of current atom coords
|
||||
* ``pw.x`` receives the message/coords and computes quantum forces on all the atoms
|
||||
* LAMMPS send a "<FORCES" message to ``pw.x`` and waits for the result
|
||||
* ``pw.x`` receives the message (after its computation finishes) and sends a 3*N vector of forces
|
||||
* LAMMPS receives the forces and time integrates to complete a single timestep
|
||||
|
||||
-------------
|
||||
|
||||
Examples scripts for using LAMMPS as an MDI engine are in the
|
||||
examples/mdi directory. See the README file in that directory for
|
||||
instructions on how to run the examples.
|
||||
|
||||
.. note::
|
||||
|
||||
Work is underway to add commands that allow LAMMPS to be used as an
|
||||
MDI driver, e.g. for the AIMD example discussed above. Example
|
||||
scripts for this usage mode will be added the same directory when
|
||||
available.
|
||||
|
||||
If LAMMPS is used as a stand-alone engine it should set up the system
|
||||
it will be modeling in its input script, then invoke the
|
||||
:doc:`mdi/engine <mdi_engine>` command. This will put LAMMPS into
|
||||
"engine mode" where it waits for messages and data from the driver.
|
||||
When the driver sends an "EXIT" command, LAMMPS will exit engine mode
|
||||
and the input script will continue.
|
||||
|
||||
If LAMMPS is used as a plugin engine it operates the same way, except
|
||||
that the driver will pass LAMMPS an input script to initialize itself.
|
||||
Upon receiving the "EXIT" command, LAMMPS will exit engine mode and the
|
||||
input script will continue. After finishing execution of the input
|
||||
script, the instance of LAMMPS will be destroyed.
|
||||
|
||||
LAMMPS supports the full set of MD-appropriate engine commands defined
|
||||
by the MDI library. See the :doc:`mdi/engine <mdi_engine>` doc page for
|
||||
a list of these.
|
||||
|
||||
If those commands are not sufficient for a user-developed driver to use
|
||||
LAMMPS as an engine, then new commands can be easily added. See these
|
||||
two files which implement the definition of MDI commands and the logic
|
||||
for responding to them:
|
||||
|
||||
* src/MDI/mdi_engine.cpp
|
||||
* src/MDI/fix_mdi_engine.cpp
|
|
@ -15,6 +15,8 @@ This section documents the following functions:
|
|||
- :cpp:func:`lammps_config_package_count`
|
||||
- :cpp:func:`lammps_config_package_name`
|
||||
- :cpp:func:`lammps_config_accelerator`
|
||||
- :cpp:func:`lammps_has_gpu_device`
|
||||
- :cpp:func:`lammps_gpu_device_info`
|
||||
- :cpp:func:`lammps_has_style`
|
||||
- :cpp:func:`lammps_style_count`
|
||||
- :cpp:func:`lammps_style_name`
|
||||
|
@ -132,6 +134,16 @@ approach.
|
|||
|
||||
-----------------------
|
||||
|
||||
.. doxygenfunction:: lammps_has_gpu_device
|
||||
:project: progguide
|
||||
|
||||
-----------------------
|
||||
|
||||
.. doxygenfunction:: lammps_get_gpu_device_info
|
||||
:project: progguide
|
||||
|
||||
-----------------------
|
||||
|
||||
.. doxygenfunction:: lammps_has_style
|
||||
:project: progguide
|
||||
|
||||
|
|
|
@ -89,10 +89,15 @@ Programmer Guide
|
|||
Modify
|
||||
Developer
|
||||
|
||||
*****************
|
||||
Command Reference
|
||||
*****************
|
||||
|
||||
.. _command_reference:
|
||||
.. toctree::
|
||||
:caption: Index
|
||||
:name: index
|
||||
:hidden:
|
||||
:name: reference
|
||||
:maxdepth: 1
|
||||
:caption: Command Reference
|
||||
|
||||
commands_list
|
||||
fixes
|
||||
|
@ -118,7 +123,7 @@ Indices and tables
|
|||
.. admonition:: Web Browser Compatibility
|
||||
|
||||
The HTML version of the manual makes use of advanced features present
|
||||
int "modern" web browsers. This can lead to incompatibilities with older
|
||||
in "modern" web browsers. This can lead to incompatibilities with older
|
||||
web browsers (released more than 4 years ago) and specific vendor browsers
|
||||
(e.g. Internet Explorer on Windows; Microsoft Edge works well though)
|
||||
where parts of the pages are not rendered as expected (e.g. the layout is
|
||||
|
|
|
@ -10,15 +10,15 @@ Tutorial <Howto_github>` for a demonstration on how to do that. An
|
|||
alternative is to contact the LAMMPS developers or the indicated
|
||||
developer of a package or feature directly and send in your contribution
|
||||
via e-mail, but that can add a significant delay on getting your
|
||||
contribution included, depending on how busy the developer is you
|
||||
contact, how complex a task it would be to integrate that code, and how
|
||||
contribution included, depending on how busy the respective developer
|
||||
is, how complex a task it would be to integrate that code, and how
|
||||
many - if any - changes are required before the code can be included.
|
||||
|
||||
For any larger modifications or programming project, you are encouraged
|
||||
to contact the LAMMPS developers ahead of time, in order to discuss
|
||||
implementation strategies and coding guidelines, that will make it
|
||||
easier to integrate your contribution and result in less work for
|
||||
everybody involved. You are also encouraged to search through the list
|
||||
to contact the LAMMPS developers ahead of time in order to discuss
|
||||
implementation strategies and coding guidelines. That will make it
|
||||
easier to integrate your contribution and results in less work for
|
||||
everybody involved. You are also encouraged to search through the list
|
||||
of `open issues on GitHub <https://github.com/lammps/lammps/issues>`_
|
||||
and submit a new issue for a planned feature, so you would not duplicate
|
||||
the work of others (and possibly get scooped by them) or have your work
|
||||
|
@ -34,18 +34,19 @@ installing, or using LAMMPS. Please contact the `lammps-users mailing
|
|||
list <https://lammps.sandia.gov/mail.html>`_ for those purposes instead.
|
||||
|
||||
How quickly your contribution will be integrated depends largely on how
|
||||
much effort it will cause to integrate and test it, how much it requires
|
||||
changes to the core codebase, and of how much interest it is to the
|
||||
larger LAMMPS community. Please see below for a checklist of typical
|
||||
requirements. Once you have prepared everything, see the :doc:`LAMMPS GitHub
|
||||
Tutorial <Howto_github>` page for instructions on
|
||||
how to submit your changes or new files through a GitHub pull
|
||||
request. If you prefer to submit patches or full files, you should first
|
||||
make certain, that your code works correctly with the latest patch-level
|
||||
version of LAMMPS and contains all bug fixes from it. Then create a
|
||||
gzipped tar file of all changed or added files or a corresponding patch
|
||||
file using 'diff -u' or 'diff -c' and compress it with gzip. Please only
|
||||
use gzip compression, as this works well on all platforms.
|
||||
much effort it will cause to integrate and test it, how many and what
|
||||
kind of changes it requires to the core codebase, and of how much
|
||||
interest it is to the larger LAMMPS community. Please see below for a
|
||||
checklist of typical requirements. Once you have prepared everything,
|
||||
see the :doc:`LAMMPS GitHub Tutorial <Howto_github>` page for
|
||||
instructions on how to submit your changes or new files through a GitHub
|
||||
pull request. If you prefer to submit patches or full files, you should
|
||||
first make certain, that your code works correctly with the latest
|
||||
patch-level version of LAMMPS and contains all bug fixes from it. Then
|
||||
create a gzipped tar file of all changed or added files or a
|
||||
corresponding patch file using 'diff -u' or 'diff -c' and compress it
|
||||
with gzip. Please only use gzip compression, as this works well and is
|
||||
available on all platforms.
|
||||
|
||||
If the new features/files are broadly useful we may add them as core
|
||||
files to LAMMPS or as part of a :doc:`standard package <Packages_standard>`. Else we will add them as a
|
||||
|
@ -57,9 +58,12 @@ added to the LAMMPS distribution. All the standard and user packages
|
|||
are listed and described on the :doc:`Packages details <Packages_details>` doc page.
|
||||
|
||||
Note that by providing us files to release, you are agreeing to make
|
||||
them open-source, i.e. we can release them under the terms of the GPL,
|
||||
used as a license for the rest of LAMMPS. See the :doc:`LAMMPS license
|
||||
<Intro_opensource>` doc page for details.
|
||||
them open-source, i.e. we can release them under the terms of the GPL
|
||||
(version 2), used as a license for the rest of LAMMPS. And as part of
|
||||
a LGPL (version 2.1) distribution that we make available to developers
|
||||
on request only and with files that are authorized for that kind of
|
||||
distribution removed (e.g. interface to FFTW). See the
|
||||
:doc:`LAMMPS license <Intro_opensource>` doc page for details.
|
||||
|
||||
With user packages and files, all we are really providing (aside from
|
||||
the fame and fortune that accompanies having your name in the source
|
||||
|
@ -112,7 +116,7 @@ packages in the src directory for examples. If you are uncertain, please ask.
|
|||
your contribution(s) to be added to main LAMMPS code or one of its
|
||||
standard packages, it needs to be written in a style compatible with
|
||||
other LAMMPS source files. This means: 2-character indentation per
|
||||
level, **no tabs**\ , no lines over 80 characters. I/O is done via
|
||||
level, **no tabs**\ , no lines over 100 characters. I/O is done via
|
||||
the C-style stdio library (mixing of stdio and iostreams is generally
|
||||
discouraged), class header files should not import any system headers
|
||||
outside of <cstdio>, STL containers should be avoided in headers,
|
||||
|
@ -131,6 +135,31 @@ packages in the src directory for examples. If you are uncertain, please ask.
|
|||
LAMMPS source files, including the use of the error class for error
|
||||
and warning messages.
|
||||
|
||||
* To simplify reformatting contributed code in a way that is compatible
|
||||
with the LAMMPS formatting styles, you can use clang-format (version 8
|
||||
or later). The LAMMPS distribution includes a suitable ``.clang-format``
|
||||
file which will be applied if you run ``clang-format -i some_file.cpp``
|
||||
on your files inside the LAMMPS src tree. Please only reformat files
|
||||
that you have contributed. For header files containing a
|
||||
``SomeStyle(keyword, ClassName)`` macros it is required to have this
|
||||
macro embedded with a pair of ``// clang-format off``, ``// clang-format on``
|
||||
commends and the line must be terminated with a semi-colon (;).
|
||||
Example:
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
#ifdef COMMAND_CLASS
|
||||
// clang-format off
|
||||
CommandStyle(run,Run);
|
||||
// clang-format on
|
||||
#else
|
||||
|
||||
#ifndef LMP_RUN_H
|
||||
[...]
|
||||
|
||||
You may also use ``// clang-format on/off`` throughout your file
|
||||
to protect sections of the file from being reformatted.
|
||||
|
||||
* If you want your contribution to be added as a user-contributed
|
||||
feature, and it's a single file (actually a \*.cpp and \*.h file) it can
|
||||
rapidly be added to the USER-MISC directory. Send us the one-line
|
||||
|
|
|
@ -69,6 +69,7 @@ page gives those details.
|
|||
* :ref:`USER-ATC <PKG-USER-ATC>`
|
||||
* :ref:`USER-AWPMD <PKG-USER-AWPMD>`
|
||||
* :ref:`USER-BOCS <PKG-USER-BOCS>`
|
||||
* :ref:`USER-BROWNIAN <PKG-USER-BROWNIAN>`
|
||||
* :ref:`USER-CGDNA <PKG-USER-CGDNA>`
|
||||
* :ref:`USER-CGSDK <PKG-USER-CGSDK>`
|
||||
* :ref:`USER-COLVARS <PKG-USER-COLVARS>`
|
||||
|
@ -81,6 +82,7 @@ page gives those details.
|
|||
* :ref:`USER-INTEL <PKG-USER-INTEL>`
|
||||
* :ref:`USER-LB <PKG-USER-LB>`
|
||||
* :ref:`USER-MANIFOLD <PKG-USER-MANIFOLD>`
|
||||
* :ref:`USER-MDI <PKG-USER-MDI>`
|
||||
* :ref:`USER-MEAMC <PKG-USER-MEAMC>`
|
||||
* :ref:`USER-MESODPD <PKG-USER-MESODPD>`
|
||||
* :ref:`USER-MESONT <PKG-USER-MESONT>`
|
||||
|
@ -445,7 +447,7 @@ time via the "-sf kk" or "-suffix kk" :doc:`command-line switches <Run_options>`
|
|||
:ref:`USER-INTEL <PKG-USER-INTEL>`, and :ref:`USER-OMP <PKG-USER-OMP>` packages, which
|
||||
have styles optimized for CPUs, KNLs, and GPUs.
|
||||
|
||||
You must have a C++11 compatible compiler to use this package.
|
||||
You must have a C++14 compatible compiler to use this package.
|
||||
KOKKOS makes extensive use of advanced C++ features, which can
|
||||
expose compiler bugs, especially when compiling for maximum
|
||||
performance at high optimization levels. Please see the file
|
||||
|
@ -1266,6 +1268,26 @@ Example inputs are in the examples/USER/bocs folder.
|
|||
|
||||
----------
|
||||
|
||||
.. _PKG-USER-BROWNIAN:
|
||||
|
||||
USER-BROWNIAN package
|
||||
---------------------
|
||||
|
||||
**Contents:**
|
||||
|
||||
This package provides :doc:`fix brownian, fix brownian/sphere, and
|
||||
fix brownian/asphere <fix_brownian>` as well as
|
||||
:doc:`fix propel/self <fix_propel_self>` which allow to do Brownian
|
||||
Dynamics time integration of point, spherical and aspherical particles
|
||||
and also support self-propelled particles.
|
||||
|
||||
**Authors:** Sam Cameron (University of Bristol),
|
||||
Stefan Paquay (while at Brandeis University) (initial version of fix propel/self)
|
||||
|
||||
Example inputs are in the examples/USER/brownian folder.
|
||||
|
||||
----------
|
||||
|
||||
.. _PKG-USER-CGDNA:
|
||||
|
||||
USER-CGDNA package
|
||||
|
@ -1770,6 +1792,28 @@ Waltham, MA, USA)
|
|||
|
||||
----------
|
||||
|
||||
.. _PKG-USER-MDI:
|
||||
|
||||
USER-MDI package
|
||||
----------------
|
||||
|
||||
**Contents:**
|
||||
|
||||
A LAMMPS command and fix to allow client-server coupling of LAMMPS to
|
||||
other atomic or molecular simulation codes via the `MolSSI Driver Interface
|
||||
(MDI) library <https://molssi-mdi.github.io/MDI_Library/html/index.html>`_.
|
||||
|
||||
**Author:** Taylor Barnes - MolSSI, taylor.a.barnes at gmail.com
|
||||
|
||||
**Supporting info:**
|
||||
|
||||
* src/USER-MDI/README
|
||||
* :doc:`mdi/engine <mdi_engine>`
|
||||
* :doc:`fix mdi/engine <fix_mdi_engine>`
|
||||
* examples/USER/mdi
|
||||
|
||||
----------
|
||||
|
||||
.. _PKG-USER-MEAMC:
|
||||
|
||||
USER-MEAMC package
|
||||
|
|
|
@ -39,6 +39,8 @@ package:
|
|||
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
|
||||
| :ref:`USER-BOCS <PKG-USER-BOCS>` | BOCS bottom up coarse graining | :doc:`fix bocs <fix_bocs>` | USER/bocs | no |
|
||||
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
|
||||
| :ref:`USER-BROWNIAN <PKG-USER-BROWNIAN>` | Brownian dynamics and self-propelled particles | :doc:`fix brownian <fix_brownian>`, :doc:`fix propel/self <fix_propel_self>` | USER/brownian | no |
|
||||
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
|
||||
| :ref:`USER-CGDNA <PKG-USER-CGDNA>` | coarse-grained DNA force fields | src/USER-CGDNA/README | USER/cgdna | no |
|
||||
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
|
||||
| :ref:`USER-CGSDK <PKG-USER-CGSDK>` | SDK coarse-graining model | :doc:`pair_style lj/sdk <pair_sdk>` | USER/cgsdk | no |
|
||||
|
@ -63,6 +65,8 @@ package:
|
|||
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
|
||||
| :ref:`USER-MANIFOLD <PKG-USER-MANIFOLD>` | motion on 2d surfaces | :doc:`fix manifoldforce <fix_manifoldforce>` | USER/manifold | no |
|
||||
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
|
||||
| :ref:`USER-MDI <PKG-USER-MDI>` | client-server coupling | :doc:`MDI Howto <Howto_mdi>` | USER/mdi | ext |
|
||||
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
|
||||
| :ref:`USER-MEAMC <PKG-USER-MEAMC>` | modified EAM potential (C++) | :doc:`pair_style meam/c <pair_meamc>` | meamc | no |
|
||||
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
|
||||
| :ref:`USER-MESODPD <PKG-USER-MESODPD>` | mesoscale DPD models | :doc:`pair_style edpd <pair_mesodpd>` | USER/mesodpd | no |
|
||||
|
|
|
@ -10,6 +10,7 @@ letter abbreviation can be used:
|
|||
* :ref:`-i or -in <file>`
|
||||
* :ref:`-k or -kokkos <run-kokkos>`
|
||||
* :ref:`-l or -log <log>`
|
||||
* :ref:`-mdi <mdi>`
|
||||
* :ref:`-m or -mpicolor <mpicolor>`
|
||||
* :ref:`-c or -cite <cite>`
|
||||
* :ref:`-nc or -nocite <nocite>`
|
||||
|
@ -196,9 +197,23 @@ Option -plog will override the name of the partition log files file.N.
|
|||
|
||||
----------
|
||||
|
||||
.. _mdi:
|
||||
|
||||
**-mdi 'multiple flags'**
|
||||
|
||||
This flag is only recognized and used when LAMMPS has support for the MolSSI
|
||||
Driver Interface (MDI) included as part of the :ref:`USER-MDI <PKG-USER-MDI>`
|
||||
package. This flag is specific to the MDI library and controls how LAMMPS
|
||||
interacts with MDI. There are usually multiple flags that have to follow it
|
||||
and those have to be placed in quotation marks. For more information about
|
||||
how to launch LAMMPS in MDI client/server mode please refer to the
|
||||
:doc:`MDI Howto <Howto_mdi>`.
|
||||
|
||||
----------
|
||||
|
||||
.. _mpicolor:
|
||||
|
||||
**-mpicolor** color
|
||||
**-mpicolor color**
|
||||
|
||||
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
|
||||
|
@ -223,7 +238,7 @@ links with from the lib/message directory. See the
|
|||
|
||||
.. _cite:
|
||||
|
||||
**-cite style or file name**
|
||||
**-cite style** or **file name**
|
||||
|
||||
Select how and where to output a reminder about citing contributions
|
||||
to the LAMMPS code that were used during the run. Available styles are
|
||||
|
|
|
@ -94,6 +94,7 @@ Miscellaneous tools
|
|||
* :ref:`kate <kate>`
|
||||
* :ref:`LAMMPS shell <lammps_shell>`
|
||||
* :ref:`LAMMPS magic patterns for file(1) <magic>`
|
||||
* :ref:`Offline build tool <offline>`
|
||||
* :ref:`singularity <singularity_tool>`
|
||||
* :ref:`SWIG interface <swig>`
|
||||
* :ref:`vim <vim>`
|
||||
|
@ -756,6 +757,103 @@ See the README file in the tools/msi2lmp folder for more information.
|
|||
|
||||
----------
|
||||
|
||||
.. _offline:
|
||||
|
||||
Scripts for building LAMMPS when offline
|
||||
----------------------------------------
|
||||
|
||||
In some situations it might be necessary to build LAMMPS on a system
|
||||
without direct internet access. The scripts in ``tools/offline`` folder
|
||||
allow you to pre-load external dependencies for both the documentation
|
||||
build and for building LAMMPS with CMake.
|
||||
|
||||
It does so by
|
||||
|
||||
#. downloading necessary ``pip`` packages,
|
||||
#. cloning ``git`` repositories
|
||||
#. downloading tarballs
|
||||
|
||||
to a designated cache folder.
|
||||
|
||||
As of April 2021, all of these downloads make up around 600MB. By
|
||||
default, the offline scripts will download everything into the
|
||||
``$HOME/.cache/lammps`` folder, but this can be changed by setting the
|
||||
``LAMMPS_CACHING_DIR`` environment variable.
|
||||
|
||||
Once the caches have been initialized, they can be used for building the
|
||||
LAMMPS documentation or compiling LAMMPS using CMake on an offline
|
||||
system.
|
||||
|
||||
The ``use_caches.sh`` script must be sourced into the current shell
|
||||
to initialize the offline build environment. Note that it must use
|
||||
the same ``LAMMPS_CACHING_DIR``. This script does the following:
|
||||
|
||||
#. Set up environment variables that modify the behavior of both,
|
||||
``pip`` and ``git``
|
||||
#. Start a simple local HTTP server using Python to host files for CMake
|
||||
|
||||
Afterwards, it will print out instruction on how to modify the CMake
|
||||
command line to make sure it uses the local HTTP server.
|
||||
|
||||
To undo the environment changes and shutdown the local HTTP server,
|
||||
run the ``deactivate_caches`` command.
|
||||
|
||||
Examples
|
||||
^^^^^^^^
|
||||
|
||||
For all of the examples below, you first need to create the cache, which
|
||||
requires an internet connection.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
./tools/offline/init_caches.sh
|
||||
|
||||
Afterwards, you can disconnect or copy the contents of the
|
||||
``LAMMPS_CACHING_DIR`` folder to an offline system.
|
||||
|
||||
Documentation Build
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The documentation build will create a new virtual environment that
|
||||
typically first installs dependencies from ``pip``. With the offline
|
||||
environment loaded, these installations will instead grab the necessary
|
||||
packages from your local cache.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# if LAMMPS_CACHING_DIR is different from default, make sure to set it first
|
||||
# export LAMMPS_CACHING_DIR=path/to/folder
|
||||
source tools/offline/use_caches.sh
|
||||
cd doc/
|
||||
make html
|
||||
|
||||
deactivate_caches
|
||||
|
||||
CMake Build
|
||||
^^^^^^^^^^^
|
||||
|
||||
When compiling certain packages with external dependencies, the CMake
|
||||
build system will download necessary files or sources from the web. For
|
||||
more flexibility the CMake configuration allows users to specify the URL
|
||||
of each of these dependencies. What the ``init_caches.sh`` script does
|
||||
is create a CMake "preset" file, which sets the URLs for all of the known
|
||||
dependencies and redirects the download to the local cache.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
# if LAMMPS_CACHING_DIR is different from default, make sure to set it first
|
||||
# export LAMMPS_CACHING_DIR=path/to/folder
|
||||
source tools/offline/use_caches.sh
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -D LAMMPS_DOWNLOADS_URL=${HTTP_CACHE_URL} -C "${LAMMPS_HTTP_CACHE_CONFIG}" -C ../cmake/presets/most.cmake ../cmake
|
||||
make -j 8
|
||||
|
||||
deactivate_caches
|
||||
|
||||
----------
|
||||
|
||||
.. _phonon:
|
||||
|
||||
phonon tool
|
||||
|
|
|
@ -69,7 +69,6 @@ parenthesized comments):
|
|||
HAM (keyword is the first text on line)
|
||||
N 181 FP 0 0 EQ 90.0 (N, FP, EQ parameters)
|
||||
(blank line)
|
||||
N 181 FP 0 0 (N, FP parameters)
|
||||
1 0.0 200.5 2.5 (index, angle, energy, derivative)
|
||||
2 1.0 198.0 2.5
|
||||
...
|
||||
|
|
|
@ -11,13 +11,17 @@ Syntax
|
|||
comm_modify keyword value ...
|
||||
|
||||
* zero or more keyword/value pairs may be appended
|
||||
* keyword = *mode* or *cutoff* or *cutoff/multi* or *group* or *vel*
|
||||
* keyword = *mode* or *cutoff* or *cutoff/multi* or *multi/reduce* or *group* or *vel*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*mode* value = *single* or *multi* = communicate atoms within a single or multiple distances
|
||||
*mode* value = *single*, *multi*, or *multi/old* = communicate atoms within a single or multiple distances
|
||||
*cutoff* value = Rcut (distance units) = communicate atoms from this far away
|
||||
*cutoff/multi* type value
|
||||
*cutoff/multi* collection value
|
||||
collection = atom collection or collection range (supports asterisk notation)
|
||||
value = Rcut (distance units) = communicate atoms for selected types from this far away
|
||||
*reduce/multi* arg = none = reduce number of communicated ghost atoms for multi style
|
||||
*cutoff/multi/old* type value
|
||||
type = atom type or type range (supports asterisk notation)
|
||||
value = Rcut (distance units) = communicate atoms for selected types from this far away
|
||||
*group* value = group-ID = only communicate atoms in the group
|
||||
|
@ -28,9 +32,9 @@ Examples
|
|||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
comm_modify mode multi
|
||||
comm_modify mode multi reduce/multi
|
||||
comm_modify mode multi group solvent
|
||||
comm_modift mode multi cutoff/multi 1 10.0 cutoff/multi 2*4 15.0
|
||||
comm_modify mode multi cutoff/multi 1 10.0 cutoff/multi 2*4 15.0
|
||||
comm_modify vel yes
|
||||
comm_modify mode single cutoff 5.0 vel yes
|
||||
comm_modify cutoff/multi * 0.0
|
||||
|
@ -62,12 +66,18 @@ sub-domain. The distance is by default the maximum of the neighbor
|
|||
cutoff across all atom type pairs.
|
||||
|
||||
For many systems this is an efficient algorithm, but for systems with
|
||||
widely varying cutoffs for different type pairs, the *multi* mode can
|
||||
be faster. In this case, each atom type is assigned its own distance
|
||||
widely varying cutoffs for different type pairs, the *multi* or *multi/old* mode can
|
||||
be faster. In *multi*, each atom is assigned to a collection which should
|
||||
correspond to a set of atoms with similar interaction cutoffs.
|
||||
In this case, each atom collection is assigned its own distance
|
||||
cutoff for communication purposes, and fewer atoms will be
|
||||
communicated. See the :doc:`neighbor multi <neighbor>` command for a
|
||||
neighbor list construction option that may also be beneficial for
|
||||
simulations of this kind.
|
||||
communicated. in *multi/old*, a similar technique is used but atoms
|
||||
are grouped by atom type. See the :doc:`neighbor multi <neighbor>` and
|
||||
:doc:`neighbor multi/old <neighbor>` commands for
|
||||
neighbor list construction options that may also be beneficial for
|
||||
simulations of this kind. The *multi* communication mode is only compatible
|
||||
with the *multi* neighbor style. The *multi/old* communication mode is comparable
|
||||
with both the *multi* and *multi/old* neighbor styles.
|
||||
|
||||
The *cutoff* keyword allows you to extend the ghost cutoff distance
|
||||
for communication mode *single*\ , which is the distance from the borders
|
||||
|
@ -87,12 +97,26 @@ warning is printed, if this bond based estimate is larger than the
|
|||
communication cutoff used.
|
||||
|
||||
The *cutoff/multi* option is equivalent to *cutoff*\ , but applies to
|
||||
communication mode *multi* instead. Since in this case the communication
|
||||
cutoffs are determined per atom type, a type specifier is needed and
|
||||
cutoff for one or multiple types can be extended. Also ranges of types
|
||||
using the usual asterisk notation can be given. For granular pair styles,
|
||||
the default cutoff is set to the sum of the current maximum atomic radii
|
||||
for each type.
|
||||
communication mode *multi* instead. Since the communication cutoffs are
|
||||
determined per atom collections, a collection specifier is needed and
|
||||
cutoff for one or multiple collections can be extended. Also ranges of
|
||||
collections using the usual asterisk notation can be given. Collections
|
||||
are indexed from 1 to N where N is the total number of collections.
|
||||
Note that the arguments for *cutoff/multi* are parsed right before each
|
||||
simulation to account for potential changes in the number of
|
||||
collections. Custom cutoffs are preserved between runs but if
|
||||
collections are redefined, one may want to re-specify the communication
|
||||
cutoffs. For granular pair styles,the default cutoff is set to the sum
|
||||
of the current maximum atomic radii for each collection. The
|
||||
*cutoff/multi/old* option is similar to *cutoff/multi* except it
|
||||
operates on atom types as opposed to collections.
|
||||
|
||||
The *reduce/multi* option applies to *multi* and sets the communication
|
||||
cutoff for a particle equal to the maximum interaction distance between particles
|
||||
in the same collection. This reduces the number of
|
||||
ghost atoms that need to be communicated. This method is only compatible with the
|
||||
*multi* neighbor style and requires a half neighbor list and Newton on.
|
||||
See the :doc:`neighbor multi <neighbor>` command for more information.
|
||||
|
||||
These are simulation scenarios in which it may be useful or even
|
||||
necessary to set a ghost cutoff > neighbor cutoff:
|
||||
|
@ -123,7 +147,7 @@ ghost cutoff should be set.
|
|||
In the last scenario, a :doc:`fix <fix>` or :doc:`compute <compute>` or
|
||||
:doc:`pairwise potential <pair_style>` needs to calculate with ghost
|
||||
atoms beyond the normal pairwise cutoff for some computation it
|
||||
performs (e.g. locate neighbors of ghost atoms in a multibody pair
|
||||
performs (e.g. locate neighbors of ghost atoms in a manybody pair
|
||||
potential). Setting the ghost cutoff appropriately can insure it will
|
||||
find the needed atoms.
|
||||
|
||||
|
|
|
@ -59,6 +59,7 @@ Commands
|
|||
lattice
|
||||
log
|
||||
mass
|
||||
mdi_engine
|
||||
message
|
||||
min_modify
|
||||
min_spin
|
||||
|
|
|
@ -48,6 +48,8 @@ Examples
|
|||
compute 1 all fep 298 pair lj/cut epsilon 1 * v_delta pair lj/cut sigma 1 * v_delta volume yes
|
||||
compute 1 all fep 300 atom charge 2 v_delta
|
||||
|
||||
Example input scripts available: examples/USER/fep
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@ Examples
|
|||
|
||||
compute TDRUDE all temp/drude
|
||||
|
||||
Example input scripts available: examples/USER/drude
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
|
|
|
@ -182,6 +182,9 @@ accelerated styles exist.
|
|||
* :doc:`ave/time <fix_ave_time>` - compute/output global time-averaged quantities
|
||||
* :doc:`aveforce <fix_aveforce>` - add an averaged force to each atom
|
||||
* :doc:`balance <fix_balance>` - perform dynamic load-balancing
|
||||
* :doc:`brownian <fix_brownian>` - overdamped translational brownian motion
|
||||
* :doc:`brownian/asphere <fix_brownian>` - overdamped translational and rotational brownian motion for ellipsoids
|
||||
* :doc:`brownian/sphere <fix_brownian>` - overdamped translational and rotational brownian motion for spheres
|
||||
* :doc:`bocs <fix_bocs>` - NPT style time integration with pressure correction
|
||||
* :doc:`bond/break <fix_bond_break>` - break bonds on the fly
|
||||
* :doc:`bond/create <fix_bond_create>` - create bonds on the fly
|
||||
|
@ -241,6 +244,7 @@ accelerated styles exist.
|
|||
* :doc:`lb/viscous <fix_lb_viscous>` -
|
||||
* :doc:`lineforce <fix_lineforce>` - constrain atoms to move in a line
|
||||
* :doc:`manifoldforce <fix_manifoldforce>` - restrain atoms to a manifold during minimization
|
||||
* :doc:`mdi/engine <fix_mdi_engine>` - connect LAMMPS to external programs via the MolSSI Driver Interface (MDI)
|
||||
* :doc:`meso/move <fix_meso_move>` - move mesoscopic SPH/SDPD particles in a prescribed fashion
|
||||
* :doc:`momentum <fix_momentum>` - zero the linear and/or angular momentum of a group of atoms
|
||||
* :doc:`momentum/chunk <fix_momentum>` - zero the linear and/or angular momentum of a chunk of atoms
|
||||
|
|
|
@ -56,6 +56,9 @@ Examples
|
|||
fix 1 all adapt/fep 1 pair lj/cut epsilon * * v_scale1 coul/cut scale 3 3 v_scale2 scale yes reset yes
|
||||
fix 1 all adapt/fep 10 atom diameter 1 v_size
|
||||
|
||||
|
||||
Example input scripts available: examples/USER/fep
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
|
|
|
@ -328,8 +328,8 @@ keyword 'ChiralIDs' lists the atom IDs of chiral atoms whose
|
|||
handedness should be enforced. The fifth optional section begins with
|
||||
the keyword 'Constraints' and lists additional criteria that must be
|
||||
satisfied in order for the reaction to occur. Currently, there are
|
||||
five types of constraints available, as discussed below: 'distance',
|
||||
'angle', 'dihedral', 'arrhenius', and 'rmsd'.
|
||||
six types of constraints available, as discussed below: 'distance',
|
||||
'angle', 'dihedral', 'arrhenius', 'rmsd', and 'custom'.
|
||||
|
||||
A sample map file is given below:
|
||||
|
||||
|
@ -500,6 +500,45 @@ example, the molecule fragment could consist of only the backbone
|
|||
atoms of a polymer chain. This constraint can be used to enforce a
|
||||
specific relative position and orientation between reacting molecules.
|
||||
|
||||
The constraint of type 'custom' has the following syntax:
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
custom *varstring*
|
||||
|
||||
where 'custom' is the required keyword, and *varstring* is a
|
||||
variable expression. The expression must be a valid equal-style
|
||||
variable formula that can be read by the :doc:`variable <variable>` command,
|
||||
after any special reaction functions are evaluated. If the resulting
|
||||
expression is zero, the reaction is prevented from occurring;
|
||||
otherwise, it is permitted to occur. There are two special reaction
|
||||
functions available, 'rxnsum' and 'rxnave'. These functions operate
|
||||
over the atoms in a given reaction site, and have one mandatory
|
||||
argument and one optional argument. The mandatory argument is the
|
||||
identifier for an atom-style variable. The second, optional argument
|
||||
is the name of a molecule fragment in the pre-reaction template, and
|
||||
can be used to operate over a subset of atoms in the reaction site.
|
||||
The 'rxnsum' function sums the atom-style variable over the reaction
|
||||
site, while the 'rxnave' returns the average value. For example, a
|
||||
constraint on the total potential energy of atoms involved in the
|
||||
reaction can be imposed as follows:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
compute 1 all pe/atom # in LAMMPS input script
|
||||
variable my_pe atom c_1 # in LAMMPS input script
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
custom "rxnsum(v_my_pe) > 100" # in Constraints section of map file
|
||||
|
||||
The above example prevents the reaction from occurring unless the
|
||||
total potential energy of the reaction site is above 100. The variable
|
||||
expression can be interpreted as the probability of the reaction
|
||||
occurring by using an inequality and the 'random(x,y,z)' function
|
||||
available as an equal-style variable input, similar to the 'arrhenius'
|
||||
constraint above.
|
||||
|
||||
By default, all constraints must be satisfied for the reaction to
|
||||
occur. In other words, constraints are evaluated as a series of
|
||||
logical values using the logical AND operator "&&". More complex logic
|
||||
|
|
|
@ -0,0 +1,216 @@
|
|||
.. index:: fix brownian
|
||||
.. index:: fix brownian/sphere
|
||||
.. index:: fix brownian/asphere
|
||||
|
||||
fix brownian command
|
||||
===========================
|
||||
|
||||
fix brownian/sphere command
|
||||
===========================
|
||||
|
||||
fix brownian/sphere command
|
||||
===========================
|
||||
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
fix ID group-ID style_name temp seed keyword args
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* style_name = *brownian* or *brownian/sphere* or *brownian/asphere*
|
||||
* temp = temperature
|
||||
* seed = random number generator seed
|
||||
* one or more keyword/value pairs may be appended
|
||||
* keyword = *rng* or *dipole* or *gamma_r_eigen* or *gamma_t_eigen* or *gamma_r* or *gamma_t*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*rng* value = *uniform* or *gaussian* or *none*
|
||||
*uniform* = use uniform random number generator
|
||||
*gaussian* = use gaussian random number generator
|
||||
*none* = turn off noise
|
||||
*dipole* value = *mux* and *muy* and *muz* for *brownian/asphere*
|
||||
*mux*, *muy*, and *muz* = update orientation of dipole having direction (*mux*,*muy*,*muz*) in body frame of rigid body
|
||||
*gamma_r_eigen* values = *gr1* and *gr2* and *gr3* for *brownian/asphere*
|
||||
*gr1*, *gr2*, and *gr3* = diagonal entries of body frame rotational friction tensor
|
||||
*gamma_r* values = *gr* for *brownian/sphere*
|
||||
*gr* = magnitude of the (isotropic) rotational friction tensor
|
||||
*gamma_t_eigen* values = *gt1* and *gt2* and *gt3* for *brownian/asphere*
|
||||
*gt1*, *gt2*, and *gt3* = diagonal entries of body frame translational friction tensor
|
||||
*gamma_t* values = *gt* for *brownian* and *brownian/sphere*
|
||||
*gt* = magnitude of the (isotropic) translational friction tensor
|
||||
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix 1 all brownian 1.0 12908410 gamma_t 1.0
|
||||
fix 1 all brownian 1.0 12908410 gamma_t 3.0 rng gaussian
|
||||
fix 1 all brownian/sphere 1.0 1294019 gamma_t 3.0 gamma_r 1.0
|
||||
fix 1 all brownian/sphere 1.0 19581092 gamma_t 1.0 gamma_r 0.3 rng none
|
||||
fix 1 all brownian/asphere 1.0 1294019 gamma_t_eigen 1.0 2.0 3.0 gamma_r_eigen 4.0 7.0 8.0 rng gaussian
|
||||
fix 1 all brownian/asphere 1.0 1294019 gamma_t_eigen 1.0 2.0 3.0 gamma_r_eigen 4.0 7.0 8.0 dipole 1.0 0.0 0.0
|
||||
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Perform Brownian Dynamics time integration to update position, velocity,
|
||||
dipole orientation (for spheres) and quaternion orientation (for
|
||||
ellipsoids, with optional dipole update as well) of all particles in the
|
||||
fix group in each timestep. Brownian Dynamics uses Newton's laws of
|
||||
motion in the limit that inertial forces are negligible compared to
|
||||
viscous forces. The stochastic equation of motion for the center of mass
|
||||
positions is
|
||||
|
||||
.. math::
|
||||
|
||||
d\mathbf{r} = \mathbf{\gamma}_t^{-1}\mathbf{F}dt+\sqrt{2k_BT}\mathbf{\gamma}_t^{-1/2}d\mathbf{W}_t,
|
||||
|
||||
in the lab-frame (i.e. :math:`\mathbf{\gamma}_t` is not diagonal, but
|
||||
only depends on orientation and so the noise is still additive).
|
||||
|
||||
The rotational motion for the spherical and ellipsoidal particles is not
|
||||
as simple an expression, but is chosen to replicate the Boltzmann
|
||||
distribution for the case of conservative torques (see :ref:`(Ilie)
|
||||
<Ilie1>` or :ref:`(Delong) <Delong1>`).
|
||||
|
||||
For the style *brownian*, only the positions of the particles are
|
||||
updated. This is therefore suitable for point particle simulations.
|
||||
|
||||
For the style *brownian/sphere*, the positions of the particles are
|
||||
updated, and a dipole slaved to the spherical orientation is also
|
||||
updated. This style therefore requires the hybrid atom style
|
||||
:doc:`atom_style dipole <atom_style>` and :doc:`atom_style sphere
|
||||
<atom_style>`.
|
||||
|
||||
For the style *brownian/asphere*, the center of mass positions and the
|
||||
quaternions of ellipsoidal particles are updated. This fix style is
|
||||
suitable for equations of motion where the rotational and translational
|
||||
friction tensors can be diagonalized in a certain (body) reference frame.
|
||||
|
||||
|
||||
---------
|
||||
|
||||
.. note::
|
||||
|
||||
This integrator does not by default assume a relationship between the
|
||||
rotational and translational friction tensors, though such a relationship
|
||||
should exist in the case of no-slip boundary conditions between the particles and
|
||||
the surrounding (implicit) solvent. E.g. in the case of spherical particles,
|
||||
the condition :math:`\gamma_t=3\gamma_r/\sigma^2` must be explicitly
|
||||
accounted for by setting *gamma_t* to 3x and *gamma_r* to x (where
|
||||
:math:`\sigma` is the spherical diameter). A similar (though more complex)
|
||||
relationship holds for ellipsoids and rod-like particles.
|
||||
|
||||
---------
|
||||
|
||||
.. note::
|
||||
|
||||
Temperature computation using the :doc:`compute temp <compute_temp>`
|
||||
will not correctly compute temperature of these overdamped dynamics
|
||||
since we are explicitly neglecting inertial effects.
|
||||
Furthermore, this time integrator does not add the stochastic terms or
|
||||
viscous terms to the force and/or torques. Rather, they are just added
|
||||
in to the equations of motion to update the degrees of freedom.
|
||||
|
||||
---------
|
||||
|
||||
|
||||
If the *rng* keyword is used with the *uniform* value, then the noise
|
||||
is generated from a uniform distribution (see
|
||||
:ref:`(Dunweg) <Dunweg7>` for why this works). This is the same method
|
||||
of noise generation as used in :doc:`fix_langevin <fix_langevin>`.
|
||||
|
||||
If the *rng* keyword is used with the *gaussian* value, then the noise
|
||||
is generated from a gaussian distribution. Typically this added
|
||||
complexity is unnecessary, and one should be fine using the *uniform*
|
||||
value for reasons argued in :ref:`(Dunweg) <Dunweg7>`.
|
||||
|
||||
If the *rng* keyword is used with the *none* value, then the noise
|
||||
terms are set to zero.
|
||||
|
||||
The *gamma_t* keyword sets the (isotropic) translational viscous damping.
|
||||
Required for (and only compatible with) *brownian* and *brownian/sphere*.
|
||||
The units of *gamma_t* are mass/time.
|
||||
|
||||
The *gamma_r* keyword sets the (isotropic) rotational viscous damping.
|
||||
Required for (and only compatible with) *brownian/sphere*.
|
||||
The units of *gamma_r* are mass*length**2/time.
|
||||
|
||||
The *gamma_r_eigen*, and *gamma_t_eigen* keywords are the eigenvalues of
|
||||
the rotational and viscous damping tensors (having the same units as
|
||||
their isotropic counterparts). Required for (and only compatible with)
|
||||
*brownian/asphere*. For a 2D system, the first two values of *gamma_r_eigen*
|
||||
must be inf (only rotation in xy plane), and the third value of *gamma_t_eigen*
|
||||
must be inf (only diffusion in xy plane).
|
||||
|
||||
If the *dipole* keyword is used, then the dipole moments of the particles
|
||||
are updated as described above. Only compatible with *brownian/asphere*
|
||||
(as *brownian/sphere* updates dipoles automatically).
|
||||
|
||||
----------
|
||||
|
||||
.. note::
|
||||
For style *brownian/asphere*, the components *gamma_t_eigen* =(x,x,x) and
|
||||
*gamma_r_eigen* = (y,y,y), the dynamics will replicate those of the
|
||||
*brownian/sphere* style with *gamma_t* = x and *gamma_r* = y.
|
||||
|
||||
----------
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
No information about this fix is written to :doc:`binary restart files <restart>`.
|
||||
No global or per-atom quantities are stored
|
||||
by this fix for access by various :doc:`output commands <Howto_output>`.
|
||||
|
||||
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command. This fix is not invoked during
|
||||
:doc:`energy minimization <minimize>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
The style *brownian/sphere* fix requires that atoms store torque and angular velocity (omega)
|
||||
as defined by the :doc:`atom_style sphere <atom_style>` command.
|
||||
The style *brownian/asphere* fix requires that atoms store torque and quaternions
|
||||
as defined by the :doc:`atom_style ellipsoid <atom_style>` command.
|
||||
If the *dipole* keyword is used, they must also store a dipole moment
|
||||
as defined by the :doc:`atom_style dipole <atom_style>` command.
|
||||
|
||||
This fix is part of the USER-BROWNIAN package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package <Build_package>`
|
||||
doc page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix propel/self <fix_propel_self>`,
|
||||
:doc:`fix langevin <fix_langevin>`, :doc:`fix nve/sphere <fix_nve_sphere>`,
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
The default for *rng* is *uniform*. The default for the rotational and translational friction
|
||||
tensors are the identity tensor.
|
||||
|
||||
----------
|
||||
|
||||
.. _Ilie1:
|
||||
|
||||
**(Ilie)** Ilie, Briels, den Otter, Journal of Chemical Physics, 142, 114103 (2015).
|
||||
|
||||
.. _Delong1:
|
||||
|
||||
**(Delong)** Delong, Usabiaga, Donev, Journal of Chemical Physics. 143, 144107 (2015)
|
||||
|
||||
.. _Dunweg7:
|
||||
|
||||
**(Dunweg)** Dunweg and Paul, Int J of Modern Physics C, 2, 817-27 (1991).
|
|
@ -22,6 +22,8 @@ Examples
|
|||
fix 1 all drude 1 1 0 1 0 2 2 2
|
||||
fix 1 all drude C C N C N D D D
|
||||
|
||||
Example input scripts available: examples/USER/drude
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
|
|
|
@ -25,6 +25,8 @@ Examples
|
|||
fix 3 all drude/transform/direct
|
||||
fix 1 all drude/transform/inverse
|
||||
|
||||
Example input scripts available: examples/USER/drude
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
|
|
|
@ -92,6 +92,11 @@ The :doc:`thermo_modify <thermo_modify>` *press* option is supported
|
|||
by this fix to add the rescaled kinetic pressure as part of
|
||||
:doc:`thermodynamic output <thermo_style>`.
|
||||
|
||||
This fix computes a global scalar which can be accessed by various
|
||||
:doc:`output commands <Howto_output>`. The scalar is the effective
|
||||
temperature :math:`T_{eff}`. The scalar value calculated by this
|
||||
fix is "intensive".
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
|
|
|
@ -35,6 +35,8 @@ Examples
|
|||
fix 3 all langevin/drude 300.0 100.0 19377 1.0 20.0 83451
|
||||
fix 1 all langevin/drude 298.15 100.0 19377 5.0 10.0 83451 zero yes
|
||||
|
||||
Example input scripts available: examples/USER/drude
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
.. index:: fix mdi/engine
|
||||
|
||||
fix mdi/engine command
|
||||
======================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
fix ID group-ID mdi/engine
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* mdi/engine = style name of this fix command
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix 1 all mdi/engine
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
This fix is used along with the :doc:`mdi/engine <mdi_engine>` command
|
||||
to enable LAMMPS to use the `MDI Library
|
||||
<https://molssi-mdi.github.io/MDI_Library/html/index.html>`_ to run as
|
||||
an MDI engine. The fix provides hooks that enable MDI driver codes to
|
||||
communicate with LAMMPS at various points within a LAMMPS timestep.
|
||||
|
||||
It is not generally necessary to add this fix to a LAMMPS input file,
|
||||
even when using the :doc:`mdi/engine <mdi_engine>` command. If the
|
||||
:doc:`mdi/engine <mdi_engine>` command is executed and this fix is not
|
||||
present, it will automatically be added and applied as a new fix for
|
||||
all atoms for the duration of the command. Thus it is only necessary
|
||||
to add this fix to an input file when you want to modify the group-ID
|
||||
or the ordering of this fix relative to other fixes in the input script.
|
||||
|
||||
For more information about running LAMMPS as an MDI engine, see the
|
||||
:doc:`mdi/engine <mdi_engine>` command and the :doc:`Howto mdi
|
||||
<Howto_mdi>` doc page.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This command is part of the USER-MDI package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` doc page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`mdi/engine <mdi_engine>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
none
|
|
@ -125,10 +125,10 @@ axis along the :math:`(1 1 1)`-type cube diagonals). :math:`K_2^c >
|
|||
diagonals. See chapter 2 of :ref:`(Skomski) <Skomski1>` for more
|
||||
details on cubic anisotropies.
|
||||
|
||||
Style *stt* is used to simulate the interaction between the spins and
|
||||
Style *stt* is used to simulate the interaction between the spins and
|
||||
a spin-transfer torque.
|
||||
See equation (7) of :ref:`(Chirac) <Chirac1>` for more details about the
|
||||
implemented spin-transfer torque term.
|
||||
See equation (7) of :ref:`(Chirac) <Chirac1>` for more details about the
|
||||
implemented spin-transfer torque term.
|
||||
|
||||
In all cases, the choice of :math:`(x y z)` only imposes the vector
|
||||
directions for the forces. Only the direction of the vector is
|
||||
|
@ -139,12 +139,12 @@ Those styles can be combined within one single command line.
|
|||
|
||||
.. note::
|
||||
|
||||
The norm of all vectors defined with the precession/spin command
|
||||
The norm of all vectors defined with the precession/spin command
|
||||
have to be non-zero. For example, defining
|
||||
"fix 1 all precession/spin zeeman 0.1 0.0 0.0 0.0" would result
|
||||
in an error message.
|
||||
in an error message.
|
||||
Since those vector components are used to compute the inverse of the
|
||||
field (or anisotropy) vector norm, setting a zero-vector would result
|
||||
field (or anisotropy) vector norm, setting a zero-vector would result
|
||||
in a division by zero.
|
||||
|
||||
----------
|
||||
|
@ -197,6 +197,6 @@ Oxford University Press.
|
|||
|
||||
.. _Chirac1:
|
||||
|
||||
**(Chirac)** Chirac, Théophile, et al. Ultrafast antiferromagnetic
|
||||
switching in NiO induced by spin transfer torques.
|
||||
**(Chirac)** Chirac, Theophile, et al. Ultrafast antiferromagnetic
|
||||
switching in NiO induced by spin transfer torques.
|
||||
Physical Review B 102.13 (2020): 134415.
|
||||
|
|
|
@ -8,52 +8,121 @@ Syntax
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
fix ID group-ID propel/self mode magnitude keyword values ...
|
||||
fix ID group-ID propel/self mode magnitude keyword values
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* propel/self = style name of this fix command
|
||||
* mode = velocity or quat
|
||||
* magnitude = magnitude of the active force
|
||||
* one or more keyword/value pairs may be appended to args
|
||||
* keyword = *types*
|
||||
* mode = *dipole* or *velocity* or *quat*
|
||||
* magnitude = magnitude of self-propulsion force
|
||||
* zero or one keyword/value pairs may be appended
|
||||
* keyword = *qvector*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*qvector* value = direction of force in ellipsoid frame
|
||||
*sx*, *sy*, *sz* = components of *qvector*
|
||||
|
||||
*types* values = one or more atom types
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix active_group all propel/self velocity 1.0
|
||||
fix constant_velocity all viscous 1.0
|
||||
|
||||
fix active_group all propel/self quat 1.0
|
||||
|
||||
fix active all propel/self quat 1.0 types 1 2 4
|
||||
fix active all propel/self dipole 40.0
|
||||
fix active all propel/self velocity 10.0
|
||||
fix active all propel/self quat 15.7 qvector 1.0 0.0 0.0
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Adds a force of a constant magnitude to each atom in the group. The nature in
|
||||
which the force is added depends on the mode.
|
||||
Add a force to each atom in the group due to a self-propulsion force. The
|
||||
force is given by
|
||||
|
||||
For *mode* = *velocity*, the active force acts along the velocity vector of
|
||||
each atom. This can be interpreted as a velocity-dependent friction,
|
||||
such as proposed by :ref:`(Erdmann) <Erdmann>`.
|
||||
.. math::
|
||||
|
||||
For *mode* = *quat* the force is applied along the axis obtained
|
||||
by rotating the x-axis along the atom's quaternion. In other words, the
|
||||
force is along the x-axis in the atom's body frame. This mode requires
|
||||
all atoms in the group to have a quaternion, so atom_style should
|
||||
either be ellipsoid or body. In combination with Langevin thermostat
|
||||
for translation and rotation in the overdamped regime, the quaternion
|
||||
mode corresponds to the active Brownian particle model introduced by
|
||||
:ref:`(Henkes) <Henkes>`, :ref:`(Bialke) <Bialke>` and :ref:`(Fily)
|
||||
<Fily>`.
|
||||
F_i = f_P e_i
|
||||
|
||||
By default, this fix is applied to all atoms in the group. You can
|
||||
override this behavior by specifying the atom types the fix should work
|
||||
on through the *types* keyword.
|
||||
where *i* is the particle the force is being applied to, :math:`f_P`
|
||||
is the magnitude of the force, and :math:`e_i` is the vector direction
|
||||
of the force. The specification of :math:`e_i` is based on which of the
|
||||
three keywords (*dipole* or *velocity* or *quat*) one selects.
|
||||
|
||||
For mode *dipole*, :math:`e_i` is just equal to
|
||||
the dipole vectors of the atoms in the group. Therefore, if the dipoles
|
||||
are not unit vectors, the :math:`e_i` will not be unit vectors.
|
||||
|
||||
.. note::
|
||||
|
||||
If another command changes the magnitude of the dipole, this force will
|
||||
change accordingly (since :math:`|e_i|` will change, which is physically
|
||||
equivalent to re-scaling :math:`f_P` while keeping :math:`|e_i|` constant),
|
||||
and no warning will be provided by LAMMPS. This is almost never what you
|
||||
want, so ensure you are not changing dipole magnitudes with another LAMMPS
|
||||
fix or pair style. Furthermore, self-propulsion forces (almost) always
|
||||
set :math:`e_i` to be a unit vector for all times, so it's best to set
|
||||
all the dipole magnitudes to 1.0 unless you have a good reason not to
|
||||
(see the :doc:`set <set>` command on how to do this).
|
||||
|
||||
For mode *velocity*, :math:`e_i` points in the direction
|
||||
of the current velocity (a unit-vector). This can be interpreted as a
|
||||
velocity-dependent friction, as proposed by e.g. :ref:`(Erdmann) <Erdmann1>`.
|
||||
|
||||
For mode *quat*, :math:`e_i` points in the direction of a unit
|
||||
vector, oriented in the coordinate frame of the ellipsoidal particles,
|
||||
which defaults to point along the x-direction. This default behavior
|
||||
can be changed by via the *quatvec* keyword.
|
||||
|
||||
The optional *quatvec* keyword specifies the direction of self-propulsion
|
||||
via a unit vector (sx,sy,sz). The arguments *sx*, *sy*, and *sz*, are
|
||||
defined within the coordinate frame of the atom's
|
||||
ellipsoid. For instance, for an ellipsoid with long axis along
|
||||
its x-direction, if one wanted the self-propulsion force to also
|
||||
be along this axis, set *sx* equal to 1 and *sy*, *sz* both equal
|
||||
to zero. This keyword may only be specified for mode *quat*.
|
||||
|
||||
.. note::
|
||||
|
||||
In using keyword *quatvec*, the three arguments *sx*,
|
||||
*sy*, and *sz* will be automatically normalized to components
|
||||
of a unit vector internally to avoid users having to explicitly
|
||||
do so themselves. Therefore, in mode *quat*, the vectors :math:`e_i`
|
||||
will always be of unit length.
|
||||
|
||||
|
||||
Along with adding a force contribution, this fix can also
|
||||
contribute to the virial (pressure) of the system, defined as
|
||||
:math:`f_P \sum_i <e_i . r_i>/(d V)`, where :math:`r_i` is the
|
||||
*unwrapped* coordinate of particle i in the case of periodic
|
||||
boundary conditions. See :ref:`(Winkler) <Winkler1>` for a
|
||||
discussion of this active pressure contribution.
|
||||
|
||||
For modes *dipole* and *quat*, this fix is by default
|
||||
included in pressure computations.
|
||||
|
||||
For mode *velocity*, this fix is by default not included
|
||||
in pressure computations.
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
In contrast to equilibrium systems, pressure of active systems
|
||||
in general depends on the geometry of the container.
|
||||
The active pressure contribution as calculated in this fix
|
||||
is only valid for certain boundary conditions (spherical
|
||||
walls, rectangular walls, or periodic boundary conditions).
|
||||
For other geometries, the pressure must be measured via
|
||||
explicit calculation of the force per unit area on a wall,
|
||||
and so one must not calculate it using this fix.
|
||||
(Use :doc:`fix_modify <fix_modify>` as described below
|
||||
to turn off the virial contribution of this fix). Again,
|
||||
see :ref:`(Winkler) <Winkler1>` for discussion of why this
|
||||
is the case.
|
||||
|
||||
Furthermore, when dealing with active systems, the temperature
|
||||
is no longer well defined. Therefore, one should ensure that
|
||||
the *virial* flag is used in the
|
||||
:doc:`compute pressure <compute_pressure>` command (turning
|
||||
off temperature contributions).
|
||||
|
||||
----------
|
||||
|
||||
|
@ -62,40 +131,48 @@ Restart, fix_modify, output, run start/stop, minimize info
|
|||
|
||||
No information about this fix is written to :doc:`binary restart files <restart>`.
|
||||
|
||||
This fix is not imposed during minimization.
|
||||
The :doc:`fix_modify <fix_modify>` *virial* option is supported by this
|
||||
fix to add the contribution due to the added forces on atoms to the
|
||||
system's virial as part of :doc:`thermodynamic output <thermo_style>`.
|
||||
The default is *virial yes* for keywords *dipole* and *quat*. The
|
||||
default is *virial no* for keyword *velocity*.
|
||||
|
||||
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command.
|
||||
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
In quat mode, this fix makes use of per-atom quaternions to take
|
||||
into account the fact that the orientation can rotate and hence the
|
||||
direction of the active force can change. The quat mode
|
||||
of this fix only works with atom_style ellipsoid.
|
||||
With keyword *dipole*, this fix only works when the DIPOLE package is enabled.
|
||||
See the :doc:`Build package <Build_package>` doc page for more info.
|
||||
|
||||
This fix is part of the USER-BROWNIAN package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package <Build_package>`
|
||||
doc page for more info.
|
||||
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix setforce <fix_setforce>`, :doc:`fix addforce <fix_addforce>`
|
||||
|
||||
.. _Erdmann:
|
||||
|
||||
**(Erdmann)** U. Erdmann , W. Ebeling, L. Schimansky-Geier, and F. Schweitzer,
|
||||
Eur. Phys. J. B 15, 105-113, 2000.
|
||||
|
||||
.. _Henkes:
|
||||
|
||||
**(Henkes)** Henkes, S, Fily, Y., and Marchetti, M. C. Phys. Rev. E, 84, 040301(R), 2011.
|
||||
|
||||
.. _Bialke:
|
||||
|
||||
**(Bialke)** J. Bialke, T. Speck, and H Loewen, Phys. Rev. Lett. 108, 168301, 2012.
|
||||
|
||||
.. _Fily:
|
||||
|
||||
**(Fily)** Y. Fily and M.C. Marchetti, Phys. Rev. Lett. 108, 235702, 2012.
|
||||
:doc:`fix efield <fix_efield>` , :doc:`fix setforce <fix_setforce>`,
|
||||
:doc:`fix addforce <fix_addforce>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
types
|
||||
none
|
||||
|
||||
----------
|
||||
|
||||
|
||||
.. _Erdmann1:
|
||||
|
||||
**(Erdmann)** U. Erdmann , W. Ebeling, L. Schimansky-Geier, and F. Schweitzer,
|
||||
Eur. Phys. J. B 15, 105-113, 2000.
|
||||
|
||||
|
||||
.. _Winkler1:
|
||||
|
||||
**(Winkler)** Winkler, Wysocki, and Gompper, Soft Matter, 11, 6680 (2015).
|
||||
|
|
|
@ -62,6 +62,8 @@ Examples
|
|||
fix 2 jello tgnpt/drude temp 300.0 300.0 100.0 1.0 20.0 tri 5.0 5.0 1000.0
|
||||
fix 2 ice tgnpt/drude temp 250.0 250.0 100.0 1.0 20.0 x 1.0 1.0 0.5 y 2.0 2.0 0.5 z 3.0 3.0 0.5 yz 0.1 0.1 0.5 xz 0.2 0.2 0.5 xy 0.3 0.3 0.5 nreset 1000
|
||||
|
||||
Example input scripts available: examples/USER/drude
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
.. index:: mdi/engine
|
||||
|
||||
mdi_engine command
|
||||
==================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
mdi_engine
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
This command is used to have LAMMPS act as a server with another
|
||||
client code to effectively couple the two codes together in
|
||||
client/server mode.
|
||||
|
||||
More specifically, this command causes LAMMPS to begin using the `MDI
|
||||
Library <https://molssi-mdi.github.io/MDI_Library/html/index.html>`_
|
||||
to run as an MDI engine (server), responding to commands made by an
|
||||
external MDI driver code (client). See the :doc:`Howto mdi
|
||||
<Howto_mdi>` doc page for more information about how LAMMPS can work
|
||||
as both an MDI driver or engine.
|
||||
|
||||
General information about launching codes that communicate using the
|
||||
MDI Library can be found in the `corresponding page
|
||||
<https://molssi-mdi.github.io/MDI_Library/html/library_page.html#library_launching_sec>`_
|
||||
of the MDI Library's documentation.
|
||||
|
||||
----------
|
||||
|
||||
This command should typically be used in an input script after LAMMPS
|
||||
has setup the system it is going to model in collaboration with the
|
||||
driver code. Depending on how the driver code tells the LAMMPS engine
|
||||
to exit, other commands can be executed after this command, but
|
||||
typically it should be used at the end of the LAMMPS input script.
|
||||
|
||||
To act as a MD-based MDI engine, this is the list of MDI commands from
|
||||
a driver code which LAMMPS currently recognizes. See more details
|
||||
about these commands in the `MDI library documentation
|
||||
<https://molssi-mdi.github.io/MDI_Library/html/mdi_standard.html>`_
|
||||
.. NOTE: Taylor - is this the best link for this info? Can we flesh this
|
||||
.. out with the full list of supported commands? Maybe the distinction
|
||||
.. of what "node" the commands refer to is not needed in this table?
|
||||
|
||||
.. list-table::
|
||||
:widths: 20 80
|
||||
:header-rows: 1
|
||||
|
||||
* - Command name
|
||||
- Action
|
||||
* - >NATOMS
|
||||
- Driver sends the number of atoms in the system
|
||||
* - <NATOMS
|
||||
- Driver requests the number of atoms in the system
|
||||
* - <COORDS
|
||||
- Driver requests 3*N double-precision atom coordinates
|
||||
* - >FORCES
|
||||
- Driver sends 3*N double-precision atom forces
|
||||
* - <COORDS
|
||||
- Driver requests 3*N double-precision atom forces
|
||||
* - EXIT
|
||||
- Driver tells the engine (LAMMPS) to exit engine mode
|
||||
|
||||
If these commands are not sufficient to support what a driver which
|
||||
you write needs, additional commands can be defined by simply using a
|
||||
new command name not in this list. Code to support the new command
|
||||
needs to be added to the USER-MDI package within LAMMPS; see its
|
||||
src/USER-MDI/mdi_engine.cpp and fix_mdi_engine.cpp files.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This command is part of the USER-MDI package. It is only enabled if
|
||||
LAMMPS was built with that package. See the :doc:`Build package
|
||||
<Build_package>` doc page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix mdi/engine <fix_mdi_engine>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
None
|
|
@ -14,7 +14,7 @@ Syntax
|
|||
|
||||
.. parsed-literal::
|
||||
|
||||
keyword = *delay* or *every* or *check* or *once* or *cluster* or *include* or *exclude* or *page* or *one* or *binsize*
|
||||
keyword = *delay* or *every* or *check* or *once* or *cluster* or *include* or *exclude* or *page* or *one* or *binsize* or *collection/type* or *collection/interval*
|
||||
*delay* value = N
|
||||
N = delay building until this many steps since last build
|
||||
*every* value = M
|
||||
|
@ -47,6 +47,12 @@ Syntax
|
|||
N = max number of neighbors of one atom
|
||||
*binsize* value = size
|
||||
size = bin size for neighbor list construction (distance units)
|
||||
*collection/type* values = N arg1 ... argN
|
||||
N = number of custom collections
|
||||
arg = N separate lists of types (see below)
|
||||
*collection/interval* values = N arg1 ... argN
|
||||
N = number of custom collections
|
||||
arg = N separate cutoffs for intervals (see below)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
@ -58,6 +64,8 @@ Examples
|
|||
neigh_modify exclude group frozen frozen check no
|
||||
neigh_modify exclude group residue1 chain3
|
||||
neigh_modify exclude molecule/intra rigid
|
||||
neigh_modify collection/type 2 1*2,5 3*4
|
||||
neigh_modify collection/interval 2 1.0 10.0
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
@ -188,8 +196,9 @@ atom can have.
|
|||
The *binsize* option allows you to specify what size of bins will be
|
||||
used in neighbor list construction to sort and find neighboring atoms.
|
||||
By default, for :doc:`neighbor style bin <neighbor>`, LAMMPS uses bins
|
||||
that are 1/2 the size of the maximum pair cutoff. For :doc:`neighbor style multi <neighbor>`, the bins are 1/2 the size of the minimum pair
|
||||
cutoff. Typically these are good values for minimizing the time for
|
||||
that are 1/2 the size of the maximum pair cutoff. For :doc:`neighbor style multi <neighbor>`,
|
||||
the bins are 1/2 the size of the collection interaction cutoff.
|
||||
Typically these are good values for minimizing the time for
|
||||
neighbor list construction. This setting overrides the default.
|
||||
If you make it too big, there is little overhead due to
|
||||
looping over bins, but more atoms are checked. If you make it too
|
||||
|
@ -197,6 +206,31 @@ small, the optimal number of atoms is checked, but bin overhead goes
|
|||
up. If you set the binsize to 0.0, LAMMPS will use the default
|
||||
binsize of 1/2 the cutoff.
|
||||
|
||||
The *collection/type* option allows you to define collections of atom
|
||||
types, used by the *multi* neighbor mode. By grouping atom types with
|
||||
similar physical size or interaction cutoff lengths, one may be able
|
||||
to improve performance by reducing
|
||||
overhead. You must first specify the number of collections N to be
|
||||
defined followed by N lists of types. Each list consists of a series of type
|
||||
ranges separated by commas. The range can be specified as a
|
||||
single numeric value, or a wildcard asterisk can be used to specify a range
|
||||
of values. This takes the form "\*" or "\*n" or "n\*" or "m\*n". For
|
||||
example, if M = the number of atom types, then an asterisk with no numeric
|
||||
values means all types from 1 to M. A leading asterisk means all types
|
||||
from 1 to n (inclusive). A trailing asterisk means all types from n to M
|
||||
(inclusive). A middle asterisk means all types from m to n (inclusive).
|
||||
Note that all atom types must be included in exactly one of the N collections.
|
||||
|
||||
The *collection/interval* option provides a similar capability. This
|
||||
command allows a user to define collections by specifying a series of
|
||||
cutoff intervals. LAMMPS will automatically sort atoms into these
|
||||
intervals based on their type-dependent cutoffs or their finite size.
|
||||
You must first specify the number of collections N to be defined
|
||||
followed by N values representing the upper cutoff of each interval.
|
||||
This command is particularly useful for granular pair styles where the
|
||||
interaction distance of particles depends on their radius and may not
|
||||
depend on their atom type.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ Syntax
|
|||
neighbor skin style
|
||||
|
||||
* skin = extra distance beyond force cutoff (distance units)
|
||||
* style = *bin* or *nsq* or *multi*
|
||||
* style = *bin* or *nsq* or *multi* or *multi/old*
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
@ -55,14 +55,31 @@ For the *bin* style, the bin size is set to 1/2 of
|
|||
the largest cutoff distance between any pair of atom types and a
|
||||
single set of bins is defined to search over for all atom types. This
|
||||
can be inefficient if one pair of types has a very long cutoff, but
|
||||
other type pairs have a much shorter cutoff. For style *multi* the
|
||||
bin size is set to 1/2 of the shortest cutoff distance and multiple
|
||||
sets of bins are defined to search over for different atom types.
|
||||
other type pairs have a much shorter cutoff. The *multi* style uses
|
||||
different sized bins for collections of different sized particles, where
|
||||
"size" may mean the physical size of the particle or its cutoff
|
||||
distance for interacting with other particles. Different
|
||||
sets of bins are then used to construct the neighbor lists as as further
|
||||
described by Shire, Hanley, and Stratford :ref:`(Shire) <bytype-Shire>`.
|
||||
This imposes some extra setup overhead, but the searches themselves
|
||||
may be much faster for the short-cutoff cases.
|
||||
See the :doc:`comm_modify mode multi <comm_modify>` command for a
|
||||
communication option that may also be beneficial for simulations of
|
||||
this kind.
|
||||
may be much faster. By default, each atom type defines a separate
|
||||
collection of particles. For systems where two or more atom types
|
||||
have the same size (either physical size or cutoff distance), the
|
||||
definition of collections can be customized, which can result in less
|
||||
overhead and faster performance. See the :doc:`neigh_modify <neigh_modify>`
|
||||
command for how to define custom collections. Whether the collection
|
||||
definition is customized or not, also see the
|
||||
:doc:`comm_modify mode multi <comm_modify>` command for communication
|
||||
options that further improve performance in a manner consistent with
|
||||
neighbor style multi.
|
||||
|
||||
An alternate style, *multi/old*, sets the bin size to 1/2 of the shortest
|
||||
cutoff distance and multiple sets of bins are defined to search over for
|
||||
different atom types. This algorithm used to be the default *multi*
|
||||
algorithm in LAMMPS but was found to be significantly slower than the new
|
||||
approach. For now we are keeping the old option in case there are use cases
|
||||
where multi/old outperforms the new multi style.
|
||||
|
||||
|
||||
The :doc:`neigh_modify <neigh_modify>` command has additional options
|
||||
that control how often neighbor lists are built and which pairs are
|
||||
|
@ -90,3 +107,9 @@ Default
|
|||
| 0.001 bin for units = si, skin = 0.001 meters = 1.0 mm
|
||||
| 0.1 bin for units = cgs, skin = 0.1 cm = 1.0 mm
|
||||
|
|
||||
|
||||
----------
|
||||
|
||||
.. _bytype-Shire:
|
||||
|
||||
**(Shire)** Shire, Hanley and Stratford, Comp Part Mech, (2020).
|
||||
|
|
|
@ -29,6 +29,7 @@ Examples
|
|||
pair_coeff 1 2 coul/tt 4.0 1.0 4 12.0
|
||||
pair_coeff 1 3* coul/tt 4.5 1.0 4
|
||||
|
||||
Example input scripts available: examples/USER/drude
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
|
|
@ -0,0 +1,138 @@
|
|||
.. index:: pair_style dpd/ext
|
||||
.. index:: pair_style dpd/ext/tstat
|
||||
|
||||
pair_style dpd/ext command
|
||||
==========================
|
||||
|
||||
pair_style dpd/ext/tstat command
|
||||
================================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style dpd/ext T cutoff seed
|
||||
pair_style dpd/ext/tstat Tstart Tstop cutoff seed
|
||||
|
||||
* T = temperature (temperature units)
|
||||
* Tstart,Tstop = desired temperature at start/end of run (temperature units)
|
||||
* cutoff = global cutoff for DPD interactions (distance units)
|
||||
* seed = random # seed (positive integer)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style dpd/ext 1.0 2.5 34387
|
||||
pair_coeff 1 1 25.0 4.5 4.5 0.5 0.5 1.2
|
||||
pair_coeff 1 2 40.0 4.5 4.5 0.5 0.5 1.2
|
||||
|
||||
pair_style dpd/ext/tstat 1.0 1.0 2.5 34387
|
||||
pair_coeff 1 1 4.5 4.5 0.5 0.5 1.2
|
||||
pair_coeff 1 2 4.5 4.5 0.5 0.5 1.2
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
The style *dpd/ext* computes an extended force field for dissipative particle dynamics (DPD) following the exposition in :ref:`(Groot) <Groot>`, :ref:`(Junghans) <Junghans>`.
|
||||
|
||||
Style *dpd/ext/tstat* invokes an extended DPD thermostat on pairwise interactions, equivalent to the non-conservative portion of the extended DPD force field. To use *dpd/ext/tstat* as a thermostat for another pair style, use the :doc:`pair_style hybrid/overlay <pair_hybrid>` command to compute both the desired pair interaction and the thermostat for each pair of particles.
|
||||
|
||||
For the style *dpd/ext*\ , the force on atom I due to atom J is given as a sum
|
||||
of 3 terms
|
||||
|
||||
.. math::
|
||||
|
||||
\mathbf{f} = & f^C + f^D + f^R \qquad \qquad r < r_c \\
|
||||
f^C = & A_{ij} w(r) \hat{\mathbf{r}}_{ij} \\
|
||||
f^D = & - \gamma_{\parallel} w_{\parallel}^2(r) (\hat{\mathbf{r}}_{ij} \cdot \mathbf{v}_{ij}) \hat{\mathbf{r}}_{ij} - \gamma_{\perp} w_{\perp}^2 (r) ( \mathbf{I} - \hat{\mathbf{r}}_{ij} \hat{\mathbf{r}}_{ij}^{\rm T} ) \mathbf{v}_{ij} \\
|
||||
f^R = & \sigma_{\parallel} w_{\parallel}(r) \frac{\alpha}{\sqrt{\Delta t}} \hat{\mathbf{r}}_{ij} + \sigma_{\perp} w_{\perp} (r) ( \mathbf{I} - \hat{\mathbf{r}}_{ij} \hat{\mathbf{r}}_{ij}^{\rm T} ) \frac{\mathbf{\xi}_{ij}}{\sqrt{\Delta t}}\\
|
||||
w(r) = & 1 - r/r_c \\
|
||||
|
||||
where :math:`\mathbf{f}^C` is a conservative force, :math:`\mathbf{f}^D` is a dissipative force, and :math:`\mathbf{f}^R` is a random force. :math:`A_{ij}` is the maximum repulsion between the two atoms, :math:`\hat{\mathbf{r}}_{ij}` is a unit vector in the direction :math:`\mathbf{r}_i - \mathbf{r}_j`, :math:`\mathbf{v}_{ij} = \mathbf{v}_i - \mathbf{v}_j` is the vector difference in velocities of the two atoms, :math:`\alpha` and :math:`\mathbf{\xi}_{ij}` are Gaussian random numbers with zero mean and unit variance, :math:`\Delta t` is the timestep, :math:`w (r) = 1 - r / r_c` is a weight function for the conservative interactions that varies between 0 and 1, :math:`r_c` is the corresponding cutoff, :math:`w_{\alpha} ( r ) = ( 1 - r / \bar{r}_c )^{s_{\alpha}}`, :math:`\alpha \equiv ( \parallel, \perp )`, are weight functions with coefficients :math:`s_\alpha` that vary between 0 and 1, :math:`\bar{r}_c` is the corresponding cutoff, :math:`\mathbf{I}` is the unit matrix, :math:`\sigma_{\alpha} = \sqrt{2 k T \gamma_{\alpha}}`, where :math:`k` is the Boltzmann constant and :math:`T` is the temperature in the pair\_style command.
|
||||
|
||||
For the style *dpd/ext/tstat*\ , the force on atom I due to atom J is the same as the above equation, except that the conservative :math:`\mathbf{f}^C` term is dropped. Also, during the run, T is set each timestep to a ramped value from Tstart to Tstop.
|
||||
|
||||
For the style *dpd/ext*\ , the pairwise energy associated with style *dpd/ext* is only due to the conservative force term :math:`\mathbf{f}^C`, and is shifted to be zero at the cutoff distance :math:`r_c`. The pairwise virial is calculated using all three terms. There is no pairwise energy for style *dpd/ext/tstat*, but the last two terms of the formula contribute the virial.
|
||||
|
||||
For the style *dpd/ext/tstat*, the force on atom I due to atom J is the same as the above equation, except that the conservative :math:`\mathbf{f}^C` term is dropped. Also, during the run, T is set each timestep to a ramped value from Tstart to Tstop.
|
||||
|
||||
For the style *dpd/ext*\ , the pairwise energy associated with style *dpd/ext* is only due to the conservative force term :math:`\mathbf{f}^C`, and is shifted to be zero at the cutoff distance :math:`r_c`. The pairwise virial is calculated using all three terms. There is no pairwise energy for style *dpd/ext/tstat*, but the last two terms of the formula contribute the virial.
|
||||
|
||||
For the style *dpd/ext*, the following coefficients must be defined for each pair of atoms types via the :doc:`pair_coeff <pair_coeff>` command as in the examples above:
|
||||
|
||||
* A (force units)
|
||||
* :math:`\gamma_{\perp}` (force/velocity units)
|
||||
* :math:`\gamma_{\parallel}` (force/velocity units)
|
||||
* :math:`s_{\perp}` (unitless)
|
||||
* :math:`s_{\parallel}` (unitless)
|
||||
* :math:`r_c` (distance units)
|
||||
|
||||
The last coefficient is optional. If not specified, the global DPD cutoff is used. Note that :math:`\sigma`'s are set equal to :math:`\sqrt{2 k T \gamma}`, where :math:`T` is the temperature set by the :doc:`pair_style <pair_style>` command so it does not need to be specified.
|
||||
|
||||
|
||||
For the style *dpd/ext/tstat*, the coefficients defined for each pair of atoms types via the :doc:`pair_coeff <pair_coeff>` command is the same, except that A is not included.
|
||||
|
||||
.. note::
|
||||
|
||||
If you are modeling DPD polymer chains, you may want to use the :doc:`pair_style srp <pair_srp>` command in conjunction with these pair styles. It is a soft segmental repulsive potential (SRP) that can prevent DPD polymer chains from crossing each other.
|
||||
|
||||
.. note::
|
||||
|
||||
The virial calculation for pressure when using this pair style includes all the components of force listed above, including the random force.
|
||||
|
||||
----------
|
||||
|
||||
|
||||
**Mixing, shift, table, tail correction, restart, rRESPA info**\ :
|
||||
|
||||
The style *dpd/ext* does not support mixing. Thus, coefficients for all I,J pairs must be specified explicitly.
|
||||
|
||||
The pair styles do not support the :doc:`pair_modify <pair_modify>` shift option for the energy of the pair interaction. Note that as discussed above, the energy due to the conservative :math:`\mathbf{f}^C` term is already shifted to be zero at the cutoff distance :math:`r_c`.
|
||||
|
||||
The :doc:`pair_modify <pair_modify>` table option is not relevant for the style *dpd/ext*.
|
||||
|
||||
The style *dpd/ext* does not support the :doc:`pair_modify <pair_modify>` tail option for adding long-range tail corrections to energy and pressure.
|
||||
|
||||
The pair styles can only be used via the pair keyword of the :doc:`run_style respa <run_style>` command. They do not support the *inner*\ , *middle*\ , and *outer*\ keywords.
|
||||
|
||||
The style *dpd/ext/tstat* can ramp its target temperature over multiple runs, using the start and stop keywords of the :doc:`run <run>` command. See the :doc:`run <run>` command for details of how to do this.
|
||||
|
||||
----------
|
||||
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
The default frequency for rebuilding neighbor lists is every 10 steps (see the :doc:`neigh_modify <neigh_modify>` command). This may be too infrequent for style *dpd/ext* simulations since particles move rapidly and can overlap by large amounts. If this setting yields a non-zero number of \say{dangerous} reneighborings (printed at the end of a simulation), you should experiment with forcing reneighboring more often and see if system energies/trajectories change.
|
||||
|
||||
The pair styles require to use the :doc:`comm_modify vel yes <comm_modify>` command so that velocities are stored by ghost atoms.
|
||||
|
||||
The pair styles will not restart exactly when using the :doc:`read_restart <read_restart>` command, though they should provide statistically similar results. This is because the forces they compute depend on atom velocities. See the :doc:`read_restart <read_restart>` command for more details.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`pair_style dpd <pair_dpd>`, :doc:`pair_coeff <pair_coeff>`, :doc:`fix nvt <fix_nh>`, :doc:`fix langevin <fix_langevin>`, :doc:`pair_style srp <pair_srp>`
|
||||
|
||||
**Default:** none
|
||||
|
||||
|
||||
----------
|
||||
|
||||
|
||||
.. _Groot:
|
||||
|
||||
|
||||
|
||||
**(Groot)** Groot and Warren, J Chem Phys, 107, 4423-35 (1997).
|
||||
|
||||
.. _Junghans:
|
||||
|
||||
|
||||
|
||||
**(Junghans)** Junghans, Praprotnik and Kremer, Soft Matter 4, 156, 1119-1128 (2008).
|
|
@ -182,6 +182,8 @@ Examples
|
|||
pair_coeff * * 100.0 2.0 1.5 1.0
|
||||
pair_coeff 1 1 100.0 2.0 1.5 1.0 3.0
|
||||
|
||||
Example input scripts available: examples/USER/fep
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
|
|
|
@ -257,7 +257,7 @@ then overrides them with 0.0 only for CHARMM:
|
|||
.. code-block:: LAMMPS
|
||||
|
||||
special_bonds amber
|
||||
pair_hybrid lj/charmm/coul/long 8.0 10.0 lj/cut/coul/long 10.0
|
||||
pair_style hybrid lj/charmm/coul/long 8.0 10.0 lj/cut/coul/long 10.0
|
||||
pair_modify pair lj/charmm/coul/long special lj/coul 0.0 0.0 0.0
|
||||
|
||||
The this input achieves the same effect:
|
||||
|
@ -265,7 +265,7 @@ The this input achieves the same effect:
|
|||
.. code-block:: LAMMPS
|
||||
|
||||
special_bonds 0.0 0.0 0.1
|
||||
pair_hybrid lj/charmm/coul/long 8.0 10.0 lj/cut/coul/long 10.0
|
||||
pair_style hybrid lj/charmm/coul/long 8.0 10.0 lj/cut/coul/long 10.0
|
||||
pair_modify pair lj/cut/coul/long special lj 0.0 0.0 0.5
|
||||
pair_modify pair lj/cut/coul/long special coul 0.0 0.0 0.83333333
|
||||
pair_modify pair lj/charmm/coul/long special lj/coul 0.0 0.0 0.0
|
||||
|
@ -279,7 +279,7 @@ effectively *lj/coul 0.0 0.0 0.5* as required for OPLS/AA:
|
|||
.. code-block:: LAMMPS
|
||||
|
||||
special_bonds lj/coul 1e-20 1e-20 0.5
|
||||
pair_hybrid tersoff lj/cut/coul/long 12.0
|
||||
pair_style hybrid tersoff lj/cut/coul/long 12.0
|
||||
pair_modify pair tersoff special lj/coul 1.0 1.0 1.0
|
||||
|
||||
For use with the various :doc:`compute \*/tally <compute_tally>`
|
||||
|
@ -417,7 +417,11 @@ assigned automatically to the sub-style defined for both I,I and J,J and
|
|||
its coefficients generated by the mixing rule used by that sub-style.
|
||||
For the *hybrid/overlay* and *hybrid/scaled* style, there is an
|
||||
additional requirement that both the I,I and J,J pairs are assigned to a
|
||||
single sub-style. See the :doc:`pair_modify <pair_modify>` command for
|
||||
single sub-style. If this requirement is not met, no I,J coeffs will be
|
||||
generated, even if the sub-styles support mixing, and I,J pair
|
||||
coefficients must be explicitly defined.
|
||||
|
||||
See the :doc:`pair_modify <pair_modify>` command for
|
||||
details of mixing rules. See the See the doc page for the sub-style to
|
||||
see if allows for mixing.
|
||||
|
||||
|
|
|
@ -145,6 +145,22 @@ specified since a Coulombic cutoff cannot be specified for an individual I,J
|
|||
type pair. All type pairs use the same global Coulombic cutoff specified in
|
||||
the pair_style command.
|
||||
|
||||
.. warning::
|
||||
|
||||
Because of how these pair styles implement the coulomb interactions
|
||||
by implicitly defining a fourth site for the negative charge
|
||||
of the TIP4P and similar water models, special care must be taken
|
||||
when using these pair styles with other computations that also use
|
||||
charges. Unless they are specially set up to also handle the implicit
|
||||
definition of the 4th site, results are likely incorrect. Example:
|
||||
:doc:`compute dipole/chunk <compute_dipole_chunk>`. For the same
|
||||
reason, when using one of these pair styles with
|
||||
:doc:`pair_style hybrid <pair_hybrid>`, **all** coulomb interactions
|
||||
should be handled by a single sub-style with TIP4P support. All other
|
||||
instances and styles will "see" the M point charges at the position
|
||||
of the Oxygen atom and thus compute incorrect forces and energies.
|
||||
LAMMPS will print a warning when it detects one of these issues.
|
||||
|
||||
----------
|
||||
|
||||
A version of these styles with a soft core, *lj/cut/tip4p/long/soft*\ , suitable
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
.. index:: pair_style lj/smooth
|
||||
.. index:: pair_style lj/smooth/gpu
|
||||
.. index:: pair_style lj/smooth/omp
|
||||
|
||||
pair_style lj/smooth command
|
||||
============================
|
||||
|
||||
Accelerator Variants: *lj/smooth/omp*
|
||||
Accelerator Variants: *lj/smooth/gpu*, *lj/smooth/omp*
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
|
|
@ -150,6 +150,8 @@ accelerated styles exist.
|
|||
* :doc:`coul/wolf <pair_coul>` - Coulomb via Wolf potential
|
||||
* :doc:`coul/wolf/cs <pair_cs>` - Coulomb via Wolf potential with core/shell adjustments
|
||||
* :doc:`dpd <pair_dpd>` - dissipative particle dynamics (DPD)
|
||||
* :doc:`dpd/ext <pair_dpd_ext>` - generalized force field for DPD
|
||||
* :doc:`dpd/ext/tstat <pair_dpd_ext>` - pair-wise DPD thermostatting with generalized force field
|
||||
* :doc:`dpd/fdt <pair_dpd_fdt>` - DPD for constant temperature and pressure
|
||||
* :doc:`dpd/fdt/energy <pair_dpd_fdt>` - DPD for constant energy and enthalpy
|
||||
* :doc:`dpd/tstat <pair_dpd>` - pair-wise DPD thermostatting
|
||||
|
|
|
@ -42,6 +42,8 @@ Examples
|
|||
|
||||
pair_style lj/cut/thole/long 2.6 12.0
|
||||
|
||||
Example input scripts available: examples/USER/drude
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
|
|
|
@ -223,6 +223,9 @@ The structure of the data file is important, though many settings and
|
|||
sections are optional or can come in any order. See the examples
|
||||
directory for sample data files for different problems.
|
||||
|
||||
The file will be read line by line, but there is a limit of 254
|
||||
characters per line and characters beyond that limit will be ignored.
|
||||
|
||||
A data file has a header and a body. The header appears first. The
|
||||
first line of the header is always skipped; it typically contains a
|
||||
description of the file. Then lines are read one at a time. Lines
|
||||
|
|
|
@ -11,12 +11,13 @@ Syntax
|
|||
thermo_modify keyword value ...
|
||||
|
||||
* one or more keyword/value pairs may be listed
|
||||
* keyword = *lost* or *lost/bond* or *norm* or *flush* or *line* or *format* or *temp* or *press*
|
||||
* keyword = *lost* or *lost/bond* or *warn* or *norm* or *flush* or *line* or *format* or *temp* or *press*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*lost* value = *error* or *warn* or *ignore*
|
||||
*lost/bond* value = *error* or *warn* or *ignore*
|
||||
*warn* value = *ignore* or *reset* or *default* or a number
|
||||
*norm* value = *yes* or *no*
|
||||
*flush* value = *yes* or *no*
|
||||
*line* value = *one* or *multi*
|
||||
|
@ -75,6 +76,43 @@ are drifting out of the box through a fixed boundary condition (see
|
|||
the :doc:`boundary <boundary>` command). In this case one atom may be
|
||||
deleted before the rest of the molecule is, on a later timestep.
|
||||
|
||||
The *warn* keyword allows you to control whether LAMMPS will print
|
||||
warning messages and how many of them. Most warning messages are only
|
||||
printed by MPI rank 0. They are usually pointing out important issues
|
||||
that should be investigated, but LAMMPS cannot determine for
|
||||
certain whether they are an indication of an error.
|
||||
|
||||
Some warning messages are printed during a run (or immediately before)
|
||||
each time a specific MPI rank encounters the issue, e.g. bonds that are
|
||||
stretched too far or dihedrals in extreme configurations. These number
|
||||
of these can quickly blow up the size of the log file and screen output.
|
||||
Thus a limit of 100 warning messages is applied by default. The warning
|
||||
count is applied to the entire input unless reset with a ``thermo_modify
|
||||
warn reset`` command. If there are more warnings than the limit, LAMMPS
|
||||
will print one final warning that it will not print any additional
|
||||
warning messages.
|
||||
|
||||
.. note::
|
||||
|
||||
The warning limit is enforced on either the per-processor count or
|
||||
the total count across all processors. For efficiency reasons,
|
||||
however, the total count is only updated at steps with thermodynamic
|
||||
output. Thus when running on a large number of processors in
|
||||
parallel, the total number of warnings printed can be significantly
|
||||
larger than the given limit.
|
||||
|
||||
Any number after the keyword *warn* will change the warning limit
|
||||
accordingly. With the value *ignore* all warnings will be suppressed,
|
||||
with the value *always* no limit will be applied and warnings will
|
||||
always be printed, with the value *reset* the internal warning counter
|
||||
will be reset to zero, and with the value *default*, the counter is
|
||||
reset and the limit set to 100. An example usage of either *reset* or
|
||||
*default* would be to re-enable warnings that were disabled or have
|
||||
reached the limit during equilibration, where the warnings would be
|
||||
acceptable while the system is still adjusting, but then change
|
||||
to all warnings for the production run, where they would indicate
|
||||
problems that would require a closer look at what is causing them.
|
||||
|
||||
The *norm* keyword determines whether various thermodynamic output
|
||||
values are normalized by the number of atoms or not, depending on
|
||||
whether it is set to *yes* or *no*\ . Different unit styles have
|
||||
|
@ -183,9 +221,9 @@ Related commands
|
|||
Default
|
||||
"""""""
|
||||
|
||||
The option defaults are lost = error, norm = yes for unit style of
|
||||
*lj*\ , norm = no for unit style of *real* and *metal*\ , flush = no,
|
||||
and temp/press = compute IDs defined by thermo_style.
|
||||
The option defaults are lost = error, warn = 100, norm = yes for unit
|
||||
style of *lj*\ , norm = no for unit style of *real* and *metal*\ ,
|
||||
flush = no, and temp/press = compute IDs defined by thermo_style.
|
||||
|
||||
The defaults for the line and format options depend on the thermo
|
||||
style. For styles "one" and "custom", the line and format defaults
|
||||
|
|
|
@ -363,12 +363,14 @@ variable, as discussed below.
|
|||
|
||||
The rules for formatting the file are as follows. Each time a set of
|
||||
per-atom values is read, a non-blank line is searched for in the file.
|
||||
A comment character "#" can be used anywhere on a line; text starting
|
||||
with the comment character is stripped. Blank lines are skipped. The
|
||||
first "word" of a non-blank line, delimited by white-space, is read as
|
||||
the count N of per-atom lines to immediately follow. N can be the
|
||||
total number of atoms in the system, or only a subset. The next N
|
||||
lines have the following format
|
||||
The file is read line by line but only up to 254 characters are used.
|
||||
The rest are ignored. A comment character "#" can be used anywhere
|
||||
on a line and all text following and the "#" character are ignored;
|
||||
text starting with the comment character is stripped. Blank lines
|
||||
are skipped. The first "word" of a non-blank line, delimited by
|
||||
white-space, is read as the count N of per-atom lines to immediately
|
||||
follow. N can be the total number of atoms in the system, or only a
|
||||
subset. The next N lines have the following format
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
|
|
|
@ -4,3 +4,4 @@ git+git://github.com/akohlmey/sphinx-fortran@parallel-read
|
|||
sphinx_tabs
|
||||
breathe
|
||||
Pygments
|
||||
six
|
||||
|
|
|
@ -35,6 +35,10 @@ hr {
|
|||
display: none;
|
||||
}
|
||||
|
||||
#command-reference.section h2 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ui.tabular.menu .item {
|
||||
padding-right: 1em;
|
||||
padding-left: 1em;
|
||||
|
|
|
@ -241,7 +241,7 @@ html_show_sourcelink = False
|
|||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'LAMMPSdoc'
|
||||
|
||||
html_add_permalinks = ''
|
||||
html_permalinks = True
|
||||
|
||||
if 'epub' in sys.argv:
|
||||
html_math_renderer = 'imgmath'
|
||||
|
|
|
@ -47,6 +47,7 @@ Agnolin
|
|||
Ai
|
||||
Aidan
|
||||
aij
|
||||
aimd
|
||||
airebo
|
||||
Aj
|
||||
ajs
|
||||
|
@ -101,6 +102,7 @@ anisotropic
|
|||
anisotropies
|
||||
anisotropy
|
||||
ansi
|
||||
antiferromagnetic
|
||||
antiquewhite
|
||||
Antisymmetrized
|
||||
antisymmetry
|
||||
|
@ -195,6 +197,7 @@ Ballenegger
|
|||
Bammann
|
||||
Banna
|
||||
Barashev
|
||||
barnes
|
||||
barostat
|
||||
Barostats
|
||||
barostatted
|
||||
|
@ -311,6 +314,7 @@ br
|
|||
Branduardi
|
||||
Branicio
|
||||
brennan
|
||||
Briels
|
||||
Brien
|
||||
Brilliantov
|
||||
Broadwell
|
||||
|
@ -625,6 +629,7 @@ delflag
|
|||
Dellago
|
||||
delocalization
|
||||
delocalized
|
||||
Delong
|
||||
delr
|
||||
deltaHf
|
||||
Dendrimer
|
||||
|
@ -708,6 +713,7 @@ dodgerblue
|
|||
dof
|
||||
doi
|
||||
Donadio
|
||||
Donev
|
||||
dotc
|
||||
Doty
|
||||
doxygen
|
||||
|
@ -1023,6 +1029,7 @@ fmag
|
|||
fmass
|
||||
fmm
|
||||
fmt
|
||||
fmtlib
|
||||
fmx
|
||||
fmy
|
||||
fmz
|
||||
|
@ -1141,6 +1148,7 @@ GMock
|
|||
gneb
|
||||
GNEB
|
||||
Goldfarb
|
||||
Gompper
|
||||
Gonzalez-Melchor
|
||||
googlemail
|
||||
googletest
|
||||
|
@ -1201,6 +1209,7 @@ Halver
|
|||
Hamaker
|
||||
Hamel
|
||||
Hammerschmidt
|
||||
Hanley
|
||||
haptic
|
||||
Hara
|
||||
Harpertown
|
||||
|
@ -1263,6 +1272,7 @@ holonomic
|
|||
Homebrew
|
||||
hooke
|
||||
Hookean
|
||||
hostname
|
||||
hotpink
|
||||
Houlle
|
||||
howto
|
||||
|
@ -1319,6 +1329,7 @@ ijk
|
|||
ijkl
|
||||
ik
|
||||
Ikeshoji
|
||||
Ilie
|
||||
ilmenau
|
||||
Ilmenau
|
||||
ilp
|
||||
|
@ -1721,6 +1732,7 @@ Lmpsdata
|
|||
lmptype
|
||||
LMT
|
||||
ln
|
||||
localhost
|
||||
localTemp
|
||||
localvectors
|
||||
Loewen
|
||||
|
@ -1851,6 +1863,8 @@ mc
|
|||
McLachlan
|
||||
md
|
||||
mdf
|
||||
MDI
|
||||
mdi
|
||||
mdpd
|
||||
mDPD
|
||||
meam
|
||||
|
@ -2177,6 +2191,7 @@ nimpropers
|
|||
nimpropertypes
|
||||
Nimpropertype
|
||||
Ninteger
|
||||
NiO
|
||||
Nissila
|
||||
nist
|
||||
nitride
|
||||
|
@ -2188,6 +2203,7 @@ nl
|
|||
nlayers
|
||||
nlen
|
||||
Nlines
|
||||
nlines
|
||||
nlo
|
||||
nlocal
|
||||
Nlocal
|
||||
|
@ -2279,6 +2295,7 @@ Ntype
|
|||
ntypes
|
||||
Ntypes
|
||||
nucleotides
|
||||
nullptr
|
||||
num
|
||||
numa
|
||||
numactl
|
||||
|
@ -2538,6 +2555,7 @@ ppn
|
|||
pppm
|
||||
prd
|
||||
Prakash
|
||||
Praprotnik
|
||||
pre
|
||||
Pre
|
||||
prec
|
||||
|
@ -2832,6 +2850,8 @@ Runge
|
|||
runtime
|
||||
Rutuparna
|
||||
rx
|
||||
rxnave
|
||||
rxnsum
|
||||
ry
|
||||
rz
|
||||
Ryckaert
|
||||
|
@ -3103,6 +3123,7 @@ Swinburne
|
|||
Swol
|
||||
Swope
|
||||
Sx
|
||||
sx
|
||||
sy
|
||||
Sy
|
||||
symplectic
|
||||
|
@ -3112,6 +3133,7 @@ sysdim
|
|||
Syst
|
||||
systemd
|
||||
Sz
|
||||
sz
|
||||
Tabbernor
|
||||
tabinner
|
||||
Tadmor
|
||||
|
@ -3130,6 +3152,7 @@ Tanmoy
|
|||
Tartakovsky
|
||||
taskset
|
||||
taubi
|
||||
taylor
|
||||
tb
|
||||
tchain
|
||||
Tchain
|
||||
|
@ -3163,6 +3186,7 @@ th
|
|||
thb
|
||||
thei
|
||||
Theodorou
|
||||
Theophile
|
||||
Theor
|
||||
thermalization
|
||||
thermalize
|
||||
|
@ -3315,6 +3339,7 @@ Uleft
|
|||
uloop
|
||||
Ulomek
|
||||
ulsph
|
||||
Ultrafast
|
||||
uMech
|
||||
umin
|
||||
Umin
|
||||
|
@ -3350,6 +3375,7 @@ upenn
|
|||
upto
|
||||
Urbakh
|
||||
Urbana
|
||||
Usabiaga
|
||||
usec
|
||||
uSemiParallel
|
||||
userguide
|
||||
|
@ -3494,6 +3520,7 @@ Wikipedia
|
|||
Wildcard
|
||||
wildcard
|
||||
wildcards
|
||||
Winkler
|
||||
Wirnsberger
|
||||
wirtes
|
||||
witin
|
||||
|
@ -3505,6 +3532,7 @@ Worley
|
|||
Wriggers
|
||||
Wuppertal
|
||||
Wurtzite
|
||||
Wysocki
|
||||
www
|
||||
wx
|
||||
Wx
|
||||
|
@ -3595,6 +3623,7 @@ ZBL
|
|||
Zc
|
||||
zcm
|
||||
Zeeman
|
||||
zeeman
|
||||
Zemer
|
||||
Zepeda
|
||||
zflag
|
||||
|
|
|
@ -67,7 +67,7 @@ delete_atoms overlap 1.0 small big
|
|||
|
||||
reset_timestep 0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neighbor 0.3 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
|
|
|
@ -67,7 +67,7 @@ delete_atoms overlap 1.0 small big
|
|||
|
||||
reset_timestep 0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neighbor 0.3 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
|
|
|
@ -61,7 +61,7 @@ delete_atoms overlap 0.5 small big
|
|||
|
||||
reset_timestep 0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neighbor 0.3 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
|
|
|
@ -61,7 +61,7 @@ delete_atoms overlap 0.5 small big
|
|||
|
||||
reset_timestep 0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neighbor 0.3 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
|
|
|
@ -72,7 +72,7 @@ delete_atoms overlap 1.6 small big
|
|||
|
||||
reset_timestep 0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neighbor 0.3 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
|
|
|
@ -72,7 +72,7 @@ delete_atoms overlap 1.6 small big
|
|||
|
||||
reset_timestep 0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neighbor 0.3 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
|
|
|
@ -34,7 +34,7 @@ reset_timestep 0
|
|||
|
||||
velocity small create 1.44 87287 loop geom
|
||||
|
||||
neighbor 0.3 bin
|
||||
neighbor 0.3 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
neigh_modify exclude molecule/intra big include big
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ delete_atoms overlap 1.0 small big
|
|||
|
||||
reset_timestep 0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neighbor 0.3 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
|
|
|
@ -70,7 +70,7 @@ delete_atoms overlap 1.0 small big
|
|||
|
||||
reset_timestep 0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neighbor 0.3 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
|
|
|
@ -67,7 +67,7 @@ delete_atoms overlap 0.5 small big
|
|||
|
||||
reset_timestep 0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neighbor 0.3 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
|
|
|
@ -67,7 +67,7 @@ delete_atoms overlap 0.5 small big
|
|||
|
||||
reset_timestep 0
|
||||
|
||||
neighbor 0.3 bin
|
||||
neighbor 0.3 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
|
||||
comm_modify mode multi group big vel yes
|
||||
|
|
|
@ -33,7 +33,7 @@ reset_timestep 0
|
|||
|
||||
velocity small create 1.44 87287 loop geom
|
||||
|
||||
neighbor 0.3 bin
|
||||
neighbor 0.3 multi
|
||||
neigh_modify delay 0 every 1 check yes
|
||||
neigh_modify exclude molecule/intra big include big
|
||||
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
##### 2d overdamped brownian dynamics with self-propulsion force in direction of velocity. #####
|
||||
|
||||
variable gamma_t equal 1.0
|
||||
variable temp equal 1.0
|
||||
variable seed equal 1974019
|
||||
variable fp equal 4.0
|
||||
variable params string ${gamma_t}_${temp}_${fp}
|
||||
|
||||
units lj
|
||||
dimension 2
|
||||
newton off
|
||||
|
||||
lattice sq 0.4
|
||||
region box block -16 16 -16 16 -0.2 0.2
|
||||
create_box 1 box
|
||||
create_atoms 1 box
|
||||
mass * 1.0
|
||||
velocity all create 1.0 1 loop geom
|
||||
|
||||
neighbor 1.0 bin
|
||||
neigh_modify every 1 delay 1 check yes
|
||||
|
||||
pair_style none
|
||||
|
||||
fix step all brownian ${temp} ${seed} gamma_t ${gamma_t}
|
||||
fix vel all propel/self velocity ${fp}
|
||||
fix 2 all enforce2d
|
||||
fix_modify vel virial yes
|
||||
|
||||
compute press all pressure NULL virial
|
||||
|
||||
thermo_style custom step temp epair c_press
|
||||
|
||||
#equilibration
|
||||
timestep 0.0000000001
|
||||
thermo 500
|
||||
run 5000
|
||||
reset_timestep 0
|
||||
|
||||
#initialisation for the main run
|
||||
|
||||
# MSD
|
||||
compute msd all msd
|
||||
|
||||
thermo_style custom step ke pe c_msd[*] c_press
|
||||
|
||||
timestep 0.00001
|
||||
thermo 1000
|
||||
|
||||
# main run
|
||||
run 12000
|
||||
|
||||
|
|
@ -0,0 +1,151 @@
|
|||
LAMMPS (8 Apr 2021)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
##### 2d overdamped brownian dynamics with self-propulsion force in direction of velocity. #####
|
||||
|
||||
variable gamma_t equal 1.0
|
||||
variable temp equal 1.0
|
||||
variable seed equal 1974019
|
||||
variable fp equal 4.0
|
||||
variable params string ${gamma_t}_${temp}_${fp}
|
||||
variable params string 1_${temp}_${fp}
|
||||
variable params string 1_1_${fp}
|
||||
variable params string 1_1_4
|
||||
|
||||
units lj
|
||||
dimension 2
|
||||
newton off
|
||||
|
||||
lattice sq 0.4
|
||||
Lattice spacing in x,y,z = 1.5811388 1.5811388 1.5811388
|
||||
region box block -16 16 -16 16 -0.2 0.2
|
||||
create_box 1 box
|
||||
Created orthogonal box = (-25.298221 -25.298221 -0.31622777) to (25.298221 25.298221 0.31622777)
|
||||
1 by 1 by 1 MPI processor grid
|
||||
create_atoms 1 box
|
||||
Created 1024 atoms
|
||||
create_atoms CPU = 0.001 seconds
|
||||
mass * 1.0
|
||||
velocity all create 1.0 1 loop geom
|
||||
|
||||
neighbor 1.0 bin
|
||||
neigh_modify every 1 delay 1 check yes
|
||||
|
||||
pair_style none
|
||||
|
||||
fix step all brownian ${temp} ${seed} gamma_t ${gamma_t}
|
||||
fix step all brownian 1 ${seed} gamma_t ${gamma_t}
|
||||
fix step all brownian 1 1974019 gamma_t ${gamma_t}
|
||||
fix step all brownian 1 1974019 gamma_t 1
|
||||
fix vel all propel/self velocity ${fp}
|
||||
fix vel all propel/self velocity 4
|
||||
fix 2 all enforce2d
|
||||
fix_modify vel virial yes
|
||||
|
||||
compute press all pressure NULL virial
|
||||
|
||||
thermo_style custom step temp epair c_press
|
||||
|
||||
#equilibration
|
||||
timestep 0.0000000001
|
||||
thermo 500
|
||||
run 5000
|
||||
WARNING: No pairwise cutoff or binsize set. Atom sorting therefore disabled. (src/atom.cpp:2141)
|
||||
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:167)
|
||||
Per MPI rank memory allocation (min/avg/max) = 2.289 | 2.289 | 2.289 Mbytes
|
||||
Step Temp E_pair c_press
|
||||
0 1 0 -0.18336111
|
||||
500 2.0519273e+10 0 -0.048238222
|
||||
1000 1.9821717e+10 0 -0.4711053
|
||||
1500 1.9697609e+10 0 -0.13539588
|
||||
2000 2.0209443e+10 0 0.0094958039
|
||||
2500 1.9591299e+10 0 0.40117118
|
||||
3000 2.089566e+10 0 -0.036548251
|
||||
3500 1.978692e+10 0 0.28282578
|
||||
4000 2.0657848e+10 0 0.17618064
|
||||
4500 2.0837353e+10 0 -0.080724651
|
||||
5000 2.0348316e+10 0 -0.17471195
|
||||
Loop time of 0.575164 on 1 procs for 5000 steps with 1024 atoms
|
||||
|
||||
Performance: 0.075 tau/day, 8693.168 timesteps/s
|
||||
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.0036819 | 0.0036819 | 0.0036819 | 0.0 | 0.64
|
||||
Output | 0.00027752 | 0.00027752 | 0.00027752 | 0.0 | 0.05
|
||||
Modify | 0.51999 | 0.51999 | 0.51999 | 0.0 | 90.41
|
||||
Other | | 0.05121 | | | 8.90
|
||||
|
||||
Nlocal: 1024.00 ave 1024 max 1024 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 65.0000 ave 65 max 65 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0.00000 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 0
|
||||
Ave neighs/atom = 0.0000000
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
reset_timestep 0
|
||||
|
||||
#initialisation for the main run
|
||||
|
||||
# MSD
|
||||
compute msd all msd
|
||||
|
||||
thermo_style custom step ke pe c_msd[*] c_press
|
||||
|
||||
timestep 0.00001
|
||||
thermo 1000
|
||||
|
||||
# main run
|
||||
run 12000
|
||||
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:167)
|
||||
Per MPI rank memory allocation (min/avg/max) = 2.664 | 2.664 | 2.664 Mbytes
|
||||
Step KinEng PotEng c_msd[1] c_msd[2] c_msd[3] c_msd[4] c_press
|
||||
0 2.0328444e+10 0 0 0 0 0 -0.17471195
|
||||
1000 197017.59 0 0.018147562 0.019839233 0 0.037986796 -0.71897807
|
||||
2000 197030.23 0 0.03909867 0.041721342 0 0.080820011 -0.30051929
|
||||
3000 201997.2 0 0.065694399 0.06235257 0 0.12804697 -0.85167039
|
||||
4000 199927.76 0 0.085698715 0.080328815 0 0.16602753 0.18493117
|
||||
5000 198665.7 0 0.10896054 0.097021266 0 0.2059818 -0.090735406
|
||||
6000 199277.78 0 0.13081111 0.11724814 0 0.24805925 -0.18189034
|
||||
7000 199850.54 0 0.14721838 0.13806858 0 0.28528696 0.11334674
|
||||
8000 191577.11 0 0.16582149 0.15935853 0 0.32518002 -0.73284569
|
||||
9000 197331.29 0 0.17995704 0.18652927 0 0.3664863 -0.015558407
|
||||
10000 197048.17 0 0.2034106 0.20329856 0 0.40670916 0.36985211
|
||||
11000 200105.54 0 0.21809835 0.21966463 0 0.43776298 0.36437
|
||||
12000 203180.39 0 0.23810386 0.23666184 0 0.47476569 -0.072006034
|
||||
Loop time of 1.37465 on 1 procs for 12000 steps with 1024 atoms
|
||||
|
||||
Performance: 7542.303 tau/day, 8729.517 timesteps/s
|
||||
99.8% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0.00012231 | 0.00012231 | 0.00012231 | 0.0 | 0.01
|
||||
Comm | 0.0024607 | 0.0024607 | 0.0024607 | 0.0 | 0.18
|
||||
Output | 0.00068665 | 0.00068665 | 0.00068665 | 0.0 | 0.05
|
||||
Modify | 1.2479 | 1.2479 | 1.2479 | 0.0 | 90.78
|
||||
Other | | 0.1235 | | | 8.98
|
||||
|
||||
Nlocal: 1024.00 ave 1024 max 1024 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 0.00000 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0.00000 ave 0 max 0 min
|
||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 0
|
||||
Ave neighs/atom = 0.0000000
|
||||
Neighbor list builds = 15
|
||||
Dangerous builds = 0
|
||||
|
||||
|
||||
Total wall time: 0:00:01
|
|
@ -0,0 +1,151 @@
|
|||
LAMMPS (8 Apr 2021)
|
||||
using 1 OpenMP thread(s) per MPI task
|
||||
##### 2d overdamped brownian dynamics with self-propulsion force in direction of velocity. #####
|
||||
|
||||
variable gamma_t equal 1.0
|
||||
variable temp equal 1.0
|
||||
variable seed equal 1974019
|
||||
variable fp equal 4.0
|
||||
variable params string ${gamma_t}_${temp}_${fp}
|
||||
variable params string 1_${temp}_${fp}
|
||||
variable params string 1_1_${fp}
|
||||
variable params string 1_1_4
|
||||
|
||||
units lj
|
||||
dimension 2
|
||||
newton off
|
||||
|
||||
lattice sq 0.4
|
||||
Lattice spacing in x,y,z = 1.5811388 1.5811388 1.5811388
|
||||
region box block -16 16 -16 16 -0.2 0.2
|
||||
create_box 1 box
|
||||
Created orthogonal box = (-25.298221 -25.298221 -0.31622777) to (25.298221 25.298221 0.31622777)
|
||||
2 by 2 by 1 MPI processor grid
|
||||
create_atoms 1 box
|
||||
Created 1024 atoms
|
||||
create_atoms CPU = 0.001 seconds
|
||||
mass * 1.0
|
||||
velocity all create 1.0 1 loop geom
|
||||
|
||||
neighbor 1.0 bin
|
||||
neigh_modify every 1 delay 1 check yes
|
||||
|
||||
pair_style none
|
||||
|
||||
fix step all brownian ${temp} ${seed} gamma_t ${gamma_t}
|
||||
fix step all brownian 1 ${seed} gamma_t ${gamma_t}
|
||||
fix step all brownian 1 1974019 gamma_t ${gamma_t}
|
||||
fix step all brownian 1 1974019 gamma_t 1
|
||||
fix vel all propel/self velocity ${fp}
|
||||
fix vel all propel/self velocity 4
|
||||
fix 2 all enforce2d
|
||||
fix_modify vel virial yes
|
||||
|
||||
compute press all pressure NULL virial
|
||||
|
||||
thermo_style custom step temp epair c_press
|
||||
|
||||
#equilibration
|
||||
timestep 0.0000000001
|
||||
thermo 500
|
||||
run 5000
|
||||
WARNING: No pairwise cutoff or binsize set. Atom sorting therefore disabled. (src/atom.cpp:2141)
|
||||
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:167)
|
||||
Per MPI rank memory allocation (min/avg/max) = 2.289 | 2.289 | 2.289 Mbytes
|
||||
Step Temp E_pair c_press
|
||||
0 1 0 -0.18336111
|
||||
500 1.9862591e+10 0 -0.32013566
|
||||
1000 2.0093184e+10 0 -0.36609742
|
||||
1500 1.9562283e+10 0 -0.53349351
|
||||
2000 1.9903977e+10 0 0.63783249
|
||||
2500 2.0260128e+10 0 0.30046413
|
||||
3000 1.9948065e+10 0 -0.63093105
|
||||
3500 1.9507486e+10 0 0.48762848
|
||||
4000 2.0049087e+10 0 0.40289309
|
||||
4500 1.9975813e+10 0 0.57649363
|
||||
5000 2.0129291e+10 0 -0.41288352
|
||||
Loop time of 0.238949 on 4 procs for 5000 steps with 1024 atoms
|
||||
|
||||
Performance: 0.181 tau/day, 20924.952 timesteps/s
|
||||
92.6% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Comm | 0.0080078 | 0.024718 | 0.031782 | 6.2 | 10.34
|
||||
Output | 0.0001812 | 0.00029999 | 0.00063467 | 0.0 | 0.13
|
||||
Modify | 0.13401 | 0.14401 | 0.15438 | 2.4 | 60.27
|
||||
Other | | 0.06992 | | | 29.26
|
||||
|
||||
Nlocal: 256.000 ave 256 max 256 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
Nghost: 33.0000 ave 33 max 33 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0.00000 ave 0 max 0 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 0
|
||||
Ave neighs/atom = 0.0000000
|
||||
Neighbor list builds = 0
|
||||
Dangerous builds = 0
|
||||
reset_timestep 0
|
||||
|
||||
#initialisation for the main run
|
||||
|
||||
# MSD
|
||||
compute msd all msd
|
||||
|
||||
thermo_style custom step ke pe c_msd[*] c_press
|
||||
|
||||
timestep 0.00001
|
||||
thermo 1000
|
||||
|
||||
# main run
|
||||
run 12000
|
||||
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:167)
|
||||
Per MPI rank memory allocation (min/avg/max) = 2.664 | 2.664 | 2.664 Mbytes
|
||||
Step KinEng PotEng c_msd[1] c_msd[2] c_msd[3] c_msd[4] c_press
|
||||
0 2.0109634e+10 0 0 0 0 0 -0.41288352
|
||||
1000 195711.46 0 0.020076462 0.020523099 0 0.040599561 -0.32125126
|
||||
2000 203263.85 0 0.039242992 0.039661282 0 0.078904274 0.11008705
|
||||
3000 197417.54 0 0.064938128 0.057716419 0 0.12265455 0.16967601
|
||||
4000 200505.97 0 0.086511225 0.074975267 0 0.16148649 0.31338473
|
||||
5000 199373.77 0 0.10583263 0.098175658 0 0.20400829 0.34205791
|
||||
6000 192881.14 0 0.12152088 0.11706037 0 0.23858125 -0.27870467
|
||||
7000 203045.3 0 0.1383248 0.13629503 0 0.27461983 -0.046936646
|
||||
8000 198544.08 0 0.16064738 0.1582206 0 0.31886798 -0.18803452
|
||||
9000 205450.74 0 0.17926529 0.1829047 0 0.36216999 0.47191228
|
||||
10000 200371.73 0 0.20084273 0.20365189 0 0.40449463 0.093098262
|
||||
11000 202911.93 0 0.21569236 0.22221715 0 0.43790952 -0.38430031
|
||||
12000 192590.04 0 0.24041439 0.24114487 0 0.48155926 -0.1677052
|
||||
Loop time of 0.443026 on 4 procs for 12000 steps with 1024 atoms
|
||||
|
||||
Performance: 23402.683 tau/day, 27086.439 timesteps/s
|
||||
97.7% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 0 | 0 | 0 | 0.0 | 0.00
|
||||
Neigh | 3.2663e-05 | 3.3855e-05 | 3.4809e-05 | 0.0 | 0.01
|
||||
Comm | 0.0030291 | 0.0030628 | 0.0030825 | 0.0 | 0.69
|
||||
Output | 0.00027895 | 0.00051624 | 0.001184 | 0.0 | 0.12
|
||||
Modify | 0.31607 | 0.33372 | 0.37391 | 4.0 | 75.33
|
||||
Other | | 0.1057 | | | 23.86
|
||||
|
||||
Nlocal: 256.000 ave 259 max 253 min
|
||||
Histogram: 1 0 0 1 0 0 1 0 0 1
|
||||
Nghost: 0.00000 ave 0 max 0 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
Neighs: 0.00000 ave 0 max 0 min
|
||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||
|
||||
Total # of neighbors = 0
|
||||
Ave neighs/atom = 0.0000000
|
||||
Neighbor list builds = 15
|
||||
Dangerous builds = 0
|
||||
|
||||
|
||||
Total wall time: 0:00:00
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue